Masalahnya
Pada sistem berbasis Linux, sistem file root diisi oleh beberapa proses yang tidak diketahui. Itu terus berlanjut terlepas dari file apa yang dipindahkan atau dibersihkan dari sistem file.
# df -hP / /dev/mapper/VGExaDb-LVDbSys1 ext3 30G 29G 0 100% /
Tidak ada file besar untuk memperhitungkan sistem file lengkap:
# find / -xdev -type f -size +100M -exec ls -lh {} \;
Tidak ada direktori besar untuk menjelaskan sistem file lengkap:
# du -h --max-depth=1 / 42M /sbin 13M /etc 2.4G /usr 45M /tmp 451M /var 192M /lib (and so on) ...
Solusinya
Pada satu titik di masa lalu, dua atau lebih proses menggunakan file; misalnya,/tmp/top.log. Satu proses menghentikan aksesnya ke /tmp/top.log dengan menghapusnya (sebenarnya itu adalah entri direktori) dan proses lainnya terus menulis ke referensi inode, memungkinkan file untuk terus berkembang.
Hal ini dapat dilihat pada output dari:“lsof +L 1 ”
# lsof +L 1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME top 34261 root 1W REG 252,0 21460567592 0 1785896 /tmp/top.log (deleted)
File lain juga terdaftar tetapi jauh lebih kecil.
Ini menunjukkan bahwa user=root menjalankan perintah teratas yang di-spooling ke /tmp/top.log, dan saat ini tidak ada tautan ke file itu. File spool itu berukuran 21 Gb tetapi tidak melaporkan dalam output “du –h –max-depth=1 /”, di mana /tmp terdaftar sebagai hanya 45M.
Ikuti langkah-langkah di bawah ini untuk mengidentifikasi dan menghentikan proses tersebut.
1. Identifikasi file pada sistem yang memiliki link kurang dari 1 dengan perintah:
# lsof +L 1
2. Matikan semua proses yang menulis ke file besar yang terdaftar. Pada contoh di atas, Anda akan menjalankan:
# kill 34261
3. Ruang akan dibebaskan saat proses akhir berhenti menggunakan file.