يا هلا بالجميع! اليوم راح ندخل في عمق LVM، ونتعلم كيف نستفيد منه صح في بيئات الإنتاج. LVM مو بس يجمع لك الأقراص، لا، هو يفتح لك أبواب للتوسع السريع، النسخ الاحتياطية الفورية (اللقطات)، وحتى نقل البيانات بدون توقف. يلا نبلش.
التوسع الديناميكي: كبر مساحتك وأنت مرتاح
وحدة من أقوى ميزات LVM هي قدرته على التوسع. تخيل إنك تحتاج مساحة إضافية بسرعة، مع LVM الموضوع بسيط.
إضافة قرص جديد إلى مجموعة الأقراص (VG)
أول شي، لازم تحضر القرص الجديد أو البارتيشن اللي تبغى تضيفه كـ Physical Volume (PV):
pvcreate /dev/sdb1
بعدين تضيفه لمجموعة الأقراص (Volume Group) اللي تبغاها، مثلاً myvg:
vgextend myvg /dev/sdb1
ملاحظة: تأكد إنك استخدمت
fdiskأوpartedلإنشاء بارتيشن على القرص الجديد وتغيير نوعه إلى LVM (Type 8e) قبل ما تسويpvcreate.
توسيع وحدة تخزين منطقية (LV)
الحين صار عندك مساحة إضافية في الـ VG. تقدر توسع أي Logical Volume (LV) موجود فيها. مثلاً، إذا عندك LV اسمه mylv في الـ VG اللي اسمها myvg وتبغى تزودها بـ 10 غيغابايت:
lvextend -L +10G /dev/myvg/mylv
أو ممكن تخليها تستخدم كل المساحة الفاضية الجديدة:
lvextend -l +100%FREE /dev/myvg/mylv
توسيع نظام الملفات (Filesystem)
بعد ما توسع الـ LV، لازم توسع نظام الملفات اللي عليه عشان يستفيد من المساحة الجديدة. إذا كان ext4:
resize2fs /dev/myvg/mylv
وإذا كان xfs (تتطلب LV تكون mounted):
xfs_growfs /mount/point/of/mylv
اللقطات (Snapshots): حماية بياناتك بضغطة زر
اللقطات في LVM تسمح لك تاخذ "صورة" لحظية للـ LV بدون ما توقف التطبيقات. هذي ميزة رهيبة للنسخ الاحتياطي أو لتجربة تغييرات معينة مع إمكانية الرجوع.
إنشاء لقطة (Snapshot)
عشان تسوي لقطة، تحتاج تحدد الـ LV الأصلية وحجم للقطة (هذا الحجم هو للمساحة اللي راح تتغير في الأصلية بعد اللقطة). مثلاً، لقطة بحجم 5 غيغابايت للـ LV اللي اسمها mylv، واسم اللقطة mylv_snap:
lvcreate --size 5G --snapshot --name mylv_snap /dev/myvg/mylv
ملاحظة: حجم اللقطة لازم يكون كافي لاستيعاب التغييرات اللي راح تصير على الـ LV الأصلية بعد أخذ اللقطة. لو امتلت اللقطة، راح تتعطل الـ LV الأصلية.
الوصول إلى اللقطة
اللقطة تشتغل كأنها LV عادية، تقدر تسويلها Mount وتقرا منها البيانات اللي كانت موجودة وقت أخذ اللقطة:
mkdir /mnt/mylv_snap
mount /dev/myvg/mylv_snap /mnt/mylv_snap
الاستعادة من لقطة
إذا صار شي غلط وبغيت ترجع لحالة اللقطة، تقدر تسوي lvconvert --merge. لازم تكون الـ LV الأصلية غير mounted عشان العملية تتم:
umount /dev/myvg/mylv
lvconvert --merge /dev/myvg/mylv_snap
بعد ما تخلص عملية الدمج، اللقطة راح تختفي والـ LV الأصلية راح ترجع لحالتها وقت أخذ اللقطة.
حذف لقطة
إذا ما عاد تحتاج اللقطة، احذفها بـ lvremove:
lvremove /dev/myvg/mylv_snap
الترحيل (Migration): انقل بياناتك بدون توقف
ميزة الترحيل في LVM تسمح لك تنقل البيانات من Physical Volume (PV) إلى PV آخر داخل نفس Volume Group (VG) بدون ما توقف الخدمة. هذي مفيدة لو عندك قرص قديم وتبغى تستبدله بقرص جديد وأسرع.
ترحيل Logical Volume (LV)
أول شي، تأكد إن عندك PV جديد ومضاف للـ VG، زي ما سوينا في قسم التوسع. بعدين، تشوف وين الـ LV حقك موجود حالياً:
lvdisplay -m /dev/myvg/mylv
الآن، عشان تنقل الـ LV اللي اسمها mylv من الـ PV القديم (/dev/sdb1) إلى الـ PV الجديد (/dev/sdc1)، استخدم pvmove:
pvmove /dev/sdb1 /dev/sdc1
هذا الأمر راح ينقل كل الـ Extents من /dev/sdb1 إلى /dev/sdc1. لو تبغى تنقل LV معين، تحدد الـ LV:
pvmove -n mylv /dev/sdb1 /dev/sdc1
ملاحظة: عملية
pvmoveممكن تاخذ وقت طويل حسب حجم البيانات وسرعة الأقراص. تقدر تتابع تقدمها باستخدامpvmove -i 10(يحدث كل 10 ثواني).
إزالة قرص قديم بعد الترحيل
بعد ما تتأكد إن كل البيانات اللي تبغاها انتقلت من الـ PV القديم، تقدر تشيله من الـ VG:
vgreduce myvg /dev/sdb1
وبعدين تشيله كـ PV:
pvremove /dev/sdb1
كذا تكون نقلت بياناتك بنجاح وبدون أي توقف للخدمة. LVM فعلاً يخلي إدارة التخزين أسهل وأقوى.