نظام ملفات التسجيل

نظام الملفات المُسجّل هو نظام ملفات يتتبع التغييرات التي لم تُدمج بعد في الجزء الرئيسي من نظام الملفات، وذلك بتسجيل هدف هذه التغييرات في بنية بيانات تُعرف باسم " سجل التغييرات "، وهو عادةً سجل دائري . في حالة تعطل النظام أو انقطاع التيار الكهربائي، يمكن إعادة تشغيل أنظمة الملفات هذه بسرعة أكبر مع تقليل احتمالية تلفها . [ 1 ] [ 2 ]

بحسب التطبيق الفعلي، قد يقتصر نظام الملفات المُسجّل على تتبع البيانات الوصفية المخزنة فقط ، مما يُحسّن الأداء على حساب زيادة احتمالية تلف البيانات. في المقابل، قد يتتبع نظام الملفات المُسجّل كلاً من البيانات المخزنة والبيانات الوصفية المرتبطة بها، بينما تسمح بعض التطبيقات بسلوك قابل للتحديد في هذا الصدد. [ 3 ]

تاريخ

في عام 1990، قدمت شركة IBM نظام الملفات JFS في نظام AIX 3.1 كواحد من أوائل أنظمة الملفات التجارية لنظام UNIX التي طبقت نظام التسجيل. [ 4 ] وفي العام التالي، انتشرت الفكرة على نطاق واسع من خلال ورقة بحثية تناولت أنظمة الملفات ذات البنية السجلية. [ 5 ] ثم طُبقت هذه التقنية لاحقًا في نظام الملفات NTFS الخاص بنظام Windows NT من مايكروسوفت عام 1993، وفي نظام الملفات HFS Plus الخاص بشركة أبل عام 1998، وفي نظام الملفات ext3 الخاص بنظام Linux عام 2001. [ 6 ]

الأساس المنطقي

يتطلب تحديث أنظمة الملفات لتعكس التغييرات التي تطرأ على الملفات والمجلدات عادةً العديد من عمليات الكتابة المنفصلة. وهذا يجعل من الممكن أن يؤدي انقطاع (مثل انقطاع التيار الكهربائي أو تعطل النظام ) بين عمليات الكتابة إلى ترك هياكل البيانات في حالة وسيطة غير صالحة. [ 1 ]

على سبيل المثال، يتضمن حذف ملف على نظام ملفات يونكس ثلاث خطوات: [ 7 ]

  1. إزالة مدخل الدليل الخاص به.
  2. إطلاق العقدة إلى مجموعة العقد الحرة.
  3. إعادة جميع كتل القرص إلى مجموعة كتل القرص الحرة.

إذا حدث عطل بعد الخطوة 1 وقبل الخطوة 2، فسينتج عن ذلك عقدة بيانات يتيمة، وبالتالي تسرب في مساحة التخزين . أما إذا حدث عطل بين الخطوتين 2 و3، فلن تتمكن من استخدام الكتل التي كان الملف يستخدمها سابقًا لإنشاء ملفات جديدة، مما يقلل فعليًا من سعة تخزين نظام الملفات. ولا يُجدي إعادة ترتيب الخطوات نفعًا أيضًا. فإذا سبقت الخطوة 3 الخطوة 1، فقد يسمح العطل بينهما بإعادة استخدام كتل الملف لإنشاء ملف جديد، ما يعني أن الملف المحذوف جزئيًا سيحتوي على جزء من محتويات ملف آخر، وستظهر التعديلات التي أُجريت على أي من الملفين في كليهما. من ناحية أخرى، إذا سبقت الخطوة 2 الخطوة 1، فسيؤدي العطل بينهما إلى عدم إمكانية الوصول إلى الملف، على الرغم من أنه يبدو موجودًا.

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

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

التقنيات

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

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

المجلات الورقية

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

تُفرض السجلات المادية عبئًا كبيرًا على الأداء لأن كل كتلة متغيرة يجب حفظها مرتين في وحدة التخزين، ولكن قد يكون ذلك مقبولًا عند الحاجة إلى حماية مطلقة من الأعطال. [ 8 ]

المجلات المنطقية

يخزن السجل المنطقي التغييرات التي تطرأ على بيانات تعريف الملفات فقط ، ويُضحي بتحمل الأعطال مقابل أداء كتابة أفضل بكثير. [ 9 ] يستطيع نظام الملفات المزود بسجل منطقي التعافي بسرعة بعد حدوث عطل، ولكنه قد يسمح بفقدان تزامن بيانات الملفات غير المسجلة مع بيانات التعريف المسجلة، مما يؤدي إلى تلف البيانات.

على سبيل المثال، قد تتضمن عملية إضافة البيانات إلى ملف ثلاث عمليات كتابة منفصلة إلى:

  1. رقم تعريف الملف (inode )، للإشارة في بيانات تعريف الملف إلى أن حجمه قد ازداد.
  2. خريطة المساحة الحرة، لتحديد تخصيص مساحة للبيانات المراد إلحاقها.
  3. المساحة المخصصة حديثًا، لكتابة البيانات الملحقة فعليًا.

في سجل البيانات الوصفية فقط، لن يتم تسجيل الخطوة 3. إذا لم تُنفذ الخطوة 3، ولكن أُعيد تنفيذ الخطوتين 1 و2 أثناء عملية الاسترداد، فسيتم إضافة بيانات غير ضرورية إلى الملف.

اكتب المخاطر

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

