Partisi yang baru dipotong masih berupa wadah kosong. Sebelum bisa menyimpan satu file pun, wadah itu harus diisi struktur data — peta blok, tabel inode, jurnal — dan bentuk struktur itulah yang disebut filesystem. Pilihannya banyak, dan tiap pilihan membawa konsekuensi: kemampuan pulih setelah mati listrik, dukungan snapshot, kompresi bawaan, sampai batas ukuran file. Pada Chapter ini kita bandingkan filesystem yang paling sering dipakai di Linux, memahami filosofi di balik masing-masing, lalu berlatih membuat satu jenis filesystem sungguhan — area swap — beserta tanda tangan yang membuatnya dikenali sistem.

ext4: Standar yang Matang #

ext4 adalah bawaan default di Debian, Ubuntu, dan mayoritas distribusi, dan posisinya pantas: sudah diuji lebih dari satu dekade di juta-juta mesin. Kekuatannya dimulai dari journal — buku catatan tempat filesystem menuliskan niatnya (“aku akan menulis blok X, Y, Z”) sebelum benar-benar menulis. Bila listrik mati di tengah penulisan, saat boot berikutnya filesystem cukup membaca jurnal dan melewati transaksi yang belum selesai, alih-alih memeriksa seluruh disk seperti filesystem generasi ext2 yang harus menjalani fsck penuh.

Fitur lain yang penting: extents — pencatatan file besar sebagai rentang blok berurutan, bukan satu peta per blok — serta kemampuan membesar (grow) secara online saat partisi diperluas. Menyusutkan ext4 masih mungkin, tetapi harus dilakukan offline. Untuk penggunaan sehari-hari — sistem operasi, home directory, server web — ext4 adalah pilihan yang nyaris tak pernah salah.

XFS dan Btrfs: Dua Filosofi Berbeda #

XFS, default di keluarga Red Hat/Fedora, dirancang untuk throughput file besar. Struktur allocation group-nya membagi satu disk menjadi beberapa wilayah yang bisa ditulis paralel oleh banyak core, dan delayed allocation-nya memutuskan penempatan blok setelah tahu ukuran akhir file. Konsekuensi desainnya yang paling terkenal: XFS tidak bisa menyusut sama sekali — memperkecil berarti backup, format ulang, lalu restore.

Btrfs membawa filosofi berlawanan: filesystem sebagai platform fitur. Mekanisme copy-on-write (CoW)-nya tidak pernah menimpa blok lama saat file diubah — blok baru ditulis di tempat lain, lalu penunjuknya dipindahkan. Hasilnya, snapshot (fotografi pohon direktori pada satu titik waktu) menjadi hampir gratis dan instan, dan kompresi transparan (compress=zstd) membuat data terkompresi tanpa aplikasi menyadarinya. Checksum pada data juga mendeteksi pembusukan senyap (bit rot). Sisi bayangannya: CoW membayar pajak saat database menimpa file raksasa terus-menerus — kasus yang lebih cocok mematikan CoW per-file atau memakai XFS. Pemanfaatan snapshot untuk backup dibahas tuntas di Chapter Filesystem Snapshots .

Filesystem Lintas Platform: vfat, exfat, ntfs #

Ketiga nama ini muncul setiap kali storage harus dibaca juga oleh Windows, kamera, atau TV. vfat (FAT32) paling universal tetapi membatasi satu file maksimum 4 GiB — cukup untuk dokumen, kurang untuk video hasil rekaman. exfat mengangkat batas itu dan cocok untuk flash disk kapasitas besar. ntfs membawa filesystem Windows penuh — di Linux, kernel modern membacanya lewat driver ntfs3, sedangkan driver lapisan FUSE ntfs-3g masih dipakai di banyak distribusi. Karena keluarga FAT tidak mengenal permission Unix, opsi mount uid= dan gid= yang kita bahas di Chapter Mount dan Unmount menjadi satu-satunya cara mengatur kepemilikannya.

Satu anggota keluarga yang istimewa adalah swap: bukan filesystem untuk menyimpan file, melainkan area mentah untuk halaman memori yang menganggur. Karena itu swap tidak punya pohon direktori, dan baris fstab-nya memang memakai mount point none.

Memilih: Tabel Perbandingan #

Aspekext4XFSBtrfsvfat/exfat
Journalyayaya (CoW)tidak
Snapshottidaktidakya, murahtidak
Kompresi bawaantidaktidakya (zstd)tidak
Menyusut (shrink)ya, offlinetidak bisayaya
Ukuran file maksimum16 TiB8 EiB16 EiB4 GiB / tak terbatas
Kasus passistem, server umumdata besar, mediasnapshot, kompresiUSB lintas platform

Membuat Filesystem dan Tanda Tangannya #

