Назад | Перейти на главную страницу

оптимизация ext [234] для небольшой пропускной способности файлов

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

Есть ли какие-нибудь разумные варианты монтирования ext2 / ext3 / ext4 для повышения производительности? Полагаю, ведение журнала метаданных здесь приводит к огромному падению производительности.

Да, операции с метаданными вас просто убьют. Самый важный вариант крепления, который я могу себе представить, - это noatime, который выключает atime (или «время последнего доступа») обновляет все файлы. Это остановит одну запись метаданных при каждом доступе к файлу, что может вдвое снизить скорость ввода-вывода (если вы читаете / записываете каждый файл один раз) до сотен раз (если вы пишете один раз, читаете много). noatime также подразумевает nodiratime, который выключает atime обновления только по каталогам. Если это слишком жестоко (вам нужно atime иногда), тогда рассмотрим relatime (mount(8) объясняет это лучше, чем я).

На аппаратном уровне шутки в сторону рассмотрите возможность увеличения объема оперативной памяти и аппаратного RAID-контроллера с энергонезависимой кэш-памятью. Больший объем ОЗУ помогает кэшировать больше данных ядра, что уменьшает (или может даже исключить) операции ввода-вывода при чтении, а RAID-контроллер кеш-памяти NVRAM означает, что ваши данные в безопасности после их записи на флэш-память (что происходит быстро), а не вплоть до вращающихся дисков (что очень медленно). Вы также можете использовать SSD, но они все равно значительно медленнее, чем NVRAM.

У меня есть Synology NAS (DS1815 +, DSM 5.2) с ext4, и я заметил плохую производительность в каталогах с тысячами (маленькими) файлами.

Synology NAS ext4 не имел dir_index расширение установлено по умолчанию! Я понятия не имею, почему Synology делает это, потому что функция dir_index используется только для больших каталогов. Затем он создает индекс, который значительно ускоряет доступ, подсчет, повторение и т. Д.

Чтобы проверить, установлена ​​ли у вас функция, используйте tune2fs -l / dev / yourDev :

tune2fs -l  /dev/vg1/volume_1  | grep features 
Filesystem features:      ... dir_index ...

Если вы не видите dir_index в списке функций, вы можете добавить его в свою файловую систему ext3 / 4:

  1. umount / dev / youDev # Размонтировать устройство
  2. tune2fs -O dir_index / dev / yourDev # добавить функцию в FS
  3. e2fsck -D / dev / yourDev # Создать индексы

Для Synology NAS необходимо выполнить следующие действия:

syno_poweroff_task -d
vgchange -ay
tune2fs -O dir_index /dev/vg1/volume_1
e2fsck -D /dev/vg1/volume_1

Функция dir_index доступна для ext3 и ext4 и обычно / часто используется по умолчанию при создании ext4 в современных дистрибутивах Linux. Однако - как показывает этот Synology NAS - это стоит проверить. В моем случае эта функция увеличила папку rsyncing со 100k (маленькими) файлами на NAS с 4 МБ / с до 14 МБ / с.

Некоторые цитаты из www.debian-administration.org

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

мой: ~ # tune2fs -O dir_index / dev / sda1

Как только вы это сделаете, вы сможете увидеть обновленные флаги файловой системы, которые используются:

мой: ~ # tune2fs -l / dev / sda1 | grep features Возможности файловой системы:
has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file

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