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:
cat /etc/fstab
findmnt --fstab --verifyOutput yang Dihasilkan:
# UNCONFIGURED FSTAB FOR BASE SYSTEM
Success, no errors or warnings detectedDua 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:
| # | Field | Contoh | Arti |
|---|---|---|---|
| 1 | perangkat | UUID=3f5e... | siapa yang dipasang |
| 2 | mount point | /data | dipasang di mana (none untuk swap) |
| 3 | jenis filesystem | ext4 | formatnya apa |
| 4 | opsi | defaults,noatime | perilaku mount, koma sebagai pemisah |
| 5 | dump | 0 | penanda alat backup warisan — hampir selalu 0 |
| 6 | pass | 2 | urutan 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:
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-kitaOutput yang Dihasilkan:
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 ext4Bedah baris per barisnya:
- Baris 1 (
cat > fstab-kita <<'BARIS'): heredoc dengan penanda dikutip ('BARIS') menulis isi apa adanya tanpa ekspansi variabel, ditutup barisBARISdi baris keempat. - Baris 5 (
cat fstab-kita): menampilkan isi file — dua baris mount yang barusan ditulis. - Baris 6 (
awk ...): pola!/^#/ && NFmelewati 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:
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:
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:
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 --fstabOutput yang Dihasilkan:
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.automountTiga 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:
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 0Perhatikan 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:
sudo systemctl daemon-reload
sudo mount -aPerintah 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.