Pernah mengalami error No space left on device
di server Linux Anda, lalu saat dicek menggunakan perintah df -h
ternyata ruang disk masih tersedia banyak? Anda tidak sendiri. Masalah ini seringkali membingungkan, namun solusinya sebenarnya cukup teknis dan spesifik.
Penyebabnya bukanlah ruang disk yang habis, melainkan Inode yang sudah penuh.
Artikel ini akan memandu Anda cara mendiagnosis dan menyelesaikan masalah inode penuh secara cepat dan efektif.
Gejala Aneh: Disk Terlihat Kosong Tapi Error Muncul
Saat Anda atau aplikasi mencoba membuat file baru, muncul pesan error: touch: cannot create 'file.txt': No space left on device
Namun, perintah df -h
menunjukkan hasil yang kontradiktif:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 28G 20G 59% /
Output ini jelas menunjukkan disk masih memiliki sisa 20GB. Jadi, apa masalahnya?
Apa itu Inode dan Mengapa Bisa Penuh?
Secara sederhana, Inode adalah “buku catatan” filesystem yang mencatat metadata untuk setiap file dan direktori. Setiap kali Anda membuat file baru (sekecil apapun), Anda menggunakan satu Inode.
Sebuah partisi memiliki jumlah Inode yang terbatas. Jika Anda memiliki jutaan file yang sangat kecil (seperti file cache atau session), Anda bisa kehabisan Inode jauh sebelum kehabisan ruang disk (GB).
Langkah Diagnosis dan Solusi
Ikuti langkah-langkah ini untuk memecahkan masalah.
Verifikasi Penggunaan Inode
Gunakan perintah df -i
untuk melihat status penggunaan inode.
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 3276800 3276800 0 100% /
Jika Anda melihat IUse%
sudah 100%, maka Anda telah menemukan akar masalahnya: inode penuh.
Temukan Direktori “Pelahap” Inode
Sekarang kita perlu mencari tahu direktori mana yang berisi file dalam jumlah masif. Jalankan perintah one-liner berikut:
find / -xdev -printf '%h\n' | sort | uniq -c | sort -rn | head -10
Perintah ini akan memindai, menghitung, dan mengurutkan direktori berdasarkan jumlah file terbanyak. Outputnya akan terlihat seperti ini:
2987152 /var/www/html/cache/sessions
54321 /var/log/nginx
...
Dari contoh di atas, jelas bahwa direktori /var/www/html/cache/sessions
adalah biang keladinya.
Solusi Cepat (Menghapus File Lama)
Jangan gunakan rm *
karena bisa gagal jika file terlalu banyak. Gunakan perintah find
untuk menghapus file yang lebih tua dari 7 hari dengan aman.
# Ganti path direktori sesuai hasil temuan Anda
find /var/www/html/cache/sessions/ -type f -mtime +7 -delete
Setelah proses ini selesai, inode akan kembali tersedia dan server akan berfungsi normal.
Solusi Permanen (Pencegahan)
- Perbaiki Aplikasi: Minta tim developer untuk memperbaiki mekanisme pembersihan file cache/session pada aplikasi.
- Buat Cron Job: Sebagai jaring pengaman, buat tugas terjadwal (cron job) untuk membersihkan direktori tersebut secara rutin.
Contoh cron job yang berjalan setiap jam 3 pagi:
0 3 * * * /usr/bin/find /path/ke/direktori/ -type f -mtime +7 -delete
Kesimpulan
Error No space left on device
tidak selalu berarti disk Anda penuh. Lain kali Anda menghadapi masalah ini, ingatlah untuk memeriksa penggunaan inode dengan df -i
. Dengan memahami konsep ini, Anda dapat menghemat waktu troubleshooting dan menjaga server tetap berjalan optimal.