У меня есть система с высокой пропускной способностью небольших файлов на диске, то есть огромное количество маленьких файлов создается, записывается и удаляется за секунды.
Есть ли какие-нибудь разумные варианты монтирования 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:
Для 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Как только вы это сделаете, вы обнаружите, что перечисление содержимого каталогов с большим количеством файлов становится быстрее, и что поиск файлов в каталогах также лучше.