Там какие-либо недостатки являются к созданию ext4 файловыми системами с 2^32-1 inodes?
У меня есть диск на 1 ТБ, и я хотел бы сохранить 800 миллионов в 1,5 миллиарда маленьких файлов на нем. Кажется, что макс. являются 4 миллиарда, таким образом, я задаюсь вопросом, мог ли я просто установить его на макс. при создании фс, или я должен найти некоторое другое решение.
Согласно подобным вопросам на Переполнении стека и Unix & Linux (см. ниже) это - плохая идея истратить количество inodes в ext4 файловой системе.
Лучше используйте другую файловую систему или разделите Ваш диск на несколько файловых систем.
Подводить итог:
inode занимает 256 байтов. Это может быть настроено к 128, но даже при том, что:
2³² inodes × 256 bytes each = 1 TB
При создании ext4 файловой системы можно указать тип использования, как определено в /etc/mke2fs.conf
:
mkfs.ext4 -T usage-type /dev/something
Для того, чтобы хранить много маленьких файлов тип small
мог бы использоваться:
small = {
blocksize = 1024
inode_size = 128
inode_ratio = 4096
}
Это означает: для каждых 4 096 байтов дискового пространства (размер файловой системы) будет зарезервирован один inode, каждый из которых имеет размер 128 байтов. Команда mkfs.ext4 -T small /dev/something
таким образом создал бы 244 миллиона inodes в файловой системе на 1 ТБ, которые занимают 31 ГБ. Эти 244 миллиона файлов, по крайней мере, займут 250 ГБ (минута 1 024 байта каждый).
Для содержания 1 миллиарда inodes с маленьким местом (128 байтов), Вам были бы нужны 128 ГБ только для inodes. Если бы самый маленький blocksize (1024 согласно странице справочника mk2efs) используется, то этот 1 миллиард файлов, по крайней мере, занял бы 1 ТБ (но помнил бы, что Вы только имеете 872 ГБ в запасе из-за 128 ГБ для inodes).
Самый маленький blocksize для ext4 составляет 1 024 байта. Следовательно, Вы не можете сохранить больше чем 1 ТБ / 1024 = 1 миллиард файлов, и бессмысленно иметь больше inodes.
Как правило ползунка inode_ratio
не должно быть меньшим, чем blocksize
потому что Вы не можете (легко) хранить больше чем один файл в одном блоке.
Возможно сохранить первые 60 байтов файла непосредственно в inode, если файловая система настроена тот путь. В этом случае файл не занял бы (регулярный) блок; читайте о таких встроенных данных здесь, но также и рассмотрите inode размер.
От комментария до вопроса U&L:
Слишком много inodes имеют глубокую стоимость наверняка, они занимают место сами и полагают мне, что fsck производительность мертва серьезный. Мы говорим практически экспоненциальное замедление, как 30 секунд по сравнению с 2 днями..., и это - связанный ввод-вывод. Не говоря уже о медленных холмах списка файлов, индексируя... и т.д.
Ссылки: