У меня есть файловая система, в которой много маленьких файлов. В настоящее время используется около 80% инодов (я проверял df -i
), однако используется только 60% дискового пространства. Как я могу «увеличить» количество индексных дескрипторов? Если бы это было просто дисковое пространство, я бы мог просто увеличить размер диска (этот диск находится на LVM). Если я увеличу размер диска, у меня будет больше inodes?
Я хочу расширить файловую систему, на которой находится этот диск, если это поможет.
Чтобы ответить на исходный вопрос, даже если для спрашивающего, вероятно, уже поздно - да, увеличение EXT2 / 3 на LVM2 также увеличит лимит inodes.
Только что был раздел размером 1G с ограничением 65k inodes. После
lvextend -L+1G /dev/vg/var
umount /var
resize2fs /dev/vg/var
mount /var
... мой предел inodes теперь 128k.
человек mke2fs
Вы увидите -N для количества inodes
Таким образом, вы можете указать его при форматировании нового раздела. Не очень полезно сейчас, да?
tune2fs, который настраивает файловую систему, похоже, не имеет возможности добавить дополнительные inodes.
Но может ext3 или 4 это делает, а еще кто знает ....?
Итак, теперь у вас есть возможность: резервное копирование, переформатирование раздела, восстановление.
Если вы знали, что небольшие файлы будут занимать ваше дисковое пространство, вам следовало использовать FS с динамическим распределением inode, например ReiserFS или любую новую современную FS (XFS, JFS) вместо EXT2 / 3/4 (которые, как я полагаю, вы используете -А вы не сказали что).
Перенос файловой системы, вероятно, будет хорошим выбором в вашей ситуации.
В качестве временного решения смонтируйте новую файловую систему и cp / rm / ln-s некоторые из вашей иерархии fs. Теперь у вас есть несколько запасных инодов! Вы не можете использовать mv-файлы между двумя fses, поэтому остерегайтесь ломать вещи, которые должны это сделать, но для многих приложений это может быть прозрачным.
Затем создайте новую fs по совету Пола и перейдите на нее.
Ext4 страдает той же проблемой, если вы создаете небольшой раздел и имеете тонну небольших файлов, у вас закончатся inodes, а если у вас есть flex_bg
в функциях, которые вы не можете использовать tune2fs
увеличить inodes.
Лично я бы предпочел ext4 любой версии rieserfs, просто сделайте следующее при форматировании:
mkfs.ext4 -I 512 /dev/foo
tune2fs -i0 -c0 -o journal_data_writeback /dev/foo
Форматирование таким образом даст вам 33160 инодов на загрузочном разделе размером 512 МБ.
Я говорю это как человек, который годами использовал reiserfs, поддержка ядра не так хороша, как ext *, а файловая система со временем фрагментируется и становится медленной.
Используйте resiserfs или любые другие fs без ограничений inode. В частности, что касается файлов журналов, возможно, вы могли бы упаковать несколько тонн небольших неиспользуемых файлов в один более крупный tar-файл, чтобы освободить значительное количество inodes =)
$ find /path -iname "pattern" | xargs tar rvf output_file.tar