Centos7 RAID 1 (UUID)
Файловые разделы пример
/dev/sda1 /boot
/dev/sda2 swap
/dev/sda3 /
Устанавливаем второй диск sdb и программный пакет raid
yum install mdadm
Убиваем предыдущие рейды, если такие были
mdadm -S /dev/mdx
mdadm --zero-superblock /dev/sdb[0-9]
Создадим идентичную схему разделов /dev/sda
sfdisk -d /dev/sda | sfdisk /dev/sdb --force
Смотрим
fdisk -l
Преобразовать новые разделы диска /dev/sdb на "Linux raid autodetect"
fdisk /dev/sdb ставим "t" и конвертируем все файловые разделы в "fd"
Смотрим
fdisk -l
Делаем raid level 1 пример
mdadm --create /dev/md1 --metadata=0.90 --bitmap=internal --bitmap-chunk=131072 --level 1 --raid-devices=2 missing /dev/sdb1
mdadm --create /dev/md0 --bitmap=internal --bitmap-chunk=131072 --level 1 --raid-devices=2 missing /dev/sdb3
Смотрим
cat /proc/mdstat
Форматируем получившийся /dev/mdx Режим фс на корень, на бут обычно ставим ту, что и была до рейда
mkfs.ext4 /dev/md0
mkfs.ext2 /dev/md1
Записываем наши разделы mdadm.conf
echo "DEVICE /dev/hd*[0-9] /dev/sd*[0-9] /dev/cciss/c0d[0-3]p[0-9]" > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
Конфиг grub.
/etc/default/grub
Дописать в
GRUB_CMDLINE_LINUX
эти парметры
rd.auto rd.auto=1 selinux=0 rd.md.uuid=
rd.md.uuid= будет равно количеству созданных рейдов с их uuid, чтобы получить uuid md устройства, делаем так
mdadm --detail /dev/md* |grep UUID
UUID : ed3ef3e5:a9548405:a34d6e2f:51135390
UUID : b6c1ab67:60343320:983ed929:82bf5291
UUID : d8b4af18:97e32f5e:e5eb19b4:c6ce05ab
вот тут 3и рейда видно, следовательно строка в конфиге груба будет такой
rd.auto rd.auto=1 selinux=0 rd.md.uuid=ed3ef3e5:a9548405:a34d6e2f:51135390 rd.md.uuid=b6c1ab67:60343320:983ed929:82bf5291
rd.md.uuid=d8b4af18:97e32f5e:e5eb19b4:c6ce05ab
эти параметры дописываются в GRUB_CMDLINE_LINUX а не заменяют все параметры в переменной. Обращу внимание что это НЕ равно blkid /dev/md? , тут uuid другой.
Далее отключаем selinux
sed -i"" 's#enforcing#disabled#g' /etc/sysconfig/selinux
Правим fstab, переводим указатели блочных устройств на их UUID (смотрим через blkid /dev/md0-9 )
Пример UUID=402f360d-b4d4-48d0-809e-f6f6725926fe /home2 .....
И теперь через chroot генерим правильные кониги груба и initramfs, точки монтирования могут быть другими. Монтируем новый корень, копируем в него текущий корень, монтируем бут уже в новый корень в диру /boot, копируем текущий бут в новый бут, подкидываем dev, proc и sysfs и chroot в новое окружение.
mount /dev/md0 /mnt; cp -dpRx / /mnt; mount /dev/md1 /mnt/boot; cp -dpRx /boot/* /mnt/boot/;
mount -o bind /dev /mnt/dev; mount -t proc none /mnt/proc; mount -t sysfs none /mnt/sys; mount --bind /run /mnt/run;
Заходим в chroot
chroot /mnt /bin/bash
Собственно генерация initramfs
dracut --mdadmconf --fstab --add="dm dmraid mdraid" --add-drivers="raid0 raid1" --force /boot/initramfs-$(uname -r).img $(uname -r) -M
В случае: dracut module 'dmraid' cannot be found or installed
dracut --mdadmconf --fstab --add="mdraid" --add-drivers="raid0 raid1" --force /boot/initramfs-$(uname -r).img $(uname -r)
Пишем корректный новый конфиг груба.
grub2-mkconfig -o /boot/grub2/grub.cfg
exit (вышли с chroot окружения в первоначальную ОС)
Удаляем текущий бут и закидываем в него сгенерированные файлы с нового бута.
rm -rf /boot/* ; cp -dpRx /mnt/boot/* /boot/
reboot
После ребута ОС загрузится с созданного рейда без основного диска (в текущем примере рейд будет на sdb и ОС будет работать с md устройств). Остается скопировать разметку с sdb на sda, добавить sda в рейд, после синка поставить груб на /dev/sda (первичный диск) в системе.
Первый добавлять раздел в массив надо boot
sfdisk -d /dev/sdb | sfdisk /dev/sda --force
mdadm --add /dev/md1 /dev/sda3
mdadm --add /dev/md0 /dev/sda2
grub2-install /dev/sda
После как добавили первичный диск в рейд, делаем свап:
Выключаем весь свап для разделов: swapoff -a Номер раздела swap смотреть (fdisk /dev/sd* 'p') Делаем свап разделы на наши диски mkswap /dev/sdb*, c*, d* Добавляем UUID(см blkid /dev/sda*), в (nano /etc/fstab)
swapon -a # --вкл свап
reboot