قطعة الاحتياط الساخنة أم فوضى ساخنة
النهج الشائع لإضافة طبقة من الأمان إلى RAID هو توفير محرك (محركات) احتياطية حتى يُقلَّل وقت استبدال المحرك المعطوب. أقصى صور هذا النهج هو ما يُعرف بـ“قطعة الاحتياط الساخنة” – وهي محرك احتياطي موجود فعلياً داخل المصفوفة لكنه غير مستخدم حتى تكتشف المصفوفة عطباً في أحد المحركات، فيقوم النظام آنذاك بتعطيل المحرك المعطوب وتفعيل قطعة الاحتياط تلقائياً، تماماً كما لو أن إنساناً سحب المحرك المعطوب وأدخل المحرك الجديد مكانه، مما يتيح بدء عملية إعادة بناء المصفوفة (resilver) في أقرب وقت ممكن. قد يُقلِّص هذا الوقت اللازم لاستبدال المحرك من ساعات أو أيام إلى ثوانٍ، وقد يوفر نظرياً زيادة هائلة في مستوى الأمان.
أودّ أولاً أن أتناول ما أعدّه خطأً في تسميات المصطلحات. ما نسميه قطعة احتياط ساخنة ينبغي في رأيي أن يُسمى قطعة احتياط دافئة، لأنها جاهزة للعمل لكنها لا تحوي البيانات اللازمة للاستخدام الفوري. أما المحرك الاحتياطي المخزَّن خارج الهيكل والذي يستلزم تدخلاً بشرياً لتبديله يدوياً فهو قطعة احتياط باردة. كي تكون قطعة الاحتياط ساخنة حقاً يجب أن يكون المحرك محشواً بالبيانات وبذلك يكون عضواً فاعلاً في مصفوفة RAID بوجه ما. لدى Red Hat مقال جيد يوضح كيف تنطبق هذه المصطلحات على مواقع التعافي من الكوارث للرجوع إليه. هذا التمييز مهم لأن ما نسميه قطعة احتياط ساخنة لا يحتوي بيانات ولا يحل محل المحرك المعطوب فوراً، بل يبدأ على الفور في عملية استعادة المحرك المفقود – وهذا فارق جوهري.
للحفاظ على وضوح المفاهيم، سأشير من الآن فصاعداً إلى ما يسميه الموردون قطعة احتياط ساخنة بـ“قطعة احتياط دافئة”. سيتضح المغزى من ذلك قريباً.
ثمة قلقان رئيسيان من قطع الاحتياط الدافئة: الأول هو عدم جدواها الفعلية في معظم حالات الاستخدام، والثاني هو خطر “التدمير التلقائي للمصفوفة”.
يتعامل معظم الناس مع مفهوم قطعة الاحتياط الدافئة باعتباره وسيلة للحد من المخاطر العالية لفشل محرك ثانوي في مصفوفة RAID 5 ذات التكافؤ الفردي. تحمي مصفوفات RAID 5 فقط ضد فشل قرص واحد داخل المصفوفة. بمجرد فشل قرص واحد تبقى المصفوفة دون أي تكافؤ وأي عطب إضافي يؤدي إلى فقدان المصفوفة كلياً. يُختار RAID 5 لأنه منخفض التكلفة نسبةً للسعة المتاحة ويضحّي بالموثوقية لتحقيق هذه الجدوى الاقتصادية. ولأن RAID 5 محفوف بالمخاطر مقارنةً بخيارات RAID الأخرى كـ RAID 6 أو RAID 10 فإنه من الشائع تطبيق قطعة احتياط دافئة لتقليص الوقت الذي تبقى فيه المصفوفة في حالة منتقصة، مما يتيح للمصفوفة إعادة بناء نفسها في أقرب وقت ممكن.
الخلاصة الأكثر أهمية هنا هي أن قطع الاحتياط الدافئة تُستخدم عموماً كحاجز ضد استخدام أنواع مصفوفات RAID الأقل موثوقية كإجراء لتوفير التكاليف. تشيع قطع الاحتياط الدافئة بصورة أكبر في مصفوفات RAID 5 ثم RAID 6، وكلاهما يُختار على حساب RAID 10 بسبب التكلفة لكل وحدة سعة لا بسبب الموثوقية أو الأداء. ثمة حالة واحدة تكون فيها فكرة قطعة الاحتياط الدافئة منطقية فعلاً لزيادة الموثوقية وهي RAID 10 مع قطعة احتياط دافئة، لكننا سنأتي على ذلك لاحقاً. خارج هذا السيناريو أرى أن قطع الاحتياط الدافئة تفتقر إلى المنطق في الواقع العملي.
لنبدأ بفحص RAID 1 مع قطعة احتياط دافئة. يتكون RAID 1 من محركين أو أكثر في مرآة. إضافة قطعة احتياط دافئة مفيدة لأنه إذا مات أحد أزواج المرايا ستبدأ قطعة الاحتياط الدافئة فوراً في مطابقة المحرك المتبقي وستعود محمياً في وقت قصير. هذا رائع. إلا أن ثمة عيباً بسيطاً واحداً: بدلاً من قطعة الاحتياط الدافئة كان يمكن إضافة ذلك المحرك ذاته إلى مصفوفة RAID 1 منذ البداية حيث يكون مرآةً ثالثة. بوصفه مرآةً ثالثة كان سيضيف إلى أداء المصفوفة الإجمالي محققاً تعزيزاً في أداء القراءة بنحو خمسين بالمئة مع استقرار أداء الكتابة، فضلاً عن توفير حماية فورية عند فشل محرك بدلاً من الحماية “بمجرد اكتمال إعادة المطابقة”. بذلك يكون قطعة احتياط ساخنة حقيقية لا دافئة. بالتالي دون إنفاق قرش إضافي سيكون أداء مصفوفة المحركات أفضل وموثوقيتها أعلى ببساطة بوضع المحرك الإضافي في وضعية “داخل المصفوفة” بدلاً من الجلوس دافئاً وخاملاً ينتظر وقوع الكارثة.
مع RAID 5 نشهد تحذيراً أشد وطأة من مفهوم قطعة الاحتياط الدافئة، وهنا يكون أكثر شيوعاً من أي مكان آخر. RAID 5 هو RAID ذو تكافؤ فردي مع القدرة على إعادة بناء أي محرك يفشل في المصفوفة باستخدام التكافؤ. هنا تبدأ المشاكل الحقيقية. على عكس RAID 1 حيث قد تكون عملية إعادة المطابقة سريعة جداً، فإن إعادة بناء RAID 5 (resilver) قد تستغرق وقتاً طويلاً جداً. لن تساعد قطعة الاحتياط الدافئة في حماية المصفوفة إلا بعد اكتمال عملية إعادة البناء بنجاح – وهذا كثيراً ما يستغرق ساعات طويلة وقد يمتد لأيام بل لأسابيع أو أشهر حسب حجم المصفوفة ومدى انشغالها. لو أخذنا ذلك المحرك الاحتياطي الدافئ ذاته وجعلناه عضواً في المصفوفة بشريط تكافؤ إضافي لحصلنا على RAID 6. المجموعة ذاتها من المحركات المخصصة لـ RAID 5 مع قطعة الاحتياط الدافئة ستشكّل مصفوفة RAID 6 بالسعة ذاتها تماماً. وكما في مثال RAID 1 أعلاه، سيكون هذا أشبه بامتلاك قطعة احتياط ساخنة حقيقية حيث يشارك المحرك في المصفوفة ببيانات حية بدلاً من الجلوس خاملاً ينتظر فشل محرك آخر قبل أن يبدأ في الاستحواذ. في هذا الوضع تتراجع المصفوفة عند فشل محرك إلى ما يعادل RAID 5 دون أي وقت إعادة بناء، فالمحرك الإضافي مفيد فوراً لا بعد عملية إعادة بناء طويلة محتملة. بالتالي بالمال ذاته والسعة ذاتها يكون الاختيار بين إعداد المحركات في RAID 6 بدلاً من RAID 5 مع قطعة احتياط دافئة ربحاً خالصاً.
يمكننا متابعة هذا المثال مع RAID 6 وقطعة احتياط دافئة. هذا أصعب تعريفاً قليلاً لأنه في معظم أنظمة RAID، باستثناء RAIDZ3 غير الشائع نسبياً من ZFS، لا يوجد نظام تكافؤ ثلاثي متاح يعلو RAID 6 (تخيل لو كان هناك RAID 7 مثلاً). لو كان كذلك لانطبق الحجة ذاتها المقدَّمة لـ RAID 5 مع قطعة احتياط دافئة على RAID 6 مع قطعة احتياط دافئة. في غالبية الحالات يجب على RAID 6 مع قطعة احتياط دافئة أن يثبت جدارته مقابل مصفوفة RAID 10. RAID 10 أكثر أداءً وأكثر موثوقية بكثير من مصفوفة RAID 6 لكن RAID 6 يُختار عموماً لتوفير المال مقارنةً بـ RAID 10. لكن تعويضاً لهشاشة RAID 6 يُستخدم أحياناً قطع احتياط دافئة. في بعض الحالات كمصفوفة RAID 6 صغيرة من خمسة أقراص مع قطعة احتياط دافئة يكون هذا مكافئاً دولاراً بدولار لمصفوفة RAID 10 من ستة أقراص بدون قطعة احتياط دافئة. في المصفوفات الكبيرة يصبح الوفر المالي لـ RAID 6 واضحاً لكن كلما زاد الوفر المالي زاد التباين في الخطر إذ تزيد أنظمة RAID ذات التكافؤ في المخاطرة مع حجم المصفوفة بمعدل أسرع بكثير مما تفعله أنظمة RAID القائمة على المرايا كـ RAID 10. وأي مال يُوفَّر اليوم يُكسَب على حساب خطر التعطل أو فقدان البيانات غداً.
المجال الذي تؤدي فيه قطعة الاحتياط الدافئة دوراً فعّالاً هو مصفوفة RAID 10 حيث تكون إعادة البناء عملية إعادة مطابقة مثل RAID 1 دون مخاطر التكافؤ، وحيث لا يوجد نظام RAID منطقي أعلى فوق RAID 10 كنا نحاول التوفير بالتحول إلى نظام أكثر هشاشة منه. هنا قد تكون إضافة قطعة احتياط دافئة منطقية للمصفوفات الحرجة لأنه لا توجد طريقة أكثر فعالية من حيث التكلفة للحصول على الموثوقية الإضافية ذاتها. غير أن RAID 10 موثوق للغاية دون قطعة احتياط دافئة لدرجة أن أي جهة تفكر في RAID 5 أو RAID 6 مع قطعة احتياط دافئة ستتوقف منطقياً عند RAID 10 البسيط بعد أن تكون قد تخطت مستوى الموثوقية الذي كانت تقبل به. فقط الجهات التي لا تفكر في تلك الأنظمة الأكثر هشاشة والباحثة عن الخيار الأكثر متانة ستنظر منطقياً في RAID 10 مع قطعة احتياط دافئة كحلها.
للدقة التقنية، يمكن توسيع RAID 10 لتحسين أداء القراءة وتحقيق تحسن درامي في الموثوقية (مع زيادة في التكلفة بنسبة خمسين بالمئة) بالتحول إلى مرايا RAID 1 ثلاثية الأقراص في شريط RAID 0 بدلاً من مرايا RAID 1 القياسية ثنائية الأقراص كما أظهرنا في مثال RAID 1. هذا مستوى من الموثوقية نادراً ما يُسعى إليه في الواقع العملي لكنه موجود وهو خيار متاح. عادةً ما يُقيَّد هذا بحدود عدد المحركات في هياكل المصفوفات المادية فضلاً عن منافسته الضعيفة مقارنةً ببناء مصفوفة RAID 10 ثانوية منفصلة تماماً في هيكل مختلف ثم عكسها على مستوى عالٍ مما ينشئ فعلياً RAID 101 – وهو النتيجة الفعلية لمجموعات مصيف التخزين عالية الجودة الشائعة اليوم.
القلق الثاني هو “التدمير التلقائي للمصفوفة”. يسري هذا فقط على سيناريوهات RAID ذات التكافؤ في RAID 5 وRAID 6 (أو RAID 2 وRAID 3 وRAID 4 وRAIDZ3 النادرة). مع مفهوم قطعة الاحتياط الدافئة تكمن الفكرة في أنه عند فشل محرك تُستبدل قطعة الاحتياط الدافئة تلقائياً وفورياً بواسطة وحدة تحكم المصفوفة وتبدأ عملية إعادة البناء فوراً. لو كانت عملية إعادة البناء موثوقة تماماً لكان هذا موضع ترحيب واضح. الواقع للأسف مغاير تماماً.
خلال عملية إعادة البناء تتعرض مصفوفة RAID ذات التكافؤ لخطر ظهور أخطاء القراءة غير القابلة للاسترداد (UREs). إذا حدث URE في إعادة بناء RAID ذي تكافؤ فردي (أي RAID 2 إلى 5) فإن عملية إعادة البناء تفشل وتُفقد المصفوفة كلياً. هذا أمر بالغ الأهمية لأنه لم يفشل أي محرك إضافي. بالتالي لو لم تكن قطعة الاحتياط الدافئة موجودة ما كانت إعادة البناء قد بدأت وكانت البيانات لا تزال سليمة ومتاحة – فقط أبطأ من المعتاد وعرضة لمخاطر بسيطة من فشل محرك ثانوي. معدلات URE مرتفعة جداً مع المحركات الكبيرة اليوم، وفي المصفوفات الكبيرة قد ترتفع المخاطر حتى تنتقل من “محتمل” إلى “متوقع” خلال عملية إعادة البناء الاعتيادية.
في كثير من الحالات قد تكون قطعة الاحتياط الدافئة ذاتها هي سبب فقدان البيانات لا منقذها كما يُتوقع. قد يُدمَّر مصفوفة كانت ستنجو من خلال عملية إعادة البناء قبل أن يُنبَّه الشخص المسؤول عنها حتى إلى فشل المحرك الأول. لو تدخّل الإنسان كان بإمكانه على أقل تقدير اتخاذ خطوة إجراء نسخة احتياطية جديدة من المصفوفة قبل بدء إعادة البناء عارفاً أن أحدث نسخة من البيانات ستكون متاحة في حال فشل عملية إعادة البناء. كما كان سيتيح للإنسان جدولة وقت بدء إعادة البناء ربما بانتظار انتهاء ساعات العمل أو بداية عطلة نهاية الأسبوع حين تكون المصفوفة أقل عرضة لحمل ثقيل.
يشترك RAID ذو التكافؤ المزدوج والثلاثي (RAID 6 وRAIDZ3 على التوالي) في مخاطر URE أيضاً إذ كلاهما قائم على التكافؤ. يُخففان هذه المخاطر من خلال مستويات التكافؤ الإضافية وينجحان في ذلك معظم الأحيان. تبقى المخاطر موجودة خاصةً في مصفوفات RAID 6 الكبيرة جداً لكنها تظل منخفضة نسبياً في السنوات القادمة لغالبية مصفوفات التخزين حتى تتوفر وسائط تخزين أكبر بكثير في السوق.
أكبر مشكلة مع RAID ذي التكافؤ ومخاطر URE هي أن الدافع نحو RAID ذي التكافؤ (القبول بمخاطر إضافية على سلامة البيانات لخفض التكلفة) هو الدافع ذاته الذي يرفع مخاطر URE (شراء محركات SATA المنخفضة التكلفة غير المخصصة للمؤسسات). الجهات التي تواجه RAID ذا التكافؤ تفعل ذلك عادةً مع محركات SATA كبيرة وغير مكلفة مجمعةً بذلك عاملَين بالغَي الخطورة معاً في تركيبة متفجرة. استخدام RAID 1 أو RAID 10 غير القائمَين على التكافؤ سيُزيل المشكلة كلياً، واستخدام محركات SAS المؤسسية عالية الموثوقية سيُقلص عامل الخطر بمقدار رتبة كاملة (ليست مجرد تعبير مجازي، إنه تغيير حقيقي بمقدار رتبة واحدة).
علاوةً على ذلك خلال عمليات إعادة البناء قد يتراجع الأداء في الأنظمة ذات التكافؤ تراجعاً شديداً لدرجة يعادل انقطاعاً طويل الأمد. عملية إعادة البناء لا سيما في المصفوفات الكبيرة يمكن أن تكون مكثفة جداً لدرجة أن المستخدمين النهائيين لا يستطيعون التمييز بين مصفوفة فاشلة تماماً ومصفوفة تُعيد بناءها. في الحدود القصوى يمكن أن تستغرق إعادة البناء وقتاً طويلاً جداً وتكون مزعجة لدرجة أن التكلفة على العمل قد تكون أعلى مما لو فشلت المصفوفة تماماً وأُجري استرداد من النسخة الاحتياطية بدلاً من ذلك. هذه المشكلة لا تؤثر على RAID 1 وRAID 10 مجدداً لأنهما أنظمة RAID قائمة على المرايا لا التكافؤ وعملية إعادة بنائهما بسيطة وتراجع أداء النظام خلالها ضئيل وقصير الأمد. في أقصى الحالات قد تستغرق إعادة بناء التكافؤ أسابيع أو أشهراً يبدو فيها النظام كأنه غير متصل – وفي أي لحظة خلال هذه العملية قد تظهر أخطاء URE المذكورة أعلاه مما يُنهي إعادة البناء ويُجبر على الاسترداد من النسخة الاحتياطية في كل الأحوال. (عادةً لا تستغرق إعادة البناء أسابيع لكنها تأخذ ساعات طويلة وأن تمتد لأيام ليس أمراً نادراً.)
يمكن تلخيص نظرتنا النهائية فيما يلي (مستخدمين المصطلح المتعارف عليه “قطعة الاحتياط الساخنة” مجدداً): RAID 10 بدون “قطعة احتياط ساخنة” هو دائماً تقريباً خيار أفضل من RAID 6 مع “قطعة احتياط ساخنة”. RAID 6 بدون “قطعة احتياط ساخنة” دائماً أفضل من RAID 5 مع “قطعة احتياط ساخنة”. RAID 1 مع عضو مرايا إضافي دائماً أفضل من RAID 1 مع “قطعة احتياط ساخنة”. فمهما كان مستوى RAID مع قطعة احتياط ساخنة الذي اخترته، ارتفع مستوى واحداً في موثوقية RAID وأسقط “قطعة الاحتياط الساخنة” لتحقق أقصى أداء وموثوقية بتكلفة مساوية أو شبه مساوية.
كانت قطع الاحتياط الدافئة مثلها مثل RAID ذي التكافؤ في أوج صلاحيتها في حقبة ما. في الواقع عندما كان RAID ذو التكافؤ لا يزال منطقياً للاستخدام الواسع – حين كانت أخطاء URE نادرة الحدوث وأسعار الأقراص مرتفعة – كانت محركات الاحتياط الدافئة منطقية أيضاً. كانا متوائمَين، إذ عندما كان أحدهما منطقياً كان الآخر كذلك في الغالب. ما يُغفَل كثيراً هو أنه مع تراجع فعالية RAID ذي التكافؤ لا سيما RAID 5 فإنه جرَّ قطعة الاحتياط الدافئة معه بأساليب غير متوقعة.
