نتطرّق في هذا المقال من سلسلة الدروس عن شهادة RHCSA من RedHat لكيفيّة إعداد نظام التخزين وضبطه على RedHat Enterprise Linux 7 باستخدام الأداة Parted وهي الأداة المبدئيّة للتعامل مع وحدات التخزين في RHEL؛ سنقدّم أيضا مدير نظام التخزين System storage manager, SSM الذي يسهّل المهمّة كثيرا.
إنشاء التجزئات Partitions والتعديل عليها في RedHat Enterprise Linux
تُستَخدم الأداة parted
مبدئيا للتعامل مع التجزئات في RHEL؛ ويمكن باستخدامها:
- عرض جدول التجزئات الحاليّة،
- التعديل على التجزئات الحاليّة بزيادة حجمها أو نقصه،
- إنشاء تجزئات جديدة على المساحة الفارغة من القرص أو على أجهزة تخزين جديدة.
ملحوظة: نستخدم آلة تخيّلية باستخدام VirtualBox كما هو مشروح في درس تثبيت Red Hat Enterprise Linux باستخدام VirtualBox. أضفنا إليها قرصا تخيّليا جديدا لنختبر عليه أوامر parted
. تمكن إضافة القرص التخيلي باختيّار إعدادات الآلة Settings، ثم تحديد التخزين Storage من نافذة الإعدادات ثم إنشاء قرص تخيليّ بالنقر عل أيقونة الإضافة التي تظهر بجانب خيّار Controller: SATA عند الحوم حوله بالمؤشر.
يُستحسَن قبل البدء في إنشاء تجزئات جديدة أو التعديل على التجزئات الموجودة التأكّد من عدم استخدام أيّ من التجزئات على القرص. إن كانت لديك مساحة إبدال Swap على القرص فستحتاج لتعطيلها. الطريقة الأسهل لتهيئة هذه المتطلّبات هو إقلاع النظام على وضع الإنقاذ Rescue mode باستخدام وسيط التثبيت (قرص ضوئي أو مفتاح USB):
- اذهب إلى قائمة الأجهزة الطرفيّة Devices في VirtualBox ثم اختر الأقراص الضوئيّة Optical devices وحدّد مسار ملفّ ISO الخاصّ بتثبيت النظام.
- بعد إعادة تشغيل النظام والإقلاع على وسيط التثبيت تظهر قائمة الاختيّار التاليّة؛ حدّد خيار Troubleshooting (استكشاف الأخطاء).
- تظهر قائمة Troubleshooting؛ اختر منها Rescue a Red Hat Enterprise Linux system (أصلح نظاما يستخدم RHEL)
- انتظر قليلا حتى تظهر لك إمكانيّة تحديد الخيّار. توجد أربعة خيارات اختر منها Skip to shell (تجاوز إلى الصّدفة) بكتابة الرقم الظاهر أمامها (3).
تحصُل باتّباع الخطوات السابقة على صدفة يمكنك تنفيذ أوامر Parted منها.
إنشاء تجزئة جديدة
نستخدم الأمر parted
على النحو التالي لإنشاء تجزئة جديدة على القرص sdb
(أي القرص الثاني، يُشار للقرص الأوّل بـ sda
):
# parted /dev/sdb
ملحوظة 1: يحتوي المجلّد dev/
على ملفّات خاصّة للتعامل مع العتاد؛ يستخدم النظام الملفّ dev/sda/
للتعامل مع القرص الأوّل في الجهاز، dev/sdb/
مع الثاني، dev/sdc/
مع الثالث، وهكذا. يُشار إلى التجزئات الموجودة على قرص بأرقام: dev/sda1/
التجزئة الأولى من القرص الأول، dev/sda2/
التجزئة الثانية من القرص الأول، dev/sdb1/
التجزئة الأولى من القرص الثاني، وهكذا.
ملحوظة 2: يحوي القرص الأول dev/sda/
ملفّات نظام التشغيل المثبّت على الجهاز. تطبيق أوامر بطريقة خاطئة على هذا القرص قد يجعل النظام غير قابل للاستخدام.
سيظهر محثّ جديد لإدخال الأوامر الخاصّة بالأداة parted
:
نفّذ الأمر print
في سطر أوامر parted
للحصول على قائمة بالتجزئات الحاليّة على القرص:
لا توجد حتى الآن أية تجزئة على القرص الذي تبلغ مساحته 8,5GB. سننشئ على هذا القرص تجزئة أوّليّة بمساحة تبلغ 7GB. نهيّئ Format التجزئة بنظام الملفّات xfs
الذي يُستخدَم مبدئيا على RHEL؛ إلا أن بإمكانك الاختيار من بين نظم ملفّات أخرى كثيرة. سنبدأ بإنشاء التجزئة باستخدام الأمر mkpart
ثم نهيّئها باستخدام الأمر mkfs.fstype
؛ إذ أن دعم الأمر mkpart
لأنظمة الملفات الحديثة ليس جيّدا.
نضبُط في ما يلي لصيقة Label للقرص ثم ننشئ تجزئة أوليّة على القرص dev/sdb/
تبدأ من أول القرص (%0
) وتنتهي عند 7GB (أي 7000MB)؛ ثم نستخدم الأمر print
في الأداة Parted لعرض جدول تجزئات القرص. أثناء عمليّة الإنشاء يُطلّب منّا نوعيّة نظام الملفّات الذي نريد، نترك الخيار المبدئي.
ملحوظة: لصيقة القرص Disk lable (تُسمّى أيضا جدول التجزئة Partition table أو خريطة التجزئة Partition map) هو سجّل يستخدمه النظام للحصول على معلومات عن التجزئة. يدعم الأمر mklable
صيغ تجزئة محدّدة من بينها bsd
، gpt
، msdos
وmac
.
نستخدم الآن الأمر mkfs.xfs
لتهيئة التجزئة التي أنشأناها. نخرج من سطر الأوامر الخاص بالأداة Parted بتنفيذ الأمر quit
ثم ننفّذ الأمر على النحو التالي:
# mkfs.xfs /dev/sdb1 # parted /dev/sdb print
لاحظ إرفاق التجزئة أثناء إنشائها ببيانات وصفيّة Meta data خاصّة بنظام الملفّات xfs.
تغيير مساحة تجزئة
تتيح الأداة Parted أمر resize
لتغيير مساحة التجزئة، إلا أن هذا الأمر لا ينطبق سوى على نظم الملفّات القديمة مثل ext2
، fat32
وfat16
؛ أي أن الطريقة الوحيدة لتغيير مساحة التجزئة هي بحذفها ثم إنشائها من جديد وهو ما يعني حذف محتويات التجزئة وضياعها. تستخدم توزيعة RHEL نمط تجزئة LVM لتلافي هذه الصعوبة في إدارة التجزئات (سنرى كيف يعمل بعد قليل).
نعرض في ما يلي لائحة بالتجزئات على القرص sdb
ثم نحذف التجزئة الأولى:
# parted /dev/sdb print # parted /dev/sdb rm 1
من المستحسَن ألا تستخدم هذا الأمر على نظام إنتاج حقيقي.
مدير التجزئات المنطقية Logical volume manager
رأينا أنّ تعديل مساحة التجزئات الموجودة على القرص بعد إنشائها بالطريقة التقليديّة المشروحة أعلاه صعب وربما يؤدي لفقدان بيانات؛ لهذا يجب النّظر إلى إمكانيّة الاستعانة بمدير التجزئات المنطقيّة LVM. يعمل مدير التجزئات على تجميع وسائط تخزين عدّة لتبدو كأنها وسيط تخزين واحد ثم إنشاء تجزئات انطلاقا من هذه الوحدة المجمَّعة. تكمُن الميزة التي تقدّمها هذه الطريقة في سهولة تمديد أو تقليص التجزئات المنطقيّة دون مصاعب تُذكر.
يبيّن المخطَّط التالي البنية الأساسيّة لمدير التجزئات المنطقيّة.
سنشرح في ما يلي أساسيّات استخدام مدير التجزئات المنطقيّة LVM. نهيّئ لهذا الغرض قرصين ملموسين تخيّليّيْن جديديْن بنفس طريقة إنشاء القرص التخيّلي في الفقرات السابقة. سنستخدم القرصيْن لإنشاء مجموعة تجزئة Volume group ننشئ عليها التجزئات المنطقيّة.
إنشاء التجزئات الملموسة Physical Volumes
نبدأ بإنشاء تجزئتيْن جديدتين ملموستيْن تأخذ كلّ واحدة منهما كامل القرص الذي توجد عليه. بالنسبة للقرص التخيلي الثالث (الأول هو قرص النظام، الثاني هو القرص الذي استخدمناه في الجزء الأول من المقال):
# parted /dev/sdc (parted) mklable msdos (parted) mkpart Partition type? primary/secondary? p File system type? [ext2]? Start? 0% End? 100% (parted) print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 8590MB sector size (logical/physical): 512B/512B Partition Table: msdos Disk flags: Number Start End Size Type File system Flags 1 1049kb 8590MB 8589MB primary quit
نعيد نفس الشيء بالنسبة للرابع:
# parted /dev/sdd
ننفذ بالعودة إلى سطر الأوامر بعد تهيئة التجزئتين الأمرين التاليّين:
# pvcreate /dev/sdc1 # pvcreate /dev/sdd1
تظهر في كلّ مرة رسالة بأن إنشاء التجزئة الملموسة تم بطريقة صحيحة. الأمر pvcreate
جزء من مدير التجزئات المنطقيّة ومهمّته إنشاء التجزئات الملموسة التي سنجمّعها كما سنرى من أجل إنشاء تجزئات منطقية في ما بعد. إن أردت إظهار معلومات عن التجزئات الملموسة التي أنشأناها بالأمر pvcreate
فيمكنك استخدام الأمر pvdisplay
:
# pvdisplay /dev/sdc1 # pvdisplay /dev/sdd1
يُظهر الأمر اسمَ التجزئة والمجموعة التي تنتمي إليها مع بيانات أخرى. لا توجد لحدّ الساعة مجموعة تجزئات؛ لذا سننشئ واحدة.
إنشاء مجموعة تجزئات Volume group
يُستخدم الأمر vgcreate
لإنشاء مجموعة تجزئات. ننشئ في الأمر التالي مجموعة تجزئات باسم hsoub_vg
تتكون من تجزئتين ملمومستين هما dev/sdc/1
و dev/sdd1/
:
# vgcreate hsoub_vg /dev/sd{c,d}1
تظهر رسالة تفيد بإنشاء مجموعة التجزئات.
ستلاحظ الآن عند تنفيذ الأمر pvdisplay /dev/sdv1
اسم المجموعة ضمن معلومات التجزئة. إن أردت رؤية معلومات عن مجموعة التجزئات فيمكنك تنفيذ الأمر vgdisplay
:
# vgdisplay hsoub_vg
إنشاء تجزئات منطقية
جهّزنا مجموعة التجزئات؛ يمكننا الآن استخدامها لإنشاء تجزئات منطقية باستخدام الأمر lvcreate
. يمكن أن نحدّد مساحة التجزئة إما بالوحدة (GB
مثلا) أو بمداها (100 بالمئة)، المعطى الأخير للأمر هو اسم مجموعة التجزئات التي نريد تطبيق الأمر عليها:
# lvcreate -L 3G -n vol01_docs hsoub_vg # lvcreate -L 1G -n vol02_logs hsoub_vg # lvcreate -l 100%FREE -n vol03_homes hsoub_vg
يحدّد الخيار L-
مساحة التجزئة بالوحدة، l-
النسبة من المجموعة و n-
اسم التجزئة المنطقيّة. في الأمرين الأول والثاني أعلاه أنشأنا تجزئتين منطقيتين مساحتاهما على التوالي 3G
و1G
. في الأمر الثالث طلبنا أن تأخذ التجزئة كامل المساحة المتبقيّة على مجموعة التجزئة .
يمكن باستخدام الأمر lvdisplay
إظهار التجزئات المنطقية الموجودة على مجموعة تجزئات كالتالي:
# lvdisplay hsoub_vg
تهيئة التجزئات المنطقية وتركيبها
يمكنك بعد إنشاء التجزئات المنطقيّة تهيئتها بنظام الملفات الذي تريد؛ نستخدم في المثال التالي نظام الملفّات ext4
(من المهمّ اختيار نظام الملفات المناسب؛ xfs
مثلا لا يدعم تغيير مساحة التجزئة):
# mkfs.ext4 /dev/hsoub_vg/vol01_docs # mkfs.ext4 /dev/hsoub_vg/vol02_logs # mkfs.ext4 /dev/hsoub_vg/vol03_homes
لاحظ مسار التجزئات المنطقيّة. توجد مجموعة التجزئات على المسار dev/hsoub_vg/
حيث hsoub_vg
هو مجموعة التجزئة، وبداخل المجلّد توجد التجزئات المنطقيّة التي أنشأناها سابقا.
يأتي بعد التهيئة تركيبُ التجزئات حتى يمكن استخدامها:
# mkdir /mnt/docs /mnt/logs /mnt/homes # mount /dev/hsoub_vg/vol01_docs /mnt/docs # mount /dev/hsoub_vg/vol02_logs /mnt/logs # mount /dev/hsoub_vg/vol03_homes /mnt/homes
ملحوظة: يعني التركيب Mounting إتاحة إمكانية الوصول لنظام الملفات انطلاقا من نقطة معينة في شجرة ملفات لينكس. بدون هذه الخطوة لا يمكن استعمال التجزئة.
يمكن الآن تخزين الملفّات في المجلّد mnt/docs/
وسيضعها النظام على التجزئة المنطقيّة vol01_docs
. ينطبق نفس المبدأ على بقيّة التجزئات والمسارات.
حذف التجزئات المنطقية، مجموعة التجزئات والتجزئات الملموسة
نستخدم الأوامر vgremove
، lvremove
وpvremove
لحذف تجزئة منطقية، مجموعة تجزئات وتجزئات ملموسة على التوالي. سنحتاج أولا لفصلها (نزع تركيبها) بالأمر umount
:
# umount /mnt/docs /mnt/logs /mnt/homes # lvremove /dev/hsoub_vg/vol01_docs /dev/hsoub_vg/vol02_logs /dev/hsoub_vg/vol03_homes
ستظهر رسالة تطلُب منك تأكيد رغبتك في حذف التجزئات؛ اضغط زر y
للتأكيد. ثم نحذف مجموعة التجزئات ومن بعدها التجزئات الملموسة:
# vgremove /dev/hsoub_vg # pvremove /dev/sd{b,c}1
سنخرج الآن من وضع الإنقاذ بعد أن رأينا آلية عمل التجزئات المنطقية. استخدم الأمر exit
للخروج من وضع الإنقاذ ثم انزع القرص الضوئي التخيلي حتى يستطيع النظام الإقلاع من القرص التخيليّ (يمكن أيضا إطفاء الآلة التخيليّة مباشرة من VirtualBox ونزع القرص الضوئي ثم تشغيلها من جديد).
استخدام مدير وسائط التخزين SSM لإنشاء التجزئات المنطقية وإدارتها
مدير وسائط التخزين SSM (اختصار لـ System storage manager) هو أداة تعمل واجهةً بين لإدارة وسائط التخزين بطريقة أسهل. رأينا في الفقرات السابقة أنّه يلزم تنفيذ خمسة أوامر لإنشاء تجزئة منطقيّة والبدء في استخدامها (mkfs
، lvcreate
، vgcreate
،pvcreate
و mount
). يمكن باستخدام ssm
اختصار هذه الخطوات في خطوة واحدة.
نبدأ بتحديث حزم النظام وتثبيت مدير وسائط التخزين:
$ su - Password: # yum update && yum install system-storage-manager
ثم نستخدم الأمر ssm
لإنشاء تجزئات بنفس الخاصيّات السابقة:
# ssm create -s 3G -n vol01_docs -p hsoub_vg --fstype ext4 /mnt/docs /dev/sd{c,d}1 # ssm create -s 1G -n vol02_logs -p hsoub_vg --fstype ext4 /mnt/logs # ssm create -n vol03_homes -p hsoub_vg --fstype ext4 /mnt/homes
ملحوظة: تأكد من وجود المجلدات على المسارات mnt/logs
، /mnt/docs/
و mnt/homes/
حتى يمكن تركيب التجزئات عليها.
يمكن من الأوامر استنتاجُ عمل الخيارات:
-
المساحة:
s-
. -
اسم التجزئة المنطقية:
n-
. -
مجموعة التجزئات:
p-
. -
نقطة التركيب: المسارات
mnt/logs
،/mnt/docs/
وmnt/homes/
. -
التجزئات الملموسة:
dev/sd{c,d}1/
.
لم نحدّد في الأمر الأخير مساحة التجزئة؛ في هذه الحالة تأخذ التجزئة كامل المساحة المتبقيّة على مجموعة التجزئات. حدّدنا في الأمر الأول التجزئات الملموسة التي ستتكوّن منها مجموعة التجزئات؛ بينما لم نفعل ذلك في الأمريْن الآخريْن إذ لم نعد نحتاجه بعد إنجاز المهمة في الأمر الأول.
نفَّذ ssm
في الأوامر أعلاه المهامّ التالية:
- إعداد التجزئات الملموسة.
- إنشاء مجموعة تجزئات.
- إنشاء تجزئات منطقيّة.
- تهيئة التجزئات المنطقيّة.
- تركيب التجزئات المنطقيّة.
يمكننا الآن عرض معلومات عن التجزئات الملموسة، مجموعات التجزئات والتجزئات المنطقيّة على التوالي بالأوامر:
# ssm list dev # ssm list pool # ssm list vol
من أهم الميزات التي توفّرها التجزئات المنطقيّة إمكانيّة التعديل على مساحتها (تصغيرها أو تكبيرها) مباشرة. نفرض مثلا أن التجزئة vol02_logs
توشك على الامتلاء بينما توجد مساحة فارغة كبيرة على التجزئة vol03_homes
. لحد الساعة لا توجد مساحة فارغة على مجموعة التجزئات hsoub_vg
لأننا استهلكناها كلَّها بإنشاء تجزئات منطقية عليها؛ يمكن التأكد من ذلك بتنفيذ الأمر ssm list pool
:
ما سنفعله هو تقليص مساحة التجزئة vol03_homes
ثم منح المساحة المقتطعة منها للتجزئة الممتلئة vol02_logs
.
يعدّل الأمر التالي على التجزئات المنطقيّة بحيث تصبح مساحة vol03_homes
تساوي 4GB
بدلا من 11GB
:
# ssm resize -s 4G /dev/hsoub_vg/vol03_homes
إن أعدنا تنفيذ الأمر ssm list pool
الآن فسنرى وجود مساحة غير مستقلة على المجموعة hsoub_vg
. يمكننا الآن زيادة مساحة التجزئة vol02_logs
:
# ssm resize -s+2G /dev/hsoub_vg/vol02_logs
يطلُب الأمر زيادة مساحة التجزئة vol02_logs
بـ2GB
.
يمكن باستخدام الأمر ssm remove
حذفُ تجزئة منطقيّة على النحو التالي:
# ssm remove /dev/hsoub_vg/vol01_docs
ستظهر رسالة تطلب منك التأكيد على خيّار الحذف. لحذف مجموعة تجزئات نحذف التجزئات المنطقيّة أولا ثم ننفّ الأمر:
# ssm remove hsoub_vg
إدارة التجزئات المعماة بواسطة SSM
يتوفّر مدير وسائط التخزين SSM على إمكانيّة تعميّة تجزئات موجودة أو إنشاء تجزئات وتعميّتها. سنحتاج لهذا الغرض لتثبيت حزمة cryptsetup
إن لم تكن مثبّتة قبلا، على النحو التالي:
# yum update && yum install cryptsetup
ثم ننفذ الأوامر التالية لإنشاء تجزئات معمّاة، سيُطلب منك إدخال عبارة سرّ Passphrase وتأكيدها.
# ssm create -s 3G -n vol01_docs -p hsoub_vg --fstype ext4 --encrypt luks /mnt/docs /dev/sd{c,d}1 # ssm create -s 1G -n vol02_logs -p hsoub_vg --fstype ext4 --encrypt luks /mnt/logs # ssm create -n vol03_homes -p hsoub_vg --fstype ext4 --encrypt luks /mnt/homes
لا تختلف الأوامر عن الأوامر السابقة لإنشاء التجزئات سوى في إضافة الخيار encrypt--
الذي يحدّد نوعيّة التعميّة (luks
في حالتنا، وهي طريقة تعميّة ينتشر استخدامها على أنظمة لينكس).
يجب أن نضيف التجزئات إلى ملف etc/fstab/
حتى تكون متاحة بعد إقلاع النظام. سنستخدم معرّفات التجزئات UUID
التي يمكننا الحصول عليها بتنفيذ الأمر blkid
:
# blkid -o value UUID /dev/hsoub_vg/vol01_docs # blkid -o value UUID /dev/hsoub_vg/vol02_logs # blkid -o value UUID /dev/hsoub_vg/vol03_homes
ثم نضع المحتوى التالي في الملفّ etc/crypttab/
(استخدم المعرفات التي حصلت عليها في الخطوة السابقة):
docs UUID=ba77d113-f849-4ddf-8048-13860399fca8 none logs UUID=58f89c5a-f694-4443-83d6-2e83878e30e4 none homes UUID=92245af6-3f38-4e07-8dd8-787f4690d7ac none
ثم نضيف ما يلي إلى ملفّ etc/fstab/
(أسفل المحتوى الموجود في الملفّ):
# Logical volume vol01_docs: /dev/mapper/docs /mnt/docs ext4 defaults 0 2 # Logical volume vol02_logs /dev/mapper/logs /mnt/logs ext4 defaults 0 2 # Logical volume vol03_homes /dev/mapper/homes /mnt/homes ext4 defaults 0 2
لاحظ أن الاسم الظاهر بعد dev/mapper/
هو نفس المعرّف المحدَّد في الملفّ etc/crypttab/
.
نفّذ الأمر systemctl reboot
لإعادة التشغيل وستجد أنّ النظام يطلُب عبارة السرّ من أجل تركيب التجزئات.
ملحوظة: تأكّد من كتابة التعليمات في الملفّات etc/crypttab
و etc/fstab/
بطريقة صحيحة؛ وإلا فيمكن ألّا يقلع النظام. إن حدث خطأ ستُطلَب منك كلمة سر الحساب الجذر؛ ويمكنك بعدها تصحيح محتوى الملفّ ثم إعادة تشغيل النظام بالأمر السابق.
يمكنك التأكد من أنّ التجزئات رُكِّبت في النقاط التي حدّدناها سلفا بتنفيذ الأمر mount
لإظهار نقاط التركيب ثم استخدام grep
لاختيار تلك التي توجد بها mnt
حيث ركّبنا التجزئات:
# mount | grep "mnt" /dev/mapper/logs on /mnt/logs type ext4 (rw,realtime,seclabel,data=ordered) /dev/mapper/docs on /mnt/docs type ext4 (rw,realtime,seclabel,data=ordered) /dev/mapper/homes on /mnt/homes type ext4 (rw,realtime,seclabel,data=ordered)
خاتمة
رأينا في هذا الدرس مبادئ إعداد نظام التخزين بالطريقة التقليدية وباستخدام أدوات إدارة التجزئات الحديثة مثل lvm
و ssm
. من المهم الانتباه إلى التعامل مع التجزئات يؤثّر مباشرة على عمل النظام ويمكن لخطأ في تنفيذ أمر مّا أن يجعل النظام غير قابل للاستخدام؛ لذا تدرّب أولا على نظام غير أساسي (أو تخيلي، وهي الطريقة الأسهل) إلى أن تتأكد من فهمك لآلية عمل مختلف الأدوات قبل أن تنتقل إلى بيئة إنتاج.
ترجمة -وبتصرّف- للمقال RHCSA Series: Using ‘Parted’ and ‘SSM’ to Configure and Encrypt System Storage – Part 6 لصاحبه Gabriel Cánepa.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.