سوف يتضمن Linux 6.2 kernel تحسينات على RAID5 / 6 في Btrfs

تم اقتراح تحسينات Btrfs لتضمينها في Linux 6.2 kernel لإصلاح مشكلة ثقب الكتابة في تطبيق RAID 5/6. يكمن جوهر المشكلة في حقيقة أنه في حالة حدوث عطل أثناء التسجيل، فمن المستحيل في البداية فهم الكتلة التي تم كتابة جهاز RAID عليها بشكل صحيح، والتي لم يكتمل التسجيل فيها. إذا حاولت استعادة RAID في هذه الحالة، فقد يتم تدمير الكتل المطابقة للكتل المكتوب عليها لأن حالة كتل RAID غير متزامنة. تحدث هذه المشكلة في أي صفائف RAID1/5/6 حيث لم يتم اتخاذ إجراءات خاصة لمكافحة هذا التأثير.

في تطبيق RAID، مثل RAID1 في btrfs، يتم حل هذه المشكلة باستخدام المجموع الاختباري في كلا النسختين؛ إذا كان هناك عدم تطابق، تتم استعادة البيانات ببساطة من النسخة الثانية. يعمل هذا الأسلوب أيضًا إذا بدأ بعض الأجهزة في إرسال بيانات غير صحيحة بدلاً من الفشل الكامل.

ومع ذلك، في حالة RAID5/6، لا يقوم نظام الملفات بتخزين المجاميع الاختبارية لكتل ​​التكافؤ: في الوضع الطبيعي، يتم التحقق من صحة الكتل من خلال حقيقة أنها كلها مجمعة اختباريًا، ويمكن إعادة بناء كتلة التكافؤ من البيانات. ومع ذلك، في حالة التسجيل الجزئي، قد لا يعمل هذا الأسلوب في مواقف معينة. في هذه الحالة، عند استعادة مصفوفة، من الممكن أن تتم استعادة الكتل التي تندرج ضمن سجل غير مكتمل بشكل غير صحيح.

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

بالإضافة إلى ذلك، يمكننا ملاحظة توصيات المطورين لاستخدام RAID5/6، وجوهرها هو أنه في Btrfs قد يختلف ملف تعريف البيانات الوصفية وملف تخزين البيانات. في هذه الحالة، يمكنك استخدام ملف التعريف RAID1 (المرآة) أو حتى RAID1C3 (3 نسخ) للبيانات الوصفية، وRAID5 أو RAID6 للبيانات. ويضمن ذلك حماية موثوقة للبيانات الوصفية وغياب "ثغرة الكتابة" من ناحية، واستخدام أكثر كفاءة للمساحة، وهو ما يميز RAID5/6، من ناحية أخرى. وهذا يسمح بتجنب تلف بيانات التعريف ويمكن تصحيح تلف البيانات.

تجدر الإشارة أيضًا إلى أنه بالنسبة لمحركات أقراص SSD الموجودة في Btrfs في kernel 6.2، سيتم تنشيط التنفيذ غير المتزامن لعملية "التجاهل" افتراضيًا (وضع علامة على الكتل المحررة التي لم تعد بحاجة إلى تخزينها فعليًا). ميزة هذا الوضع هي الأداء العالي بسبب التجميع الفعال لعمليات "التجاهل" في قائمة الانتظار والمعالجة الإضافية لقائمة الانتظار بواسطة معالج الخلفية، ولهذا السبب لا تتباطأ عمليات FS العادية، كما هو الحال مع "المتزامن" "تجاهل" حيث يتم تحرير الكتل، ويمكن لمحرك SSD اتخاذ قرارات أفضل. من ناحية أخرى، لن تحتاج بعد الآن إلى استخدام أدوات مساعدة مثل fstrim، حيث سيتم مسح جميع الكتل المتاحة في FS دون الحاجة إلى مسح إضافي ودون إبطاء العمليات.

المصدر: opennet.ru

إضافة تعليق