Kehabisan inode

Jawaban:

24

Jumlah inode diatur pada saat partisi diformat. Biasanya jumlah inode yang dibuat cukup untuk hampir semua tujuan; namun, jika Anda memiliki banyak file yang sangat kecil maka Anda dapat menggunakan inode sebelum disk penuh.

Anda perlu menemukan ribuan file kecil yang Anda miliki di sistem yang menggunakan inode dan menghapusnya, atau memindahkannya ke partisi yang secara khusus diatur dengan sejumlah besar inode yang tersedia. Tidak mungkin untuk mengubah jumlah inode yang tersedia di partisi setelah diformat.

Script yang ditulis oleh paxdiablo di stackoverflow mungkin cara yang mudah untuk memeriksa penggunaan file kecil berlebihan yang mungkin tidak Anda sadari. Ini dia lagi:

#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

Letakkan skrip ini di file teks ~ / bin / count_em dan kemudian jalankan perintah

chmod +x ~/bin/count_em

untuk membuatnya dieksekusi. Jika Anda harus membuat direktori ~ / bin maka direktori itu belum ada di jalur yang dapat dieksekusi, jadi cukup logout dan kembali lagi.

Untuk menjalankan program, Anda cukup mengetik

count_em

dan itu akan mencantumkan jumlah semua file dalam direktori saat ini dan subdirektori dengan direktori, dengan jumlah tertinggi yang terakhir. Sangat berguna!

fabricator4
sumber
GARIS INI> chmode + x ~ / bin / count_em sebenarnya> chmod + x ~ / bin / count_em
1
Apakah perlu untuk menghapus semua file yang dibuat pengguna, atau akan memindahkannya ke arsip tar melakukan trik?
amc
Mengarsipkan mereka adalah cara yang bagus untuk menghadapinya, itu tidak menghapus data pengguna tetapi membuat mereka sadar bahwa perilaku mereka tidak memuaskan karena mereka tidak akan dapat menggunakan file seperti sebelumnya. Kemungkinannya adalah bahwa sejumlah besar file dihasilkan oleh sesuatu yang tidak ada yang menggunakan dan mereka bisa dihapus dengan aman, tetapi itu adalah risiko.
LovesTha
Alternatif baris tunggal yang bagus untuk skrip Anda mungkinsudo du -a -d 1 --inodes . | sort -nr | head -20
Charles Green
1
Tentu saja, ini tidak berfungsi jika Anda benar-benar kehabisan inode karena ia membuat file sementara :(
Molomby
8

Anda juga dapat menampilkan daftar direktori yang diurutkan berdasarkan jumlah inode, menggunakan perintah ini: du --inodes -d 3 / | sort -n | tail

Dari sana, Anda dapat menentukan direktori mana yang akan dihapus

John
sumber
1
unrecognized option '--inodes'pada Ubuntu 14.04, fyi
Molomby
Mengapa Anda menggunakan ubundu 14.04 di 2019? Saya melihatnya memiliki coreutils 8.21 dari Feb 2013, --inodesopsi telah ditambahkan Jul 2013 lmao
ZN13
2

Saya menemukan bahwa penggunaan inode berasal dari /root/.local, dan menghapus folder itu.

xaav
sumber
2
Tidak banyak yang harus menggunakan / root /.local dan hanya ada untuk alasan kompatibilitas. Anda perlu mencari tahu apa yang sedang menulis banyak file kecil ke direktori ini.
fabricator4