一简介:
virt-v2v是将外部的虚拟化平台上的虚拟机转化到可以运行的KVM平台上。它可以读取在VMware、Xen运行Hyper-V和其他虚拟机管理程序上的Windows和Linux的虚拟机,并将其转换为KVM的libvirt,OpenStack等几种方式。
ESXI 平台下线,将虚机迁移至openstack 运行,但windows 虚机,大多是存在驱动问题的,因此需要先考虑驱动问题。
二、安装软件
# yum install -y qemu-kvm libvirt virt-manager virt-v2v
三、命令介绍
1、 查看EXSI 主机虚机列表
#virsh -c esx://root@EXSI_server_IP?no_verify=1 list --all ## EXSI_server_IP : EXSI 主机IP,需要输入服务器的root 密码
2、拷贝虚拟机到本地,拷贝完成后会在当前目录生成一个xml文件和disk1磁盘文件,同样也是需要输入EXSI 服务器密码
#mkdir /data #创建用于存放文件的目录
#virt-v2v-copy-to-local -ic esx://root@EXSI_server_IP?no_verify=1 vm_name #vm_name: 需要拷贝到本地的虚机名称(在步骤一中获取)
3、转换数据格式,把磁盘文件的格式转换成OpenStack能够识别的格式 (如果有报错,查看最后的报错总结)
# mkdir /data/vms #创建用于存放格式转换后的文件
# virt-v2v -i libvirtxml vm_name.xml -o local -os vms/ -of raw # -of :转换为row 格式 -os :指定输出路径 vm_name.xml:为第二步骤中生成的文件
4、将转换完成后的 vm_name-sda 文件上传至openstack中,启动新的虚机。
流程:创建卷-->通过rbd 导入 vm_name-sda 的设备---> 启动虚机
四、报错总结:
第三步报错:Failed to connect socket to '/var/run/libvirt/libvirt-sock'
解决:
1、# groupadd libvirtd #增加libvirtd用户组
2、# sudo usermod -a -G libvirtd $USER #设置用户到组
3、# vi /etc/libvirt/libvirtd.conf #取消注释并修改为如下:
4、增加权限启动配置
vi /etc/polkit-1/localauthority/50-local.d/50-org.libvirtd-group-access.pkla [libvirtd group Management Access]
Identity=unix-group:libvirtd
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
5、重启服务
# service libvirtd restart