راهاندازی LVM در لینوکس
LVM مخفف Logical Volume Manager روشی پیشرفته برای مدیریت پارتیشنها و فضای دیسک سخت در لینوکس است که امکانات بسیار گستردهتری را نسبت به مدل پارتیشنبندی سنتی در اختیار مدیر سیستم میگذارد.
در LVM میتوانیم مجموعهای از دیسکهای سخت و یا پارتیشنها را که Physical Volume نامیده میشوند بهصورت یک یا چندین دیسک منطقی بزرگتر و یکپارچه با نام Volume Group به وجود بیاوریم و سپس روی این دیسک ایجاد شده پارتیشنهای خود که در اینجا Logical Volume نامیده میشود ایجاد کنیم.
از جمله مزایای این روش این است زمانی که فضای یکی از پارتیشنها رو به اتمام است بهراحتی میتوانیم بهصورت آنلاین و داینامیک فضای بیشتری را به آن تخصیص بدهیم.
متأسفانه LVM قابلیت تحمل خطاپذیری و بازیابی دادهها را همانند آنچه در RAID ها داریم، ندارد و در صورت خرابی یکی از دیسکها دادههایمان از بین خواهد رفت.
در این آموزش به نحوه نصب و پیکربندی LVM در لینوکس خواهیم پرداخت.
ابتدا میبایست بسته lvm2 را روی سیستم نصب کنیم.
برای سیستمهای مبتنی بر دبیان:
sudo apt install lvm2
برای سیستمهای مبتنی بر ردهت:
sudo yum install lvm2
سپس میبایست توسط دستور pvcreate پارتیشن یا دیسکهای مورد نظرمان را به Physical Volume تبدیل کنیم.
pvcreate /dev/sda /dev/sdb
پس از اجرای دستور فوق میتوانیم برای آگاهی از وضعیت Physical Volume ها از دستور زیر استفاده کنیم.
pvdisplay
که خروجی آن برای مثال ما بصورت زیر خواهد بود.
"/dev/sda" is a new physical volume of "8.00 GiB" --- NEW Physical volume --- PV Name /dev/sda VG Name PV Size 8.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID cAwfbX-Nik0-X1iR-lAzP-GJGD-5FNS-tX5fuY "/dev/sdb" is a new physical volume of "8.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 8.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID VRDlaw-eeXm-p3XP-2w4t-fCZ8-92NP-2izZb3
همانطور که مشاهده میکنید دیسکهای sda و sdb هر کدام با حجم 8 گیگ تعریف شدهاند.
حال میبایست برای Physical Volume های ایجاد شده یک Volume Group تعریف کنیم.
vgcreate vg_server /dev/sda /dev/sdb
که در اینجا یک Volume Group با نام vg_server ایجاد نمودیم و دو دیسک sda و sdb را به آن اضافه کردیم. برای بررسی وضعیت Volume Group ایجاد شده دستور زیر را وارد میکنیم.
vgdisplay vg_server
که خروجی آن بصورت زیر خواهد بود.
--- Volume group --- VG Name vg_server System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 15.99 GiB PE Size 4.00 MiB Total PE 4094 Alloc PE / Size 0 / 0 Free PE / Size 4094 / 15.99 GiB VG UUID udnHV5-QwGw-PkA4-zsF3-5ABo-WhOA-XI51SZ
همانطور که مشاهده میکنید در بخش Free PE/ Size مجموع فضای دیسکها اضافه شده را نمایش می دهد.
برای اضافه نمودن دیسکهای بیشتر به Volume Group میتوانیم به صورت زیر عمل کنیم.
pvcreate /dev/sdd
vgextend vg_server /dev/sdd
که در اینجا ما یک Physical Volume به نام sdd را به Volume Group اضافه نمودیم.
سپس میتوانیم بهصورت زیر Logical Volume های مورد نظرمان را روی Volume Group ایجاد شده تعریف کنیم.
lvcreate -L 1G -n Vol01 vg_server
که در اینجا ما یک Logical Volume با حجم 1Gb و نام Vol01 تعریف نمودیم.
جهت مشاهده وضعیت Logical Volume ایجاد شده دستور زیر را وارد میکنیم.
lvdisplay vg_server
که خروجی آن بصورت زیر خواهد بود.
--- Logical volume --- LV Path /dev/vg_server/Vol01 LV Name Vol01 VG Name vg_server LV UUID dwdyI0-yy7l-jF9U-bPHB-QNpO-15RO-0uKlPH LV Write Access read/write LV Creation host, time debian, 2016-08-11 11:48:48 -0400 LV Status available # open 0 LV Size 1.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
سپس میتوانیم Logical Volume ایجاد شده را با فرمت فایل سیستم مورد نظرمان بهصورت زیر فرمت کنیم.
mkfs -t ext4 /dev/vg_server/vol01
و در نهایت توسط دستور mount انرا ماونت کنیم.
mount /dev/vg_server/vol01 /mnt
در صورتی که بخواهیم اندازه Logical Volume مورد نظرمان را تغییر دهیم میتوانیم بهصورت زیر عمل کنیم.
lvextend -L +800 /dev/vg_server/vol01
و سپس توسط دستور زیر جهت اعمال تغییرات روی فایل سیستم Logical Volume وارد میکنیم.
resize2fs /dev/vg_server/vol01
در مثال فوق 800Mb از فضای خالی Volume Group به Logical Volume اضافه نمودیم.
برای حذف Logical Volume میتوانیم بهصورت زیر عمل کنیم.
lvremove /dev/vg_server/vol01
و برای حذف Volume Group دستور زیر را وارد میکنیم.
vgremove vg_server