复制 xen VM 以测试邮件服务器的 dist 升级

复制 xen VM 以测试邮件服务器的 dist 升级

我将 Xen 与 LVM 结合使用,并希望vm01.mail-disk在 Debian jessie 中使用 courier/postfix 克隆我的邮件服务器 VM,以测试升级是否轻松可行。

如何克隆虚拟机以及必须在克隆中更改哪些内容,以免干扰正在运行的邮件服务器?

恐怕克隆会立即开始从现有队列中获取或发送邮件。

我首先会创建与原始虚拟机相同的虚拟机快照:

lvcreate -L20480 -s -n 'vm01.mail-disk-snapshot' /dev/vg0/vm01.mail-disk

但我不确定现在访问该快照并测试 dist 升级的最佳方式是什么。

答案1

先决条件:

  • 为您的新虚拟机选择一个 IP(在此示例中为 10.77.77.200)
  • 为您的新虚拟机选择 IP6(在此示例中为 2a01:4f8:241:1d02:0:77:77:200)
  • 选择一个名称(vm01.mail-test)

创建一个新的 xen 来宾

xen-create-image --hostname=vm01.mail-test --pygrub --size=180Gb --swap=8Gb --vcpus=1 --memory=8Gb --ip=10.77.77.200 --dist=jessie --nopasswd --nodhcp --gateway=10.77.77.1 --netmask=255.255.255.0 --broadcast=10.77.77.255
# maybe this would be enough:
#lvcreate -L 180G -n vm01.mail-test-disk /dev/vg0
#lvcreate -L 1G -n vm01.mail-test-swap /dev/vg0
#mkfs.ext4 /dev/vg0/vm01.mail-test-disk
#mkswap /dev/vg0/vm01.mail-test-swap

挂载快照和新的 LVM 卷:

mkdir -p /media/vm01.mail-disk-snapshot/
mkdir -p /media/vm01.mail-test-disk/
mount /dev/vg0/vm01.mail-disk-snapshot /media/vm01.mail-disk-snapshot/
mount /dev/vg0/vm01.mail-test-disk /media/vm01.mail-test-disk/

使用 rsync 将所有数据复制到新的 LVM 卷中

格式化新虚拟机并将快照中的所有文件同步到新创建的虚拟机,但是跳过可能不会复制到新服务器的文件夹

mkfs.ext4 /dev/vg0/vm01.mail-test-disk
e2fsck -f /dev/vg0/vm01.mail-test-disk
tune2fs -O ^metadata_csum /dev/vg0/vm01.mail-test-disk
# yes
tune2fs -O ^64bit /dev/vg0/vm01.mail-test-disk
resize2fs -s /dev/vg0/vm01.mail-test-disk
rsync -aAxX --del --info=progress2 /media/vm01.mail-disk-snapshot/ /media/vm01.mail-test-disk/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/boot/*,/var/tmp/*,/var/cache/*,/usr/tmp/*}
# this excludelist for rsync only excludes * inside each folders

让新虚拟机适应新IP

find /media/vm01.mail-test-disk/etc/ -type f -exec sed -i -e "s/2a01:4f8:241:1d02:0:77:77:101/2a01:4f8:241:1d02:0:77:77:200/g" \
                                                          -e "s/10.77.77.101/10.77.77.200/g" \
                                                          "{}" \;

chroot 进入安装的新系统:

mount /dev/vg0/vm01.mail-test-disk /media/vm01.mail-test-disk/
mount -t proc none /media/vm01.mail-test-disk/proc
mount --bind /dev /media/vm01.mail-test-disk/dev
mount -t sysfs sysfs /media/vm01.mail-test-disk/sys
chroot /media/vm01.mail-test-disk/ /bin/bash

1. 清空后队列,这样新虚拟机就不会发送任何邮件

postsuper -d ALL

2.修改主机名并退出

hostname mail-test
echo mail-test > /etc/hostname
echo "127.0.0.1 mail-test" >> /etc/hosts
exit

启动新虚拟机

umount -l /media/vm01.mail-test-disk
umount /media/vm01.mail-disk-snapshot 

xen create /etc/xen/vm01.mail-test.cfg
sleep 20
ssh 10.77.77.200 "ip a s"

该解决方案开发过程中解决的问题:

在这里您可以看到最近几天发生的问题: 从一台 XEN 主机复制到另一台 XEN 主机时,无法启动新 VM

固定的

现在,新复制的虚拟机中一切运行良好

相关内容