تأسست عام 2008 · النسخة الرقمية · 19 يونيو 2026

SMB IT Journal

مورد تقنية المعلومات للشركات الصغيرة

العربية
التخزين

أداء RAID العملي

اختيار مستوى RAID هو تمرين في الموازنة بين عوامل كثيرة تشمل التكلفة والموثوقية والسعة والأداء بالطبع. قد يصعب فهم أداء RAID، ولا سيما أن مستويات RAID المختلفة تستخدم تقنيات مختلفة وتتصرف بشكل مختلف إلى حدٍّ ما في بعض الحالات. في هذه المقالة أريد استكشاف مستويات RAID الشائعة RAID 0 و5 و6 و10 لرؤية كيف يتباين الأداء فيما بينها.

لأغراض هذه المقالة، سيُعتبَر RAID 1 مجموعةً فرعيةً من RAID 10. وهذه طريقة مفيدة في الغالب للتفكير في RAID 1 - باعتباره ببساطة مصفوفة RAID 10 بزوج مرايا فردي وحيد. بما أن RAID 1 هو فعلًا RAID 10 بزوج فردي ويتصرف كذلك، فإن هذا يعمل بروعة في جعل فهم أداء RAID سهلًا لأنه يندرج ببساطة في منحنى أداء RAID 10.

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

لتسهيل مناقشة الأداء نحتاج إلى تعريف بعض المصطلحات لأننا سنعمل مع بعض المعادلات. في نقاشاتنا سنستخدم N لتمثيل العدد الإجمالي للأقراص، التي كثيرًا ما تُسمّى spindles، في مصفوفتنا وسنستخدم X للإشارة إلى أداء كل قرص منفردًا. يُتيح لنا هذا الحديثَ من حيث الأداء النسبي كعامل من أداء القرص مما يسمح لنا بالتجريد من المصفوفة وعدم التفكير من حيث IOPS المطلق. هذا مهم لأن IOPS كثيرًا ما يصعب تحديده، لكن يمكننا مقارنة الأداء بصورة هادفة بالحديث عنه بالنسبة إلى الأقراص الفردية داخل المصفوفة.

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

RAID معقّد وعوامل كثيرة تؤثر في الأداء النهائي. أحدها هو تطبيق نظام RAID ذاته. قد يُسبّب تطبيق رديء كمونًا (latency) أو قد يُخفق في الاستفادة من الأقراص المتاحة (كأن تقرأ مصفوفة RAID 1 من قرص واحد فقط بدلًا من كليهما في آنٍ معًا!). لا توجد طريقة سهلة لمراعاة القصور في تطبيقات RAID المحددة لذا علينا افتراض أن جميعها تعمل في حدود المواصفات، كما يفعل بالفعل أي نظام RAID للمؤسسات. أنظمة RAID الهوائية والمخصصة للمستهلكين هي في المقام الأول ما يُخفق في تحقيق ذلك.

لبعض أنواع RAID أيضًا كميات هائلة من الحمل الحسابي المرتبط بها في حين ليس لأنواع أخرى ذلك. مستويات RAID التكافئية في الأساس تستلزم معالجة ثقيلة لمعالجة عمليات الكتابة مع مستويات مختلفة لها كميات مختلفة من الحساب اللازم لكل عملية. هذا يُدخل كمونًا لكنه لا يُقلّص الإنتاجية. سيتفاوت هذا الكمون مع ذلك بحسب تطبيق مستوى RAID وكذلك بحسب قدرة المعالجة للنظام المعني. سيستخدم RAID العتادي شيئًا كمعالج متعدد الأغراض (كثيرًا ما يكون معالج Power أو ARM RISC) أو ASIC مخصصًا لمعالجة هذا، في حين يعهد RAID البرمجي بهذا إلى معالج الخادم ذاته. في الغالب يكون معالج الخادم أسرع فعلًا هنا لكنه يستهلك موارد النظام. يمكن أن تكون ASICs سريعة جدًا لكنها مكلفة الإنتاج. يؤثر هذا الكمون على أداء التخزين لكن يصعب التنبؤ به وقد يتراوح من اسمي إلى دراماتيكي. لذا سأُشير إلى أثر الكمون النسبي مع كل مستوى RAID لكن لن أحاول قياسه. في معظم حسابات أداء RAID يُتجاهل هذا الكمون لكن من المهم فهم أنه موجود وقد يؤثر، حسب إعداد المصفوفة، تأثيرًا ملحوظًا على عبء العمل.

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

