Setiap mount yang kita ketik di terminal lenyap begitu sistem reboot, dan tentu tidak ada admin yang mau mengetiknya lagi setiap pagi. File /etc/fstab adalah daftar mount permanen: saat boot, systemd membaca file ini dan membuat unit mount untuk setiap barisnya, sementara perintah seperti mount -a juga memakainya sebagai acuan. Chapter ini membedah keenam field setiap barisnya, menjelaskan mengapa kolom pertama sebaiknya diisi UUID, lalu menutup dengan opsi nofail, urutan fsck, dan cara menguji perubahan sebelum restart — kebiasaan yang menyelamatkan banyak admin dari boot yang menggantung.

Peran /etc/fstab Saat Boot #

Mari kita lihat dulu isi file yang akan kita kelola, sekaligus memperkenalkan alat penguji sintaksnya:

bash
cat /etc/fstab
findmnt --fstab --verify

Output yang Dihasilkan:

text
# UNCONFIGURED FSTAB FOR BASE SYSTEM
Success, no errors or warnings detected

Dua baris itu menceritakan dua hal. Pertama, cat memperlihatkan bahwa container latihan ini memang membawa /etc/fstab yang nyaris kosong — hanya komentar UNCONFIGURED FSTAB FOR BASE SYSTEM, penanda bahwa tidak ada mount permanen yang perlu dibuat. Kedua, findmnt --fstab --verify memeriksa file itu dan menjawab Success, no errors or warnings detected — pada desktop dan server sungguhan, isi file jauh lebih ramai dan perintah inilah pemeriksa pertama sebelum reboot.

Anatomi Enam Field #

Setiap baris non-komentar di fstab terdiri dari enam field yang dipisahkan spasi atau tab:

#FieldContohArti
1perangkatUUID=3f5e...siapa yang dipasang
2mount point/datadipasang di mana (none untuk swap)
3jenis filesystemext4formatnya apa
4opsidefaults,noatimeperilaku mount, koma sebagai pemisah
5dump0penanda alat backup warisan — hampir selalu 0
6pass2urutan pemeriksaan fsck saat boot

Karena formatnya berbasis kolom, fstab sangat enak diolah dengan awk. Kita buat file contoh di rumah kita sendiri — bukan /etc/fstab yang asli:

bash
cat > fstab-kita <<'BARIS'
UUID=3f5e2a1b-9c4d-4e8a-b7f6-1a2b3c4d5e6f  /data    ext4  defaults,noatime  0  2
/dev/sdb1                                  /backup  ext4  defaults,nofail  0  2
BARIS
cat fstab-kita
awk '!/^#/ && NF {print $1, $3}' fstab-kita

Output yang Dihasilkan:

text
UUID=3f5e2a1b-9c4d-4e8a-b7f6-1a2b3c4d5e6f  /data    ext4  defaults,noatime  0  2
/dev/sdb1                                  /backup  ext4  defaults,nofail  0  2
UUID=3f5e2a1b-9c4d-4e8a-b7f6-1a2b3c4d5e6f ext4
/dev/sdb1 ext4

Bedah baris per barisnya:

  1. Baris 1 (cat > fstab-kita <<'BARIS'): heredoc dengan penanda dikutip ('BARIS') menulis isi apa adanya tanpa ekspansi variabel, ditutup baris BARIS di baris keempat.
  2. Baris 5 (cat fstab-kita): menampilkan isi file — dua baris mount yang barusan ditulis.
  3. Baris 6 (awk ...): pola !/^#/ && NF melewati baris komentar dan baris kosong, lalu mencetak field pertama dan ketiga — daftar perangkat beserta jenis filesystemnya. Pola semacam ini berguna untuk audit cepat fstab yang panjang.

Kolom Pertama: Kenapa UUID #

Kita sudah melihat buktinya di chapter Disk Partitioning Tools : nama /dev/sdb1 bisa berpindah antar-boot. UUID kebal terhadap kekacauan itu karena tertanam di dalam filesystem sendiri, dibuat sekali oleh mkfs dan tidak pernah berubah selama filesystem tidak diformat ulang. Beginilah UUID itu terlihat dalam praktik:

bash
export PATH="$PATH:/usr/sbin"
truncate -s 64M partisi-latihan.img
mkswap -L data-latihan partisi-latihan.img >/dev/null 2>&1
blkid -s UUID -s TYPE partisi-latihan.img | sed 's/UUID="[0-9a-f-]*"/UUID="<nilai-acak>"/'

Output yang Dihasilkan:

text
partisi-latihan.img: UUID="<nilai-acak>" TYPE="swap"

