LVM مخفف عبارت Logical Volume Manager است و در لینوکس، دیسک درایوها و سایر دستگاه‌های ذخیره اطلاعات را مدیریت می‌کند. مقصود از عبارت "volume"، یک درایو دیسک یا پارتیشن آن است. LVM روشی پیشرفته برای مدیریت پارتیشن‌ها و فضای دیسک سخت در لینوکس است که امکانات بسیار گسترده‌تری را نسبت به مدل پارتیشن‌بندی سنتی در اختیار مدیر سیستم می‌گذارد.

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

 

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

 

این مطلب نیز ممکن است برای شما مفید باشد: RAID (آرایه چندگانه دیسک‌های مستقل)

 

در این آموزش نحوه افزایش volume Group و همچنین افزایش و کاهش Logical volume آموزش داده می‌شود. بدین‌صورت می‌توان پارتیشن‌ها را در مدیریت Logical volume مشهور به سیستم فایل فضای انعطاف‌پذیر کاهش و یا افزایش داد.

 

چه زمانی به کاهش فضا نیاز است؟

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

دقت کنید که دستورات ارائه شده در این آموزش، در سیستم عامل CentOS 6.5 با LVM نصب شده اجرا شده است.

 

نحوه افزایش volume Group و کاهش logical volume

 

افزایش logical volume

فرض کنید که یک PV، یکVG و دو LV داریم. بیایید آن‌ها را یک به یک با استفاده از دستورات زیر مشاهده کنیم.

# pvs
# vgs
# lvs

 

در ابتدا در Physical Volume و Volume group هیچ فضای خالی موجود نیست. بنابراین، اکنون نمی‌توانید اندازه lvm را افزایش دهید، بلکه برای افزایش باید یک Physical Volume (PV) اضافه کرده و سپس Volume Group را با افزایش vg افزایش دهید. بدین صورت، فضای کافی برای افزایش اندازه logical Volume را به دست خواهید آورد. بنابراین ابتدا باید یک Physical Volume اضافه کنید.

برای افزودن یک PV جدید باید از fdisk استفاده کنید تا پارتیشن LVM ایجاد شود.

# fdisk -cu /dev/sda

 

همانطور که در شکل بالا قابل مشاهده است:

  • برای ایجاد پارتیشن جدید، n را تایپ کنید.
  • پارتیشن اولیه را با استفاده از p انتخاب نمایید.
  • تعداد پارتیشن‌های مورد نظر خود را برای ایجاد پارتیشن‌های اولیه انتخاب کنید.
  • در صورتی که دیسک دیگری وجود دارد، 1 را کلیک نمایید.
  • نوع را با استفاده از t تغییر دهید.
  • برای تغییر نوع پارتیشن به Linux LVM، 8e را تایپ کنید.
  • برای نمایش پارتیشن ایجاد شده از p استفاده کنید (در این مثال ما از هیچ گزینه ای استفاده نکرده ایم).
  • برای اعمال تغییرات، w را کلیک نمایید.

پس از طی کردن این مراحل، سیستم را مجدداً راه‌اندازی کنید.

پس از آن، پارتیشن ایجاد شده با استفاده از fdisk را لیست کرده و بررسی نمایید.

# fdisk -l /dev/sda

 

سپس، با استفاده از دستور زیر، PV جدید را ایجاد کنید.

# pvcreate /dev/sda1

Pv را با استفاده از دستور زیر تأیید نمایید.

# pvs

 

افزایش Volume Group

این pv را به vg_tecmint vg اضافه کنید تا اندازه یک Volume Group به منظور بدست آوردن فضای بیشتر برای گسترش lv افزایش یابد.

# vgextend vg_tecmint /dev/sda1

با استفاده از دستور زیر می‌توان اندازه Volume Group استفاده شده در این مثال را بررسی کرد.

# vgs

 

علاوه‌براین، با دستور زیر می‌توان مشاهده نمود که از کدام PV برای ایجاد یک Volume Group خاص استفاده می‌شود.

# pvscan

 

در اینجا قابل مشاهده است که هرکدام از Volume Groupها تحت چه Volume Groupای قرار دارند. در این مثال، تنها یک pv اضافه کرده‌ایم و آن هم کاملاً آزاد است. بیایید اندازه هر Volume Group را قبل از گسترش آن ببینیم.

 

همانطور که در شکل بالا قابل مشاهده است:

  • LogVol00 برای Swap تعریف شده است.
  • LogVol01 برای / تعریف شده است.
  • اکنون برای / (root) اندازه 16.50GB را داریم.
  • در حال حاضر 4226 Extension Physical (PE) در دسترس است.

اکنون می‌خواهیم پارتیشن LogVol01 یا به عبارت دیگر / را افزایش دهیم. پس از آن می‌توان اندازه پارتیشن بالا را با سایز جدید مشاهده کرد.

برای به دست آوردن اندازه physical extend موجود می‌توان از دستور vgdisplay به صورت زیر استفاده نمود.

# vgdisplay

 

همانطور که قابل مشاهده است، در اینجا 4607 فضای آزاد PE در دسترس است. بنابراین می‌توان logical volume خود را تا اندازه 18 گیگابایت افزایش داد. بیایید با استفاده از دستور زیر، از اندازه PE برای گسترش استفاده کنیم.

# lvextend -l +4607 /dev/vg_tecmint/LogVol01

برای اضافه کردن فضای بیشتر از + استفاده نمایید. پس از گسترش، باید اندازه سیستم فایل را با استفاده از دستور زیر مجدد مقداردهی کنیم.

# resize2fs /dev/vg_tecmint/LogVol01

 

