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

mdadm: возобновить начальную синхронизацию

У меня есть новый md RAID10, который я создал (на Synology DS416slim, что помимо), который находился в процессе начальной синхронизации:

root@ds416slim:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0]
      1943881088 blocks super 1.2 64K chunks 2 near-copies [4/4] [UUUU]
      [===>.................]  resync = 19.8% (386172736/1943881088) finish=2613.6min speed=9932K/sec

md1 : active raid1 sdc2[1] sdb2[2] sda2[0] sdd2[3]
      2097088 blocks [4/4] [UUUU]

md0 : active raid1 sdc1[1] sdb1[2] sda1[0] sdd1[3]
      2490176 blocks [4/4] [UUUU]

unused devices: <none>

Заметив, что это действительно ужасная скорость синхронизации (она должна была быть ближе к 100M, чем к 10M), я решил pause синхронизация с использованием echo idle > /sys/block/md2/md/sync_action

После тестов (где hdparm показало, что /dev/sdd была ужасная производительность), я попытался возобновить его с echo resync > /sys/block/md2/md/sync_action. Однако синхронизация не возобновилась и осталась в состоянии ожидания:

root@ds416slim:~# echo resync > /sys/block/md2/md/sync_action
root@ds416slim:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0]
      1943881088 blocks super 1.2 64K chunks 2 near-copies [4/4] [UUUU]

md1 : active raid1 sdc2[1] sdb2[2] sda2[0] sdd2[3]
      2097088 blocks [4/4] [UUUU]

md0 : active raid1 sdc1[1] sdb1[2] sda1[0] sdd1[3]
      2490176 blocks [4/4] [UUUU]

unused devices: <none>
root@ds416slim:~# cat  /sys/block/md2/md/sync_action
idle

Я проверил возможные варианты того, как возобновить синхронизацию, поскольку варианты, указанные в sysfs раздел документации MD на kernel.org дает список, в котором нет resume вариант. Чтение всех перечисленных вариантов, кажется, подразумевает resync как правильное действие, но оно не возобновило первоначальную синхронизацию, как показано выше.

Мои вопросы:

Вам нужно использовать repair действие - то есть: echo repair > /sys/block/md2/md/sync_action

Теоретически вы можете использовать массив во время ремонта, но я бы позволил завершить это первоначальное восстановление / повторную синхронизацию, прежде чем помещать ценные данные на диски.

Из md справочная страница:

md / sync_action

Это можно использовать для мониторинга и управления процессом повторной синхронизации / восстановления MD. В частности, запись здесь «check» заставит массив прочитать все блоки данных и проверить их согласованность (например, правильность четности или все зеркальные реплики одинаковы). Обнаруженные неточности НЕ исправляются. Количество найденных проблем будет сохранено в md / mismatch_count. В качестве альтернативы можно написать «ремонт», что приведет к выполнению той же проверки, но все ошибки будут исправлены. Наконец, можно написать "idle", чтобы остановить процесс проверки / восстановления.

Другими словами, resync игнорируется, потому что это не принятое действие - пока check, repair и idle являются.