تغییرات اخیر

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

چگونه با LVM در اوبونتو فضای دیسک را مدیریت کنیم؟


۱۰ آبان ۱۴۰۴

مدیریت حجم منطقی (Logical Volume Management) یا LVM یک فناوری در سیستم‌های لینوکس است که به شما اجازه می‌دهد فضای ذخیره‌سازی را به‌صورت انعطاف‌پذیرتر از پارتیشن‌بندی سنتی مدیریت کنید. نسخه فعلی این سیستم، LVM2، با استفاده از فریم‌ورک Device Mapper در کرنل لینوکس، قادر است دیسک‌های موجود را در گروه‌هایی جمع‌آوری کند و از فضای ترکیبی آن‌ها، حجم‌های منطقی (Logical Volumes) بسازد و در صورت نیاز تغییر دهد. در این آموزش از لیارا، شما با مدیریت LVM آشنا خواهید شد: از مشاهده اطلاعات حجم‌ها و اهداف موجود، ایجاد و حذف حجم‌های مختلف گرفته تا تغییر حجم‌های موجود از طریق افزایش، کاهش یا تبدیل آن‌ها.

با سرور ابونتو لیارا، بدون دردسر سرور خود را تنها با چند کلیک مدیریت کنید.
✅ منابع اختصاصی و پایدار✅ سرعت بالا و ترافیک نامحدود✅ امنیت پیشرفته و پشتیبانی 24/7
خرید و راه‌اندازی سرور اوبونتو ساعتی لیارا

پیش نیازها

  • برای تکمیل این آموزش، باید یک سرور مجازی Ubuntu با یک کاربر غیر روت (non-root) دارای دسترسی sudo و یک فایروال (Firewall) فعال، داشته باشید. برای تنظیم این موارد، می‌توانید راهنمای نحوه راه‌اندازی اولیه سرور مجازی با اوبونتو Ubuntu را مطالعه کنید.
  • پس از آماده شدن سرور مجازی اوبونتو، با کاربر دارای دسترسی sudo وارد سرور خود شوید.
چگونه با LVM در اوبونتو فضای دیسک را مدیریت کنیم؟

آنچه در ادامه می‌خوانید:

  • مرحله اول: مشاهده و بررسی حجم‌های فیزیکی و حجم‌های منطقی (LVM) در اوبونتو
  • مرحله دوم: ایجاد یا گسترش کامپوننت‌های LVM
  • مرحله سوم: حذف یا کاهش اندازه کامپوننت‌های LVM
  • جمع بندی

مرحله اول: مشاهده و بررسی حجم‌های فیزیکی و حجم‌های منطقی (LVM) در اوبونتو

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

نمایش همه دستگاه‌های ذخیره‌سازی سازگار با LVM

اگر می‌خواهید ببینید سیستم شما چه دستگاه‌های ذخیره‌سازی بلوکی‌ای دارد که LVM می‌تواند مدیریت‌شان کند، کافی است دستور زیر را اجرا کنید:

sudo lvmdiskscan
Output
  /dev/sda   [     200.00 GiB] 
  /dev/sdb   [     100.00 GiB] 
  2 disks
  2 partitions
  0 LVM physical volume whole disks
  0 LVM physical volumes

قبل از هر کاری، به دیسک‌هایی که می‌توانند به‌عنوان حجم فیزیکی (Physical Volume) برای LVM استفاده شوند توجه کنید. این کار معمولاً اولین مرحله است وقتی می‌خواهید دستگاه‌های ذخیره‌سازی جدید را به LVM اضافه کنید.

نمایش اطلاعات حجم‌های فیزیکی (Physical Volumes)

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

برای مشاهده همه دستگاه‌های فیزیکی موجود روی سیستم، می‌توانید از دستور زیر استفاده کنید:

sudo lvmdiskscan -l
Output
  WARNING: only considering LVM devices
  /dev/sda                   [     200.00 GiB] LVM physical volume
  /dev/sdb                   [     100.00 GiB] LVM physical volume
  2 LVM physical volume whole disks
  0 LVM physical volumes

دستور pvscan عملکرد مشابهی دارد و تمام دستگاه‌های موجود را برای یافتن حجم‌های فیزیکی (Physical Volumes) در LVM جستجو می‌کند.

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

