我们有几个基于LVM的VM在Xen开放资源主机上运行。在我们的例子中,“基于LVM”意味着根分区有一个LVM卷,交换分区有另一个卷。VM的内核和initrd在这些卷之外,作为Xen主机中的文件。这些VM是用xen创建映像创建的,这是Debian xen-tools套件的一部分。
我们希望将这些VM迁移到XCP主机上,我们已经找到了一个脚本来完成它(http://www.xen.org/files/xva/xva.py)。但是这个脚本假设配置文件中列出的磁盘是“虚拟磁盘”,也就是它们自己的分区表和其他东西。很明显,情况并非如此,而且也不起作用。
你建议怎么做?有自制的方法吗?最后,我们可能不得不用旧的tar文件覆盖新的VM,但我希望这是我们最后的选择。
我想,也许我们可以通过使用与kpartx相反的东西来创建这个脚本所期望的磁盘:而不是为每个分区将一个虚拟磁盘拆分成设备,而是将多个分区(或者在我们的例子中是LVM卷)捆绑到一个虚拟磁盘中。但我不知道这种事。
提前感谢!
发布于 2013-02-26 09:54:36
我们就是这样做的:
假设我们的VM名为"anansi“(我目前正在阅读Neil的一本书;我让您猜猜哪个:-)。它安装在两个LVM卷中,/dev/vg0 0/anansi-root(根文件系统,5GB)和/dev/vg0 0/anansi-交换(512 5GB)。
首先,我们为虚拟硬盘创建了一个新的LVM卷:
lvcreate -n anansiVHD -L 6GB vg0
然后我们在上面创建了两个分区,使用cfdisk:
cfdisk /dev/vg0/anansiVHD
然后,我们使用kpartx显示虚拟磁盘中的分区:
kpartx -av /dev/vg0/anansiVHD
我们对它们进行了格式化(在本例中使用ext3,因为它是原始VM的格式)。您将看不到/dev/vg0 0中的新设备,因为LVM不知道它们。您必须使用/dev/mapper/任何东西来访问它们,如下所示:
mkfs.ext3 /dev/mapper/vg0-anansiVHD1
mkswap /dev/mapper/vg0-anansiVHD2
然后,我们挂载根分区:
mkdir /tmp/anansiVHD_root
mount /dev/mapper/vg0-anansiVHD1 /tmp/anansiVHD_root
当我们想要迁移的VM正在运行时,我们使用快照复制它的内容:
lvcreate -s -n anansi-snap -L 2G /dev/vg0/anansi-root
mkdir /tmp/anansi-snap
mount /dev/vg0/anansi-snap /tmp/anansi-snap
cd /tmp/anansi-snap
tar c . | (cd /tmp/anansiVHD_root ; tar xv)
我们清理:
umount /tmp/anansiVHD_root
umount /tmp/anansi-snap
lvremove -f /dev/vg0/anansi-snap
kpartx -d /dev/vg0/anansiVHD
我们必须更改VM的配置文件("anansi.cfg")以反映对虚拟磁盘的更改。这意味着要改变这句话:
disk = [ 'phy:/dev/vg0/anansi-root,xvda1,w', 'phy:/dev/vg0/anansi-swap,xvda2,w' ]
对此:
disk = [ 'phy:/dev/vg0/anansiVHD,xvda,w' ]
然后,我们使用先前链接的脚本迁移机器:
xva.py -c anansi.cfg -s <the IP of our XCP host> --username=root --password=<root password>
之后,我们必须按照脚本的说明,将用于引导此VM的内核和initrd复制到XCP主机。最后一步是将ssh放到XCP主机中,并更改此VM的引导加载程序:如果不是,XCP将尝试使用pygrub,而且由于这需要虚拟硬盘中的内核和initrd,所以它将无法工作。
所以我们做了这个:
xe vm-param-set PV-bootloader="" uuid=0ab93325-bdb3-e5c9-e7ab-2173b612b02c
使用新VM的uuid,我们从"xe vm-list“中获得。
发布于 2013-03-06 21:21:49
vi /tmp/tmpmigrateVHD_root/boot/grub/grub.conf
:
root=/dev/sda1 console=tty0
-> root=/dev/xvda1 console=xvc0
vi /tmp/tmpmigrateVHD_root/etc/fstab
:
/dev/sda1
-> /dev/xvda1
/dev/sda2
-> /dev/xvda2
vi /tmp/tmpmigrateVHD_root/etc/inittab
:(反向注释)
https://unix.stackexchange.com/questions/66142
复制相似问题