Замена отказавшего жёсткого диска в программном RAID в Linux
Для начала установим GDISK.
Debian и Ubuntu
apt-get install gdisk
RedHat(CentOS)
yum install gdisk
Установка SMARTCTL
Debian и Ubuntu
sudo apt-get install smartmontools
RedHat(CentOS)
yum install smartmontools
1. Вводная
Есть 2-ва жестких диска, с разделами /dev/sda и /dev/sdb, с разделами /dev/sda1, /dev/sda2, /dev/sda3 и /dev/sdb1, /dev/sdb2, /dev/sdb3.
/dev/sda1 and /dev/sdb1 загрузочный диск
/dev/sda2 and /dev/sdb2 создают массив RAID1 /dev/md1.
/dev/sda3 and /dev/sdb3 создают массив RAID1 /dev/md2.
/dev/sda2 + /dev/sdb2 = /dev/md1
/dev/sda3 + /dev/sdb3 = /dev/md2
2. Как узнать что необходимо заменить диск
Проверяем исправность массива
cat /proc/mdstat
В штатном режиме видим [UU], если видим [U_] - 2-й диск не исправен
smartctl -q errorsonly -a /dev/sdb
В зависимости от ошибок принимаем решение о замене диска.
3. Удаление неисправного жесткого диска
Для удаления /dev/sdb, пометим /dev/sdb2 и /dev/sdb3 как неисправные и удалим их из соответствующих массивов RAID (/dev/md1 и /dev/md2).
Для начала отметим /dev/sdb2 как неисправный:
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
Проверяем
cat /proc/mdstat
Вывод
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1] (F)
1047552 blocks super 1.2 [2/2] [U_]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sda3[0] sdb3[1] (F)
3905836032 blocks super 1.2 [2/2] [U_]
bitmap: 5/30 pages [20KB], 65536KB chunk
unused devices:
Удаляем разделы из массива
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Personalities : [raid1]
md1 : active raid1 sda2[0]
1047552 blocks super 1.2 [2/1] [U_]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sda3[0]
3905836032 blocks super 1.2 [2/1] [U_]
bitmap: 5/30 pages [20KB], 65536KB chunk
unused devices:
В случае если не поддерживается горячая замена диска то выключаем систему
shutdown -h now
4. Добавляем новый жесткий диск
После загрузки системы производим перенос схемы разделов с 1-го диска на новый диск, для того используем gdisk
Создаем резервную копию разделов в папку /root/
sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb
sgdisk -R /dev/sdb /dev/sda
sdgisk -G /dev/sdb
sgdisk -p /dev/sda
sgdisk -p /dev/sdb
mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2
mdadm --manage /dev/md1 --add /dev/sdb3
mdadm: re-added /dev/sdb3
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
1047552 blocks super 1.2 [2/1] [U_]
[========>] recovery = 99.9% (1047052/1047552) finish=2.8min speed=127535K/sec
md2 : active raid1 sda3[0] sdb3[1]
3905836032 blocks super 1.2 [2/1] [U_]
[========>] recovery = 99.9% (3905830032/3905836032) finish=2.8min speed=127535K/sec
unused devices:
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sda3[0] sdb3[1]
3905836032 blocks super 1.2 [2/2] [UU]
bitmap: 5/30 pages [20KB], 65536KB chunk
unused devices:
5. Копируем загрузочный диск
dd if=/dev/sda1 of=/dev/sdb1