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 #
| Aspek | ext4 | XFS | Btrfs | vfat/exfat |
|---|---|---|---|---|
| Journal | ya | ya | ya (CoW) | tidak |
| Snapshot | tidak | tidak | ya, murah | tidak |
| Kompresi bawaan | tidak | tidak | ya (zstd) | tidak |
| Menyusut (shrink) | ya, offline | tidak bisa | ya | ya |
| Ukuran file maksimum | 16 TiB | 8 EiB | 16 EiB | 4 GiB / tak terbatas |
| Kasus pas | sistem, server umum | data besar, media | snapshot, kompresi | USB 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:
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.imgOutput yang Dihasilkan:
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:
- Baris 3 (
dd if=/dev/zero ...): membuat file 16 MiB berisi nol sebagai pengganti partisi —bs=1M count=16menghasilkan ukuran pasti,status=nonemeredam laporan statistik. - Baris 4 (
chmod 600): menutup akses file karena area swap memang harus tidak bisa dibaca user biasa. - Baris 5 (
mkswap -L ... -U ...): menanam struktur swap;-Lmemberi label,-Umenetapkan UUID secara manual — di disk sungguhan, UUID dibuat acak, dan justru nilai acak itulah yang membuat/etc/fstabtahan terhadap perpindahan nama perangkat. - Baris 6 (
blkid): membaca tanda tangan yang barusan ditanam; prefixPATH="/usr/sbin:$PATH"diperlukan karenablkidberada 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:
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:
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 tersisaPemanggilan 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 .