Skip to content


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

RAID will also not help you preserve your data if the server holding the RAID itself is lost in one way or the other (theft, flooding, earthquake, Martian invasion etc.)
(из Software-RAID-HOWTO)

Есть программный 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
Квартира загородная недвижимость купить участок загородная жилая недвижимость. .

Размещено в категории *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