sudo pvscan
Output
  PV /dev/sda   VG LVMVolGroup     lvm2 [200.00 GiB / 0    free]
  PV /dev/sdb   VG LVMVolGroup     lvm2 [100.00 GiB / 10.00 GiB free]
  Total: 2 [299.99 GiB] / in use: 2 [299.99 GiB] / in no VG: 0 [0   ]

اگر به جزئیات بیشتری درباره حجم‌های فیزیکی خود نیاز دارید، می‌توانید از دستورهای pvs و pvdisplay استفاده کنید.

دستور pvs قابل تنظیم است و می‌تواند اطلاعات را در فرمت‌های مختلف نمایش دهد. به دلیل امکان کنترل دقیق خروجی، این دستور اغلب در اسکریپت‌ها و اتوماسیون استفاده می‌شود. خروجی آن هم یک نمای کلی و سریع از وضعیت حجم‌ها ارائه می‌دهد که مشابه دستورهایی است که قبلا معرفی شد:

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

اگر می‌خواهید خروجی مفصل‌تر و قابل فهم‌تر برای انسان داشته باشید، دستور pvdisplay گزینه بسیار مناسبی است:

sudo pvdisplay
Output
  --- Physical volume ---
  PV Name               /dev/sda
  VG Name               LVMVolGroup
  PV Size               200.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              51199
  Free PE               0
  Allocated PE          51199
  PV UUID               kRUOyU-0ib4-ujPh-kAJP-eeQv-ztRL-4EkaDQ

  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               LVMVolGroup
  PV Size               100.00 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              25599
  Free PE               2560
  Allocated PE          23039
  PV UUID               udcuRJ-jCDC-26nD-ro9u-QQNd-D6VL-GEIlD7

اگر می‌خواهید ببینید کدام واحدهای منطقی (Logical Extents) به هر حجم فیزیکی اختصاص یافته‌اند، کافی است دستور pvdisplay را همراه با گزینه -m اجرا کنید:

sudo pvdisplay -m
Output
  --- Physical volume ---
  PV Name               /dev/sda
  VG Name               LVMVolGroup
  PV Size               200.00 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              51199
  Free PE               38395
  Allocated PE          12804
  PV UUID               kRUOyU-0ib4-ujPh-kAJP-eeQv-ztRL-4EkaDQ

  --- Physical Segments ---
  Physical extent 0 to 0:
    Logical volume  /dev/LVMVolGroup/db_rmeta_0
    Logical extents 0 to 0
  Physical extent 1 to 5120:
    Logical volume  /dev/LVMVolGroup/db_rimage_0
    Logical extents 0 to 5119

با دستور بالا می‌توانید متوجه شوید که هر بخش از داده‌ها روی کدام دیسک فیزیکی ذخیره شده‌اند تا مدیریت فضای ذخیره‌سازی را راحت‌تر انجام دهید.

نمایش اطلاعات گروه‌های حجمی (Volume Groups)

LVM ابزارهای زیادی برای مشاهده اطلاعات گروه‌های حجمی در اختیار شما قرار می‌دهد. دستور vgscan می‌تواند سیستم را برای پیدا کردن گروه‌های حجمی موجود اسکن کند و در صورت نیاز فایل کش را بازسازی می‌کند. این دستور زمانی کاربرد دارد که بخواهید یک گروه حجمی را به یک سیستم جدید وارد (import) کنید و نیاز دارید سیستم، گروه حجمی را شناسایی کند.

sudo vgscan
Output
  Reading all physical volumes.  This may take a while...
  Found volume group "LVMVolGroup" using metadata type lvm2

دستور vgscan خروجی زیادی نمایش نمی‌دهد، اما می‌تواند تمام گروه‌های حجمی موجود روی سیستم را پیدا کند. اگر بخواهید اطلاعات بیشتری ببینید، می‌توانید از دستورهای vgs و vgdisplay استفاده کنید.

مانند دستورهای مرتبط با حجم‌های فیزیکی، دستور vgs بسیار قابل تنظیم است و می‌تواند حجم زیادی از اطلاعات را در فرمت‌های مختلف نمایش دهد. به دلیل امکان دستکاری خروجی، این دستور اغلب در اسکریپت‌ها و اتوماسیون استفاده می‌شود.

برای مثال، می‌توانید خروجی را به گونه‌ای تنظیم کنید که دستگاه‌های فیزیکی و مسیر حجم‌های منطقی نیز نمایش داده شوند:

