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

Linux: восстановление массива MD-RAID 1, когда один диск отсутствовал в массиве некоторое время

Около полутора месяцев назад я заметил, что два жестких диска на сервере (OpenSuSE 11.3) умирают. Догадываясь на основе данных SMART, я сначала заменил / dev / sdb; для этого я удалил диск из массива, выключил сервер, заменил диск, перезагрузился и добавил новый диск в массив. Все идет нормально. IIRC, я также установил GRUB на этот диск. Затем я начал заменять и перестраивать / dev / sda. Я не могу вспомнить, выключил ли я или не заменил / dev / sda (диски находятся в держателях / отсеках для горячей замены), но при первой перезагрузке у меня были все виды проблем с GRUB, которые мешали загрузке в ОС. Я наконец загрузил его, но заметил странное поведение. Например, согласно / proc / mdstat в массиве активен только один диск:

openvpn01:/home/Kendall # cat /proc/mdstat
Personalities : [raid1] 
md2 : active raid1 sdb3[2]
  20972784 blocks super 1.0 [2/1] [_U]
  bitmap: 1/161 pages [4KB], 64KB chunk

md1 : active raid1 sdb2[2]
  5245208 blocks super 1.0 [2/1] [_U]
  bitmap: 2/11 pages [8KB], 256KB chunk

md0 : active raid1 sdb1[2]
  1052212 blocks super 1.0 [2/1] [_U]
  bitmap: 0/9 pages [0KB], 64KB chunk

unused devices: <none>

Хм, хорошо, поэтому я пытаюсь добавить / dev / sda обратно в массив:

mdadm --manage /dev/md0 --add /dev/sda1
mdadm: add new device failed for /dev/sda1 as 3: Device or resource busy

Это странно ... но обратите внимание, что показывает нам lsof:

openvpn01:/home/Kendall # lsof /dev/sda3 | head -15
COMMAND     PID       USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME                                                                          
init          1       root  cwd    DIR    8,3     4096       128 /                                                                             
init          1       root  rtd    DIR    8,3     4096       128 /                                                                             
init          1       root  txt    REG    8,3    39468    404103 /sbin/init                                                                    
init          1       root  mem    REG    8,3    91812  33849572 /lib/libaudit.so.1.0.0                                                        
init          1       root  mem    REG    8,3    17392  33648690 /lib/libdl-2.11.2.so                                                          
init          1       root  mem    REG    8,3  1674953  33683537 /lib/libc-2.11.2.so                                                           
init          1       root  mem    REG    8,3    55024  33994082 /lib/libpam.so.0.82.2                                                         
init          1       root  mem    REG    8,3   120868  33828745 /lib/libselinux.so.1                                                          
init          1       root  mem    REG    8,3   143978  33683531 /lib/ld-2.11.2.so                                                             
kthreadd      2       root  cwd    DIR    8,3     4096       128 /

... так что похоже, что корневая файловая система действительно работает с / dev / sda3. В настройке MD-RAID md2 - это корневой массив FS, а / dev / sd [ab] 3 - разделы в массиве. Глядя на крепления

openvpn01:/home/Kendall # cat /proc/mounts
/dev/sda3 / xfs rw,relatime,attr2,noquota 0 0
/dev/md1 /boot ext4 rw,relatime,user_xattr,acl,barrier=1,data=ordered 0 0

/ dev / sda3 определенно смонтирована корневая файловая система, но / boot использует массив.

Вдобавок, когда я перехожу к экрану конфигурации загрузчика через yast2 и смотрю на сведения о загрузчике, старые диски все еще отображаются в разделе «Настройки порядка дисков» (я знаю это по серийным номерам).

В основном сейчас меня беспокоит массив. ОС считает, что в массиве только один диск, и это НЕ тот диск, на котором смонтирована корневая файловая система! Я планирую попытаться исправить оставшиеся проблемы с GRUB в ближайшие несколько дней, но тогда я беспокоюсь о том, что произойдет с данными в массиве; в основном, сможет ли он восстановить себя, не передавая какие-либо / все мои данные?

Надеюсь, я предоставил достаточно подробностей; Если нет, прокомментируйте, и я добавлю все, что сочтет нужным.

Спасибо,

Кендалл

Вероятно, произошло то, что ваш initrd решил использовать /dev/sda3 в качестве корневой файловой системы, но когда он строил массивы MD, /dev/sdb3 имел более позднее время модификации, чем /dev/sda3 и использовался для поддержки массивов.

# mdadm --examine /dev/sd?? и # mdadm --detail /dev/md? может дать вам дополнительные подсказки относительно того, что происходит.

Самый безопасный путь - это просто сделать резервную копию и восстановить с живого компакт-диска, как рекомендует Zoredache. Убедитесь, что вы сделали резервную копию обоих / dev / sda? и массивы MD - один или оба могут иметь более свежие данные, чем другой.