ومما يزيد الأمر تعقيدًا، أن العديد من أجهزة التخزين الضخمة تحتوي على ذاكرة تخزين مؤقتة للكتابة، حيث قد تعيد ترتيب عمليات الكتابة بشكل مكثف لتحسين الأداء. (وهذا شائع بشكل خاص في محركات الأقراص الصلبة المغناطيسية، التي تتميز بزمن استجابة طويل للبحث يمكن تقليله باستخدام فرز المصاعد). تفترض بعض أنظمة الملفات ذات التسجيل، بشكل متحفظ، أن إعادة ترتيب الكتابة هذه تحدث دائمًا، وتضحي بالأداء من أجل الدقة عن طريق إجبار الجهاز على مسح ذاكرة التخزين المؤقتة عند نقاط معينة في سجل العمليات (تُسمى حواجز في نظامي الملفات ext3 و ext4 ). [ 10 ]

البدائل

تحديثات بسيطة

تتجنب بعض تطبيقات نظام الملفات الموحد (UFS) التسجيل في سجلات النظام، وتعتمد بدلاً من ذلك على التحديثات البرمجية : حيث تُرتّب عمليات الكتابة بطريقة تضمن عدم وجود أي تناقض في نظام الملفات على القرص، أو أن التناقض الوحيد الذي قد ينشأ في حالة حدوث عطل هو تسرب في مساحة التخزين. وللتعافي من هذه التسريبات، تتم مطابقة خريطة المساحة الحرة مع مسح كامل لنظام الملفات عند عملية التحميل التالية. وعادةً ما تتم عملية جمع البيانات المهملة هذه في الخلفية. [ 11 ]

أنظمة الملفات ذات البنية السجلية

في أنظمة الملفات ذات البنية السجلية ، لا تنطبق عقوبة الكتابة مرتين لأن السجل نفسه هو نظام الملفات: فهو يشغل جهاز التخزين بأكمله ويتم تنظيمه بحيث يمكن اجتيازه كما هو الحال في نظام الملفات العادي.

أنظمة الملفات التي تعتمد على النسخ عند الكتابة

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

انظر أيضاً

مراجع

  1. 1 2 جونز، إم تيم (4 يونيو 2008)، تشريح أنظمة ملفات التسجيل في لينكس ، IBM DeveloperWorks، مؤرشف من الأصل في 21 فبراير 2009 ، تم استرجاعه في 13 أبريل 2009
  2. 1 2 أرباتشي-دوسو، رمزي ح.؛ أرباتشي-دوسو، أندريا س. (21 يناير 2014)، اتساق الأعطال: FSCK والتسجيل (PDF) ، كتب أرباتشي-دوسو، مؤرشف (PDF) من الأصل في 24 يناير 2014 ، تم استرجاعه في 22 يناير 2014
  3. "صفحة دليل لينكس لـ tune2fs(8)" . linux.die.net . مؤرشفة من الأصل بتاريخ 25 فبراير 2015. تم الاطلاع عليها بتاريخ 20 فبراير 2015 .
  4. تشانغ، أ.؛ ميرجن، م. ف.؛ رادر، ر. ك.؛ روبرتس، ج. أ.؛ بورتر، س. ل. (يناير 1990)، "تطور مرافق التخزين في نظام التشغيل AIX الإصدار 3 لمعالجات RISC System/6000" (ملف PDF) ، مجلة IBM للبحوث والتطوير ، 34:1 : 105-109 ، doi : 10.1147/rd.341.0105
  5. روزنبلوم، ميندل؛ أوسترهوت، جون (فبراير 1991). تصميم وتنفيذ نظام ملفات ذي بنية سجلية (ملف PDF) . الندوة السنوية الثالثة عشرة لجمعية ACM حول مبادئ أنظمة التشغيل.
  6. ""2.4.15-final" - MARC" . marc.info . تم ​​الاطلاع عليه بتاريخ 24 مارس 2018 .
  7. أنظمة الملفات من تانينباوم، أ.س. (2008). أنظمة التشغيل الحديثة (الطبعة الثالثة، ص 287). أبر سادل ريفر، نيوجيرسي: برنتيس هول.
  8. تويدي، ستيفن ( 2000)، "Ext3، نظام ملفات التسجيل"، وقائع ندوة أوتاوا لينكس : 24-29
  9. برابهاكاران، فيجايان؛ أرباتشي-دوسو، أندريا سي؛ أرباتشي-دوسو، رمزي إتش، "تحليل وتطور أنظمة ملفات التسجيل" (ملف PDF) ، المؤتمر التقني السنوي لـ USENIX لعام 2005 ، جمعية USENIX، مؤرشف (ملف PDF) من الأصل في 26 سبتمبر 2007 ، تم استرجاعه في 27 يوليو 2007.
  10. كوربيت، جوناثان (21 مايو 2008)، الحواجز وأنظمة ملفات التسجيل ، مؤرشف من الأصل في 14 مارس 2010 ، تم استرجاعه في 6 مارس 2010
  11. سيلتزر، مارغو آي؛ غانغر، غريغوري آر؛ ماكوسيك، إم كيرك، "التسجيل مقابل التحديثات الناعمة: حماية البيانات الوصفية غير المتزامنة في أنظمة الملفات" ، المؤتمر التقني السنوي لعام 2000 لجمعية USENIX، مؤرشف من الأصل في 26 أكتوبر 2007 ، تم استرجاعه في 27 يوليو 2007.