原文地址:http://mp.weixin.qq.com/s?__biz=MjM5NTczODkyOA==&mid=2650948184&idx=1&sn=7251577b311119b42032019c94caa946&scene=4#wechat_redirect
之前朋友分享的经验。
大家知道从XenCenter层面,只能导出OVF、OVA、XVA的格式,那如何将某台虚机的VHD文件导出来呢?你可能会想到XenConvert,是的,XenConvert可以实现将虚机转换成VHD,但若是虚机文件过大,花费的时间就会很久,且往往在转换过程中失败,软件的限制太多。那怎么办?其实有一个相对便捷的方式,就是从XS底层去取。对于XS,所有的虚拟机存在于SR中,其实就是VHD格式,但XS不能像vSphere那样直接浏览存储,下载虚机文件。不过还好,XS基于CentOS开发,我们可以借助工具,像SSH Client、WinSCP、XFTP等支持SFTP协议的工具,连接至XS系统,从SR中将虚拟机的VHD文件拿出来。具体操作步骤:
1. SSH至XS(以XFTP为例),登录成功后,左边列表是本地目录,右边是XS
2. 通过浏览/var/run/sr-mount,可以看到所有的SR(以UUID命名),定位到虚机所在的SR文件夹(SR的UUID可以在SR的常规选项卡中查到,或者在XS中运行xe sr-list)
3. 选中所需的虚机VHD,直接拖拽到本地计算机路径即可,这里注意,虚拟机的VHD也是以UUID的方式命名的;可以通过:xevm-disk-list name-label=xxx (xxx为虚机的在XS上的名称,可以在虚机的常规选项卡中查到)
4. 根据VHD的UUID定位到虚机文件,复制出来即可。
PS:有一个特殊情况,若该虚机存在快照,可能会导致VHD大小不匹配,以上图为例,虚机的VDI明明有近300GB,为什么SR中却只有28GB呢。
其实都是快照惹得祸,因为在生成快照的时候,XS会将当前的状态禁止并保存为一个base copy的VHD文件,之后对该虚机的修改,都会在一个新的VHD上增量,以Tree的形式进行链接,所以看到的28GB,其实是生成快照后的增量大小,单纯导出该VHD是没办法还原该虚机的,经过测试,就算我们在XenCenter删除了快照链接,对于存放的VHD来讲,它不会自动做合并,大小仍然那么大。
那怎么办?我们可以通过fullcopy该虚拟机的方式,让XS自动合并VHD,当然VHD的UUID需要重新确认。