Semua filesystem dibuat lewat keluarga perintah mkfs: sudo mkfs.ext4 -L data /dev/sdb1 mengisi partisi dengan struktur ext4 sekaligus menempelkan label data, sudo mkfs.xfs dan sudo mkfs.btrfs bekerja serupa untuk kedua saudaranya. Label lama bisa diubah tanpa format ulang oleh tune2fs -L nama-baru /dev/sdb1. Setiap mkfs juga menanam tanda tangan (signature) di awal area — string khas yang memberi tahu blkid dan lsblk -f jenis apa yang berada di dalamnya.

Kita tidak bisa menjalankan mkfs.ext4 di lingkungan latihan ini, tetapi util-linux menyediakan mkswap — pembuat area swap — yang bekerja pada file biasa, jadi kita bisa melihat seluruh siklus pembuatan tanda tangan secara nyata:

bash
mkdir -p latihan
cd latihan
dd if=/dev/zero of=swap.img bs=1M count=16 status=none
chmod 600 swap.img
PATH="/usr/sbin:$PATH" mkswap -L swap-latihan -U 12345678-abcd-4ef0-9abc-def012345678 swap.img
PATH="/usr/sbin:$PATH" blkid swap.img

Output yang Dihasilkan:

text
Setting up swapspace version 1, size = 16 MiB (16773120 bytes)
LABEL=swap-latihan, UUID=12345678-abcd-4ef0-9abc-def012345678
swap.img: LABEL="swap-latihan" UUID="12345678-abcd-4ef0-9abc-def012345678" TYPE="swap"

Mari kita telaah blok di atas:

  1. Baris 3 (dd if=/dev/zero ...): membuat file 16 MiB berisi nol sebagai pengganti partisi — bs=1M count=16 menghasilkan ukuran pasti, status=none meredam laporan statistik.
  2. Baris 4 (chmod 600): menutup akses file karena area swap memang harus tidak bisa dibaca user biasa.
  3. Baris 5 (mkswap -L ... -U ...): menanam struktur swap; -L memberi label, -U menetapkan UUID secara manual — di disk sungguhan, UUID dibuat acak, dan justru nilai acak itulah yang membuat /etc/fstab tahan terhadap perpindahan nama perangkat.
  4. Baris 6 (blkid): membaca tanda tangan yang barusan ditanam; prefix PATH="/usr/sbin:$PATH" diperlukan karena blkid berada di luar path pencarian default shell latihan ini.

Keluaran blkid memperlihatkan lengkap label, UUID, dan jenisnya — informasi persis yang ditampilkan lsblk -f di disk sungguhan. Bagaimana bila tanda tangan itu perlu dihapus, misalnya untuk menjadikan partisi kosong kembali? Di situlah wipefs bekerja:

bash
mkdir -p latihan
cd latihan
dd if=/dev/zero of=swap.img bs=1M count=16 status=none
chmod 600 swap.img
PATH="/usr/sbin:$PATH" mkswap -L swap-latihan -U 12345678-abcd-4ef0-9abc-def012345678 swap.img 2>/dev/null
PATH="/usr/sbin:$PATH" wipefs swap.img
PATH="/usr/sbin:$PATH" wipefs -a swap.img
PATH="/usr/sbin:$PATH" blkid swap.img || echo "tidak ada signature tersisa"

Output yang Dihasilkan:

text
Setting up swapspace version 1, size = 16 MiB (16773120 bytes)
LABEL=swap-latihan, UUID=12345678-abcd-4ef0-9abc-def012345678
DEVICE   OFFSET TYPE UUID                                 LABEL
swap.img 0xff6  swap 12345678-abcd-4ef0-9abc-def012345678 swap-latihan
swap.img: 10 bytes were erased at offset 0x00000ff6 (swap): 53 57 41 50 53 50 41 43 45 32
tidak ada signature tersisa

Pemanggilan wipefs pertama hanya melaporkan tanda tangan yang dikenalinya beserta offset-nya. Pemanggilan kedua dengan -a benar-benar menghapusnya: sepuluh byte yang dihapus di offset 0xff6 adalah ASCII 53 57 41 50 53 50 41 43 45 32 — string SWAPSPACE2, penanda resmi area swap. Setelah itu blkid pulang tanpa hasil, dan || memastikan skrip tetap berjalan untuk mencetak keterangan bahwa partisi sudah bersih. || sendiri bekerja karena blkid mengembalikan exit code 2 saat tidak menemukan apa pun — pola yang sama dengan grep saat polanya tidak ketemu.

Filesystem yang tepat adalah yang menjawab kebutuhan datanya: ext4 untuk umum, XFS untuk besar dan deras, Btrfs untuk snapshot dan kompresi, FAT untuk berbagi lintas dunia. Setelah struktur itu terpasang, pertanyaan berikutnya langsung praktis: berapa ruang yang sebenarnya terpakai? Pertanyaan itulah topik Chapter Disk Usage .

Referensi lanjut: mkfs(8) , swapon(8) , wipefs(8) , dan perbandingan filesystem di Arch Wiki .