Linux tidak mengenal huruf drive seperti C: atau D:. Semua filesystem — partisi ext4, USB FAT32, sampai filesystem semu buatan kernel — dipasang ke satu pohon direktori yang sama, dan proses pemasangan itulah mount. Titik tempat filesystem itu ditempelkan disebut mount point, dan perilakunya bisa kita atur lewat opsi seperti noatime atau umask. Chapter ini membahas cara mount dan umount bekerja, opsi-opsi yang paling sering dipakai, dan cara membaca tabel mount yang sedang aktif. Konsep dasarnya sudah kita sentuh di struktur filesystem ; sekarang kita kendalikan sisi administrasinya.

Mount Point Adalah Direktori Biasa #

Tidak ada penanda khusus yang menjadikan sebuah direktori layak dipakai sebagai mount point — direktori mana pun bisa. Yang membedakan hanyalah apakah ada filesystem yang sedang menempel padanya. Kita buktikan dengan membuat direktori kecil berisi satu berkas latihan:

bash
mkdir -p mnt-data
touch mnt-data/catatan-lama.txt
ls -1 mnt-data

Output yang Dihasilkan:

text
catatan-lama.txt

Direktori mnt-data terlihat seperti direktori biasa karena memang begitulah adanya: berisi catatan-lama.txt dan siap dipakai. Saat sebuah filesystem dipasang pada direktori ini, isi aslinya tidak terlihat — tersembunyi di balik filesystem yang menempel — dan baru muncul kembali setelah umount. Perilaku “isi lama menghilang” ini membuat sebagian admin panik mengira datanya hilang, padahal hanya tertutup.

Perintah mount dan umount #

Bentuk dasarnya lugas: perangkat, lalu mount point. umount menerima salah satu dari keduanya:

bash
sudo mount /dev/sdb1 /mnt/data
sudo mount -o ro -t vfat /dev/sdc1 /mnt/usb
sudo umount /mnt/data

Perintah pertama memasang partisi ext4 /dev/sdb1 pada /mnt/data dengan opsi bawaan. Perintah kedua menunjukkan kedua opsi yang sering dipakai: -t memaksakan jenis filesystem alih-alih mendeteksi otomatis, dan -o ro memasangnya baca-saja — cocok untuk media yang tidak ingin terubah tanpa sengaja. Perintah ketiga melepasnya kembali. Semuanya menuntut root karena menyangkut struktur seluruh sistem.

Opsi Mount yang Sering Dipakai #

Opsi diberikan setelah -o, dipisahkan koma tanpa spasi. Inilah yang paling sering muncul di konfigurasi nyata:

OpsiEfek
defaultskumpulan bawaan: rw,suid,dev,exec,auto,nouser,async
noatimejangan catat waktu akses file — mengurangi penulisan kecil
robaca-saja
noexeclarang menjalankan program dari filesystem ini
nodev, nosuidabaikan file perangkat dan bit setuid di dalamnya
uid=, gid=, umask=atur kepemilikan dan hak akses — khas filesystem FAT

Baris defaults sering disalahpahami sebagai “tanpa opsi”, padahal isinya tujuh opsi sekaligus. Gabungan noexec,nodev,nosuid adalah trio favorit untuk partisi data dan USB yang tidak perlu menjalankan program apa pun. Untuk filesystem FAT yang tidak mengenal pemilik ala Unix, uid=1000,gid=1000,umask=0077 membuat file di dalamnya tampak dimiliki user Anda dengan hak akses wajar. Opsi bisa diubah tanpa melepas mount — cukup memasang ulang:

bash
sudo mount -o remount,rw /mnt/data

Bind Mount dan Kenapa Mount Menuntut Root #

Satu variasi yang banyak dipakai layak dikenal sejak awal: bind mount, yaitu memasang ulang sebuah direktori ke lokasi kedua. Kontainer, layanan yang dijail, dan labirin chroot semuanya memakai teknik ini untuk menyodok potongan pohon direktori ke tempat lain:

bash
sudo mount --bind /srv/data /mnt/data

Setelah perintah itu, isi /srv/data terlihat ganda: di rumah aslinya dan di /mnt/data. Kita tutup bagian ini dengan membuktikan bahwa mount sungguhan menolak dijalankan tanpa hak yang cukup:

bash
mkdir -p sumber target-bind
mount --bind sumber target-bind 2>&1

Output yang Dihasilkan:

text
mount: /home/budi/target-bind: must be superuser to use mount.
       dmesg(1) may have more information after failed mount system call.

Exit code 32 adalah kode gagal bawaan mount, dan pesannya jujur: must be superuser to use mount — syscall yang dipakai memang menuntut kemampuan khusus kernel (CAP_SYS_ADMIN). Pengalihan 2>&1 membawa pesan galat ke stdout supaya ikut terverifikasi. Di sistem nyata Anda akan menjalankannya dengan sudo dan berhasil; yang penting dipahami adalah penolakan ini murni soal hak akses, bukan kesalahan sintaks.

Membaca Tabel Mount: /proc/mounts dan findmnt #

Kernel mencatat semua mount yang aktif di file /proc/mounts, enam kolom per baris. Berikut contoh tampilan tiga barisnya pada sistem desktop:

text
/dev/sda3 / ext4 rw,relatime 0 0
tmpfs /run tmpfs rw,nosuid,nodev,size=402308k,mode=755 0 0
/dev/sdb1 /mnt/data ext4 rw,noatime 0 0

Enam kolomnya berurutan: perangkat sumber, mount point, jenis filesystem, opsi aktif, lalu dua angka sisa warisan lama yang selalu 0 0 di sini (versi perintah dari /etc/fstab yang memakai angka itu dibahas di chapter fstab ). Perintah mount tanpa argumen membaca tabel yang sama, tetapi untuk pekerjaan sehari-hari findmnt lebih rapi: findmnt /mnt/data menampilkan satu entri, dan findmnt -T namafile menjawab pertanyaan “file ini berada di mount mana”. Detail keduanya ada di mount(8) , umount(8) , dan findmnt(8) .

Ketika umount Menolak: target is busy #

Kegagalan umount yang paling sering menjengkelkan berujung pada satu baris ini — berikut contoh tampilannya:

text
umount: /mnt/data: target is busy.

Artinya ada yang masih memegang filesystem itu, dan penyebab klasiknya dua: sebuah shell sedang berdiri di dalam direktori tersebut, atau sebuah proses masih membuka file di dalamnya. Penyelidikannya bertingkat: keluar dari direktori yang bersangkutan, lalu cari proses yang masih memakai isi filesystem dengan lsof +D /mnt/data atau fuser -vm /mnt/data. Bila prosesnya tidak bisa dimatikan dan sistem benar-benar butuh filesystem itu lepas, opsi terakhir adalah lazy unmount: sudo umount -l /mnt/data melepaskan nama mount saat itu juga, tetapi proses yang memegang file tetap memegangnya sampai menutup sendiri.

Semua mount yang kita bahas di sini lenyap begitu sistem reboot. Agar filesystem favorit selalu tersedia otomatis di mount point yang sama, kita perlukan daftar permanen — dan itulah tugas /etc/fstab pada chapter berikutnya.