عوامل كحجم شريط البيانات (stripe size) تؤثر في الأداء أيضًا، بالطبع، لكن بما أنها قابلة للإعداد وليست سمةً جوهرية في أي مستوى RAID سأتجاهلها هنا. ليست عاملًا عند اختيار مستوى RAID نفسه، بل فقط عند إعداده بعد اختياره.

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

نقيس أداء التخزين أساسًا بـ IOPS. تعني IOPS عمليات الإدخال/الإخراج في الثانية (نعم، أعلم أن الأحرف لا تتوافق جيدًا، لكنه ما هو). كذلك أستخدم مصطلحَي RIOPS لـ IOPS القراءة وWIOPS لـ IOPS الكتابة وBIOPS لـ IOPS المدمجة التي تأتي بنسبة 80/20 أو أيٍّ كان. كثير من الناس يتحدثون عن أداء التخزين برقم IOPS واحد. عند فعل ذلك يعنون عادةً IOPS المدمجة عند 50/50. غير أن نادرًا ما يعمل أي عبء عمل عند 50/50 لذا يمكن أن يكون هذا الرقم مضلِّلًا للغاية. رقمان، RIOPS وWIOPS، هما ما يلزم لفهم الأداء ويمكن استخدام كليهما معًا لإيجاد أي مزيج IOPS مطلوب. على سبيل المثال، مزيج 50/50 بسيط مثل (RIOPS * .5) + (WIOPS * .5). أما مزيج 80/20 الأكثر شيوعًا فسيكون (RIOPS * .8) + (WIOPS * .2).

الآن بعد أن حددنا بعض المعايير وفهمنا الخلفية سندخل في مستويات RAID ذاتها ونرى كيف يتفاوت الأداء بينها.

لجميع مستويات RAID، يُحسَب رقم IOPS القراءة باستخدام NX. هذا بالطبع لا يأخذ في الاعتبار أرقام الحمل الاسمية التي ذكرتها أعلاه. هذا رقم «أفضل حالة» لكن الرقم الفعلي قريب جدًا لدرجة أن استخدام هذه المعادلة أمر عملي للغاية. نأخذ عدد الأقراص (N) ونضربه في أداء IOPS لقرص منفرد (X). ضع في اعتبارك أن الأقراص كثيرًا ما تتباين في أداء القراءة والكتابة لذا احرص على استخدام تقييم IOPS القراءة للقرص أو سرعته المُختبَرة لحساب IOPS القراءة وتقييم IOPS الكتابة أو سرعته المُختبَرة لحساب IOPS الكتابة.

RAID 0

RAID 0 هو أسهل مستويات RAID للفهم لأنه لا يوجد فعليًا حمل زائد للقلق بشأنه، ولا موارد تُستهلك لتشغيله وكلٌّ من القراءة والكتابة تستفيدان بالكامل من كل قرص في كل الأوقات. لذا لـ RAID 0 معادلة أداء الكتابة بسيطة جدًا: NX. RAID 0 هو دائمًا مستوى RAID الأعلى أداءً.

مثال على ذلك مصفوفة RAID 0 بثمانية أقراص. إذا كان أداء قرص منفرد في المصفوفة 125 IOPS فحسابنا سيكون من N = 8 وX = 125 لذا 8 * 125 تُعطي 1,000 IOPS. بما أن IOPS القراءة والكتابة متساويتان هنا فهو بالغ البساطة إذ نحصل على 1K RIOPS و1K WIOPS و1K مع أي مزيج منهما. بسيط للغاية. لو لم نعرف IOPS المطلقة لقرص منفرد يمكننا الإشارة إلى RAID 0 بثمانية أقراص بأنه يُقدّم 8X IOPS مدمجة.

RAID 10

RAID 10 هو ثاني أبسط مستويات RAID في الحساب. لأن RAID 10 هو شريط RAID 0 من مجموعات المرايا، لا يوجد حمل زائد للقلق بشأنه من الشريط لكن كل مرآة يجب أن تكتب نفس البيانات مرتين لإنشاء المرايا. هذا يُقلّص أداء الكتابة إلى النصف مقارنةً بمصفوفة RAID 0 بنفس عدد الأقراص. مُعطيًا لنا معادلة أداء الكتابة بكل بساطة: NX/2 أو .5NX.

