У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb.
Эти диски собраны у нас в софтверный RAID1 с помощью mdadm.
Один из дисков вышел из строя, в нашем случае это /dev/sdb.
1. Удаление диска из массива
Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:
# cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] md2 : active raid1 sda4[0] sdb4[1] 1456504640 blocks super 1.2 [2/2] [UU] md1 : active raid1 sda3[0] sdb3[1] 7996352 blocks super 1.2 [2/2] [UU] md0 : active raid1 sda2[0] sdb2[1] 499392 blocks super 1.2 [2/2] [UU] unused devices:В данном случае массив собран так. Что md0 состоит из sda2 и sdb2, md1 из sda3 и sdb3, md2 из sda4 и sdb4. На этом сервере md0 это /boot, md1 — своп, md2 — корень. Убираем sdb из всех устройств.
# mdadm /dev/md0 --remove /dev/sdb2 # mdadm /dev/md1 --remove /dev/sdb3 # mdadm /dev/md2 --remove /dev/sdb4Если разделы из массива не удаляются, это как в нашем случае. Mdadm не считает диск неисправным и использует его, и при удалении мы увидим ошибку, что устройство используется. В этом случае перед удалением помечаем диск как сбойный.
# mdadm /dev/md0 -f /dev/sdb2 # mdadm /dev/md1 -f /dev/sdb3 # mdadm /dev/md2 -f /dev/sdb4А затем снова выполним команды по удалению разделов из массива. Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска. 2. Добавление диска в массив после замены 2.1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk Установим gdisk:
# apt-get install gdisk -yВыполняем:
# gdisk -l /dev/sdaГде /dev/sda — исправный диск находящийся в raid. В выводе будет примерно это для MBR:
Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not presentИ примерно это для GPT:
Partition table scan: MBR: protective BSD: not present APM: not present GPT: presentПеред добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и на sda. В зависимости от разметки диска это делается по разному. Копирование разметки для GPT:
# sgdisk -R /dev/sdb /dev/sdaЗдесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена. Даем диску новый случайный UIDD:
# sgdisk -G /dev/sdbКопирование разметки для MBR:
# sfdisk -d /dev/sda | sfdisk /dev/sdbЗдесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим. Если разделы не видны в системе, то можно перечитать таблицу разделов командой:
# sfdisk -R /dev/sdb2.2. Добавление диска в массив Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.
# mdadm /dev/md0 -a /dev/sdb2 # mdadm /dev/md1 -a /dev/sdb3 # mdadm /dev/md2 -a /dev/sdb43. Установка загрузчика После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:
# grub-install /dev/sdbЕсли сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом. Монтируем корневую файловую систему в /mnt:
# mount /dev/md2 /mntМонтируем boot:
# mount /dev/md0 /mnt/bootМонтируем /dev, /proc и /sys:
# mount --bind /dev /mnt/dev # mount --bind /proc /mnt/proc # mount --bind /sys /mnt/sysЗатем делаем chroot в примонтированную систему:
# chroot /mntИ устанавливаем grub на sdb:
# grub-install /dev/sdbТеперь можно попробовать загрузится в нормальный режим.