إضافة قرص إلى جهاز ظاهري بنظام التشغيل Linux
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة
توضح لك هذه المقالة كيفية إرفاق قرص ثابت بالجهاز الظاهري حتى تتمكن من الاحتفاظ ببياناتك - حتى إذا تم إعادة توفير الجهاز الظاهري بسبب الصيانة أو تغيير الحجم.
إرفاق قرص جديد إلى جهاز ظاهري
إذا كنت ترغب في إضافة قرص بيانات جديد فارغ إلى الجهاز الظاهري، فاستخدم الأمر az vm disk attach مع المعلمة --new. إذا كان الجهاز الظاهري في منطقة توافر، فسيتم إنشاء القرص تلقائياً في نفس منطقة الجهاز الظاهري. لمزيد من المعلومات، راجع نظرة عامة على مناطق التوافر. ينشئ المثال التالي قرصاً باسم myDataDisk بحجم 50 جيجا بايت:
az vm disk attach \
-g myResourceGroup \
--vm-name myVM \
--name myDataDisk \
--new \
--size-gb 50
إرفاق قرص موجود
لإرفاق قرص موجود، ابحث عن معرّف القرص ومرر المعرّف إلى الأمر az vm disk attach. أمثلة الاستعلامات التالية لقرص اسمه myDataDisk في myResourceGroup، ثم ترفقه بالجهاز الظاهري المسمى myVM:
diskId=$(az disk show -g myResourceGroup -n myDataDisk --query 'id' -o tsv)
az vm disk attach -g myResourceGroup --vm-name myVM --name $diskId
تنسيق القرص وتركيبه
لتقسيم القرص الجديد وتنسيقه وتركيبه حتى يتمكن جهاز Linux الظاهري من استخدامه، SSH في الجهاز الظاهري. لمزيد من المعلومات، راجع كيفية استخدام SSH مع Linux على Azure. يتصل المثال التالي بجهاز ظاهري بعنوان IP عام 10.123.123.25 باسم المستخدم azureuser:
ssh azureuser@10.123.123.25
البحث عن القرص
بمجرد الاتصال بجهازك الظاهري، تحتاج إلى العثور على القرص. في هذا المثال، نستخدم lsblk لإدراج الأقراص.
lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
يتشابه الإخراج مع المثال التالي:
sda 0:0:0:0 30G
├─sda1 29.9G /
├─sda14 4M
└─sda15 106M /boot/efi
sdb 1:0:1:0 14G
└─sdb1 14G /mnt
sdc 3:0:0:0 50G
هنا، sdc هو القرص الذي نريده، فهو 50G. إذا أضفت عدة أقراص، ولم تكن متأكداً من القرص الذي يعتمد على الحجم وحده، فيمكنك الانتقال إلى صفحة الجهاز الظاهري في المدخل، وتحديد "Disks"، والتحقق من رقم LUN للقرص الموجود أسفل "Data disks". قارن رقم LUN من المدخل بالرقم الأخير من الجزء HTCL من الإخراج، فهو LUN.
تنسيق القرص
قم بتنسيق القرص باستخدام parted، إذا كان حجم القرص 2 تيبي بايت (TiB) أو أكبر، فيجب عليك استخدام تقسيم GPT، إذا كان أقل من 2TiB، فيمكنك استخدام تقسيم MBR أو GPT.
ملاحظة
يوصى باستخدام أحدث إصدار متوفر من parted للتوزيعة الخاصة بك.
إذا كان حجم القرص 2 تيبي بايت (TiB) أو أكبر، يجب عليك استخدام تقسيم GPT. إذا كان حجم القرص أقل من 2 TiB، فيمكنك استخدام تقسيم MBR أو GPT.
يستخدم المثال التالي parted على /dev/sdc، حيث يوجد قرص البيانات الأول عادة على معظم الأجهزة الظاهرية. استبدل sdc بالخيار الصحيح للقرص. نقوم أيضاً بتنسيقه باستخدام نظام ملفات XFS.
sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo mkfs.xfs /dev/sdc1
sudo partprobe /dev/sdc1
استخدم الأداة المساعدة partprobe للتأكد من أن النواة على دراية بالقسم ونظام الملفات الجديدين. يمكن أن يؤدي الفشل في استخدام partprobe إلى عدم قيام الأمرين blkid أو lslbk بإرجاع UUID لنظام الملفات الجديد على الفور.
تحميل القرص
الآن، قم بإنشاء دليل لتحميل نظام الملفات باستخدام mkdir. ينشئ المثال التالي دليلاً في /datadrive:
sudo mkdir /datadrive
استخدم mount لتحميل نظام الملفات. يقوم المثال التالي بتحميل القسم /dev/sdc1 على نقطة التحميل /datadrive:
sudo mount /dev/sdc1 /datadrive
استمر في التحميل
للتأكد من إعادة تحميل محرك الأقراص تلقائياً بعد إعادة التشغيل، يجب إضافته إلى ملف /etc/fstab. يوصى بشدة أيضاً باستخدام UUID (المعرّف الفريد عالمياً) في /etc/fstab للإشارة إلى محرك الأقراص بدلاً من اسم الجهاز فقط (مثل، /dev/sdc1). إذا اكتشف نظام التشغيل خطأ في القرص أثناء التمهيد، فإن استخدام UUID يتجنب تركيب القرص غير الصحيح في موقع معين. سيتم بعد ذلك تعيين أقراص البيانات المتبقية لنفس معرّفات الأجهزة. للعثور على UUID لمحرك الأقراص الجديد، استخدم الأداة المساعدة blkid:
sudo blkid
يبدو الإخراج مشابهاً للمثال التالي:
/dev/sda1: LABEL="cloudimg-rootfs" UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4" PARTUUID="1a1b1c1d-11aa-1234-1a1a1a1a1a1a"
/dev/sda15: LABEL="UEFI" UUID="BCD7-96A6" TYPE="vfat" PARTUUID="1e1g1cg1h-11aa-1234-1u1u1a1a1u1u"
/dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4" TYPE="ext4" PARTUUID="1a2b3c4d-01"
/dev/sda14: PARTUUID="2e2g2cg2h-11aa-1234-1u1u1a1a1u1u"
/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="c1c2c3c4-1234-cdef-asdf3456ghjk"
ملاحظة
تحرير الملف /etc/fstab بطريقة صحيحة صحيح قد يؤدي إلى نظام غير قابل للتمهيد. إذا لم تكن متأكداً من ذلك، راجع وثائق التوزيع للحصول على معلومات بخصوص طريقة تحرير هذا الملف بشكل صحيح. من المستحسن أيضا إنشاء نسخة احتياطية من الملف /etc/fstab قبل التحرير.
بعد ذلك، افتح الملف /etc/fstab في محرر نص كما يلي:
sudo nano /etc/fstab
في هذا المثال، استخدم قيمة UUID للجهاز /dev/sdc1 الذي تم إنشاؤه في الخطوات السابقة، ونقطة التحميل /datadrive. أضف السطر التالي في نهاية الملف /etc/fstab:
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2
في هذا المثال، نستخدم محرر nano، لذلك عند الانتهاء من تحرير الملف، استخدم Ctrl+O لكتابة الملف وCtrl+X للخروج من المحرر.
ملاحظة
قد تؤدي إزالة قرص بيانات لاحقاً دون تحرير fstab إلى فشل الجهاز الظاهري في التمهيد. توفر معظم التوزيعات خيارات fstab nofail و/أو nobootwait. تسمح هذه الخيارات للنظام بالتمهيد حتى إذا فشل القرص في التحميل في وقت التمهيد. راجع وثائق التوزيع للحصول على مزيد من المعلومات حول هذه المعلمات.
يضمن الخيار nofail بدء تشغيل الجهاز الظاهري حتى في حالة تلف نظام الملفات أو عدم وجود القرص في وقت التمهيد. بدون هذا الخيار، قد تواجه سلوكاً كما هو موضح في عدم إمكانية SSH على جهاز Linux الظاهري بسبب أخطاء FSTAB
يمكن استخدام وحدة التحكم التسلسلية لجهاز Azure الظاهري للوصول إلى وحدة التحكم إلى الجهاز الظاهري إذا أدى تعديل fstab إلى فشل التمهيد. يتوفر مزيد من التفاصيل في وثائق وحدة التحكم التسلسلية.
دعم TRIM/UNMAP لنظام التشغيل Linux في Azure
تدعم بعض نوى Linux عمليات TRIM/UNMAP لتجاهل الكتل غير المستخدمة على القرص. هذه الميزة مفيدة بشكل أساسي في التخزين القياسي لإعلام Azure بأن الصفحات المحذوفة لم تعد صالحة ويمكن تجاهلها، ويمكن توفير المال إذا قمت بإنشاء ملفات كبيرة ثم حذفها.
هناك طريقتان لتمكين دعم TRIM في جهاز Linux الظاهري. كالعادة، استشر التوزيع للحصول على النهج الموصى به:
استخدم خيار التركيب
discardفي /etc/fstab، على سبيل المثال:UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,discard 1 2في بعض الحالات، قد يكون للخيار
discardآثار على الأداء. بدلاً من ذلك، يمكنك تشغيلfstrimالأمر يدوياً من سطر الأوامر، أو إضافته إلى crontab لتشغيله بانتظام:Ubuntu
sudo apt-get install util-linux sudo fstrim /datadriveRHEL/CentOS
sudo yum install util-linux sudo fstrim /datadrive
استكشاف الأخطاء وإصلاحها
عند إضافة أقراص بيانات إلى جهاز ظاهري بنظام التشغيل Linux، قد تواجه أخطاء في حالة عدم وجود قرص في LUN 0. إذا كنت تضيف القرص يدوياً باستخدام الأمر az vm disk attach -new وقمت بتحديد LUN (--lun) بدلاً من السماح لنظام Azure الأساسي بتحديد LUN المناسب، فاحرص على وجود قرص بالفعل / سيكون موجوداً في LUN 0.
ضع في اعتبارك المثال التالي الذي يعرض مقتطفاً من الإخراج من lsscsi:
[5:0:0:0] disk Msft Virtual Disk 1.0 /dev/sdc
[5:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdd
يوجد قرصا البيانات في LUN 0 وLUN 1 (العمود الأول في تفاصيل الإخراج lsscsi[host:channel:target:lun]). يجب أن يكون كلاً القرصين قابلين للوصول من داخل الجهاز الظاهري. إذا قمت يدوياً بتحديد القرص الأول المراد إضافته في LUN 1 والقرص الثاني في LUN 2، فقد لا ترى الأقراص بشكل صحيح من داخل الجهاز الظاهري.
ملاحظة
قيمة host الخاص بـ Azure هي 5 في هذه الأمثلة، ولكنها قد تختلف وفقاً لنوع التخزين الذي تحدده.
سلوك القرص ليس مشكلة Azure، ولكن الطريقة التي تتبع بها نواة Linux مواصفات SCSI. عندما تقوم نواة Linux بفحص ناقل SCSI بحثاً عن الأجهزة المرفقة، يجب العثور على جهاز في LUN 0 حتى يتمكن النظام من مواصلة البحث عن أجهزة إضافية. وعلى هذا النحو:
- راجع إخراج
lsscsiبعد إضافة قرص بيانات للتحقق من وجود قرص في LUN 0. - إذا لم يظهر القرص بشكل صحيح داخل الجهاز الظاهري، فتحقق من وجود قرص في LUN 0.
الخطوات التالية
- لضمان تكوين جهاز Linux الظاهري بشكل صحيح، راجع توصيات تحسين أداء جهاز Linux.
- توسيع سعة التخزين عن طريق إضافة أقراص إضافية وتكوين RAID للحصول على أداء إضافي.