Disk yang penuh adalah musuh nomor satu availability server. Episode ini membahas membaca kapasitas dengan df, du, dan free, mempartisi dan memformat disk, memasangnya permanen lewat /etc/fstab berbasis UUID, hingga pengenalan LVM dengan dynamic resize tanpa downtime.

Setelah di episode 14 sebelumnya kita membahas systemd dan managing services — systemctl, journalctl, dan menulis service unit file — kalian sekarang bisa membuat aplikasi selalu hidup. Namun ada satu bencana yang tidak bisa dicegah oleh Restart=on-failure paling sempurna sekalipun: disk penuh. Sebuah service yang berjalan sempurna akan mati seketika saat filesystem-nya penuh — database berhenti menulis, log berhenti mengalir, dan aplikasi "hang" di tempat.
Pada episode kali ini, kita akan membuka lapisan paling dasar dari sistem: storage. Kalian akan belajar membaca kondisi penyimpanan dengan df, du, dan free, mengenali perangkat disk dengan lsblk dan blkid, mempartisi serta memformat disk, memasangnya secara permanen lewat /etc/fstab, dan mengenal LVM — teknologi yang membuat kapasitas disk bisa diperbesar tanpa downtime. Mari kita mulai.
df, du, dan freeDiagnosa pertama setiap "server lambat" adalah kapasitas. Tiga perintah membentuk alat ukur awal: df -h untuk ruang kosong di filesystem, du -sh untuk ukuran direktori, dan free -h untuk memori.
# Ruang kosong seluruh filesystem
df -h
# Ukuran direktori saat ini (dan subdirektorinya)
du -sh .
du -sh /var/log/*
# Ringkasan penggunaan memori & swap
free -hOutput df -h menampilkan baris per filesystem, dengan kolom Filesystem, Size, Used, Avail, Use%, Mounted on. Dua hal yang sering mengecoh:
Avail vs Size. Kalian jarang melihat Avail = Size; filesystem menyisakan ruang untuk root (biasanya 5%) dan untuk metadata. Ini normal, bukan keanehan./ bisa tidak penuh tapi server "hang". Periksa juga mount point terpisah — /var, /tmp, atau /home bisa saja 100% penuh sementara / terlihat lega. Inilah mengapa df -h selalu dibaca per baris, bukan hanya baris pertama.Sedangkan du -sh /var/log/* langsung mengungkap biang keladi: satu file log raksasa atau direktori cache yang membengkak. Kombinasi khas pemecahan masalah disk penuh adalah: df -h untuk menemukan mount yang penuh → du -sh /path/* untuk menemukan direktori pemboros → du -sh /path/subdir/* dan seterusnya sampai menemukan penyebabnya.
Tip
File yang masih terbuka oleh proses tetap memakan ruang meski sudah di-rm. Gejala klasiknya: df -h menunjukkan Use% tetap 100% padahal file "sudah dihapus". Jawabannya ada di /proc/*/fd: jalankan lsof +L1 untuk menemukan file terbuka yang terhapus — identifikasi prosesnya, lalu restart proses tersebut agar ruang benar-benar dibebaskan.
lsblk dan blkidlsblk menampilkan blok device — disk fisik dan partisinya — dalam bentuk pohon. Ini adalah peta visual yang pertama kali harus kalian lihat sebelum menyentuh disk apa pun.
lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1M 0 part
└─sda2 8:2 0 40G 0 part /
sdb 8:16 0 10G 0 diskSedangkan blkid menampilkan identitas blok device — terutama UUID, kunci penting untuk /etc/fstab:
sudo blkid/dev/sda2: UUID="3f5a2c1e-..." TYPE="ext4" PARTUUID="..."UUID (Universally Unique Identifier) adalah KTP-nya disk — identitas yang tetap sama selama filesystem tidak diformat ulang. Inilah alasan mengapa /etc/fstab lebih baik memakai UUID daripada nama device (/dev/sda2): nama device bisa berubah (misalnya saat menambah disk baru, /dev/sdb bisa bergeser jadi /dev/sdc), sedangkan UUID tidak pernah berubah. Dengan UUID, mount point tetap benar apa pun urutan penamaan disk oleh kernel.
fdisk, parted, dan mkfsUntuk memakai disk baru, langkahnya adalah: partisi (membagi disk menjadi beberapa bagian) lalu format (menulis filesystem ke partisi). Alat partisi yang paling umum adalah fdisk (interaktif, untuk MBR/GPT sederhana) dan parted (lebih modern, mendukung skrip). Karena fdisk interaktif, alur kerjanya adalah: fdisk /dev/sdb → ketik n (new partition) → p (primary) → Enter untuk default → w (write).
sudo fdisk /dev/sdb
# Di dalam prompt fdisk:
# n → buat partisi baru
# p → tipe primary
# Enter → nomor partisi default
# Enter → sektor awal default
# Enter → sektor akhir default (pakai seluruh disk)
# w → tulis perubahan ke diskSetelah partisi dibuat, verifikasi dengan lsblk — kalian harus melihat /dev/sdb1 muncul. Lalu format partisi dengan mkfs. Pilihan filesystem utama: ext4 (standar Debian/Ubuntu, stabil, paling kompatibel) dan xfs (unggul untuk file besar, default RHEL/Fedora).
# ext4 — default Debian/Ubuntu
sudo mkfs.ext4 /dev/sdb1
# xfs — default RHEL/Rocky/Fedora
sudo mkfs.xfs /dev/sdb1Warning
mkfs menghancurkan seluruh data di partisi — tidak ada konfirmasi yang memadai di banyak versi. Selalu verifikasi dua kali bahwa kalian memformat perangkat yang benar dengan lsblk dan blkid sebelum menekan Enter. Kesalahan memformat /dev/sda (disk sistem) alih-alih /dev/sdb (disk baru) adalah salah satu cara tercepat kehilangan seluruh server.
mount, umount, dan /etc/fstabMount berarti "memasang" filesystem dari sebuah device ke sebuah direktori, sehingga file-nya bisa diakses. Direktori tempat filesystem dipasang disebut mount point. Mari mount partisi yang barusan kita format:
# Buat mount point dulu
sudo mkdir -p /data
# Mount partisi ke mount point
sudo mount /dev/sdb1 /data
# Verifikasi
df -h /data
# Lepas (unmount) saat tidak dibutuhkan
sudo umount /dataMount manual hanya bertahan hingga reboot. Agar filesystem otomatis terpasang saat boot, tambahkan entri ke /etc/fstab. Format baris fstab terdiri dari enam kolom: device, mount point, filesystem type, options, dump, fsck order.
# <device> <mount> <type> <options> <dump> <fsck>
UUID=3f5a2c1e-... /data ext4 defaults,nofail 0 2Kolom yang perlu perhatian:
UUID= — identitas device yang stabil. Ganti dengan UUID hasil blkid.defaults — paket opsi standar (rw, suid, dev, exec, auto, nouser, async).nofail — opsi paling penting untuk disk data: jika device tidak ada saat boot, sistem tetap melanjutkan boot. Tanpa nofail, disk yang hilang akan membuat boot hang atau gagal.2 — urutan pemeriksaan fsck; root biasanya 1, data lainnya 2, dan 0 untuk skip.Important
Satu entri /etc/fstab yang salah bisa membuat sistem tidak bisa boot — karena mount dilakukan di fase awal boot sebelum login. Selalu uji entri baru dengan sudo mount -a (mount semua entri fstab) sebelum me-reboot, dan biasakan menambahkan nofail pada mount point non-sistem. Jika sudah terlanjur terkunci, boot single-user (dari GRUB) dan perbaiki fstab.
Setelah mengedit /etc/fstab, selalu verifikasi dengan mount -a lalu df -h. Perintah ini "mencoba" memasang semua entri — kalau ada yang error, muncul sekarang, bukan saat reboot.
Mari rangkai semuanya dalam skenario nyata: kalian menambah disk 10GB ke sebuah VM, lalu ingin data di-mount permanen di /data.
# 1. Pastikan disk baru terlihat (sdb = 10G)
lsblk
# 2. Buat partisi (n → p → Enter → Enter → w)
sudo fdisk /dev/sdb
# 3. Format partisi baru
sudo mkfs.ext4 /dev/sdb1
# 4. Ambil UUID partisi
sudo blkid /dev/sdb1
# 5. Buat mount point
sudo mkdir -p /data
# 6. Tambahkan ke /etc/fstab (baris UUID=... /data ext4 defaults,nofail 0 2)
# 7. Tes mount semua entri fstab
sudo mount -a
# 8. Verifikasi
df -h /dataUrutan ini adalah template universal yang akan kalian pakai berulang kali di karier DevOps — dari menambah disk VM, memasang volume cloud, hingga menyiapkan storage server baru. Hafalkan polanya, bukan perintahnya: lihat → partisi → format → identitas → mount point → fstab → verifikasi.
Ada masalah dengan partisi tradisional: ukuran partisi terikat pada disk fisik. Kalau /data sudah penuh, kalian tidak bisa memperbesar tanpa repot mempartisi ulang (yang biasanya butuh downtime). LVM (Logical Volume Manager) memecahkan masalah ini dengan menambahkan lapisan abstraksi: storage dipisah menjadi Physical Volume → Volume Group → Logical Volume, dan Logical Volume bisa diperbesar/diperkecil kapan pun, bahkan saat dipakai.
Bayangkan kolam renang modular. Physical Volume (PV) adalah tangki air individual (disk fisik). Volume Group (VG) adalah gabungan beberapa tangki yang saling terhubung — satu kolam besar. Logical Volume (LV) adalah "kompartemen" yang diambil dari kolam besar itu, dan kalian bisa memperbesar kompartemen cukup dengan membuka katup, tanpa membongkar tangki.
# 1. Tandai partisi sebagai Physical Volume
sudo pvcreate /dev/sdb1
# 2. Gabungkan ke Volume Group bernama vgdata
sudo vgcreate vgdata /dev/sdb1
# 3. Buat Logical Volume 8G di dalam VG
sudo lvcreate -L 8G -n lvdata vgdata
# 4. Format & mount LV seperti partisi biasa
sudo mkfs.ext4 /dev/vgdata/lvdata
sudo mkdir -p /data
sudo mount /dev/vgdata/lvdata /dataKeunggulan LVM terlihat saat storage menipis. Untuk memperbesar Logical Volume tanpa downtime, kombinasikan lvextend dan resize2fs:
# Perbesar LV dari 8G ke 12G
sudo lvextend -L 12G /dev/vgdata/lvdata
# Perluas filesystem mengikuti ukuran LV baru
sudo resize2fs /dev/vgdata/lvdata
# Verifikasi — tanpa unmount, tanpa downtime
df -h /dataTip
Perintah resize2fs menyesuaikan ukuran filesystem ext4 dengan LV-nya; di keluarga RHEL, filesystem xfs memakai xfs_growfs /data sebagai gantinya. Kebiasaan yang wajib: selalu grow filesystem setelah lvextend — memperbesar LV tanpa resize filesystem hanya membuat ruang "tersembunyi" yang tidak bisa dipakai aplikasi.
LVM juga memungkinkan penambahan disk fisik baru ke VG yang sama (vgextend), sehingga kolam storage terus membesar tanpa menghentikan apa pun — itulah alasan LVM hampir selalu menjadi pilihan default installer Linux modern untuk penyimpanan sistem.
| Kesalahan | Gejala | Solusi |
|---|---|---|
Entri fstab salah / lupa nofail | Boot hang atau gagal | Uji dengan mount -a; selalu tambah nofail |
Memakai /dev/sdb1 di fstab | Mount salah saat device berubah nama | Gunakan UUID hasil blkid |
mkfs pada device yang salah | Data hilang permanen | Verifikasi lsblk/blkid sebelum format |
lvextend tanpa resize2fs | Ruang bertambah tapi filesystem tidak | Jalankan resize2fs / xfs_growfs |
Hanya df -h di / | Mount lain penuh tak terdeteksi | Baca semua baris df -h |
rm file yang masih terbuka | df tetap 100% | Temukan dengan lsof +L1, restart proses |
| Mount tanpa fstab | Storage hilang setelah reboot | Tambahkan entri ke /etc/fstab |
Pada episode 15 ini kita telah menyentuh fondasi paling dasar sekaligus paling krusial: storage. Kalian belajar membaca kapasitas dengan df -h, du -sh, dan free -h, memetakan perangkat dengan lsblk dan blkid, mempartisi serta memformat disk dengan fdisk/parted dan mkfs.ext4/mkfs.xfs, memasangnya secara permanen melalui /etc/fstab berbasis UUID dengan opsi nofail, menjalankan seluruh workflow menambah disk baru di VM, dan mengenal LVM yang memungkinkan storage diperbesar tanpa downtime. Pelajaran terpenting: selalu verifikasi sebelum menghancurkan, dan selalu uji sebelum me-reboot.
Dengan storage yang sehat, perjalanan kalian memasuki inti sistem tinggal selangkah lagi. Di episode 16 selanjutnya kita akan membahas boot process, kernel & kernel modules — dari BIOS/UEFI, GRUB, hingga initramfs — serta cara mengelola module kernel dengan lsmod, modprobe, dan modinfo. Di sanalah semua lapisan yang sudah kalian pelajari (filesystem, service, proses) bersatu menjadi satu urutan yang indah. Sampai jumpa!