日期:2015/11/23 - 2016/2/22 time 18:17
主机: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/vda3 /mnt/ 调整grub(如果是做模版,可以提前调整好grub的配置,这样下面3个步骤可以省略) [root@a02 ~]# mount -o loop /dev/vda1 /mnt/boot/ [root@a02 ~]# vim /mnt/boot/grub/grub.conf default=0 timeout=5 splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz【注意这里的路径,由于/boot是独立的分区,磁盘位置标志和路径并非(hd0)/boot/grub/xxxx,下同】 hiddenmenu title CentOS (2.6.32-431.23.3.el6.x86_64) root (hd0,0)【注意这里的磁盘位置标志】 kernel /vmlinuz-2.6.32-431.23.3.el6.x86_64 ro root=/dev/vda3 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【注意这里的路径,并且将root=xxx调整为根分区的路径,例如:root=/dev/vda3】 initrd /initramfs-2.6.32-431.23.3.el6.x86_64.img【注意这里的路径】 [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和实验和建议思路。
转载于:https://blog.51cto.com/nosmoking/1715913