Невозможно создать файловую систему ext4 с размером блока 1024.

Вопрос или проблема

Я пытаюсь создать новый сервер для сервиса, который сохраняет данные в очень маленьких файлах размером максимум 1 кб на файловой системе. Проблема в том, что мы используем размер блока 4 кб, и мы тратим много пространства впустую, поэтому мы планируем изменить его на новую файловую систему с максимальным размером блока 1 кб.

Проблема в разделе. Он составляет около 5,7 ТБ, когда я создаю команду mkfs.ext4 с размером блока 1024, она выдает ошибку:

/dev/sda5: Невозможно создать файловую систему с заданным количеством индекций

Но если я изменю на 2048, все работает прекрасно.

Я пытался запустить с флагом 64bit, e2fsprogs находятся на последней версии, 1.42 что-то. Также я пытался установить размер индекса от 1024 до 16365, но безуспешно.

У меня заканчиваются идеи, переход на другую файловую систему может быть вариантом, но я видел много тестов производительности, и XFS или ZFS не работают так же хорошо, как ext4 на маленьких файлах.

Есть идеи?

Работает под CentOS 2.6.32-431.20.3.el6.x86_64

В конце концов, мы выбрали XFS, у него нет этой проблемы с размером блока, и теперь ФС работает на блоке размером 1 Кб.

Согласно ядру Linux число секторов должно быть целой степенью двойки. Поэтому вам, возможно, потребуется изменить размер сектора, чтобы он соответствовал размеру блока.

Ответ или решение

Форматирование файловой системы с использованием определенного размера блока — это важный шаг в оптимизации серверного пространства и производительности при работе с маленькими файлами. В вашем случае, вы столкнулись с необходимостью создать файловую систему ext4 с блоками размером 1 КБ на разделе объемом около 5,7 ТБ, однако возникли проблемы с созданием необходимого количества инодов.

Теория (Theory):

Файловая система ext4 обладает рядом характеристик, которые могут стать ограничениями при попытке изменить размер блока. Основная проблема заключается в том, что файловая система с меньшим размером блока требует больше инодов. Инод — это структура данных, которая описывает объект файловой системы, такой как файл или папка. Поскольку ext4 была разработана с учетом определенных предустановленных ограничений, количество инодов связано с размером блока, и при уменьшении этого размера возникает необходимость значительного увеличения количества инодов.

По умолчанию, размер блока в ext4 равен 4096 байтам. Если вы пытаетесь уменьшить этот размер до 1024 байт при большом объеме дискового пространства (5,7 ТБ в вашем случае), количество инодов будет пропорционально увеличиваться, что может превысить допустимые пределы файловой системы. Это и является причиной ошибки, которую вы наблюдаете: «Cannot create filesystem with requested number of inodes».

Фактически, в вере e2fsprogs 1.42 ограничения на максимальное число инодов при использовании определенных размеров блока становятся очевидными. Если вы попробуете изменить inodes_ratio (соотношение количества инодов к объему файловой системы) или количество вручную, это может не помочь, учитывая пределы, заложенные в файловой системе.

Пример (Example):

Представьте себе, что вы строите архивную систему, которая будет содержать миллионы маленьких текстовых файлов, например, отсканированных страниц. Каждая страница не превышает 1 КБ. Если вы используете блоки по 4 КБ, каждое хранение использует дополнительные 3 КБ впустую. Поскольку каждая страница уникальна, вы нуждаетесь в большом количестве инодов, чтобы управлять всеми этими файлами.

Теперь, вы пытаетесь сократить потери, установив размеры блоков до 1024 байт. Но поскольку ext4 имеет ограничения на количество адресуемых блоков при уменьшении размера блока, вам необходимо адресовать больше инодов, что сам ext4 не поддерживает в вашей конфигурации.

Применение (Application):

Как вы правильно заметили, переход на другой тип файловой системы может быть оптимальным решением. Вы выбрали XFS, и ваша файловая система удачно работает с блоками в 1 КБ. Это связано с тем, что XFS имеет более гибкую модель управления метаданными и не столь жестко ограничен по количеству инодов, как ext4.

Однако если желание всё же использовать ext4 неизменно, возможно, потребуется учитывать вариант меньшего объема раздела или разбивки вашего архивного пространства на более мелкие сегменты. Вы также можете попробовать модернизированные или более современные версии initramfs или ядер Linux, которые в перспективе могут предложить улучшенное управления пространствами ext4 и превышение их старых лимитов.

Также стоит рассмотреть улучшение аппаратной составляющей, например, использование контроллеров, которые допускают большее количество секций при одинаковом размере блока, или внедрение новых технологий хранения (например, SSD-диски), которые обладают лучшей производительностью при работе с мелкими файлами.

Подводя итог, проблемы создания файловой системы ext4 с уменьшенным размером блока на больших объемах данных связаны с ограничениями текущей реализации ext4 и ее управлением инодами. Переход на XFS решает эту проблему, предлагая отличную производительность для маленьких файлов без ограничений в управлении инодами.

С вложенным пониманием проблемы и ее сути, можно эффективно и оптимально настроить файловую систему в зависимости от ваших нужд и особенностей приложения, обеспечивая баланс между производительностью и использованием пространства.

Оцените материал
Добавить комментарий

Капча загружается...