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

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

23 голосов
/ 01 сентября 2010

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

Ответы [ 3 ]

28 голосов
/ 24 марта 2011

Байтами по умолчанию на индекс является обычно 16384, что является значением по умолчанию inode_ratio в /etc/mke2fs.conf (оно читается до создания файловой системы).Если у вас заканчиваются inode, вы можете попробовать, например:

mkfs.ext4 -i 8192 /dev/mapper/main-var2

Другой параметр, который влияет на это, - -T, обычно -T news, который дополнительно уменьшает его до 4096.

Кроме того, вы не можете изменить количество inode в файловой системе ext3 или ext4 без повторного создания или шестнадцатеричного редактирования.Файловые системы Reiser являются динамическими, поэтому у вас никогда не будет с ними проблем.

13 голосов
/ 26 мая 2015

Вы можете узнать приблизительное соотношение инодов, разделив размер доступного пространства на количество доступных инодов.Например:

$ 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
0 голосов
/ 13 сентября 2010

Я нашел решение своей проблемы на справочной странице mke2fs:

-I размер inode

Укажите размер каждого inode в байтах.mke2fs по умолчанию создает 256-байтовые inode.В ядрах после 2.6.10 и некоторых ядрах более ранних производителей можно использовать inode размером более 128 байт для хранения расширенных атрибутов для повышения производительности. Значение размера inode должно быть на 2 больше или равно 128 .Чем больше размер inode, тем больше места будет занимать таблица inode, что уменьшает полезное пространство в файловой системе и может также негативно повлиять на производительность.Расширенные атрибуты, хранящиеся в больших inode, не видны в старых ядрах, и такие файловые системы вообще не будут монтироваться с ядрами 2.4.Невозможно изменить это значение после создания файловой системы.

Максимальное значение, которое вы сможете установить, определяется размером вашего блока.

sudo tune2fs -l /dev/sda5 | grep "Block size"
Block size:               4096

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

...