Операция mkfs занимает много времени на Linux Software Raid 5

9

Я установил программный рейд Linux уровня 5, состоящий из дисков 4 * 2 ТБ. Дисковый массив был создан с размером полосы 64 КБ и без других параметров конфигурации. После первоначального перестроения я попытался создать файловую систему, и этот шаг занимает очень много времени (около получаса или более). Я попытался создать файловую систему xfs и ext3, обе заняли много времени, с mkfs.ext3. Я заметил следующее поведение, которое может быть полезным:

  • запись таблиц инодов выполняется быстро, пока не достигнет 1053 (~ 1 секунда), затем пишет около 50, ждет две секунды, затем записываются следующие 50 (согласно отображению на консоли)
  • когда я пытаюсь отменить операцию с помощью Control + C, она зависает на полминуты, прежде чем она действительно отменяется

Производительность дисков по отдельности очень хорошая, на каждом из них я запускал bonnie ++ со значениями записи / чтения около 95/110 МБ / с. Даже когда я запускаю bonnie ++ на каждом диске параллельно, значения уменьшаются только примерно на 10 МБ. Поэтому я исключаю аппаратное / I / O планирование в качестве источника проблемы.

Я безуспешно пробовал разные параметры конфигурации для stripe_cache_size и readahead, но я не думаю, что они имеют отношение к операции создания файловой системы.

Детали сервера:

  • Сервер Linux 2.6.35-27-generic # 48-Ubuntu SMP x86_64 GNU / Linux
  • mdadm - v2.6.7.1

У кого-нибудь есть предложения по дальнейшей отладке этого?

Эльмар Вебер
источник

Ответы:

4

Я согласен, что это может быть связано с выравниванием полос. Из моего опыта создание невыровненной XFS на 3 * 2 ТБ RAID-0 занимает ~ 5 минут, но если он выровнен по размеру полосы, это ~ 10-15 секунд. Вот команда для выравнивания XFS по размеру полосы 256 КБ:

mkfs.xfs -l internal,lazy-count=1,sunit=512 -d agsize=64g,sunit=512,swidth=1536 -b size=4096 /dev/vg10/lv00

Кстати, ширина полосы в моем случае составляет 3 единицы, что будет одинаково для вас с 4 накопителями, но в raid-5.

Очевидно, что это также улучшает производительность FS, так что вам лучше держать ее в выравнивании.

dtoubelis
источник
Привет, это не имело никакого значения, я попробовал: time mkfs.xfs -l sunit=128 -d agsize=64g,sunit=128,swidth=512 -b size=4096 /dev/md0 -fэто заняло примерно то же время, что и mkfs без каких-либо параметров
Elmar Weber
Я использую Bonnie ++, так что посмотрим, повлияет ли это на производительность во время работы. Кстати: есть ли причина для параметра agsize? Я прочитал справочную страницу, но не смог оценить выгоду от установки ее значения.
Эльмар Вебер
(кстати: указанная выше команда была неправильной, правильная ширина была 384)
Элмар Вебер,
Я не получил никакого увеличения производительности на mkfs, но общая производительность, измеренная с помощью bonnie ++, намного лучше: операции создания / удаления файлов примерно в 4 раза лучше, чем раньше, и скорость последовательной записи около 15%. Большое спасибо.
Эльмар Вебер,
2
agsize здесь на самом деле не нужен - mkfs рассчитает его автоматически (вероятно, разделив размер тома на количество логических процессоров). Это осталось от моей собственной настройки - я создал этот том с некоторыми ожиданиями для будущего изменения конфигурации.
dtoubelis
6

Я подозреваю, что вы столкнулись с типичной проблемой небольшой записи RAID5. Для записей с размером полосы он должен выполнять чтение-изменение-запись как для данных, так и для четности. Если размер записи совпадает с размером полосы, он может просто перезаписать четность, так как он знает, каково значение, и не должен пересчитывать его.

malcolmpdx
источник
Имеет смысл, правильно ли я это вижу ?: Согласно выводу mkfs.ext3 он записывает около 25 таблиц inode в секунду, я предполагаю, что они меньше 64 КБ при первоначальном создании, поэтому записывается полоса 64 КБ. Это будет означать запись 16 Кбайт на каждый диск, так что вместе 25 случайных записей по 16 Кбайт в секунду, с размером сектора 4 Кбайт, это означает 100 случайных операций ввода-вывода в секунду, что примерно соответствует показанию bonnie ++.
Эльмар Вебер
Соответствует результату bonnie ++ для фактического рейда, 335 МБ для чтения и 310 МБ для записи, однако создание и удаление файлов составляет всего 1/4 от производительности одного диска.
Эльмар Вебер
3

Ваша mkfs и последующая производительность файловой системы могут улучшиться, если вы укажете шаг и ширину полосы при создании файловой системы. Если вы используете блоки 4k по умолчанию, ваш шаг равен 16 (полоса RAID 64 К, разделенная на блок файловой системы 4 Кб), а ширина полосы равна 48 (полоса 16 файловой системы умножена на 3 диска данных в вашем массиве).

mkfs.ext3 -E stride=16 stripe-width=48 /dev/your_raid_device
Sciurus
источник