Иногда жесткий диск может выйти из строя, поэтому необходимо будет произвести его замену. Неисправный диск находится в программном 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