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

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

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


Задача:

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

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

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

Решение:

1. Определение неисправного диска

Каждый час демон 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>

2. Определение расположения диска

Вы знаете, что, например, неисправен диск 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]

Смотрите также: