Saya punya masalah (baru bagi saya) minggu lalu. Saya memiliki sistem file ext4 (Fedora 15). Aplikasi yang berjalan di server tiba-tiba berhenti. Saya tidak dapat menemukan masalah pada tampilan pertama.
df
menunjukkan 50% ruang yang tersedia. Setelah mencari sekitar satu jam, saya melihat posting forum di mana orang itu digunakan df -i
. Opsi mencari penggunaan inode. Sistem itu keluar dari inode, masalah sederhana yang tidak saya sadari. Partisi hanya memiliki 3,2M inode.
Sekarang, pertanyaan saya adalah: Dapatkah saya membuat sistem memiliki lebih banyak inode? Haruskah / dapatkah diatur ketika memformat disk? Dengan inode 3,2M, berapa banyak file yang bisa saya miliki?
Jawaban:
Tampaknya Anda memiliki lebih banyak file daripada harapan normal.
Saya tidak tahu apakah ada solusi untuk mengubah ukuran tabel inode secara dinamis. Saya khawatir Anda perlu mencadangkan data Anda, dan membuat sistem file baru, dan memulihkan data Anda.
Untuk membuat sistem file baru dengan tabel inode yang sangat besar, Anda perlu menggunakan opsi '-N' dari mke2fs (8).
Saya akan merekomendasikan untuk menggunakan opsi '-n' terlebih dahulu (yang tidak membuat fs, tetapi tampilkan informasi use-ful) sehingga Anda bisa mendapatkan perkiraan jumlah inode. Kemudian jika perlu, gunakan '-N' untuk membuat sistem file Anda dengan nomor inode tertentu.
sumber
mke2fs -i
untuk menentukan jumlah inode. Dokumentasinya menunjukkan bahwa "tidak mungkin untuk memperluas jumlah inode pada sistem file setelah dibuat".-i
Opsi menentukan ukuran inode, bukan berapa banyak. The-N
pilihan menetapkan inode nomor.Sebagai solusi lain saya dapat menyarankan mempertimbangkan mengemas koleksi besar file ke dalam
tar
arsip (!) Yang tidak terkompresi , dan kemudian gunakanarchivemount
untuk memasangnya sebagai sistem file. Arsip tar lebih baik untuk dibagikan daripada gambar sistem file dan memberikan kinerja yang sama saat mencadangkan ke cloud atau penyimpanan lain.Jika koleksi seharusnya hanya-baca,
squashfs
mungkin merupakan opsi, tetapi membutuhkan opsi tertentu yang diaktifkan di kernel, danxz
kompresi tersedia untuk tar juga dengan kinerja yang sama.sumber
Dengan 3,2 juta inode, Anda dapat memiliki 3,2 juta file dan direktori, total (tetapi banyak hardlink ke file hanya menggunakan satu inode).
Ya, itu dapat diatur saat membuat sistem file pada partisi. Opsi
-T usage-type
,,-N number-of-inodes
atau-i bytes-per-inode
semua dapat mengatur jumlah inode. Saya biasanya menggunakan-i
, setelah membandingkan outputdu -s
danfind | wc -l
untuk koleksi file yang serupa dan memungkinkan untuk beberapa kelonggaran.Tidak, itu tidak dapat diubah di tempat pada sistem file yang ada. Namun:
resize2fs
untuk memperluas sistem file. Ini menambahkan lebih banyak inode sebanding dengan ruang yang ditambahkan, secara kasar. Jika Anda ingin menghindari kehabisan inode sebelum ruang dengan asumsi bahwa file masa depan rata-rata memiliki ukuran yang sama, tetapkan persentase blok cadangan yang cukup tinggi dengan menggunakantune2fs -m
.sumber
Saya punya solusi alternatif untuk situasi ini. Katakanlah Anda memiliki 1000 inode dalam partisi 10G. Tetapi karena batas inode Anda tidak seharusnya menggunakan semua ruang partisi . Tetapi dalam solusi ini Anda akan dapat menggunakan sisa ruang partisi tanpa memformatnya .
untuk pemasangan permanen
sumber
$
) untuk membedakan dengan jelas antara perintah dan output (jika hanya perintah, prompt biasanya ditinggalkan). Saya juga mengubah SHOUTING dalam penekanan fase tebal, yang saya pikir Anda maksudkan. Anda dapat membatalkan perubahan jika saya salah mengartikan halBaru-baru ini mengalami masalah ini saat menggunakan pemutakhiran apt atau aptitude.
Perintah yang dikeluarkan:
Sebagian besar file terungkap dalam subfolder untuk beberapa versi kernel dalam:
Menghapus subfolder dan masalah inode itu diperbaiki.
sumber
du
perintah. Penggunaan adalah untuk root dari sistem file dalam contoh di atas, hanya melihat ruang. Keluaran disalurkan untuk mengurutkan untuk menunjukkan direktori mana yang berisi sebagian besar file. Tidak ada perhitungan yang dilakukan dalam contoh di atas untuk file, bagian 'berapa banyak file' dari pertanyaan Anda. Sumber kernel adalah penyebab yang ditunjukkan dalamdu
output; misalnya, banyak file kecil, sub-folder dari kompilasi sebelumnya, hal yang sangat cocok untuk dihapus untuk membebaskan inode. Masih ada manual, review manusia daridu
output,/usr/src/linux-headers
kemudian jelas.coba
du -s --inodes * 2>/dev/null |sort -g
cd ke dir terakhir dalam output dan ulangi.Pengungkapan Lengkap: tidak semua
--inodes
flag dukungan OS untuk perintah du (OS Mac saya tidak) tetapi banyak yang menggunakan OS Linux.sumber