DEV Community

Fajar Trengginas
Fajar Trengginas

Posted on

Infra Learning Journey #3 – Filesystem & Disk Debugging

Catatan Belajar Hari Ketiga Memahami Disk Usage, Inode, dan Debugging Error “No Space Left on Device”

Setelah memahami process dan signal di hari sebelumnya, saya masuk ke salah satu penyebab klasik server production down: masalah filesystem dan disk.

Hari ini saya belajar bahwa error seperti:

No space left on device
Enter fullscreen mode Exit fullscreen mode

Tidak selalu berarti disk benar-benar penuh.


1️⃣ df vs du — Jangan Sampai Salah Paham

Untuk melihat penggunaan disk secara global:

df -h
Enter fullscreen mode Exit fullscreen mode

-h = human readable

Menampilkan penggunaan disk per filesystem
Contoh output:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       50G   45G   3G   94%  /
Enter fullscreen mode Exit fullscreen mode

Jika Use% mencapai 100%, disk block habis.


Untuk melihat ukuran folder tertentu:

du -sh *
Enter fullscreen mode Exit fullscreen mode

Atau untuk melihat folder terbesar:

du -h --max-depth=1 | sort -hr
Enter fullscreen mode Exit fullscreen mode

Perbedaan penting:

  • df → melihat penggunaan disk dari sisi filesystem
  • du → melihat ukuran file/folder dari sisi direktori

2️⃣ Inode: Penyebab Tersembunyi “Disk Penuh”

Saya belajar bahwa setiap file di Linux menggunakan inode.

Cek inode dengan:

df -i
Enter fullscreen mode Exit fullscreen mode

Contoh:

Filesystem     Inodes   IUsed   IFree IUse% Mounted on
/dev/sda2     3276800 3276800      0  100% /
Enter fullscreen mode Exit fullscreen mode

Jika inode 100%, maka:

  • Tidak bisa membuat file baru
  • Akan muncul error:
No space left on device
Enter fullscreen mode Exit fullscreen mode
  • Meskipun df -h masih menunjukkan sisa storage

Ini sering terjadi jika ada terlalu banyak file kecil seperti:

  • Log file
  • Cache
  • Temporary file

Upload kecil dalam jumlah besar


3️⃣ Simulasi Inode Penuh
Untuk memahami ini, saya membuat ribuan file kecil:

mkdir inode-test
cd inode-test

for i in {1..50000}; do touch file_$i.txt; done
Enter fullscreen mode Exit fullscreen mode

Lalu cek:

df -i
Enter fullscreen mode Exit fullscreen mode

Terlihat bahwa inode usage meningkat drastis.

Ini membuka wawasan bahwa disk penuh bukan hanya soal ukuran file.


4️⃣ Mount Point Awareness

Saya juga belajar mengecek mount point:

lsblk
Enter fullscreen mode Exit fullscreen mode

atau

mount | grep '^/dev'
Enter fullscreen mode Exit fullscreen mode
Mount Fungsi
/ Root filesystem
/home Data user
/var Log dan data service
/tmp File sementara

Jika /var penuh, service seperti database atau web server bisa gagal berjalan.


5️⃣ Kenapa df dan du Bisa Berbeda?

Kasus nyata di production:

df -h menunjukkan 100%

du tidak menunjukkan file besar

Kemungkinan penyebabnya:

File sudah dihapus tetapi masih digunakan oleh process

Linux tidak benar-benar membebaskan space sampai process yang memegang file descriptor menutup file tersebut

Untuk mengecek:

lsof | grep deleted
Enter fullscreen mode Exit fullscreen mode

Ini adalah teknik debugging yang sangat penting di server production.

6️⃣ Mini Simulasi Log Growth

Saya menjalankan fake service dan mengarahkan output ke file:

./fake-service.sh >> service.log &
Enter fullscreen mode Exit fullscreen mode

Kemudian memantau ukuran file:

du -sh service.log
Enter fullscreen mode Exit fullscreen mode

Dari sini saya memahami bagaimana log bisa tumbuh tanpa disadari dan menyebabkan disk penuh jika tidak ada log rotation.


💡 Insight Hari Ini

Error:

No space left on device
Enter fullscreen mode Exit fullscreen mode

Tidak selalu berarti:

  • RAM habis
  • CPU overload
  • Database error

Sering kali penyebabnya adalah:

  • Disk block habis
  • Inode habis
  • File descriptor masih terbuka

Memahami filesystem membuat saya melihat sistem Linux dengan cara yang jauh lebih dalam lagi.

Sampai jumpa di Infra Journey hari keempat nanti!

Top comments (0)