کار عملی با LV
پس از داشتن یک Volume Group، میتوان از فضای آن Logical Volume ساخت. در این درس مراحل کامل ساخت یک LV، فرمت کردن آن و افزایش بعدی حجمش را میبینیم.
› ساخت یک LV به حجم ۲۰ گیگابایت از data_vg
sudo lvcreate -L 20G -n app_lv data_vg
› فرمت کردن با فایلسیستم ext4
sudo mkfs.ext4 /dev/data_vg/app_lv
› ساخت نقطه mount و اتصال
sudo mkdir -p /mnt/appdata
sudo mount /dev/data_vg/app_lv /mnt/appdata
› بررسی فضای استفادهشده
df -h /mnt/appdata
حالا فرض کنید فضای این LV تمام شده و Volume Group هنوز فضای آزاد دارد. افزایش حجم بدون قطع سرویس ممکن است:
› افزایش ۱۰ گیگابایت به LV
sudo lvextend -L +10G /dev/data_vg/app_lv
› گسترش فایلسیستم ext4 برای استفاده از فضای جدید
sudo resize2fs /dev/data_vg/app_lv
› در صورت استفاده از فایلسیستم XFS بهجای resize2fs
sudo xfs_growfs /mnt/appdata
نکته بسیار مهم: کوچک کردن (shrink) یک Logical Volume بسیار خطرناکتر از بزرگ کردن آن است و در فایلسیستم
XFS اصلاً پشتیبانی نمیشود. برای ext4 هم باید ابتدا فایلسیستم را unmount کرده، با resize2fs
کوچک کنید و سپس با lvreduce حجم LV را کاهش دهید؛ ترتیب برعکس باعث از دست رفتن داده میشود.
بنابراین همیشه پیش از هر عملیات کوچکسازی، یک بکاپ کامل تهیه کنید.
دلیل این نامتقارنی این است که بزرگ کردن فقط به معنای افزودن فضای خالی جدید به انتهای فایلسیستم است و
هیچ دادهای جابهجا نمیشود، اما کوچک کردن نیاز دارد فایلسیستم ابتدا بلوکهای داده در انتهای فضا را به
سمت ابتدا جابهجا کند تا فضای انتهایی خالی و قابل حذف شود؛ اگر این جابهجایی به هر دلیلی (قطع برق، خطای
دیسک) در میانه راه متوقف شود، ساختار فایلسیستم میتواند آسیب ببیند. به همین دلیل بسیاری از مدیران سیستم
باتجربه بهجای کوچک کردن یک LV موجود، ترجیح میدهند یک LV جدید با حجم درست بسازند، داده را با
rsync به آن منتقل کنند و سپس LV قدیمی را حذف کنند؛ این روش کندتر اما بهمراتب امنتر است.