xen VMをコピーしてメールサーバーのdistアップグレードをテストする

xen VMをコピーしてメールサーバーのdistアップグレードをテストする

vm01.mail-disk私はLVMでXenを使用しており、アップグレードが簡単であることをテストするために、Debian jessieでcourier / postfixを使用してメールサーバーVMを複製したいと思います。

仮想マシンを複製する方法と実行中のメールサーバーを妨げないように、複製で何を変更する必要がありますか?

クローンはすぐに既存のキューからメールを受信または送信し始めるようです。

まず、元のVMと同じ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を起動できません。

安定

これで、新しくコピーされたVMですべてが正しく実行されています。

関連情報