Поделиться через


Общие сведения о размерах каталогов в Azure NetApp Files

При создании файла в каталоге запись добавляется в скрытый файл индекса в томе Azure NetApp Files. Этот файл индекса помогает отслеживать существующие иноды в каталоге и ускорить запросы поиска для каталогов с большим количеством файлов. При добавлении записей в этот файл размер файла увеличивается (но никогда не уменьшается) примерно в 512 байтах на запись в зависимости от длины имени файла. Более длинные имена файлов добавляют больше размера в файл. Символьные ссылки также добавляют записи в этот файл. Эта концепция называется размером каталога, который является общим элементом во всех файловых системах под управлением Linux. Размер каталога не является максимальным общим количеством файлов в одном томе Azure NetApp Files. Это определяется значениемmaxfiles.

По умолчанию при создании нового каталога используется 4 КиБ (4096 байт) или восемь 512-байтовых блоков. Размер только что созданного каталога из клиента Linux можно просмотреть с помощью команды stat.

# mkdir dirsize 
# stat dirsize 
File: ‘dirsize’ 
Size: 4096            Blocks: 8          IO Block: 32768  directory 

Размеры каталогов зависят от одного каталога и не объединяются в размерах. Например, если в томе есть 10 каталогов, каждый может приблизиться к ограничению размера каталога 320-MiB в одном томе.

Определение того, приближается ли каталог к размеру ограничения

Для каталога 320-MiB число блоков составляет 655360, при этом каждый размер блока составляет 512 байт. (То есть 320x1024x1024/512.) Это число преобразуется примерно в 4-5 миллионов файлов максимум для каталога 320-MiB. Однако фактическое число максимальных файлов может быть меньше, в зависимости от таких факторов, как количество файлов с символами, отличными от ASCII в каталоге.

В клиенте вы можете выполнить команду stat, чтобы определить, приближается ли каталог к максимальному допустимому размеру метаданных каталога (320 МБ). Если достигнуто максимальное ограничение размера для одного каталога для Azure NetApp Files, возникает ошибка No space left on device .

Для каталога размером 320 МБ число блоков составляет 655 360, при этом каждый размер блока составляет 512 байт. (т. е. 320×1024×1024/512). Это число позволяет поддерживать приблизительно 4 000 000 файлов в каталоге размером 320 МБ. Однако фактическое число максимальных файлов может быть меньше, в зависимости от таких факторов, как количество файлов с символами, отличными от ASCII в каталоге. Сведения о мониторинге maxdirsize см. в разделе "Мониторинг maxdirsize".

Рекомендации по размеру каталога

При работе с средой с высоким числом файлов рассмотрите следующие рекомендации:

  • Тома Azure NetApp Files поддерживают размеры каталогов до 320 МиБ. Это значение нельзя увеличить.
  • После того как размер каталога тома превышен, пользователи видят ошибку о нехватке места, даже если в томе есть доступное свободное пространство.
  • Для обычных томов размер каталога 320 MiB соответствует примерно 4-5 миллионам файлов в одном каталоге. Это значение зависит от длины имени файла.
  • Большие тома имеют архитектуру, отличную от обычных томов.
  • Большое количество файлов в одном каталоге может представлять проблемы с производительностью при поиске. По возможности ограничьте общий размер одного каталога до 2 МиБ (примерно 27 000 файлов) при необходимости частого поиска.
    • Если требуется больше файлов в одном каталоге, настройте ожидания производительности поиска соответствующим образом. Хотя Azure NetApp Files индексирует список файлов каталога для повышения производительности, поиски могут занять некоторое время с высоким количеством файлов.
  • При проектировании файловой системы избегайте плоских структур каталогов. Сведения о различных подходах к макетам каталогов см. в разделе "Сведения о макетах каталогов".
  • Чтобы устранить проблемы с превышением размера каталога и невозможностью создания новых файлов, удалите или переместите файлы из соответствующего каталога.

Сведения о макетах каталогов

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

Неструктурированный каталог — это один каталог с несколькими файлами под одним каталогом.

Схема плоской структуры каталогов.

Широкая структура каталогов содержит множество каталогов верхнего уровня с файлами, распределенными по всем каталогам.

Схема широкой структуры каталогов.

Глубокая структура каталогов содержит меньше каталогов верхнего уровня с большим количеством подкаталогов. Хотя эта структура предоставляет меньше файлов на папку, длина пути к файлам может стать проблемой, если макеты каталогов слишком глубокие, а пути к файлам становятся слишком длинными. Дополнительные сведения о длине пути к файлу см. в разделе "Общие сведения о длине пути к файлу" в Azure NetApp Files.

Схема глубокой структуры каталога.

Влияние неструктурированных структур каталогов в Azure NetApp Files

Неструктурированные структуры каталогов (многие файлы в одном или нескольких каталогах) оказывают негативное влияние на широкий массив файловых систем, томов Azure NetApp File или других. Возможные проблемы:

  • Нехватка памяти
  • загрузка ЦП;
  • Производительность сети и задержка (особенно во время выполнения массовых запросов файлов, операций GETATTR, операций READDIR)

Благодаря проектированию больших томов Azure NetApp Files влияние maxdirsize уникально. Большой объем maxdirsize Azure NetApp Files подвержен уникальному воздействию из-за его дизайна. В отличие от обычного тома, большой том использует удаленные жесткие связи внутри Azure NetApp Files для перенаправления трафика на разных устройствах хранения, чтобы обеспечить больший масштаб и производительность. При использовании плоских каталогов существует более высокое соотношение внутренних удаленных жестких ссылок на локальные файлы. Эти удаленные жесткие ссылки учитывают общее maxdirsize значение, поэтому большой том может приблизиться к его maxdirsize ограничению быстрее, чем обычный том.

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

Для получения наилучших результатов с размерами каталогов в Azure NetApp Files:

  • Избегайте неструктурированных структур каталогов в Azure NetApp Files. Широкие или глубокие структуры каталогов лучше всего работают, если длина пути файла или папки не превышает стандарты протокола NAS.
  • Если плоские структуры каталогов неизбежны, контролируйте maxdirsize для каталогов.

Монитор maxdirsize

Для одного каталога используйте stat команду для поиска размера каталога.

# stat /mnt/dir_11/c5 

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

# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn 

Замечание

Размер каталога, сообщаемый командой статистики, находится в байтах. Размер, указанный в команде find, находится в KiB.

Пример

# stat /mnt/dir_11/c5 

  File: ‘/mnt/dir_11/c5’ 

  Size: 322396160       Blocks: 632168     IO Block: 32768  directory 
 
# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn 
316084 /mnt/dir_11/c5 

3792 /mnt/dir_19 

3792 /mnt/dir_16 

В предыдущем случае размер /mnt/dir_11/c5 каталога составляет 316 084 КиБ (308,6 МиБ), который приближается к ограничению 320-МиБ. Это соответствует примерно 4,1 миллионам файлов.

# ls /mnt/dir_11/c5 | wc -l
4171624

В этом случае рассмотрите возможность исправления таких действий, как перемещение или удаление файлов.

Дополнительные сведения