Udah lama gak nulis di blog karna banyak banged kerjaan yang bikin hidup gak tenang. T_T
Tapi gak apa-apa, karna tulisan kali ini sebagai catetan kecil aja di sela-sela waktu.
Beberapa waktu lalu ane dapet komplain karna di salah satu cluster server yang ane handle ternyata direktori /tmp nya full entah kenapa, pas di cek lebih aneh lagi karena bahkan di dalem direktori dan partisi itu gak ada file yg ukurannya gede.
Waktu troubleshoot ane ngecek pake command df -h, hasilnya outputnya kira2 seperti dibawah ini.
Setelah itu ane cek pake command du -sh * di dalam direktori /tmp dan jadi tambah bingung karna gak ada file yg ukurannya 1,9GB. Ane langsung berpikir mungkin karna ada invisible file, lalu di cek juga pake command ls -a tetep gak keliatan.
"So, what the hell is going on?"
Ternyata setelah analisa lebih jauh ane baru tau juga hal ini biasanya terjadi karna ketika direktori /tmp ingin digunakan untuk menyimpan physical file dan seketika itu juga OS akan membuat virtual file terlebih dahulu. Contohnya seperti ini, katakanlah kita mempunyai sebuah process yang mengenerate report 123.txt, file report tersebut melekat kedalam process yang mengenerate file tsb dan jika process tersebut tidak merelease filenya maka OS masih harus memperhitungkan file spaces yang akan digunakan bagaimanapun caranya. Akibatnya, file tsb tidak benar-benar tergenerate di dalam structure file system, namun space masih digunakan untuk perhitungan alokasi files.
Jadi file fisiknya tidak ada, namun karna OS masih trus mengkalkulasi maka terbaca di df -h ada file yg menggunakan storage dengan ukuran sekian. Mirip dengan recycle bin, file-file dibuang tapi tidak benar-benar dibuang karna file sebenernya masih ada di filesystem OS.
Jadi file fisiknya tidak ada, namun karna OS masih trus mengkalkulasi maka terbaca di df -h ada file yg menggunakan storage dengan ukuran sekian. Mirip dengan recycle bin, file-file dibuang tapi tidak benar-benar dibuang karna file sebenernya masih ada di filesystem OS.
"Jadi Bagaimana Solusinya?"
Nah setelah googling2, dalam kasus seperti ini kita bisa menggunakan command lsof untuk mengecek list open file mana yg masih diproses oleh OS. Gunakan command lsof | grep /tmp | grep deleted seperti contoh dibawah ini.
Dari hasil output diatas, kita bisa melihat ada process yang menggunakan PID 23282 (kotak merah) yang berjalan.
Untuk mengecek lebih detail PID tersebut memproses apa bisa gunakan ps aux | grep 23282, outputnya seperti dibawah ini.
Dari hasil pengecekan diatas, missing temp files mencapai hampir 1,9GB dan inilah yang menyebabkan direktori /tmp full padahal gak ada file didalamnya.
Maka dari itu solusinya bisa meliputi.
- Restart daemon services yang berkaitan.
- Kill PID process yang berkaitan, dalam kasus diatas kill -9 23282.
- Restart Server.
Apabila salah satu action dari diatas sudah dilakukan maka seharusnya ukuran space /tmp akan berkurang dan kembali lagi jadi normal.
Notes
- Kasus diatas kemungkinan besar bisa terjadi pada direktori lain, maka dari apabila nemuin kasus yang sama maka langkah troubleshotnya bisa gunain langkah-langkah diatas.
Semoga bermanfaat!
No comments:
Post a Comment