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:
sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data
ls /mnt/data
sudo umount /mnt/dataPerintah 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:
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 | sortOutput yang Dihasilkan:
/ -> rw,relatime,errors=remount-ro
/home -> rw,relatime
/mnt/data -> rw,relatime,noatime
ext4 3
iso9660 1
tmpfs 1Mari kita telaah isi blok di atas:
- 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. - Baris 8 (
awk '$3 == "ext4" ...): menyaring baris yang jenis filesystem-nya ($3)ext4, lalu mencetak mount point ($2) dan opsi ($4). - Baris 9 (
awk '{ n[$3]++ } ...): menghitung jumlah mount per jenis lewat array asosiatifn; blokENDberjalan setelah input habis, dansortmerapikan 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:
| Opsi | Efek | Kapan dipakai |
|---|---|---|
defaults | paket standar: rw,suid,dev,exec,auto,nouser,async | hampir semua partisi Linux |
ro | read-only, semua penulisan ditolak | ISO, partisi bermasalah saat investigasi |
noatime | tidak mengubah waktu akses saat file dibaca | SSD dan server sibuk |
noexec | binary di filesystem itu tidak boleh dijalankan | partisi data dan /tmp yang dikeraskan |
nodev,nosuid | abaikan file perangkat dan bit setuid | partisi yang tidak dipercaya |
uid=,gid= | pemilik file untuk filesystem tanpa izin Unix | USB FAT32 agar bukan milik root |
nofail | boot tetap lanjut walau perangkatnya tidak ada | disk 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:
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,FSTYPEOutput yang Dihasilkan:
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 ext4Heredoc 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:
$ 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.