Создание программного RAID в Linux

Материал из Belgorod Linux User Group - Белгород

Перейти к: навигация, поиск

Создание программного RAID в Linux.

Программный RAID в Linux в бюджетном секторе решений задач хранения важных данных является более надежным чем модные ныне SATA контроллеры, и более дешевым чем дорогие SCSI и пр. аппаратные RAID. Таким образом программный Linux RAID является золотой серединой в решении по хранению данных в RAID и лучшим по соотношению цена/качество.


Содержание

Linux RAID vs SATA RAID.

Чем же так плох SATA RAID, который сейчас идет в поставке практически всех современных материнских плат? Да тем что он в большинстве бюджетных решений не является аппаратным RAID-ом, а является так называемым «программно-зависимым». Подробнее: http://linux-ata.org/faq-sata-raid.html

То есть управление данными происходит не на уровне самого «железа», а на уровне микрокода BIOS через драйвер ОС. От сюда и такие понятия как «драйвера» на SATA-RAID (без которых RAID видится как отдельные диски), от сюда и проблемы.

Во-первых это несовместимость – сгорела материнская плата, и ищи такую же плату целиком (не контроллер), нужна идентичная плата чтобы добыть свои ценные данные. Хорошо если они еще выпускаются, а если это произойдет лет через 5-10? Linux RAID лишен этой проблемы, т.к. находится на таком уровне абстракции, что ваш RAID будет «виден» на любой материнской плате и на любом дистрибутиве Linux (в разумных рамках естественно).

Во-вторых SATA RAID это доверие своих данных какому-то чужому микрокоду, который мало того что не свободен от ошибок, так еще и закрыт. В отличии от Linux RAID, открытого, испытанного уже десятилетиями и вылизанного тысячами программистов, с доступными спецификациями и исходными кодами. Плюс – беспроблемное свободное перемещение дисковых томов на различные материнские платы, долгосрочная поддержка (всем сообществом, а не отдельным конечным вендором), не требует аппаратных апгрейдов, легкость обновления, и многое другое. Подробнее: http://linux.yyz.us/why-software-raid.html


Linux RAID vs SATA и пр. аппаратный RAID

Тут в плане быстродействия конечно же выиграет аппаратный RAID. Минусы опять же – если летит контроллер, то нужен именно такой же, на котором стояли жесткие диски. Второй минус для бюджетных решений – высокая цена хорошего аппаратного RAID.

Итак, мы выбрали Linux Software RAID в качестве решения для хранения данных. Теперь опишем пример создания RAID с «зеркалированием» (mirror) на программном Linux RAID-е.


Шаг 1. cfdisk /fdisk

Мы имеем 2 жестких диска которые будут у нас представлять RAID1 с зеркалированием данных. Создаем на этих дисках разделы к примеру sdb1 и sdc1 одинакового размера под будущий RAID. Для этих целей можно использовать к примеру утилиты fdisk или cfdisk. Выставляем типы этих партиций как FD (Linux raid autodetection)


Шаг 2. Создаем RAID1

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

mdadm --create /dev/md0 --verbose -a yes -l 1 -n 2  /dev/sdb1 /dev/sdc1

Для этого нам как видно понадобилась утилита mdadm, подробнее о параметрах можно прочесть в справке по этой утилите. В данной команде -l 1 это тип RAID ( RAID1 зеркало), -n 2 – количество дисков в массиве.

Шаг 3. Детали о созданном RAID

Посмотреть детали о только что созданном RAID можно командой:

mdadm --detail /dev/md0

Далее можно записать такую информацию о RAID в файл /etc/raidtab:

raiddev /dev/md0
raid-level      1
nr-raid-disks   2
nr-spare-disks  0
persistent-superblock 1
device          /dev/sdb1
raid-disk       0
device          /dev/sdc1
raid-disk       1


(просмотрите его перед этим, возможно он уже создался таким).

Удаление

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

mdadm /dev/md0 --fail --remove /dev/sdb1
mdadm /dev/md0 --fail --remove /dev/sdc1
mdadm -S /dev/md0

Шаг 4. Конфигурация mdadm

Сконфигурировать mdadm для дальнейшей работы можно так:

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

Теперь поиск и создание устройства RAID (/dev/md0) можно будет производить по командам:

cd /dev
./MAKEDEV md
ls -l md*
mkraid /dev/md0

Но как правило этого не требуется, система сама находит и распознает программный Linux RAID.

ВНИМАНИЕ! Убедитесь что у вас в ядре включена поддержка RAID (Multiple devices driver support (RAID and LVM)) !

RAID готов

Все. На этом в принципе создание RAID завершено. Далее можно уже работать с RAID и создавать партиции на нем. Ниже приведен пример использования LVM2 на RAID, т.к. Работа с LVM на мой взгляд это наиболее гибкий инструмент для работы с партициями, но об этом в другой статье. В принципе т.к. мы уже находимся на одном уровне абстракций (программный RAID), то с LVM можно и не связываться, но это на ваш вкус.

Шаг 5. LVM на RAID

Партиция под LVM

Подготавливаем партицию под LVM2 из RAID массива. Для этого используем утилиты из пакета lvm2.

pvcreate /dev/md0

Группа томов

Создаем группу разделов и даем ей имя к примеру vg (от volume group).

vgcreate vg /dev/md0

Логические тома

Создаем логические тома:

lvcreate -L2G -nhome vg
lvcreate -L6G -nusr vg

и так далее для opt, var и пр. (см. документацию к LVM)

Активируем партиции:

vgscan
vgchange -ay
vgmknodes

Файловая система

Создаем на наших логических LVM-партициях (группа vg в /dev/vg/) файловые системы:

mkreiserfs /dev/vg/home
mkreiserfs /dev/vg/usr

и так далее..

Все.

Все. Теперь у вас /dev/vg/home уже LVM том с файловой системой raiserfs находящийся на RAID1 (зеркало).

Подключение RAID-а

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

mknod /dev/md1 b 9 1
mdadm --assemble /dev/md1 /dev/sda1 /dev/sdb1

Ссылки по теме

Интересное о программном Linux RAID :

  1. Почему именно software RAID: http://linux.yyz.us/why-software-raid.html
  2. Linux SATA FAQ: http://linux-ata.org/faq-sata-raid.html
  3. Установка Software RAID под Gentoo Linux: http://www.gentoo.org/doc/en/gentoo-x86+raid+lvm2-quickinstall.xml
  4. Установка Gentoo на программный RAID http://gentoo-wiki.com/HOWTO_Gentoo_Install_on_Software_RAID
  5. Recovering RAID and LVM http://gentoo-wiki.com/Recovering_RAID_and_LVM
Личные инструменты