У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это /dev/sdb.
I. Удаление диска из массива
Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:
Код: Виділити все
# 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: <none>
В данном случае массив собран так. Что 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
А затем снова выполним команды по удалению разделов из массива. Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.
II. Добавление диска в массив после замены
1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск
После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk Установим gdisk:
Выполняем:
Где /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:
Здесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена.
Даем диску новый случайный UIDD:
Копирование разметки для MBR:
Здесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим. Если разделы не видны в системе, то можно перечитать таблицу разделов командой:
2. Добавление диска в массив
Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.
Код: Виділити все
# mdadm /dev/md0 -a /dev/sdb2
# mdadm /dev/md1 -a /dev/sdb3
# mdadm /dev/md2 -a /dev/sdb4
III. Установка загрузчика
После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:
Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом.
Монтируем корневую файловую систему в /mnt:
Монтируем boot:
Монтируем /dev, /proc и /sys:
Код: Виділити все
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
Затем делаем chroot в примонтированную систему:
И устанавливаем grub на sdb:
IV. Запишем информацию о созданных массивах в конфигурационный файл mdadm.conf, предварительно сделав резервную копию:
#cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.orig
#mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Теперь можно попробовать загрузится в нормальный режим.
P.S. Если при установке загрузчика возникнет ошибка Could not find device for /boot/boot: not found or not a block device.
Ошибка при восстановлении загрузчика после замены диска в RAID1
Если при установке grub вы получаете ошибку следующего содержания:
Код: Виділити все
root #grub-install --root-directory=/boot /dev/sda
Could not find device for /boot/boot: not found or not a block device
Выполните:
Код: Виділити все
root #grep -v rootfs /proc/mounts > /etc/mtab
У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это /dev/sdb.
[b]I. Удаление диска из массива[/b]
Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:
[code]# 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: <none>[/code]
В данном случае массив собран так. Что md0 состоит из sda2 и sdb2, md1 из sda3 и sdb3, md2 из sda4 и sdb4. На этом сервере md0 это /boot, md1 — своп, md2 — корень. Убираем sdb из всех устройств.
[code]# mdadm /dev/md0 --remove /dev/sdb2
# mdadm /dev/md1 --remove /dev/sdb3
# mdadm /dev/md2 --remove /dev/sdb4[/code]
Если разделы из массива не удаляются, это как в нашем случае. Mdadm не считает диск неисправным и использует его, и при удалении мы увидим ошибку, что устройство используется. В этом случае перед удалением помечаем диск как сбойный.
[code]# mdadm /dev/md0 -f /dev/sdb2
# mdadm /dev/md1 -f /dev/sdb3
# mdadm /dev/md2 -f /dev/sdb4[/code]
А затем снова выполним команды по удалению разделов из массива. Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.
[b]II. Добавление диска в массив после замены[/b]
[b]1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск[/b]
После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk Установим gdisk:
[code]# apt-get install gdisk -y[/code]
Выполняем:
[code]# gdisk -l /dev/sda[/code]
Где /dev/sda — исправный диск находящийся в raid. В выводе будет примерно это для MBR:
[code]Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present[/code]
И примерно это для GPT:
[code]Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present[/code]
Перед добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и на sda. В зависимости от разметки диска это делается по разному.
Копирование разметки для GPT:
[code]# sgdisk -R /dev/sdb /dev/sda[/code]
Здесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена.
Даем диску новый случайный UIDD:
[code]# sgdisk -G /dev/sdb[/code]
Копирование разметки для MBR:
[code]# sfdisk -d /dev/sda | sfdisk /dev/sdb[/code]
Здесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим. Если разделы не видны в системе, то можно перечитать таблицу разделов командой:
[code]# sfdisk -R /dev/sdb[/code]
[b]2. Добавление диска в массив[/b]
Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.
[code]# mdadm /dev/md0 -a /dev/sdb2
# mdadm /dev/md1 -a /dev/sdb3
# mdadm /dev/md2 -a /dev/sdb4[/code]
[b]III. Установка загрузчика[/b]
После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:
[code]# grub-install /dev/sdb[/code]
Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом.
Монтируем корневую файловую систему в /mnt:
[code]# mount /dev/md2 /mnt[/code]
Монтируем boot:
[code]# mount /dev/md0 /mnt/boot[/code]
Монтируем /dev, /proc и /sys:
[code]# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys[/code]
Затем делаем chroot в примонтированную систему:
[code]# chroot /mnt[/code]
И устанавливаем grub на sdb:
[code]# grub-install /dev/sdb[/code]
IV. Запишем информацию о созданных массивах в конфигурационный файл mdadm.conf, предварительно сделав резервную копию:
#cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.orig
#mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Теперь можно попробовать загрузится в нормальный режим.
P.S. Если при установке загрузчика возникнет ошибка Could not find device for /boot/boot: not found or not a block device.
Ошибка при восстановлении загрузчика после замены диска в RAID1
Если при установке grub вы получаете ошибку следующего содержания:
[code]root #grub-install --root-directory=/boot /dev/sda
Could not find device for /boot/boot: not found or not a block device[/code]
Выполните:
[code]root #grep -v rootfs /proc/mounts > /etc/mtab[/code]