sudo vgs -o +devices,lv_path
Output
  VG          #PV #LV #SN Attr   VSize   VFree  Devices        Path
  LVMVolGroup   2   4   0 wz--n- 299.99g 10.00g /dev/sda(0)    /dev/LVMVolGroup/projects
  LVMVolGroup   2   4   0 wz--n- 299.99g 10.00g /dev/sda(2560) /dev/LVMVolGroup/www
  LVMVolGroup   2   4   0 wz--n- 299.99g 10.00g /dev/sda(3840) /dev/LVMVolGroup/db
  LVMVolGroup   2   4   0 wz--n- 299.99g 10.00g /dev/sda(8960) /dev/LVMVolGroup/workspace
  LVMVolGroup   2   4   0 wz--n- 299.99g 10.00g /dev/sdb(0)    /dev/LVMVolGroup/workspace

اگر می‌خواهید جزئیات بیشتری از گروه‌های حجمی (Volume Groups) داشته باشید و خروجی کاملاً قابل خواندن برای انسان باشد، دستور vgdisplay بهترین گزینه است.

با اضافه کردن گزینه -v، می‌توانید ببینید که:

  • هر گروه حجمی بر روی کدام حجم‌های فیزیکی ساخته شده است.
  • و چه حجم‌های منطقی از این گروه حجمی ایجاد شده‌اند.
sudo vgdisplay -v
Output
    Using volume group(s) on command line.
  --- Volume group ---
  VG Name               LVMVolGroup
  . . .

  --- Logical volume ---
  LV Path                /dev/LVMVolGroup/projects
  . . .

  --- Logical volume ---
  LV Path                /dev/LVMVolGroup/www
  . . .

  --- Logical volume ---
  LV Path                /dev/LVMVolGroup/db
  . . .

  --- Logical volume ---
  LV Path                /dev/LVMVolGroup/workspace
  . . .

  --- Physical volumes ---
  PV Name               /dev/sda
  . . .

  PV Name               /dev/sdb
  . . .

دستور vgdisplay واقعاً کاربردی است، چون می‌تواند اطلاعات مربوط به چندین بخش مختلف از ساختار LVM را به هم مرتبط کند و یک دید جامع از گروه‌های حجمی، حجم‌های فیزیکی و حجم‌های منطقی فراهم کند.

نمایش اطلاعات مربوط به حجم‌های منطقی (Logical Volumes)

برای مشاهده اطلاعات حجم‌های منطقی، LVM ابزارهای مخصوص خود را دارد.

مانند دیگر اجزای LVM، دستور lvscan سیستم را اسکن می‌کند و اطلاعات مختصری درباره حجم‌های منطقی موجود نمایش می‌دهد:

sudo lvscan
Output
  ACTIVE            '/dev/LVMVolGroup/projects' [10.00 GiB] inherit
  ACTIVE            '/dev/LVMVolGroup/www' [5.00 GiB] inherit
  ACTIVE            '/dev/LVMVolGroup/db' [20.00 GiB] inherit
  ACTIVE            '/dev/LVMVolGroup/workspace' [254.99 GiB] inherit

اگر می‌خواهید اطلاعات جامع‌تری درباره حجم‌های منطقی (Logical Volumes) داشته باشید، دستور lvs یک گزینه بسیار مناسب است. این دستور نه تنها انعطاف‌پذیر است، بلکه می‌تواند به راحتی در اسکریپت‌ها و اتوماسیون هم استفاده شود.

با استفاده از lvs می‌توانید وضعیت همه حجم‌های منطقی سیستم را به شکل مرتب و قابل فهم ببینید و تصمیم‌گیری برای مدیریت آن‌ها را ساده‌تر کنید:

sudo lvs
Output
  LV        VG          Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  db        LVMVolGroup -wi-ao----  20.00g
  projects  LVMVolGroup -wi-ao----  10.00g
  workspace LVMVolGroup -wi-ao---- 254.99g
  www       LVMVolGroup -wi-ao----   5.00g

اگر می‌خواهید تعداد استرایپ‌ها (stripes) و نوع حجم منطقی (Logical Volume type) را ببینید، می‌توانید از گزینه --segments در دستور lvs استفاده کنید:

sudo lvs --segments
Output
  LV           VG          Attr       #Str Type    SSize
  db           LVMVolGroup rwi-a-r---    2 raid1   20.00g
  mirrored_vol LVMVolGroup rwi-a-r---    3 raid1   10.00g
  test         LVMVolGroup rwi-a-r---    3 raid5   10.00g
  test2        LVMVolGroup -wi-a-----    2 striped 10.00g
  test3        LVMVolGroup rwi-a-r---    2 raid1   10.00g

