انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

القرص ممتلئ: استجابة الطوارئ

خطوات الاستجابة الطارئة عند امتلاء مساحة القرص: العثور على الملفات الكبيرة باستخدام du و ncdu، تنظيف السجلات، فحص inode وتكوين التنظيف التلقائي.

وقت القراءة: 13 دقيقة استكشاف الأخطاء وإصلاحها
قرصممتلئduncduسجلinodeتنظيفاستعادة

جدول المحتويات

مقدمة

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

الكشف الطارئ

فحص استخدام القرص

hljs bash
# استخدام القرص العام
df -h

# استخدام inode
df -i

# مع أنواع أنظمة الملفات
df -Th

عندما يتجاوز استخدام القرص 95%، يلزم اتخاذ إجراء فوري. عند 100%، تبدأ الخدمات بالتعطل.

العثور على الملفات والمجلدات الكبيرة

التحليل بأمر du

hljs bash
# أكبر المجلدات في الجذر
sudo du -sh /* 2>/dev/null | sort -rh | head -20

# تحليل مجلد /var
sudo du -sh /var/* 2>/dev/null | sort -rh | head -10

# تحليل /var/log
sudo du -sh /var/log/* 2>/dev/null | sort -rh | head -10

# البحث عن ملفات أكبر من 100 ميجابايت
sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -20

التحليل التفاعلي مع ncdu

hljs bash
# تثبيت ncdu
sudo apt install ncdu -y

# تحليل المجلد الجذر
sudo ncdu /

خطوات التنظيف الطارئة

1. تنظيف ملفات السجل

hljs bash
# فحص حجم سجل systemd
journalctl --disk-usage

# تحديد السجل بـ 100 ميجابايت
sudo journalctl --vacuum-size=100M

# حذف السجلات الأقدم من 7 أيام
sudo journalctl --vacuum-time=7d

# اقتطاع ملفات السجل الكبيرة
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log

# حذف السجلات المدورة القديمة
sudo find /var/log -name '*.gz' -delete
sudo find /var/log -name '*.1' -delete

أمر truncate يعيد تعيين حجم الملف إلى صفر دون حذفه. لا يتطلب إعادة تشغيل الخدمات.

2. تنظيف ذاكرة APT المؤقتة

hljs bash
# فحص حجم ذاكرة APT المؤقتة
sudo du -sh /var/cache/apt/archives/

# تنظيف ملفات الحزم المحملة
sudo apt clean

# تنظيف إصدارات الحزم القديمة
sudo apt autoclean

# إزالة التبعيات غير المستخدمة
sudo apt autoremove -y

3. تنظيف النوى القديمة

hljs bash
# إصدار النواة الحالي
uname -r

# قائمة النوى المثبتة
dpkg --list | grep linux-image

# إزالة النوى القديمة
sudo apt autoremove --purge -y

4. تنظيف مجلد tmp

hljs bash
# فحص حجم /tmp
sudo du -sh /tmp

# حذف ملفات tmp الأقدم من 7 أيام
sudo find /tmp -type f -atime +7 -delete

5. البحث عن الملفات المحذوفة لكن المفتوحة

hljs bash
# البحث عن الملفات المحذوفة لكن المفتوحة
sudo lsof +L1 | grep deleted

# إعادة تشغيل العملية المرتبطة
sudo systemctl restart اسم_الخدمة

خاصة عند حذف ملفات السجل، لن يتم تحرير مساحة القرص دون إعادة تشغيل الخدمة المرتبطة.

نفاد inode

hljs bash
# فحص استخدام inode
df -i

# البحث عن المجلدات التي تحتوي على أكثر الملفات
sudo find / -xdev -printf '%h\n' | sort | uniq -c | sort -rn | head -20

تكوين تدوير السجلات التلقائي

hljs bash
# /etc/logrotate.d/custom-logs
/var/log/myapp/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
}

حد حجم السجل

hljs bash
# /etc/systemd/journald.conf
[Journal]
SystemMaxUse=200M
SystemMaxFileSize=50M
MaxRetentionSec=7day

سكريبت مراقبة القرص

hljs bash
#!/bin/bash
THRESHOLD=90
PARTITION="/"
USAGE=$(df -h $PARTITION | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
  echo "تحذير: استخدام القرص $USAGE% ($PARTITION)"
  du -sh $PARTITION* 2>/dev/null | sort -rh | head -10
fi

الخلاصة

امتلاء القرص مشكلة حرجة تتطلب إجراءً فوريًا. ملفات السجل وذاكرة APT المؤقتة والنوى القديمة هي أكثر مستهلكي المساحة شيوعًا. بتكوين تدوير السجلات المنتظم ومراقبة القرص، يمكنك منع تكرار هذه المشكلة.