mkswap menandatangani file bayangan itu dengan signature swap, dan blkid -s UUID membaca identitas yang tertanam. Perintah sed di ujung hanya menyamarkan UUID asli — nilainya acak dan berbeda pada setiap eksekusi, jadi contoh ini distabilkan agar bisa diverifikasi; di mesin Anda akan muncul 36 karakter unik untuk disalin ke fstab. Untuk filesystem sungguhan, blkid /dev/sdb1 dan lsblk -f adalah dua cara tercepat mengambil UUID, dan direktori /dev/disk/by-uuid/ memuat symlink bernama UUID untuk tiap perangkat. Label (LABEL=data-latihan) juga sah dipakai dan lebih manusiawi, tetapi tidak dijamin unik — dua disk bisa sama-sama berlabel data.

Menguji fstab dengan findmnt #

findmnt bisa membaca fstab tanpa memasang apa pun, dan util-linux menyediakan variabel lingkungan LIBMOUNT_FSTAB untuk mengarahkannya ke file lain — cara sempurna menguji konfigurasi tanpa menyentuh /etc/fstab yang asli:

bash
printf '%s\n' \
  'UUID=8a1f4c2e-d3b5-47e9-9f6a-2c8d1e0b4a5f  /data    ext4  defaults,noatime  0  2' \
  '/dev/sdb1                                /backup  xfs   defaults,nofail  0  2' \
  '/dev/sdc1                                /usb     vfat  uid=1000,gid=1000,noauto,x-systemd.automount  0  0' > fstab-kedua
LIBMOUNT_FSTAB=./fstab-kedua findmnt --fstab

Output yang Dihasilkan:

text
TARGET  SOURCE                                    FSTYPE OPTIONS
/data   UUID=8a1f4c2e-d3b5-47e9-9f6a-2c8d1e0b4a5f ext4   defaults,noatime
/backup /dev/sdb1                                 xfs    defaults,nofail
/usb    /dev/sdc1                                 vfat   uid=1000,gid=1000,noauto,x-systemd.automount

Tiga baris fstab itu terender rapi menjadi empat kolom: target, sumber, jenis, dan opsi. Baris pertama memakai UUID untuk disk internal, baris kedua memakai nama perangkat dengan nofail karena disk cadangan boleh absen, dan baris ketiga menggabungkan noauto dengan x-systemd.automount — USB yang tidak ikut di-boot namun langsung tersedia begitu direktori /usb diakses. Setelah pemeriksaan visual seperti ini, findmnt --fstab --verify (tanpa LIBMOUNT_FSTAB) memeriksa /etc/fstab yang asli: mount point ada atau tidak, opsi sah atau tidak. Detail semua opsinya terdokumentasi di fstab(5) dan halaman Fstab wiki Arch.

Urutan fsck pada Dua Field Terakhir #

Field kelima dan keenam adalah sisa sejarah yang masih hidup. Field dump dipakai alat backup dump yang kini langka — anggap selalu 0. Field pass masih berguna: nilai 1 hanya untuk filesystem root (diperiksa lebih dulu), 2 untuk partisi data lain (diperiksa setelah root, boleh paralel), dan 0 berarti jangan diperiksa fsck sama sekali — wajib untuk swap, dan lazim untuk XFS yang pemeriksaan penuhnya justru dijalankan lewat xfs_repair di luar proses boot. Berikut contoh tampilan /etc/fstab utuh pada server Debian kecil milik Budi:

text
UUID=9c2f9c8f-1a2b-3c4d-5e6f-7a8b9c0d1e2f  /          ext4   errors=remount-ro  0  1
UUID=4A3B-2C1D                              /boot/efi  vfat   umask=0077         0  2
UUID=8a1f4c2e-d3b5-47e9-9f6a-2c8d1e0b4a5f  /data      ext4   defaults,noatime   0  2
/swapfile                                   none       swap   sw                 0  0

Perhatikan polanya: root memakai errors=remount-ro (baca-saja bila rusak supaya masih bisa diperbaiki), partisi EFI memakai umask=0077 seperti yang kita bahas di chapter Mount Configuration , dan swap menulis none di kolom mount point karena tidak menempel di pohon direktori.

Mengaktifkan Perubahan #

Setelah fstab disimpan, dua perintah membuat perubahan itu hidup:

bash
sudo systemctl daemon-reload
sudo mount -a

Perintah pertama meminta systemd membaca ulang unit yang dihasilkan dari fstab; melewatinya membuat systemd dan mount tidak sepaham soal mount terbaru. Perintah kedua memasang semua entri yang belum terpasang — perhatikan bahwa mount -a tidak pernah melepas mount yang ada, jadi aman dijalankan ulang. Bila hasilnya sesuai harapan dan findmnt --fstab --verify tetap bersih, boot berikutnya akan membawa semua filesystem Anda ke tempatnya tanpa satu perintah pun yang diketik ulang.

Satu jenis entri fstab belum pernah kita bahas: baris swap, yang memasang ruang cadangan memori dan tidak punya mount point. Cara kerja, ukuran, dan kapan swap layak dipakai adalah topik chapter berikutnya.