Linux : Disk, Partisi, dan Filesystem (Mount dan fstab)
Disk itu tanah, partisi itu kavling, filesystem itu rak di dalam rumah, dan mount adalah nomor alamatnya. Empat hal ini sering dianggap satu paket, padahal letaknya di lapis yang berbeda. Kalau satu lapis belum selesai, lapis di atasnya tidak akan pernah terpakai.
Kalau kamu pernah menambah hard disk baru, melihat disknya muncul di lsblk, tapi aplikasi tetap berteriak No space left on device β biasanya disknya tidak kurang. Yang kurang adalah salah satu dari empat lapis tadi.
Artikel ini membahas urutan lapis itu, lalu mempraktikkannya dengan aman memakai file image, supaya kamu bisa salah tanpa merusak disk asli.
π― Tujuan
- Memahami beda disk, partisi, filesystem, dan mount point β dan urutan kerjanya.
- Bisa menambah disk baru dari nol: bagi partisi, buat filesystem, tempel, lalu daftarkan di
/etc/fstab. - Tahu kenapa
/etc/fstabsebaiknya memakai UUID, bukan/dev/sdb1. - Bisa membaca gejala "disk penuh" dengan benar: blok habis, inode habis, atau mount point yang ketimpa.
- Tahu cara membatalkan langkah yang salah sebelum server gagal boot.
π Konteks nyata
Bayangkan kamu punya tanah kosong di belakang sekolah. Tanahnya sudah ada, tapi belum bisa dipakai untuk apa pun. Kamu perlu tiga langkah sebelum bisa menaruh barang.
Pertama, membagi tanah jadi kavling dan mencatat pembagiannya di papan denah. Itu partisi dan tabel partisi. Kedua, membangun rak di dalam kavling supaya barang bisa ditata. Itu filesystem. Ketiga, memasang nomor alamat di depan kavling, supaya orang bisa menemukannya dari jalan utama. Itu mount point.
Kalau raknya sudah dibangun tapi nomor alamatnya belum dipasang, barangmu ada di sana β tapi tidak ada satu pun aplikasi yang bisa menemukannya. Inilah yang terjadi saat kamu memformat disk tapi lupa me-mount-nya.
Lalu ada satu dokumen lagi: surat kontrak yang dibaca satpam setiap pagi sebelum gerbang dibuka. Itulah /etc/fstab. Dia menentukan kavling mana yang otomatis dibuka saat server menyala.
π₯ Kasus nyata: Sebuah SMK menambah hard disk 2 TB untuk menyimpan foto kegiatan dan video profil sekolah. Teknisi memformatnya, me-mount ke /mnt/foto, menyalin 400 GB file, lalu pulang. Mount itu tidak didaftarkan di fstab. Malam berikutnya listrik padam dan server restart sendiri. Pagi harinya folder /mnt/foto kosong, dan semua file baru yang masuk sejak itu menumpuk di partisi root. Dua minggu kemudian root penuh, MariaDB berhenti, dan aplikasi rapor mati tepat saat pembagian rapor.
π§ Konsep singkat
πΉ Empat lapis, satu arah
Urutannya tidak bisa dibalik. Kamu tidak bisa membuat filesystem sebelum ada partisi, dan tidak bisa mount sebelum ada filesystem. Setiap lapis punya gejala khas kalau dilewati.
| Lapis | Benda nyata | Dikerjakan dengan | Gejala kalau belum |
|---|---|---|---|
| 1. Disk | tanah utuh | terpasang di slot SATA/NVMe | tidak muncul di lsblk
|
| 2. Partisi | kavling + denah | parted, fdisk, sgdisk |
muncul sdb tanpa sdb1
|
| 3. Filesystem | rak & label | mkfs.ext4, mkfs.xfs |
ada partisi, tapi blkid kosong
|
| 4. Mount point | nomor alamat | mount + entri fstab |
terformat, tapi tidak terlihat di df
|
Aturan praktisnya: selesaikan satu lapis, buktikan, baru naik ke lapis berikutnya. Kalau kamu melompat, kamu akan menebak-nebak di lapis yang salah.
πΉ Partisi dan tabel partisi
Partisi adalah pembagian ruang di dalam satu disk. Yang mencatat pembagian itu bukan partisinya, tapi tabel partisi di awal disk. Ada dua gaya yang masih dipakai.
| Aspek | MBR (msdos) | GPT |
|---|---|---|
| Batas praktis | 2 TB per disk | jauh lebih besar |
| Jumlah partisi | 4 primer (atau 3 + extended) | biasanya 128 entri |
Ciri di parted |
msdos |
gpt
|
| Status sekarang | warisan, untuk kompatibilitas | pilihan default disk baru |
π‘ Tips: Untuk disk baru di server Debian, pilih GPT. Kalau kamu menemukan disk lama bertabel msdos dan isinya masih dipakai, jangan langsung ganti tabelnya β mengganti tabel partisi sama dengan menghapus denah kavling.
Satu hal yang sering bikin bingung: /dev/sda, /dev/sdb, /dev/sdc adalah nama sementara yang diberikan kernel sesuai urutan deteksi. Nama ini bisa berubah kalau kamu menambah disk, memindah kabel SATA, atau mengganti mode controller di BIOS.
Dokumentasi mount(8) menyebutnya terus terang: nama device tidak stabil, dan karena itu sangat disarankan memakai penanda seperti UUID atau LABEL. Ini bukan saran gaya penulisan β ini saran supaya server tidak mati setelah kamu menambah satu disk.
πΉ Filesystem: rak dan labelnya
Filesystem adalah cara kernel menata file di dalam partisi: di mana nama file disimpan, bagaimana blok dialokasikan, bagaimana izin dan waktu diubah dicatat.
mkfs.ext4 bukan "mengisi" partisi, tapi membangun struktur kosong di atasnya. Karena itu, menjalankannya di partisi yang sudah berisi data sama dengan menghapus data itu. Tidak ada tombol undo.
Beberapa pilihan yang akan kamu temui di Debian:
- ext4 β default praktis untuk hampir semua kebutuhan, tooling lengkap, journaling aktif.
- xfs β kuat untuk file besar dan paralel, umum di server penyimpanan.
- vfat β untuk flashdisk dan kartu SD, karena dibaca semua sistem operasi. Tanpa izin Unix dan tanpa journal.
- swap β bukan tempat menyimpan file, tapi ruang cadangan memori.
π Angka penting: mkfs.ext4 menyisakan 5% blok untuk root secara bawaan. Di disk 1 TB, itu 50 GB yang tidak bisa dipakai user biasa. Ini disengaja: supaya daemon milik root tetap bisa menulis saat disk hampir penuh. Kalau disk itu khusus data dan kamu paham risikonya, angka ini bisa diubah dengan mke2fs -m atau tune2fs -m.
πΉ Mount: menempelkan, bukan menyalin
mount menyambungkan filesystem ke sebuah direktori di pohon file Linux. Direktori itu disebut mount point.
Ada satu perilaku yang wajib kamu ingat, dan disebut jelas di dokumentasi: setelah filesystem ditempel, isi direktori mount point yang lama menjadi tidak terlihat. Bukan terhapus, tapi tertutup. Selama filesystem itu ter-mount, path tersebut menunjuk ke akar filesystem yang baru.
Ini sumber dua kesalahan yang sangat berbeda:
- Kamu menyalin file ke folder sebelum me-mount. Setelah mount, file itu "hilang" β sebenarnya masih ada di disk root, tertutup mount point.
- Kamu lupa me-mount, lalu aplikasi menulis ke folder biasa di root. Disk terlihat lega, sampai root penuh.
π‘ Tips: Biasakan urutan mkdir β mount β findmnt β baru menyalin data. Jangan pernah menyalin data besar ke mount point yang belum kamu buktikan ter-mount.
πΉ fstab: kontrak yang dibaca saat boot
/etc/fstab adalah daftar filesystem yang bisa di-mount sistem. Setiap baris berisi enam kolom, dipisah tab atau spasi.
| Kolom | Isi | Contoh |
|---|---|---|
| 1 | device atau penanda | UUID=3e6be9de-...
|
| 2 | mount point | /mnt/data-lab
|
| 3 | tipe filesystem | ext4
|
| 4 | opsi mount | defaults,nofail
|
| 5 | fs_freq untuk dump | 0
|
| 6 | fs_passno untuk fsck | 2
|
Kolom keenam menentukan urutan pemeriksaan filesystem saat boot: root memakai 1, filesystem lain 2, dan 0 berarti tidak diperiksa. Dokumen fstab(5) juga mengingatkan bahwa urutan baris itu penting, karena mount, umount, dan fsck membacanya berurutan.
Sejak Debian memakai systemd, isi fstab tidak dibaca langsung oleh init. Ada generator yang menerjemahkan setiap baris menjadi mount unit saat boot, dan juga saat konfigurasi systemd di-reload. Konsekuensi praktisnya: setelah mengubah fstab pada sistem yang sedang hidup, jalankan systemctl daemon-reload supaya unit hasil terjemahan ikut diperbarui.
β οΈ Hati-hati: Di sinilah kesalahan paling mahal terjadi. Satu baris fstab yang menunjuk device tidak ada bisa membuat boot berhenti di emergency mode, sebelum layanan apa pun jalan. Server tidak "agak lambat" β dia tidak sampai ke login.
π₯ Kasus nyata: Sebuah kantor distributor memindahkan server file ke casing baru. Karena fstab lama memakai /dev/sdb1, dan urutan SATA di casing baru berbeda, disk data itu sekarang dikenali sebagai /dev/sda1. Server berhenti di emergency mode selama 40 menit pada jam sibuk, faktur tidak bisa dicetak, dan tim mencurigai hard disknya rusak. Setelah UUID dipakai, masalah yang sama tidak terulang walau kabel ditukar lagi.
π§© Istilah penting
| Istilah | Arti sederhana |
|---|---|
| Block device | "Benda" disk yang bisa dibaca per blok, mis. /dev/sdb
|
| Partition table | Denah pembagian kavling di awal disk (MBR atau GPT) |
| Filesystem | Struktur yang menata file di dalam partisi |
| Mount point | Direktori tempat filesystem ditempelkan |
| UUID | Nomor identitas unik filesystem, tidak berubah saat device berganti nama |
| LABEL | Nama ramah yang kamu berikan ke filesystem |
| fstab | Daftar filesystem yang dibaca saat boot |
| fsck | Pemeriksa dan perbaiki filesystem |
| inode | Catatan metadata per file; jumlahnya terbatas |
| swap | Ruang cadangan memori, bukan penyimpanan file |
| nofail | Opsi fstab: jangan gagalkan boot kalau device tidak ada |
| reserved blocks | Blok yang hanya boleh dipakai root, bawaan 5% di ext4 |
π§ Praktik: Menambah Disk Baru di Lab
Supaya aman, kita tidak menyentuh disk asli. Kita membuat file image 1 GiB, lalu memperlakukannya seperti disk. Semua langkah bisa diulang dan dihapus tanpa risiko.
- Siapkan "disk" bohongan. Buat file 1 GiB, lalu tempelkan sebagai loop device dengan pemindaian partisi.
sudo fallocate -l 1G /srv/lab-disk.img
sudo losetup -fP /srv/lab-disk.img
lsblk
Perhatikan nama loop device yang muncul, misalnya /dev/loop0. Kalau losetup memilih nomor lain, sesuaikan perintah berikutnya.
- Buat tabel partisi dan satu partisi. Mode
-smembuatpartedtidak bertanya, sehingga cocok untuk lab.
sudo parted -s /dev/loop0 mklabel gpt
sudo parted -s /dev/loop0 mkpart data ext4 1MiB 100%
sudo partprobe /dev/loop0
lsblk /dev/loop0
Sekarang kamu harus melihat loop0p1 di bawah loop0. Kalau tidak muncul, jangan lanjut β cek dulu pesan parted.
- Bangun filesystem dan beri label.
sudo mkfs.ext4 -L DATA-LAB /dev/loop0p1
sudo blkid /dev/loop0p1
- Mount dan buktikan. Buat mount point, tempel, lalu baca dari dua sumber berbeda.
sudo mkdir -p /mnt/data-lab
sudo mount /dev/loop0p1 /mnt/data-lab
findmnt /mnt/data-lab
df -h /mnt/data-lab
- Daftarkan di fstab memakai UUID. Ambil UUID dari
blkid, lalu tambahkan satu baris.
UUID=isi-uuid-kamu /mnt/data-lab ext4 defaults,nofail 0 2
Opsi nofail berarti: kalau device ini tidak ada, boot tetap lanjut. Untuk disk data yang tidak dibutuhkan untuk masuk sistem, ini pilihan yang jauh lebih aman daripada membiarkan server berhenti di emergency mode.
- Uji tanpa reboot dulu.
sudo umount /mnt/data-lab
sudo mount -a
findmnt /mnt/data-lab
sudo findmnt --verify
- Uji yang sebenarnya: reboot.
sudo reboot
Setelah masuk lagi, jalankan findmnt /mnt/data-lab. Kalau muncul, kontrakmu sudah dibaca dengan benar.
- Bersihkan lab.
sudo umount /mnt/data-lab
sudo losetup -d /dev/loop0
sudo rm /srv/lab-disk.img
π§ͺ Uji cepat: Sebelum mengubah fstab di server sungguhan, jalankan sudo findmnt --verify. Perintah ini membaca fstab dan melaporkan baris yang tidak masuk akal, tanpa perlu me-mount apa pun.
πΉ Membaca "penuh" dengan benar
Tiga penyebab berbeda, tiga perintah berbeda. Jangan langsung menghapus file.
- Blok habis β
df -hmenunjukkanUse%mendekati 100%. Ini kasus paling umum. - Inode habis β
df -hterlihat lega, tapidf -imenunjukkanIUse%100%. Penyebabnya banyak file kecil: log, cache sesi, file antrean. - Mount point ketimpa atau tidak ter-mount β
du -shdi folder besar terlihat wajar, tapidfuntuk path itu menunjuk filesystem root.
π Angka penting: Satu filesystem ext4 punya jumlah inode yang ditentukan saat mkfs. Kalau aplikasi membuat jutaan file kecil, inode bisa habis jauh sebelum kapasitas blok habis. Karena itu df -h saja tidak cukup untuk menyimpulkan "disk masih lega".
π₯ Kasus nyata: Warnet dengan billing berbasis Linux mengeluh "server penuh" padahal df -h menunjukkan pemakaian 62%. Teknisi sempat membeli disk baru. Setelah dicek dengan df -i, pemakaian inode 100%: folder log berisi jutaan file kecil dari sesi pelanggan yang tidak pernah dirotasi. Solusinya bukan disk baru, tapi pembersihan arsip lama dan logrotate.
π Dipakai di dunia kerja
- Sekolah: server e-rapot dan CBT menyimpan foto, dokumen, dan backup di partisi terpisah β supaya log aplikasi yang membengkak tidak bisa mematikan database nilai.
- Kantor: file server menyimpan arsip faktur bertahun-tahun; mount point dengan UUID membuat drive tetap terbaca walau teknisi menambah atau memindah disk.
- Rumah sakit: hasil pencitraan berukuran besar butuh filesystem dan kapasitas terencana; salah pilih berarti proses unggah gambar pasien berhenti di tengah.
- ISP dan warnet: log akses dan billing tumbuh cepat; tanpa pemisahan partisi dan rotasi, inode habis dan layanan menolak koneksi baru.
- Industri: mesin produksi mencatat data sensor terus-menerus; disk data yang gagal mount tanpa
nofailbisa menghentikan seluruh lini karena server tidak selesai boot. - Data center: tim operasi memantau kapasitas per filesystem, bukan per server, karena "server penuh" hampir selalu berarti satu partisi tertentu penuh.
β Verifikasi
| Perintah | Yang dibaca | Hasil sehat |
|---|---|---|
lsblk -f |
disk, partisi, filesystem, label | tiap partisi punya FSTYPE dan UUID |
blkid |
identitas filesystem | UUID cocok dengan isi fstab |
findmnt /mnt/data-lab |
mount aktif | SOURCE, TARGET, FSTYPE benar |
df -h |
pemakaian blok | Use% wajar |
df -i |
pemakaian inode | IUse% jauh dari 100% |
findmnt --verify |
validitas fstab | tidak ada error |
journalctl -b -p err |
error saat boot | tidak ada kegagalan mount |
π§ͺ Uji cepat: findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS /mnt/data-lab memberi satu baris lengkap. Kalau perintah ini kosong, berarti filesystem tidak sedang ter-mount β sekeras apa pun kamu menyalin file, itu masuk ke filesystem lain.
β οΈ Kesalahan umum & troubleshooting
| Gejala | Penyebab umum | Cek cepat |
|---|---|---|
| Boot berhenti di emergency mode | device di fstab tidak ada / UUID salah | lihat pesan di layar, lalu findmnt --verify
|
mount: wrong fs type |
filesystem belum dibuat | blkid kosong?
|
mount: target is busy |
ada proses memakai mount point | lsof +D /mnt/...
|
No space left on device tapi df lega |
inode habis | df -i
|
| File "hilang" setelah mount | file ditulis sebelum mount | cek isi direktori sebelum mount |
df dan du tidak cocok |
ada file terhapus yang masih dibuka proses | lsof +L1
|
Beberapa jebakan yang tidak muncul di tabel:
- Spasi di nama mount point. fstab memisahkan kolom dengan spasi, jadi spasi di path harus ditulis
\040. Lebih baik hindari spasi sama sekali. - Nama device berubah. Setelah menambah disk,
/dev/sdb1bisa menjadi/dev/sdc1. Kalau fstab memakai nama device, mount akan gagal atau β lebih buruk β menempel ke disk yang salah. - Mengedit fstab tanpa reload. Perubahan belum tentu dipakai systemd sampai
systemctl daemon-reloaddijalankan. - Lupa fsck passno. Menulis
0di kolom keenam untuk disk data berarti filesystem itu tidak pernah diperiksa otomatis saat boot.
β οΈ Hati-hati: Jangan pernah menguji baris fstab baru langsung dengan reboot pada server produksi. Uji dengan mount -a lebih dulu, dan pastikan kamu punya akses console (IPMI, KVM, atau layar fisik). Tanpa akses console, emergency mode berarti kamu terkunci di luar servermu sendiri.
π Catatan keamanan & etika
- fstab setara akses root. Baris di dalamnya dieksekusi saat boot dengan hak penuh. Siapa pun yang bisa menulis ke file ini bisa menempelkan filesystem berbahaya. Jaga izin file dan jangan longgarkan tanpa alasan.
- Hati-hati dengan opsi
user. Opsi itu mengizinkan user biasa me-mount device. Untuk media lepas, pasangkannosuid,nodev,noexecsupaya isinya tidak bisa dipakai menjalankan program. mkfstidak punya undo. Sebelum menekan enter, baca ulanglsblktiga kali dan pastikan kamu memilih disk yang benar. Salah satu huruf saja bisa menghapus data satu tahun.- Disk yang hilang adalah kebocoran data. Hard disk bekas berisi data siswa, faktur, atau hasil pencitraan masih bisa dibaca walau sudah diformat biasa. Untuk laptop dan disk portabel, gunakan enkripsi.
- Etika di lab bersama. Jangan me-mount, mengintip, atau memformat disk milik orang lain tanpa izin. Melepas mount (
umount) pada layanan yang sedang dipakai juga bisa menggagalkan pekerjaan orang.
π Kesimpulan
Empat lapis itu harus selesai berurutan: disk β partisi β filesystem β mount point, lalu dikunci di /etc/fstab memakai UUID. Kalau satu lapis dilewati, gejalanya akan muncul di lapis lain dan kamu akan menebak di tempat yang salah.
Kunci yang paling sering menyelamatkan server bukan perintah yang rumit, tapi dua kebiasaan: buktikan dengan findmnt sebelum menyalin data, dan tambahkan nofail untuk disk yang tidak dibutuhkan saat boot.
Langkah berikutnya: buka /etc/fstab di server lab-mu, baca satu baris, dan jelaskan tiap kolomnya dengan kata-katamu sendiri. Kalau kamu bisa menjelaskan kolom keenam, kamu sudah siap ke topik log dan journalctl.
π Materi terkait
- Linux : Manajemen Paket dan Repositori Debian β prasyarat: memasang
parted,e2fsprogs, dan tools filesystem. - Linux : Cek Penggunaan Disk β memantau kapasitas setelah filesystem terpasang.
- Linux : Perintah df β membaca pemakaian blok dan inode.
- Linux : Perintah lsblk β melihat disk, partisi, dan filesystem dalam satu tampilan.
- Linux : Perintah du β mencari folder yang menghabiskan ruang.
- Linux : Membuat Service Sendiri dengan systemd β memahami unit, karena mount dari fstab juga menjadi unit systemd.
- Linux : Permission File dan Folder β izin dan kepemilikan setelah filesystem ter-mount.
- Linux : Praktikum Audit Repositori dan Diagnosa Instalasi Paket Gagal β pola diagnosa berlapis yang mirip dengan artikel ini.
π Referensi
fstab(5)β Debian bookworm, paket mount: enam kolom, rekomendasi UUID/LABEL, artinofail, fs_passno.mount(8)β Debian bookworm: cara kerja attach filesystem, isi direktori yang tertutup, ketidakstabilan nama device.systemd.mount(5)β Debian bookworm: mount unit, opsinofail,x-systemd.device-timeout.systemd-fstab-generator(8)β Debian bookworm: fstab diterjemahkan menjadi unit saat boot dan saat reload.parted(8)β Debian bookworm:mklabel,mkpart, dukungan GPT dan msdos.mke2fs(8)β Debian bookworm: reserved blocks bawaan 5% untuk super-user.findmnt(8)β Debian bookworm: membaca mount tree dari/proc/self/mountinfodan memvalidasi fstab.mount(8)β bagian--alldanX-mount.mkdiruntuk pembuatan mount point otomatis.