В пердидущей статья мы рассмотрели создание райд 1 массива и установку на него ОС. Сегодня рассмотрим утилиту  мониторинга и обслуживания райд массивов mdadm. С помощью этой утилиты можно выполнять следующие операции:

  • Create — создание RAID-массива из нескольких дисков
  • Assemble — сборка (ранее созданного) массива и его активация.
  • Build  — объединение дисков в массив (без суперблоков).
  • Manage — Управление массивом: добавление новых свободных дисков (spares) и удаление неработоспособных (faulty devices).
  • Follow/Monitor — Следить за одним или несколькими md-устройствами и реагировать на изменение их состояния.
  • Grow — расширение или уменьшение размера (shrink) массива, либо иное его реформирование (reshape).
  • Misc  — прочие операции с независимыми дисками.

В рамках данной статьи нас интересуют команды вывода состояния массива и команда Manage для оперативной замены вышедшего из строя диска.

Состояние массива.

Информацию о всех райд массивах и дисках из которых они состоят можно получить выводом файла «/proc/mdstat»

linux-g20u:/ # cat /proc/mdstat
Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0] sdb1[1]
      2095092 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md1 : active raid1 sda2[0] sdb2[1]
      6292468 blocks super 1.0 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices:
linux-g20u:/ #

Краткую информацию о райд массиве можно получить по ключу -Q

linux-g20u:/ # mdadm -Q /dev/md0
/dev/md0: 2045.99MiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
linux-g20u:/ #

Более подробную информацию получаем ключом —detail или  -D

linux-g20u:/ # mdadm -D /dev/md0
/dev/md0:
        Version : 1.0
  Creation Time : Wed Jul 27 13:48:33 2011
     Raid Level : raid1
     Array Size : 2095092 (2046.33 MiB 2145.37 MB)
  Used Dev Size : 2095092 (2046.33 MiB 2145.37 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Thu Jul 28 16:18:43 2011
          State : active
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : linux:0
           UUID : c1aeb84b:d577e3ef:eff28640:d91c9a84
         Events : 43

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
linux-g20u:/home/teis/Рабочий стол #

Из вывода команды видно что оба винта нормально функционируют, состояние active sync

А так будет выглядеть вывод команды mdadm -D /dev/md0 при одном вышедшем из строя диске

linux-g20u:/ # mdadm -D /dev/md0
/dev/md0:
        Version : 1.0
  Creation Time : Wed Jul 27 13:48:33 2011
     Raid Level : raid1
     Array Size : 2095092 (2046.33 MiB 2145.37 MB)
  Used Dev Size : 2095092 (2046.33 MiB 2145.37 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sun Jul 31 16:21:08 2011
          State : active, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           Name : linux:0
           UUID : c1aeb84b:d577e3ef:eff28640:d91c9a84
         Events : 44

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       0        0        1      removed

       1       8       17        -      faulty spare   /dev/sdb1
linux-g20u:/ #

Замена вышедшего из строя диска.

Сбойный диск следует удалить командой

mdadm --manage /dev/md0 --remove /dev/sdb1

а также не следует забывать, что sdb1 является логическим разделом жесткого диска, на этомже физическом диске могут находится разделы sdb2 и т.д. Их все тоже следует удалить из райд массивов если они в них еще находятся. После этого можно заменить сбойный диск новым, разметить его partitioner-ом или другой программой разметки соответственно разделам райд массива и выполнить команду

linux-g20u:/ # mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

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

linux-g20u:/ # mdadm -D /dev/md0
/dev/md0:
        Version : 1.0
  Creation Time : Wed Jul 27 13:48:33 2011
     Raid Level : raid1
     Array Size : 2095092 (2046.33 MiB 2145.37 MB)
  Used Dev Size : 2095092 (2046.33 MiB 2145.37 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sun Jul 31 16:38:51 2011
          State : active, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 9% complete

           Name : linux:0
           UUID : c1aeb84b:d577e3ef:eff28640:d91c9a84
         Events : 68

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       2       8       17        1      spare rebuilding   /dev/sdb1
linux-g20u:/ #

Порядок, новый диск добавляется в массив. Операция происходит в фоновом режиме, время до полного добавления зависит от объема и скорости диска. После этого он опять перейдет в состояние active sync.

PS в редких случаях диск один из дисков может перейти в состояние failed  ,без физической неисправности поэтому перед физической заменой жесткого диска стоит попробовать удалить диск с состоянием failed и добавить его снова командами —remove —add , если он снова перейдет в состояние failed то необходима физическая замена диска.

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

mdadm --manage /dev/md0 --fail /dev/sdb1

и только после этого этот диск можно будет удалить командой

mdadm --manage /dev/md0 --remove /dev/sdb1