Перенос виртуального сервера на физический с созданием программного рейда

Задача: перести виртуальный почтовый сервер на физический с созданием RAID 1 (зеркало).

Имеется виртуалка на XenServer и физический сервер с двумя винтами по 1 Тб

Установим Centos minimal на один из винтов и поделим диск на разделы

/dev/sda1 /boot
/dev/sda2 swap
/dev/sda3 /

Теперь установим mdadm и vim (обожаю этот текстовый редактор)

yum install mdadm vim

Теперь надо подготовить второй диск для настройки на нем рейда. Скопируем схему разбивки диска с /dev/sda

sfdisk -d /dev/sda | sfdisk /dev/sdb

Что получилась можно посмотреть командой fdisk -l

Теперь сменим тип разделов /dev/sdb на «Linux raid autodetect» Для этого выполняем

fdisk /dev/sdb

жмем ‘t’, затем ‘1’ (первый раздел диска), затем ‘fd’
Повторяем все заново для каждого из разделов.
Сохраняем изменения ‘w’

В итоге смотрим что получилось уже знакомой командой

fdisk -l

Диск /dev/sdb готов. Можно на нем создать деградированный рейд, т.к. пока будем использовать только один диск.

mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3

Смотрим что получилось

cat /proc/mdstat

Отлично. Теперь создадим файловую систему.

mkfs.ext4 /dev/md0
mkswap /dev/md1
mkfs.ext4 /dev/md2

Следующим этапом будем переносить данные с виртуальной машины.
Для начала монтируем разделы

mount /dev/md2 /mnt
mkdir /mnt/boot
mount /dev/md0 /mnt/boot

Остается скопировать файлы виртуальный машины на физическую

rsync -av --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* \ --exclude=/mnt/* /* /mnt

Теперь подготовим систему для chroot

mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /run /mnt/run

Собственно заходим

chroot /mnt/

Первым делом надо подготовить fstab

blkid /dev/md*
/dev/md0: UUID="your-UUID" TYPE="ext4"
/dev/md1: UUID="your-UUID" TYPE="swap"
/dev/md2: UUID="your-UUID" TYPE="ext4"

vim /etc/fstab
UUID=your-UUID / ext4 defaults 1 1
UUID=your-UUID /boot ext4 defaults 1 1
UUID=your-UUID swap swap defaults 0 0

Создадним конфиг файл mdadm

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

Подготовим initramfs. Здесь могут быть два варианта:

1. у вас системы, виртуальная и та, с которой вы загрузились, обновлены и у них одно и то же ядро. Тогда можно выполнить

cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bck
dracut --mdadmconf --fstab --add="mdraid" \
--filesystems "xfs ext4 ext3 tmpfs devpts sysfs proc" --add-drivers="raid1" \
--force /boot/initramfs-$(uname -r).img $(uname -r) -M

2. boot у систем различный. Нам нужно перетащить boot с виртуалки. Поэтому на действующей виртуальной машине смотрим «uname -r» и подставляем в предыдущую команду вместо $(uname -r)

Теперь подправим grub

vim /etc/default/grub
GRUB_CMDLINE_LINUX="rd.auto rd.auto=1 rhgb quiet"
GRUB_PRELOAD_MODULES="mdraid1x"

и создадим новый grub.cfg

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

Устанавливаем

grub2-install /dev/sdb

Перезагружаемся. Нам надо загрузиться с /dev/sdb, поэтому смотрим в биосе с какого диска загружаться.

Та-даам. Если вы таки смогли загрузиться, а у меня получилось с первого раза, то я вас поздравляю.

Теперь проверяем.
Подключен ли swap

swapon -s
Filename Type Size Used Priority
/dev/md1 partition 12279804 0 -1

Смонтированы ли остальные разделы

mount -t ext4
/dev/md2 on / type ext4 (rw,relatime,data=ordered)
/dev/md0 on /boot type ext4 (rw,relatime,data=ordered)

Смотрим состояние рейда

cat /proc/mdstat

Осталось всего ничего. Подготовить /dev/sda и добавить в рейд

Сменим тип разделов /dev/sda на «Linux raid autodetect» Для этого выполняем

fdisk /dev/sda

жмем ‘t’, затем ‘1’ (первый раздел диска), затем ‘fd’
Повторяем все заново для каждого из разделов.
Не забываем сохранить изменения ‘w’

Подключаем в рейд

mdadm --manage /dev/md0 --add /dev/sda1
mdadm --manage /dev/md1 --add /dev/sda2
mdadm --manage /dev/md2 --add /dev/sda3

Следим за ребилдом

watch "cat /proc/mdstat"

Установим grub на /dev/sda

grub2-install /dev/sda

Собственно на этом все.

Можно добавить в mdamd.conf уведомление руту

vim /etc/mdadm.conf
MAILADDR root

И в /etc/aliases указываем куда отправлять
root= мой@емэйл.ру

Обновляем алиасы
newaliases

Спасибо cmatthew.net

Перенос виртуального сервера на физический с созданием программного рейда: 1 комментарий

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Материалы распространяются под лицензией Creative Commons: Атрибуция — Некоммерческое использование — С сохранением условий (Attribution-NonCommercial-ShareAlike) 3.0 Unported.
Рейтинг@Mail.ru