Несколько способов увеличения скорости Rebuilding или Re-syncing RAID

Несколько способов увеличения скорости Rebuilding или Re-syncing RAID

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Столкнулся с медленной синхронизацией программного RAID. Я использую CentOS и mdadm, который объединяет диски в RAID1

Для ускорения перестроения RAID нужно записать в /proc/sys/dev/raid/speed_limit_min определяет максимальную скорость записи, которую mdadm будет использовать для реконструкции дискового массива.

Снимаем ограничение:

1
echo 300000 > /proc/sys/dev/raid/speed_limit_min

Смотрим, что получилось:

1
watch --interval=1 cat /proc/mdstat

В моем случае скорость выросла с 979K/sec

1
2
3
4
5
# cat /proc/mdstat
Personalities : [raid1]
md127 : active raid1 sda3[2] sdb3[3]
381885984 blocks super 1.2 [2/2] [UU]
[======>..............] resync = 33.1% (126738692/381885984) finish=4339.7min speed=979K/sec

До 6564K/sec. Возможно и больше, но диски уже старые + возможно дряхлый SATA.

1
2
3
4
5
6
7
Personalities : [raid1]

md127 : active raid1 sda3[2] sdb3[3]

381885984 blocks super 1.2 [2/2] [UU]

[=======>.............] resync = 37.1% (141878020/381885984) finish=609.3min speed=6564K/sec

Следующие трюки используются для увеличения скорости восстановления программного RAID в Linux. Опции хороши для настройки процесса перестроения и могут существенно увеличить общую нагрузку на систему, процессор и память.

Для начала проверим текущие лимиты в системе

1
2
sysctl dev.raid.speed_limit_min
sysctl dev.raid.speed_limit_max

Затем установим новые в файле /etc/sysctl.conf

1
2
3
4
5
dev.raid.speed_limit_min = 50000
## good for 4-5 disks based array ##
dev.raid.speed_limit_max = 2000000
## good for large 6-12 disks based array ###
dev.raid.speed_limit_max = 5000000

Установка опции сверх-чтения

1
2
3
4
blockdev --setra 65536 /dev/mdX
## Set read-ahead to 32 MiB ##
blockdev --setra 65536 /dev/md0
blockdev --setra 65536 /dev/md1

Bitmap опция

Bitmap опция оптимизирует процесс ребилда после краша, удаление или переустановки диска.

Включим опцию следующей командой

1
mdadm --grow --bitmap=internal /dev/md127

После того, как синхронизация будет завершена - выключим данную опцию

1
mdadm --grow --bitmap=none /dev/md127