تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

LVM چیست؟ آموزش مفاهیم و عملیات مدیریت حجم‌های منطقی


۵ آبان ۱۴۰۴

مدیریت حجم منطقی یا LVM یکی از روش‌های قدرتمند لینوکس برای مدیریت دیسک‌ها و فضاهای ذخیره‌سازی است. با استفاده از LVM می‌توان چندین دیسک را به‌صورت یکپارچه مدیریت کرد، پارتیشن‌هایی انعطاف‌پذیر ایجاد نمود و حاوی داده‌ها ساده‌تر، سریع‌تر و منعطف‌تر از روش‌های سنتی باشد. در ادامه با مفاهیم، مزایا و دستورات پایه LVM آشنا می‌شوید تا بتوانید به‌راحتی از آن در سرور یا سیستم خود استفاده کنید.

در ادامه خواهید خواند:

  • معماری و اصطلاحات LVM
  • نمونه‌های رایج استفاده
  • جمع بندی

معماری و اصطلاحات LVM

پیش‌ از آنکه وارد دستورات مدیریتی LVM شویم، لازم است ابتدا با معماری این سیستم، نحوه سازمان‌دهی دستگاه‌های ذخیره‌سازی و اصطلاحات اصلی آن آشنا شویم. این موضوع پایه‌ای‌ترین بخش کار با LVM است و درک درست آن باعث می‌شود مدیریت حجم‌ها بسیار ساده‌تر باشد.

ساختار مدیریت ذخیره‌سازی در LVM

LVM ساختار خود را به‌صورت لایه‌ای روی دیسک‌های فیزیکی پیاده‌سازی می‌کند؛ لایه‌هایی که از پایه‌ترین سطح آغاز می‌شوند و تا مراحل پیشرفته‌تر گسترش می‌یابند.

1. Physical Volumes (حجم‌های فیزیکی)

پیشوند دستوری LVM برای Physical Volume ها با pv آغاز می‌شود. این بخش شامل دیسک‌های فیزیکی یا دستگاه‌های ذخیره‌سازی مشابه (مثل دیسک‌های ساخته‌شده توسط device mapper مانند RAID) است. در واقع، Physical Volume مواد خامی است که LVM برای ایجاد سطوح بالاتر از آن استفاده می‌کند. وقتی یک دیسک به PV تبدیل می‌شود، LVM یک هدر روی آن می‌نویسد تا آماده مدیریت باشد.

2. Volume Groups (گروه‌های حجمی)

پیشوند دستوری Volume Group ها با vg شروع می‌شود. در این مرحله، LVM چندین Physical Volume را با هم ترکیب کرده و یک فضای ذخیره‌سازی یکپارچه به نام Volume Group ایجاد می‌کند. Volume Group ویژگی‌های دیسک‌های زیرین را پنهان می‌کند و آن‌ها را به یک فضای منطقی واحد با ظرفیت ترکیبی تبدیل می‌کند.

3. Logical Volumes (حجم‌های منطقی)

پیشوند دستوری Logical Volume ها با lv مشخص می‌شود و ابزارهای عمومی LVM نیز ممکن است با lvm آغاز شوند. Logical Volume ها معادل پارتیشن روی دیسک هستند، با این تفاوت که بسیار انعطاف‌پذیرترند. یک Volume Group می‌تواند به تعداد دلخواه Logical Volume تقسیم شود و کاربران و نرم‌افزارها عمدتا با همین LVها سروکار دارند.

LVM می‌تواند دیسک‌های فیزیکی را به یک گروه حجمی (VG) تبدیل کند و سپس مدیر سیستم می‌تواند این گروه را به حجم‌های منطقی (LV) تقسیم کند. این LVها مانند پارتیشن‌های منعطف عمل می‌کنند و به‌راحتی قابل تغییر و مدیریت هستند.

با سرور لینوکس لیارا، زیرساخت پروژه‌هات رو سریع، پایدار و امن راه‌اندازی کن.
✅ نصب فوری✅ منابع اختصاصی✅ دسترسی کامل SSH
خرید و راه‌اندازی سرور لینوکس

