Flash disk yang dicolokkan ke laptop Windows muncul sebagai drive E:; di Linux tidak ada huruf drive sama sekali. Seluruh penyimpanan — partisi ext4, USB FAT32, sampai filesystem maya buatan kernel — harus dipasang ke sebuah folder di pohon direktori tunggal yang berakar pada /. Proses pemasangan itu bernama mount, titik tempelnya disebut mount point, dan melepasnya disebut unmount. Pada Chapter ini kita bedah cara kerja ketiganya, lalu lihat bagaimana /etc/fstab merakit pohon itu otomatis setiap boot.

Satu Pohon, Banyak Filesystem #

Kernel Linux hanya merawat satu pohon direktori, sementara setiap perangkat penyimpanan membawa pohon direktorinya sendiri. Perintah mount menjahit pohon perangkat itu ke sebuah folder kosong di pohon utama; sejak saat itu, membaca folder tersebut berarti membaca isi perangkat. Inilah yang membuat path /mnt/data/laporan.txt bisa berada di disk yang berbeda dari /home/budi/laporan.txt tanpa aplikasi menyadarinya. Siklus lengkapnya di terminal:

bash
sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data
ls /mnt/data
sudo umount /mnt/data

Perintah mount menerima dua argumen: perangkat (/dev/sdb1, partisi pertama disk kedua) dan mount point (/mnt/data, folder yang harus sudah ada). Perintah umount (tanpa huruf n — nama warisan Unix) menerima salah satu dari keduanya. Selama filesystem terpasang, isi asli folder /mnt/data tertutup oleh isi filesystem yang menempel; setelah umount, isi asli folder itu muncul kembali.

Membaca Tabel Mount dari /proc/mounts #

Kernel menuliskan daftar semua filesystem yang sedang terpasang ke file /proc/mounts; /etc/mtab kini hanya symlink ke sana. Setiap barisnya memuat enam kolom: perangkat, mount point, jenis filesystem, opsi (dipisah koma), angka frekuensi backup dump, dan urutan pemeriksaan fsck saat boot. Isi file ini berbeda di setiap mesin, jadi kita latih membacanya lewat fixture mounts-tiruan yang meniru lima baris tipikal server kantor:

bash
mkdir -p latihan
cd latihan
printf '%s\n' \
  '/dev/sda1 / ext4 rw,relatime,errors=remount-ro 0 0' \
  '/dev/sda2 /home ext4 rw,relatime 0 0' \
  '/dev/sdb1 /mnt/data ext4 rw,relatime,noatime 0 0' \
  '/dev/sr0 /media/cdrom iso9660 ro,noexec 0 0' \
  'tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0' > mounts-tiruan
awk '$3 == "ext4" { print $2 " -> " $4 }' mounts-tiruan
awk '{ n[$3]++ } END { for (t in n) print t, n[t] }' mounts-tiruan | sort

Output yang Dihasilkan:

text
/ -> rw,relatime,errors=remount-ro
/home -> rw,relatime
/mnt/data -> rw,relatime,noatime
ext4 3
iso9660 1
tmpfs 1

