إضافة قرص إلى جهاز ظاهري بنظام التشغيل Linux
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة
توضح لك هذه المقالة كيفية إرفاق قرص ثابت بالجهاز الظاهري حتى تتمكن من الاحتفاظ ببياناتك - حتى إذا تم إعادة توفير الجهاز الظاهري بسبب الصيانة أو تغيير الحجم.
إرفاق قرص جديد إلى جهاز ظاهري
إذا كنت ترغب في إضافة قرص بيانات جديد فارغ إلى الجهاز الظاهري، فاستخدم الأمر az vm disk attach مع المعلمة --new
. إذا كان الجهاز الظاهري في منطقة توافر، فسيتم إنشاء القرص تلقائياً في نفس منطقة الجهاز الظاهري. لمزيد من المعلومات، راجع نظرة عامة على مناطق التوافر. ينشئ المثال التالي قرصاً باسم myDataDisk بحجم 50 جيجا بايت:
az vm disk attach \
-g myResourceGroup \
--vm-name myVM \
--name myDataDisk \
--new \
--size-gb 50
زمن وصول أقل
في مناطق محددة، تم تقليل زمن انتقال إرفاق القرص، لذلك سترى تحسنًا يصل إلى 15٪. يعد هذا مفيدًا إذا كنت قد خططت/لم تخطط لعمليات تجاوز الفشل بين الأجهزة الظاهرية، أو كنت تقوم بتغيير حجم حمل العمل الخاص بك، أو كنت تقوم بتشغيل حمل عمل كبير الحجم مثل Azure Kubernetes Service. ومع ذلك، يقتصر هذا التحسين على أمر إرفاق القرص الصريح، az vm disk attach
. لن ترى تحسين الأداء إذا قمت باستدعاء أمر قد يؤدي ضمنيًا إلى الإرفاق، مثل az vm update
. لا تحتاج إلى اتخاذ أي إجراء آخر غير استدعاء أمر الإرفاق الصريح لرؤية عملية التحسين.
يتوفر زمن انتقال أقل حاليًا في كل منطقة عامة باستثناء:
- وسط كندا
- Central US
- شرق الولايات المتحدة
- East US 2
- South Central US
- West US 2
- منطقة شمال ألمانيا
- غرب الهند
- أوروبا الشمالية
- أوروبا الغربية
إرفاق قرص موجود
لإرفاق قرص موجود، ابحث عن معرّف القرص ومرر المعرّف إلى الأمر 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. إذا أضفت أقراصا متعددة، ولم تكن متأكدا من القرص الذي يستند إلى الحجم وحده، يمكنك الانتقال إلى صفحة الجهاز الظاهري في المدخل، وتحديد الأقراص، والتحقق من رقم LUN للقرص ضمن أقراص البيانات. قارن رقم LUN من المدخل بالرقم الأخير من الجزء HTCL من الإخراج، فهو LUN. خيار آخر هو سرد محتويات /dev/disk/azure/scsi1
الدليل:
ls -l /dev/disk/azure/scsi1
يجب أن يكون الإخراج مشابها للمثال التالي:
lrwxrwxrwx 1 root root 12 Mar 28 19:41 lun0 -> ../../../sdc
تنسيق القرص
قم بتنسيق القرص باستخدام parted
، إذا كان حجم القرص 2 تيبيبايت (TiB) أو أكبر، فيجب عليك استخدام تقسيم GPT، إذا كان أقل من 2 تيرابايت، فيمكنك استخدام تقسيم 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 partprobe /dev/sdc
sudo mkfs.xfs /dev/sdc1
استخدم الأداة المساعدة partprobe
للتأكد من أن النواة على دراية بالقسم ونظام الملفات الجديدين. يمكن أن يؤدي الفشل في الاستخدام partprobe
إلى عدم قيام الأمرين blkid أو lslbk بإرجاع UUID لنظام الملفات الجديد على الفور.
تحميل القرص
الآن، قم بإنشاء دليل لتحميل نظام الملفات باستخدام mkdir
. ينشئ المثال التالي دليلاً في /datadrive
:
sudo mkdir /datadrive
استخدم mount
لتحميل نظام الملفات. يقوم المثال التالي بتحميل القسم /dev/sdc1
على نقطة التحميل /datadrive
:
sudo mount /dev/sdc1 /datadrive
استمر في التحميل
للتأكد من إعادة تحميل محرك الأقراص تلقائيا بعد إعادة التشغيل، يجب إضافته إلى /etc/fstab
الملف. يوصى بشدة أيضا باستخدام /etc/fstab
UUID (المعرف الفريد عالميا) للإشارة إلى محرك الأقراص بدلا من مجرد اسم الجهاز (مثل/ 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
الملف في محرر نص. أضف سطرا إلى نهاية الملف، باستخدام قيمة /dev/sdc1
UUID للجهاز الذي تم إنشاؤه في الخطوات السابقة، ونقطة /datadrive
تحميل . باستخدام المثال من هذه المقالة، سيبدو السطر الجديد كما يلي:
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2
عند الانتهاء من تحرير الملف، احفظ المحرر وأغلقه.
بدلا من ذلك، يمكنك تشغيل الأمر التالي لإضافة القرص إلى /etc/fstab
الملف:
echo "UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2" >> /etc/fstab
إشعار
قد تؤدي إزالة قرص بيانات لاحقاً دون تحرير fstab إلى فشل الجهاز الظاهري في التمهيد. توفر معظم التوزيعات إما خيارات nofail و/أو nobootwait fstab. تسمح هذه الخيارات للنظام بالتمهيد حتى إذا فشل القرص في التحميل في وقت التمهيد. راجع وثائق التوزيع الخاصة بك للحصول على مزيد من المعلومات حول هذه المعلمات.
يضمن الخيار nofail بدء تشغيل الجهاز الظاهري حتى في حالة تلف نظام الملفات أو عدم وجود القرص في وقت التمهيد. بدون هذا الخيار، قد تواجه سلوكاً كما هو موضح في عدم إمكانية SSH على جهاز Linux الظاهري بسبب أخطاء FSTAB
يمكن استخدام وحدة التحكم التسلسلية لجهاز Azure الظاهري للوصول إلى وحدة التحكم إلى الجهاز الظاهري إذا أدى تعديل fstab إلى فشل التمهيد. يتوفر مزيد من التفاصيل في وثائق وحدة التحكم التسلسلية.
دعم اقتطاع الأجزاء/UNMAP لنظام التشغيل Linux في Azure
تدعم بعض نوى Linux عمليات اقتطاع الأجزاء/UNMAP لتجاهل الكتل غير المستخدمة على القرص. هذه الميزة مفيدة بشكل أساسي لإعلام Azure بأن الصفحات المحذوفة لم تعد صالحة ويمكن تجاهلها. يمكن لهذه الميزة توفير المال على الأقراص التي تتم فوترتها استنادا إلى مقدار التخزين المستهلك، مثل الأقراص القياسية غير المدارة ولقطات القرص.
هناك طريقتان لتمكين دعم اقتطاع الأجزاء في جهاز Linux الظاهري الخاص بك. كالعادة، راجع التوزيع الخاص بك للنهج الموصى به:
discard
استخدم خيار التحميل في/etc/fstab
، على سبيل المثال:UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,discard 1 2
في بعض الحالات، قد يكون للخيار
discard
آثارًا على الأداء. بدلا من ذلك، يمكنك تشغيل الأمرfstrim
يدويا من سطر الأوامر أو إضافته إلى crontab الخاص بك لتشغيله بانتظام:
استكشاف الأخطاء وإصلاحها
عند إضافة أقراص بيانات إلى جهاز ظاهري بنظام التشغيل 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 لأداء إضافي.