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