Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

Глава 7. Файловые системы

Эта глава содержит обзор файловых систем, поддерживаемых Red Hat Enterprise Linux, и способов оптимизации их производительности.

7.1. Характеристики производительности файловых систем

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

7.1.1. Параметры форматирования

Размер блока файловой системы

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

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

Если в основе системы лежат дисковые массивы (например, RAID5), производительность может быть улучшена за счет выравнивания метаданных в соответствии с геометрией массива. Для программных RAID-массивов (LVM и MD) это будет сделано автоматически, в то время как в других ситуациях администратор должен будет определить геометрию вручную в строке команды mkfs.

Подробную информацию о файловых системах можно найти в руководстве по управлению накопителями.
Внешние журналы

В файловых системах с журналированием (ext4 и XFS) при интенсивном чтении и записи метаданных обращение к журналам возрастает. Чтобы сократить время поиска, можно разместить журнал на отдельном накопителе. Однако если его скорость меньше скорости диска файловой системы, выигрыш будет минимален.

Предупреждение

Журналы должны храниться в надежном месте. Их потеря может привести к порче файловой системы.
Внешние журналы создаются на стадии mkfs, а устройства журналов определяются во время монтирования. За подробной информацией обратитесь к справочным страницам mke2fs(8), mkfs.xfs(8) и mount(8).

7.1.2. Параметры монтирования

Барьеры

Барьер записи — механизм ядра, отвечающий за порядок записи метаданных. При отключении энергии файловые системы с барьерами сохраняют состояние данных, переданных при помощи fsync(). Red Hat Enterprise Linux включает барьеры по умолчанию.

Активация барьеров может замедлить работу некоторых приложений, особенно тех, которые активно используют fsync() или часто создают и удаляют небольшие файлы. Для стабильных накопителей, не использующих непостоянный кэш, а также для некритичных приложений функциональность барьеров можно отключить с помощью параметра nobarrier. Более подробно об этом рассказывается в руководстве по управлению накопителями.
Время доступа (noatime)

Обычно время доступа для чтения файлов (atime) можно изменить в метаданных дескриптора inode, что требует выполнения дополнительной операции записи. Если нет необходимости в точном определении atime, при монтировании файловой системы можно добавить параметр noatime. В большинстве случаев, однако, atime не добавляет значительную задержку, так в ядре Red Hat Enterprise Linux 6 уже по умолчанию включен режим relatime. В этом режиме atime будет обновляться , если предыдущее время доступа меньше времени изменения файла (mtime) или времени изменения статуса (ctime).

Примечание

При активации noatime будет автоматически включен параметр nodiratime, поэтому отдельно его устанавливать не требуется.
Поддержка чтения с упреждением

Упреждающее чтение ускоряет доступ за счет предварительного чтения данных и размещения их в кэше страниц. При интенсивной нагрузке это может значительно улучшить производительность.

Утилита tuned и чередование LVM особенно эффективно используют функции чтения с упреждением, но этого не всегда бывает достаточно. Помимо этого, Red Hat Enterprise Linux не всегда может установить оптимальное значение для чтения с упреждением. Например, если высокопроизводительный массив представлен как единственный LUN, операционная система не будет его использовать как массив и не сможет воспользоваться всеми преимуществами чтения с упреждением.
Для просмотра настроек упреждающего чтения для указанного устройства выполните следующую команду:
# blockdev -getra устройство
Ниже это значение будет изменено (N — число блоков размером 512 байт).
# blockdev -setra N устройство
Заданное с помощью blockdev значение не будет сохраняться между перезагрузками. Рекомендуется создать сценарий init.d, чтобы восстановить его при запуске системы.

7.1.3. Обслуживание файловой системы

Удаление незанятых блоков

Блоки, не используемые файловой системой, можно освободить. Это помогает освободить пространство в файловых системах на SSD-дисках и в динамически созданных томах.

Операции удаления пакетов блоков выполняются пользователем: команда fstrim удаляет неиспользуемые блоки в соответствии с заданными критериями. Эти операции можно использовать в файловых системах XFS и ext4 в версиях Red Hat Enterprise Linux 6.2 и выше при условии, что они поддерживаются на уровне физических устройств. Параметр /sys/block/устройство/queue/discard_max_bytes поможет это проверить: если его значение не равно нулю, удаление поддерживается.
Чтобы разрешить удаление блоков, при монтировании файловой системы надо добавить параметр -o discard (или указать его в строке команды mount в /etc/fstab). Удаление будет выполняться без участия пользователя. Блоки, переходящие из занятого состояние в свободное, будут автоматически удаляться в ext4 (начиная с Red Hat Enterprise Linux 6.2) и в XFS (начиная с Red Hat Enterprise Linux 6.4).
Red Hat не рекомендует отключать эту функциональность, если в этом нет необходимости.

7.1.4. Производительность приложений

Выделение пространства

Файловые системы ext4, XFS позволяют заранее выделить пространство при помощи вызова fallocate(2). Это поможет уменьшить фрагментацию, тем самым улучшив производительность. fallocate(2) отмечает заданный диапазон как выделенный и инициализирует его нулями.