بعد ترقية القرص على VPS Linux Infrawire يصبح القرص الافتراضي أكبر، لكن القسم ونظام الملفات يبقيان بحجمهما القديم. عليك توسيعهما يدويًا، ويمكن ذلك أثناء عمل النظام ودون فصل نظام ملفات الجذر.
يغطي هذا الدليل الأقسام العادية (ext4 وXFS) وإعدادات LVM على Ubuntu 24.04 وDebian 12 وAlmaLinux 9 وRocky 9.
📋 المتطلبات
- خادم VPS تمت زيادة قرصه بالفعل (يظهر الحجم الجديد في
lsblk) - وصول SSH بصلاحية root (تجد عنوان IP وكلمة مرور root في منطقة العميل)
- نسخة احتياطية حديثة من بياناتك المهمة
1. خذ نسخة احتياطية قبل لمس الأقسام
تغيير حجم نظام ملفات 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 بحجم 80G، والقسم vda1 بحجم 40G مركّب على /، ونظام الملفات ext4 أو xfs. إذا كان الجذر على /dev/mapper/... فأنت تستخدم LVM: راجع القسم 5. قد يُسمّى القرص أيضًا 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
ثم وسّع القسم رقم 1 من القرص /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). الوسيط هو نقطة التركيب وليس الجهاز، ويمكن لـ 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. مرّر نقطة التركيب وتحقق من النوع أولًا.
lvextend يبلغ عن عدم وجود extents حرة: تخطيت growpart أو pvresize. نفّذ pvs وراجع عمود PFree.
🎉 مساحة القرص الإضافية أصبحت جاهزة للاستخدام: دون إعادة تشغيل ودون انقطاع، وdf -h يثبت ذلك!