مساحة القرص: إلى أين تذهب
كيف تجد ما ملأ القرص، ولماذا يُعد الملف المحذوف لكن المفتوح خطيرًا، وما الذي يمكن تنظيفه بأمان، ولماذا قد تعرض حلقة الاستخدام في لوحة التحكم شيئًا خاطئًا.
آخر تحديث 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 df | docker image prune، docker builder prune |
| سجل النظام | journalctl --disk-usage | journalctl --vacuum-size=200M |
النوى القديمة في /boot | df -h /boot | apt autoremove --purge |
| ذاكرة الحزم المؤقتة | du -sh /var/cache/apt | apt 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%: فعندما يمتلئ القرص، لن تتمكن بعض الخدمات حتى من كتابة سجل عمّا حدث.
إذا لم تكن هناك مساحة على الإطلاق
- حرّر بضعة غيغابايتات بإجراءات سريعة:
journalctl --vacuum-size=100M،apt clean،docker builder prune -f. - اعثر على السبب الحقيقي بالأوامر أعلاه — وإلا فسيتكرر كل شيء بعد أسبوع.
- إذا كانت البيانات قد نمت فعلًا، فأنت بحاجة إلى زيادة القرص بالانتقال إلى مستوى أعلى. التخفيض غير متاح: لا يمكن تصغير القرص.