برای خروجی‌ای که بهترین قابلیت خواندن توسط انسان را دارد، دستور lvdisplay مناسب‌ترین گزینه است.

اگر گزینه -m را اضافه کنید، دستور علاوه بر اطلاعات پایه، نشان می‌دهد حجم منطقی چگونه تقسیم شده و داده‌ها چگونه روی دیسک‌ها توزیع شده‌اند:

sudo lvdisplay -m
Output
  --- Logical volume ---
  LV Path                /dev/LVMVolGroup/projects
  LV Name                projects
  VG Name                LVMVolGroup
  LV UUID                IN4GZm-ePJU-zAAn-DRO3-1f2w-qSN8-ahisNK
  LV Write Access        read/write
  LV Creation host, time lvmtest, 2016-09-09 21:00:03 +0000
  LV Status              available
  # open                 1
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Segments ---
  Logical extents 0 to 2559:
    Type        linear
    Physical volume /dev/sda
    Physical extents    0 to 2559


  . . .

در این مثال، حجم منطقی /dev/LVMVolGroup/projects کاملاً روی حجم فیزیکی /dev/sda قرار دارد. این نکته وقتی واقعاً به کار می‌آید که بخواهید دیسک فیزیکی را از سیستم حذف کنید یا داده‌ها را به جای دیگری منتقل کنید. وقتی بدانید هر حجم منطقی دقیقاً روی کدام دیسک قرار دارد، می‌توانید تغییرات و جابجایی داده‌ها را با اطمینان و بدون ریسک از دست رفتن اطلاعات انجام دهید.

برای آشنایی با مدیریت پکیج‌ها در سرور مجازی لینوکس با apt-get و apt-cache، مقاله زیر را مطالعه کنید.
مدیریت پکیج‌ها در سرور مجازی لینوکس

مرحله دوم: ایجاد یا گسترش اجزای LVM در اوبونتو

در این قسمت یاد می‌گیریم چگونه حجم‌های فیزیکی، گروه‌های حجمی و حجم‌های منظقی را ایجاد و گسترش دهیم.

ایجاد حجم‌های فیزیکی از دستگاه‌های ذخیره‌سازی خام

برای اینکه بتوانید یک دستگاه ذخیره‌سازی را با LVM استفاده کنید، اول باید آن را به عنوان حجم فیزیکی (Physical Volume) مشخص کنید. این کار به LVM می‌گوید که می‌تواند از این دستگاه در داخل گروه‌های حجمی استفاده کند.

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

sudo lvmdiskscan
Output
  /dev/sda   [     200.00 GiB] 
  /dev/sdb   [     100.00 GiB] 
  2 disks
  2 partitions
  0 LVM physical volume whole disks
  0 LVM physical volumes

در این مرحله، به دستگاه‌هایی که برای تبدیل شدن به حجم فیزیکی (Physical Volume) مناسب هستند، دقت کنید.

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

برای تبدیل دستگاه‌های ذخیره‌سازی به حجم‌های فیزیکی LVM، از دستور pvcreate استفاده می‌کنیم. شما می‌توانید همزمان چند دستگاه را با هم مشخص کنید:

sudo pvcreate /dev/sda /dev/sdb

این دستور در واقع یک هدر LVM روی همه دستگاه‌های هدف می‌نویسد و آن‌ها را به عنوان حجم فیزیکی (Physical Volume) برای LVM مشخص می‌کند. با انجام این کار، دیسک‌ها آماده‌اند تا در گروه‌های حجمی استفاده شوند و بتوانید حجم‌های منطقی روی آن‌ها ایجاد کنید.

ایجاد یک گروه حجمی جدید (Volume Group) در LVM

برای ایجاد یک گروه حجمی جدید از روی حجم‌های فیزیکی LVM، از دستور vgcreate، استفاده می‌کنیم.

در این دستور، ابتدا باید نام گروه حجمی را مشخص کنید و سپس حداقل یک حجم فیزیکی را به آن اضافه کنید:

sudo vgcreate volume_group_name /dev/sda

در این مثال، گروه حجمی شما با یک حجم فیزیکی اولیه ایجاد می‌شود. اگر بخواهید می‌توانید هنگام ایجاد گروه حجمی، چند حجم فیزیکی را به صورت همزمان اضافه کنید:

