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

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

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

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

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

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

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

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

Я согласен, что это может быть связано с выравниванием полос. По моему опыту создание невыровненной 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, так что вам лучше поддерживать ее согласованность.

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

mkfs.ext3 -E stride=16 stripe-width=48 /dev/your_raid_device

Вам действительно стоит посмотреть на размер группы блоков (опция -g в mkfs.ext *). Я знаю, что справочная страница говорит, что вы можете игнорировать это, но мой опыт показывает, что справочная страница в этом сильно ошибается. Вам следует настроить размер группы блоков таким образом, чтобы гарантировать, что все группы блоков не начинаются на одном диске, а вместо этого равномерно вращаются вокруг всех дисков. Это очень заметно влияет на производительность. Я написал статью о как оптимизировать выравнивание файловой системы который может оказаться полезным.