افزایش و کاهش سایز LVM در لینوکس

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

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

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

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

lvm

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

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

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

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

افزایش logical volume

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

  1. pvs

  2. vgs

  3. lvs

lvm

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

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

fdisk -cu /dev/sda

lvm

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

n: جهت ایجاد یک پارتیشن جدید

P: جهت ایجاد یک پارتیشن primary

1: شماره پارتیشن مورد نظر که میتواند بین 1 تا 4 باشد.

t: جهت مشخص کردن type پارتیشن ایجاد شده

8e: کد مربوط به فرمت LVM

w: جهت نوشتن و ذخیره کردن تغییرات.

در صورت نیاز، لازم است تا سیستم جهت خواندن مجدد Partition Table مجددا راه اندازی گردد.

در نهایت با دستور زیر میتوان پارتیشن ایجاد شده را مشاهده نمود.

fdisk -l /dev/sda

lvm

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

pvcreate /dev/sda1

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

pvs

lvm

افزایش Volume Group

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

vgextend vg_tecmint /dev/sda1

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

vgs

lvm

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

pvscan

lvm

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

lvm

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

LogVol00 برای Swap تعریف شده است.

LogVol01 برای / تعریف شده است.

اکنون برای / (root) اندازه 16.50GB را داریم. در حال حاضر 4226 Extension Physical (PE) در دسترس است.

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

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

vgdisplay

lvm

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

lvextend -l +4607 /dev/vg_tecmint/LogVol01

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

resize2fs /dev/vg_tecmint/LogVol01

lvm

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

lvm

کاهش 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

lvm

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

df -h

lvm

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

اندازه Volume به اندازه 18 گیگابایت است.

تاکنون 3.9 گیگابایت استفاده شده است.

فضای موجود 13 گیگابایت است.

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

umount -v /mnt/tecmint_reduce_test/

lvm

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

e2fsck -ff /dev/vg_tecmint_extra/tecmint_reduce_test

lvm

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

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

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

lvm

برای کاهش 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 را فشار دهید.

lvm

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

lvreduce -l -2048 /dev/vg_tecmint_extra/tecmint_reduce_test

lvm

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

resize2fs /dev/vg_tecmint_extra/tecmint_reduce_test

lvm

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

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

lvm

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

lvdisplay vg_tecmint_extra

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

منبع:

https://tecmint.com