All Products
Search
Document Center

Elastic Compute Service:Mengatasi masalah ruang disk penuh pada instans Linux

Last Updated:Aug 21, 2026

Saat aplikasi dan layanan berjalan terus-menerus pada instans Linux, log, cache, dan data bisnis menumpuk seiring waktu serta secara bertahap menghabiskan ruang disk yang tersedia. Ketika disk penuh, data baru tidak dapat ditulis, yang secara langsung menyebabkan gangguan layanan atau perilaku tidak normal.

Gejala

Saat membuat file atau menjalankan aplikasi pada instans Linux, Anda melihat pesan error No space left on device, yang menunjukkan bahwa sumber daya penyimpanan telah habis.

Diagnosis dan solusi

Penting

Sebelum melakukan perubahan, buat snapshot manual untuk mencadangkan data Anda dan mencegah kehilangan data akibat kesalahan yang dapat memengaruhi bisnis Anda.

Skenario 1: Ruang disk habis

  1. Periksa penggunaan disk.

    Jalankan sudo df -h untuk melihat penggunaan disk di setiap mount point. Jika nilai Use% mencapai 100%, ruang yang bersangkutan telah penuh.

  2. Temukan dan bersihkan file atau direktori besar yang mengonsumsi ruang disk.

    1. Mulai dari direktori root, jalankan sudo du -sh /* untuk menyelidiki level demi level, sehingga Anda dapat dengan cepat mempersempit cakupan dan menemukan direktori yang paling banyak mengonsumsi ruang.

    2. Berdasarkan output tersebut, temukan direktori dengan penggunaan terbesar, lalu ulangi perintah sudo du -sh <directory name>/* pada direktori tersebut untuk menyelidiki lebih dalam level demi level dan mengidentifikasi file besar.

      Contohnya, jalankan sudo du -sh /mnt/* untuk melihat ruang yang dikonsumsi oleh file dan subdirektori di bawah direktori /mnt.

      Objek umum yang dapat dibersihkan tercantum di bawah ini. Bersihkan file yang tidak diperlukan sesuai kebutuhan bisnis aktual Anda.

      Jenis

      Lokasi Umum

      Deskripsi dan Rekomendasi

      File log

      /var/log

      Log aplikasi dan sistem. Anda dapat membersihkan log historis yang telah diarsipkan. Untuk log systemd, gunakan sudo journalctl --vacuum-size=200M untuk membatasi ukurannya, bukan langsung menggunakan rm untuk menghapus log yang sedang ditulis.

      File sementara

      /tmp, /var/tmp

      Data sementara. Bersihkan setelah memastikan tidak ada proses yang menggunakannya.

      Cache aplikasi / log bisnis

      Direktori bisnis kustom

      Memerlukan penilaian berdasarkan bisnis Anda. Sebelum membersihkan, pastikan data tersebut tidak kritis untuk menghindari penghapusan yang tidak disengaja.

  3. Jika ruang masih tidak mencukupi setelah pembersihan, perluas disk Anda.

Skenario 2: Sumber daya inode telah habis

Setiap file mengonsumsi satu inode. Jika disk Anda berisi banyak file kecil, inode dapat habis meskipun ruang disk masih tersedia, sehingga mencegah pembuatan file baru.

  1. Periksa penggunaan inode.

    Jalankan sudo df -i. Jika nilai IUse% mencapai 100%, sumber daya inode telah habis.

  2. Bersihkan file atau folder yang tidak diperlukan.

    Gunakan sudo du -sh --inodes <folder name>/* untuk melihat jumlah inode yang digunakan oleh file dan subfolder dalam direktori tertentu. Jika diperlukan, masuk ke direktori tersebut dan gunakan perintah ini secara rekursif untuk menemukan penggunaan inode yang tinggi.

    Contohnya, gunakan sudo du -sh --inodes /mnt/* untuk memeriksa jumlah inode yang digunakan oleh file dan subdirektori di direktori /mnt.
  3. Jika jumlah inode masih tidak mencukupi setelah pembersihan, perluas disk Anda.

Skenario 3: File yang dihapus tetap mengonsumsi ruang

Meskipun file telah dihapus, sistem tidak melepaskan ruang disknya jika masih ada proses yang menggunakannya (yaitu, memegang handle file yang terbuka). Ruang tersebut hanya akan dilepaskan ketika proses dihentikan atau secara eksplisit menutup file tersebut.

  1. Instal tool lsof.

    File yang dihapus tetapi masih mengonsumsi ruang tidak dapat dilihat dengan df atau du. Gunakan tool lsof untuk mencantumkannya.

    Alibaba Cloud Linux, CentOS

    sudo yum install -y lsof

    Debian, Ubuntu

    sudo apt install -y lsof
  2. Lihat ruang penyimpanan yang masih dipegang oleh file yang dihapus.

    sudo lsof | grep delete | sort -k7 -rn | more

    Kolom ketujuh dalam output menunjukkan ukuran file dalam byte. Jumlahkan nilai-nilai ini untuk menghitung total ruang yang belum dilepaskan.

    tail      619544                        root    3r   REG    253,1   50000000    136507 /home/test_file (deleted)
    aliyun-se 347980                        root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347997 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347996 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347995 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347994 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347983 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347982 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347981 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
  3. Catat nama proses dan PID-nya.

    Jalankan sudo lsof | grep delete dan catat bidang COMMAND dan PID untuk mengidentifikasi nama proses dan ID proses.

  4. Restart atau hentikan layanan terkait.

    Jalankan sudo ps -ef | grep <PID> untuk memastikan tujuan proses tersebut. Setelah mengevaluasi dampaknya, restart atau hentikan layanan tersebut.

    Penting

    Restart atau menghentikan layanan dapat memengaruhi bisnis Anda. Evaluasi dengan hati-hati dan lakukan tindakan ini selama jendela pemeliharaan yang sesuai.

Skenario 4: Mount point ditimpa

Ketika direktori yang tidak kosong digunakan sebagai mount point untuk perangkat lain, konten yang sudah ada menjadi tersembunyi. Namun, proses yang sudah membuka direktori tersebut masih dapat menulis ke ruang dasarnya. Konsumsi ruang “tersembunyi” ini tidak dapat diamati dengan perintah df dan dapat secara tak terduga menghabiskan ruang disk.

  1. Lihat informasi tentang folder duplikat.

    Jalankan sudo lsblk dan periksa kolom MOUNTPOINT untuk nama direktori yang berulang.

    sudo lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    vda    253:0    0   40G  0 disk 
    ├─vda1 253:1    0    2M  0 part 
    ├─vda2 253:2    0  200M  0 part /boot/efi
    └─vda3 253:3    0 39.8G  0 part /
    vdb    253:16   0   40G  0 disk 
    └─vdb1 253:17   0   40G  0 part /mnt
    vdc    253:32   0   40G  0 disk 
    └─vdc1 253:33   0   40G  0 part /mnt

    Pada contoh ini, kedua partisi vdb1 dan vdc1 dipasang ke /mnt, yang menunjukkan risiko timpa mount point.

  2. Lepaskan sistem file.

    Penting

    Melepas sistem file dapat mengganggu layanan yang bergantung pada path tersebut. Evaluasi risikonya dan pilih waktu yang tepat untuk melakukan operasi ini.

    Anda dapat memperoleh <duplicate mount directory> dari langkah sebelumnya.

    sudo umount <duplicate mount directory>
    Pada contoh ini, /mnt adalah direktori mount duplikat. Menjalankan sudo umount /mnt akan melepas perangkat yang paling baru dipasang, yaitu vdc1.
  3. Identifikasi nama perangkat dari mount point yang ditimpa.

    Jalankan sudo df -h untuk menemukan nama perangkat yang terkait dengan mount point aktif saat ini.

    sudo df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        3.7G     0  3.7G   0% /dev
    tmpfs           3.7G     0  3.7G   0% /dev/shm
    tmpfs           3.7G  524K  3.7G   1% /run
    tmpfs           3.7G     0  3.7G   0% /sys/fs/cgroup
    /dev/vda3        40G  4.5G   33G  12% /
    /dev/vda2       200M  5.8M  194M   3% /boot/efi
    /dev/vdb1        40G   40G     0  100% /mnt
    tmpfs           747M     0  747M   0% /run/user/0

    Pada contoh ini, partisi yang saat ini dipasang ke /mnt adalah vdb1. Oleh karena itu, nama perangkat dari mount point yang ditimpa adalah vdb1.

  4. Atasi masalah ruang disk penuh.

    1. Bersihkan file atau folder yang tidak diperlukan di ruang yang ditimpa.

      Pada contoh ini, bersihkan direktori /mnt yang dipasang oleh vdb1.
    2. Jika ruang masih tidak mencukupi setelah pembersihan, perluas disk Anda dan pasang ke direktori kosong yang berbeda.

      Pada contoh ini, perangkat target yang akan diperluas adalah vdb1.
Penting

Jangan memasang beberapa perangkat ke direktori yang sama.

Memasang beberapa perangkat ke direktori yang sama akan menyembunyikan ruang perangkat yang dipasang pertama kali dan dapat menyebabkan data ditulis ke perangkat yang salah. Selalu pasang perangkat berbeda ke direktori kosong yang terpisah.

Skenario 5: File terkait Docker mengonsumsi ruang signifikan

Docker menghasilkan banyak image perantara, kontainer yang dihentikan, dan cache build selama operasi. Seiring waktu, komponen-komponen ini menumpuk dan mengonsumsi ruang disk.

  1. Periksa penggunaan ruang disk Docker.

    Jalankan sudo df -h. Jika Use% untuk Filesystem bertipe overlay mencapai 100%, penyimpanan Docker telah penuh.

  2. Evaluasi penggunaan sumber daya Docker.

    Jalankan sudo docker system df dan periksa bidang Size dan RECLAIMABLE untuk memahami konsumsi ruang.

    sudo docker system df
    TYPE            TOTAL      ACTIVE     SIZE       RECLAIMABLE
    Images          21         9          13.94GB    10.66GB(76%)
    Containers      9          5          30.09MB    0B(0%)
    Local volumes   6          6          259.9MB    0B(0%)
    Build Cache     0          0          0B         0B

    Pada contoh ini, image Docker menempati 13,94 GB, di mana 10,66 GB dapat dipulihkan, dan kami merekomendasikan agar Anda memprioritaskan pembersihan image yang tidak digunakan.

  3. Bersihkan file yang tidak diperlukan.

    Jika file Docker tidak dapat dibersihkan, ikuti langkah-langkah dalam Skenario 1: Ruang disk habis.
    • Hapus semua kontainer yang dihentikan: jalankan sudo docker container prune.

    • Hapus semua image dangling (image tanpa tag): jalankan sudo docker image prune.

    • Hapus cache build yang tidak digunakan: jalankan sudo docker builder prune.

Skenario 6: Batas inotify watches tercapai

Saat menjalankan perintah seperti sudo tail -f, Anda mungkin melihat error tail: cannot watch '...': No space left on device. Ini bukan berarti ruang disk penuh. Melainkan, sistem telah mencapai jumlah maksimum inotify watches yang digunakan untuk memantau perubahan file dan direktori. Anda harus menaikkan batas ini.

  1. Periksa batas inotify watches saat ini.

    Jalankan sudo cat /proc/sys/fs/inotify/max_user_watches untuk melihat batas saat ini untuk inotify watches.

  2. Tingkatkan batas inotify watches.

    Menambah batas ini akan meningkatkan penggunaan memori. Evaluasi dengan hati-hati sebelum mengubahnya. Nilai <new limit> umumnya tidak boleh melebihi 524288.

    sudo sh -c "echo fs.inotify.max_user_watches=<new limit> >> /etc/sysctl.conf"
  3. Muat konfigurasi baru.

    Jalankan sudo sysctl --system untuk menerapkan konfigurasi yang diperbarui.

  4. Verifikasi hasilnya.

    Jalankan sudo cat /proc/sys/fs/inotify/max_user_watches lagi untuk memastikan batas inotify watches telah diperbarui sesuai harapan.

Referensi

  • Untuk menyimpan sejumlah besar file statis seperti gambar, video, atau arsip, gunakan Object Storage Service (OSS).

  • Untuk berbagi file berkinerja tinggi dan konkurensi tinggi, simpan file menggunakan File Storage NAS.

  • Untuk pengumpulan dan analisis log skala besar, simpan log di Simple Log Service (SLS) untuk menyederhanakan kueri dan mengurangi penggunaan penyimpanan lokal.