Mari kita telaah isi blok di atas:

  1. Baris 2–7 (printf ... > mounts-tiruan): membangun fixture lima baris yang formatnya sama persis dengan /proc/mounts — perangkat, mount point, jenis, opsi, lalu dua angka.
  2. Baris 8 (awk '$3 == "ext4" ...): menyaring baris yang jenis filesystem-nya ($3) ext4, lalu mencetak mount point ($2) dan opsi ($4).
  3. Baris 9 (awk '{ n[$3]++ } ...): menghitung jumlah mount per jenis lewat array asosiatif n; blok END berjalan setelah input habis, dan sort merapikan hasilnya.

Dari hasil terlihat tiga mount ext4, satu iso9660 dari DVD yang dipasang read-only, dan satu tmpfs — filesystem yang isinya hidup di memori. Untuk membaca tabel yang sama dalam kolom rapi plus struktur pohon induk-anak, findmnt dari paket util-linux adalah alat yang paling nyaman.

Opsi Mount yang Mengubah Perilaku #

Argumen ketiga mount menentukan bagaimana filesystem itu diperlakukan. Opsi paling sering dipakai:

OpsiEfekKapan dipakai
defaultspaket standar: rw,suid,dev,exec,auto,nouser,asynchampir semua partisi Linux
roread-only, semua penulisan ditolakISO, partisi bermasalah saat investigasi
noatimetidak mengubah waktu akses saat file dibacaSSD dan server sibuk
noexecbinary di filesystem itu tidak boleh dijalankanpartisi data dan /tmp yang dikeraskan
nodev,nosuidabaikan file perangkat dan bit setuidpartisi yang tidak dipercaya
uid=,gid=pemilik file untuk filesystem tanpa izin UnixUSB FAT32 agar bukan milik root
nofailboot tetap lanjut walau perangkatnya tidak adadisk eksternal yang kadang lepas

Filesystem yang sudah terpasang bisa diubah tanpa dilepas lewat remount: sudo mount -o remount,rw / membuka kembali root yang terkunci read-only. Variasi lain yang penting: bind mount (mount --bind /srv/www /home/budi/www) menempelkan folder ke folder lain — satu isi, dua pintu masuk, dipakai container dan chroot; sedangkan FUSE (/dev/fuse) memungkinkan filesystem seperti NTFS-3G dan sshfs dibangun di ruang user tanpa menyentuh kernel.

/etc/fstab: Merakit Pohon Saat Boot #

Mount manual hilang begitu sistem reboot. Agar pohon terakit otomatis, Linux menyimpan daftar permanen di /etc/fstab: enam kolom yang formatnya masih kerabat dekat /proc/mounts — perangkat (biasanya UUID), mount point, jenis, opsi, lalu dua angka untuk dump dan fsck. Saat boot, mount -a memasang semuanya; setelah itu mount /mnt/data pun cukup memanggil mount point-nya karena fstab sudah menyimpan sisanya.

Karena menyunting /etc/fstab sungguhan berisiko, kita berlatih lewat trik yang disediakan util-linux: variabel LIBMOUNT_FSTAB mengalihkan lokasi fstab yang dibaca findmnt, sehingga fixture latihan bisa dipakai tanpa menyentuh file sistem:

bash
mkdir -p latihan
cd latihan
cat > fstab-tiruan << 'EOF'
# /etc/fstab: filesystem statis, dirakit oleh mount -a saat boot
UUID=12345678-abcd-4ef0-9abc-def012345678 /          ext4   defaults            0 1
/dev/sdb1                             /mnt/data   ext4   defaults,noatime    0 2
tmpfs                                 /mnt/cache  tmpfs  defaults,size=512M  0 0
UUID=87654321-dcba-4ef0-9abc-def012345678 none      swap   sw                  0 0
EOF
LIBMOUNT_FSTAB=$PWD/fstab-tiruan findmnt --fstab -o TARGET,SOURCE,FSTYPE,OPTIONS
LIBMOUNT_FSTAB=$PWD/fstab-tiruan findmnt --fstab /mnt/data -o TARGET,SOURCE,FSTYPE

Output yang Dihasilkan:

text
TARGET     SOURCE                                    FSTYPE OPTIONS
/          UUID=12345678-abcd-4ef0-9abc-def012345678 ext4   defaults
/mnt/data  /dev/sdb1                                 ext4   defaults,noatime
/mnt/cache tmpfs                                     tmpfs  defaults,size=512M
none       UUID=87654321-dcba-4ef0-9abc-def012345678 swap   sw
TARGET    SOURCE    FSTYPE
/mnt/data /dev/sdb1 ext4

Heredoc cat > fstab-tiruan membangun fstab latihan empat baris: root ext4, partisi data, tmpfs untuk cache, dan swap. Prefix LIBMOUNT_FSTAB=$PWD/... menetapkan variabel tersebut hanya untuk satu perintah — opsi --fstab memerintahkan findmnt membaca fstab itu, -o memilih kolomnya, dan argumen /mnt/data pada pemanggilan kedua memfilter satu mount point: “bagaimana partisi ini seharusnya dipasang menurut fstab?”

Perhatikan baris swap dengan mount point none: swap tidak diakses lewat pohon direktori, sehingga kolomnya memang kosong. Administrasi fstab yang lebih dalam — x-systemd.automount, nofail, penanganan galat saat boot — dibahas tuntas di Section Storage dan Backup .

Ketika umount Menolak: Target Is Busy #

Skenario klasik: umount /mnt/data ditolak dengan pesan target is busy. Mekanismenya sengaja demikian — kernel menolak melepas filesystem selama masih ada proses yang memegang file terbuka di dalamnya, atau yang berdiri (cwd) di salah satu foldernya. Berikut contoh tampilan lengkapnya:

console
$ umount /mnt/data
umount: /mnt/data: target is busy.

$ lsof +f -- /mnt/data
COMMAND   PID USER  FD   TYPE DEVICE  SIZE/OFF NODE NAME
backup.s 1024  budi cwd    DIR  259,1      4096    2 /mnt/data

Di contoh di atas, proses backup.s masih berdiri di dalam mount point — keluar dari folder itu (cd) atau menghentikan prosesnya sudah cukup. Alternatif fuser -vm /mnt/data menampilkan daftar serupa dalam satu layar. Opsi terakhir umount -l (lazy) melepas mount dari pohon seketika tapi menunda pembersihan sesungguhnya sampai pemegang terakhir melepas — berguna saat darurat, namun bukan pengganti menutup proses dengan benar.

Mount adalah jembatan antara pohon direktori dan perangkat penyimpanan — namun sebelum dipasang, perangkat harus dipotong dulu menjadi partisi yang beridentitas jelas. Pemotongan itulah topik Chapter Disk Partitioning .

Referensi lanjut: mount(8) , umount(8) , dan fstab(5) untuk daftar opsi lengkap ketiganya.