Программный RAID

http://xgu.ru/wiki/Программный_RAID_в_Linux

Файловая система создается поверх рейд-массива.

Создать raid-1 с одним отсутствующим диском:

mdadm --create --verbose /dev/md0 --level=1 --bitmap=internal --raid-devices=2 /dev/xvdb1 missing
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Недостающий диск можно подключить позднее:

mdadm /dev/md0 --add /dev/xvdc1

Пометить диск как сбойный и удалить его из массива:

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

Если диск уже пропал из системы, то mdadm откажется его удалять т.к. «no such file». В таком случае выполняем удаление всех отсоединенных дисков:

mdadm /dev/md0 -r detached

Создать raid-5 с тремя дисками и одним диском в горячем резерве (hot-spare), размер чанка 64КБ, bitmap хранится в файле /md2.bitmap:

mdadm --create --verbose /dev/md2 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd{f,g,h,i}1 --chunk=512 --bitmap=/md2.bitmap
mdadm --readwrite /dev/md2

Удаление суперблока:

mdadm --zero-superblock /dev/sdx

Загрузка с raid1

Известный баг Grub: если корневая система в raid, то при загрузке с одного из дисков reboot сразу после появления надписи «Welcome to Grub!».

Решение – раскомментировать строчку

GRUB_TERMINAL=console

в файле /etc/default/grub, и выполнить команду

update-grub

Выравнивание разделов диска

Для нормальной производительности и уменьшения износа диска важно выравнивать разделы по блокам/цилиндрам. Современные диски большого объема имеют увеличенный размер сектора в 4096 байт (вместо 512), что создает дополнительные сложности. Рекомендуется выравнивать всё по 1 МБ.

При создании LVM:

pvcreate --dataalignment=1M

Для raid-5

SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="8192"

udevadm trigger
udevadm control --reload-rules

Скорость синхронизации

Чтобы сервер не «подвис» в момент ресинхронизации дисков, устанавливаем предел скорости.

dev.raid.speed_limit_max = 10240

sysctl -p /etc/sysctl.d/mdadm.conf

Производительность

Хорошая статья

Перенос корневого раздела на программный рейд

Основная идея (без подробностей): Если новый раздел меньшего размера, то не остается других выходов, кроме как:

Установить mdadm.

Создать программный рейд-массив для будущего корневого раздела.

Создать на новом массиве ФС, примонтировать ФС в /mnt, скорпировать туда все каталоги и файлы из корневого раздела (кроме тех, которые являются точкой монтирования виртуальных ФС).

Создать каталоги /mnt/dev, /mnt/sys, /mnt/proc

Сделать mount --bind /dev /mnt/dev (повторить для sys и proc).

Сделать chroot /mnt

Поправить /etc/fstab

Запустить dpkg-reconfigure mdadm

Запустить dpkg-reconfigure grub-pc

Перезагрузиться в новую систему.

Проверил – всё получилось.