آشنایی با Extents در LVM

هر Volume درون یک Volume Group به بخش‌های کوچک و ثابت به نام Extent تقسیم می‌شود. اندازه‌ی Extent توسط Volume Group تعیین می‌گردد و همه‌ی Volumeهای داخل آن گروه یک اندازه‌ی Extent یکسان دارند.

  • Physical Extents (PE): بخش‌های کوچک تشکیل‌دهنده Physical Volume.
  • Logical Extents (LE): بخش‌های کوچک تشکیل‌دهنده Logical Volume.

در واقع، Logical Volume یک نگاشت (Mapping) بین Logical Extent ها و Physical Extent هاست. به همین دلیل، اندازه‌ی Extent کوچک‌ترین واحد فضایی است که LVM می‌تواند اختصاص دهد.

مزیت بزرگ LVM در همین Extentهاست:

  • لازم نیست Logical Extent ها روی دیسک فیزیکی به‌صورت متوالی قرار بگیرند.
  • LVM می‌تواند بدون هیچ وقفه‌ای برای کاربر، Extentهای فیزیکی را کپی یا جابه‌جا کند.
  • Logical Volumeها را می‌توان تنها با اضافه یا حذف Extentها، بزرگ‌تر یا کوچک‌تر کرد.

نمونه‌های رایج استفاده

حالا که با برخی از اصطلاحات و ساختارهایی که LVM استفاده می‌کند آشنا شدید، می‌‌توانید چند روش رایج برای استفاده از آن را بررسی کنید. در این مثال، با یک روند علمی کار را شروع می‌کنید که در آن دو دیسک فیزیکی به چهار Logical Volume تبدیل می‌شوند.

مشخص‌کردن دیسک‌های فیزیکی به‌عنوان Physical Volume

ابتدا باید سیستم را برای پیدا کردن دستگاه‌های بلاکی که LVM می‌تواند مدیریت کند اسکن کنید. برای این کار از دستور زیر استفاده کنید.

sudo lvmdiskscan

خروجی این دستور تمام دستگاه‌های بلاکی موجودی را که رد LVM قادر به تعامل با آن‌ها است را نمایش می‌دهد.

Output
 /dev/ram0 [   64.00 MiB] 
 /dev/sda  [   200.00 GiB] 
 /dev/ram1 [   64.00 MiB] 

 . . .

 /dev/ram15 [   64.00 MiB] 
 /dev/sdb  [   100.00 GiB] 
 2 disks
 17 partitions
 0 LVM physical volume whole disks
 0 LVM physical volumes

در این مثال، مشاهده می‌کنید که دو دیسک و 17 پارتیشن وجود دارد. بیشتر پارتیشن‌ها از نوع /dev/ram* هستند که سیستم برای افزایش کارایی آن‌ها را به‌صورت RAM Disk استفاده می‌کند. دیسک‌های اصلی این مثال عبارت‌اند از:

  • /dev/sda با 200 گیگابایت فضا
  • /dev/sdb با 100 گیگابایت فضا

هشدار: حتما دوباره بررسی کنید که دیسک‌هایی که می‌‌خواهید با LVM استفاده کنید، داده‌ مهمی روی خود نداشته باشند. چون استفاده از این دیسک‌ها در LVM باعث پاک شدن کامل محتوای فعلی آن‌ها خواهد شد. اگر داده‌های مهمی روی سرور دارید، قبل از ادامه حتما از آن‌ها نسخه پشتیبان تهیه کنید.

حالا که دیسک‌های فیزیکی خود را مشخص کردید، با استفاده از دستور pvcreate آن‌ها را به Physical Volume تبدیل کنید.

sudo pvcreate /dev/sda /dev/sdb
Output
 Physical volume "/dev/sda" successfully created
 Physical volume "/dev/sdb" successfully created

این دستور یک هدر LVM روی دیسک‌های می‌نویسد تا مشخص شود که آماده اضافه شدن به Volume Group هستند.

