Замена сбойного диска в программном RAID 1 — mdadm

В этой статье мы рассмотрим ситуацию, когда нужна замена диска в программном RAID 1 с помощью утилиты MDADM.

Для начала посмотрим список наших дисков с разделами. Определим какой диск мы будем удалять из массива RAID 1 командой lsblk:

[root@localhost ~] lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 2G 0 part
│ └─md127 9:127 0 2G 0 raid1 [SWAP]
├─sda2 8:2 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sda3 8:3 0 12G 0 part
└─md125 9:125 0 12G 0 raid1 /
sdb 8:16 0 15G 0 disk
├─sdb1 8:17 0 2G 0 part
│ └─md127 9:127 0 2G 0 raid1 [SWAP]
├─sdb2 8:18 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb3 8:19 0 12G 0 part
└─md125 9:125 0 12G 0 raid1 /
sr0 11:0 1 1024M 0 rom

В данной ситуации у нас есть 2 диска sda и sdb. Мы определили, что один из них выходит из строя и лучше его заменить. У меня это диск sda.
Как проверить жесткий диск в linux можно посмотреть в моей статье.

Посмотрим состояние нашего raid массива командой cat /proc/mdstat:

[root@localhost ~] cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb3[1] sda3[2]
12569600 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md126 : active raid1 sdb2[1] sda2[2]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sda1[2] sdb1[1]
2096128 blocks super 1.2 [2/2] [UU]

Если ваш вывод будет [_U] вместо [UU], то это значит рейд неисправен и работа одного диска уже нарушена.

Как удалить сбойный диск из RAID

Сначала нам нужно пометить диск sda как сбойный:

mdadm /dev/md125 --fail /dev/sda3
mdadm /dev/md126 --fail /dev/sda2
mdadm /dev/md127 --fail /dev/sda1

Теперь удалим разделы из нашего массива:

mdadm /dev/md125 —remove /dev/sda2
mdadm /dev/md126 —remove /dev/sda1
mdadm /dev/md127 —remove /dev/sda3

Проверим вывод команды cat /proc/mdstat и убедимся, что sda разделы удалены из массива. Далее выключаем сервер и меняем неисправный диск на новый.

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

Для определения какая таблица используется — GPT или MBR введите:

gdisk -l /dev/sdb

В выводе будет написано MBR: MBR only или GPT: present.

Как клонировать раздел linux с разметкой MBR

! В данном случае sdb исходный диск, а sda диск назначения.

sfdisk -d /dev/sdb | sfdisk --force /dev/sda:

Как клонировать раздел linux с разметкой GPT

! При использовании этой команды на sdb диск мы копируем разметку с диска sda

sgdisk -R /dev/sdb /dev/sda

Проверим нашу новую разметку, она должна совпадать на обоих дисках:

[root@localhost ~]# fdisk -l | grep dev
Disk /dev/sda: 16.1 GB, 16106127360 bytes, 31457280 sectors
/dev/sda1 2048 4200447 2099200 fd Linux raid autodetect
/dev/sda2 * 4200448 6299647 1049600 fd Linux raid autodetect
/dev/sda3 6299648 31457279 12578816 fd Linux raid autodetect
Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
/dev/sdb1 2048 4200447 2099200 fd Linux raid autodetect
/dev/sdb2 * 4200448 6299647 1049600 fd Linux raid autodetect
/dev/sdb3 6299648 31457279 12578816 fd Linux raid autodetect

После разметки все готово, чтобы добавить новый диск в наш программный RAID 1.

Как добавить диск в массив RAID

Теперь добавим наши новые разделы в RAID:

mdadm /dev/md125 --add /dev/sda3
mdadm /dev/md126 --add /dev/sda2
mdadm /dev/md127 --add /dev/sda1

Статус синхронизации можно проверить несколькими командами:

cat /proc/mdstat и более детально mdadm —detail /dev/md125

Установка загрузчика grub2 на новый диск

В завершении всего нужно установить grub на новый диск и обновить конфигурацию.

grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

Теперь можно смело сделать ребут и проверить, что сервер загружается.

Подробное описание команд утилиты MDADM.

Оставьте комментарий