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:
mkdir -p mnt-data
touch mnt-data/catatan-lama.txt
ls -1 mnt-dataOutput yang Dihasilkan:
catatan-lama.txtDirektori 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:
sudo mount /dev/sdb1 /mnt/data
sudo mount -o ro -t vfat /dev/sdc1 /mnt/usb
sudo umount /mnt/dataPerintah 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:
| Opsi | Efek |
|---|---|
defaults | kumpulan bawaan: rw,suid,dev,exec,auto,nouser,async |
noatime | jangan catat waktu akses file — mengurangi penulisan kecil |
ro | baca-saja |
noexec | larang menjalankan program dari filesystem ini |
nodev, nosuid | abaikan 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:
sudo mount -o remount,rw /mnt/dataBind 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:
sudo mount --bind /srv/data /mnt/dataSetelah 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:
mkdir -p sumber target-bind
mount --bind sumber target-bind 2>&1Output yang Dihasilkan:
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:
/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 0Enam 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:
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.