أكسب عمولة إذا سجلت أو اشتريت من روابط الأفلييت في هذي الصفحة، بدون أي تكلفة إضافية عليك.
هوم لاب · شرح · بقلم محمد المهنا · آخر تحديث
شرح ZFS RAIDZ
أنا ما أشغل ZFS. الـ NAS حقي Synology على SHR-1 لأني أبغى جهاز ممل يشتغل وخلاص، مو صندوق أبنيه بيدي وأجالسه. بس إذا أنت تبني الـ pool حقك بنفسك، الـ ZFS هو اللي أوجهك له. الـ RAIDZ هو الـ parity RAID المدمج في ZFS، ويعيش داخل نظام الملفات مو تحته. فالـ ZFS يعمل checksum لكل بلوك ويصلح التلف الصامت أثناء الـ scrub. الـ RAID 5 العتادي العادي ما ينتبه لهالتعفن أصلا. فيه ثلاثة مستويات، تتحدد بعدد أقراص الـ parity اللي يحملها كل vdev.
RAID ضد RAIDZ: وش المختلف فعليا
الناس تكتب "RAID vs RAIDZ" وهي تتوقع تقنيتين متنافستين. هما نفس الفكرة، parity موزع على الأقراص، مع تغيير هيكلي واحد: الـ RAIDZ مبني داخل ZFS، فهو يشوف بياناتك الفعلية، بينما كرت RAID عتادي أو mdadm في لينكس يقعد تحت وما يشوف إلا بلوكات. عشان كذا الـ RAIDZ يقدر يفرق بين بلوك سليم وبلوك متلف بصمت والـ RAID العادي ما يقدر. هذا الموضوع كله في مكان واحد.
| RAID تقليدي (5/6) | ZFS RAIDZ | |
|---|---|---|
| وين يعيش | تحت نظام الملفات | داخل نظام الملفات |
| يمسك التلف الصامت | لا | نعم، checksum لكل بلوك |
| يعالج نفسه في الـ scrub | لا | نعم، يعيد بناء البلوكات التالفة من الـ parity |
| ثغرة كتابة RAID 5 | مكشوف | مقفلة (شرائط متغيرة العرض) |
| parity أحادي | RAID 5 | RAIDZ1 |
| parity مزدوج | RAID 6 | RAIDZ2 |
| parity ثلاثي | ما فيه | RAIDZ3 |
| يكبر قرص بقرص | غالبا نعم | بس من OpenZFS 2.3، والبيانات القديمة تحتفظ بنسبتها |
لاختيار المستوى، طابقهم واحد لواحد: RAIDZ1 هو RAID 5، و RAIDZ2 هو RAID 6، نفس تحمل الأعطال في الحالتين. والـ RAIDZ3 ما له مكافئ عتادي. اللي يشتريه لك الـ ZFS هو الـ checksums والمعالجة الذاتية، مو تكرار إضافي. المستويات هي وين تختار فعليا.
RAIDZ1 و RAIDZ2 و RAIDZ3
- RAIDZ1 يحتفظ بقرص parity واحد وينجو من فشل قرص واحد. المساحة القابلة للاستخدام تقريبا (N − 1) × أصغر قرص.
- RAIDZ2 يحتفظ بقرصين parity وينجو من فشلين. المساحة تقريبا (N − 2) × أصغر قرص. وهذا الافتراضي الشائع للهوم لاب.
- RAIDZ3 يحتفظ بثلاثة أقراص parity وينجو من ثلاثة أعطال، للـ vdevs العريضة اللي أوقات إعادة بنائها طويلة.
ليش "تقريبا"
الـ ZFS يخصص في سجلات (records) ويبطن الشرائط عشان تظل محاذية لـ ashift حق الـ pool. مع سجلات صغيرة أو أعداد أقراص فردية، المساحة الحقيقية تنزل كم بالمية تحت تقدير (N − parity) البسيط. خطط بالتقدير، وبعدين افحص الـ pool الحي بعد ما ينبني. ولا تفصّل شراءك على آخر تيرابايت وتتوقعه يكون موجود.
مساحة RAIDZ القابلة للاستخدام حسب المستوى
هذا التقدير البسيط لـ pool من ست فتحات بأقراص 12 تيرا، التجهيزة اللي كثير هوم لابات تنتهي لها. المساحة الحقيقية تقعد كم بالمية تحت هذا لسبب التبطين اللي فوق، فتعامل معه كرقم تخطيط، مو وعد.
| المستوى | أقراص parity | ينجو من | المساحة (6 × 12 تيرا) | الكفاءة |
|---|---|---|---|---|
| RAIDZ1 | 1 | قرص واحد | 60 تيرا | 83% |
| RAIDZ2 | 2 | قرصين | 48 تيرا | 67% |
| RAIDZ3 | 3 | 3 أقراص | 36 تيرا | 50% |
بدل بعدد وحجم أقراصك أنت في حاسبة التخزين (بالإنجليزي) لحساب الـ pool حقك بالضبط.
أيهم تختار؟
RAIDZ2. لـ pool هوم لاب عادي من 4 إلى 8 أقراص كبيرة، الـ parity المزدوج هو الافتراضي العاقل، وبقولها بوضوح. قرص 12 تيرا أو أكبر حديث ياخذ وقت طويل في إعادة البناء، وأثناءها أنت تقرأ كل قرص ثاني من أوله لآخره. إذا قرص ثاني طاح في هالنافذة، الـ RAIDZ1 خلص وبياناتك راحت. خطأ القراءة في هالنافذة ألطف على ZFS، يكلفك الملفات القاعدة تحت القطاعات التالفة مو الـ pool كامل، بس هذي برضو بيانات ما ترجعها بدون نسخة احتياطية. الـ RAIDZ2 ينجو من الاثنين. الـ RAIDZ1 تمام بس على أقراص صغيرة أو بيانات غير حرجة لها نسخة احتياطية بعد، والـ RAIDZ3 للـ vdevs العريضة اللي نافذة إعادة بنائها تطول لدرجة تبغى معها قرص هامش ثالث. شوف ليش الـ parity الأحادي خطر مع الأقراص الكبيرة (بالإنجليزي) لحساب إعادة البناء وأخطاء القراءة الفعلي.
وولا شي من هذا يحل اللي فعلا يمسك الناس. الـ RAID مو نسخة احتياطية. التكرار يخليك شغال خلال قرص ميت، وما يسوي شي لملف انحذف أو كتابة خربانة أو الصندوق كله مات. أنا أشغل parity أحادي بنفسي وأنام مرتاح، والسبب الوحيد إني أنام مرتاح هو النسخة الاحتياطية الخارجية اللي وراه. خلك واحدة.
كم عرض تبني الـ vdev
الشي الوحيد في ZFS اللي تخططه قبل الشراء هو عرض الـ vdev. الـ pool ينبني من vdevs، وأنت تحدد الـ parity لكل vdev، مو لكل pool. أغلب الناس يخلون الـ RAIDZ vdev بين 6 و 12 قرص ويكبرون الـ pool بإضافة vdev ثاني، مو بتضخيم vdev واحد. ولسنين ما كان ممكن أصلا تضيف قرص واحد لـ RAIDZ vdev قائم؛ OpenZFS 2.3 أضافت توسعة RAIDZ، بس البيانات المكتوبة قبل التوسعة تحتفظ بنسبة الـ parity القديمة إلى أن تنكتب من جديد. فاختر العرض اللي تبغاه من البداية. ولا تعتمد على التكبير قرص بقرص بالطريقة اللي يسمح فيها SHR أو unRAID.
أسئلة شائعة
وش الفرق بين RAID و RAIDZ؟
الـ RAIDZ هو parity RAID حق ZFS، مبني داخل نظام الملفات، بينما الـ RAID التقليدي (كرت عتادي أو mdadm) يقعد تحت نظام الملفات. الاثنين يوزعون الـ parity على الأقراص وينجون من أعطال الأقراص بنفس الطريقة: RAIDZ1 يطابق RAID 5، و RAIDZ2 يطابق RAID 6. الفرق إن ZFS يعمل checksum لكل بلوك ويصلح التلف الصامت في الـ scrub، والـ RAID العادي ما يقدر لأنه ما يشوف بياناتك، بس البلوكات.
وش الفرق بين RAIDZ1 و RAIDZ2 و RAIDZ3؟
يختلفون بعدد أقراص الـ parity اللي يحملها كل vdev وبالتالي كم عطل ينجون منه. الـ RAIDZ1 يحتفظ بقرص parity واحد وينجو من عطل واحد، والـ RAIDZ2 باثنين وينجو من اثنين، والـ RAIDZ3 بثلاثة وينجو من ثلاثة. والمساحة القابلة للاستخدام تقريبا (N − parity) ضرب أصغر قرص.
أي مستوى RAIDZ أستخدم؟
RAIDZ2 لأي pool عادي من 4 إلى 8 أقراص كبيرة. الـ parity المزدوج ينجو من فشل قرص ثاني خلال إعادة البناء الطويلة اللي يحتاجها قرص حديث كبير، والـ RAIDZ1 لا. استخدم RAIDZ1 بس على أقراص صغيرة أو بيانات غير حرجة لها نسخة احتياطية. والـ RAIDZ3 للـ vdevs العريضة اللي نافذة إعادة بنائها طويلة بما يكفي تبغى معها قرص هامش ثالث.
ليش RAIDZ أفضل من RAID 5 عتادي عادي؟
الـ RAIDZ يعيش داخل نظام الملفات، فالـ ZFS يعمل checksum لكل بلوك ويصلح التلف الصامت أثناء الـ scrub. الـ RAID 5 العتادي العادي ما ينتبه لهالتعفن أصلا. هذا السبب الرئيسي لتوجيه أي pool جديد تبنيه بنفسك نحو ZFS. وإذا ما تبغى تبني وتجالس pool أصلا، Synology على SHR-1 مع نسخة احتياطية خارجية هو طريق الجهاز الممل، وهو اللي أشغله بنفسي.
هل RAIDZ هو نفسه RAID 5 أو RAID 6؟
الـ RAIDZ1 هو parity أحادي، مكافئ RAID 5 عند ZFS. والـ RAIDZ2 هو parity مزدوج، مكافئ RAID 6. والـ RAIDZ3 ما له مكافئ في الـ RAID العتادي. عدد الـ parity يتطابق، بس ZFS يضيف checksums لكل بلوك ومعالجة ذاتية في الـ scrub، والـ RAID العتادي ما عنده هذا.
ليش المساحة القابلة للاستخدام مجرد تقدير؟
الـ ZFS يخصص في سجلات ويبطن الشرائط عشان تظل محاذية للـ ashift حق الـ pool. مع سجلات صغيرة أو أعداد أقراص فردية، المساحة الحقيقية ممكن تنزل كم بالمية تحت تقدير (N − parity) البسيط. خطط بالتقدير، وأكّد على الـ pool الحي.
وش هو OpenZFS؟
الـ OpenZFS هو النسخة مفتوحة المصدر من ZFS اللي الكل يشغلها اليوم فعليا: هو اللي يشحن في TrueNAS و Proxmox وأغلب تجهيزات لينكس و FreeBSD. الـ "ZFS" بدأ عند Sun لسولاريس؛ والـ OpenZFS هو مشروع المجتمع اللي كمله عبر المنصات بعدها، وهو وين تنزل مزايا مثل توسعة RAIDZ (أضيفت في OpenZFS 2.3). لما شرح يقول ZFS أو RAIDZ لـ NAS منزلي، يقصد OpenZFS.