Categories: ServerTips TrikVPS

Space masih banyak tapi error No space left on device

Bismillaahirrohmaanirrohiim…

Saya beberapa kali mengalami masalah ini, space server besar dan masih terpakai sekitar 20-40% namun ternyata ketika ingin melakukan upload file atau modifikasi file ada error no space left on device, masalah ini karena file inode penuh.

Inode adalah jumlah file yang ada di dalam server, bukan ukuran filenya, tapi jumlah filenya.

Yang membuat penuh inode ternyata adalah file cache atau file session yang kecil-kecil tapi banyak banget, sampai jutaan file.

Untuk server yang berukuran SSD 50 GB, saya pernah menemukan file di php/session/sess_* sekitar 2-3 juta file, dan untuk menghapus file tersebut memerlukan teknik khusus, jika menggunakan perintah biasa rm atau delete biasa tidak akan mampu.

Berikut langkah-langkah yang digunakan untuk menyelesaikan masalah no space left on device karena inode full.

1. Cek ketersediaan space dalam disk server

df

Akan ditampilkan available space pada /dev/xvda/

2. Cek ketersediaan inode space dalam server

df -i

Akan ditampilkan ketersediaan space inode dalam server

3. Cari dan hapus file dalam folder yang berisi banyak file

– Cek dalam folder root yang isinya banyak file

for i in /*; do echo $i; find $i |wc -l; done

– cek dalam folder yang isinya banyak file

for i in /var/*; do echo $i; find $i |wc -l; done

– cek lagi dalam folder yang isinya banyak file

for i in /var/lib/*; do echo $i; find $i |wc -l; done
for i in /var/lib/php/*; do echo $i; find $i |wc -l; done

misalnya hasilnya seperti ini

/var/lib/php/session
2281209

4. Hapus file dalam folder tersebut

cek file lebih dari 30 hari yg lalu
find /var/lib/php/session -type f -mtime +30 

hapus file lebih dari 30 hari yg lalu
find /path/to/folder -name "filenamestart*" -type f -exec rm -f {} \;
find /var/lib/php/session -name "sess*" -type f -mtime +30 -exec rm -f {} \; 
atau
find /var/lib/php/session -type f -mtime +30 -delete

jika berdasarkan nama
find /var/lib/php/session/ -type f -name "sess_*" -delete

cara biasa hapus file
rm -rf /var/lib/php/session/sess_*

Jika ribuan bahkan jutaan file, akan memakan banyak ram, lambat, dan tidak efisien.

file besar jutaan harus pakai perintah di bawah ini
rsync -a --delete /home/domain.com/public_html/folderkosong/ /var/lib/php/session/

jika cara diatas semua gagal, maka pakai cara xargs rm
- cd ke folder yang mau dihapus isinya
- cek isi folder dg limit 5 file
ls -U | head -5
- untuk hapus 100 file
ls -U | head -100 | xargs rm -rf
- untuk hapus 100000 file
ls -U | head -100000 | xargs rm -rf

cara lain lagi:
- cd ke folder yang mau dihapus isinya
find . -maxdepth 1 -print0 | xargs -0 rm -rf
coba dulu yaa

Tunggu beberapa saat, biasanya akan lama dan kelihatan hang di jendela putty. Tidak apa-apa biarkan saja beberapa menit, kemudian coba login root menggunakan putty yang lain dan lanjutkan cek seperti poin di bawah.

5. Cek lagi ketersediaan inode

df -i

Seharusnya ketersediaan inode file dalam server akan jadi bertambah dan server akan berjalan normal seperti semula lagi, tidak ada error no space available saat digunakan.

Terimakasih, semoga bermanfaat.


Informasi delete jutaan file di linux:

rm: hapus jutaan file tidak bisa dilakukan dengan ini.
find -exec: bisa, tapi lambat.
find -delete: cepat dan mudah untuk menghapus file.
rsync –delete: tercepat dalam menghapus file.

Informasi untuk cek folder dengan ukuran terbesar

du -ahx / | sort -rh | head -5
//akan menampilkan 5 top folder dengan ukuran yang besar
find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n5
//akan menampilkan file dengan ukuran >100MB
du -hsx * | sort -rh
//untuk menampilkan list folder beserta ukuran besarnya

//jika ditemukan file besar pada folder tertentu, hapus dengan cara dibawah ini, misalnya folder logs.
rm -rf /usr/local/lsws/logs/error.log*

Informasi untuk melihat ukuran folder dan file

//utk melihat semua ukuran folder dalam domain (semua subfolder juga akan dihitung)
du -h /home/domain.com

//utk melihat ukuran satu folder domain
du -sh /home/domain.com

//utk melihat ukuran file dan folder dalam domain
du -ah /home/domain.com

//utk melihat ukuran file dan folder dalam domain dengan pengecualian
du -ah --exclude="*.txt" /home/domain.com

//utk melihat ukuran file dan folder dalam domain berdasarkan modification time
du -ha --time /home/domain.com

du = disk usage
Bagikan
rasupe

View Comments

  • sudah 2 kali mengalami hal ini, sampe harus reinstall OS,
    dicyberpanel tempatnya di lsphp
    say amenggunakan command ini

    find /var/lib/lsphp/session/ -type f -name "sess*" -delete

    langsung saja disk bersih dari 47% menjadi 23%

    Terimakasih

Recent Posts

Teks panjang jadi titik-titik dengan css

Bismillaahirrohmaanirrohiim... Saat kita membuat kotak dengan lebar dan tinggi tertentu, tentunya teks didalamnya harus kita…

3 weeks ago

Bekerja dengan clearfix di css untuk posisi gambar dan teks dalam kotak

Bismillaahirrohmaanirrohiim... Clearfix pada css biasanya digunakan untuk menangani posisi elemen saat menggunakan float, dimana float…

3 weeks ago

Fix npx atau npm tidak jalan di windows

Bismillaahirrohmaanirrohiim... Setelah menginstall node.js dan ingin menggunakan perintah npx atau npm di power shell atau…

4 weeks ago

CPU usage tinggi pada server

Bismillaahirrohmaanirrohiim... Untuk mendeteksi cpu usage tinggi memang perkara rumit, adakalanya karena codingan bermasalah, akses ke…

3 months ago

Membersihkan log mongodb yang besar

Bismillaahirrohmaanirrohiim... Jika tidak dirawat dan dicek berkala, log mongodb akan semakin membesar. Bahkan sampai menghabiskan…

3 months ago

Cara mengakses gps di HP dengan javascript

Bismillaahirrohmaanirrohiim... Jika kita membuat website yang digunakan untuk memantau lokasi HP client, maka kita memerlukan…

6 months ago