mdadm – замена жесткого диска

# uname -a
Linux sdata.imp.kiev.ua 3.10.0-1160.66.1.el7.x86_64 #1 SMP Wed May 18 16:02:34 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

На почту начали прилетать такие сообщения

....
Device: /dev/sdb [SAT], 1 Offline uncorrectable sectors

Device info:
WDC WD10EADS-11M2B2, S/N:WD-WMAV52053354, WWN:5-0014ee-259d8f05a, FW:80.00A80, 1.00 TB
....

Готовимся к замене диска. Нужно выполнить такие пункты:

  1. Удаление диска из массива
  2. Определение таблицы разделов (GPT или MBR) и перенос её на новый диск
  3. Добавление диска в массив
  4. Установка загрузчика

Определяем таблицу разделов MBR or GPT.

# gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present

Я подключил новый диск sdc заранее (т.е. сейчас в системе три диска sda и sdb – рэйд, sdc резервный ) и cкопировал разметку с рабочего диска на новый, у меня MBR.

Для MBR:

# sfdisk -d /dev/sda | sfdisk /dev/sdc

sda – старый диск, sdc – новый диск.

Для GPT:

# sgdisk -R /dev/sdc /dev/sda

Здесь наоборот, сперва новый диск sdc потом старый sda.

Смотрим состояние:

# cat /proc/mdstat
Personalities : [raid1]
md124 : active raid1 sdb5[1]
      952491008 blocks super 1.2 [2/1] [_U]
      bitmap: 7/8 pages [28KB], 65536KB chunk

md125 : active raid1 sdb3[1] sda3[0]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sda1[0]
      20970496 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdb2[1] sda2[0]
      2096128 blocks super 1.2 [2/2] [UU]

синхронизированный [UU] и не синхронизированные масивы [_U][U_]

Немного не стандартная ситуация. На здоровом диске (sda) отвалился масив md124 на разделе sda5, но он есть на заболевшем диске sdb.

Пробуем пересобрать масив:

# mdadm /dev/md124 --add /dev/sda5
mdadm: re-added /dev/sda5
# cat /proc/mdstat
Personalities : [raid1]
md124 : active raid1 sda5[0] sdb5[1]
      952491008 blocks super 1.2 [2/1] [_U]
      [>....................] recovery = 2.3% (22164480/952491008) finish=306.3min speed=50613K/sec
      bitmap: 7/8 pages [28KB], 65536KB chunk

md125 : active raid1 sdb3[1] sda3[0]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sda1[0]
      20970496 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdb2[1] sda2[0]
      2096128 blocks super 1.2 [2/2] [UU]

Получилось

# cat /proc/mdstat
Personalities : [raid1]
md124 : active raid1 sda5[0] sdb5[1]
      952491008 blocks super 1.2 [2/2] [UU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

md125 : active raid1 sdb3[1] sda3[0]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sda1[0]
      20970496 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdb2[1] sda2[0]
      2096128 blocks super 1.2 [2/2] [UU]

Теперь помечаем сбойный диск

# mdadm /dev/md125 --fail /dev/sdb3
# mdadm /dev/md124 --fail /dev/sdb5

На двух разделах получил такое сообщение

# mdadm /dev/md126 --fail /dev/sdb1
mdadm: set device faulty failed for /dev/sdb1: No such device
# mdadm /dev/md127 --fail /dev/sdb2
mdadm: set device faulty failed for /dev/sdb2: No such device

оно и понятно, диска нет в масиве.

# cat /proc/mdstat
Personalities : [raid1]
md124 : active raid1 sda5[0] sdb5[1](F)
      952491008 blocks super 1.2 [2/1] [U_]
      bitmap: 0/8 pages [0KB], 65536KB chunk

md125 : active raid1 sda3[0] sdb3[1](F)
      1047552 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sda1[0]
      20970496 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active (auto-read-only) raid1 sda2[0]
      2096128 blocks super 1.2 [2/1] [U_]

Удаляем его

# mdadm /dev/md125 --remove /dev/sdb3
# mdadm /dev/md124 --remove /dev/sdb5

Опять эти сообщения, но продолжаем

# mdadm /dev/md126 --remove /dev/sdb1
mdadm: hot remove failed for /dev/sdb1: No such device or address
# mdadm /dev/md127 --remove /dev/sdb2
mdadm: hot remove failed for /dev/sdb2: No such device or address

Проверяем

# cat /proc/mdstat
Personalities : [raid1]
md124 : active raid1 sda5[0]
      952491008 blocks super 1.2 [2/1] [U_]
      bitmap: 0/8 pages [0KB], 65536KB chunk

md125 : active raid1 sda3[0]
      1047552 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sda1[0]
      20970496 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active (auto-read-only) raid1 sda2[0]
      2096128 blocks super 1.2 [2/1] [U_]

Добавляем новый диск

# mdadm /dev/md125 --add /dev/sdc3
# mdadm /dev/md126 --add /dev/sdc1
# mdadm /dev/md127 --add /dev/sdc2
# mdadm /dev/md124 --add /dev/sdc5

Выключаем ПК убираем сбойный диск. Загружаемся и ждем синхронизацию (название нового диска изменилось с /dev/sdc на /dev/sdb)

# cat /proc/mdstat
Personalities : [raid1]
md124 : active raid1 sdb5[2] sda5[0]
      952491008 blocks super 1.2 [2/1] [U_]
      resync=DELAYED
      bitmap: 0/8 pages [0KB], 65536KB chunk

md125 : active raid1 sdb3[2] sda3[0]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sdb1[2] sda1[0]
      20970496 blocks super 1.2 [2/1] [U_]
      [============>........] recovery = 62.3% (13069184/20970496) finish=1.5min speed=87675K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdb2[2] sda2[0]
      2096128 blocks super 1.2 [2/1] [U_]
      resync=DELAYED

unused devices: <none>

Установка загрузчика

После загрузки системы, установим на диск sdb загрузчик GRUB2

# grub2-install /dev/sdb

Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом. Монтируем корневую файловую систему в  /mnt:

# mount /dev/md126 /mnt

Монтируем boot:

# mount /dev/md125 /mnt/boot

Монтируем /dev, /proc и /sys:

# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys

Затем делаем chroot в примонтированную систему:

# chroot /mnt

И устанавливаем grub на sdb:

# grub2-install /dev/sdb

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

image_pdfimage_print

Leave a Reply

Your email address will not be published. Required fields are marked *