سطح: متوسط  |  مناسب برای: مدیران سرور لینوکس، کاربران 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 یک لایه مدیریت منطقی برای فضای ذخیره‌سازی در لینوکس است. با 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 را بشناسید:

اصطلاحنام کاملتوضیح
PVPhysical Volumeدیسک یا پارتیشنی که وارد ساختار LVM شده است
VGVolume Groupمجموعه‌ای از PVها که فضای مشترک ایجاد می‌کنند
LVLogical 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 اشتباه را برای فایل‌سیستم اجرا می‌کند.

فایل‌سیستمدستور افزایش حجمنکته
ext4resize2fs /dev/mapper/...معمولاً روی device اجرا می‌شود
XFSxfs_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 Groupvgs یا vgdisplay
بررسی Logical Volumelvs یا lvdisplay
افزایش LV با مقدار مشخصlvextend -L +10G /path/to/lv
افزایش با کل فضای آزادlvextend -l +100%FREE /path/to/lv
افزایش خودکار فایل‌سیستمlvextend -r -L +10G /path/to/lv
resize برای ext4resize2fs /path/to/lv
resize برای XFSxfs_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، بکاپ و برنامه بازگشت داشته باشید.