Программный RAID в Linux. Тестирование и мониторинг

Ваш RAID-массив создан, собран и корректно работает, придавая надёжности хранению данных, а вам — ощущения уверенности в завтрашнем дне. Однако же, ничто не вечно, а жёсткие диски особенно. Ваша же задача, как системного администратора, состоит в том, чтобы поддерживать работу администрируемой вами системы, частью которой могут быть и RAID-массивы. О том, как и откуда получать информацию о состоянии md-массивов — в сегодняшней заметке.

Чтобы получить подробную информацию, а также узнать, в каком состоянии находится массив, можно воспользоваться опцией –detail из режима misc утилиты mdadm. Ниже предоставлен пример вывода для массива RAID-1, состоящего из трёх дисков, который мы создавали в предыдущей заметке:

# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Jan 12 12:24:16 2012
     Raid Level : raid1
     Array Size : 8387572 (8.00 GiB 8.59 GB)
  Used Dev Size : 8387572 (8.00 GiB 8.59 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Fri Jan 20 04:09:29 2012
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

           Name : debian-test0:0  (local to host debian-test0)
           UUID : a51bea1f:59677b56:1a4a2cbe:8a258729
         Events : 196
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd

Как видим, все три устройства являются активными и синхронизированными, иными словами всё хорошо. Теперь давайте представим (к сожалению, у меня нет возможности физически сломать одно из устройств, входящих в рассматриваемый массив), что один из дисков вышел из строя (вспомним, что для RAID-1/5/6 это допустимо). В случае «железных» проблем драйвер md автоматически пометит диск как сбойный и исключит его дальнейшее использование в массиве; в нашем же тестовом случае мы сделаем это программно. Итак, сделаем устройство /dev/sdcсбойным:

# mdadm --fail /dev/md0 /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0

И посмотрим, что изменилось:

# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Jan 12 12:24:16 2012
     Raid Level : raid1
     Array Size : 8387572 (8.00 GiB 8.59 GB)
  Used Dev Size : 8387572 (8.00 GiB 8.59 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Fri Jan 20 04:26:25 2012
          State : clean, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

           Name : debian-test0:0  (local to host debian-test0)
           UUID : a51bea1f:59677b56:1a4a2cbe:8a258729
         Events : 198

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       0        0        1      removed
       2       8       48        2      active sync   /dev/sdd
       1       8       32        -      faulty spare   /dev/sdc

Первое, что видим: массив стал неполным (degraded). хотя и продолжает функционировать (clean) :

State : clean, degraded

Сразу же оцениваем ситуацию. Вместо трёх активных устройств у нас осталось всего два:

Active Devices : 2
Working Devices : 2

и один диск сбойный:

Failed Devices : 1

В самом конце mdadm любезно предоставляет подробную информацию об устройствах, входящих массив, отметив что второй по счёту диск был удалён:

0       8       16        0      active sync   /dev/sdb
1       0        0        1      removed
2       8       48        2      active sync   /dev/sdd

а после — информацию об удалённом диске:

1       8       32        -      faulty spare   /dev/sdc

Из всего становится понятно, что наш RAID-1 работает на двух дисках и что надо-что-то решать с вышедшим из строя устройством. Прежде всего, его необходимо отключить от массива:

# mdadm --manage --remove /dev/md0 /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0

Далее уже по обстоятельствам. Первым делом стоит изучить содержимое логов ядра и попытаться определить причину сбоя. Причины могут быть разные, начиная от проблем с интерфейсным кабелем или питанием, до полного выхода диска из строя. Если физически с диском всё порядке и ошибка была вызвана, например, некачественным кабелем, то после её устранения и подключения диска, необходимо вернуть его в массив:

# mdadm --manage --re-add /dev/md0 /dev/sdc
mdadm: re-added /dev/sdc

Если всё в порядке, драйвер md тут же приступит к операции восстановления массива до «полного» состояния путём синхронизации данных на вернувшийся диск:

# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Jan 12 12:24:16 2012
     Raid Level : raid1
     Array Size : 8387572 (8.00 GiB 8.59 GB)
  Used Dev Size : 8387572 (8.00 GiB 8.59 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Fri Jan 20 04:57:37 2012
          State : clean, degraded, recovering
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 3% complete

           Name : debian-test0:0  (local to host debian-test0)
           UUID : a51bea1f:59677b56:1a4a2cbe:8a258729
         Events : 206
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      spare rebuilding   /dev/sdc
       2       8       48        2      active sync   /dev/sdd

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

Если же устройство, которое вышло из строя, к жизни вернуть не представляется возможным, то после замены его новым, вместо опции –re-add следует использовать опцию –add:

# mdadm --manage --add /dev/md0 /dev/sdc
mdadm: added /dev/sdc

Мониторинг

Вопрос, который возникает в первую очередь: а как, собственно, администратору узнать о том, что с массивом что-то неладно? Не заглядывать же постоянно в логи системы! Для целей мониторинга и оповещения о событиях, среди режимов работы утилиты mdadm предусмотрен режим monitor, позволяющий в качестве средств оповещения использовать как традиционный syslog, так и отправку уведомлений почтой. В этом режиме утилита, как правило, работает в режиме демона и запускается init-сценария во время старта системы.

В частности в Ubuntu/Debian запускающий сценарий называется mdadm и по-умолчанию включён. Если вы хотите получать уведомления не только в syslog, но и электронной почтой, добавьте исправьте строку в /etc/default/mdadm:

DAEMON_OPTIONS="--syslog"

на

DAEMON_OPTIONS="--syslog --mail root@localhost"

и перезапустите демон:

# service mdadm restart
Stopping MD monitoring service: mdadm --monitor.
Starting MD monitoring service: mdadm --monitor.

Тем, кому необходимо запускать mdadm в режиме монитора из собственных сценариев или же в целях тестирования, можно воспользоваться командой:

# mdadm --monitor --scan --syslog --mail root@localhost

Если же нужно, чтобы mdadm запустилась в режиме демона и не занимала консоль, просто добавьте опцию –daemonize:

# mdadm --monitor --scan --syslog --mail root@localhost --daemonize
Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Яндекс.Метрика Рейтинг@Mail.ru

Thanks: Studenthelp78