Я вважаю, що у вас є проблема не у заповненні розділів inode, а у нестачі кількості inode у файловій системі. ext4 резервує введення статично при створенні файлової системи, але ви можете встановити число з параметрамиmkfs.ext4
:
-i bytes-per-inode
Задайте співвідношення байтів / inode. mke2fs створює inode для кожного байта на кожен байт простору на диску. Чим більше співвідношення байтів на ввід, тим менше буде створено кількість входів.
-N число-входів
Переосмислює обчислення за замовчуванням кількості входів, які слід зарезервувати для файлової системи (що базується на кількості блоків та байті на коефіцієнт введення). Це дозволяє користувачеві безпосередньо вказати кількість потрібних входів.
У посібнику чітко зазначено, що байт на коефіцієнт inode не може бути змінено після створення FS, але загальне число буде масштабуватися, щоб відповідати співвідношенню, якщо змінити FS.
Ви також можете встановити розмір кожного входу. За замовчуванням 256 "байтів" файлових систем, але їх можна зменшити до 128 (за замовчуванням для "малих" файлових систем). Додатковий простір використовується для зберігання розширених атрибутів (наприклад, мітки SELinux), тому якщо вони вам не потрібні, слід безпечно зменшити розмір до мінімуму.
-I inode-size
Вкажіть розмір кожної inode в байтах. Значення розміру inode має бути потужністю на 2 більше або дорівнює 128.
df -i
має відображати кількість виділених та використаних вузлів. За допомогою параметрів за замовчуванням один розділ об'ємом 30 ГБ, який я переглянув, мав один вклад на кожні 16 кБ, але якщо ваші файли дуже малі, ви можете встановити, скажімо, -i 4096
один уклад для кожного блоку даних у системі.
Якщо ваших файлів менше 4096, можливо, ви також захочете зменшити розмір блоку файлової системи, оскільки для всіх звичайних файлів у будь-якому разі буде потрібен один повний блок даних. (Тобто, на ext4. Я не знаю, чи інші поточні файлові системи роблять пакування невеликих файлів.)
-b block-size
Вкажіть розмір блоків у байтах. Дійсні значення розміру блоку - 1024, 2048 та 4096 байт на блок. У разі відсутності розмір блоку евристично визначається розміром файлової системи та очікуваним використанням файлової системи (див. Опцію -T).
mkfs.ext4
також є -T <type>
варіант, який може бути використаний як скорочення для деяких або всіх цих. Налаштування є в /etc/mke2fs.conf
, що на моєму Debian робить, наприклад, mkfs.ext4 -T small
еквівалентним
mkfs.ext4 -b 1024 -I 128 -i 4096
Що може бути не поганим набором варіантів для безлічі невеликих файлів (і без xattrs.)
Якщо ваші файли навіть менші, ніж один кБ, файлова система може виявитися не найкращим способом збереження даних, але, можливо, слід враховувати щось на зразок бази даних або конкретної програми.
mkfs.ext4 -t news
найкращими результатами. Також я б запропонував тестувати - створити (наприклад, на lvm або пристрої циклу) кожен із файлів файлів по черзі та розпочати копіювання реальних файлів до нього, поки він не заповниться. Коли це заповниться, виконайтеdf -i
(абоfind | wc -l
), щоб знайти, який з них вдалося зберегти більшість ваших файлів - таким чином ви точно знатимете.