Linux - Bantuan, saya kehabisan inode!

16

Saya memiliki sistem file yang memiliki banyak file kecil. Saat ini sekitar 80% dari inode digunakan (saya periksa dengan df -i), namun hanya 60% dari ruang disk yang digunakan. Bagaimana saya bisa 'menambah' jumlah inode? Jika itu hanya ruang disk, saya tahu bahwa saya hanya bisa menambah ukuran disk (disk ini ada di LVM). Jika saya menambah ukuran disk, apakah itu akan membuat saya memiliki lebih banyak inode?

Saya bersedia menumbuhkan sistem file disk ini, jika itu membantu.

Rory
sumber

Jawaban:

14

man mke2fs

Anda akan melihat -N untuk jumlah inode

Jadi Anda bisa menentukannya saat memformat partisi baru. Tidak begitu membantu sekarang, ya?

tune2fs, yang mengatur sistem file, tampaknya tidak memiliki cara untuk menambahkan lebih banyak inode.

Tapi mungkin ext3 atau 4 melakukan ini, dan orang lain tahu ....?

Jadi sekarang Anda memiliki opsi: cadangan, memformat ulang partisi, memulihkan.

Paul
sumber
1
ya, itu bagus, tetapi bukan karena itu reiserfs, tetapi karena itu mendukung alokasi inode dinamis (didukung oleh setiap filesystem baru yang sopan)
1
Reiser sangat baik untuk banyak file kecil. Saya akan pergi dengan itu.
Xorlev
Namun saya akan memastikan Anda memiliki cadangan saat menggunakan Reiser. Saya (saya sendiri) dan lainnya kehilangan data karena reiserFS pada tahun-tahun sebelumnya. Saya tidak percaya lagi sejak itu.
Anony-Mousse -Reinstate Monica
ext3 sepertinya tidak punya cara untuk itu
kagali-san
15

Untuk menjawab pertanyaan awal, meskipun mungkin terlambat untuk si penanya - ya, meningkatkan EXT2 / 3 pada LVM2 juga akan meningkatkan batas inode.

Baru saja partisi ukuran 1G dengan batas inode 65k. Setelah

lvextend -L+1G /dev/vg/var
umount /var
resize2fs /dev/vg/var
mount /var

... batas inode saya sekarang 128k.

Aleš Krajník
sumber
1
Wow, saya hampir putus asa, tetapi menemukan jawaban Anda dan memutuskan untuk mencoba, dan itu berhasil. Ini pastinya jawaban yang diterima! Berfungsi untuk LVM dan juga untuk mesin virtual :)
vadipp
12

Jika Anda mengetahui bahwa file kecil akan memakan ruang disk Anda, Anda harus menggunakan FS dengan alokasi inode dinamis, seperti ReiserFS atau FS modern baru (XFS, JFS) alih-alih EXT2 / 3/4 (yang saya anggap Anda gunakan , kamu tidak mengatakan itu).

Migrasi sistem file mungkin merupakan pilihan yang baik dalam situasi Anda.

Komunitas
sumber
1
Jika Anda tahu bahwa file kecil akan memakan ruang disk Anda, Anda harus melakukan beberapa penyetelan . Setiap sistem file memiliki pro dan kontra.
Franklin Piat
3

Sebagai pengganti sementara, pasang sistem file baru, dan cp / rm / ln-s beberapa hierarki fs Anda di sana. Sekarang Anda memiliki beberapa inode cadangan! Anda tidak dapat memindahkan file di antara dua fses, jadi berhati-hatilah dalam memecahkan hal-hal yang perlu dilakukan, tetapi untuk banyak aplikasi ini bisa transparan.

Kemudian buat fs baru, sesuai saran Paul, dan bermigrasi ke sana.

Charles Stewart
sumber
1
Tentu saja Anda dapat mv file antara dua filesystem - mv secara efektif gula semantik untuk cp + rm. Anda tidak dapat menghubungkan antara dua sistem file. Apakah Anda bermaksud sesuatu yang lain?
Daniel Lawson
@Aniel: Maksud saya rename () system call, dan saya pikir itu adalah praktik ceroboh untuk menggunakan mv sebagai gula untuk cp / rm, karena masalah dengan semantik di sekitar symlink. Saya harus mengedit jawaban ini - ada beberapa tempat yang tidak begitu indah.
Charles Stewart
2

Ext4 menderita masalah yang sama, jika Anda membuat partisi kecil dan memiliki banyak file kecil Anda akan kehabisan inode, dan jika Anda memiliki flex_bgfitur yang tidak dapat Anda gunakan tune2fsuntuk menambah inode.

Secara pribadi saya akan menggunakan ext4 untuk versi rieserfs apa pun, lakukan saja yang berikut saat memformat:

mkfs.ext4 -I 512 /dev/foo
tune2fs -i0 -c0 -o journal_data_writeback /dev/foo

Memformat dengan cara ini akan memberi Anda 33160 inode pada partisi boot 512M.

Saya mengatakan ini sebagai seseorang yang menggunakan reiserfs selama bertahun-tahun, dukungan kernel tidak sebagus ext *, dan filesystem terfragmentasi dari waktu ke waktu dan menjadi lambat.

Bunuh diri
sumber
-1

Gunakan resiserfs atau fs lainnya tanpa batasan inode. Khusus terkait dengan file log, mungkin Anda bisa mengemas beberapa ton file kecil yang tidak digunakan ke dalam satu file tar yang lebih besar untuk membebaskan sejumlah besar inode =)

$ find /path -iname "pattern" | xargs tar rvf output_file.tar
adrolmar
sumber