Pada artikel kali ini saya akan membahas mengenai fenomena dimana hasil output dari df
berbeda dari du
.
Contohnya adalah berikut ini:
|
|
Bisa diperhatikan bahwa keduanya menunjukkan hasil yang sangat berbeda sama sekali. Kok bisa begitu? Jawabannya disini
Solusi
Pada contoh diatas, df
melaporkan size yang tersedia adalah 0. Sedangkan pada du
, penggunaan disk pada partisi /
hanyalah sekitar 5.2G saja.
Kemungkinan besar, ada suatu proses yang sedang berjalan yang menahan suatu/beberapa file yang berukuran besar. Sehingga, file tersebut tidak benar-benar terhapus pada sistem.
Untuk memastikan hal ini, bisa kita gunakan perintah lsof +1L
yang berfungsi untuk melihat file-file yang masih tertahan oleh suatu proses yang sebenarnya file tersebut sudah terhapus:
|
|
Dari sini bisa diperhatikan bahwa, ada proses-proses yang masih menahan suatu file yang sudah dihapus dengan ukuran yang terhitung cukup besar. Hal seperti ini tidak akan bisa ditemukan jika hanya menggunakan tool seperti du
, ncdu
atau tool semisal.
Kemudian bagaimana “membebaskan” ruang disk yang “tersita” tersebut?
1. Melakukan truncate pada file descriptor proses terkait
File descriptor suatu proses yang berjalan bisa diakses pada direktori /proc/<PID>/fd
. Pada direktori tersebut, terdapat daftar file descriptor yang sedang aktif. Contoh:
|
|
Terlihat bahwa file descriptor 5 merujuk pada file yang “tersita” tersebut. Langkah selanjutnya adalah melakukan truncate proses terkait, yaitu dengan:
|
|
Perintah :
adalah perintah untuk tidak melakukan apa-apa. Sehingga ketika dijalankan, dia tidak akan memberikan output.
Jika output dari perintah tersebut diarahkan (redirect) kepada suatu file, maka file tersebut akan menjadi kosong.
Dengan demikian, inode dari file terkait tidak akan berubah.
Alternatif lain adalah dengan menggunakan perintah true
.
Namun, yang perlu diperhatikan pada cara ini, meskipun tidak perlu dilakukan penghentian proses (kill), tetapi file yang tertahan tersebut akan terisi kembali seiring berjalannya waktu. Sehingga cara ini merupakan cara sementara saja.
2. Menghentikan proses yang menahan file tersebut
Jika sudah bisa dipastikan proses yang sedang berjalan itu aman untuk dihentikan (karena alasan tertentu seperti, proses macet atau sebagainya), maka proses terkait bisa dihentikan untuk membebaskan ruang disk yang tertahant tersebut.
Cukup lakukan:
|
|
Penjelasan ringkas
Secara singkatnya, df
melakukan penghitungan pada tingkatan filesystem sedangkan du
, melakukan penghitungan langsung pada objek file itu sendiri.
Lebih lengkapnya bisa dibaca disini:
Semoga bermanfaat, barakallahufiikum