Server Solusi – Ketika disk VPS mencapai kapasitas maksimum, masalahnya bisa lebih serius daripada sekadar tidak bisa mengunggah file. Database mungkin gagal menulis data, aplikasi Laravel bisa mengalami error, log tidak dapat diperbarui, dan layanan tertentu bahkan bisa gagal berjalan.
Pada Ubuntu Server, pesan No space left on device tidak selalu berarti seluruh kapasitas penyimpanan sudah habis. Bisa juga jumlah inode sudah mencapai batas, atau filesystem tertentu kehabisan ruang meskipun disk lain masih memiliki kapasitas kosong.
Cara mengatasi disk full di Ubuntu Server adalah memeriksa filesystem yang penuh, menemukan direktori atau file penyebabnya, lalu membebaskan ruang dengan tindakan yang sesuai. Mulailah dari perintah df -h dan df -i, lanjutkan dengan du untuk mengidentifikasi penggunaan ruang, dan jangan menghapus file sistem atau database sebelum mengetahui fungsinya.
Dalam panduan ini, saya menggunakan pendekatan diagnosis bertahap. Tujuannya bukan sekadar membuat angka penggunaan disk turun, tetapi memastikan ruang tersedia kembali tanpa merusak website atau data penting.
Periksa penggunaan disk dengan df -h
Langkah pertama adalah mengetahui filesystem mana yang kehabisan ruang. Jangan langsung menghapus file karena belum tentu partisi yang penuh adalah partisi utama /.
Jalankan:
df -hPerintah ini menampilkan kapasitas total, ruang terpakai, ruang tersedia, dan persentase penggunaan filesystem.
Contoh output ilustratif:
Filesystem Size Used Avail Use% Mounted on/dev/vda1 40G 39G 500M 99% //dev/vda2 100G 35G 65G 35% /dataAngka di atas hanya contoh untuk membantu membaca hasil.
Jika / hampir mencapai 100%, periksa direktori yang berada pada filesystem tersebut. Jika /data yang penuh, fokuskan diagnosis pada direktori dan aplikasi yang menggunakan mount point itu.
Perhatikan juga bahwa tmpfs merupakan filesystem berbasis memori dan tidak selalu menggunakan ruang disk seperti partisi biasa.
Bagaimana jika disk terlihat penuh padahal masih ada ruang?
Periksa inode menggunakan:
df -iInode menyimpan informasi tentang file dan direktori. Filesystem dapat menolak pembuatan file baru ketika inode habis, meskipun kapasitas penyimpanan dalam gigabyte masih tersedia.

Jika persentase IUse% mencapai 100%, cari direktori yang memiliki terlalu banyak file kecil. Contohnya bisa berupa cache aplikasi, file sesi, atau file sementara.
Cari direktori yang paling banyak menggunakan ruang
Setelah mengetahui filesystem yang bermasalah, identifikasi direktori yang menghabiskan kapasitas.
Untuk memeriksa direktori tingkat teratas pada filesystem root:
sudo du -xhd1 / 2>/dev/null | sort -hKeterangan:
dumenghitung penggunaan ruang oleh file dan direktori.-xmembatasi pemeriksaan pada filesystem yang sama.-hmenampilkan ukuran dalam format yang mudah dibaca.-d1membatasi kedalaman direktori hingga satu tingkat.sort -hmengurutkan ukuran dari kecil ke besar.
Opsi -d tersedia pada GNU du yang umum digunakan di Ubuntu. Jika versi atau implementasi berbeda, gunakan opsi kedalaman yang didukung.
Contoh hasil ilustratif:
1.2G /usr3.4G /var8.7G /home15G /Jika /var terlihat besar, periksa isi direktori tersebut:
sudo du -xhd1 /var 2>/dev/null | sort -hJika /home paling besar, lanjutkan ke direktori pengguna atau lokasi website di dalamnya.
Jangan menganggap direktori terbesar sebagai file sampah. Direktori database, backup, upload website, dan file aplikasi bisa memang membutuhkan ruang besar dan tetap diperlukan.
Periksa apakah log server membengkak
Log merupakan salah satu sumber penggunaan disk yang layak diperiksa, terutama jika server sudah berjalan cukup lama atau aplikasi menghasilkan error berulang.
Pada Ubuntu Server, log sistem umumnya tersedia di /var/log, sedangkan journal systemd memiliki mekanisme penyimpanannya sendiri.
Untuk mengetahui ukuran direktori log:
sudo du -xhd1 /var/log 2>/dev/null | sort -hUntuk melihat ukuran journal systemd:
sudo journalctl --disk-usageJika journal menggunakan banyak ruang, kamu dapat membersihkan entri lama menggunakan kebijakan retensi.
Contohnya, untuk mempertahankan maksimal sekitar 500 MB data journal:
sudo journalctl --vacuum-size=500MPerintah tersebut menghapus arsip journal lama sesuai kebijakan ukuran. Ini dapat menghilangkan riwayat diagnostik yang mungkin masih diperlukan, jadi periksa kebutuhan audit dan troubleshooting sebelum menjalankannya.
Perlu diketahui, perintah vacuum terutama membersihkan file journal yang sudah diarsipkan. File journal aktif tidak selalu langsung terpangkas oleh perintah tersebut.

