تقدم Cisco نظام ملفات PuzzleFS لـ Linux kernel

اقترحت شركة Cisco نظام ملفات جديدًا، PuzzleFS، تم تنفيذه كوحدة نمطية لنواة Linux، مكتوبًا بلغة Rust. تم تصميم نظام الملفات ليتم استخدامه لاستضافة حاويات معزولة ويستمر في تطوير الأفكار المقترحة في نظام الملفات Atomfs. لا يزال التنفيذ في مرحلة النموذج الأولي، ويدعم البناء باستخدام فرع Linux kernel Rust-next وهو مفتوح بموجب تراخيص Apache 2.0 وMIT.

يهدف المشروع إلى تجاوز القيود التي تنشأ عند استخدام صور الحاوية بتنسيق OCI (مبادرة الحاوية المفتوحة). يحل PuzzleFS مشكلات مثل التخزين الفعال للبيانات المكررة، وإمكانية التحميل المباشر، وبناء الصور القابلة للتكرار، وأمن الذاكرة.

لإلغاء تكرار البيانات المتكررة في حاويات مختلفة، يتم استخدام خوارزمية FastCDC (التقطيع السريع المحدد للمحتوى)، والتي تعمل عن طريق تقسيم البيانات إلى أجزاء ذات حجم عشوائي والحفاظ على فهرس يحتوي على تجزئات للأجزاء المعالجة. يتم تخزين الأجزاء المتكررة مرة واحدة ويتم فهرستها بشكل مشترك لجميع طبقات نظام الملفات، أي. يمكن أن يغطي إلغاء البيانات المكررة نقاط تحميل مختلفة (يمكن إطلاق طبقة FS جديدة بناءً على طبقة موجودة واستخدام أجزاء البيانات الموجودة فيها أثناء إلغاء البيانات المكررة).

يتم تحقيق التجميع المتكرر لصور الحاوية من خلال تحديد تمثيل أساسي لتنسيق صورة الحاوية. يتيح لك التثبيت المباشر إمكانية تحميل صورة حاوية OCI من وحدة تخزين مشتركة عامة دون تفريغها أولاً، وذلك باستخدام تجزئة المحتويات من بيان الحاوية كمعرف. للتحقق من سلامة البيانات عند استخدام التخزين المشترك، يمكن استخدام آلية FS-Verity، والتي، عند الوصول إلى الملفات، تتحقق من مراسلات التجزئة المحددة في الفهرس الثنائي مع المحتوى الفعلي.

تم اختيار لغة Rust لأنها تجمع بين الأداء العالي للتعليمات البرمجية الناتجة وإمكانيات العمل الآمن مع الذاكرة، مما يقلل من مخاطر الثغرات الأمنية الناجمة عن مشكلات مثل الوصول إلى منطقة الذاكرة بعد تحريرها وتجاوز حدود المخزن المؤقت. كما أتاح استخدام Rust لوحدة kernel مشاركة التعليمات البرمجية بين kernel ومكونات مساحة المستخدم لإنشاء تطبيق واحد وآمن.

تشمل الأهداف الأخرى للمشروع ما يلي: إنشاء الصور وتثبيتها بسرعة كبيرة، والقدرة على استخدام مرحلة وسيطة اختيارية لتحديد الهوية الأساسية للصور، واختيارية تمرير شجرة ملفات كاملة بنمط mtree عند استخدام بنية متعددة الطبقات، وفرض نمط casync من التغييرات، وبنية سهلة التنفيذ.

المصدر: opennet.ru

إضافة تعليق