Bhyllabus l'énigme

Les pèlerins au-dessus des nuages

Ruang Disk Linux Mendadak Penuh? Temukan Biang Keroknya dengan df, du, dan ncdu

Ilustrasi terminal Linux yang menampilkan analisis pemakaian ruang penyimpanan dan folder dengan ukuran berbeda

Notifikasi “ruang penyimpanan hampir habis” sering datang pada saat yang paling tidak tepat: ketika hendak memasang pembaruan, mengunduh berkas, atau menyimpan pekerjaan. Di Linux, jalan keluarnya bukan langsung menghapus folder yang namanya terdengar asing. Kita perlu tahu dulu filesystem mana yang penuh, direktori mana yang memakai ruang, dan apakah angka yang terlihat benar-benar berasal dari berkas yang masih tampak.

Ilustrasi terminal Linux yang menampilkan analisis pemakaian ruang penyimpanan dan folder dengan ukuran berbeda

Panduan ini memakai alat standar yang tersedia di banyak distribusi Linux, lalu menambahkan ncdu untuk pemeriksaan visual. Contoh perintah ditujukan untuk shell Bash pada Debian, Ubuntu, Fedora, Arch Linux, dan distribusi desktop sejenis. Sebagian perintah hanya membaca informasi; perintah yang mengubah atau menghapus data akan diberi peringatan.

1. Pastikan partisi mana yang benar-benar penuh dengan df

Mulailah dengan df, singkatan dari disk free. Perintah ini melaporkan ruang terpakai dan tersedia pada filesystem yang sedang terpasang (mounted). Ia menjawab pertanyaan “partisi mana yang sesak?”, bukan “folder mana yang membuatnya sesak?”.

df -hT

Opsi -h membuat ukuran lebih mudah dibaca, sedangkan -T menampilkan jenis filesystem, misalnya ext4, btrfs, atau tmpfs. Perhatikan kolom Use% dan Mounted on. Jika baris yang terpasang pada / mencapai 100%, ruang pada filesystem akar memang habis. Namun, bila yang penuh justru /home atau partisi lain, pencarian sebaiknya dimulai dari titik pemasangan itu.

Ruang bukan satu-satunya sumber daya yang dapat habis. Linux juga memakai inode, yaitu catatan metadata untuk setiap berkas dan direktori. Ribuan berkas kecil dapat menghabiskan inode meskipun kapasitas gigabita masih tersisa. Periksa dengan:

df -i

Jika kolom IUse% mendekati 100%, cari direktori yang berisi sangat banyak berkas kecil. Menambah kapasitas disk tidak otomatis menyelesaikan masalah inode yang habis.

2. Telusuri direktori besar memakai du

Setelah tahu filesystem yang penuh, gunakan du (disk usage) untuk memperkirakan pemakaian ruang oleh direktori dan berkas. Untuk memeriksa satu tingkat di bawah akar filesystem, jalankan:

sudo du -xhd1 / 2>/dev/null | sort -h

Arti opsinya: -x membatasi pemindaian pada filesystem yang sama sehingga disk eksternal atau partisi lain tidak ikut dihitung; -h menampilkan ukuran yang mudah dibaca; dan -d1 membatasi kedalaman hingga satu tingkat direktori. sort -h mengurutkan ukuran dari kecil ke besar, sehingga direktori terbesar berada di bagian bawah.

Catatan izin: sudo diperlukan agar pemindaian dapat membaca direktori sistem yang tidak bisa diakses pengguna biasa. Perintah ini bersifat pemeriksaan, bukan penghapusan. Bagian 2>/dev/null menyembunyikan pesan kesalahan izin; jika ingin melihat pesan tersebut, hilangkan bagian itu.

Misalnya hasil menunjukkan /var paling besar. Persempit pemeriksaan ke sana:

sudo du -xhd1 /var 2>/dev/null | sort -h

Ulangi pada subdirektori terbesar, misalnya /var/log, /var/cache, atau /var/lib. Jangan menganggap semua yang besar boleh dihapus. /var/lib, misalnya, dapat berisi basis data dan keadaan aplikasi. Untuk folder pribadi, pemeriksaan bisa dimulai tanpa hak administrator:

du -hd1 "$HOME" | sort -h

Perlu diingat, du menghitung ruang yang dipakai entri berkas pada direktori yang dapat dibacanya. Hasilnya bisa berbeda dari angka df karena berkas yang sudah dihapus tetapi masih dibuka proses, snapshot filesystem, ruang yang dicadangkan filesystem, atau direktori yang tertutup oleh titik pemasangan lain.

3. Lihat peta pemakaian dengan ncdu

Jika keluaran terminal terasa seperti daftar belanja tanpa keranjang, ncdu dapat membantu. Program ini menampilkan pohon direktori dalam antarmuka teks interaktif, lalu memudahkan kita menelusuri folder yang paling besar.

Pasang dari repositori distribusi, bukan dari skrip instalasi acak:

# Debian atau Ubuntu
sudo apt install ncdu

# Fedora
sudo dnf install ncdu

# Arch Linux
sudo pacman -S ncdu

# openSUSE
sudo zypper install ncdu

Setelah terpasang, pindai filesystem akar:

sudo ncdu -x /

Gunakan tombol panah untuk memilih direktori dan Enter untuk masuk. Tekan q untuk keluar. Opsi -x penting agar pemindaian tidak melompat ke filesystem lain. Pada beberapa versi, ncdu menyediakan fungsi penghapusan dari antarmukanya. Hindari tombol hapus sebelum nama, lokasi, dan fungsi berkas benar-benar dipahami. Untuk tahap diagnosis, kita hanya perlu membaca peta pemakaian.

4. Mengapa df penuh, tetapi du tidak menemukan penyebabnya?

Selisih besar antara angka df dan du bukan selalu kesalahan hitung. Ada beberapa penyebab yang patut diperiksa.

Berkas sudah dihapus, tetapi masih dibuka proses

Ketika sebuah log dihapus saat layanan masih menulis ke dalamnya, nama berkas dapat hilang dari direktori, tetapi blok disk belum dilepas sampai proses menutup berkas tersebut. Jika paket lsof tersedia, cari berkas yang sudah di-unlink tetapi masih terbuka:

sudo lsof -nP +L1

Opsi +L1 memilih berkas terbuka dengan jumlah tautan kurang dari satu, termasuk berkas yang sudah dihapus. Periksa kolom proses dan ukuran. Jika memang log layanan yang menahan ruang, gunakan prosedur restart atau reload resmi untuk layanan tersebut agar berkas ditutup dengan benar. Jangan langsung mematikan proses penting atau menghapus berkas lain berdasarkan nama semata.

Titik pemasangan menutupi isi direktori lama

Filesystem yang dipasang pada sebuah direktori akan menutupi isi direktori itu selama terpasang. Berkas lama di bawahnya tidak tampak dalam penelusuran biasa, tetapi dapat tetap memakai ruang filesystem asal. Periksa filesystem yang menaungi suatu jalur dengan:

findmnt --target /var
findmnt --target /home

Bandingkan hasilnya dengan df -hT. Jangan melepas partisi aktif hanya untuk mencari berkas tersembunyi. Pemeriksaan isi di bawah titik pemasangan sebaiknya dilakukan dengan rencana pemeliharaan atau dari lingkungan penyelamatan, terutama pada server.

Snapshot filesystem masih menyimpan blok data

Pada Btrfs atau ZFS, snapshot dapat mempertahankan blok lama setelah berkas dihapus dari tampilan direktori biasa. Akibatnya, du tidak selalu menunjukkan seluruh ruang yang tertahan. Pada Btrfs, snapshot berbagi blok data dengan subvolume asal melalui mekanisme copy-on-write; lihat dokumentasi subvolume dan snapshot Btrfs. Jika sistem memakai Snapper, periksa daftar snapshot dengan alat itu sebelum mempertimbangkan pembersihan. Jangan menghapus snapshot secara serampangan: snapshot mungkin menjadi satu-satunya jalan kembali setelah pembaruan bermasalah. Manual Snapper menjelaskan pengelolaan dan kebijakan pembersihannya.