Bagaimana jika file log sangat besar?
Cari file berukuran besar terlebih dahulu:
sudo find /var/log -xdev -type f -size +100M -lsPerintah tersebut menampilkan file log berukuran lebih dari 100 MB pada filesystem yang sama.
Jika menemukan file yang besar, identifikasi aplikasi pemilik log dan periksa apakah log rotation sudah bekerja. Jangan langsung menghapus semua isi /var/log, karena log dapat dibutuhkan untuk mengetahui penyebab masalah lain di server.
Bersihkan cache paket APT
Ubuntu menyimpan file paket yang diunduh melalui APT. Cache ini dapat dibersihkan jika kamu membutuhkan ruang dan tidak memerlukan salinan paket yang tersimpan secara lokal.
Periksa ukuran cache:
sudo du -sh /var/cache/apt/archivesKemudian bersihkan paket yang di-cache dan tidak lagi diperlukan:
sudo apt cleanapt clean menghapus file paket yang tersimpan di cache APT, bukan menghapus paket yang sudah terpasang.
Jika ingin memeriksa paket yang tidak lagi dibutuhkan sebagai dependensi, jalankan:
sudo apt autoremoveBaca daftar paket yang akan dihapus sebelum menyetujui operasi tersebut. Jangan melanjutkan jika ada paket penting untuk layanan produksi yang ikut tercantum dan kamu belum memahami dampaknya.
Setelah pembersihan, periksa kembali:
df -hJika cache APT hanya menggunakan sedikit ruang, hasilnya mungkin tidak terlalu terasa. Lanjutkan diagnosis ke direktori lain yang benar-benar besar.
Periksa backup, arsip, dan file hasil upload
Pada VPS yang menjalankan website, ruang disk dapat habis karena backup lama, arsip .zip atau .tar.gz, file hasil migrasi, serta file upload yang menumpuk.
Untuk mencari file besar di filesystem root:
sudo find / -xdev -type f -size +500M -printf '%s %p\n' 2>/dev/null \| sort -nPerintah ini menampilkan file berukuran lebih dari 500 MB dan mengurutkannya berdasarkan ukuran dalam byte.
Hasilnya dapat membantu menemukan backup atau arsip besar. Namun, file database, image website, dan file aplikasi juga mungkin masuk dalam daftar.
Sebelum menghapus file, pastikan:
File bukan database aktif atau file yang masih digunakan aplikasi.
Baca JugaLinux Server Load Average Tinggi Padahal Trafik Rendah? Ini Cara Mengeceknya![Linux Server Load Average Tinggi Padahal Trafik Rendah? Ini Cara Mengeceknya]()
Backup lain yang valid tersedia jika file tersebut merupakan satu-satunya salinan.
File tidak diperlukan untuk proses deployment, rollback, atau pemulihan bencana.
Penghapusan memang akan membebaskan ruang pada filesystem yang penuh.
Jika file backup lama memang tidak lagi diperlukan dan salinan lain sudah diverifikasi, kamu bisa memindahkan atau menghapusnya sesuai kebijakan penyimpanan server.
Hindari menjalankan perintah penghapusan massal berdasarkan ekstensi file saja. Nama seperti .sql, .zip, atau .log tidak otomatis berarti file tersebut aman dihapus.
Periksa penggunaan disk oleh Docker
Jika VPS menjalankan Docker, image lama, container yang berhenti, build cache, dan volume dapat menggunakan ruang cukup besar.
Periksa penggunaan disk Docker:
docker system dfPerintah tersebut merangkum penggunaan ruang oleh image, container, volume, dan build cache.
Untuk melihat daftar container:
docker ps -aJika build cache memang besar, kamu bisa mempertimbangkan:
docker builder prunePerintah tersebut membersihkan build cache yang tidak digunakan. Baca konfirmasi yang ditampilkan sebelum melanjutkan.
Jangan langsung menjalankan docker system prune -a --volumes tanpa audit. Penghapusan volume dapat menghilangkan data persisten, termasuk data yang mungkin masih dibutuhkan aplikasi meskipun container terkait sedang berhenti.
Jika Docker tidak terpasang di server, lewati langkah ini.
Periksa file yang sudah dihapus tetapi masih digunakan proses
Ada kondisi ketika df -h menunjukkan disk hampir penuh, tetapi hasil du tidak menemukan direktori yang cukup besar untuk menjelaskan penggunaan tersebut.
Salah satu penyebabnya adalah file besar sudah dihapus, tetapi masih dibuka oleh proses yang berjalan. Ruang penyimpanannya belum dibebaskan sampai proses menutup file tersebut.
Periksa menggunakan:
sudo lsof +L1Jika lsof belum tersedia, kamu dapat memasangnya jika kondisi disk dan lingkungan server memungkinkan:
sudo apt install lsofCari entri yang menunjukkan file berukuran besar dengan jumlah link nol atau penanda deleted. Perhatikan proses dan file yang terlibat.
Jika file log yang dihapus masih terbuka, cara pemulihannya bergantung pada aplikasi pemilik file. Biasanya, log dapat ditutup dan dibuka kembali melalui mekanisme reopen log atau restart layanan yang sesuai.

