پس از ارتقای دیسک در VPS Linux Infrawire خود، دیسک مجازی بزرگتر میشود اما پارتیشن و فایلسیستم همچنان اندازه قبلی را دارند. باید هر دو را دستی بزرگ کنید و این کار در حالت روشن و بدون جدا کردن (unmount) فایلسیستم ریشه انجام میشود.
این راهنما پارتیشنهای معمولی (ext4 و XFS) و پیکربندیهای LVM را روی Ubuntu 24.04، Debian 12، AlmaLinux 9 و Rocky 9 پوشش میدهد.
📋 پیشنیازها
- یک VPS که دیسکش قبلاً بزرگ شده است (اندازه جدید در
lsblkدیده میشود) - دسترسی SSH با کاربر root (آیپی و رمز root را در پنل کاربری خود مییابید)
- یک نسخه پشتیبان تازه از دادههای مهم
1. پیش از دستزدن به پارتیشنها پشتیبان بگیرید
تغییر اندازه فایلسیستم mountشده ext4 یا XFS کاری رایج است، اما اشتباه در جدول پارتیشن میتواند دادهها را نابود کند. ابتدا موارد مهم را ذخیره کنید:
Bash# بایگانی دادههایی که از دسترفتنشان قابلجبران نیست tar -czf /root/backup-etc.tar.gz /etc rsync -avz /var/www/ USER@BACKUP_HOST:/backups/www/ # ذخیره جدول پارتیشن (برای بازیابی مفید است) sfdisk -d /dev/vda > /root/vda-partition-table.txt
2. دیسک، پارتیشن و فایلسیستم را شناسایی کنید
Bashlsblk -f df -hT /
خروجی معمول: دیسک vda با ۸۰ گیگابایت، پارتیشن vda1 با ۴۰ گیگابایت که روی / mount شده و فایلسیستم ext4 یا xfs. اگر ریشه روی /dev/mapper/... است، از LVM استفاده میکنید: بخش ۵ را ببینید. نام دیسک ممکن است sda یا nvme0n1 هم باشد (پارتیشنها در آن صورت با p1 تمام میشوند).
3. پارتیشن را با growpart بزرگ کنید
ابزار را نصب کنید. در Ubuntu و Debian نام بسته cloud-guest-utils و در AlmaLinux و Rocky نام آن cloud-utils-growpart است:
Bash# Ubuntu / Debian apt update && apt install -y cloud-guest-utils # AlmaLinux / Rocky dnf install -y cloud-utils-growpart
سپس پارتیشن شماره ۱ دیسک /dev/vda را بزرگ کنید (به فاصله بین دیسک و شماره توجه کنید):
Bashgrowpart /dev/vda 1
اگر پیام NOCHANGE آمد، پارتیشن از قبل همه فضا را اشغال کرده است. بعضی ایمیجها بعد از پارتیشن ریشه یک پارتیشن کوچک هم دارند (مثلاً swap): در این حالت growpart نمیتواند ریشه را بزرگ کند و ابتدا باید آن پارتیشن را حذف یا جابهجا کنید.
بررسی کنید هسته اندازه جدید را میبیند:
Bashlsblk /dev/vda # اگر هنوز اندازه قبلی نمایش داده میشود: partprobe /dev/vda
4. فایلسیستم را بزرگ کنید
دستور متناسب با نوع فایلسیستم خود (که lsblk -f نشان میدهد) را به کار ببرید.
برای ext4:
Bashresize2fs /dev/vda1
برای XFS (پیشفرض در AlmaLinux و Rocky). آرگومان، نقطه mount است نه دستگاه، و XFS را فقط میتوان بزرگ کرد و هرگز کوچک نمیشود:
Bashxfs_growfs /
5. حالت LVM: pvresize و lvextend
وقتی حجم منطقی ریشه روی LVM قرار دارد، یک لایه دیگر هم هست: پارتیشن، سپس حجم فیزیکی، سپس حجم منطقی و در نهایت فایلسیستم.
Bashlsblk pvs && vgs && lvs # 1. بزرگکردن پارتیشنی که حجم فیزیکی را در بر دارد (اینجا vda3) growpart /dev/vda 3 # 2. اطلاعدادن به LVM که حجم فیزیکی بزرگتر شده است pvresize /dev/vda3 # 3. گسترش حجم منطقی و فایلسیستم آن در یک مرحله (-r) lvextend -r -l +100%FREE /dev/mapper/VG_NAME-LV_NAME
گزینه -r ابزار مناسب (resize2fs یا xfs_growfs) را خودش فراخوانی میکند. VG_NAME-LV_NAME را مطابق خروجی lvs تنظیم کنید، مثلاً /dev/ubuntu-vg/ubuntu-lv. برای استفاده از بخشی از فضای آزاد، بهجای -l +100%FREE بنویسید -L +10G.
6. نتیجه را بررسی کنید
Bashdf -h / lsblk
ستون Size در df -h اکنون باید با ظرفیت جدید برابر باشد و lsblk باید پارتیشن را در تمام دیسک نشان دهد. نیازی به راهاندازی مجدد نیست و برنامههای شما در تمام مدت به کار خود ادامه میدهند.
🛠️ عیبیابی
growpart: command not found: بسته نصب نیست. cloud-guest-utils (apt) یا cloud-utils-growpart (dnf) را نصب کنید.
NOCHANGE: partition 1 could not be grown: یا دیسک واقعاً بزرگ نشده است (lsblk را با سفارش خود مقایسه کنید) یا بلافاصله بعد از پارتیشن موردنظر، پارتیشن دیگری قرار دارد. با fdisk -l /dev/vda بررسی کنید.
resize2fs: Bad magic number in super-block: فایلسیستم احتمالاً XFS است نه ext4. lsblk -f را اجرا کنید و بهجای آن از xfs_growfs / استفاده کنید.
xfs_growfs: / is not a mounted XFS filesystem: نام دستگاه دادهاید یا فایلسیستم ext4 است. نقطه mount را بدهید و ابتدا نوع را بررسی کنید.
lvextend اعلام میکند extent آزاد وجود ندارد: مرحله growpart یا pvresize را جا انداختهاید. pvs را اجرا و ستون PFree را بررسی کنید.
🎉 فضای اضافی دیسک اکنون قابل استفاده است: بدون ریبوت، بدون قطعی، و df -h گواه آن است!