Lvm

複製 xen VM 以測試郵件伺服器的 dist-upgrade

  • May 23, 2020

我將 Xen 與 LVM 一起使用,並希望vm01.mail-disk在 Debian jessie 中使用 courier/postfix 複製我的郵件伺服器 VM,以測試升級是否容易實現。

如何複製虛擬機,我必須在複製中進行哪些更改,以免干擾正在執行的郵件伺服器?

恐怕複製會立即開始從現有隊列中獲取或發送郵件。

我將首先創建一個與原始快照相同的虛擬機快照:

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

但是我不確定現在訪問該快照並測試 dist-upgrade 的最佳方法是什麼。

先決條件:

  • 為您的新虛擬機選擇一個 IP(在本例中為 10.77.77.200)
  • 為新 VM 選擇 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

使新 VM 適應新 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.清空postqueue,這樣你的新VM就不會發送郵件

postsuper -d ALL

2.適配Hostname並退出

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"

在開發此解決方案期間解決的問題:

在這裡您可以看到最近幾天發生的問題: 無法啟動新 VM,當從一個 XEN 主機複製到另一個 XEN 主機時

固定的

現在一切都在新複製的 VM 中執行良好

引用自:https://unix.stackexchange.com/questions/585468