تكوين برنامج RAID على لينكس

إنه سيناريو شائع لاستخدام برنامج RAID على أجهزة Linux الظاهرية في Azure لتقديم عدة أقراص بيانات مرفقة كجهاز RAID واحد. عادة ما يمكن استخدام هذا لتحسين الأداء والسماح بتحسين معدل النقل مقارنة باستخدام قرص واحد فقط.

إرفاق أقراص البيانات

هناك حاجة إلى قرصين أو أكثر من أقراص البيانات الفارغة لتكوين جهاز RAID. السبب الأساسي لإنشاء جهاز RAID هو تحسين أداء الإدخال/الإخراج على القرص. استنادا إلى احتياجات IO الخاصة بك، يمكنك اختيار إرفاق الأقراص المخزنة في التخزين القياسي، مع ما يصل إلى 500 IO/ps لكل قرص أو تخزين Premium لدينا مع ما يصل إلى 5000 IO/ps لكل قرص. لا تدخل هذه المقالة في التفاصيل حول كيفية توفير أقراص البيانات وإرفاقها بجهاز Linux الظاهري. راجع مقالة Microsoft Azure إرفاق قرص للحصول على إرشادات مفصلة حول كيفية إرفاق قرص بيانات فارغ بجهاز Linux ظاهري على Azure.

هام

لا تخلط الأقراص من أحجام مختلفة، سيؤدي القيام بذلك إلى أن يقتصر أداء مجموعة الغارة على أداء أبطأ قرص.

تثبيت الأداة المساعدة mdadm

  • Ubuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS & Oracle Linux

    sudo yum install mdadm
    
  • SLES وopenSUSE

    zypper install mdadm
    

إنشاء أقسام القرص

في هذا المثال، نقوم بإنشاء قسم قرص واحد على /dev/sdc. سيتم استدعاء قسم القرص الجديد /dev/sdc1.

  1. ابدأ fdisk في إنشاء أقسام

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. اضغط على 'n' في المطالبة لإنشاء قسم new:

    Command (m for help): n
    
  3. بعد ذلك، اضغط على "p" لإنشاء قسم حافة p:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. اضغط على "1" لتحديد رقم القسم 1:

    Partition number (1-4): 1
    
  5. حدد نقطة البداية للقسم الجديد، أو اضغط <enter> لقبول الإعداد الافتراضي لوضع القسم في بداية المساحة الحرة على محرك الأقراص:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. حدد حجم القسم، على سبيل المثال اكتب '+10G' لإنشاء قسم 10 غيغابايت. أو اضغط <enter> على إنشاء قسم واحد يمتد عبر محرك الأقراص بأكمله:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. بعد ذلك، قم بتغيير المعرف وtype للقسم من المعرف الافتراضي '83' (Linux) إلى المعرف 'fd' (Linux raid auto):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. وأخيرا، اكتب جدول القسم إلى محرك الأقراص وخروج fdisk:

    Command (m for help): w
    The partition table has been altered!
    

إنشاء صفيف RAID

  1. المثال التالي "stripe" (RAID level 0) ثلاثة أقسام موجودة على ثلاثة أقراص بيانات منفصلة (sdc1، sdd1، sde1). بعد تشغيل هذا الأمر، يتم إنشاء جهاز RAID جديد يسمى /dev/md127 . لاحظ أيضا أنه إذا كانت أقراص البيانات هذه جزءا من صفيف RAID آخر غير مهمل، فقد يكون من الضروري إضافة المعلمة --forcemdadm إلى الأمر:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. إنشاء نظام الملفات على جهاز RAID الجديد

    CentOS وOracle Linux وSLES 12 وopenSUSE وUbuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 - تمكين boot.md وإنشاء mdadm.conf

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    ملاحظة

    قد تكون هناك حاجة إلى إعادة التشغيل بعد إجراء هذه التغييرات على أنظمة SUSE. هذه الخطوة غير مطلوبة على SLES 12.

إضافة نظام الملفات الجديد إلى /etc/fstab

