Skip to content
VDS · Backup dan disk

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

ApaCara memeriksaApa yang harus dilakukan
Log kontainerdu -sh /var/lib/docker/containers/*/*-json.logBatasi ukurannya, lihat log
Image dan build cachedocker system dfdocker image prune, docker builder prune
Journal sistemjournalctl --disk-usagejournalctl --vacuum-size=200M
Kernel lama di /bootdf -h /bootapt autoremove --purge
Cache paketdu -sh /var/cache/aptapt clean
Salinan yang ditinggaldu -sh /backupPindahkan ke lokasi lain, lihat lokasi lain
Unggahan penggunadu -sh /var/www/uploadsPenyimpanan 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 rm pada 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

  1. Bebaskan beberapa gigabyte dengan langkah cepat: journalctl --vacuum-size=100M, apt clean, docker builder prune -f.
  2. Temukan penyebab sebenarnya dengan perintah di atas — jika tidak, semuanya akan terulang dalam sepekan.
  3. 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.