Сколько байт на иноды?
Мне нужно создать очень большое количество файлов, которые не очень большие (например, 4 КБ,8 КБ). Это не возможно на моем компьютере, потому что он принимает все inode до 100%, и я не могу создать больше файлов:
$ df -i /dev/sda5
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda5 54362112 36381206 17980906 67% /scratch
(Я начал удалять файлы, поэтому сейчас это 67%)
Количество байтов на узлы в моей файловой системе составляет 256 (ext4)
$ sudo tune2fs -l /dev/sda5 | grep Inode
Inode count: 54362112
Inodes per group: 8192
Inode blocks per group: 512
Inode size: 256
Интересно, возможно ли установить это значение очень низким даже ниже 128(во время переформатирования). Если да, какое значение я должен использовать? Спасибо
3 ответа
Байтами по умолчанию на индекс является обычно 16384, что по умолчанию inode_ratio
в /etc/mke2fs.conf
(это читается до создания файловой системы). Если у вас заканчиваются inode, вы можете попробовать, например:
mkfs.ext4 -i 8192 /dev/mapper/main-var2
Еще один вариант, который влияет на это -T
как правило, -T news
что дополнительно уменьшает его до 4096.
Кроме того, вы не можете изменить число inode в файловой системе ext3 или ext4 без повторного создания или шестнадцатеричного редактирования. Файловые системы Reiser являются динамическими, поэтому у вас никогда не будет с ними проблем.
Вы можете узнать приблизительное соотношение инодов, разделив размер доступного пространства на количество доступных инодов. Например:
$ sudo tune2fs -l /dev/sda1 | awk -F: ' \
/^Block count:/ { blocks = $2 } \
/^Inode count:/ { inodes = $2 } \
/^Block size:/ { block_size = $2 } \
END { blocks_per_inode = blocks/inodes; \
print "blocks per inode:\t", blocks_per_inode, \
"\nbytes per inode:\t", blocks_per_inode * block_size }'
blocks per inode: 3.99759
bytes per inode: 16374.1
Я нашел решение моей проблемы на странице справки mke2fs:
-Я размер inode
Укажите размер каждого inode в байтах. mke2fs по умолчанию создает 256-байтовые inode. В ядрах после 2.6.10 и некоторых ядрах более ранних производителей можно использовать иноды размером более 128 байт для хранения расширенных атрибутов для повышения производительности. Значение размера inode должно быть на 2 больше или равно 128. Чем больше размер inode, тем больше места будет занимать таблица inode, что уменьшает полезное пространство в файловой системе и может также негативно повлиять на производительность. Расширенные атрибуты, хранящиеся в больших inode, не видны в старых ядрах, и такие файловые системы вообще не будут монтироваться с ядрами 2.4. Невозможно изменить это значение после создания файловой системы.
Максимальное значение, которое вы сможете установить, определяется размером вашего блока.
sudo tune2fs -l /dev/sda5 | grep "Block size"
Block size: 4096
Надеюсь, что это может помочь....