تجدر الإشارة إلى أنه بنفس السعة، بدلًا من نفس عدد الأقراص، يتمتع RAID 10 بنفس أداء الكتابة لـ RAID 0 لكن بضعف أداء القراءة - ببساطة لأنه يستلزم ضعف عدد الأقراص لمطابقة نفس السعة.

لذا فإن مصفوفة RAID 10 بثمانية أقراص تُعطي N = 8 وX = 125 ويخرج حسابنا الناتج بـ (8 * 125)/2 وهو 500 WIOPS أو 4X WIOPS. المزيج 50/50 سيُفضي إلى 750 IOPS مدمجة (1,000 IOPS قراءة و500 IOPS كتابة.)

هذه المعادلة تنطبق على RAID 1 وRAID 10 وRAID 100 وRAID 01 على حدٍّ سواء.

الخيارات غير الشائعة كالمرايا الثلاثية في RAID 10 ستُغيّر عقوبة الكتابة هذه. RAID 10 بمرايا ثلاثية سيكون NX/3 مثلًا.

RAID 5

رغم أن RAID 5 مُهمَل ولا ينبغي استخدامه في المصفوفات الجديدة إلا أنني أُدرجه هنا لأنه مستوى RAID معروف وشائع الاستخدام ويجب فهم أداءه. RAID 5 هو الأساسي من بين مستويات RAID التكافئية الحديثة. RAID 2 و3 و4 لم تعد موجودة في أنظمة الإنتاج لذا لن نتناول أداءها هنا. RAID 5، رغم أنه غير مُوصى به للاستخدام اليوم، هو أساس مستويات RAID التكافئية الحديثة الأخرى لذا يهمّ فهمه.

يُضيف RAID التكافئي حاجةً معقدة نوعًا ما للتحقق من التكافؤ وإعادة كتابته مع كل كتابة تصل إلى القرص. هذا يعني أن مصفوفة RAID 5 ستضطر إلى قراءة البيانات وقراءة التكافؤ وكتابة البيانات وأخيرًا كتابة التكافؤ. أربع عمليات لكل عملية فعلية واحدة. هذا يُعطينا عقوبة كتابة لـ RAID 5 تساوي أربعة. لذا معادلة أداء كتابة RAID 5 هي NX/4.

لذا باتباع مثال الثمانية أقراص حيث IOPS كتابة قرص منفرد 125 سنحصل على الحساب التالي: (8 * 125)/4 أو 2X IOPS كتابة التي تساوي 250 WIOPS. في مزيج 50/50 سيُفضي ذلك إلى 625 IOPS مدمجة.

RAID 6

RAID 6، بعد RAID 10، هو على الأرجح المستوى الأكثر شيوعًا والأكثر فائدةً في الاستخدام اليوم. RAID 6 مع ذلك مبني على RAID 5 ولديه مستوى إضافي من التكافؤ. هذا يجعله أكثر أمانًا بدرجة دراماتيكية من RAID 5 وهو أمر بالغ الأهمية، لكنه يُفرض أيضًا عقوبة كتابة دراماتيكية إذ تستلزم كل عملية كتابة أن تقرأ الأقراص البيانات وتقرأ التكافؤ الأول وتقرأ التكافؤ الثاني وتكتب البيانات وتكتب التكافؤ الأول ثم أخيرًا تكتب التكافؤ الثاني. هذا يُفضي إلى عقوبة كتابة ستة أضعاف وهو أمر دراماتيكي للغاية. لذا معادلتنا هي NX/6.

مكمِّلًا مثالنا نحصل على (8 * 125)/6 التي تُعطي ~167 IOPS كتابة أو 1.33X. في مثالنا للمزيج 50/50 هذا أداء 583.5 IOPS مدمجة. كما ترى، تُسبّب كتابات التكافؤ انخفاضًا سريعًا جدًا في أداء الكتابة وانخفاضًا ملحوظًا في الأداء المدمج.

RAID 7 (المعروف أيضًا بـ RAID 5.3 أو RAID 7.3)

