Вопрос

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

Это было полезно?

Решение

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

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

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

Кроме того, вы не можете изменить количество inodes в файловой системе Ext3 или Ext4 без повторного создания или Hex-редактирования его. Файловые файлы Reiser динамичны, поэтому у вас никогда не будет проблемой с ними.

Другие советы

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

$ 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

Я нашел решение моей проблемы на странице Meke2fs Man:

-Я inode-размер

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

Maximun вы сможете установить, дается вашим блоком.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top