GFS2
في مجال الحوسبة ، يُعد نظام الملفات العالمي 2 ( GFS2 ) نظام ملفات مشترك الأقراص لمجموعات حواسيب لينكس . يتيح GFS2 لجميع أعضاء المجموعة الوصول المباشر والمتزامن إلى نفس وحدة التخزين المشتركة ، على عكس أنظمة الملفات الموزعة التي توزع البيانات عبر المجموعة. كما يمكن استخدام GFS2 كنظام ملفات محلي على حاسوب واحد.
لا يدعم نظام GFS2 وضع التشغيل المنفصل، ولا يتضمن أدوارًا للعميل أو الخادم. تعمل جميع العقد في مجموعة GFS2 كأقران. يتطلب استخدام GFS2 في مجموعة أجهزةً تسمح بالوصول إلى وحدة التخزين المشتركة، ومديرًا للأقفال للتحكم في الوصول إليها. يعمل مدير الأقفال كوحدة منفصلة؛ لذا يمكن لـ GFS2 استخدام مدير الأقفال الموزع (DLM) لتكوينات المجموعة ، ومدير الأقفال "nolock" لأنظمة الملفات المحلية. تدعم الإصدارات الأقدم من GFS أيضًا GULM، وهو مدير أقفال قائم على الخادم يُفعّل التكرار عبر تجاوز الفشل.
GFS و GFS2 هما برنامجان مجانيان ، يتم توزيعهما بموجب شروط رخصة جنو العمومية العامة . [ 1 ] [ 2 ]
تاريخ
بدأ تطوير نظام الملفات العالمي (GFS) عام ١٩٩٥، وكان المطور الأصلي له الأستاذ ماثيو أوكيف من جامعة مينيسوتا ومجموعة من الطلاب. [ ٣ ] كُتب النظام في البداية لنظام التشغيل IRIX من شركة SGI ، ولكن في عام ١٩٩٨ نُقل إلى نظام لينكس (٢.٤) [ ٤ ] نظرًا لأن الكود مفتوح المصدر وفّر منصة تطوير أكثر ملاءمة. في أواخر عام ١٩٩٩/أوائل عام ٢٠٠٠، انتقل النظام إلى شركة سيستينا للبرمجيات ، حيث بقي لفترة كمشروع مفتوح المصدر . في عام ٢٠٠١، قررت سيستينا جعل نظام الملفات العالمي منتجًا احتكاريًا.
قام المطورون بنسخ OpenGFS من آخر إصدار عام من GFS، ثم قاموا بتحسينه ليشمل تحديثات تسمح له بالعمل مع OpenDLM. إلا أن OpenGFS وOpenDLM توقفا عن العمل، بعد أن استحوذت Red Hat على Sistina في ديسمبر 2003، وأصدرت GFS والعديد من مكونات البنية التحتية للمجموعات الحاسوبية بموجب رخصة GPL في أواخر يونيو 2004.
قامت شركة Red Hat لاحقًا بتمويل تطويرات إضافية تهدف إلى إصلاح الأخطاء وتحسين الاستقرار. يُعدّ GFS2 [ 5 ] [ 6 ] تطويرًا لاحقًا مُشتقًا من GFS، وقد أُدرج مع مدير الأقفال الموزع الخاص به (المشترك مع GFS) في Linux 2.6.19. كما تضمن Red Hat Enterprise Linux 5.2 وحدة GFS2 كوحدة نمطية في النواة لأغراض التقييم. ومع تحديث 5.3، أصبح GFS2 جزءًا من حزمة النواة.
يُعدّ GFS2 جزءًا من توزيعات Fedora و Red Hat Enterprise Linux و CentOS Linux المرتبطة بها. يمكن للمستخدمين شراء دعم تجاري لتشغيل GFS2 بشكل كامل على Red Hat Enterprise Linux . بدءًا من Red Hat Enterprise Linux 8.3، أصبح GFS2 مدعومًا في بيئات الحوسبة السحابية التي تتوفر فيها أجهزة تخزين مشتركة. [ 7 ]
تُلخص القائمة التالية بعض أرقام الإصدارات والميزات الرئيسية التي تم تقديمها:
- الإصدار 1.0 (1996) خاص بنظام SGI IRIX فقط
- نسخة لينكس الإصدار 3.0
- تدوين الملاحظات الإصدار الرابع
- مدير القفل الاحتياطي الإصدار الخامس
- الإصدار 6.1 (2005) مدير الأقفال الموزعة
- لينكس 2.6.19 - تم دمج GFS2 و DLM في نواة لينكس
- أصدرت Red Hat Enterprise Linux 5.3 أول إصدار يدعم نظام الملفات GFS2 بشكل كامل
الأجهزة
صُمم نظاما الملفات GFS وGFS2 ليعملا في بيئات شبيهة بشبكات التخزين (SAN). ورغم إمكانية استخدامهما كنظام ملفات أحادي العقدة، إلا أن الاستفادة الكاملة من ميزاتهما تتطلب شبكة تخزين (SAN). ويمكن أن تتخذ هذه الشبكة أشكالاً مثل iSCSI ، أو Fibre Channel ، أو ATA over Ethernet (AoE)، أو أي جهاز آخر يمكن عرضه في نظام Linux كوحدة تخزين مشتركة بين عدد من العقد، مثل جهاز DRBD .
يتطلب مدير الأقفال الموزع ( DLM) شبكة قائمة على بروتوكول الإنترنت (IP ) للتواصل. عادةً ما تكون هذه الشبكة هي الإيثرنت ، ولكن توجد حلول أخرى عديدة. اعتمادًا على اختيار شبكة التخزين (SAN)، قد يكون من الممكن دمج هذه الحلول، ولكن الممارسة الشائعة تتضمن شبكات منفصلة لمدير الأقفال الموزع والتخزين.
يتطلب نظام الملفات العالمي (GFS) آلية حماية من نوع ما. هذا شرط أساسي لبنية المجموعة، وليس لنظام الملفات العالمي/GFS2 نفسه، ولكنه ضروري لجميع مجموعات الخوادم متعددة العقد. تشمل الخيارات الشائعة مفاتيح الطاقة ووحدات التحكم في الوصول عن بُعد (مثل DRAC أو IPMI أو ILO ). كما يمكن استخدام آليات الحماية الافتراضية والقائمة على برامج إدارة الأجهزة الافتراضية. تُستخدم الحماية لضمان عدم قدرة أي عقدة تعتقد المجموعة أنها معطلة على إعادة العمل فجأةً أثناء قيام عقدة أخرى باستعادة سجل العمليات الخاص بها. ويمكنها أيضًا، اختياريًا، إعادة تشغيل العقدة المعطلة تلقائيًا بمجرد اكتمال عملية الاستعادة.
الاختلافات عن نظام الملفات المحلي
على الرغم من أن مصممي GFS/GFS2 سعوا إلى محاكاة نظام الملفات المحلي بدقة، إلا أن هناك عددًا من الاختلافات التي يجب الانتباه إليها. يعود بعض هذه الاختلافات إلى أن واجهات نظام الملفات الحالية لا تسمح بتمرير المعلومات المتعلقة بالمجموعة. وينبع بعضها الآخر من صعوبة تنفيذ هذه الميزات بكفاءة في بيئة مُجمّعة. على سبيل المثال:
- لا يمكن مقاطعة استدعاء النظام flock() على GFS/ GFS2 بواسطة الإشارات .
- يُعيد استدعاء النظام fcntl () F_GETLK مُعرّف العملية (PID) لأي قفل مُعطِّل. وبما أن هذا نظام ملفات مُجمّع، فقد يُشير مُعرّف العملية هذا إلى عملية على أي من العُقد التي تم تثبيت نظام الملفات عليها. ولأن الغرض من هذه الواجهة هو السماح بإرسال إشارة إلى العملية المُعطِّلة، فإن هذا لم يعد ممكنًا.
- لا يتم دعم التأجير مع وحدة القفل lock_dlm (المجموعة)، ولكن يتم دعمها عند استخدامها كنظام ملفات محلي.
- سيعمل dnotify على أساس "نفس العقدة"، ولكن لا يُنصح باستخدامه مع GFS/GFS2
- سيعمل برنامج inotify أيضًا على أساس "نفس العقدة"، وهو غير موصى به أيضًا (ولكن قد يتم دعمه في المستقبل).
- يدعم نظام الملفات GFS2 فقط خاصية الربط (splice) .
يتمثل الاختلاف الرئيسي الآخر، وهو اختلاف مشترك بين جميع أنظمة الملفات العنقودية المماثلة، في أن آلية التحكم في ذاكرة التخزين المؤقت، المعروفة باسم "glocks" (تُنطق جي-لوكس) في GFS/GFS2، تؤثر على العنقود بأكمله. يرتبط بكل عقدة (inode) في نظام الملفات قفلان من نوع "glock". أحدهما (يُسمى قفل iopen) يتتبع العمليات التي فتحت العقدة. أما الآخر (قفل inode) فيتحكم في ذاكرة التخزين المؤقت المتعلقة بتلك العقدة. يحتوي قفل "glock" على أربع حالات: UN (غير مقفل)، SH (مشترك - قفل قراءة)، DF (مؤجل - قفل قراءة غير متوافق مع SH)، وEX (حصري). يرتبط كل وضع من الأوضاع الأربعة مباشرةً بوضع قفل DLM .
في وضع EX، يُسمح للعقدة بتخزين البيانات والبيانات الوصفية مؤقتًا (والتي قد تكون "غير مُعدّلة"، أي تنتظر الكتابة إلى نظام الملفات). في وضع SH، يُمكن للعقدة تخزين البيانات والبيانات الوصفية مؤقتًا، ولكن يجب ألا تكون غير مُعدّلة. في وضع DF، يُسمح للعقدة بتخزين البيانات الوصفية فقط مؤقتًا، ويجب ألا تكون غير مُعدّلة أيضًا. يُستخدم وضع DF فقط للإدخال/الإخراج المباشر. في وضع UN، يجب ألا تُخزّن العقدة أي بيانات وصفية مؤقتًا.
لضمان عدم تداخل العمليات التي تُغير بيانات أو بيانات تعريف عقدة البيانات (inode)، يُستخدم قفل EX. هذا يعني أن بعض العمليات، مثل إنشاء/حذف الملفات من نفس الدليل والكتابة إلى نفس الملف، يجب أن تقتصر عمومًا على عقدة واحدة في المجموعة. بالطبع، ستعمل هذه العمليات من عدة عقد كما هو متوقع، ولكن نظرًا لضرورة مسح ذاكرة التخزين المؤقت بشكل متكرر، فلن تكون فعالة للغاية.
السؤال الأكثر شيوعًا حول أداء GFS/GFS2 هو سبب ضعف الأداء مع خوادم البريد الإلكتروني. يكمن الحل في تقسيم مخزن البريد إلى مجلدات منفصلة، ومحاولة إبقاء كل عقدة (قدر الإمكان) تقرأ وتكتب في مجموعة مجلدات خاصة بها.
تدوين اليوميات
يُعد كل من GFS وGFS2 نظامي ملفات مُسجلين ؛ ويدعم GFS2 مجموعة مشابهة من أنماط التسجيل مثل ext3 . في نمط data=writeback ، تُسجل البيانات الوصفية فقط. هذا هو النمط الوحيد الذي يدعمه GFS، ومع ذلك، من الممكن تفعيل التسجيل على ملفات البيانات الفردية، ولكن فقط عندما يكون حجمها صفرًا. تخضع الملفات المُسجلة في GFS لعدد من القيود، مثل عدم دعم استدعاءات النظام mmap أو sendfile، كما أنها تستخدم تنسيقًا مختلفًا على القرص عن الملفات العادية. يوجد أيضًا سمة "inherit-journal" التي عند تعيينها على دليل ما، تؤدي إلى تعيين علامة التسجيل (أو inherit-journal، على التوالي) لجميع الملفات (والأدلة الفرعية) التي يتم إنشاؤها داخل هذا الدليل. يمكن استخدام هذه السمة بدلاً من خيار التثبيت data=journal الذي يدعمه ext3 (ولا يدعمه GFS/GFS2).
يدعم نظام الملفات GFS2 أيضًا وضع data=ordered، وهو مشابه لوضع data=writeback، باستثناء أنه تتم مزامنة البيانات المتغيرة قبل اكتمال كل عملية تفريغ للسجل. يضمن هذا مزامنة محتوى الكتل المضافة إلى عقدة البيانات (inode) مع القرص قبل تحديث البيانات الوصفية لتسجيل الحجم الجديد، وبالتالي يمنع ظهور كتل غير مهيأة في الملف في حالة تعطل العقدة. وضع التسجيل الافتراضي هو data=ordered ، ليتوافق مع الوضع الافتراضي لنظام ext3 .
اعتبارًا من عام 2010لا يدعم نظام الملفات GFS2 وضع "data=journal" حتى الآن ، ولكنه (على عكس GFS) يستخدم نفس تنسيق القرص للملفات العادية والملفات المسجلة، كما يدعم نفس سمات "journaled" و"inherit-journal". ويُخفف GFS2 أيضًا القيود المفروضة على تغيير سمة "journaled" للملف، بحيث يُسمح بتغييرها في أي وقت يكون فيه الملف مغلقًا (كما هو الحال في ext3 ).
لأسباب تتعلق بالأداء، يمتلك كل عقدة في نظامي GFS وGFS2 سجلًا خاصًا بها. في GFS، تكون السجلات عبارة عن امتدادات قرصية، بينما في GFS2 تكون مجرد ملفات عادية. ويُحدَّد عدد العقد التي يمكنها تحميل نظام الملفات في أي وقت بعدد السجلات المتاحة.
ميزات GFS2 مقارنة بـ GFS
يُضيف نظام GFS2 عدداً من الميزات الجديدة غير الموجودة في نظام GFS. إليكم ملخصاً لتلك الميزات التي لم تُذكر في المربعات الموجودة على يمين هذه الصفحة:
- نظام ملفات البيانات الوصفية (وهو في الواقع جذر مختلف) - انظر قسم التوافق ونظام ملفات GFS2 الوصفي أدناه
- تتوفر نقاط التتبع الخاصة بنظام الملفات GFS2 منذ إصدار النواة 2.6.32
- تتوفر واجهة الحصص بنمط XFS في GFS2 منذ نواة النظام 2.6.33
- تتوفر ميزة تخزين قوائم التحكم بالوصول (ACLs) في GFS2 منذ الإصدار 2.6.33
- يدعم نظام الملفات GFS2 إنشاء طلبات "التجاهل" لطلبات التزويد الرقيق/SCSI TRIM
- يدعم نظام الملفات GFS2 حواجز الإدخال/الإخراج (مفعلة افتراضياً، بافتراض أن الجهاز الأساسي يدعمها. قابلة للتكوين من نواة 2.6.33 وما فوق).
- FIEMAP ioctl (للاستعلام عن تعيينات العقد على القرص)
- دعم Splice (استدعاء النظام)
- دعم mmap/splice للملفات المسجلة (يتم تفعيله باستخدام نفس تنسيق القرص المستخدم للملفات العادية)
- عدد أقل بكثير من العناصر القابلة للتعديل (مما يجعل الإعداد أقل تعقيدًا)
- وضع الكتابة المرتب (كما هو الحال في نظام ext3، فإن نظام GFS يحتوي فقط على وضع الكتابة المؤجلة)
التوافق ونظام الملفات الوصفية GFS2
صُمم نظام الملفات GFS2 بحيث تكون عملية الترقية من GFS بسيطة. ولتحقيق هذه الغاية، بقي معظم هيكل البيانات على القرص كما هو في GFS، بما في ذلك ترتيب البايتات الكبير (Big-Endian) . مع ذلك، توجد بعض الاختلافات:
- يحتوي نظام الملفات GFS2 على "نظام ملفات وصفي" يمكن من خلاله للعمليات الوصول إلى ملفات النظام
- يستخدم نظام الملفات GFS2 نفس تنسيق الملفات المسجلة على القرص كما هو الحال بالنسبة للملفات العادية
- يستخدم نظام الملفات GFS2 ملفات النظام العادية للسجلات، بينما يستخدم نظام الملفات GFS نطاقات خاصة.
- يحتوي GFS2 على بعض ملفات النظام الأخرى " لكل عقدة ".
- يختلف تخطيط العقدة ( بشكل طفيف للغاية)
- يختلف تخطيط الكتل غير المباشرة قليلاً
لا يتوافق نظاما تسجيل البيانات في GFS وGFS2. يمكن الترقية باستخدام أداة ( gfs2_convert ) تُشغَّل مع نظام الملفات في وضع عدم الاتصال لتحديث البيانات الوصفية. تُستخدم بعض الكتل الاحتياطية في سجلات GFS لإنشاء ملفات (صغيرة جدًا) لكل عقدة، وهي الملفات المطلوبة من GFS2 أثناء عملية التحديث. تبقى معظم البيانات في مكانها.
نظام الملفات "البياني" في GFS2 ليس نظام ملفات مستقلاً، بل هو جذر بديل لنظام الملفات الرئيسي. ورغم أنه يتصرف كنظام ملفات "عادي"، إلا أن محتوياته تقتصر على ملفات النظام المختلفة التي يستخدمها GFS2، وعادةً لا يحتاج المستخدمون إلى الاطلاع عليه. تقوم أدوات GFS2 بتثبيت وفك تثبيت نظام الملفات "البياني" حسب الحاجة، في الخلفية.
انظر أيضاً
مراجع
- ↑ تايغلاند، ديفيد (29 يونيو 2004). "بنية المجموعة المتناظرة والمواصفات الفنية للمكونات" (ملف PDF) . شركة ريد هات. مؤرشف (ملف PDF) من الأصل بتاريخ 6 فبراير 2007. تم الاطلاع عليه بتاريخ 3 أغسطس 2007 .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ↑ سولتيس، ستيفن ر.؛ إريكسون، غرانت م.؛ بريسلان، كينيث و. (1997). "نظام الملفات العالمي: نظام ملفات لتخزين الأقراص المشتركة" (ملف PDF) . معاملات IEEE في الأنظمة المتوازية والموزعة . مؤرشف من الأصل (ملف PDF) بتاريخ 15 أبريل 2004.
- ↑ "مشاركة البيانات باستخدام OpenGFS مع مجموعة تخزين GFS" . مؤرشف من الأصل بتاريخ 11 يناير 2011. تم الاطلاع عليه بتاريخ 3 نوفمبر 2010 .
- ↑ دانيال روبنز (1 سبتمبر 2001). "الخيوط المشتركة: دليل تنفيذ أنظمة الملفات المتقدمة، الجزء 3" . IBM DeveloperWorks. مؤرشف من الأصل في 3 فبراير 2012. تم الاطلاع عليه في 15 فبراير 2013 .
- ↑ وايت هاوس، ستيفن (27-30 يونيو 2007). "نظام ملفات GFS2" (ملف PDF) . وقائع ندوة لينكس 2007. أوتاوا ، أونتاريو ، كندا. الصفحات 253-259 .
- ↑ وايت هاوس، ستيفن (13-17 يوليو 2009). "اختبار أنظمة ملفات المجموعات والتحقق منها" (ملف PDF) . وقائع ندوة لينكس 2009. مونتريال ، كيبيك ، كندا. الصفحات 311-317 . مؤرشف (ملف PDF) من الأصل في 17 يونيو 2011. تم الاطلاع عليه في 1 أكتوبر 2009 .
- ↑ "تقديم حلول التخزين المرنة من ريد هات إلى السحابة العامة" . www.redhat.com . تم الاطلاع عليه بتاريخ 19 فبراير 2021 .
روابط خارجية
- ريد هات إنتربرايز لينكس 6 - نظام الملفات العالمي 2
- صفحة توثيق Red Hat Cluster Suite و GFS
- صفحة مشروع GFS مؤرشفة بتاريخ 15 مارس 2006 على موقع Wayback Machine
- صفحة مشروع OpenGFS (قديمة)
- شجرة تطوير GFS2 على Git
- شجرة تطوير أدوات GFS2 على Git
- أنظمة الملفات الموزعة التي يدعمها نواة لينكس
- برنامج ريد هات
- أنظمة ملفات القرص المشترك
- برامج جامعة مينيسوتا
- برامج المحاكاة الافتراضية لنظام التشغيل لينكس
