Setiap filesystem dibangun dari blok penyusun yang sama: inode, superblock, dan mekanisme alokasi blok. Episode ini membedah anatomi filesystem on-disk, perbedaan journaling vs Copy-on-Write, checksum self-healing, dan bagaimana VFS menyatukan semuanya.

Setelah memahami sejarah, sekarang saatnya membedah anatomi internal sebuah filesystem. Ketika kalian membuat file di Linux, banyak hal terjadi di balik layar: superblock dibaca, inode dialokasikan, blok data dicadangkan, dan journal atau mekanisme COW mencatat transaksinya. Memahami lapisan ini akan membuat perintah seperti tune2fs atau zfs set terasa masuk akal.
Episode 2 ini membahas empat pilar konsep filesystem: inode, superblock, block allocation, dan integritas data. Ditambah satu lapisan abstraksi penting yang membuat semua filesystem bekerja seragam di Linux: VFS (Virtual Filesystem Switch).
Konsep-konsep di episode ini bersifat universal — berlaku untuk ext4, XFS, btrfs, maupun ZFS. Bedanya hanya pada bagaimana masing-masing mengimplementasikannya. Begitu kalian menguasai pilar ini, mempelajari filesystem baru tinggal membaca dokumentasinya.
Inode adalah struktur data yang menyimpan metadata sebuah file: ukuran, pemilik, permission, timestamp, jumlah hard link, dan lokasi blok data. Nama file itu sendiri tidak disimpan di inode — nama disimpan di direktori, yang hanya memetakan nama ke nomor inode.
Coba lihat inode file mana pun:
ls -li /etc/hostnameOutput kolom pertama adalah nomor inode. Setiap filesystem memiliki inode table dengan kapasitas terbatas — ext4 default menciptakan sekitar 1 inode per 16KB. Jika filesystem penuh inode tapi ruang masih kosong, itulah yang terjadi.
Superblock adalah blok yang menyimpan metadata seluruh filesystem: tipe, ukuran blok, jumlah blok dan inode, UUID, serta flag fitur. Karena krusial, superblock diduplikasi di beberapa lokasi untuk redundansi.
Periksa isi superblock ext4:
sudo dumpe2fs -h /dev/sda1Output dumpe2fs -h menampilkan block size, jumlah inode, UUID, dan fitur yang diaktifkan. Jika superblock utama rusak, e2fsck -b 32768 bisa memakai superblock cadangan — kita akan bahas di episode 11.
Data file disimpan dalam blok — unit terkecil alokasi, biasanya 4KB. Dua strategi alokasi utama:
Periksa extent sebuah file dengan:
sudo filefrag -v /etc/hostnamefilefrag -v menampilkan daftar extent file. File yang terfragmentasi punya banyak baris extent, sedangkan file kontigu punya satu atau dua. Fragmentasi menurunkan performa baca karena kepala disk harus bergerak.
ext4 memperkenalkan flexible block groups: beberapa grup blok dikelompokkan agar metadata (bitmap dan inode table) terkumpul di satu area. Ini mengurangi pergerakan kepala disk saat mengalokasikan inode dan blok secara bersamaan — perbaikan besar dibanding ext2/ext3.
Journaling menulis deskripsi transaksi ke journal sebelum data benar-benar dimodifikasi. ext4 mendukung beberapa mode:
data=writeback: hanya metadata yang di-journal; paling cepat, paling tidak aman.data=ordered: metadata di-journal setelah data ditulis; default ext4, seimbang.data=journal: data dan metadata di-journal; paling aman, paling lambat.Cek mode journaling filesystem kalian:
mount | grep " / "Perhatikan bagian rw,relatime,errors=remount-ro,data=ordered — di sanalah mode journaling terlihat.
Copy-on-Write (COW) dipakai btrfs dan ZFS. Data tidak ditimpa; blok baru diisi data baru, dan pointer diubah menunjuk ke blok baru. Selama ada snapshot, blok lama tetap dipertahankan — inilah mengapa snapshot COW hampir instan dan murah. Kelemahannya: fragmentasi lebih tinggi dan workload kecil bisa lebih lambat tanpa tuning.
COW juga menyingkirkan kebutuhan journal, karena perubahan pointer dilakukan atomik — sistem tidak pernah melihat keadaan setengah jadi.
Filesystem tradisional tidak tahu jika bit di dalam blok berubah karena bad sector atau bit rot. Checksum memecahkan ini: setiap blok data menyimpan ringkasan kriptografisnya. Saat blok dibaca, checksum diverifikasi; jika cocok, data dianggap utuh.
Cek mekanisme ini di ZFS:
sudo zpool statusJika ada blok yang checksum-nya salah, kolom CKSUM menampilkan angka bukan nol.
Self-healing adalah keunggulan btrfs dan ZFS: ketika checksum gagal tapi filesystem punya salinan lain (mirror atau parity), data otomatis dipulihkan dari salinan yang sehat. Scrub adalah pembacaan seluruh data secara rutin untuk mendeteksi dan memulihkan korupsi sebelum kalian membutuhkan data itu.
Perhatikan perbedaannya: ext4 dan XFS memakai checksum metadata (mendeteksi korupsi struktur), sedangkan btrfs dan ZFS memeriksa seluruh data dan bisa memperbaikinya sendiri.
Virtual Filesystem Switch adalah lapisan abstraksi di kernel Linux yang menyediakan satu set syscall standar — open, read, write, stat — terlepas dari filesystem yang mendasarinya. Berkat VFS, program aplikasi tidak perlu tahu apakah file berada di ext4, XFS, NFS, atau tmpfs.
Struktur pohon direktori seragam: setiap filesystem di-mount di bawah root /, membentuk satu namespace global. Inilah yang membuat Linux bisa menggabungkan banyak filesystem berbeda dalam satu struktur direktori.
Simulasikan apa yang VFS lakukan setiap kali program membaca file:
proses → syscall open() → VFS → filesystem-specific driver → block deviceSemua file di Linux mengikuti alur ini. Pemahaman VFS menjelaskan mengapa satu mount point bisa berupa filesystem ext4 sedangkan mount point lain berupa ZFS tanpa aplikasi menyadarinya.
Anatomi filesystem ternyata terdiri dari komponen yang saling terkait: inode menyimpan metadata, superblock menjadi kartu identitas, alokasi blok menentukan performa, dan mekanisme integritas menentukan keamanan data. VFS menyatukan semuanya di balik satu antarmuka yang seragam bagi aplikasi.
Inti yang harus dibawa pulang:
Di episode 3 selanjutnya kita masuk ke praktik pertama: ext4 — konsep, tools, dan daily operation. Kalian akan membuat filesystem ext4 dari awal, memeriksa dengan dumpe2fs, meresize, dan menjalankan e2fsck. Siapkan disk loopback kalian dari episode 0!