У меня была проблема (новая для меня) на прошлой неделе. У меня есть файловая система ext4 (Fedora 15). Приложение, которое запускается на сервере, внезапно остановилось. Я не мог найти проблему с первого взгляда.
df
показал 50% доступного пространства. После поисков около часа я увидел сообщение на форуме, где парень использовал df -i
. Опция ищет использование inode. В системе не было inode, простая проблема, которую я не осознавал. В разделе было только 3.2M inode.
Теперь мои вопросы: Могу ли я сделать так, чтобы в системе было больше инодов? Должен / может ли он быть установлен при форматировании диска? Сколько у меня может быть файлов с инодами 3.2M?
Ответы:
Кажется, что у вас гораздо больше файлов, чем обычно.
Я не знаю, есть ли решение для динамического изменения размера таблицы inode. Я боюсь, что вам нужно сделать резервную копию ваших данных, создать новую файловую систему и восстановить ваши данные.
Чтобы создать новую файловую систему с такой огромной таблицей inode, вам нужно использовать опцию '-N' в mke2fs (8).
Я бы рекомендовал сначала использовать опцию -n (которая не создает fs, но отображает полезную информацию), чтобы вы могли получить приблизительное число inode. Затем, если вам нужно, используйте «-N» для создания вашей файловой системы с определенными номерами инодов.
источник
mke2fs -i
чтобы указать количество inode. Его документация указывает, что «невозможно увеличить число inode в файловой системе после ее создания».-i
параметрах указывается размер индекса , а не его количество.-N
Опция задает номер дескрипторы.В качестве другого обходного пути я мог бы предложить упаковывать огромные коллекции файлов в несжатый (!)
tar
Архив, а затем использовать егоarchivemount
для монтирования в качестве файловой системы. Архив tar лучше подходит для общего доступа, чем образ файловой системы, и обеспечивает аналогичную производительность при резервном копировании в облако или другое хранилище.Если предполагается, что коллекция доступна только для чтения, это
squashfs
может быть опция, но она требует определенных опций, включенных в ядре, иxz
сжатие доступно и для tar с такой же производительностью.источник
С 3,2 миллионами inode вы можете иметь 3,2 миллиона файлов и каталогов, всего (но несколько жестких ссылок на файл используют только один inode).
Да, это можно установить при создании файловой системы на разделе. Опции
-T usage-type
,-N number-of-inodes
или-i bytes-per-inode
все могут установить количество inode. Я обычно использую-i
, после сравнения выходных данныхdu -s
иfind | wc -l
для аналогичной коллекции файлов и учитывая некоторую слабость.Нет, его нельзя изменить на месте в существующей файловой системе. Тем не мение:
resize2fs
для расширения файловой системы. Это добавляет больше inode пропорционально добавленному пространству, примерно. Если вы хотите избежать исчерпания inode-ов перед пространством, предполагая, что будущие файлы в среднем имеют примерно одинаковый размер, установите достаточно высокий процент зарезервированных блоков, используяtune2fs -m
.источник
У меня есть альтернативные решения для этой ситуации. Допустим, у вас есть 1000 inode в разделе 10G. Но из-за ограничения inode вы не должны использовать все пространство раздела . Но в этих решениях вы сможете использовать оставшееся пространство раздела без его форматирования .
для постоянного монтажа
источник
$
), чтобы четко различать команды и выходные данные (если они были только командой, подсказка обычно пропускается). Я также изменил SHOUTING в выделении жирным шрифтом, что, как я думаю, вы и хотели. Вы можете откатить изменения, если я исказил вещиНедавно столкнулся с этой проблемой при использовании apt или aptitude upgrade.
Выданная команда:
Выявлено, что большинство файлов были в подпапках для нескольких версий ядра:
Удалил эти подпапки и проблема с inode была исправлена.
источник
du
команды. Использование для корня файловой системы в приведенном выше примере, глядя только на пространство. Выходные данные передаются по конвейеру, чтобы показать, какие каталоги содержат больше всего файлов. В приведенном выше примере для файлов нет подсчета, часть вашего вопроса «сколько файлов». Исходники ядра были виновником, показанным вdu
выводе все же; например, множество небольших файлов, подпапок из прошлых компиляций, именно то, что идеально подходит для удаления, чтобы освободить inode. Там до сих пор остается руководство, человеческий обзорdu
результатов,/usr/src/linux-headers
был тогда очевиден.попробуйте
du -s --inodes * 2>/dev/null |sort -g
компакт-диск в последний каталог в выходе и повторите.Полное раскрытие: не все
--inodes
флаги поддержки ОС для команды du (моя Mac OS нет), но есть во многих ОС Linux.источник