Как было сказано в первой части, мы ожидаем удачного завершения загрузки с “поврежденным” массивом.
В случае удачной загрузки мы должны увидеть вывод команды df, подобный следующему:
vm-rh:~ # df -h Filesystem Size Used Avail Use% Mounted on /dev/md0 1,4G 1,1G 233M 83% / udev 389M 204K 389M 1% /dev /dev/md5 470M 11M 436M 3% /home /dev/md2 98M 5,6M 88M 6% /opt /dev/md3 99M 5,6M 89M 6% /tmp /dev/md4 198M 90M 98M 48% /var vm-rh:~ #
И соответственно вывод /proc/mdstat:
vm-rh:~ # cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [linear] [multipath] md5 : active raid1 sdb8[1] 496576 blocks [2/1] [_U] md4 : active raid1 sdb7[1] 208832 blocks [2/1] [_U] md3 : active raid1 sdb6[1] 104384 blocks [2/1] [_U] md2 : active raid1 sdb5[1] 103360 blocks [2/1] [_U] md1 : active (auto-read-only) raid1 sdb2[1] 262080 blocks [2/1] [_U] md0 : active raid1 sdb1[1] 1440704 blocks [2/1] [_U] unused devices:vm-rh:~ #
Выполняем подготовку /dev/sda для массива. Сначала меняем типы разделов на fd:
vm-rh:~ # fdisk /dev/sda Command (m for help): t Partition number (1-8): 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect) Command (m for help): t Partition number (1-8): 2 Hex code (type L to list codes): fd Changed system type of partition 2 to fd (Linux raid autodetect) Command (m for help): t Partition number (1-8): 5 Hex code (type L to list codes): fd Changed system type of partition 5 to fd (Linux raid autodetect) Command (m for help): t Partition number (1-8): 6 Hex code (type L to list codes): fd Changed system type of partition 6 to fd (Linux raid autodetect) Command (m for help): t Partition number (1-8): 7 Hex code (type L to list codes): fd Changed system type of partition 7 to fd (Linux raid autodetect) Command (m for help): t Partition number (1-8): 8 Hex code (type L to list codes): fd Changed system type of partition 8 to fd (Linux raid autodetect) Command (m for help): q vm-rh:~ #
Теперь можно добавлять разделы в “аварийный” массив:
vm-rh:~ # mdadm --add /dev/md0 /dev/sda1 mdadm: added /dev/sda1 vm-rh:~ # mdadm --add /dev/md1 /dev/sda2 mdadm: added /dev/sda2 vm-rh:~ # mdadm --add /dev/md2 /dev/sda5 mdadm: added /dev/sda5 vm-rh:~ # mdadm --add /dev/md3 /dev/sda6 mdadm: added /dev/sda6 vm-rh:~ # mdadm --add /dev/md4 /dev/sda7 mdadm: added /dev/sda7 vm-rh:~ # mdadm --add /dev/md5 /dev/sda8 mdadm: added /dev/sda8 vm-rh:~ #
Мы можем проверить состояние массива и процесс синхронизации:
vm-rh:~ # cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [linear] [multipath] md5 : active raid1 sda8[0] sdb8[1] 496576 blocks [2/2] [UU] md4 : active raid1 sda7[0] sdb7[1] 208832 blocks [2/2] [UU] md3 : active raid1 sda6[0] sdb6[1] 104384 blocks [2/2] [UU] md2 : active raid1 sda5[0] sdb5[1] 103360 blocks [2/2] [UU] md1 : active raid1 sda2[0] sdb2[1] 262080 blocks [2/2] [UU] md0 : active raid1 sda1[0] sdb1[1] 1440704 blocks [2/2] [UU] unused devices:vm-rh:~ #
Теперь настал момент обновить /etc/mdadm/mdadm.conf:
vm-rh:~ # gzip /etc/mdadm.conf vm-rh:~ # mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Осталось выполнить пару действий. Поправить конфигурацию загрузчика в /boot/grub/menu.lst.
Выделяем блок с индексом 1, копируем и вставляем ниже. В заголовке блока меняем MD на MD1.
в новом скопированном блоке соответственно MD на MD0 и меняем значение root на (hd0,0).
Теперь у нас есть возможность грузиться с любого из дисков в случае отказа одного из них.
Еще раз делаем финальный initrd:
vm-rh:~ # mkinitrd -f md Kernel image: /boot/vmlinuz-2.6.31.14-0.8-default Initrd image: /boot/initrd-2.6.31.14-0.8-default Root device: /dev/md0 (mounted on / as ext3) Kernel Modules: hwmon thermal_sys thermal libata ahci ... Features: block usb md resume.userspace resume.kernel Bootsplash: openSUSE (1024x768) 29752 blocks vm-rh:~ #
Перезагружаем. Система готова к эксплуатации.