Сколько байт на иноды?

Мне нужно создать очень большое количество файлов, которые не очень большие (например, 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

Надеюсь, что это может помочь....

Другие вопросы по тегам