У меня есть новый 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 / sync_action
Это можно использовать для мониторинга и управления процессом повторной синхронизации / восстановления MD. В частности, запись здесь «check» заставит массив прочитать все блоки данных и проверить их согласованность (например, правильность четности или все зеркальные реплики одинаковы). Обнаруженные неточности НЕ исправляются. Количество найденных проблем будет сохранено в md / mismatch_count. В качестве альтернативы можно написать «ремонт», что приведет к выполнению той же проверки, но все ошибки будут исправлены. Наконец, можно написать "idle", чтобы остановить процесс проверки / восстановления.
Другими словами, resync
игнорируется, потому что это не принятое действие - пока check
, repair
и idle
являются.