برای اطمینان از این که LVM دیسک‌ها را شناسایی کرده است، دستور زیر را اجرا کنید.

sudo pvs
Output
 PV     VG  Fmt Attr PSize  PFree 
 /dev/sda    lvm2 --- 200.00g 200.00g
 /dev/sdb    lvm2 --- 100.00g 100.00g

همان‌طور که می‌بینید، هر دو دیسک در ستون PV (که مخفف Physical Volume است) نمایش داده‌ می‌شوند.

با هاست لینوکس لیارا، وب‌سایتت رو روی بستر سریع، امن و قابل‌اعتماد میزبانی کن.
✅ نصب فوری و بدون دردسر✅ منابع اختصاصی و پایداری بالا✅ کنترل‌پنل ساده و کاربردی
خرید و راه‌اندازی هاست لینوکس

افزودن Physical Volumeها به Volume Group

وقتی دیسک‌ها به Physical Volume تبدیل شدند، می‌توانید یک Volume Group بسازید. معمولا در بیشتر سیستم‌ها تنها یک Volume Group ایجاد می‌شود تا انعطاف‌پذیری بیشتری در تخصیص فضا داشته باشید. در این مثال، Volume Group به نام LVMVolGroup ساخته می‌شود (شما می‌توانید هر اسم دیگری انتخاب کنید).

برای ایجاد Volume Group و افزودن هر دو Physical Volume به آن، دستور زیر را اجرا کنید.

sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output
 Volume group "LVMVolGroup" successfully created

حالا دوباره دستور pvs را اجرا کنید، خواهید دید که دیسک‌ها به Volume Group جدید اضافه شده‌اند.

sudo pvs
Output
 PV     VG     Fmt Attr PSize  PFree 
 /dev/sda  LVMVolGroup lvm2 a-- 200.00g 200.00g
 /dev/sdb  LVMVolGroup lvm2 a-- 100.00g 100.00g

خلاصه‌ای از وضعیت Volume Group را هم می‌‌توانید با دستور vgs ببینید:

sudo vgs
Output
 VG     #PV #LV #SN Attr  VSize  VFree 
 LVMVolGroup  2  0  0 wz--n- 299.99g 299.99g

در حال حاضر، این Volume Group شامل 2 دیسک فیزیکی 0 Logical Volume و در مجموع حدود 300 گیگابایت ظرفیت است.

ایجاد Logical Volumeها از Volume Group

حالا که Volume Group آماده است، می‌توانید از آن به‌عنوان یک منبع برای ساخت Logical Volume استفاده کنید. برخلاف پارتیشن‌بندی سنتی، در LVM نیازی نیست نگران ساختار فیزیکی باشید؛ چون LVM این موضوع را مدیریت می‌کند. تنها کافی است اندازه و نام Logical Volume را مشخص کنید.

در این مثال، 4 Logical Volume ایجاد می‌کنید:

  • یک Volume به نام projects با اندازه 10 گیگابایت
  • یک Volume به نام www با اندازه 5 گیگابایت برای محتوای وب
  • یک Volume به نام db با اندازه 20 گیگابایت برای پایگاه‌داده
  • یک Volume به نام workspace با باقی‌مانده‌ی کل فضا

برای ایجاد Logical Volume از دستور lvcreate استفاده می‌کنیم. برای مشخص کردن نام از -n و برای تعیین اندازه مستقیم از -L استفاده می‌شود.

ابتدا سه Volume اول را ایجاد کنید:

sudo lvcreate -L 10G -n projects LVMVolGroup
sudo lvcreate -L 5G -n www LVMVolGroup
sudo lvcreate -L 20G -n db LVMVolGroup
Output
 Logical volume "projects" created.
 Logical volume "www" created.
 Logical volume "db" created.

برای مشاهده Logical Volumeها و ارتباط آن‌ها با Volume Group می‌توانید از دستور زیر استفاده کنید:

