Задача: перести виртуальный почтовый сервер на физический с созданием 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
yahooeю… )