Centos 7 перенос на SoftwareRAID

По умолчанию Centos 7 устанавливается в том LVM, форматированный в XFS.

Изначально имеем:

  • /dev/sda — диск на котором установлена ОС Centos 7
    • /dev/sda1 — boot раздел в XFS, размер около 1ГБ (размер не принципиален)
    • /dev/sda2 — PV LVM на котором находится VG centos
      • centos/home — LV для домашних директорий пользователей
      • centos/root — LV для корневого раздела
      • centos/swap — LV для swap

Задача: нужно вживую мигрировать на программный RAID. Подключаем второй диск, он появляется как /dev/sdd (да, именно **D, так как там уже был /dev/sdb под другие функции) и начинаем. sda и sdd у меня одинаковые по объёму, также sdd может быть больше чем sda. В противном случае придётся изменять размер файловой системы и сжимать lvm том.

С помощью fdisk делаем два раздела, один около 1ГБ для boot, остальное для остального.

fdisk /dev/sdd

Создаём зеркальный RAID с одним диском. md0 для boot, md1 для PV LVM (root, home, swap):

mdadm --create --metadata=0.90 --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdd1 missing
mdadm --create --verbose /dev/md1 --level=mirror --raid-devices=2 /dev/sdd2 missing

Если вы используете cLVM или другие блокировки LVM (обычно не требуется), то временно блокировку приводим к обычному типу. А также если используете filter, то не забудьте добавить для поиска LVM томов MD устройства:

mcedit /etc/lvm/lvm.conf
locking_type = 1
filter = [ "a|/dev/md.*|", …

Создаём PV на новом RAID устройстве, что позволит в будущем делать LVM группы и тома:

pvcreate /dev/md1

Расширяем PV на новый RAID диск, переносим все данные, убираем старый диск из этого PV:

vgextend centos /dev/md1
pvmove --atomic /dev/sda2 /dev/md1
vgreduce centos /dev/sda2
pvremove /dev/sda2

Создаём новый boot, переносим туда файлы со старого, отключаем старый boot, монтируем на его место новый:

mkfs.xfs /dev/md0
mkdir /tmp/new-boot
mount /dev/md0 /tmp/new-boot/
rsync -axu /boot/* /tmp/new-boot/
umount /tmp/new-boot
umount /boot
mount /dev/md0 /boot/

Правим fstab,меняем uuid boot раздела на новый

blkid | grep /dev/md0
copy uuid to fstab /boot

Добавляем конфигурацию RAID в файл:

mdadm --detail --scan > /etc/mdadm.conf

Здесь важная часть, правим grub, добавляя в него rd.md.uuid идентификаторы RAID устройств. Сами идентификаторы можно подсмотреть в только что сконфигурированном /etc/mdadm.conf

/etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.md.uuid=3b50136e:3413dbb2:ec1aaf4f:607cd241 rd.md.uuid=5d8e91f6:4c1716cf:60926051:293da37f rd.lvm.lv=centos/swap"

Обновляем grub и генерируем initram-fs

grub2-mkconfig -o /boot/grub2/grub.cfg
dracut --force

Устанавливаем grub в загрузочные сектора дисков

grub2-install /dev/sdd
grub2-install /dev/sda

Возвращаем (если использовали ранее!) нужный тип блокировок LVM:

mcedit /etc/lvm/lvm.conf
locking_type = 3

С этого момента /dev/sda нам больше не нужен, он станет членом массива. Сделаем такую же разметку как у /de/sdd и добавим его в существующий RAID.

sfdisk -d /dev/sdd | sfdisk --force /dev/sda
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2

Временно увеличим скорость синхронизации RAID массива

echo 500000 > /proc/sys/dev/raid/speed_limit_min
echo 500000 > /proc/sys/dev/raid/speed_limit_max

Следить за ходом синхронизации можно так:

watch cat /proc/mdstat

Как синхронизация закончится, можно сделать перезагрузку и надеяться что всё запустится так, как планировалось.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Яндекс.Метрика