5. Periksa jurnal sistem sebelum membersihkan log

Pada sistem yang memakai systemd, jurnal dapat menjadi salah satu pengguna ruang. Ukur lebih dulu:

sudo journalctl --disk-usage

Perintah ini melaporkan gabungan jurnal aktif dan arsip. Jika ukurannya besar, cari tahu apakah lonjakan log berasal dari layanan yang terus-menerus gagal atau mencatat pesan berulang. Menghapus log tanpa mengatasi penyebabnya hanya membuat ruang kosong sebentar.

Peringatan, tindakan menghapus: jika Anda memang telah memeriksa kebutuhan audit dan retensi log, systemd menyediakan opsi untuk memangkas jurnal arsip, misalnya:

sudo journalctl --vacuum-size=500M

Perintah tersebut menghapus berkas jurnal arsip yang lebih lama sampai pemakaian arsip berada di bawah sasaran ukuran. Jurnal aktif tidak serta-merta ikut dihapus, sehingga hasil akhirnya tidak selalu tepat 500 MB. Jangan menjalankannya pada server yang wajib mempertahankan log untuk audit, investigasi, atau kepatuhan.

6. Bersihkan setelah tahu apa yang sedang dibersihkan

Setelah sumbernya ditemukan, pilih tindakan yang sesuai. Hapus unduhan atau arsip pribadi yang memang tidak diperlukan, kosongkan tong sampah melalui pengelola berkas, dan gunakan pengelola paket untuk menghapus paket atau kernel lama. Untuk cache aplikasi, utamakan opsi pembersihan bawaan aplikasinya.

Hindari kebiasaan menjalankan perintah penghapusan massal pada /var, /usr, /boot, atau /var/lib. Nama direktori yang tampak seperti cache atau log belum menjamin isinya aman dibuang. Pada mesin kerja dan server, pastikan cadangan data tersedia sebelum melakukan pembersihan besar.

Pertanyaan yang sering diajukan

Apakah du dan df seharusnya selalu menunjukkan angka yang sama?

Tidak. df membaca statistik filesystem, sedangkan du menjumlahkan pemakaian berkas yang dapat dijangkaunya. Berkas yang masih terbuka setelah dihapus, snapshot, ruang cadangan, dan titik pemasangan dapat membuat hasil berbeda.

Apakah ncdu aman dijalankan dengan sudo?

Untuk pemindaian, ya, karena hak administrator membuat lebih banyak direktori dapat dibaca. Namun, ncdu juga memiliki fungsi penghapusan pada beberapa versi. Gunakan hanya untuk menelusuri sampai Anda benar-benar yakin dengan sasaran yang dipilih.

Haruskah saya langsung menghapus log lama?

Tidak. Ukur dahulu dengan journalctl --disk-usage, cari layanan yang menghasilkan log berlebihan, lalu pertimbangkan kebutuhan retensi. Log dapat menjadi bukti penting ketika sistem mengalami gangguan.

Urutan yang paling aman sederhana: df untuk menemukan filesystem, du atau ncdu untuk menemukan direktori besar, lalu pemeriksaan khusus bila angkanya tidak cocok. Dengan begitu, ruang disk yang kembali lega bukan hasil menghapus secara membabi buta, melainkan hasil diagnosis yang bisa dijelaskan.

Referensi

Commenting 101: “Be kind, and respect each other” // Bersikaplah baik, dan saling menghormati (Indonesian) // Soyez gentils et respectez-vous les uns les autres (French) // Sean amables y respétense mutuamente (Spanish) // 待人友善,互相尊重 (Chinese) // كونوا لطفاء واحترموا بعضكم البعض (Arabic) // Будьте добры и уважайте друг друга (Russian) // Seid freundlich und respektiert einander (German) // 親切にし、お互いを尊重し合いましょう (Japanese) // दयालु बनें, और एक दूसरे का सम्मान करें (Hindi) // Siate gentili e rispettatevi a vicenda (Italian)

Tinggalkan Balasan