Skip to main content
๐Ÿš€ nusa.id cloud server linux indonesialihat paket

Mengatasi Disk Penuh pada VPS Linux

ยท 4 min read

Server tiba-tiba tidak bisa menulis log. Database mengembalikan error "No space left on device". SSH session berjalan lambat. Gejala-gejala ini menandakan satu masalah: ruang disk VPS Anda habis.

Jika tidak segera ditangani, disk penuh dapat mengganggu operasi database, menghentikan aplikasi web, dan bahkan mencegah Anda login untuk memperbaikinya. Panduan ini membahas cara mendiagnosis, membersihkan, dan mencegah disk penuh pada VPS Linux.

Gejala Umum Disk Penuhโ€‹

Beberapa tanda bahwa disk server sudah mencapai batas kapasitas:

  • Database gagal menulis โ€” MySQL atau PostgreSQL mengembalikan error "No space left on device" atau "Disk full".
  • Log tidak tertulis โ€” Aplikasi tidak lagi mencatat log, karena file system tidak memiliki ruang.
  • Perintah dasar gagal โ€” apt, yum, systemctl, dan utilitas lain gagal dengan pesan disk penuh.
  • Tidak bisa SSH atau akses Console โ€” Jika disk 100% penuh, proses SSH daemon bisa gagal berjalan.
  • Resize atau upgrade server gagal โ€” VPS tidak dapat di-resize karena snapshot atau backup membutuhkan ruang.

Diagnosis dengan df dan duโ€‹

Langkah pertama adalah mengidentifikasi partisi mana yang penuh dan direktori mana yang paling banyak memakan ruang.

Gunakan df -h untuk melihat penggunaan disk per partisi:

df -h

Output:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1 20G 19G 1.0G 95% /

Kolom Use% menunjukkan persentase penggunaan. Perhatikan partisi dengan nilai di atas 80% โ€” terutama partisi root (/).

Untuk mengetahui direktori mana yang paling besar, gunakan du:

sudo du -sh /* 2>/dev/null | sort -rh | head -10

Perintah di atas menampilkan 10 direktori terbesar di level root. Jika ada partisi terpisah seperti /var atau /home, jalankan du dari mount point tersebut.

Pembersihan Ruang Diskโ€‹

Setelah menemukan direktori yang bermasalah, lakukan pembersihan sesuai jenis datanya.

Bersihkan Cache APTโ€‹

Paket yang di-download oleh apt disimpan di /var/cache/apt/archives/. Cache ini bisa memakan ratusan megabyte.

sudo apt clean
sudo apt autoclean

apt clean menghapus semua file .deb yang sudah di-download. apt autoclean hanya menghapus versi paket yang sudah tidak tersedia di repository.

Bersihkan Log Lamaโ€‹

Log system di /var/log/ bisa membesar seiring waktu, terutama jika tidak ada log rotation yang aktif.

Cek ukuran log:

sudo du -sh /var/log/* | sort -rh | head -10

Bersihkan log yang sudah tidak diperlukan:

sudo journalctl --vacuum-time=7d
sudo logrotate -f /etc/logrotate.conf

Opsi --vacuum-time=7d pada journalctl hanya menyimpan log systemd dalam 7 hari terakhir. Sesuaikan nilai ini dengan kebutuhan retensi Anda.

Hapus Kernel Lama (Ubuntu/Debian)โ€‹

Setiap kali kernel diperbarui, kernel versi lama tetap tersimpan di /boot/. Kernel lama bisa dihapus setelah versi baru berjalan stabil.

dpkg --list | grep linux-image
sudo apt autoremove --purge

apt autoremove menghapus paket yang tidak lagi dibutuhkan โ€” termasuk kernel lama yang sudah digantikan.

Bersihkan Temporary Filesโ€‹

Direktori /tmp/ dan /var/tmp/ terkadang menyimpan file sisa dari proses yang sudah selesai.

sudo find /tmp -type f -atime +7 -delete
sudo find /var/tmp -type f -atime +7 -delete

Perintah di atas menghapus file di /tmp/ yang tidak diakses dalam 7 hari terakhir.

Cari File Besar Lainnyaโ€‹

File besar bisa muncul di lokasi yang tidak terduga โ€” seperti backup database, file log aplikasi, atau dump file.

sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -20

Setelah file ditemukan, evaluasi apakah file tersebut masih diperlukan. Hapus atau pindahkan ke penyimpanan lain.

Pencegahanโ€‹

Aktifkan Log Rotationโ€‹

Pastikan log rotation berjalan secara berkala. Konfigurasi default ada di /etc/logrotate.conf dan /etc/logrotate.d/. Tambahkan konfigurasi untuk log aplikasi kustom yang tidak tercakup.

Monitor Penggunaan Diskโ€‹

Pasang alat monitoring untuk memantau penggunaan disk secara berkala:

# Cek penggunaan disk via cron โ€” kirim notifikasi jika > 80%
df -h / | awk '{print $5}' | tail -1 | grep -v 'Use%'

Integrasikan monitoring dengan alat seperti Grafana, Netdata, atau script notifikasi sederhana.

Atur Retensi Databaseโ€‹

Buat jadwal untuk menghapus atau mengarsipkan data lama:

  • Log database: set expire_logs_days pada MySQL.
  • Backup lama: simpan hanya N hari terakhir.
  • Data staging: hapus secara periodik jika tidak diperlukan.

Verifikasiโ€‹

Setelah pembersihan, jalankan kembali:

df -h

Pastikan persentase penggunaan sudah turun ke angka yang wajar (di bawah 80%). Uji juga bahwa aplikasi, database, dan SSH berjalan normal.

Ringkasan Perintah Cepatโ€‹

LangkahPerintah
Cek penggunaan diskdf -h
Cari direktori besarsudo du -sh /* 2>/dev/null | sort -rh | head -10
Bersihkan APT cachesudo apt clean && sudo apt autoclean
Vacuum journalsudo journalctl --vacuum-time=7d
Hapus kernel lamasudo apt autoremove --purge
Cari file > 100 MBsudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | head -20

Butuh Bantuan?โ€‹

Jika disk VPS tetap penuh setelah pembersihan, atau Anda kesulitan mengakses server, hubungi tim dukungan melalui Tiket Bantuan.