sudo vgcreate volume_group_name /dev/sda /dev/sdb /dev/sdc

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

این رویکرد ساده و انعطاف‌پذیر، مدیریت فضای ذخیره‌سازی را روی سرور بسیار راحت‌تر می‌کند.

در برخی شرایط ممکن است نیاز داشته باشید بیش از یک گروه حجمی (Volume Group) ایجاد کنید. یکی دلایل اصلی این موضوع، استفاده از اندازه‌های مختلف extent برای ولوم‌های متفاوت است.

به‌طور پیش‌فرض، اندازه extent روی ۴ مگابایت قرار دارد که برای بیشتر کاربردها کاملا مناسب است و معمولا نیازی به تغییر آن نیست. اما اگر نیاز داشتید، می‌توانید هنگام ایجاد گروه حجمی با استفاده از گزینه -s اندازه extent دلخواه را مشخص کنید:

suod vgcreate -s 8M volume_group_name /dev/sda

با این دستور، یک گروه حجمی جدید ساخته می‌شود که اندازه هر extent در آن برابر با ۸ مگابایت است. این یعنی از همان ابتدا گروه حجمی شما با تنظیمات مشخص و متناسب با نیازتان ایجاد خواهد شد.

افزودن یک حجم فیزیکی (Physical Volume) در LVM

برای گسترش یک گروه حجمی و اضافه کردن دیسک‌های بیشتر، می‌توانید از دستور vgextend استفاده کنید. در این دستور ابتدا نام گروه حجمی را مشخص می‌کنید و سپس حجم‌های فیزیکی مورد نظر را اضافه می‌کنید. حتی می‌توانید چند دستگاه را همزمان معرفی کنید:

sudo vgextend volume_group_name /dev/sdb

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

ایجاد یک حجم منطقی با تعیین اندازه در LVM

برای ساخت یک حجم منطقی از فضای یک گروه حجمی، باید از دستور lvcreate استفاده کنید.

در این دستور:

  • با گزینه -L اندازه حجم منطقی را مشخص می‌کنید.
  • با گزینه -n یک نام برای آن تعیین می‌کنید.
  • در نهایت، نام گروه حجمی (Volume Group) را وارد می‌کنید تا فضا از آن گرفته شود.

مثلا اگر بخواهید یک حجم منطقی ۱۰ گیگابایتی با نام test از گروه حجمی LVMVolGroup بسازید، دستور به این شکل خواهد بود:

sudo lvcreate -L 10G -n test LVMVolGroup

اگر گروه حجمی انتخاب‌شده فضای کافی برای حجم موردنظر داشته باشد، حجم منطقی جدید با موفقیت ایجاد خواهد شد. این مرحله تضمین می‌کند که فضای ذخیره‌سازی به‌طور مناسب تخصیص داده شود و از بروز خطا در هنگام ایجاد حجم جلوگیری شود.

ایجاد یک حجم منطقی از تمام فضای آزاد باقی‌مانده در LVM

اگر می‌خواهید یک حجم منطقی با استفاده از تمام فضای آزاد باقی‌مانده در یک گروه حجمی ایجاد کنید، می‌توانید از دستور lvcreate استفاده کنید.

مانند مرحله قبل، ابتدا با گزینه -n نام حجم منطقی را مشخص می‌کنید و نام گروه حجمی را هم وارد می‌کنید. اما به جای تعیین اندازه با -L، از گزینه -l 100%FREE استفاده کنید تا تمام extents آزاد موجود در گروه حجمی برای ایجاد حجم منطقی استفاده شود:

sudo lvcreate -l 100%FREE -n test2 LVMVolGroup

با این روش، تمام فضای آزاد باقی‌مانده در گروه حجمی برای ایجاد حجم منطقی استفاده خواهد شد و دیگر فضای بلااستفاده باقی نمی‌ماند.

ایجاد حجم‌های منطقی با گزینه‌های پیشرفته در LVM

