Создание программного RAID в Linux
Программный RAID в Linux в бюджетном секторе решений задач хранения важных данных является более надежным чем модные ныне SATA контроллеры, и более дешевым чем дорогие SCSI и пр. аппаратные RAID. Таким образом программный Linux RAID является золотой серединой в решении по хранению данных в RAID и лучшим по соотношению цена/качество.
Linux RAID vs SATA RAID.
Чем же так плох SATA RAID, который сейчас идет в поставке практически всех современных материнских плат? Да тем что он в большинстве бюджетных решений не является аппаратным RAID-ом, а является так называемым «программно-зависимым».
То есть управление данными происходит не на уровне самого «железа», а на уровне микрокода BIOS через драйвер ОС. От сюда и такие понятия как «драйвера» на SATA-RAID (без которых RAID видится как отдельные диски), от сюда и проблемы.
Во-первых это несовместимость – сгорела материнская плата, и ищи такую же плату целиком (не контроллер), нужна идентичная плата чтобы добыть свои ценные данные. Хорошо если они еще выпускаются, а если это произойдет лет через 5-10? Linux RAID лишен этой проблемы, т.к. находится на таком уровне абстракции, что ваш RAID будет «виден» на любой материнской плате и на любом дистрибутиве Linux (в разумных рамках естественно).
Во-вторых SATA RAID это доверие своих данных какому-то чужому микрокоду, который мало того что не свободен от ошибок, так еще и закрыт. В отличии от Linux RAID, открытого, испытанного уже десятилетиями и вылизанного тысячами программистов, с доступными спецификациями и исходными кодами. Плюс – беспроблемное свободное перемещение дисковых томов на различные материнские платы, долгосрочная поддержка (всем сообществом, а не отдельным конечным вендором), не требует аппаратных апгрейдов, легкость обновления, и многое другое.
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 -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
(просмотрите его перед этим, возможно он уже создался таким).
Шаг 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
Оригинал статьи лежит здесь: http://mylinux.nnm.ru/sozdanie_programmnogo_raid_v_linux