RAID 7 هو مستوى RAID غير معياري نسبيًا ذو تكافؤ ثلاثي مبني على التكافؤ الفردي لـ RAID 5 والتكافؤ المزدوج الحالي لـ RAID 6. التطبيق الوحيد الحالي لـ RAID 7 هو RAIDZ3 في ZFS. لأن RAID 7 يحتوي على جميع حمل RAID 5 وRAID 6 بالإضافة إلى الحمل الإضافي لمكوّن التكافؤ الثالث فلدينا عقوبة كتابة مذهلة ثمانية أضعاف. لذا معادلتنا لإيجاد أداء كتابة RAID 7 هي NX/8.

في مثالنا سيعني ذلك أن (8 * 125)/8 تُعطي 125 IOPS كتابة أو 1X. لذا بثمانية أقراص في مصفوفتنا سنحصل فقط على أداء كتابة قرص منفرد قائم بذاته. هذا حمل زائد ملحوظ. IOPS المدمجة 50/50 ستُعطي 562.5 فقط.

RAID المعقّد

يمكن إيجاد مستويات RAID المعقدة أو المتداخلة كـ RAID 50 و60 و61 و16 وغيرها باستخدام المعلومات أعلاه وتحليل RAID إلى مكوناته وتطبيق كل منها باستخدام الصِّيَغ الواردة أعلاه. لا توجد صيغة بسيطة لهذه المستويات لأن لها إعدادات متفاوتة. من الضروري تحليلها إلى مكوناتها وتطبيق الصِّيَغ مرات عدة.

RAID 60 باثني عشر قرصًا ومجموعتَي ستة أقراص كل منها 150 IOPS سيُنجَز بـ RAID 6 مزدوج. سيكون NX لـ RAID 0 حيث N يساوي اثنين (لمصفوفتَي RAID 6) وX هو الأداء الناتج لكل RAID 6. كل مجموعة RAID 6 ستكون (6 * 150)/6. لذا المصفوفة الكاملة ستكون 2((6 * 150)/6). التي تُعطي 300 IOPS كتابة.

المثال ذاته أعلاه لكن مُعدًّا كـ RAID 61، زوج متطابق من مصفوفتَي RAID 6، سيكون أداءً مماثلًا لكل مصفوفة RAID 6 لكن مطبَّقًا على معادلة RAID 1 التي هي NX/2 (حيث X هو الأداء الناتج لكل مصفوفة RAID). لذا المعادلة النهائية ستكون 2((6 * 150)/6)/2 لتُعطي 150 IOPS كتابة من اثني عشر قرصًا.

الأداء كعامل من السعة

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

لكن هذه ليست دائمًا المقاربة الجيدة، لأننا عادةً ننظر إلى RAID كعامل من السعة لا من الأداء أو عدد الأقراص. سيكون نادرًا، لكن ممكنًا بالتأكيد، أن يأخذ أحدٌ في الاعتبار مصفوفة RAID 6 بثمانية أقراص في مقابل مصفوفة RAID 10 بثمانية أقراص. بين الحين والآخر سيحدث هذا بسبب قيد في الهيكل أو سبب مماثل. لكن عادةً تُنظَر مصفوفات RAID من منظور إجمالي سعة المصفوفة (أي السعة القابلة للاستخدام) لا من منظور عدد الأقراص أو الأداء أو أي عامل آخر. ومن الغريب إذن أن نُحوّل اعتبارنا لأداء RAID إلى دالة لعدد الأقراص.

لو غيّرنا وجهة نظرنا ومحورنا على السعة كعامل مشترك، مع افتراض بقاء سعة القرص الفردي وأدائه (X) ثابتَين بين الخيارات المقارَنة، نصل إلى مشهد مختلف تمامًا للأداء. بفعل ذلك نرى مثلًا أن RAID 0 لم يعد مستوى RAID الأعلى أداءً وأن أداء القراءة يتباين بشكل دراماتيكي بدلًا من كونه ثابتًا.

السعة أمر متقلّب لكن يمكننا تقطيرها إلى عدد الأقراص اللازمة للوصول إلى السعة المرغوبة. هذا يجعل هذا النقاش أكثر يسرًا. خطوتنا الأولى إذن هي تحديد عدد الأقراص اللازمة للسعة الخام. لو احتجنا سعة 10TB ونستخدم أقراصًا بسعة 1TB، سنحتاج إلى عشرة أقراص مثلًا. أو لو احتجنا 3.2TB ونستخدم أقراصًا بسعة 600GB سنحتاج إلى ستة أقراص. سنُشير، خلافًا لما سبق، إلى عدد أقراصنا بـ R. كما في السابق، يُمثَّل أداء القرص الفردي بـ X. (يُستخدم R هنا للدلالة على أن هذا هو عدد أقراص السعة الخام، لا إجمالي عدد الأقراص.)

