Skip to content
VDS · النسخ الاحتياطية والقرص

مساحة القرص: إلى أين تذهب

كيف تجد ما ملأ القرص، ولماذا يُعد الملف المحذوف لكن المفتوح خطيرًا، وما الذي يمكن تنظيفه بأمان، ولماذا قد تعرض حلقة الاستخدام في لوحة التحكم شيئًا خاطئًا.

آخر تحديث 23 أغسطس 2026

نفاد المساحة هو انقطاع يظهر بأشكال مختلفة: قاعدة البيانات لا تكتب، والموقع يعيد خطأ، والحاويات تُعاد تشغيلها. تتراوح مساحة قرص VDS بين 40 GB في المستوى الأساسي و250 GB في المستوى الأعلى، وغالبًا ما تمتلئ بالأشياء نفسها.

الأوامر الأولى

df -h
df -i
sudo du -x -h -d1 / | sort -h | tail -15

لا تتخطَّ df -i: قد تكون المساحة متوفرة لكنك تنفد من الـ inodes — عندها تظهر لك رسالة «القرص ممتلئ» مع وجود غيغابايتات حرة. والسبب عادةً ملايين ملفات التخزين المؤقت الصغيرة.

ثم تعمّق في أكبر مجلد:

sudo du -x -h -d1 /var | sort -h | tail
sudo du -x -h -d1 /var/lib | sort -h | tail

تُبقي راية -x العدّ ضمن نظام ملفات واحد ولا تتجول في المجلدات المُثبّتة.

الأسباب الشائعة

ماكيف تتحققما تفعله
سجلات الحاوياتdu -sh /var/lib/docker/containers/*/*-json.logحدّد الحجم، انظر السجلات
الصور وذاكرة البناء المؤقتةdocker system dfdocker image prune، docker builder prune
سجل النظامjournalctl --disk-usagejournalctl --vacuum-size=200M
النوى القديمة في /bootdf -h /bootapt autoremove --purge
ذاكرة الحزم المؤقتةdu -sh /var/cache/aptapt clean
نسخ متروكة في مكانهاdu -sh /backupانقلها خارج الموقع، انظر موقع آخر
ملفات المستخدمين المرفوعةdu -sh /var/www/uploadsتخزين خارجي أو قرص أكبر

ملف محذوف لا يزال يشغل مساحة

لغز كلاسيكي: يُظهر du مساحة 5 GB، بينما يُظهر df أن المستخدم 30 GB. هذا يعني أن الملف حُذف، لكن إحدى العمليات لا تزال تحتفظ به مفتوحًا، ولن تُحرَّر المساحة حتى إعادة التشغيل.

sudo lsof +L1 | head -20

سيُظهر الخرج العمليات والأحجام. والحل هو إعادة تشغيل المتسبب:

sudo systemctl restart <service>
docker compose restart <service>

لا تحرّر المساحة أبدًا باستخدام rm على ملف سجل قيد الاستخدام. الطريقة الصحيحة هي اقتطاعه: sudo truncate -s 0 /var/log/big.log. حذفه سيُبقي المساحة مشغولة كما سيكلفك السجل نفسه.

حلقة الاستخدام في لوحة التحكم

في تبويب «نظرة عامة» توجد حلقة استخدام القرص. تُحسب عبر وكيل الضيف qemu-guest-agent. إذا أُزيل الوكيل أو لم يكن قيد التشغيل، فلن تتحدّث البيانات — وستعرض اللوحة أمر التثبيت. للتحقق داخل الجهاز:

systemctl status qemu-guest-agent

يجب أن تتطابق قراءات الوكيل مع df -h. والتباين يعني في الغالب أن جزءًا من المساحة مشغول في قسم مُثبّت بشكل منفصل — انظر الأقسام وأنظمة الملفات.

الوقاية

أعدّ مهمة مجدولة للتنظيف والتنبيه:

#!/bin/bash
USED=$(df --output=pcent / | tail -1 | tr -dc '0-9')
if [ "$USED" -gt 85 ]; then
  journalctl --vacuum-size=200M
  apt clean
  docker image prune -f
  echo "Disk is ${USED}% full" | mail -s "VDS: low disk space" you@example.com
fi

عتبة 85% تمنحك مجالًا للتفاعل. لا يمكنك الانتظار حتى 100%: فعندما يمتلئ القرص، لن تتمكن بعض الخدمات حتى من كتابة سجل عمّا حدث.

إذا لم تكن هناك مساحة على الإطلاق

  1. حرّر بضعة غيغابايتات بإجراءات سريعة: journalctl --vacuum-size=100M، apt clean، docker builder prune -f.
  2. اعثر على السبب الحقيقي بالأوامر أعلاه — وإلا فسيتكرر كل شيء بعد أسبوع.
  3. إذا كانت البيانات قد نمت فعلًا، فأنت بحاجة إلى زيادة القرص بالانتقال إلى مستوى أعلى. التخفيض غير متاح: لا يمكن تصغير القرص.