Skip to content


Программный RAID в Linux

Есть программный RAID-массив уровня 1. Однажды сервер прислал письмо, что с RAID-ом проблемы:

Date: Mon, 14 Jun 2010 11:18:44 +0300
From: mdadm monitoring <root@some.server.org>
To: root@some.server.org
Subject: DegradedArray event on /dev/md1:some.server.org

This is an automatically generated mail message from mdadm running on some.server.org
A DegradedArray event had been detected on md device /dev/md1.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid1] [raid6] [raid5] [raid4] [raid0]
md1 : active raid1 sdb1[0]
156288256 blocks [2/1] [U_]
md0 : active raid1 sdc3[1] sda3[0]
4192896 blocks [2/2] [UU]
unused devices: <none>

Здесь видно, что у массива md1 отвалился один из двух компонентов (знак подчеркивания вместо буквы U в /proc/mdstat). Через fdisk -l вычисляем имя второго компонента массива и видим, что на устройстве /dev/sdd вообще отсутствуют разделы:

  1. [root@~]# fdisk -l /dev/sdd
  2. Диск /dev/sdd: 160.0 ГБ, 160041885696 байт
  3. 255 heads, 63 sectors/track, 19457 cylinders
  4. Единицы = цилиндры по 16065 * 512 = 8225280 байт
  5. На диске /dev/sdd отсутствует верная таблица разделов

Для сравнения смотрим на второй диск массива:

  1. [root@~]# fdisk -l /dev/sdb
  2. Диск /dev/sdb: 160.0 ГБ, 160041885696 байт
  3. 255 heads, 63 sectors/track, 19457 cylinders
  4. Единицы = цилиндры по 16065 * 512 = 8225280 байт
  5. Устр-во Загр   Начало    Конец      Блоки  Id  Система
  6. /dev/sdb1  *        1    19457  156288321  fd  Автоопределение Linux raid

Следовательно, нужно содать на sdd раздел типа «fd» (linux raid autodetect) и добавить этот раздел в массив.

  1. [root@~]# fdisk /dev/sdd
  2. Команда (m для справки): n
  3. Действие команды
  4.    e   расширенный
  5.    p   основной раздел (1-4)
  6. p
  7. Номер раздела (1-4): 1
  8. Первый цилиндр (1-19457, по умолчанию 1):
  9. Используется значение по умолчанию 1
  10. Последний цилиндр или +size или +sizeM или +sizeK (по умолчанию 19457):
  11. Используется значение по умолчанию 19457
  12. Команда (m для справки): t
  13. Выбранный раздел 1
  14. Шестнадцатеричный код (введите L для получения списка кодов): fd
  15. Системный тип раздела 1 изменен на fd (Автоопределение Linux raid)
  16. Команда (m для справки): w
  17. Таблица разделов была изменена!
  18. Вызывается ioctl() для перечитывания таблицы разделов.
  19. Синхронизируются диски.
  20.  
  21. [root@ ~]# fdisk -l /dev/sdd
  22. Диск /dev/sdd: 160.0 ГБ, 160041885696 байт
  23. 255 heads, 63 sectors/track, 19457 cylinders
  24. Единицы = цилиндры по 16065 * 512 = 8225280 байт
  25. Устр-во Загр   Начало    Конец      Блоки  Id  Система
  26. /dev/sdd1           1    19457  156288321  fd  Автоопределение Linux raid
  27.  
  28. [root@~]# mdadm --manage /dev/md1 --add /dev/sdd1
  29. mdadm: re-added /dev/sdd1

Далее смотрим в /proc/mdstat и видим, что массив начал синхронизацию:

Personalities : [raid1] [raid6] [raid5] [raid4] [raid0]
md1 : active raid1 sdd1[2] sdb1[0]
  1562882 blocks [2/1] [U_]
  [===========>...] recovery = 76% (1194268/1562882) finish=4.3min speed=42M/sec

А если один из компонентов массива переходит в статус «Failed», то обычно помогает его ручное удаление из массива, а затем – добавление заново. Например:

  1. [root@~]# grep md1 /proc/mdstat -A 1
  2. md1 : active raid1 sdb1[1] sdd1[2](F)
  3.       14659200 blocks [2/1] [_U]
  4.  
  5. [root@~]# mdadm --manage /dev/md1 --remove /dev/sdd1
  6. [root@~]# mdadm --manage /dev/md1 --add /dev/sdd1

Чтобы управлять скоростью синхронизации, есть в ядре 2 параметра:

  1. $ cat /proc/sys/dev/raid/speed_limit_min
  2. 1000
  3. $ cat /proc/sys/dev/raid/speed_limit_max
  4. 200000

Это значения по умолчанию (в Кбайт/сек). Если нужно ускорить процесс, то делаем примерно так:

  1. echo 200000 > /proc/sys/dev/raid/speed_limit_min

Популярность: 3%

Похожие заметки:

  1. Как заставить sudo сохранять $HOME
  2. Как установить linux с флешки
  3. Толкование и лечение ошибок ядра из dmesg в Linux
  4. Пересборка initrd

Размещено в категории *nix, Howto. Теги: , .

Комментариев: 1

Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.

  1. Тодоров said

    Здравствуйте, спасибо, полезная заметка. К слову, если диски raid-массива имеют достаточно сложную разметку, то проще воспользоваться командой sfdisk, что-то типа:
    sfdisk -d --force /dev/sda | sfdisk /dev/sdb
    опция --force иногда требуется для нестандартных разметок, скажем, если используются винчестеры WD с 4 кб секторами.

Some HTML is OK

(required)

(required, but never shared)

, или ответить через trackback.

Страница 1 из 11