مقدمة
هل يعاني خادم Ubuntu الخاص بك من نفاد مساحة القرص؟
هل ترغب في تنظيفه وتوفير بعض المساحة؟ إذاً، أنت في المكان المناسب.
يواجه العديد من المطورين نفس المشكلة التي تواجهك، حيث يقومون بنشر تطبيق أو تطبيقين صغيرين على خادم Ubuntu الخاص بهم، ولكن مع مرور الوقت تمتلئ مساحة القرص ويشعرون بالارتباك حول ما يجب عليهم فعله وكيفية تحرير مساحة القرص الخاصة بهم.
مررتُ بموقفٍ مشابهٍ مؤخرًا، كان لديّ خادم أوبونتو يعمل بنسبة 93% من سعة القرص، وكان استخدام القرص لتطبيق Django صغير يعمل عليه حوالي 39 جيجابايت. كنتُ أعلم أن الحصول على مساحة قرص إضافية ليس خيارًا متاحًا لأن ملفات التطبيق نفسها كانت أقل من 1 جيجابايت.
في النهاية، كان عليّ أن أقضي يومًا كاملاً في فحص الخادم بأكمله وتحديد الدلائل والبرامج التي تشغل مساحة القرص لديّ.
في هذه المقالة، سأشارك خطواتي المجربة للعثور على الملفات غير الضرورية وتنظيف مساحة القرص على خادم Ubuntu.
المتطلبات الأساسية
- الخادم مع Ubuntu (على سبيل المثال مع Hetzner Cloud)
- الوصول إلى الخادم عبر SSH
- الوصول إلى المستخدم الجذر أو المستخدم الذي لديه أذونات sudo
مصطلحات المثال
- اسم المستخدم: holu (اسم مستخدم الخادم الخاص بك)
- اسم المضيف:
كيفية تنظيف قرص خادم Ubuntu
عندما يتعلق الأمر باستخدام مساحة القرص، فإن السبب الرئيسي عادةً هو السجلات. يحتفظ نظام التشغيل أوبونتو بسجلات لكل شيء تقريبًا، كما تقوم العديد من أدوات وأطر عمل المطورين والخوادم، مثل Celery وNginx، بإنشاء سجلات وتخزينها على خادمك.
عادةً ما يكون حجم هذه التقارير، التي يتم إنشاؤها بواسطة أدوات وحزم مختلفة، عدة غيغابايت، مما يؤدي إلى استهلاك مساحة القرص لديك وإبطاء الخادم لديك.
قبل أن ندخل في الخطوات العملية، أود الإشارة إلى أنه لا ينبغي حذف مجلد سجل النظام الجذر. لا تجرّب حذف مجلد سجل النظام الجذر (/var/log/) ببساطة. إذا فعلت ذلك، فستُعطّل الكثير من الأشياء التي لا ترغب في إتلافها.
الخطوة 1 - التحقق من مساحة القرص
الخطوة الأولى هي الوصول إلى خادم أوبونتو عبر SSH. يمكنك تسجيل الدخول باستخدام الأمر التالي:
هولو مع اسم المستخدم الخاص بك و استبدله بعنوان IP الخاص بخادمك.
ssh holu@<your_host>
بعد تسجيل الدخول، قم بتشغيل الأمر التالي لعرض استخدام مساحة القرص لديك.
sudo du -cha --max-depth=1 / | grep -E "M|G"
عينة الإخراج:
holu@<your_host>:~$ sudo du -cha --max-depth=1 / | grep -E "M|G"
2.8G /root
5.4G /usr
53M /tmp
9.8M /etc
203M /boot
du: cannot access '/proc/100209/task/100209/fd/4': No such file or directory
du: cannot access '/proc/100209/task/100209/fdinfo/4': No such file or directory
du: cannot access '/proc/100209/fd/3': No such file or directory
du: cannot access '/proc/100209/fdinfo/3': No such file or directory
2.5G /home
1.1M /run
307M /opt
522M /logs
11G /var
1.3G /snap
24G /
24G totalكما ترى، يعرض لنا هذا الأمر تفاصيل عالية المستوى حول حجم المجلدات/الدلائل المختلفة الموجودة على القرص.
إذا نظرت إلى الناتج النموذجي أعلاه، ستجد أن أكثر المجلدات استخدامًا لمساحة القرص لدينا هي /root، و/usr، و/home، و/var. تبلغ مساحة مجلد var وحده 11 جيجابايت، وهي مساحة كبيرة جدًا يستخدمها هذا المجلد.
الخطوة 2 – انتقل إلى دليل var
الخطوة التالية هي الدخول إلى المجلد /var باستخدام الأمر التالي.
cd /var
بعد ذلك، شغّل الأمر التالي لمعرفة استهلاك مساحة القرص لجميع المجلدات داخل مجلد /var. سيساعدنا هذا في تحديد المجلدات التي نبدأ منها عملية التنظيف.
sudo du -bsh *
عينة الإخراج:
holu@<your_host>:/var$ sudo du -bsh *
2.7M backups
150M cache
4.0K crash
3.6G lib
4.0K local
9 lock
2.5G log
3.0G mail
4.0K opt
4 run
53K snap
52K spool
44K tmp
460M wwwعندما أقوم بتشغيل هذا الأمر على الخادم الخاص بي، أستطيع أن أرى أن مجلدات lib وlog تستخدم أكبر مساحة في المجلد /var.
باستخدام هذه المعلومات، يمكنني التركيز على كل من دليل lib ودليل log لتحرير بعض المساحة على القرص الصلب الخاص بي.
الخطوة 3 - انتقل إلى كل دليل لحذفه
الخطوة التالية هي الدخول إلى هذه المجلدات وتنظيفها. في هذه المقالة، سأركز فقط على مجلد السجل، ولكن اعلم أنه يمكنك تطبيق نفس الخطوات التي نطبقها هنا لتنظيف أي مجلد آخر على خادم أوبونتو.
لمسح مجلد السجل، علينا حذف ملف السجل القديم والملفات غير الضرورية الأخرى على الخادم. للوصول إلى مجلد السجل، نفّذ الأمر التالي.
cd log
ثم افعل:
lsعينة الإخراج:
holu@<your_host>:/var$ cd log
holu@<your_host>:/var/log$ ls
alternatives.log fail2ban.log php7.4-fpm.log.5.gz
alternatives.log.1 fail2ban.log.1 php7.4-fpm.log.6.gz
alternatives.log.2.gz fail2ban.log.2.gz php7.4-fpm.log.7.gz
alternatives.log.3.gz fail2ban.log.3.gz php7.4-fpm.log.8.gz
alternatives.log.4.gz fail2ban.log.4.gz php7.4-fpm.log.9.gz
alternatives.log.5.gz faillog postgresql
alternatives.log.6.gz fontconfig.log private
apport.log installer supervisor
apport.log.1 journal syslog
apport.log.2.gz kern.log syslog.1
apport.log.3.gz kern.log.1 syslog.2.gz
apport.log.4.gz kern.log.2.gz syslog.3.gz
apport.log.5.gz kern.log.3.gz syslog.4.gz
apport.log.6.gz kern.log.4.gz syslog.5.gz
apport.log.7.gz landscape syslog.6.gz
apt lastlog يعرض لنا الأمر ls جميع الملفات الموجودة في هذا الدليل وكما ترى يوجد عدد كبير من ملفات السجل المؤرشفة في هذا الدليل.
ثم قم بالتحقق من حجم جميع الملفات والمجلدات الموجودة في هذا الدليل باستخدام الأمر التالي.
sudo du -bsh *
هذا هو نفس الأمر الذي استخدمناه سابقًا، لذا ستظهر لك قائمة بجميع الملفات وأحجامها. دوّن اسم مجلد المجلة.
الخطوة 4 – حذف ملفات السجل القديمة
الخطوة التالية هي حذف جميع ملفات السجل القديمة. من السهل التعرف على ملفات السجل القديمة، وعادةً ما تنتهي بامتداد .gz.
سنستخدم الأمر للعثور على جميع ملفات .gz وحذفها من خادمنا.
قم بتشغيل الأمر التالي للعثور على جميع ملفات .gz و.log.1 وحذفها في دليل السجل.
sudo find -type f \( -name "*.log.1" -o -name '*.gz' \) -delete
افعلها الآن:
lsيجب أن يظهر لك سجلّ محذوف. يمكنك أيضًا تعديل هذا الأمر لحذف أنواع ملفات مختلفة بتغيير قيمة السمة -name.
لم ننتهِ بعد، لأن مجلد المجلة يستهلك مساحة كبيرة على القرص. لذا، علينا التحقق من هذا المجلد وتنظيف بعض الملفات.
cd journal
داخل مجلد المجلة، ستجد مجلدًا عادةً ما يُسمى بسلسلة من الأرقام. لحذفه، يمكنك استخدام الأمر التالي.
سيؤدي هذا الأمر إلى تقليل حجم دليل المجلة إلى 100 ميجا بايت، وهو حجم معقول.
sudo journalctl --vacuum-size=100M
إذا كنت تريد حلاً دائمًا لاستخدام قرص المجلة، فاتبع العملية أدناه.
sudo nano /etc/systemd/journald.confفي ملف التكوين، قم بإزالة إعدادات SystemMaxFileSize وSystemMaxFiles (قم بإزالة #) وقم بضبطها على 100. لذا يجب أن يكون لديك:
SystemMaxFileSize=100
SystemMaxFiles=100بعد ذلك، قم بما يلي:
sudo service systemd-journald restart
سيؤدي هذا إلى تطبيق التغييرات وإزالة السجلات الإضافية.
الخطوة 5 – التحقق من المجلد /var/lib
من تجربتي، يُعد مجلد /var/lib أحد المجلدات التي تشغل مساحة كبيرة. قد يستهلك هذا المجلد مساحة كبيرة، وذلك حسب عدد المكتبات أو الأدوات المُثبتة على خادم أوبونتو.
الطريقة السريعة لمعرفة المكتبات التي تشغل مساحة كبيرة هي تشغيل الأمر التالي.
sudo du -hs /var/lib/* | sort -hr | head -10
سيعرض لك هذا الأمر أكبر 10 مجلدات مكتبة في هذا الدليل، ويمكنك بعد ذلك استخدام هذه المعلومات لمواصلة عملية التنظيف.
يجب عليك إزالة المكتبات أو الأدوات التي لا تستخدمها حاليًا بشكل كامل.
خاتمة
كما ترى، تنظيف خادم أوبونتو ليس بالأمر الصعب. باتباع الخطوات المذكورة أعلاه، نجحنا في تنظيف مجلد /var/log/. اتبع نفس الخطوات لتنظيف المجلدات الأخرى في مجلد /var، وستتمكن من توفير مساحة كبيرة على خادم أوبونتو.









