Применимость: 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]