با استفاده از گزینه‌های پیشرفته، می‌توانید نوع و نحوه تخصیص داده‌ها در حجم منطقی را کنترل کنید. برخی از این گزینه‌ها عبارتند از:

  • --type: نوع حجم منطقی را مشخص می‌کند و تعیین می‌کند داده‌ها چگونه روی حجم‌های فیزیکی زیرین توزیع شوند. توجه داشته باشید که برخی انواع تنها در صورت وجود تعداد کافی حجم فیزیکی قابل ایجاد هستند. انواع رایج عبارتند از:
  • linear: نوع پیش‌فرض. حجم‌های فیزیکی زیرین، اگر بیش از یکی باشند، به صورت پشت سر هم به هم متصل می‌شوند.
  • striped: مشابه RAID 0، داده‌ها به بخش‌های کوچک تقسیم شده و به صورت چرخشی روی حجم‌های فیزیکی توزیع می‌شوند. این روش می‌تواند عملکرد را بهبود دهد اما ممکن است ریسک از دست رفتن داده‌ها را افزایش دهد. برای این نوع، گزینه -i و حداقل دو حجم فیزیکی لازم است.
  • raid1: ایجاد یک حجم RAID 1 آینه‌ای. به طور پیش‌فرض، دو نسخه از داده‌ها ایجاد می‌شود، اما می‌توان تعداد نسخه‌ها را با گزینه -m افزایش داد. حداقل دو حجم فیزیکی لازم است.
  • raid5: ایجاد یک حجم RAID 5 که نیازمند حداقل سه حجم فیزیکی است.
  • raid6: ایجاد یک حجم RAID 6 که نیازمند حداقل چهار حجم فیزیکی است.
  • -m: تعداد نسخه‌های اضافی داده‌ها را مشخص می‌کند. مقدار 1 یعنی یک نسخه اضافی، در مجموع دو نسخه داده خواهید داشت.
  • -i: تعداد استرایپ‌ها (stripes) را مشخص می‌کند. این گزینه برای نوع striped الزامی است و می‌تواند رفتار پیش‌فرض برخی RAIDها را تغییر دهد.
  • -s: به جای ایجاد یک حجم منطقی مستقل جدید، از یک حجم منطقی موجود snapshot ایجاد می‌کند.

برای شروع، می‌خواهیم یک حجم منطقی از نوع striped ایجاد کنیم.

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

این نوع توزیع داده باعث می‌شود اطلاعات به بخش‌های کوچک تقسیم شده و به صورت چرخشی روی دیسک‌ها ذخیره شوند، که می‌تواند عملکرد ذخیره‌سازی را بهبود دهد.

sudo lvcreate --type striped -i 2 -L 10G -n striped_vol LVMVolGroup

برای ایجاد یک حجم منطقی آینه‌ای (mirrored)، از نوع raid1 استفاده کنید.

اگر می‌خواهید بیش از دو نسخه از داده‌ها داشته باشید، می‌توانید از گزینه -m استفاده کنید. در این مثال، با -m 2، سه نسخه از داده‌ها ایجاد می‌شود: یک نسخه اصلی و دو نسخه آینه‌ای. برای موفقیت‌آمیز بودن این عملیات، حداقل سه حجم فیزیکی با فضای کافی نیاز دارید تا LVM بتواند داده‌ها را به درستی روی آن‌ها توزیع کند.

sudo lvcreate --type raid1 -m 2 -L 20G -n mirrored_vol LVMVolGroup

برای ایجاد snapshot از یک حجم منطقی، باید حجم منطقی اصلی که می‌خواهید از آن snapshot بگیرید را مشخص کنید، نه گروه حجمی.

در ابتدا، snapshot فضای زیادی اشغال نمی‌کند، اما با هر تغییری که روی حجم منطقی اصلی انجام می‌شود، اندازه آن افزایش پیدا می‌کند. اندازه‌ای که در هنگام ایجاد مشخص می‌کنید، حداکثر ظرفیت snapshot است.

اگر snapshot از این اندازه فراتر رود، خراب شده و قابل استفاده نخواهد بود. با این حال، snapshotهایی که نزدیک به ظرفیت خود هستند را می‌توان بزرگتر کرد تا فضای بیشتری در اختیارشان قرار گیرد.

sudo lvcreate -s -L 10G -n snap_test LVMVolGroup/test

افزایش اندازه یک حجم منطقی در LVM

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

برای افزایش اندازه یک حجم منطقی موجود (Logical Volume)، از دستور lvresize استفاده کنید.

  • با گزینه -L می‌توانید اندازه جدید را مشخص کنید.
  • همچنین می‌توانید از اندازه‌های نسبی استفاده کنید؛ مثلاً با +size، LVM اندازه حجم منطقی را به میزان مشخص‌شده افزایش می‌دهد.
  • اگر می‌خواهید سیستم فایل روی حجم منطقی نیز به‌طور خودکار تغییر اندازه دهد، می‌توانید گزینه --resizefs را اضافه کنید.