Jangan langsung menghentikan semua proses yang muncul di lsof. Proses tersebut bisa berupa database, web server, atau aplikasi produksi. Identifikasi proses dan pilih tindakan yang paling minim gangguan.
Jika disk penuh karena database atau website
Jika hasil pemeriksaan menunjukkan direktori database, seperti /var/lib/mysql, menghabiskan ruang, jangan menghapus file database secara manual.
Periksa ukuran direktori untuk mengetahui skala penggunaan:
sudo du -xhd1 /var/lib/mysql 2>/dev/null | sort -hUkuran besar dapat berasal dari database yang berkembang, binary log, file sementara, atau tabel yang membutuhkan ruang lebih besar.
Solusinya bergantung pada sumber penggunaan. Jika binary log menumpuk, periksa kebijakan retensinya dan konfigurasi replikasi sebelum membersihkan. Jika tabel aplikasi berkembang, analisis data dan kebijakan retensi melalui mekanisme database yang sesuai.
Untuk website Laravel, periksa juga direktori log aplikasi, file upload, session, dan backup. Lokasi aktual bergantung pada cara aplikasi di-deploy.
Misalnya, untuk memeriksa log Laravel pada direktori proyek yang sudah diketahui:
du -sh /path/ke/aplikasi/storage/logsGanti path contoh tersebut dengan lokasi proyek yang sebenarnya.
Jangan menghapus direktori storage secara keseluruhan karena Laravel dapat menyimpan file penting bagi aplikasi di sana. Identifikasi file tertentu yang aman dibersihkan terlebih dahulu.
Verifikasi setelah ruang disk dibebaskan
Setelah melakukan pembersihan, pastikan kapasitas disk benar-benar membaik:
df -hdf -iPerintah pertama memeriksa kapasitas filesystem, sedangkan perintah kedua memeriksa pemakaian inode.
Jika disk sudah memiliki ruang kosong, periksa layanan yang sebelumnya mengalami gangguan. Contohnya:
sudo systemctl status nginx --no-pager -lSesuaikan nama service jika server menggunakan OpenLiteSpeed, Apache, database, atau layanan lain.
Jika website masih error, periksa log aplikasi dan layanan terkait. Disk penuh mungkin merupakan penyebab awal, tetapi kegagalan penulisan file atau database bisa meninggalkan masalah lanjutan yang perlu ditangani secara terpisah.
Perlu diperhatikan juga bahwa kapasitas yang terlihat pada df bisa berbeda dari hasil du akibat file yang masih terbuka setelah dihapus, metadata filesystem, atau reserved blocks.
Cara mencegah disk Ubuntu Server penuh kembali
Agar masalah tidak berulang, lakukan pemantauan secara berkala.
Pantau penggunaan filesystem. Periksa
df -hdandf -i, terutama pada VPS yang menjalankan banyak website.Atur retensi log. Pastikan log aplikasi dan systemd tidak terus bertambah tanpa batas.
Terapkan kebijakan backup. Tentukan berapa lama backup disimpan dan simpan salinan penting di lokasi terpisah jika memungkinkan.
Periksa database dan upload. Identifikasi pertumbuhan data yang tidak wajar sebelum ruang habis.
Pantau Docker jika digunakan. Periksa image, build cache, dan volume secara rutin.
Buat peringatan kapasitas. Notifikasi ketika penggunaan disk mendekati batas tertentu dapat memberi waktu untuk bertindak sebelum layanan terganggu.
Sediakan ruang untuk pemulihan. Jangan menunggu filesystem mencapai 100% sebelum melakukan pemeriksaan.
FAQ: Disk full di Ubuntu Server
1. Kenapa Ubuntu Server menampilkan No space left on device?
Pesan tersebut biasanya berarti filesystem kehabisan ruang atau inode. Gunakan df -h untuk memeriksa kapasitas dan df -i untuk memeriksa inode.
2. Bagaimana cara mengetahui folder terbesar di Ubuntu Server?
Gunakan:
sudo du -xhd1 / 2>/dev/null | sort -hPeriksa direktori yang paling besar, lalu lanjutkan ke subdirektorinya untuk menemukan sumber penggunaan ruang.
3. Apakah aman menjalankan apt clean?
Umumnya aman untuk membersihkan cache paket APT karena paket yang sudah terpasang tidak dihapus. Namun, paket yang di-cache dan mungkin diperlukan untuk instalasi ulang harus diunduh kembali jika dibutuhkan.
4. Kenapa disk masih penuh setelah file dihapus?
Salah satu penyebabnya adalah file yang sudah dihapus masih dibuka oleh proses yang berjalan. Gunakan sudo lsof +L1 untuk mencari file semacam itu. Penyebab lain dapat berupa filesystem berbeda, reserved blocks, atau inode yang habis.
5. Apakah menambah kapasitas VPS selalu menjadi solusi?
Tidak selalu. Jika disk penuh karena log yang tidak terkendali atau file sementara yang menumpuk, memperbaiki retensi dapat menjadi solusi yang lebih tepat. Namun, jika kebutuhan data memang terus berkembang secara normal, menambah kapasitas disk mungkin diperlukan.
Penutup
Cara mengatasi disk full di Ubuntu Server dimulai dengan mengetahui filesystem yang penuh, mengidentifikasi penggunaan ruang, lalu membersihkan sumber yang memang aman dihapus. Jangan langsung menghapus file database, konfigurasi, atau direktori sistem hanya untuk menurunkan persentase penggunaan disk.
Mulailah dengan df -h, df -i, dan du. Setelah sumbernya diketahui, pilih tindakan yang sesuai, kemudian verifikasi kapasitas disk serta status layanan yang terdampak.
Jika penggunaan disk masih tidak masuk akal setelah pemeriksaan tersebut, lanjutkan dengan memeriksa file yang sudah dihapus tetapi masih terbuka, penggunaan database, dan karakteristik filesystem.

