🔙 вернуться к началу...

Работа с программным RAID

См. так же

Настройка LVM

А так же

горячее подключение SATA-дисков.

В случае, если необходимо загружать систему с корнем на

RAID1

Создаём раздел

Важно: при создании рейда на разделе нужно помнить, что mdraid хранит свою мета-информацию вконце блочного устройства, на котором он создаётся. В результате последний раздел на диске должен заканчиваться на мегабайт раньше, чем заканчивается сам диск - иначе mdadm может спутать рейд на последнем разделе и рейд на всём диске. И даже если на всём диске нет рейда, а рейд только на последнем разделе - будет путаница.

ВЫВОД: Конец последнего раздела должен отступать от конца диска на не менее чем на 100 кБ - лучше 1 Мб

Создаём раздел на диске размером ровно 730 Гб (730*1024=747520 Мб) для того, чтобы потом не зависить от размера винта (в случае, если бы содали максимально большой раздел для нашего винта):

fdisk /dev/sdc

Более того, раздел, отдаваемый под рейд необходимо делать не до конца диска, а с отступом от конца диска на не менее 128 Кб. Это необходимо потому, что суперблок рейда создаётся в конце раздела или в конце диска, если под рейд отдаётся весь диск. Но т.к. конец всего диска является и концом же последнего раздела на этом диске, то суперблок рейда из последних разделов будет совпадать с суперблоком рейда, созданного на всём диске. При автосборке рейда при загрузке системы возникнут ошибки, т.к. система "увидит" два одинаковых рейда - с одинаковыми суперблоками.

Клонирование разделов

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

sfdisk -d /dev/sda | sfdisk /dev/sdb

Взято по

ссылке.

В случае больших дисков с GPT, нужно использовать утилиты из пакета **gdisk** (apt-get install gdisk):

  sgdisk -R=/dev/sdh /dev/sda
  sgdisk -G /dev/sdh

Где:

Диски более 2Тб

Таблица MBR имеет ограничение в 2Тб на диск. Поэтому, в случае, если используется диск размером более 2Тб - необходимо использовать таблицу разделов

GPT.

Очищаем ранее созданный raid-суперблок

Если насоздавать множество рейдов (в процессе экспериментирования), то при автоматической сборке рейда (на этапе загрузки) рейд может быть собран неправильно - из новых и из "старых" разделов. Чтобы исключить данный вариант развития событий необходимо очищать суперблок рейда на соответствующем блочном устройстве, если он не нужен:

mdadm --zero-superblock /dev/sda

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

Тестирование обнаружения рейда на блочном устройстве выполняется командой:

mdadm --examine /dev/sda

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

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

Создаём RAID

Создаем RAID1 из этих разделов:

mdadm --create /dev/md1 --metadata=0.90 --verbose -l 1 -n 2 /dev/sdc1 /dev/sdd1

Где:

Если же на данный момент присутствует только один диск, то взамен второго нужно поставить ключевое слово missing:

mdadm --create /dev/md1 --metadata=0.90 --verbose -l 1 -n 2 /dev/sdc1 missing

Позже, когда появится второй диск, добавить его в RAID можно командой:

mdadm --manage --add /dev/md1 /dev/sdd1

или

mdadm -a /dev/md1 /dev/sdd1

Создаём RAID5

Рейд стоит создавать только на разделах, не на полных винтах.

Допустим у нас есть 6 дисков, из которых 5 мы хотим отдать под RAID5, а 6-й - в горячую замену.

mdadm --create /dev/md1 --metadata=0.90 --level=5 --raid-devices=5 /dev/sda3 /dev/sdb3 /dev/sdc3 /dev/sdd3 /dev/sde3 --spare-devices=1 /dev/sdf3

Где:

Получаем информацию о рейде:

mdadm --misc --detail /dev/md0

Сохраняем конфигурацию:

mdadm --detail --scan >> /etc/mdadm.conf

короткая форма комманды

mdadm -D -s >> /etc/mdadm.conf

Получение информации о вновь созданном RAID

mdadm --detail /dev/md1

или

mdadm -D /dev/md1

Можно сохранить её для потомков в:

mdadm --detail /dev/md1 > /etc/raidtab

Копируем конфигураци RAID

Перед этим можно посмотреть что там, чтобы знать что удалять, если уже там были записи, т.к. информация будет по всем RAID-устройствам в системе:

mdadm --detail --scan >> /etc/mdadm.conf

Сборка уже существующего рейда:

Пробуем автоматически запустить raid:

mdadm --assemble --scan

или более короткая форма

mdadm -A -s

Эта команда запустит ещё не запущенные рейды. Даже если есть всего один диск из двух.

raid0

Добавление диска в запущенный raid:

mdadm --assemble /dev/md0 /dev/sda2 /dev/sdb2

raid5

mdadm --assemble /dev/md1 /dev/sda3 /dev/sdb3 /dev/sdc3 /dev/sdd3 /dev/sde3 /dev/sdf3

Востановление рейда

Замена сбойного диска в рейде

Помечаем /dev/sdb1 как сбойный:

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

или краткая форма

mdadm -f /dev/md0 /dev/sdb1

Если проблема в кабеле подключения жесткого диска и она решена, то возрат в рейд осуществляется

mdadm --re-add /dev/md0 /dev/sdb1

Выводим его из рейда:

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

краткая форма

mdadm -r /dev/md0 /dev/sdb1

Определяем какой именно винт нужно физически заменять:

ls -l /dev/disk/by-id/

Ищем наш sdb:

ls -l /dev/disk/by-id/|egrep sdb$

Получаем:

lrwxrwxrwx 1 root root  9 Ноя 13 12:19 ata-WDC_WD2002FAEX-007BA0_WD-WMAWP0467603 -> ../../sdb
lrwxrwxrwx 1 root root  9 Ноя 13 12:19 scsi-SATA_WDC_WD2002FAEX-_WD-WMAWP0467603 -> ../../sdb
lrwxrwxrwx 1 root root  9 Ноя 13 12:19 wwn-0x50014ee00369c323 -> ../../sdb

Соответственно, разобрав сервер, нам нужно будет заменить жёсткий диск модели **WDC WD2002FAEX** с идентификатором **WMAWP0467603** (на нём будет написано). Если я не напутал :-)

После этого переразбиваем (см. выше) новый винт (возможно у него будет иное имя - не /dev/sdb1) и подключаем в рейд:

mdadm --manage --add /dev/md0 /dev/sdb1

короткая форма

mdadm -a /dev/md0 /dev/sdb1

Увеличение скорости пересборки рейда

Установим минимальную

скорость в 50 Мб/сек, а максимальную в 300 Мб/cек:

echo 50000 > /proc/sys/dev/raid/speed_limit_min
echo 300000 > /proc/sys/dev/raid/speed_limit_max

Посмотреть текущую скорость ресинхронизации можно в выводе команды:

cat /proc/mdstat

Взято по

ссылке.

Просмотр статистики по существующим RAID-ам:

cat /proc/mdstat

в реальном времени, выход CTRL+C

watch cat /proc/mdstat

Создание файловой системы

В случае создания ext2/3/4:

mkfs.ext3 -b 4096 -E stride=128,stripe-width=384

Где:

Можно попробовать

калькулятор.

Горячее подключение sata

Взято

тут.

Горячее отключение:

echo 1 >/sys/block/sdX/device/delete

Горячее подключение:

echo "- - -" >/sys/class/scsi_host/hostX/scan

Ссылки

Инструкция по установке RAID в Gentoo-wiki
Оптимизация RAID6
Горячее подключение SATA-дисков.
🔙 вернуться к началу...