راه‌اندازی 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