Colobridge WIKI

замена диска в программном raid1

Применимость: Linux

Слова для поиска: зеркало, сбойный диск


Вы получаете сообщения о росте ошибок диска от демона smartd или есть другие признаки, что один из дисков неисправен.

Так или иначе требуется замена диска.

Как это сделать без остановки сервера?

Каждый час демон smartd проверяет счетчики ошибок если вы настроили его заранее. Смотрите статью - мониторинг состояния дисков smartd

Демон будет писать уведомления в логи и отправлять почтовые уведомления.

Если уведомления о росте числа ошибок появляются несколько раз в день, то это причина для беспокойства.

пример сообщений в системном журнале

Nov 19 12:25:02 server1 smartd[1949]: Device: /dev/sdb [SAT], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 82 to 83
Nov 19 12:25:02 server1 smartd[1949]: Device: /dev/sdb [SAT], SMART Usage Attribute: 195 Hardware_ECC_Recovered changed from 118 to 119

Проверьте состояние массива

cat /proc/mdstat 
Personalities : [raid1] 
md2 : active raid1 sda3[0](F) sdb3[1]
      956741496 blocks super 1.2 [2/1] [_U]
      
md1 : active raid1 sda2[0](F) sdb2[1]
      19529656 blocks super 1.2 [2/1] [_U]
      
md0 : active raid1 sda1[0](F) sdb1[1]
      487412 blocks super 1.2 [2/1] [_U]
      
unused devices: <none>

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

Для этого можно использовать команду

dd if=/dev/sdX of=/dev/null

На указанном диске загорится лампочка активности. Если сбойный диск вообще мертв, идентифицируйте живой диск и методом исключения определите где мертвый. Главное знать точно где какой диск и не перепутать.

Не торопитесь сразу выдергивать диск. Лучше сперва вывести его из конфигурации массива. Выполните эти команды для каждого раздела и для каждого соответствующего раздела:

Пометить диск как сбойный:

mdadm --manage /dev/mdX --fail /dev/sdbX

Отключить раздел:

mdadm --manage /dev/mdX --remove /dev/sdbX
Будьте крайне внимательны.

После удаления диска проверьте состояние массивов

cat /proc/mdstat

cat /proc/mdstat 
Personalities : [raid1] 
md2 : active raid1 sdb3[1]
      956741496 blocks super 1.2 [2/1] [_U]
      
md1 : active raid1 sdb2[1]
      19529656 blocks super 1.2 [2/1] [_U]
      
md0 : active raid1 sdb1[1]
      487412 blocks super 1.2 [2/1] [_U]

В этом примере остался в работе диск sdb.

Если Вы не уверены, что ваш сервер поддерживает Горячую Замену Дисков (Hot-Swap) нужно обязательно сервер выключить, вынуть неисправный диск и вставить исправный на его место и включить сервер. Если поддержка есть, то это можно сделать без отключения.

Оба диска должны иметь идентичные разделы и mbr

Копирование MBR

dd if=/dev/sda of=/dev/sdb bs=512 count=1
НЕ ПЕРЕПУТАЙТЕ ИМЕНА ДИСКОВ

Надо скопировать таблицу разделов на новый диск этой командой:

sfdisk -d /dev/sd? | sfdisk --Linux /dev/sdX

Добавить каждый раздел нового диска в соответствующий массив:

mdadm --manage /dev/mdX --add /dev/sdbX

Убедиться что идет синхронизация

Синхронизация

cat /proc/mdstat 
Personalities : [raid1] 
md2 : active raid1 sdb3[2] sda3[0]
      960744312 blocks super 1.2 [2/1] [U_]
      	resync=DELAYED
      
md1 : active raid1 sdb2[2] sda2[0]
      15624120 blocks super 1.2 [2/1] [U_]
      [========>............]  recovery = 44.1% (6902400/15624120) finish=131.8min speed=1101K/sec
      
md0 : active raid1 sdb1[2] sda1[0]
      390132 blocks super 1.2 [2/2] [UU]