
У меня на сервере Ubuntu работает 3-дисковый RAID-массив. Он работал без сбоев больше года, но недавно мне пришлось разобрать, переместить и перестроить машину.
Когда я собрал все обратно и запустил Ubuntu, у меня возникли некоторые проблемы с дисками, которые не определялись. Пару перезагрузок спустя, и я решил эту проблему. Проблема теперь в том, что массив из 3 дисков отображается как деградировавший каждый раз при загрузке. По какой-то причине кажется, что Ubuntu создал новый массив и добавил в него отсутствующий диск.
Я пробовал остановить новый массив из 1 диска и добавить отсутствующий диск, но у меня проблемы. При запуске я получаю это:
root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md_d1 : inactive sdf1[2](S)
1953511936 blocks
md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
У меня два RAID-массива, и тот, который обычно отображается как md1, не отображается.
Я где-то читал, что вызов mdadm --assemble --scan
заново соберет отсутствующий массив, поэтому я попробовал сначала остановить существующий массив, запущенный Ubuntu:
root@uberserver:~# mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1
...а затем попытался сказать Ubuntu снова поднять диски:
root@uberserver:~# mdadm --assemble --scan
mdadm: /dev/md/1 has been started with 2 drives (out of 3).
Итак, md1 снова запущен, но он не выбирает диск из md_d1:
root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sde1[1] sdf1[2]
3907023872 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
md_d1 : inactive sdd1[0](S)
1953511936 blocks
md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
Что здесь не так? Почему Ubuntu пытается подключиться sdd1
к другому массиву? Как вернуть этот отсутствующий диск обратно домой?
[Редактировать]- Я понял, что не добавил md1 в автозапуск в mdadm.conf
. После добавления md1 mdadm.conf
он теперь пытается смонтировать массив при запуске, но он все еще отсутствует sdd1
. Если я скажу ему попытаться собрать автоматически, у меня сложится впечатление, что он знает, что ему это нужно, sdd1
но не может это использовать:
root@uberserver:~# mdadm --assemble --scan
/dev/md1: File exists
mdadm: /dev/md/1 already active, cannot restart it!
mdadm: /dev/md/1 needed for /dev/sdd1...
Что я упускаю?
решение1
Не уверен, что это был самый чистый способ решения проблемы, но следующее, похоже, помогло снова ее запустить:
root@uberserver:~# mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1
root@uberserver:~# mdadm --add /dev/md1 /dev/sdd1
mdadm: re-added /dev/sdd1
root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd1[3] sde1[1] sdf1[2]
3907023872 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
[>....................] recovery = 0.0% (121728/1953511936) finish=1337.0min speed=24345K/sec
md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
Все еще не понимаю, почему нельзя было просто добавить диск обратно :-/
решение2
Я столкнулся с похожей проблемой — возможно, из-за отсоединения кабеля питания мой массив потерял диск — поэтому mdstat показал [U_UU], и диск также исчез для других инструментов, таких как SeaChest. После переподключения всех разъемов диск снова появился, но mdadm автоматически не восстановился. Казалось, он просто потерял его.
me@server:~$ sudo mdadm --details /dev/md0
диск отображался как удалённый, хотя он присутствовал, работал и имел правильные теги UUID.
Чтобы прийти в себя, мне пришлось просто пробежать:
me@server:~$ sudo mdadm --add /dev/md0 /dev/sdb1
и он немедленно добавил диск и начал восстановление (не нужно было предварительно останавливать массив).