ترقية Bcachefs إلى Linux Kernel

قام كينت أوفرستريت ، مؤلف نظام التخزين المؤقت لجهاز كتلة BCache SSD ، والذي يعد جزءًا من Linux kernel ، بتلخيص نتائج العمل على تعزيز نظام ملفات Bcachefs في خطابه في مؤتمر LSFMM 2023 (Linux Storage، Filesystem، Memory Management & BPF Summit). في التكوين الرئيسي لنواة Linux وتحدث عن خطط لمزيد من تطوير FS هذا. في مايو ، تم اقتراح مجموعة محدثة من التصحيحات مع تنفيذ Bcachefs FS لمراجعتها وتضمينها في التكوين الرئيسي لنواة Linux. تم تطوير FS Bcachefs منذ حوالي 10 سنوات. تم الإعلان عن الاستعداد لمراجعة تنفيذ Bcachefs قبل إدراجها في النواة في نهاية عام 2020 ، وتأخذ النسخة الحالية من التصحيحات في الاعتبار التعليقات وأوجه القصور التي تم تحديدها خلال المراجعة السابقة.

يتمثل هدف تطوير Bcachefs في الوصول إلى مستوى XFS في الأداء والموثوقية وقابلية التوسع ، مع توفير ميزات إضافية متأصلة في Btrfs و ZFS ، مثل تضمين أجهزة متعددة في قسم ، وتخطيطات تخزين متعددة الطبقات ، والنسخ المتماثل (RAID 1/10) ، التخزين المؤقت ، وضغط البيانات الشفاف (أوضاع LZ4 و gzip و ZSTD) ، وشرائح الحالة (لقطات) ، والتحقق من السلامة عن طريق المجاميع الاختبارية ، والقدرة على تخزين أكواد تصحيح الخطأ Reed-Solomon (RAID 5/6) ، والتخزين المشفر للمعلومات (ChaCha20 و Poly1305 يستخدم). من حيث الأداء ، يتفوق Bcachefs على Btrfs وأنظمة الملفات الأخرى القائمة على آلية النسخ عند الكتابة ، ويوضح أداءً قريبًا من Ext4 و XFS.

من بين أحدث الإنجازات في تطوير Bcachefs ، لوحظ استقرار تنفيذ اللقطات المتاحة للكتابة. مقارنةً بـ Btrfs ، فإن اللقطات في Bcachefs أصبحت الآن قابلة للتطوير بشكل أفضل وخالية من المشكلات الكامنة في Btrfs. في الممارسة العملية ، تم اختبار عمل اللقطات عند تنظيم نسخ MySQL الاحتياطية. قام Bcachefs أيضًا بالكثير من العمل لتحسين قابلية التوسع - لقد كان أداء نظام الملفات جيدًا في الاختبار في سعة تخزين 100 تيرابايت ، ومن المتوقع أن يتم تنفيذ Bcachefs في تخزين 1 PB في المستقبل القريب. تمت إضافة وضع nocow جديد لتعطيل آلية "النسخ عند الكتابة" (nocow). خلال فصل الصيف ، يخططون لجلب تنفيذ أكواد تصحيح الأخطاء و RAIDZ إلى حالة مستقرة ، بالإضافة إلى حل المشكلات المتعلقة باستهلاك الذاكرة المرتفع عند استعادة أنظمة الملفات وفحصها باستخدام الأداة المساعدة fsck.

من خطط المستقبل ، تم ذكر الرغبة في استخدام لغة الصدأ في تطوير Bcachefs. وفقًا لمؤلف Bcachefs ، فهو يحب البرمجة ، وليس تصحيح التعليمات البرمجية ، والآن من الجنون كتابة التعليمات البرمجية بلغة C عندما يكون هناك خيار أفضل. يشارك Rust بالفعل في Bcachefs في تنفيذ بعض الأدوات المساعدة لمساحة المستخدم. علاوة على ذلك ، يتم تفقيس الفكرة لإعادة كتابة Bcachefs بالكامل في Rust تدريجيًا ، نظرًا لأن استخدام هذه اللغة يوفر وقت التصحيح بشكل كبير.

أما بالنسبة لنقل Bcachefs إلى التيار الرئيسي لنواة Linux ، فقد تتأخر عملية التبني بسبب الحجم الكبير للتغييرات (2500 رقعة وحوالي 90 ألف سطر من التعليمات البرمجية) ، وهو أمر يصعب مراجعته. لتسريع المراجعة ، اقترح بعض المطورين تقسيم سلسلة التصحيح إلى أجزاء أصغر ومنفصلة منطقيًا. خلال المناقشة ، لفت بعض المشاركين الانتباه أيضًا إلى تطوير المشروع من قبل مطور واحد وخطر ترك الكود دون صيانة إذا حدث شيء لمطوره (اثنان من موظفي Red Hat مهتمون بالمشروع ، لكن عملهم لا يزال إصلاحات محدودة للأخطاء).

تم تطوير Bcachefs باستخدام تقنيات تم اختبارها بالفعل في تطوير جهاز Bcache block ، المصمم للتخزين المؤقت للوصول إلى محركات الأقراص الثابتة البطيئة على محركات أقراص الحالة الصلبة السريعة (المضمنة في النواة منذ الإصدار 3.10). يستخدم Bcachefs آلية Copy-on-Write (COW) ، حيث لا تؤدي التغييرات إلى الكتابة فوق البيانات - تتم كتابة الحالة الجديدة في موقع جديد ، وبعد ذلك يتغير مؤشر الحالة الحالية.

تتمثل إحدى ميزات Bcachefs في دعم الاتصال متعدد الطبقات لمحركات الأقراص ، حيث يتكون التخزين من عدة طبقات - يتم توصيل أسرع محركات الأقراص (SSD) بالطبقة السفلية ، والتي تُستخدم لتخزين البيانات المستخدمة بشكل متكرر ، ونماذج الطبقة العليا أقراص أكثر اتساعًا وأرخص تكلفة تخزن بيانات أقل طلبًا. يمكن استخدام التخزين المؤقت للكتابة بين الطبقات. يمكن إضافة محركات الأقراص بشكل ديناميكي وفصلها عن أحد الأقسام دون مقاطعة استخدام نظام الملفات (يتم ترحيل البيانات تلقائيًا).

المصدر: opennet.ru

إضافة تعليق