هام

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

  1. إنشاء نقطة التحميل المطلوبة لنظام الملفات الجديد، على سبيل المثال:

    sudo mkdir /data
    
  2. عند تحرير /etc/fstab، يجب استخدام UUID للإشارة إلى نظام الملفات بدلا من اسم الجهاز. blkid استخدم الأداة المساعدة لتحديد UUID لنظام الملفات الجديد:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. افتح /etc/fstab في محرر نصوص وأضف إدخالا لنظام الملفات الجديد، على سبيل المثال:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    أو على SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    ثم احفظ /etc/fstab وأغلقه.

  4. اختبر أن إدخال /etc/fstab صحيح:

    sudo mount -a
    

    إذا كان هذا الأمر ينتج عنه رسالة خطأ، فيرجى التحقق من بناء الجملة في الملف /etc/fstab.

    بعد ذلك، mount قم بتشغيل الأمر للتأكد من تحميل نظام الملفات:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (اختياري) معلمات التمهيد ل Failsafe

    تكوين fstab

    تتضمن العديد من التوزيعات إما nobootwait معلمات التحميل أو nofail التي يمكن إضافتها إلى الملف /etc/fstab. تسمح هذه المعلمات بالفشل عند تركيب نظام ملفات معين وتسمح لنظام Linux بالاستمرار في التمهيد حتى إذا كان غير قادر على تحميل نظام ملفات RAID بشكل صحيح. راجع وثائق التوزيع للحصول على مزيد من المعلومات حول هذه المعلمات.

    مثال (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    معلمات تمهيد Linux

    بالإضافة إلى المعلمات أعلاه، يمكن أن تسمح معلمة kernel "bootdegraded=true" للنظام بالتمهيد حتى إذا تم اعتبار RAID تالفا أو متدهورا، على سبيل المثال إذا تمت إزالة محرك أقراص البيانات عن غير قصد من الجهاز الظاهري. بشكل افتراضي، قد يؤدي هذا أيضا إلى نظام غير قابل للتمهيد.

    يرجى الرجوع إلى وثائق التوزيع الخاصة بك حول كيفية تحرير معلمات النواة بشكل صحيح. على سبيل المثال، في العديد من التوزيعات (CentOS وOracle Linux وSLES 11) يمكن إضافة هذه المعلمات يدويا إلى الملف "/boot/grub/menu.lst". في Ubuntu، يمكن إضافة هذه المعلمة إلى المتغير على GRUB_CMDLINE_LINUX_DEFAULT "/etc/default/grub".

دعم TRIM/UNMAP

تدعم بعض نوى Linux عمليات TRIM/UNMAP لتجاهل الكتل غير المستخدمة على القرص. هذه العمليات مفيدة بشكل أساسي في التخزين القياسي لإعلام Azure بأن الصفحات المحذوفة لم تعد صالحة ويمكن تجاهلها. يمكن أن يؤدي تجاهل الصفحات إلى توفير التكلفة إذا قمت بإنشاء ملفات كبيرة ثم حذفها.

ملاحظة

قد لا يصدر RAID أوامر تجاهل إذا تم تعيين حجم المجموعة للصفيف إلى أقل من الافتراضي (512 كيلوبايت). وذلك لأن نقاوة غير المخطط على المضيف هي أيضا 512 كيلوبايت. إذا قمت بتعديل حجم مجموعة الصفيف عبر معلمة mdadm --chunk= ، فقد يتم تجاهل طلبات TRIM/unmap بواسطة النواة.

هناك طريقتان لتمكين دعم TRIM في جهاز Linux الظاهري. كالعادة، استشر التوزيع للحصول على النهج الموصى به:

  • discard استخدم خيار التحميل في /etc/fstab، على سبيل المثال:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • في بعض الحالات قد يكون للخيار discard آثار على الأداء. بدلاً من ذلك، يمكنك تشغيل fstrim الأمر يدوياً من سطر الأوامر، أو إضافته إلى crontab لتشغيله بانتظام:

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data