再探oVirt-迁移xen虚拟机的disk到ovirt中新建的vm的disk上

日期:2015/11/23 - 2015/12/16 time 13:15

主机:n35,a02

目的:再探oVirt-迁移xen虚拟机的disk到ovirt中新建的vm的disk上

操作内容:

一、资源
1、源:xen 主机 n35
xen server: n35.test
vm: new-t10g
cpu: 2
mem: 2g
disk: 10g(lvm分区)
eth: 2



2、思路
1)在ovirt中新建1个同样的内核和磁盘配置的虚拟机A。
2)移除A的磁盘Da,挂载到另一个虚拟机B上
3)同步目标xen虚拟机C的数据,到Da上,排除/boot分区
4)更新配置文件grub,fstab,udev,ifcfg


二、在ovirt中操作
1、新建一个虚拟机
名称: new-t10g
内存:2048 MB
CPU:2

引导操作,创建一个虚拟磁盘
大小(GB):10
别名: new-t10g_Disk1

2、只运行一次【耗时:5 分钟】
安装系统:版本一致
分区:和xen虚拟机一致(本例,仅根分区)
软件包:最小化

3、停止虚拟机
4、编辑 new-t10g 的磁盘
可引导的:不勾选
5、删除 new-t10g 的磁盘
永久地删除:不勾选
5、附加并挂载 new-t10g 的磁盘 到 临时用的虚拟机 a02


三、在 a02 上挂载 new-t10g 的磁盘
1、挂载
[root@a02 ~]# mount -o loop /dev/vdb1 /mnt
[root@a02 ~]# du -sh /mnt
589M    /mnt
[root@a02 ~]# ls /mnt/
bin   dev  home  lib64       media  opt   root  selinux  sys  usr
boot  etc  lib   lost+found  mnt    proc  sbin  srv      tmp  var

2、关闭xen虚拟机,挂载磁盘
[root@n35 xen]# mount -o loop /dev/vg0/t10g-disk /media/
[root@n35 xen]# du -sh /media
1.3G    /media
[root@n35 xen]# ls /media/
bin   dev  home  lib64       media  opt   root  selinux  sys  usr
boot  etc  lib   lost+found  mnt    proc  sbin  srv      tmp  var

3、开始同步【耗时:1 分钟】
[root@a02 ~]# rsync -avP --delete 10.0.200.35:/media/ /mnt/ --exclude="/boot/"

4、编辑grub配置,调整根分区(/)位置,将UUID调整为/dev/vda1
[root@a02 ~]# vim /mnt/boot/grub/grub.conf 
title CentOS (2.6.32-431.el6.x86_64)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/vda1 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /boot/initramfs-2.6.32-431.el6.x86_64.img

5、编辑fstab,调整根分区(/)为/dev/vda1,注释掉swap分区
[root@a02 ~]# vim /mnt/etc/fstab 
/dev/vda1              /                       ext4    defaults        1 1
#/dev/xvda1              /                       ext4    defaults        1 1
#/dev/xvdb1              swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0


6、清理udev
[root@a02 ~]# rm /mnt/etc/udev/rules.d/* 

7、清理网卡配置,移除mac地址和uuid
[root@a02 ~]# sed -i -e '/UUID/d' -e '/HWADDR/d' /mnt/etc/sysconfig/network-scripts/ifcfg-eth*

8、卸载
[root@a02 ~]# umount /mnt/
[root@n35 xen]# umount /media


四、将 修复完毕的 磁盘 挂载回去
1、选择虚拟机 a02 的磁盘 new-t10g_Disk1 ,取消激活,删除
2、附加到虚拟机 new-t10g ,编辑,选中“可引导的”
3、启动虚拟机验证【符合预期】


五、测试
1、完整流程重来一遍,统计耗时
磁盘    步骤二耗时    步骤三耗时    步骤四耗时
 10G     00:09:16      00:04:24      00:01:35

2、整个流程中,还有以下2个因数会影响耗时:
1)xen虚拟机的系统磁盘数据较多(大量的小文件将显著的影响同步时间)
2)克隆一个已经最小化安装的虚拟机,但这个虚拟机较大(例如,100G大概耗时: 10 分钟)
 
 
3、测试多个分区的情景
1)假设有如下分区
/dev/vda1 /boot
/dev/vda2 swap
/dev/vda3 /

2)注意事项
[root@a02 ~]# mount -o loop /dev/vdb3 /mnt/

调整grub(如果是做模版,可以提前调整好grub的配置,这样下面3个步骤可以省略)
[root@a02 ~]# mount -o loop /dev/vdb1 /mnt/boot/
[root@a02 ~]# vim /mnt/boot/grub/grub.conf 
root=/dev/vda3
[root@a02 ~]# umount /mnt/boot/

(关闭xen虚拟机,挂载磁盘,同步数据,略)
[root@a02 ~]# vim /mnt/etc/fstab 
/dev/vda3 /                       ext4    defaults        1 1
/dev/vda1 /boot                   ext4    defaults        1 2
/dev/vda2 swap                    swap    defaults        0 0
[root@a02 ~]# rm /mnt/etc/udev/rules.d/* 
[root@a02 ~]# sed -i -e '/UUID/d' -e '/HWADDR/d' /mnt/etc/sysconfig/network-scripts/ifcfg-eth*
[root@a02 ~]# umount /mnt/

4、小结
1)如果提前收集不同的xen虚拟机配置,新建虚拟机,配置成模版,提前用模版克隆,则可以加快迁移速度。
2)如果源vm(此处是new-t10g)的数据量较大(例如超过40G),建议新建一个xen虚拟机(假设是test1)挂载源vm(此处是new-t10g)的数据盘,然后再由中转的vm(此处是a02)来从test1同步数据。理由是,遇到过一次从xen宿主机(此处是n35)同步一个80G的vm时,大概同步了50G时,n35死机。

ZYXW、参考
1、来自Cyrus和实验和建议思路。


你可能感兴趣的:(xen,migration,Ovirt)