Программный 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