برای مشخص کردن نام حجم منطقی که می‌خواهید اندازه آن را افزایش دهید، باید ابتدا نام گروه حجمی، سپس یک / و در ادامه نام حجم منطقی را وارد کنید:

sudo lvresize -L +5G --resizefs LVMVolGroup/test

در این مثال، هم حجم منطقی test و هم سیستم فایل آن که در گروه حجمی LVMVolGroup قرار دارد، به میزان ۵ گیگابایت افزایش پیدا می‌کنند. اگر ترجیح می‌دهید گسترش سیستم فایل را خودتان به‌صورت دستی مدیریت کنید، گزینه --resizefs را حذف کنید و پس از آن از ابزار بومی سیستم فایل برای افزایش اندازه استفاده کنید.

برای مثال، اگر سیستم فایل Ext4 باشد، می‌توانید دستور زیر را اجرا کنید:

sudo lvresize -L +5G LVMVolGroup/test
sudo resize2fs /dev/LVMVolGroup/test
نحوه شخصی‌سازی اتصال به سرور مجازی لینوکس (VPS) با SSH را در در مقاله زیر مطالعه کنید.
شخصی‌سازی اتصال به سرور مجازی لینوکس

مرحله سوم: حذف یا کاهش اندازه کامپوننت‌های LVM

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

کاهش اندازه یک Logical Volume در LVM

برای کوچک کردن حجم منطقی (Logical Volume) قبل از هر چیز باید یک نکته‌ی مهم را جدی بگیرید: حتماً از داده‌های خود بکاپ بگیرید. چون در این فرآیند ظرفیت کاهش پیدا می‌کند و هر اشتباه کوچکی می‌تواند منجر به از دست رفتن اطلاعات شود.

بعد از اینکه مطمئن شدید همه چیز امن است، قدم بعدی این است که بررسی کنید چه مقدار فضا در حال حاضر استفاده شده تا بدانید چقدر امکان کاهش وجود دارد:

df -h
Output
Filesystem                         Size  Used Avail Use% Mounted on
. . .
/dev/mapper/LVMVolGroup-test       4.8G  521M  4.1G  12% /mnt/test

در این مثال مشاهده کردیم که کمی بیشتر از ۵۲۱ مگابایت فضا در حال استفاده است. این عدد به شما کمک می‌کند تا تخمین بزنید حجم منطقی را تا چه اندازه می‌توانید بدون خطر کاهش دهید.

برخلاف افزایش حجم، کوچک کردن سیستم‌فایل فقط زمانی باید انجام شود که Volume Unmount شده باشد. پس قبل از هر کاری، با دستور زیر مطمئن شوید که در دایرکتوری ریشه (/) قرار دارید:

cd ~

حالا نوبت می‌رسد به Unmount کردن سیستم‌فایل. این کار لازم است تا بتوانید بدون مشکل عملیات کاهش حجم را انجام دهید:

sudo umount /dev/LVMVolGroup/test

بعد از اینکه سیستم‌فایل را Unmount کردید، وقت آن است که مطمئن شوید همه‌چیز سالم است و هیچ خطایی وجود ندارد. برای این کار از ابزار بررسی سلامت سیستم‌فایل استفاده می‌کنیم.

با گزینه‌ی -t می‌توانید نوع سیستم‌فایل را مشخص کنید و گزینه‌ی -f هم باعث می‌شود بررسی حتی وقتی همه‌چیز سالم به نظر می‌آید، به‌صورت اجباری انجام شود.

sudo fsck -t ext4 -f /dev/LVMVolGroup/test

بعد از اینکه سلامت سیستم‌فایل را بررسی کردید، می‌توانید با استفاده از ابزار مخصوص همان سیستم‌فایل، اندازه‌ش را کاهش دهید. برای سیستم‌فایل‌های Ext4، این کار با دستور resize2fs انجام می‌شود. فقط کافیست اندازه‌ی نهایی سیستم‌فایل را مشخص کنید، مثلاً:

sudo resize2fs -p /dev/LVMVolGroup/test 3G