همانطور که در شکل بالا قابل مشاهده است:

  • دستور، برای افزایش logical volume با استفاده از Physical extends استفاده شده است.
  • در اینجا می‌بینیم که از 16.51گیگابایت تا 34 گیگابایت نیز گسترش یافته است.
  • اگر سیستم فایل فعال شده و اکنون مورد استفاده باشد، اندازه سیستم فایل را مجدداً مقداردهی می‌نماید.
  • برای گسترش extending Logical، نیازی به حذف سیستم فایل نیست.

اکنون بیایید اندازه logical volume را مجدداً با استفاده از دستور زیر مقداردهی کنیم.

# lvdisplay

 

همانطور که در شکل بالا قابل مشاهده است:

  • LogVol01، برای سایز گسترش یافته / تعریف شده است.
  • سایز از 16.50 گیگابایت به 34.50 گیگابایت گسترش یافته است.
  • قبل از گسترش فضا، اندازه آن 4226 بود و پس از آن 4607 اضافه شد، بنابراین در مجموع 8833 فضا وجود دارد.

حال اگر vg موجود را با PE آزاد بررسی کنیم، 0 خواهد بود.

# vgdisplay

اکنون می‌توانید نتیجه گسترش را به صورت زیر مشاهده کنید.

# pvs
# vgs
# lvs

 

همانطور که در شکل بالا قابل مشاهده است:

  • Physical volume جدید اضافه شده است.
  • Volume groupمربوط به vg_tecmint از 17.51 گیگابایت به 35.50 گیگابایت افزایش یافته است.
  • logical volume مربوط به LogVol01 از 16.51 گیگابایت به 34.50 گیگابایت افزایش یافته است.

تا اینجا، فرایند گسترش volume group و logical volume به پایان رسید. در ادامه می‌خواهیم به بخش‌های مهمی از مدیریت Logical volume بپردازیم.

 

کاهش Logical Volume

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

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

برای کاهش یک Logical Volume، شش مرحله اصلی لازم است که باید با دقت انجام شود.

اگرچه فرآیند افزایش Volume را می‌توان در زمانی انجام داد که Volume در وضعیت فعال (آنلاین) است؛ اما، برای کاهش Volume باید قبل از کاهش، سیستم فایل را غیرفعال نماییم.

بیایید نگاهی به این 6 مرحله بیندازیم:

  • غیرفعال کردن سیستم فایل برای اجرای فرآیند کاهش Volume.
  • بررسی سیستم فایل پس از غیرفعال کردن آن.
  • کاهش سیستم فایل.
  • کاهش اندازه Logical Volume نسبت به اندازه فعلی.
  • بررسی دوباره سیستم فایل به منظور رفع خطاها.
  • فعال کردن مجدد سیستم فایل.

به عنوان مثال، در اینجا یک logical volume و volume group مجزا ایجاد کرده و می‌خواهیم logical volume با نام tecmint_reduce_test را کاهش دهیم. اکنون، اندازه آن 18 گیگابایت است و باید بدون از بین رفتن داده، آن را به 10 گیگابایت کاهش دهیم. این بدان معنی است که باید 8 گیگابایت از 18 گیگابایت را کاهش دهیم. در حال حاضر داده‌های داخل volume، به اندازه 4 گیگابایت فضای آن را اشغال کرده است.

18GB ---> 10GB

بنابراین در فرآیند کاهش volume، باید فقط 8 گیگابایت را کاهش دهیم تا پس از کاهش، به 10 گیگابایت برسد.

# lvs

 

در اینجا می‌توانیم اطلاعات مربوط به سیستم فایل را مشاهده کنیم.

# df -h

 

همانطور که در شکل بالا قابل مشاهده است:

  • اندازه Volume  به اندازه 18 گیگابایت است.
  • تاکنون 3.9 گیگابایت استفاده شده است.
  • فضای موجود 13 گیگابایت است.

همانطور که بیان شد، ابتدا سیستم فایل را غیرفعال کنید.

# umount -v /mnt/tecmint_reduce_test/

 

سپس با استفاده از دستور زیر، خطای سیستم فایل را بررسی نمایید.

# e2fsck -ff /dev/vg_tecmint_extra/tecmint_reduce_test

 

توجه: در تمام مراحل باید سیستم فایل را دائماً بررسی کنید که مشکلی در سیستم فایل شما وجود نداشته باشد.

سپس، سیستم فایل را کاهش دهید.

# resize2fs /dev/vg_tecmint_extra/tecmint_reduce_test 10GB

 

با استفاده از دستور زیر، اندازه Logical volume را کاهش دهید.

# lvreduce -L -8G /dev/vg_tecmint_extra/tecmint_reduce_test

 

برای کاهش Logical Volume با استفاده از اندازه PE، باید اندازه پیش فرض PE و اندازه کل PE یک Volume Group را بدانیم تا یک محاسبه کوچک برای اندازه دقیق کاهش بدست آوریم.

# lvdisplay vg_tecmint_extra

در اینجا باید برای بدست آوردن اندازه PE نسبت به 10 گیگابایت، از دستور bc استفاده نماییم.

1024MB x 10GB = 10240MB or 10GB

10240MB / 4PE = 2048PE

برای خروج از BC، کلید‌ترکیبی CRTL+D را فشار دهید.

 

اندازه را با استفاده از PE کاهش دهید.

# lvreduce -l -2048 /dev/vg_tecmint_extra/tecmint_reduce_test

 

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

# resize2fs /dev/vg_tecmint_extra/tecmint_reduce_test

 

سیستم فایل را فعال کنید.

# mount /dev/vg_tecmint_extra/tecmint_reduce_test /mnt/tecmint_reduce_test/

 

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

# lvdisplay vg_tecmint_extra

در اینجا می‌توان نتیجه نهایی را مشاهده کرد که logical Volume به اندازه 10 گیگابایت کاهش یافته است.

 

 

 

منبع:

tecmint