воскресенье, 1 ноября 2009 г.

Программный (soft) RAID массив.

Есть два диска. Грузимся с DVD и с одним диском устанавливаем slackware как обычно.

Создаем через cfdisk или fdisk идентичные разделы, или c помощью sfdisk автоматически копируем структуру разделов первого диска /dev/sda:
sfdisk -d /dev/sda | sfdisk /dev/sdb

Затем на втором диске надо сделать тип разделов "Linux raid autodetect" c кодом 0xFD!!!

mdadm --create /dev/md0 -l 1 -n 2 /dev/sdb2 missing
мы создаем и запускаем райд с level=1 (-l 1) на двух дисках (-n 2) причем указываем только диск /dev/sdb2, а /dev/sda2 указываем отсутвующим (missing)
А когда закончим с созданием и загрузкой с райда, добавим второй диск (mdadm --add /dev/md0 /dev/sda2)

И так аналогично для всех остальных разделов райда. Проверить можно глянув в /proc/mdstat

Теперь создаем файловую систему на разделах райда
mkfs.ext4 -j /dev/md0
mkfs.ext4 -j /dev/md1
и т.д.

Создадим файлик с конфигами (хотя как говорят, смысла в этом особого нет, все и так работает)
mdadm --detail --scan > /etc/mdadm.conf
можно скопировать предварительно старый

Создадим каталог для переноса файлов на райд
mkdir /mnt/raid
и смонтируем его и прочие каталоги райда (глянте в fstab)
в моем случае все два раздела - корень и /var т.е.

mount /dev/md0 /mnt/raid
mkdir /mnt/raid/var
mount /dev/md1 /mnt/raid/var

Ну а теперь копируем (с сохранением ВСЕХ атрибутов, ключ -a) все и вся (перечень каталогов с ключиком -r) с нашей работающей системы на райд. КРОМЕ каталогов /dev /proc /sys - их система создает динамически (я их создаю руками, не забыть права 755 = dev,sys 555 = proc). Ну и с /mnt вручную перекинуть, что бы не утворить рекурсивное копирование райда в самого в себя (вряд ли получиться)

cp -ar bin home и т.д. /mnt/raid

Теперь надо на разделе с райдом (/mnt/raid/) подкрутить /etc/fstab и отредактировать его на использование для корня /dev/md0 и для /var /dev/md1

Еще один "сложный" момент загрузчик lilo
boot = /dev/md0
raid-extra-boot = /dev/sda,/dev/sdb #потом поменяем, когда полностью поднимем райд на mbr, а можем и не менять
root = /dev/md0
Что бы установить новый загрузчик придется передать ему параметр -r с новым корневым каталогом (/mnt/raid), а так же параметр -H, т.к. не оба диска включены в райд
И еще надо пробросить /dev в /mnt/raid/dev
mount /dev /mnt/raid/dev -o bind
и вот теперь
lilo -H -r /mnt/raid
лило поругается

Теперь добавим недостающие диски в райд, для этого поменяем их тип с помощью fdisk на fd, а затем
mdadm --add /dev/md0 -/dev/sda2
и так для всех остальных дисков
Можно посмотреть на процес зеркалирования в /proc/mdstat

Есть альтернативны способ с помощью raidtools http://people.redhat.com/mingo/raidtools/
В общем про установку райда все.

Теперь если случилось страшное и один из дисков "заболел"
http://meandubuntu.ru/2009/04/mdadm-%D0%B1%D0%B8%D1%82%D1%8B%D0%B9-%D0%B4%D0%B8%D1%81%D0%BA-%D0%B1%D0%B5%D0%B7-%D0%BF%D0%B0%D0%BD%D0%B8%D0%BA%D0%B8/ - это статья о том, что SMART может повлиять на монтирование софт райда и как это можно побороть. Цитата:
"Поставив пакет smartmontools, я вывел всю инфу по сбойному диску, в которой не нашел никаких отклонений. После некоторых раздумий, я запустил тест диска по команде smartctl –test=short /dev/sdb… Пришлось ждать целых 2 минут, пока закончится тестирование " После этого у автора собрался и заработал райд, а до этого падал mdadm с ошибкой "faulty spare rebuilding"

Если уж совсем все плохо с диском, то его надо пометить сбойным (он и так уже будет помечен) и отключить.
mdadm --fail /dev/md0 /dev/sdb1
mdadm --remove /dev/md0 /dev/sdb1
затем заменить диск, "разбить" его и добавить к райду
mdadm --add ........

Ну и еще такой момент: JBD: barrier-based sync failed on md1 – disabling barriers
Такое вот предупреждение выдает dmesg. Вообщем то с этим жить можно. Можно решить проблему добавив в параметры монтирования фс barrier=0. Вот здесь есть инфо (англ) http://kernelnewbies.org/Ext4

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

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