Иногда жесткий диск может выйти из строя, поэтому необходимо будет произвести его замену. Неисправный диск находится в программном RAID.
Первоначальные настройки системы
# cat /proc/mdstat Personalities : [raid1] md3 : active raid1 sda4[0] sdb4[1] 1825462115 blocks super 1.2 [2/2] [UU] md2 : active raid1 sda3[0] sdb3[1] 1071742644 blocks super 1.2 [2/2] [UU] md1 : active raid1 sda2[0] sdb2[1] 524186 blocks super 1.2 [2/2] [UU] md0 : active raid1 sda1[0] sdb1[1] 335467726 blocks super 1.2 [2/2] [UU] unused devices: <none>
Соответсвие масивов:
/ использует /dev/md2
/boot использует /dev/md1
swap использует /dev/md0
/home использует /dev/md3
Предположим из строя вышел диск /dev/sdb. [U_] или [_U] отображается для не синхронизированного массива. Когда с массивом все хорошо он отображается как [UU]. Соответственно в нашем случае будет такая картина:
# cat /proc/mdstat Personalities : [raid1] md3 : active raid1 sda4[0] sdb4[1](F) 1825462115 blocks super 1.2 [2/1] [U_] md2 : active raid1 sda3[0] sdb3[1](F) 1071742644 blocks super 1.2 [2/1] [U_] md1 : active raid1 sda2[0] sdb2[1](F) 524186 blocks super 1.2 [2/1] [U_] md0 : active raid1 sda1[0] sdb1[1](F) 335467726 blocks super 1.2 [2/1] [U_] unused devices: <none>
Изменения в программный RAID, вносятся с работающей системы.Вышедший из строя диск может и не отображаться в массиве.
Изъятие неисправного диска
Перед заменой на новый диск, в программном RAID следует удалить неисправный из RAID массива. Действия необходимо повторить для каждого раздела.
# mdadm /dev/md0 -r /dev/sdb1 # mdadm /dev/md1 -r /dev/sdb2 # mdadm /dev/md2 -r /dev/sdb3 # mdadm /dev/md3 -r /dev/sdb4
Просмотрим диски входящие в массив.
# mdadm --detail /dev/md0
Иногда жеский диск может быть неисправен, но при этом например только /dev/md0 со статусом [U_] все остальные [UU]. Поэтому комманда
# mdadm /dev/md1 -r /dev/sdb2
не подойдет, потому что устройство /dev/md1 показывает не поврежденным. Для того что бы исправить такую ситуацию, в начале необходимо запустить комманду
# mdadm --manage /dev/md1 --fail /dev/sdb2
После чего статус изменится [U_]
Подготовка нового диска
Диски в массиве должны быть одинаково разбиты. Утилиты копирования разделов используются в соответствии с типом таблицы (MBR или GPT). Обычно GPT используют с дисками более 2ТБ.
Диск с GPT
Для редактирования необходимо использовать утилиты с поддержкой GPT таблиц. Например GPT fdisk, parter. Sdisk позволяет скопировать таблицу разделов на новый диск. Например скопирует таблису с диска sda на sdb
sgdisk -R /dev/sdb /dev/sda
Далее генерируем диску случайный UUID
sgdisk -G /dev/sdb
После чего диск можно добавлять в массив и установить на него загружчик.
Диск с MBR
Таблица может быть просто скопирована с sda на sbd с помощью команды sfdisk
# sfdisk -d /dev/sda | sfdisk /dev/sdb
Иногда, если разделы не видны в системы, то таблицу разделов необходимо перечитать
# sfdisk -R /dev/sdb
Замена диска
После того как несправный диск удален, нужно добавить новый, комманду повторить для каждого раздела
# mdadm /dev/md0 -a /dev/sdb1 # mdadm /dev/md1 -a /dev/sdb2 # mdadm /dev/md2 -a /dev/sdb3 # mdadm /dev/md3 -a /dev/sdb4
Замененный диск как часть массива будет синхронизирован. В зависимости от размера синхронизация займет некоторое время. Процент выполнения синхронизации можно посмотреть командой cat /proc/mdstat.
cat /proc/mdstat Personalities : [raid1] md3 : active raid1 sdb4[1] sda4[0] 1028096 blocks [2/2] [UU] [==========>..........] resync = 50.0% (514048/1028096) finish=97.3min speed=65787K/sec md2 : active raid1 sdb3[1] sda3[0] 208768 blocks [2/2] [UU] md1 : active raid1 sdb2[1] sda2[0] 2104448 blocks [2/2] [UU] md0 : active raid1 sdb1[1] sda1[0] 208768 blocks [2/2] [UU]
Установка загрузчика
Если ремонт происходит на загруженной системе, то установку можно выполнить коммандой для GRUB2
grub-install /dev/sdb
Если используется устаревшая версия GRUB1, то дейчтвий потребуется больше
- запустить grub
- Указать раздел, /boot: root (hd0,1) (/dev/sda2 = (hd0,1))
- Записать загрузчик в MBR: setup (hd0)
- Для того чтобы записать загрузчик на второй жёсткий диск:
- Переключить grub на sdb: device (hd0) /dev/sdb
- Gовторить шаги 2 и 3
- Выйти из консоли grub: quit
Probing devices to guess BIOS drives. This may take a long time. GNU GRUB version 0.97 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename.] grub> device (hd0) /dev/sdb device (hd0) /dev/sdb grub> root (hd0,1) root (hd0,1) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd0) setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 26 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+26 p (hd0,1)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded Done. grub> quit