كيفية حل خطأ امتلاء القرص على خادم Linux؟
دليل للعثور على الملفات الكبيرة وتنظيف السجلات بأمان وتحرير مساحة على الخادم.
إحدى المشكلات الأكثر شيوعًا على خوادم Linux هي امتلاء القرص بالكامل. عندما يصبح القرص ممتلئًا، لا يمكن لمواقع الويب كتابة الملفات، وقد تتوقف خدمات قاعدة البيانات عن العمل، وقد لا تقوم خوادم الألعاب بتسجيل السجلات، وقد لا تبدأ بعض الخدمات على الإطلاق.
عادة ما يتم التعرف على هذا الخطأ من خلال الأعراض التالية:
- فشل في تحميل الملفات إلى الخادم
- إيقاف تشغيل خدمة قاعدة البيانات أو حدوث خطأ
- يظهر الخطأ "لم يتبق مساحة على الجهاز" على اللوحة
- يتم إيقاف تشغيل خادم اللعبة لأنه لا يمكنه تسجيل الدخول.
- يحدث 500 خطأ أو صفحة فارغة على مواقع الويب
1. التحقق من استخدام القرص
أولاً، تحقق من امتلاء قسم القرص الموجود على الخادم.
df -h
هنا خاصة استخدام% تعتبر المنطقة. إذا كان القسم 90% فما فوق، فهذا يعني أن الخطر قد بدأ. إذا كان ممتلئًا بنسبة 100%، فلن تتمكن الخدمات من كتابة الملفات.
2. ابحث عن المجلدات التي تشغل المساحة الأكبر
عندما يكون القرص ممتلئًا، تكون المشكلة عادةً هي السجلات أو النسخ الاحتياطية أو ملفات ذاكرة التخزين المؤقت المتراكمة في مجلد واحد. تحقق من المجلدات الكبيرة، بدءًا من الدليل الجذر.
du -h --max-depth=1 / 2>/dev/null | sort -h
يوضح هذا الأمر مقدار المساحة التي تشغلها الدلائل الرئيسية. عادة يتم فحص الدلائل التالية:
- /فار/سجل - سجلات النظام والخدمة
- /home - ملفات المستخدم والموقع
- /backup - ملفات النسخ الاحتياطي القديمة
- /تمب - الملفات المؤقتة
- /var/lib/mysql - ملفات قاعدة بيانات MySQL/MariaDB
3. قائمة الملفات الكبيرة
في بعض الأحيان يمكن أن يصل حجم ملف السجل الواحد إلى 10 غيغابايت أو أكثر. للعثور على الملفات الكبيرة، يمكنك استخدام هذا الأمر:
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/nullيسرد هذا الأمر الملفات التي يزيد حجمها عن 500 ميجابايت. افحص الملفات الناتجة بعناية. خصوصا .سجل, .old, .gz, .باك ويجب فحص ملفات النسخ الاحتياطي القديمة.
4. التنظيف الآمن لملفات السجل
في بعض الأحيان، لا يؤدي حذف ملف السجل الخاص بالخدمة قيد التشغيل مباشرةً إلى النتيجة المتوقعة. لأنه يمكن للخدمة الاستمرار في إبقاء الملف مفتوحًا. ولذلك، فإن الطريقة الأكثر أمانًا عند تنظيف ملفات السجل الكبيرة هي إفراغ الملف.
truncate -s 0 /var/log/dosya_adi.log
مثال:
truncate -s 0 /var/log/syslog truncate -s 0 /var/log/messages truncate -s 0 /var/log/nginx/error.log
5. تنظيف ذاكرة التخزين المؤقت للحزمة
في الأنظمة المستندة إلى Ubuntu وDebian، قد تشغل ملفات ذاكرة التخزين المؤقت للحزمة مساحة على القرص بمرور الوقت.
apt clean apt autoremove -y
على أنظمة CentOS أو AlmaLinux أو Rocky Linux:
yum clean all dnf clean all
6. التحقق من النسخ الاحتياطية القديمة
عادةً ما تكون الملفات التي تشغل المساحة الأكبر على خوادم الاستضافة والألعاب عبارة عن نسخ احتياطية قديمة. خاصة إذا كان هناك نظام نسخ احتياطي تلقائي، فقد يتم أخذ نسخ احتياطية جديدة كل يوم ولا يجوز حذف النسخ الاحتياطية القديمة.
find /backup -type f -mtime +7 -name "*.tar.gz" -ls
يسرد هذا الأمر النسخ الاحتياطية الأقدم من 7 أيام. للحذف بعد التأكد:
find /backup -type f -mtime +7 -name "*.tar.gz" -delete
7. منع إعادة التحميل باستخدام إعداد Logrotate
حتى لو تم تنظيف القرص، إذا لم يتم تصحيح السبب، ستحدث نفس المشكلة مرة أخرى بعد بضعة أيام. لهذا، يجب التحقق من تكوين logrotate.
nano /etc/logrotate.conf
مثال على منطق logrotate البسيط:
/var/log/*.log {
daily
rotate 7
compress
missingok
notifempty
}يقوم هذا الإعداد بإرجاع ملفات السجل يوميًا، والاحتفاظ بها لمدة 7 أيام، وضغط السجلات القديمة.
الأخطاء الشائعة
- حذف ملفات النظام دون معرفة الملف الذي هي عليه
- حذف ملف السجل قيد التشغيل وعدم إعادة تشغيل الخدمة
- الاحتفاظ بالنسخ الاحتياطية القديمة لفترة زمنية غير محدودة
- عدم التحقق من إعدادات السجل على الإطلاق
- لا تتدخل حتى يمتلئ القرص بنسبة 100%
الأسئلة الشائعة
لماذا يعطي الخادم خطأ عندما يكون القرص ممتلئًا؟
لأن الخدمات لا يمكنها كتابة السجلات أو ذاكرة التخزين المؤقت أو الملفات المؤقتة أو قواعد البيانات. قد يتم إيقاف تشغيل الخدمات عند فشل عملية الكتابة.
هل من الأفضل حذف ملف السجل أم إفراغه؟
بدلاً من حذف ملف السجل بالكامل في تشغيل الخدمات اقتطاع من الآمن تفريغه باستخدام.
لقد قمت بتنظيف القرص ولكن لم يتم تحرير المساحة، لماذا؟
قد يظل الملف المحذوف مفتوحًا بواسطة خدمة قيد التشغيل. قد يكون من الضروري إعادة تشغيل الخدمة ذات الصلة.
توصيات الأداء والأمن
- مراقبة استخدام القرص بانتظام.
- قم بتخزين النسخ الاحتياطية على قرص منفصل أو منطقة نسخ احتياطي بعيدة.
- لا تترك الخدمة تعمل لفترة طويلة دون استخدام logrotate.
- اتخذ الاحتياطات اللازمة عندما يصل القرص إلى مستوى 85%.
- لا تترك سجلات تصحيح الأخطاء مفتوحة باستمرار على خوادم الألعاب.
تم إعداد هذه المقالة خصيصًا لـ PvPServer.