Программный RAID.
Управление программным RAID-массивом в Linux выполняется с помощью программы mdadm.
У программы mdadm есть несколько режимов работы.
Assemble (сборка) Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам.
Build (построение) Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются.
Create (создание) Создать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве.
Monitor (наблюдение) Следить за изменением состояния устройств. Для RAID0 этот режим не имеет смысла.
Grow (расширение или уменьшение) Расширение или уменьшение массива, включаются или удаляются новые диски.
Incremental Assembly (инкрементальная сборка) Добавление диска в массив.
Manage (управление) Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного.
Misc (разное) Действия, которые не относятся ни к одному из перечисленных выше режимов работы.
Auto-detect (автоообнаружение) Активация автоматически обнаруживаемых массивов в ядре Linux.
Формат вызова
mdadm [mode] [array] [options]
Режимы:
-A, –assemble — режим сборки
-B, –build — режим построения
-C, –create — режим создания
-F, –follow, –monitor — режим наблюдения
-G, –grow — режим расширения
-I, –incremental — режим инкрементальной сборки
Настройка SoftRAID.
Будем настраивать RAID 0,1,5
Для настройки нам понадобится 3 диска.
/dev/sdb
/dev/sdc
/dev/sde
Разобьем каждый из дисков на 3 раздела, средствами fdisk (разбиение должно быть одинаково на всех дисках). Средствами fdisk пометим разделы как RAID (идентификатор - fd).
Непосредственно создание массива выполняется командой:
Для RAID 5
mdadm –create –verbose /dev/md0 –level=5 –raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sde1
Для RAID 0
mdadm –create –verbose /dev/md1 –level=0 –raid-devices=2 /dev/sdb2 /dev/sdc2
Для RAID 1
mdadm –create –verbose /dev/md2 –level=1 –raid-devices=2 /dev/sdb3 /dev/sdc3
Для отображения процесса сборки и состояния можно посмотреть файл /proc/mdstat
cat /proc/mdstat
Настройка конфигурационного файла mdadm.conf :
Для генерации строк которые нужно добавить в этот файл нужно выполнить команду:
mdadm –detail –scan –verbose
и записать ее вывод в конфигурационный файл.
Обслуживание массива
Удаление сбойного диска
Сбойный диск можно удалить с помощью ключа –remove (-r):
%# mdadm /dev/md0 --remove /dev/hde1 %# mdadm /dev/md0 -r /dev/hde1
Добавление нового диска
Добавить новый диск в массив можно с помощью ключей –add (-a) и –re-add:
%# mdadm /dev/md0 --add /dev/hde1 %# mdadm /dev/md0 -a /dev/hde1
Сборка существующего массива
Собрать существующий массив можно с помощью mdadm –assemble. Как дополнительный аргумент указывается, нужно ли выполнять сканирование устройств, и если нет, то какие устройства нужно собирать.
%# mdadm --assemble /dev/md0 /dev/hde1 /dev/hdf2 /dev/hdg1 %# mdadm --assemble --scan
Расширение массива
Расширить массив можно с помощью ключа –grow (-G). Сначала добавляется диск, а потом массив расширяется:
%# mdadm /dev/md0 --add /dev/hdh2
Проверяем, что диск (раздел) добавился:
%# mdadm --detail /dev/md0 %# cat /proc/mdstat
Если раздел действительно добавился, мы можем расширить массив:
%# mdadm -G /dev/md0 --raid-devices=4
При необходимости, можно регулировать скорость процесса расширения массива, указав нужное значение в файлах
/proc/sys/dev/raid/speed_limit_min /proc/sys/dev/raid/speed_limit_max
Убедитесь, что массив расширился:
%# cat /proc/mdstat
Нужно обновить конфигурационный файл с учётом сделанных изменений:
%# mdadm --detail --scan >> /etc/mdadm/mdadm.conf %# vi /etc/mdadm/mdadm.conf
Возобновление отложенной синхронизации
Отложенная синхронизация:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active(auto-read-only) raid1 sda1[0] sdb1[1]
78148096 blocks [2/2] [UU] resync=PENDING
Возобновить:
echo idle > /sys/block/md0/md/sync_action
P.S.: Если вы увидели «active (auto-read-only)» в файле /proc/mdstat, то возможно вы просто ничего не записывали в этот массив. К примеру, после монтирования раздела и любых изменений в примонтированном каталоге, статус автоматически меняется:
md0 : active raid1 sdc[0] sdd[1]
Переименование массива
Для начала отмонтируйте и остановите массив:
%# umount /dev/md0 %# mdadm --stop /dev/md0
Затем необходимо пересобрать как md5 каждый из разделов sd[abcdefghijk]1
%# mdadm --assemble /dev/md5 /dev/sd[abcdefghijk]1 --update=name
или так
%# mdadm --assemble /dev/md5 /dev/sd[abcdefghijk]1 --update=super-minor
Удаление массива
Для начала отмонтируйте и остановите массив:
%# umount /dev/md0 %# mdadm -S /dev/md0
Затем необходимо затереть superblock каждого из составляющих массива:
%# mdadm --zero-superblock /dev/hde1 %# mdadm --zero-superblock /dev/hdf2
Если действие выше не помогло, то затираем так:
%# dd if=/dev/zero of=/dev/hde1 bs=512 count=1 %# dd if=/dev/zero of=/dev/hdf2 bs=512 count=1