Ruang disk: ke mana perginya
Cara menemukan apa yang memenuhi disk, mengapa file yang dihapus tetapi masih terbuka berbahaya, apa yang aman dibersihkan, dan mengapa cincin penggunaan di panel bisa menampilkan hal yang salah.
Diperbarui 23 Agustus 2026
Kehabisan ruang adalah gangguan yang gejalanya bisa bermacam-macam: basis data gagal menulis, situs mengembalikan error, kontainer restart. Disk VDS berkisar dari 40 GB pada tier entry hingga 250 GB pada tier tertinggi, dan hampir selalu penuh karena hal-hal yang sama.
Perintah pertama
df -h
df -i
sudo du -x -h -d1 / | sort -h | tail -15
Jangan lewati df -i: Anda mungkin masih punya ruang tetapi kehabisan inode — maka muncul “disk full” padahal gigabyte masih tersisa. Penyebabnya biasanya jutaan file cache berukuran kecil.
Lalu telusuri direktori terbesar:
sudo du -x -h -d1 /var | sort -h | tail
sudo du -x -h -d1 /var/lib | sort -h | tail
Flag -x menjaga penghitungan tetap dalam satu filesystem dan tidak masuk ke direktori yang di-mount.
Penyebab umum
| Apa | Cara memeriksa | Apa yang harus dilakukan |
|---|---|---|
| Log kontainer | du -sh /var/lib/docker/containers/*/*-json.log | Batasi ukurannya, lihat log |
| Image dan build cache | docker system df | docker image prune, docker builder prune |
| Journal sistem | journalctl --disk-usage | journalctl --vacuum-size=200M |
Kernel lama di /boot | df -h /boot | apt autoremove --purge |
| Cache paket | du -sh /var/cache/apt | apt clean |
| Salinan yang ditinggal | du -sh /backup | Pindahkan ke lokasi lain, lihat lokasi lain |
| Unggahan pengguna | du -sh /var/www/uploads | Penyimpanan di luar atau disk yang lebih besar |
File yang sudah dihapus tetapi masih memakan ruang
Teka-teki klasik: du menunjukkan 5 GB, df menunjukkan 30 GB terpakai. Artinya file sudah dihapus, tetapi ada proses yang masih membukanya, dan ruang tersebut tidak akan dilepas sampai restart.
sudo lsof +L1 | head -20
Outputnya akan menampilkan proses dan ukurannya. Solusinya adalah me-restart proses yang bersangkutan:
sudo systemctl restart <service>
docker compose restart <service>
Jangan pernah membebaskan ruang dengan
rmpada file log yang sedang digunakan. Cara yang benar adalah memotongnya:sudo truncate -s 0 /var/log/big.log. Menghapusnya akan membuat ruang tetap terpakai dan Anda juga kehilangan log tersebut.
Cincin penggunaan di panel
Pada tab “Overview” terdapat cincin penggunaan disk. Nilainya dihitung melalui guest agent qemu-guest-agent. Jika agent dihapus atau tidak berjalan, data tidak akan diperbarui — panel akan menampilkan perintah pemasangannya. Untuk memeriksa di dalam mesin:
systemctl status qemu-guest-agent
Pembacaan agent dan df -h seharusnya cocok. Ketidakcocokan paling sering berarti ada ruang yang terpakai di partisi yang di-mount terpisah — lihat partisi dan filesystem.
Pencegahan
Siapkan tugas terjadwal untuk pembersihan dan peringatan:
#!/bin/bash
USED=$(df --output=pcent / | tail -1 | tr -dc '0-9')
if [ "$USED" -gt 85 ]; then
journalctl --vacuum-size=200M
apt clean
docker image prune -f
echo "Disk is ${USED}% full" | mail -s "VDS: low disk space" you@example.com
fi
Ambang 85% memberi Anda ruang untuk bereaksi. Anda tidak bisa menunggu sampai 100%: saat disk penuh, sebagian layanan bahkan tidak dapat menulis log tentang apa yang terjadi.
Jika sama sekali tidak ada ruang
- Bebaskan beberapa gigabyte dengan langkah cepat:
journalctl --vacuum-size=100M,apt clean,docker builder prune -f. - Temukan penyebab sebenarnya dengan perintah di atas — jika tidak, semuanya akan terulang dalam sepekan.
- Jika data memang benar-benar bertambah, Anda perlu memperbesar disk dengan pindah ke tier yang lebih tinggi. Penurunan tier tidak tersedia: disk tidak dapat diperkecil.