دراسة حالة: نظام ملفات CEPH
- 24 دقائق
Ceph هو نظام تخزين يمكن نشره على مجموعات كبيرة من الخوادم مع الأقراص المرفقة. يغطي الفيديو التالي المفاهيم الأساسية وراء Ceph.
أهداف التصميم ل Ceph2 تتضمن ما يلي:
- مجموعة التخزين للأغراض العامة المرنة لدعم مجموعة واسعة من التطبيقات.
- بنية يمكنها التوسع بسلاسة إلى مئات الآلاف من العقد والبتابايت من التخزين.
- نظام موثوق به للغاية دون أي نقطة فشل واحدة، وهو إدارة ذاتية وقوية.
- يجب تشغيل النظام على أجهزة السلع المتاحة بسهولة. تم تصميم Ceph بحيث يمكن الوصول إليها من خلال 3 تجريدات مختلفة، كما هو موضح في الشكل التالي.
نظام مجموعة تخزين Ceph هو مخزن عناصر موزعة. طبقات أعلى مجموعة التخزين هي خدمات تخزين مختلفة تواجه العميل. تسمح خدمة بوابة كائن Ceph للعملاء بالوصول إلى مجموعة تخزين Ceph باستخدام واجهة HTTP المستندة إلى REST المتوافقة حاليا مع بروتوكولات Amazon S3 وOpenstack Swift. تسمح خدمة جهاز كتلة Ceph للعملاء بالوصول إلى مجموعة التخزين كأجهزة حظر، والتي يمكن تنسيقها مع نظام ملفات محلي وتثبيتها في نظام تشغيل، أو استخدامها كقرص ظاهري لتشغيل الأجهزة الظاهرية في Xen أو KVM أو VMWare أو QEMU. وأخيرا، يوفر نظام ملفات Ceph (Ceph FS) تجريد الملفات والدليل عبر مجموعة التخزين بأكملها كنظام ملفات متوافق مع POSIX.
الشكل 6: نظام Ceph البنائي
مع إلقاء نظرة أعمق، يتم توضيح بنية Ceph أدناه:
الشكل 7: بنية Ceph
يوجد في قلب Ceph نظام تخزين كائن موزع يسمى RADOS. يمكن للعملاء التفاعل مع RADOS مباشرة باستخدام واجهة برمجة تطبيقات منخفضة المستوى تسمى librados، والتي تستند إلى مأخذ التوصيل وتدعم عددا من لغات البرمجة. بدلا من ذلك، يمكن للعملاء التفاعل مع واجهات برمجة التطبيقات 3 أعلى مستوى التي توفر 3 تجريدات منفصلة في RADOS.
يسمح RADOS Gateway أو radosgw للعملاء بالوصول إلى RADOS من خلال بوابة تستند إلى REST عبر HTTP. هذا يحاكي خدمة كائن Amazon S3 وهو متوافق مع التطبيقات التي تستخدم Amazon S3 API أو Openstack SWIFT API.
يعرض جهاز كتلة RADOS أو RBD مخزن عناصر RADOS كجهاز كتلة موزعة للأغراض العامة، مثل SAN إلى حد كبير. يسمح RBD بنسخ أجهزة الحظر من RADOS وتثبيتها على أنظمة Linux باستخدام برنامج تشغيل kernel. يمكن أيضا استخدام RBDs كصور قرص ظاهري لأنظمة الظاهرية الشائعة مثل Xen وVMWare وKVM وQEMU.
Ceph FS هو نظام ملفات موزع متوافق مع POSIX الطبقات على RADOS التي يمكن تحميلها مباشرة داخل أنظمة الملفات لعملاء Linux. ستتم مناقشة Ceph FS بالتفصيل لاحقا في هذه الصفحة.
بنية نظام مجموعة تخزين Ceph (RADOS)
يوجد في قلب Ceph مخزن الكائنات الموزعة المستقل والموثوق به (RADOS). في RADOS، يتم تخزين البيانات كعناصر موزعة على مجموعة من الأجهزة. يتفاعل العملاء مع مجموعة RADOS عن طريق تخزين العناصر واستردادها. يتكون الكائن من اسم كائن (وهو المفتاح المستخدم لتعريف كائن)، بالإضافة إلى المحتويات الثنائية للكائن (وهي القيمة المقترنة بمفتاح عنصر معين). دور RADOS هو تخزين العناصر بطريقة موزعة عبر مجموعة بطريقة قابلة للتطوير وموثوقة ومتسامحة مع الأخطاء.
هناك نوعان من العقد في نظام مجموعة RADOS: الخفية لتخزين الكائنات (OSDs) وعقد المراقبة (الشكل 8). يخزن OSD الكائنات ويستجيب لطلبات الكائنات. تقوم OSDs بتخزين هذه الكائنات على العقد باستخدام نظام الملفات المحلي على كل عقدة، والاحتفاظ بذاكرة تخزين مؤقت لتحسين الأداء. تراقب عقد المراقبة حالة نظام المجموعة لتتبع OSDs التي تدخل المجموعة وتغادرها.
الشكل 8: هندسة RADOS. OSDs هي المسؤولة عن البيانات الموجودة على عقدة (عادة ما يتم نشر OSD واحد لكل قرص فعلي). العقد التي تم وضع علامة عليها في M هي عقد المراقبة.
حالة نظام المجموعة وأجهزة العرض في RADOS
يتم تغليف حالة نظام مجموعة RADOS في كائن يعرف باسم مخطط مجموعة ، والذي تشاركه جميع العقد في نظام مجموعة. تحتوي خريطة نظام المجموعة على معلومات حول حالة نظام المجموعة في أي لحظة، بما في ذلك عدد OSDs الموجودة حاليا، وتمثيل مضغوط لكيفية توزيع البيانات بين OSDs (التي ستتم مناقشتها بالتفصيل في القسم التالي)، وطابع زمني منطقي يشير إلى الوقت الذي تم فيه إنشاء مخطط المجموعة هذا. يتم إجراء تحديثات خريطة نظام المجموعة بطريقة نظير إلى نظير تزايدي بواسطة عقد المراقبة. وهذا يعني أنه يتم توصيل التغييرات في مخطط نظام المجموعة فقط من طابع زمني إلى آخر بين العقد في نظام مجموعة، للحفاظ على كمية البيانات المنقولة بين العقد صغيرة.
أجهزة العرض في RADOS مسؤولة بشكل جماعي عن إدارة نظام التخزين عن طريق تخزين النسخة الرئيسية من خريطة نظام المجموعة وإرسال تحديثات دورية في حالة حدوث تغيير في حالة OSDs. يتم تنظيم أجهزة العرض استنادا إلى خوارزمية paxos، وتتطلب غالبية أجهزة العرض لقراءة أو تحديث خريطة نظام المجموعة. تضمن أجهزة العرض تسلسل تحديثات الخريطة واتساقها. تم تصميم مجموعة RADOS ليكون لديها عدد صغير من أجهزة العرض (>3) وعادة ما تكون عددا فرديا لضمان عدم وجود روابط للانقطاع عندما يتعين على الشاشات الفردية التوصل إلى توافق في الآراء.
موضع البيانات في RADOS
لكي يعمل تخزين كائن موزع بشكل صحيح، يجب أن يكون العميل قادرا على الاتصال ب OSD الصحيح للتفاعل مع كائن. أولا، يتصل العميل ب Monitor لاسترداد خريطة نظام المجموعة لمجموعة التخزين المحددة. يمكن استخدام المعلومات الواردة في مخطط نظام المجموعة لتحديد OSD الدقيق المسؤول عن كائن معين في نظام المجموعة.
الخطوة الأولى هي تحديد مجموعة وضع عنصر معين (الشكل 9). يمكن اعتبار مجموعة المواضع بمثابة مستودع يوجد فيه كائن. يتم ذلك باستخدام دالة تجزئة (يتم الحصول دائما على أحدث دالة تجزئة لاستخدامها من خريطة نظام المجموعة). بمجرد تحديد مجموعة موضع للكائن المحدد، يحتاج العميل بعد ذلك إلى العثور على OSD المسؤول عن مجموعة الموضع هذه.
الشكل 9: تحديد موقع عنصر إلى مجموعة موضع وأخيرا إلى OSD باستخدام خوارزمية CRUSH.
تعرف الخوارزمية المستخدمة لتعيين مجموعات الموضع إلى OSDs باسم النسخ المتماثل المتحكم به ضمن التجزئة القابلة للتطوير (CRUSH)1 الخوارزمية (الشكل 9). تقوم CRUSH بتعيين مجموعات المواضع عبر نظام مجموعة بطريقة عشوائية، ولكنها حتمية. يعد CRUSH أكثر استقرارا من دالة التجزئة، بمعنى أنه عندما تدخل OSDs أو تغادر نظام المجموعة، تضمن CRUSH بقاء معظم مجموعات الموضع في مكانها وتتحول فقط كمية صغيرة من البيانات للحفاظ على توزيع متوازن. من ناحية أخرى، تتطلب دالة التجزئة البسيطة إعادة توزيع غالبية المفاتيح عند إضافة المستودعات أو إزالتها. الوصف الكامل لخوارزمية CRUSH خارج نطاق هذه المناقشة. يجب على القراء المهتمين الرجوع إلى CRUSH: الموضع المتحكم به والقابل للتطوير واللامركزي للبيانات المنسوخة.
عند تجزئة اسم كائن إلى مجموعة موضع، تنتج CRUSH قائمة r OSDs المسؤولة عن مجموعة الموضع. هنا، r هو عدد النسخ المتماثلة لكائن معين. استنادا إلى المعلومات الموجودة في مخطط نظام المجموعة، يتم تحديد OSDs النشطة الموجودة في هذا التعيين، ومن ثم يمكن الاتصال ب OSD للتفاعل (عمليات مثل الإنشاء والقراءة والتحديث والحذف) مع الكائن المحدد.
النسخ المتماثل في RADOS
في RADOS، يتم نسخ عنصر بين العديد من OSDs المقترنة بمجموعة موضع هذا الكائن. وهذا يضمن وجود نسخ متعددة من كائن معين في حالة فشل OSD معين. لدى RADOS أنظمة متاحة متعددة يتم فيها إجراء النسخ المتماثل فعليا؛ هذه هي النسخة الأساسيةوسلسلة ومخططات النسخ المتماثل (الشكل 10).
الشكل 10: أوضاع النسخ المتماثل المدعومة في RADOS. (المصدر 2)
النسخ المتماثل للنسخ الأساسي: في نظام النسخ المتماثل الأساسي، يتفاعل العميل مع OSD المتوفر الأول (OSD النسخة المتماثلة الأساسية) للتفاعل مع كائن. ستقوم النسخة المتماثلة الأساسية OSD بمعالجة الطلب والاستجابة للعميل مرة أخرى. في حالة الكتابة، ستقوم النسخة المتماثلة الأساسية OSD بإعادة توجيه طلب الكتابة إلى r-1 النسخ المتماثلة التي ستقوم بعد ذلك بتحديث نسخها المحلية من العنصر والاستجابة إلى الشكل الرئيسي. يتم تأخير عملية الكتابة على الشكل الرئيسي حتى يتم تنفيذ كافة عمليات الكتابة بواسطة OSDs الأخرى لهذا الكائن. سيقر الرئيس بعد ذلك بالكتابة إلى العميل. لا تكتمل الكتابة حتى تستجيب جميع النسخ المتماثلة إلى نسخة OSD الأساسية. تنطبق نفس العملية على القراءات، وستستجيب النسخة الأساسية للقراءة فقط بعد الاتصال بجميع النسخ المتماثلة وقيمة الكائن هي نفسها عبر جميع النسخ المتماثلة.
النسخ المتماثل لسلسلة: تتم إعادة توجيه طلبات كائن إلى أسفل السلسلة حتى يتم العثور على النسخة المتماثلة r (النهائية). إذا كانت العملية عبارة عن كتابة، الالتزام بكل نسخة متماثلة في الطريق إلى النسخة المتماثلة الأخيرة. سيعترف OSD النهائي الذي يحتوي على النسخة المتماثلة النهائية أخيرا بالكتابة إلى العميل. سيتم توجيه أي عملية قراءة مباشرة إلى الذيل، من أجل تقليل عدد القفزات المطلوبة لقراءة البيانات من نظام مجموعة.
Splay Replication: يجمع النسخ المتماثل ل Splay بين عناصر النسخ المتماثل للنسخ الأساسي والنسخ المتماثل للسلسلة. يتم توجيه طلبات القراءة إلى OSD الأخير في سلسلة النسخ المتماثلة، بينما يتم إرسال عمليات الكتابة أولا إلى الرأس. على عكس السلسلة، يتم إجراء التحديثات على OSDs الوسطى بالتوازي، على غرار نظام النسخ المتماثل الأساسي.
بالإضافة إلى مخططات النسخ المتماثل هذه، تتم معالجة الاستمرار في RADOS باستخدام رسالتي إقرار منفصلتين (الشكل 11). يحتوي كل OSD على ذاكرة تخزين مؤقت للبيانات التي يقدمها. تتم كتابة التحديثات إلى ذاكرة التخزين المؤقت للمخزن المؤقت ويتم الإقرار بها مرة أخرى على الفور من خلال رسالة ack. يتم مسح ذاكرة التخزين المؤقت هذه بشكل دوري إلى القرص، وعندما تقوم النسخة المتماثلة الأخيرة بتثبيت البيانات على القرص، يتم إرسال رسالة الالتزام إلى العميل، مما يشير إلى استمرار البيانات.
الشكل 11: Ack مقابل رسائل التثبيت في RADOS (المصدر 2)
نموذج التناسق في RADOS
يتم وضع علامة على كل رسالة في RADOS (من العميل وكذلك رسائل نظير إلى نظير بين العقد) بالطابع الزمني لضمان ترتيب الرسائل وتطبيقها بطريقة متسقة. إذا اكتشفت OSDs رسالة خاطئة بسبب مخطط مجموعة قديم من طالب الرسالة، فسيرسل تحديثات الخريطة التزايدية لتحديث طالب الرسالة.
هناك حالات زاوية حيث يجب التعامل بعناية مع ضمانات التناسق الصارمة التي تقدمها RADOS. إذا تغيرت تعيينات مجموعة المواضع ل OSD معين (في حالة حدوث تغيير في خريطة نظام المجموعة)، فيجب على النظام التأكد من أن تسليم مجموعات المواضع بين OSDs القديمة و OSDs الجديدة يجب أن يتم بطريقة سلسة ومتسقة. أثناء تغيير مجموعة المواضع، يطلب من OSDs الجديدة الاتصال ب OSDs القديمة لتسليم الحالة، والتي ستتعرف خلالها عناصر OSD القديمة على التغيير وتتوقف عن الاستجابة للاستعلامات الخاصة بمجموعات المواضع المحددة هذه.
هناك حالة أخرى قد يكون من الصعب فيها تحقيق ضمانات التناسق الصارمة في حالة حدوث فشل في الشبكة يؤدي إلى قسم الشبكة. في هذه الحالة، قد يستمر بعض العملاء الذين لديهم خريطة نظام مجموعة قديمة في تنفيذ عمليات القراءة على OSD هذا بينما قد تغير الخريطة المحدثة OSD المسؤول عن مجموعة الموضع هذه. تذكر أن هذا سيناريو فشل تم إبرازه مسبقا في مناقشتنا لنظرية CAP. ستكون نافذة عدم التناسق هذه موجودة دائما في هذه الحالة. تسعى RADOS إلى التخفيف من تأثير هذا السيناريو عن طريق مطالبة جميع OSDs برسالة كشف أخطاء الاتصال مع النسخ المتماثلة الأخرى في فاصل زمني افتراضي مدته ثانيتين. إذا تعذر على OSD معين الوصول إلى مجموعات النسخ المتماثلة الأخرى في حد معين، فإنه سيمنع القراءات الخاصة به. بالإضافة إلى ذلك، يجب أن تتلقى عناصر OSD التي تم تعيينها لتكون الأساسي الجديد لمجموعة إيداع معينة إما إقرارا بالتسليم من مجموعة المواضع الأساسية القديمة أو تنتظر الفاصل الزمني لنبضات القلب لتفترض أن مجموعة المواضع الأساسية القديمة معطلة. بهذه الطريقة، يتم تقليل نافذة عدم التناسق المحتملة في مجموعة RADOS في وجود أقسام الشبكة.
الكشف عن الفشل والتسامح مع الخطأ في RADOS
يتم الكشف عن فشل العقدة في RADOS أثناء فشل الاتصال بين OSDs المعينة لمجموعة موضع أو بين OSDs وعقد المراقبة. إذا فشلت عقدة في الاستجابة ضمن عدد محدود من محاولات إعادة الاتصال، يتم الإعلان عن أنها ميتة. ستتبادل OSDs التي تعد جزءا من مجموعة وضع رسائل كشف أخطاء الاتصال لضمان اكتشاف حالات الفشل. يؤدي هذا إلى أخذ عقد المراقبة زمام المبادرة في تحديث خريطة نظام المجموعة وإخطار جميع العقد من خلال رسالة تحديث خريطة تزايدية. بعد تحديث خريطة نظام المجموعة، ستتبادل OSDs العناصر فيما بينها لضمان الاحتفاظ بالعدد المطلوب من النسخ المتماثلة لكل مجموعة موضع. إذا اكتشف OSD من خلال رسالة أنه تم الإعلان عن أنه ميت، فإنه سيقوم ببساطة بمزامنة المخزن المؤقت الخاص به إلى القرص ويقتل نفسه للتأكد من أن السلوك متسق.
نظام ملفات Ceph
كما هو موضح في الشكل السابق، فإن Ceph FS هي طبقة من التجريد على نظام تخزين RADOS. لا تحتوي RADOS على أي فكرة عن بيانات التعريف لعنصر ما بصرف النظر عن اسم الكائن. يسمح نظام ملفات Ceph بتخزين بيانات تعريف الملف في طبقات أعلى كائنات الملفات الفردية المخزنة في RADOS. يشرح الفيديو التالي مفهوم CephFS.
بالإضافة إلى أدوار عقدة نظام المجموعة من OSDs و Monitors، يقدم Ceph FS بيانات التعريف (MDS) الخوادم (الشكل 12). تخزن هذه الخوادم بيانات تعريف نظام الملفات (شجرة الدليل، بالإضافة إلى قوائم التحكم في الوصول والأذونات ووضعه ومعلومات الملكية والطوابع الزمنية لكل ملف).
الشكل 12: خوادم بيانات التعريف في نظام ملفات Ceph
تختلف بيانات التعريف المستخدمة من قبل Ceph FS عن بيانات التعريف المستخدمة من قبل نظام الملفات المحلي بعدة طرق. تذكر أنه في نظام الملفات المحلي، يتم وصف الملف بواسطة inode، والذي يحتوي على قائمة من المؤشرات التي تشير إلى كتل بيانات الملف. الدلائل في نظام الملفات المحلي هي ببساطة ملفات خاصة لها ارتباطات إلى inodes أخرى قد تكون دلائل أو ملفات أخرى. في Ceph FS، يحتوي عنصر الدليل في خادم بيانات التعريف على جميع inodes المضمنة بداخله.
تقسيم شجرة فرعية ديناميكية
في البداية سيكون خادم بيانات تعريف واحد مسؤولا عن بيانات التعريف بأكملها لنظام المجموعة. عند إضافة خوادم بيانات التعريف إلى نظام المجموعة، يتم تقسيم شجرة الدليل لنظام الملفات وتعيينها إلى المجموعة الناتجة من خوادم بيانات التعريف (الشكل 13). يقيس كل MDS شعبية بيانات التعريف داخل التسلسل الهرمي للدليل الخاص به باستخدام العدادات. مخطط مرجح3 يستخدم ليس فقط لتحديث عداد عقدة طرفية معينة في الدليل، ولكن أيضا لأسلاف عنصر الدليل هذا حتى الجذر. وبالتالي فإن كل MDS قادر على الاحتفاظ بقائمة نقاط الاتصال الفعالة في بيانات التعريف التي يمكن نقلها إلى MDS جديد عند إضافتها إلى نظام المجموعة.
الشكل 13: تقسيم شجرة فرعية ديناميكية في نظام ملفات Ceph
التخزين المؤقت والتسامح مع الخطأ في خوادم بيانات التعريف
عادة ما تقوم خوادم بيانات التعريف في Ceph FS بلتخزين المؤقت لمعلومات بيانات التعريف في الذاكرة وخدمة معظم الطلبات خارج الذاكرة. بالإضافة إلى ذلك، تستخدم خوادم MDS شكلا من أشكال اليومية حيث يتم إرسال التحديثات إلى RADOS ككائنات دفتر اليومية، وتتم كتابتها لكل خادم بيانات تعريف. في حالة فشل خادم بيانات التعريف، يمكن إعادة تشغيل دفتر اليومية لإعادة إنشاء جزء خادم MDS الفاشل من الشجرة على MDS جديد أو MDS موجود.
مراجع
- ويل ، إس إيه ، براندت ، إس إيه ، ميلر ، إي إل ، ومالتزان ، سي (2006). CRUSH: وضع البيانات المنسوخة نسخا متماثلا في وقائع مؤتمر ACM/IEEE لعام 2006 بشأن الحوسبة الفائقة 122
- ويل ، إس إيه ، براندت ، إس إيه ، ميلر ، إي إل ، ومالتزان ، سي (2006). Ceph: نظام ملفات موزعة قابل للتطوير وعالي الأداء وقائع الندوة السابعة حول تصميم أنظمة التشغيل وتنفيذها (OSDI) 307-320
- ويل ، إس إيه ، بولاك ، ك. ت. ، براندت ، إس إيه ، وميلر ، إي إل (2004). إدارة بيانات التعريف الديناميكية لأنظمة الملفات على نطاق بيتابايت في وقائع مؤتمر ACM/IEEE لعام 2004 بشأن الحوسبة الفائقة 4
التحقق من معرفتك
الملاحظات
هل كانت هذه الصفحة مفيدة؟
لا
هل تحتاج إلى مساعدة مع هذا الموضوع؟
هل تريد محاولة استخدام Ask Learn لتوضيح هذا الموضوع أو إرشادك خلاله؟