sudo vgs -o +lv_size,lv_name
Output
 VG     #PV #LV #SN Attr  VSize  VFree  LSize LV   
 LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 10.00g projects
 LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 5.00g www   
 LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 20.00g db

در این خروجی، دو ستون آخر اضافه شده‌ند که اندازه و نام Logical Volumeها را نشان می‌دهد.

حالا می‌توانید باقی‌مانده کل فضا را به Volume با نام workspace اختصاص دهید. برای این کار از گزینه -l استفاده کنید که بر اساس extents کار می‌کند. با پارامتر 100%FREE کل فضا باقی‌مانده اختصاص داده می‌شود.

sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output
 Logical volume "workspace" created.

حالا دوباره Volume Group را بررسی کنید.

sudo vgs -o +lv_size,lv_name
Output
 VG     #PV #LV #SN Attr  VSize  VFree LSize  LV    
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  10.00g projects 
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  5.00g www   
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  20.00g db    
 LVMVolGroup  2  4  0 wz--n- 299.99g  0 264.99g workspace

همان‌طور که می‎‌بینید، Logical Volume ساخته شده و کل فضای Volume Group استفاده شده است.

فرمت کردن و Mount کردن Logical Volumeها

اکنون که Logical Volumeها آماده هستند، می‌توانید مانند دیسک‌های معمولی از آن استفاده کنید.

این دستگاه‌ها در مسیر /dev قابل دسترسی هستند:

  • /dev/volume_group_name/logical_volume_name
  • /dev/mapper/volume_group_name-logical_volume_name

برای فرمت کردن چهار Logical Volume با فایل سیستم Ext4 از دستورات زیر استفاده کنید:

sudo mkfs.ext4 /dev/LVMVolGroup/projects
sudo mkfs.ext4 /dev/LVMVolGroup/www
sudo mkfs.ext4 /dev/LVMVolGroup/db
sudo mkfs.ext4 /dev/LVMVolGroup/workspace

یا به شکل جایگزین:

sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

بعد از فرمت، برای هر کدام Mount Point بسازید:

sudo mkdir -p /mnt/{projects,www,db,workspace}

و Logical Volumeها را Mount کنید:

sudo mount /dev/LVMVolGroup/projects /mnt/projects
sudo mount /dev/LVMVolGroup/www /mnt/www
sudo mount /dev/LVMVolGroup/db /mnt/db
sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

برای اینکه این Mountها بعد از هر بار راه‌اندازی سیستم به‌طور خودکار اعمال شوند، باید آن‌ها را در فایل /etc/fstab اضافه کنید. مثلا با ویرایشگر nano:

sudo nano /etc/fstab

محتوا:

. . .

/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

بعد از ویرایش، فایل را ذخیره کنید و خارج شوید. اگر از nano استفاده می‌کنید، کلیدهای CTRL+c، سپس y و در نهایت ENTER را بزنید.

از این پس، سیستم‌عامل به‌صورت خودکار Logical Volumeها را هنگام بوت Mount خواهد کرد.

هاست لینوکس چیست؟ (بررسی جامع ویژگی‌ها + مزایا)
هاست لینوکس

جمع بندی

LVM با ایجاد یک لایه‌ی انتزاعی روی دیسک‌های فیزیکی، مدیریت فضای ذخیره‌سازی را انعطاف‌پذیرتر و قدرتمندتر می‌کند. شما می‌توانید به‌سادگی چندین دیسک را در قالب یک Volume Group ترکیب کرده و بر اساس نیاز، Logical Volumeهای مختلفی برای کاربردهای گوناگون مثل دیتابیس، وب‌سایت یا فضای کاری ایجاد کنید.

علاوه بر این، امکان تغییر اندازه Volumeها، جابه‌جایی آن‌ها و حتی استفاده از قابلیت‌هایی مثل Snapshot و Mirroring باعث می‌شود LVM به یکی از بهترین راهکارها برای مدیریت ذخیره‌سازی در سیستم‌های لینوکسی تبدیل شود.

به اشتراک بگذارید