Saya memiliki disk drive di mana penggunaan inode adalah 100% (menggunakan df -i
perintah). Namun setelah menghapus file secara substansial, penggunaannya tetap 100%.
Apa cara yang benar untuk melakukannya?
Bagaimana mungkin disk drive dengan penggunaan ruang disk lebih sedikit dapat memiliki penggunaan inode lebih tinggi daripada disk drive dengan penggunaan ruang disk lebih tinggi?
Apakah mungkin jika saya zip banyak file yang akan mengurangi jumlah inode yang digunakan?
linux
unix
memory-management
inode
neversaint
sumber
sumber
Jawaban:
Sangat mudah bagi disk untuk memiliki sejumlah besar inode yang digunakan bahkan jika disk tidak terlalu penuh.
Sebuah inode dialokasikan untuk sebuah file jadi, jika Anda memiliki banyak file, masing-masing 1 byte, Anda akan kehabisan inode jauh sebelum Anda kehabisan disk.
Mungkin juga menghapus file tidak akan mengurangi jumlah inode jika file memiliki banyak tautan keras. Seperti yang saya katakan, inode milik file, bukan entri direktori. Jika file memiliki dua entri direktori yang ditautkan, menghapus satu tidak akan membebaskan inode.
Selain itu, Anda dapat menghapus entri direktori tetapi, jika proses yang berjalan masih membuka file, inode tidak akan dibebaskan.
Saran awal saya adalah menghapus semua file yang Anda bisa, kemudian reboot kotak untuk memastikan tidak ada proses yang tersisa dengan membuka file.
Jika Anda melakukan itu dan Anda masih memiliki masalah, beri tahu kami.
Omong-omong, jika Anda mencari direktori yang berisi banyak file, skrip ini dapat membantu:
sumber
>/tmp/count_em_$$
hanya akan berfungsi jika Anda memiliki ruang untuk itu ... jika itu masalahnya, lihat jawaban @ simon./tmp
tidak akan memengaruhi sistem file Anda yang lain.ls -A
bukanls -a
. Mengapa Anda ingin menghitung. dan ..?Jika Anda sangat sial, Anda telah menggunakan sekitar 100% dari semua inode dan tidak dapat membuat skrip. Anda dapat memeriksanya dengan
df -ih
.Maka perintah bash ini dapat membantu Anda:
Dan ya, ini akan memakan waktu, tetapi Anda dapat menemukan direktori dengan sebagian besar file.
sumber
awk
dapat menyimpan hash dari direktori dan jumlah file tanpa uniqing dan menyortir trilyun baris. Yang mengatakan, mungkin inilah perbaikan:find . -maxdepth 1 -type d | grep -v '^\.$' | xargs -n 1 -i{} find {} -xdev -type f | cut -d "/" -f 2 | uniq -c | sort -n
- ini hanya mengurutkan daftar terakhir.sort
mungkin gagal menyimpan semua yang ada di memori dan akan mencoba untuk secara otomatis kembali menulis file sementara. Sebuah proses yang jelas akan gagal ...sort
gagal untuk saya, tetapi saya bisa memberikan--buffer-size=10G
yang berhasil.Situasi saya adalah saya keluar dari inode dan saya sudah menghapus semua yang saya bisa.
Saya menggunakan Ubuntu 12.04LTS dan tidak dapat menghapus kernel linux lama yang memakan sekitar 400.000 inode karena apt rusak karena paket yang hilang. Dan saya tidak bisa menginstal paket baru karena saya kehabisan inode jadi saya macet.
Saya akhirnya menghapus beberapa kernel linux lama dengan tangan untuk membebaskan sekitar 10.000 inode
Ini cukup untuk membiarkan saya menginstal paket yang hilang dan memperbaiki apt
dan kemudian hapus sisa kernel linux lama dengan apt
segalanya jauh lebih baik sekarang
sumber
sudo rm -rf /usr/src/linux-headers-3.2.0-2*
jika saya yakin saya tidak menggunakan kernel itu?$ sudo apt-get autoremove
sendirian, melakukan trik untuk saya.Solusi saya:
Coba cari tahu apakah ini masalah inode dengan:
Cobalah untuk menemukan folder root dengan jumlah inode yang besar:
Cobalah untuk menemukan folder tertentu:
Jika ini adalah tajuk linux, coba hapus yang terlama dengan:
Secara pribadi saya memindahkannya ke folder yang terpasang (karena bagi saya perintah terakhir gagal) dan menginstal yang terbaru dengan:
Ini menyelesaikan masalah saya.
sumber
SpamAssasin-Temp
.find /var/spool/MailScanner/incoming/SpamAssassin-Temp -mtime +1 -print | xargs rm -f
melakukan pekerjaan :) Terima kasih!for i in /usr/src/*; do echo -en "$i\t"; find $i 2>/dev/null |wc -l; done
for i in /src/*; do echo "$i, `find $i |wc -l`"; done|sort -nrk 2|head -10
pamerkan top 10 direktori terbesarSaya memiliki masalah yang sama, memperbaikinya dengan menghapus sesi direktori php
Mungkin ada di bawah
/var/lib/php5
jika Anda menggunakan versi php yang lebih lama.Buat kembali dengan izin berikut
Izin secara default untuk direktori pada Debian menunjukkan
drwx-wx-wt
(1733)sumber
rm -rf /var/lib/php/sessions/*
mungkin akan menjadi perintah yang lebih baik - itu tidak akan menghapus direktori sesi, hanya isinya ... Maka Anda tidak perlu khawatir tentang membuatnya kembaliKami mengalami ini di akun HostGator (yang membatasi inode pada semua hosting mereka) setelah serangan spam. Itu meninggalkan sejumlah besar catatan antrian di /root/.cpanel/comet. Jika ini terjadi dan Anda tidak memiliki inode gratis, Anda dapat menjalankan utilitas cpanel ini melalui shell:
sumber
Anda dapat menggunakan RSYNC untuk HAPUS sejumlah besar file
Buat folder blanktest dengan 0 file di dalamnya dan perintah akan menyinkronkan folder pengujian Anda dengan sejumlah besar file (Saya telah menghapus hampir 5 juta file menggunakan metode ini).
Terima kasih kepada http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux
sumber
rm *
banyak file, karena memperluas wildcard dan melewati / memproses setiap argumen, tetapi bolehrm test/
saja menghapustest/
folder yang berisi banyak file.eaccelerator dapat menyebabkan masalah karena mengkompilasi PHP ke dalam blok ... Saya punya masalah dengan server Amazon AWS di situs dengan beban berat. Bebaskan Inode dengan menghapus cache eaccelerator di / var / cache / eaccelerator jika Anda terus mengalami masalah.
(atau apa pun dir cache Anda)
sumber
Kami menghadapi masalah serupa baru-baru ini, Jika suatu proses merujuk pada file yang dihapus, Inode tidak akan dirilis, jadi Anda perlu memeriksa lsof /, dan membunuh / memulai ulang proses akan merilis inode.
Koreksi saya jika saya salah di sini.
sumber
Seperti yang dikatakan sebelumnya, sistem file mungkin kehabisan inode, jika ada banyak file kecil. Saya telah menyediakan beberapa cara untuk menemukan direktori yang berisi sebagian besar file di sini .
sumber
Jawaban terlambat: Dalam kasus saya, ini adalah file sesi saya di bawah
yang menggunakan Inodes.
Saya bahkan tidak dapat membuka crontab saya atau membuat direktori baru apalagi memicu operasi penghapusan. Karena saya menggunakan PHP, kami memiliki panduan ini tempat saya menyalin kode dari contoh 1 dan mengatur cronjob untuk menjalankan bagian kode itu.
Jika Anda bertanya-tanya bagaimana saya bisa membuka crontab saya, maka yah, saya menghapus beberapa sesi secara manual melalui CLI.
Semoga ini membantu!
sumber
Anda bisa melihat info ini
sumber
Banyak jawaban untuk yang ini sejauh ini dan semua yang di atas tampak konkret. Saya pikir Anda akan aman dengan menggunakan
stat
saat Anda melanjutkan, tetapi OS tergantung, Anda mungkin mendapatkan beberapa kesalahan inode merayap pada Anda. Jadi menerapkanstat
fungsi panggilan Anda sendiri menggunakan64bit
untuk menghindari masalah overflow tampaknya cukup kompatibel.sumber
Jika Anda menggunakan buruh pelabuhan, hapus semua gambar. Mereka menggunakan banyak ruang ....
Hentikan semua kontainer
Hapus semua kontainer
Hapus semua gambar
Bekerja untukku
sumber