Friday, 17 September 2010

Ускорение ребилда Soft RAID в Linux

Имеем при ребилде RAID примерно вот такую картину:

cat /proc/mdstat
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
8393856 blocks [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
2104448 blocks [2/2] [UU]

md2 : active raid1 sdb3[1] sda3[0]
282535040 blocks [2/2] [UU]
[>....................] resync = 0.2% (674432/282535040) finish=5133.2min speed=913K/sec

unused devices:



Причем, скорость не растет со временем (возможно, тут я ошибаюсь, она повышается, но медленно) и перспектива ждать 5000 минут до окончания ребилда очень не радужная.


Для управления скоростью ребилда рейда есть два параметра:

cat /proc/sys/dev/raid/speed_limit_min
1000

cat /proc/sys/dev/raid/speed_limit_max
200000


То, что скорость фактически урезана на уровне 1 мегабайта секунду вполне оправданно на случай, если на сервере продолжает работать какой-либо софт. Но если все сервисы приостановлены на время ребилда, можно спокойно увеличить эту скорость мегабайт так до 50 в секунду посредством команды:

echo 50000 > /proc/sys/dev/raid/speed_limit_min


А теперь наблюдаем за результатом:

cat /proc/mdstat
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
8393856 blocks [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
2104448 blocks [2/2] [UU]

md2 : active raid1 sdb3[1] sda3[0]
282535040 blocks [2/2] [UU]
[>....................] resync = 1.1% (3379136/282535040) finish=129.8min speed=35831K/sec

unused devices:


Резюмируя все выше сказанное - если в системе есть активный ввод/вывод, то ребилд RAID ждет времени, когда ввод-вывод освобождается и только тогда может повышать скорость ребилда выше speed_limit_min. Если же требуется заставить приложения "подвинуться" и дать синхронизации массива повышенный приоритет, то необходимо повысить speed_limit_min до 10000 или выше (в зависимости от нагрузки на систему).

3 comments:

  1. сенк. Было полезно ...
    Только у меня что то не видно увеличения!?

    ReplyDelete
  2. Не факт, что оно будет, при отсутствии нагрузки на диск ребилд итак идет с максимальной скоростью.

    ReplyDelete
  3. А что делать если на команды не реагирует?

    При
    mdadm -a /dev/md0 /dev/sdb1

    Сначала speed=18000 K/sec в течении пары минут падает и держится на 4 - 30 K/sec

    ReplyDelete

Note: only a member of this blog may post a comment.