وقتی کار کاهش اندازه‌ی سیستم‌فایل تمام شد، نوبت می‌رسد به خود Logical Volume. برای این مرحله باید از دستور lvresize استفاده کنید و با گزینه‌ی -L همان اندازه‌ای را که برای سیستم‌فایل تعیین کردید، به حجم منطقی بدهید:

sudo lvresize -L 3G LVMVolGroup/test

در این مرحله یک هشدار داده می‌شود که ممکن است فرآیند کاهش حجم منطقی (Logical Volume) باعث از دست رفتن داده‌ها شود. اگه مطمئن هستید همه‌چیز درست بوده و بکاپ هم دارید، با زدن y ادامه دهید.

بعد از اینکه حجم منطقی با موفقیت کوچک شد، بهتر است یک بار دیگر سلامت سیستم‌فایل را بررسی کنید تا خیالتان راحت شود:

sudo fsck -t ext4 -f /dev/LVMVolGroup/test

حالا حجم منطقی شما باید به اندازه‌ی مطلوب و تعیین‌شده کاهش یافته باشد و آماده استفاده باشد.

حذف یک Logical Volume

اگر دیگر نیازی به یک حجم منطقی (Logical Volume) ندارید، می‌توانید با دستور lvremove آن را حذف کنید. قبل از هر کاری، اگر حجم منطقی در حال حاضر Mount است، ابتدا آن را Unmount کنید:

cd ~
sudo umount /dev/LVMVolGroup/test

بعد از آن، برای حذف کامل حجم منطقی از دستور زیر استفاده کنید:

sudo lvremove LVMVolGroup/test

در این مرحله، از شما تأیید نهایی خواسته می‌شود. اگر مطمئن هستید که می‌خواهید حجم منطقی را حذف کنید، با زدن y عملیات را ادامه دهید.

حذف یک Volume Group

چنانچه می‌خواهید یک گروه حجمی (Volume Group) کامل را حذف کنید، به همراه تمام حجم‌های منطقی (Logical Volumes) داخل آن، می‌توانید از دستور vgremove استفاده کنید. قبل از حذف گروه حجمی، باید تمام حجم‌های منطقی داخل آن را حذف کنید، مطابق مراحلی که قبلاً توضیح داده شد. حداقل کاری که باید انجام دهید این است که مطمئن شوید تمام حجم‌های منطقی موجود در گروه حجمی Unmount شده باشند:

sudo umount /dev/LVMVolGroup/www
sudo umount /dev/LVMVolGroup/projects
sudo umount /dev/LVMVolGroup/db

حالا، پس از اطمینان از حذف یا Unmount شدن تمام حجم‌های منطقی، می‌توانید کل گروه حجمی را با استفاده از دستور vgremove حذف کنید. کافی است نام گروه حجمی موردنظر را وارد کنید:

sudo vgremove LVMVolGroup

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

حذف یک Physical Volume

برای حذف یک حجم فیزیکی (Physical Volume) از مدیریت LVM، روش کار بستگی دارد به این که آیا این دستگاه در حال حاضر توسط LVM استفاده می‌شود یا خیر.

  • اگر حجم فیزیکی در حال استفاده باشد، باید Physical Extents موجود روی آن را به جای دیگری منتقل کنید. این کار نیازمند این است که گروه حجمی دارای حجم‌های فیزیکی کافی برای پذیرش این extents باشد.
  • اگر از نوع‌های پیچیده‌تر Logical Volume استفاده می‌کنید، حتی در صورت داشتن فضای آزاد کافی، ممکن است به حجم‌های فیزیکی اضافه نیاز داشته باشید تا ساختار LVM به درستی حفظ شود.

وقتی مطمئن شدید که گروه حجمی فضای کافی برای انتقال Physical Extents دارد، می‌توانید داده‌های موجود روی حجم فیزیکی موردنظر برای حذف را با دستور زیر به جای دیگری منتقل کنید:

sudo pvmove /dev/sda

با این کار، حجم فیزیکی که داده‌های آن منتقل شده، از گروه حجمی خالی و حذف می‌شود.
پس از اتمام این مرحله، می‌توانید مارکرLVM (Physical Volume marker) را نیز از روی دستگاه ذخیره‌سازی حذف کنید:

sudo pvremove /dev/sda

حالا می‌توانید از این دستگاه ذخیره‌سازی حذف‌شده برای اهداف دیگر استفاده کنید یا آن را به طور کامل از سیستم خارج کنید.

جمع بندی

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

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