Ubuntu 12.04 Ext4 ext4_dx_add_entry:2006: Индекс каталога переполнен!

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

У меня на некоторых серверах возникает это предупреждение, у меня есть каталог с миллионами (примерно 20) файлов, но согласно документации ext4 это не должно быть проблемой.

Есть идеи, как это может повлиять на мои системы? Я в опасности потерять файлы? Есть ли какая-то конфигурация, чтобы остановить такое поведение?

[1130768.836378] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!
[1130768.836558] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!
[1130768.836739] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!
[1130768.836914] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!
[1130769.881446] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!
[1130769.881668] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!
[1130769.881841] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!
[1130769.881969] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!
[1130769.882084] Предупреждение EXT4-fs (устройство dm-0): ext4_dx_add_entry:2006: Индекс каталога полон!

Результат df -i

Файловая система                             Индексы    Использовано    Свободно    Использовано%   Смонтировано на
/dev/mapper/INTEGRASERVER02--vg-root 72179712 11081503 61098209   16% /
none                                  2049034        2  2049032    1% /sys/fs/cgroup
udev                                  2046225     1252  2044973    1% /dev
tmpfs                                 2049034     1237  2047797    1% /run
none                                  2049034        2  2049032    1% /run/lock
none                                  2049034        1  2049033    1% /run/shm
none                                  2049034        2  2049032    1% /run/user
/dev/sda1                               62248      298    61950    1% /boot

Каждое сообщение — это неудача при добавлении файла в каталог.

Официального ограничения на количество записей файлов в каталоге ext4 нет, но есть 2 статьи, описывающие оригинальный дизайн (начатый в ext2 в 2001 году), в которых говорится следующее, и они все так же актуальны для ext4:

Особенности, найденные в Linux 2.6:

двухуровневых индексов достаточно для поддержки более 16 миллионов
52-символьных
имен файлов.

Индекс каталога для Ext2

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

Если вы часто создаете и удаляете файлы в каталоге, то, похоже, может происходить потеря пространства из-за фрагментации в строках имен файлов, которую вы можете восстановить, выполнив (на размонтированной файловой системе):

fsck -D /dev/...

Смотрите man fsck.ext4:

-D Оптимизировать каталоги в файловой системе. Эта опция заставляет e2fsck
пытаться оптимизировать все каталоги, либо переиндексируя их, если
файловая система поддерживает индексирование каталогов, либо сортируя и
сжимая каталоги для меньших каталогов, либо для файловых систем
с традиционными линейными каталогами.

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

Сигнал о предупреждении "ext4_dx_add_entry:2006: Directory index full!" на ваших серверах указывает на проблемы с обработкой директории, содержащей миллионы файлов. Давайте подробно разберем, что это означает и как можно улучшить ситуацию.

Понимание проблемы

Причины появления предупреждения

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

Влияние на систему

  • Потеря данных: Если вы продолжаете пытаться добавлять файлы в директорию при заполненном индексе, это может привести к ошибкам и потенциальной потере данных, так как новые записи могут не добавляться корректно.
  • Замедление производительности: Заполнение индексного каталога может вызвать замедление операций ввода-вывода из-за постоянных попыток добавления файлов.

Анализ состояния файловой системы

На основе вывода команды df -i, у вас достаточно свободных inode (16% использовано, 61098209 свободно). Это указывает на то, что проблема не связана с исчерпанием inode, что подтверждает, что её источник скорее заключается в ограничениях индексирования.

Рекомендуемые действия

  1. Оптимизация директории:

    • Вы можете попытаться оптимизировать директорию, используя команду fsck с параметром -D, как указано в задании. Примените эту команду на размонтированной файловой системе:
      fsck -D /dev/имя_устройства
    • Это позволит переработать индекс и, возможно, освободить место для новых записей.
  2. Перемещение/Разделение файлов:

    • Рассмотрите возможность распределения файлов по нескольким подкаталогам. Например, вместо одной директории с 20 миллионами файлов создайте иерархию каталогов, что сократит количество объектов в каждом отдельном каталоге.
  3. Мониторинг файла и удаление:

    • Если это возможно для вашего приложения, проанализируйте частоту создания и удаления файлов. Убедитесь, что в каталоге не происходит чрезмерного изменения, что может способствовать фрагментации и потере производительности.
  4. Рассмотрение других файловых систем:

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

Заключение

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

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

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