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/fstab sebaiknya 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.

  1. 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.

  1. Buat tabel partisi dan satu partisi. Mode -s membuat parted tidak 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.

  1. Bangun filesystem dan beri label.
sudo mkfs.ext4 -L DATA-LAB /dev/loop0p1
sudo blkid /dev/loop0p1
  1. 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
  1. 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.

  1. Uji tanpa reboot dulu.
sudo umount /mnt/data-lab
sudo mount -a
findmnt /mnt/data-lab
sudo findmnt --verify
  1. Uji yang sebenarnya: reboot.
sudo reboot

Setelah masuk lagi, jalankan findmnt /mnt/data-lab. Kalau muncul, kontrakmu sudah dibaca dengan benar.

  1. 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 -h menunjukkan Use% mendekati 100%. Ini kasus paling umum.
  • Inode habis β€” df -h terlihat lega, tapi df -i menunjukkan IUse% 100%. Penyebabnya banyak file kecil: log, cache sesi, file antrean.
  • Mount point ketimpa atau tidak ter-mount β€” du -sh di folder besar terlihat wajar, tapi df untuk 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 nofail bisa 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/sdb1 bisa 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-reload dijalankan.
  • Lupa fsck passno. Menulis 0 di 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, pasangkan nosuid,nodev,noexec supaya isinya tidak bisa dipakai menjalankan program.
  • mkfs tidak punya undo. Sebelum menekan enter, baca ulang lsblk tiga 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

πŸ“š Referensi

  • fstab(5) β€” Debian bookworm, paket mount: enam kolom, rekomendasi UUID/LABEL, arti nofail, fs_passno.
  • mount(8) β€” Debian bookworm: cara kerja attach filesystem, isi direktori yang tertutup, ketidakstabilan nama device.
  • systemd.mount(5) β€” Debian bookworm: mount unit, opsi nofail, 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/mountinfo dan memvalidasi fstab.
  • mount(8) β€” bagian --all dan X-mount.mkdir untuk pembuatan mount point otomatis.