RAID 0 يبقى بسيطًا، الأداء ما زال RX إذ لا أقراص إضافية. كلٌّ من IOPS القراءة والكتابة هو ببساطة NX.

RAID 10 لديه RX IOPS كتابة لكن 2RX IOPS قراءة. هذا دراماتيكي. فجأةً عند النظر إلى الأداء كعامل من السعة الثابتة نجد أن RAID 10 لديه ضعف أداء القراءة مقارنةً بـ RAID 0!

RAID 5 يصبح أكثر تعقيدًا قليلًا. IOPS الكتابة ستُعبَّر عنها كـ ((R + 1) * X)/4. أما IOPS القراءة فتُعبَّر عنها كـ ((R +1) * X).

RAID 6، كما نتوقع، يتبع النمط الذي يرسمه RAID 5. IOPS كتابة RAID 6 هي ((R + 2) * X)/6. وتُعبَّر IOPS القراءة عنها كـ ((R + 2) * X).

RAID 7 يسير في الاتجاه ذاته. IOPS كتابة RAID 7 ستكون ((R + 3) * X)/8. وIOPS القراءة هي ((R + 3) * X).

هذه الزاوية تُغيّر طريقة تفكيرنا في الأداء، وعند النظر إلى أداء القراءة فقط يُصبح RAID 0 أبطأ مستوى RAID لا أسرعه ويُصبح RAID 10 الأسرع لكلٍّ من القراءة والكتابة بصرف النظر عن قيم R وX!

لو أخذنا مثالًا واقعيًا من 10 أقراص بسعة 2TB لتحقيق سعة قابلة للاستخدام 20TB مع 100 IOPS أداءً لكل قرص مع افتراض مزيج 50/50، فالنتيجة ستكون: RAID 0 بـ 1,000 IOPS مدمجة، RAID 10 بـ 1,500 IOPS مدمجة (2,000 RIOPS / 1,000 WIOPS)، RAID 5 بـ 687.5 IOPS مدمجة (1,100 RIOPS / 275 WIOPS)، RAID 6 بـ 700 IOPS مدمجة (1,200 RIOPS / 200 WIOPS) وأخيرًا RAID 7 بـ 731.25 IOPS مدمجة (1,300 RIOPS / 162.5 WIOPS.) RAID 10 هو الفائز الكبير هنا.

الكمون وأثر النظام مع RAID البرمجي

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

الأثر حتى على نظام صغير جدًا مع RAID كبير ما زال صغيرًا جدًا لكن يمكن قياسه وينبغي مراعاته، ولو بشكل طفيف. الكمون وأثر النظام مرتبطان ارتباطًا مباشرًا ببعضهما.

لا توجد طريقة بسيطة لتحديد الكمون وأثر النظام لمستويات RAID المختلفة إلا بهذه الطريقة: RAID 0 وRAID 10 لا يوجد لهما فعليًا أي كمون أو أثر، وRAID 5 له بعض الكمون والأثر، وRAID 6 له ضعف الكمون والأثر الحسابي تقريبًا لـ RAID 5، وRAID 7 له ثلاثة أضعاف الكمون والأثر الحسابي لـ RAID 5.

في كثير من الحالات سيكون هذا الكمون وأثر النظام صغيرَين جدًا لدرجة أنهما لا يمكن قياسهما بأدوات النظام القياسية ومع ازدياد قوة المعالجات الحديثة سيستمر الكمون والأثر في التقلّص. اعتُبر الأثر هامشيًا لأنظمة RAID 5 وRAID 6 حتى على العتاد الميسور منخفض الجودة منذ عام 2001 تقريبًا. لكن من الممكن على الأنظمة المُحمَّلة بشدة ذات قدر كبير من نشاط RAID التكافئي أن يكون هناك تنافس بين نظام RAID الفرعي والعمليات الأخرى التي تستلزم موارد النظام.

مرجع: The IT Hollow - فهم عقوبة RAID

نُشر المقال أصلًا في مدونة StorageCraft - أداء RAID.

موسوم بـperformance raid

إعلان

SMB IT Journal — the IT resource for small business