سطح: متوسط | مناسب برای: مدیران سرور لینوکس، کاربران VPS، مدیران هاست، DevOpsها و افرادی که میخواهند فضای دیسک لینوکس را بدون نصب مجدد سیستم افزایش دهند
افزایش حجم پارتیشن در لینوکس یکی از کارهای رایج مدیران سرور است؛ مخصوصاً زمانی که فضای مسیرهایی مثل /home، /var، / یا مسیر دیتابیس پر میشود و باید بدون جابهجایی کامل دادهها، فضای بیشتری به آن اختصاص دهید. اگر سرور شما از LVM استفاده میکند، این کار معمولاً با انعطاف بیشتری انجام میشود.
LVM یا Logical Volume Manager در لینوکس این امکان را میدهد که فضای دیسک را به شکل منطقی مدیریت کنید. بهجای اینکه فقط با پارتیشنهای ثابت کار کنید، میتوانید Volume Group، Logical Volume و Physical Volume داشته باشید و در صورت وجود فضای آزاد، حجم Logical Volume را افزایش دهید.
در بعضی منابع قدیمی ممکن است دستور بهاشتباه به شکل lvexend نوشته شده باشد، اما دستور صحیح lvextend است. در این آموزش، روش درست افزایش حجم پارتیشن LVM با دستور lvextend را مرحلهبهمرحله بررسی میکنیم و توضیح میدهیم بعد از افزایش Logical Volume، چطور فایلسیستم را هم بزرگتر کنید.
اگر این کار را روی سرور مجازی انجام میدهید، پیشنهاد میکنیم قبل از ادامه، مقاله سرور مجازی چیست؟ را هم بخوانید. همچنین اگر به زیرساخت لینوکسی نیاز دارید، میتوانید صفحه سرور مجازی و اختصاصی پویاسازان و صفحه سرور مجازی آلمان را بررسی کنید.
فهرست مطالب
- LVM چیست و چرا برای مدیریت دیسک مفید است؟
- هشدار مهم قبل از افزایش حجم LVM
- آشنایی سریع با PV، VG و LV
- سناریوی این آموزش
- مرحله ۱: بررسی وضعیت دیسک و فایلسیستم
- مرحله ۲: بررسی فضای آزاد Volume Group
- مرحله ۳: پیدا کردن مسیر Logical Volume
- مرحله ۴: افزایش حجم Logical Volume با مقدار مشخص
- مرحله ۵: افزایش حجم با استفاده از کل فضای آزاد VG
- مرحله ۶: افزایش حجم فایلسیستم
- روش سادهتر: استفاده از گزینه -r در lvextend
- اگر در Volume Group فضای آزاد نداریم چه کنیم؟
- تفاوت افزایش حجم در ext4 و XFS
- خطاهای رایج هنگام افزایش حجم LVM
- چکلیست سریع افزایش حجم پارتیشن LVM
- سوالات متداول
LVM چیست و چرا برای مدیریت دیسک مفید است؟
LVM یک لایه مدیریت منطقی برای فضای ذخیرهسازی در لینوکس است. با LVM میتوانید فضای چند دیسک یا چند پارتیشن را در قالب یک Volume Group مدیریت کنید و سپس از آن، Logical Volumeهای مختلف بسازید.
مزیت اصلی LVM این است که مدیریت فضا را انعطافپذیرتر میکند. برای مثال اگر مسیر /home یا /var به فضای بیشتری نیاز داشته باشد و در Volume Group فضای آزاد موجود باشد، میتوانید بدون ساخت پارتیشن سنتی جدید، فضای Logical Volume مربوطه را افزایش دهید.
LVM در سرورهای لینوکسی، سرورهای مجازی، سیستمهای دارای چند دیسک و محیطهایی که رشد دادهها قابل پیشبینی نیست، بسیار کاربردی است. اگر روی لینوکس کار میکنید، شناخت LVM یکی از مهارتهای مهم مدیریت سرور محسوب میشود.
هشدار مهم قبل از افزایش حجم LVM
افزایش حجم LVM معمولاً نسبت به کاهش حجم کمریسکتر است، اما همچنان باید با دقت انجام شود. قبل از اجرای دستورات، این نکات را جدی بگیرید:
- از اطلاعات مهم بکاپ بگیرید.
- مطمئن شوید دستور را روی Logical Volume درست اجرا میکنید.
- نوع فایلسیستم را قبل از resize کردن بررسی کنید.
- دستورات را با عجله و بدون بررسی خروجی اجرا نکنید.
- اگر سرور production است، بهتر است این کار در زمان کمترافیک انجام شود.
- اگر از Snapshot، RAID، SAN یا پنل مجازیسازی استفاده میکنید، وضعیت لایههای زیرین را هم بررسی کنید.
اگر این عملیات روی سرور مهم انجام میشود، داشتن بکاپ ضروری است. برای مطالعه بیشتر درباره اهمیت پشتیبانگیری، دسته بکاپ و بازیابی اطلاعات را هم ببینید.
آشنایی سریع با PV، VG و LV
قبل از اجرای دستورات، بهتر است سه مفهوم اصلی LVM را بشناسید:
| اصطلاح | نام کامل | توضیح |
|---|---|---|
| PV | Physical Volume | دیسک یا پارتیشنی که وارد ساختار LVM شده است |
| VG | Volume Group | مجموعهای از PVها که فضای مشترک ایجاد میکنند |
| LV | Logical Volume | فضای منطقی ساختهشده از VG که معمولاً به مسیرهایی مثل /home یا /var متصل میشود |
وقتی میخواهید حجم یک پارتیشن LVM را افزایش دهید، در واقع معمولاً حجم یک Logical Volume را افزایش میدهید و سپس فایلسیستم داخل آن را بزرگتر میکنید.
سناریوی این آموزش
فرض کنیم یک سرور لینوکسی داریم که مسیر /home روی LVM قرار دارد و میخواهیم حجم آن را افزایش دهیم. همچنین فرض میکنیم در Volume Group فضای آزاد وجود دارد.
سناریوی نمونه:
- مسیر موردنظر:
/home - Logical Volume:
/dev/mapper/ubuntu--vg-home - هدف: افزایش حجم
/home - فایلسیستم: ext4 یا XFS
نام Volume Group و Logical Volume در سرور شما ممکن است متفاوت باشد. بنابراین دستورات را دقیقاً کپی نکنید؛ ابتدا مسیرهای واقعی سرور خود را با دستوراتی که در ادامه میآید پیدا کنید.
مرحله ۱: بررسی وضعیت دیسک و فایلسیستم
ابتدا وضعیت فضای دیسک را بررسی کنید:
df -hاین دستور نشان میدهد هر مسیر چه مقدار فضا دارد و چند درصد آن استفاده شده است.
برای دیدن نوع فایلسیستم، میتوانید از دستور زیر استفاده کنید:
df -Thنمونه خروجی:
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-home ext4 50G 45G 5G 90% /homeدر این مثال، مسیر /home روی یک Logical Volume قرار دارد و فایلسیستم آن ext4 است.
مرحله ۲: بررسی فضای آزاد Volume Group
برای اینکه بتوانید حجم یک Logical Volume را افزایش دهید، باید در Volume Group فضای آزاد وجود داشته باشد. برای بررسی وضعیت Volume Group از دستور زیر استفاده کنید:
vgsیا:
vgdisplayدر خروجی، به مقدار VFree یا Free PE / Size توجه کنید. اگر این مقدار بیشتر از صفر باشد، یعنی Volume Group فضای آزاد دارد و میتوانید آن را به Logical Volume اضافه کنید.
نمونه خروجی ساده:
VG #PV #LV #SN Attr VSize VFree
ubuntu-vg 1 2 0 wz--n- 100.00g 20.00gدر این مثال، Volume Group حدود ۲۰ گیگابایت فضای آزاد دارد.
مرحله ۳: پیدا کردن مسیر Logical Volume
برای دیدن Logical Volumeها از دستور زیر استفاده کنید:
lvsیا:
lvdisplayهمچنین دستور زیر میتواند ساختار دیسک و mount pointها را واضحتر نشان دهد:
lsblkنمونه خروجی:
NAME SIZE MOUNTPOINT
sda 100G
└─sda3 100G
├─ubuntu--vg-root 70G /
└─ubuntu--vg-home 10G /homeدر این مثال، Logical Volume مربوط به /home مشخص است.
مرحله ۴: افزایش حجم Logical Volume با مقدار مشخص
اگر میخواهید مقدار مشخصی فضا به Logical Volume اضافه کنید، از دستور lvextend استفاده میکنیم.
مثلاً برای اضافه کردن ۱۰ گیگابایت به Logical Volume مربوط به /home:
sudo lvextend -L +10G /dev/mapper/ubuntu--vg-homeدر این دستور:
-L +10Gیعنی ۱۰ گیگابایت به حجم فعلی اضافه شود./dev/mapper/ubuntu--vg-homeمسیر Logical Volume است.
اگر بهجای +10G فقط 10G بنویسید، ممکن است حجم نهایی را ۱۰ گیگابایت تنظیم کند، نه اینکه ۱۰ گیگابایت اضافه کند. پس استفاده از علامت + را جدی بگیرید.
مرحله ۵: افزایش حجم با استفاده از کل فضای آزاد VG
اگر میخواهید کل فضای آزاد Volume Group را به یک Logical Volume اختصاص دهید، میتوانید از این دستور استفاده کنید:
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-homeاین دستور تمام فضای آزاد موجود در Volume Group را به Logical Volume اضافه میکند.
اگر نمیخواهید همه فضا را مصرف کنید، از مقدار مشخص مثل +10G استفاده کنید. نگه داشتن مقداری فضای آزاد در Volume Group میتواند برای آینده مفید باشد.
مرحله ۶: افزایش حجم فایلسیستم
بعد از افزایش Logical Volume، باید فایلسیستم داخل آن را هم بزرگتر کنید. اگر این مرحله را انجام ندهید، ممکن است حجم Logical Volume زیاد شده باشد اما خروجی df -h هنوز همان فضای قبلی را نشان دهد.
اگر فایلسیستم ext4 است
برای ext4 معمولاً از دستور resize2fs استفاده میشود:
sudo resize2fs /dev/mapper/ubuntu--vg-homeسپس دوباره بررسی کنید:
df -hاگر فایلسیستم XFS است
برای XFS از دستور xfs_growfs استفاده میشود. در این حالت معمولاً مسیر mount شده را میدهیم، نه مسیر device:
sudo xfs_growfs /homeسپس بررسی کنید:
df -hنوع فایلسیستم را همیشه قبل از resize بررسی کنید:
df -Thروش سادهتر: استفاده از گزینه -r در lvextend
در بسیاری از سیستمها میتوانید از گزینه -r استفاده کنید تا lvextend علاوه بر افزایش Logical Volume، فایلسیستم را هم بهصورت خودکار resize کند.
مثلاً برای اضافه کردن ۱۰ گیگابایت:
sudo lvextend -r -L +10G /dev/mapper/ubuntu--vg-homeیا برای استفاده از کل فضای آزاد:
sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu--vg-homeاین روش سادهتر است و احتمال فراموش کردن resize فایلسیستم را کمتر میکند. با این حال، قبل از اجرا همچنان باید نوع فایلسیستم، مسیر LV و فضای آزاد VG را بررسی کنید.
اگر در Volume Group فضای آزاد نداریم چه کنیم؟
اگر دستور vgs نشان میدهد که Volume Group فضای آزاد ندارد، نمیتوانید مستقیماً Logical Volume را بزرگتر کنید. در این حالت باید ابتدا فضای جدیدی به LVM اضافه شود.
سناریوهای رایج:
- در VPS، دیسک سرور را از پنل مجازیسازی افزایش دادهاید.
- یک دیسک جدید به سرور اضافه کردهاید.
- یک پارتیشن جدید ساختهاید و میخواهید آن را وارد LVM کنید.
مراحل کلی اضافه کردن دیسک جدید به LVM معمولاً به این شکل است:
sudo pvcreate /dev/sdb
sudo vgextend ubuntu-vg /dev/sdb
sudo vgsسپس بعد از اینکه فضای آزاد به Volume Group اضافه شد، میتوانید از lvextend استفاده کنید.
هشدار: نام دیسک مثل /dev/sdb فقط مثال است. در سرور واقعی، حتماً با lsblk دیسک درست را تشخیص دهید. اجرای اشتباه pvcreate روی دیسک حاوی داده میتواند باعث از دست رفتن اطلاعات شود.
تفاوت افزایش حجم در ext4 و XFS
یکی از اشتباهات رایج این است که مدیر سرور بعد از افزایش LV، دستور resize اشتباه را برای فایلسیستم اجرا میکند.
| فایلسیستم | دستور افزایش حجم | نکته |
|---|---|---|
| ext4 | resize2fs /dev/mapper/... | معمولاً روی device اجرا میشود |
| XFS | xfs_growfs /mountpoint | روی مسیر mount شده اجرا میشود |
برای اینکه مطمئن شوید از دستور درست استفاده میکنید، قبل از هر چیز این دستور را بزنید:
df -Thخطاهای رایج هنگام افزایش حجم LVM
خطای Insufficient free space
این خطا یعنی در Volume Group فضای آزاد کافی وجود ندارد. با دستور زیر وضعیت را بررسی کنید:
vgsاگر VFree صفر است، باید ابتدا دیسک یا پارتیشن جدیدی به VG اضافه کنید.
بعد از lvextend، حجم در df -h تغییر نکرده است
احتمالاً فایلسیستم را resize نکردهاید. برای ext4 از resize2fs و برای XFS از xfs_growfs استفاده کنید. یا از ابتدا دستور lvextend -r را اجرا کنید.
مسیر Logical Volume را اشتباه وارد کردهام
برای پیدا کردن مسیر درست LV از این دستورات استفاده کنید:
lvs
lvdisplay
lsblkقبل از اجرای دستور، مسیر mount point و LV را با هم تطبیق دهید.
دستور lvexend پیدا نمیشود
دستور درست lvextend است، نه lvexend. اگر در مقالهها یا جستجوهای قدیمی با عبارت lvexend مواجه شدید، معمولاً یک غلط تایپی است.
فایلسیستم XFS را با resize2fs بزرگ کردهام
resize2fs برای ext2/ext3/ext4 است. برای XFS باید از xfs_growfs استفاده کنید. ابتدا نوع فایلسیستم را با df -Th بررسی کنید.
چکلیست سریع افزایش حجم پارتیشن LVM
| مرحله | دستور یا اقدام |
|---|---|
| بررسی فضای دیسک | df -h |
| بررسی نوع فایلسیستم | df -Th |
| بررسی Volume Group | vgs یا vgdisplay |
| بررسی Logical Volume | lvs یا lvdisplay |
| افزایش LV با مقدار مشخص | lvextend -L +10G /path/to/lv |
| افزایش با کل فضای آزاد | lvextend -l +100%FREE /path/to/lv |
| افزایش خودکار فایلسیستم | lvextend -r -L +10G /path/to/lv |
| resize برای ext4 | resize2fs /path/to/lv |
| resize برای XFS | xfs_growfs /mountpoint |
| بررسی نهایی | df -h |
برای مدیریت بهتر سرورهای لینوکسی، مطالب دسته لینوکس و مدیریت سرور را هم دنبال کنید. اگر هدف شما میزبانی سایت روی سرور لینوکس است، مقالههای هاست چیست؟ و راهنمای جامع خرید هاست هم میتوانند مسیر انتخاب سرویس مناسب را روشنتر کنند.
جمعبندی
افزایش حجم پارتیشن LVM در لینوکس با دستور lvextend یکی از کارهای مهم در مدیریت سرور است. ابتدا باید وضعیت دیسک و فایلسیستم را با df -h و df -Th بررسی کنید، سپس فضای آزاد Volume Group را با vgs ببینید و مسیر Logical Volume را با lvs یا lsblk پیدا کنید.
بعد از آن میتوانید با دستور lvextend حجم LV را افزایش دهید. اگر از گزینه -r استفاده کنید، در بسیاری از موارد فایلسیستم هم همزمان resize میشود. در غیر این صورت باید برای ext4 از resize2fs و برای XFS از xfs_growfs استفاده کنید.
مهمترین نکته این است که قبل از اجرای دستورات، مسیر LV، نوع فایلسیستم و فضای آزاد VG را دقیق بررسی کنید. اجرای دستور روی مسیر اشتباه یا بدون بکاپ میتواند ریسک از دست رفتن اطلاعات را افزایش دهد.
سوالات متداول
دستور درست افزایش حجم LVM چیست؛ lvexend یا lvextend؟
دستور درست lvextend است. عبارت lvexend یک غلط تایپی رایج است و در لینوکس بهعنوان دستور معتبر شناخته نمیشود.
چطور بفهمم پارتیشن من LVM است؟
با دستورهای lsblk، df -h، lvs و lvdisplay میتوانید تشخیص دهید مسیر موردنظر روی LVM قرار دارد یا نه.
چطور بفهمم در Volume Group فضای آزاد دارم؟
از دستور vgs یا vgdisplay استفاده کنید. مقدار VFree نشاندهنده فضای آزاد Volume Group است.
چطور ۱۰ گیگابایت به یک Logical Volume اضافه کنم؟
از دستوری شبیه زیر استفاده کنید و مسیر LV را مطابق سرور خود تغییر دهید: sudo lvextend -r -L +10G /dev/mapper/ubuntu--vg-home.
چطور کل فضای آزاد Volume Group را به یک LV بدهم؟
میتوانید از این دستور استفاده کنید: sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu--vg-home.
بعد از lvextend چرا df -h حجم جدید را نشان نمیدهد؟
احتمالاً فایلسیستم resize نشده است. برای ext4 از resize2fs و برای XFS از xfs_growfs استفاده کنید. یا از گزینه -r در دستور lvextend استفاده کنید.
برای ext4 چه دستوری باید بعد از lvextend اجرا کنم؟
برای ext4 معمولاً از دستور sudo resize2fs /path/to/logical-volume استفاده میشود.
برای XFS چه دستوری باید بعد از lvextend اجرا کنم؟
برای XFS باید از xfs_growfs استفاده کنید و معمولاً mount point را وارد کنید؛ مثلاً sudo xfs_growfs /home.
اگر Volume Group فضای آزاد نداشت چه کار کنم؟
باید دیسک یا پارتیشن جدیدی به LVM اضافه کنید؛ معمولاً با pvcreate و سپس vgextend. قبل از این کار حتماً دیسک درست را با lsblk شناسایی کنید.
آیا افزایش حجم LVM بدون ریستارت امکانپذیر است؟
در بسیاری از سناریوها بله، مخصوصاً برای افزایش حجم و فایلسیستمهایی مثل ext4 و XFS. با این حال، همیشه قبل از عملیات روی سرور production، بکاپ و برنامه بازگشت داشته باشید.
