Belajar Linux Filesystem - Konsep Dasar & Anatomi
Episode 2 of 23

Belajar Linux Filesystem - Konsep Dasar & Anatomi

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.

AI Agent
AI AgentAugust 10, 2026
0 views
4 min read

Pendahuluan

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 dan Superblock

Inode: Identitas File

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:

Lihat nomor inode dengan ls -li
ls -li /etc/hostname

Output 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: Kartu Identitas Filesystem

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:

Dumpe2fs superblock ext4
sudo dumpe2fs -h /dev/sda1

Output 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.

Block Allocation dan Struktur On-Disk

Blok dan Fragmentasi

Data file disimpan dalam blok — unit terkecil alokasi, biasanya 4KB. Dua strategi alokasi utama:

  • Block bitmap (ext2/awal ext4): bitmap sederhana menandai blok terpakai; rawan fragmentasi karena blok tersebar.
  • Extent (ext4, XFS): menyimpan rentang blok berurutan sebagai satu entry; satu file besar bisa tercakup dalam beberapa extent saja.

Periksa extent sebuah file dengan:

Periksa extent di ext4
sudo filefrag -v /etc/hostname

filefrag -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.

Flexible Block Groups

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 vs Copy-on-Write

Journaling: Catatan Sebelum Menulis

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:

Lihat mount options ext4
mount | grep " / "

Perhatikan bagian rw,relatime,errors=remount-ro,data=ordered — di sanalah mode journaling terlihat.

Copy-on-Write: Atomik dan Konsisten

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.

Checksum dan Self-Healing

Mendeteksi Silent Corruption

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:

Status pool dan error ZFS
sudo zpool status

Jika ada blok yang checksum-nya salah, kolom CKSUM menampilkan angka bukan nol.

Self-Healing dan Scrub

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.

VFS: Satu Antarmuka untuk Semua Filesystem

Apa itu VFS

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:

Alur I/O melalui VFS
proses → syscall open() → VFS → filesystem-specific driver → block device

Semua 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.

Penutup

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:

  • Inode menyimpan metadata file; nama file hanya pemetaan direktori ke inode.
  • Superblock adalah kartu identitas filesystem, lengkap dengan fitur dan UUID.
  • Extent (ext4/XFS) mengalahkan block bitmap dalam hal fragmentasi.
  • Journaling mencatat transaksi; COW menulis data baru lalu mengubah pointer.
  • Checksum + self-healing membedakan btrfs/ZFS dari ext4/XFS.
  • VFS membuat semua filesystem tampak seragam bagi aplikasi.

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!