迁移vmware VM到KVM下的方法

作为个人学习笔记分享,有任何问题欢迎交流!


1. 通过SSH连接到vmware的服务器上,在/vmfs/volumes/目录下找到虚拟机的磁盘文件:


centos-H-flat.vmdk:如果你用“现在分配所有的磁盘空间”选项创建vmware虚拟机时,Flat文件会被使用,Flat.vmdk文件包含了所有数据,可以直接转换成qcow2。

Centos-H-flat.vmdk文件为raw格式,所以可以直接拷贝至KVM的实例下面,作为KVM实例的磁盘。

centos-H.vmx:是定义vmware虚拟机的文件,相当于KVM实例的xml文件的作用。


2. 可以通过scp拷贝centos-H-flat.vmdk 和centos-H.vmx,到openstack中已准备好的一个实例的文件目录里,该实例为redhat:


3. 备份好原来的XML文件:cp libvirt.xml libvirt.xml.back


4. 安装virt-goodies:

apt-get installvirt-goodies


5. 用vmware2libvirt把vmware的xmv转换成xml:

Vmware2libvirt –f centos-H.vmx > libvirt.xml


6. 现在就只剩下修改虚拟机的XML文件了,先virsh destroy instance-xxxxxxxx,参照libvirt.xml和libvirt.xml.back,在virsh edit instance-xxxxxxxx中修改,修改后virsh start intance-xxxxxxx. 实例启动成功后,把 virsh editinstance-xxxxxxx的结果复制到libvirt.xml中。


7. libvirt.xml来自vmware,主要参考它的disk信息,磁盘路径修改为centos-H-flat.vmdkd的绝对路径。libvirt.xml.back来自原来实例,主要参考它关于一些外设的描述信息,网络等。原来实例关于ramdisk、console.log、kernel的描述全部删除。

8. 下面是一个经过修改后可以运行的XML:

<domain type='kvm'>
  <name>instance-00000001</name>
  <uuid>701d6341-1a10-4d5d-8b7f-9d8e1c89b88c</uuid>
  <memory>1048576</memory> 
  <currentMemory>1048576</currentMemory>
  <vcpu>1</vcpu>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.2'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/nova/instances/instance-00000001/centos-H-flat.vmdk'/>
      <target dev='hda' bus='ide'/>
<!--(注:采用普通的驱动,即硬盘和网卡都采用默认配置情况下,硬盘是 ide模式,对应hda。采用 virtio驱动后,硬盘工作是SCSI模式下,对应是sda,在KVM中用vda代替。)-->
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='fa:16:3e:09:15:47'/>
      <source bridge='br100'/>
      <model type='virtio'/>
      <filterref filter='nova-instance-instance-00000001-fa163e091547'>
        <parameter name='DHCPSERVER' value='192.168.44.3'/>
        <parameter name='IP' value='192.168.44.2'/>
      </filterref>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='qxl' vram='131072' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
</domain>

参考资料:

http://www.linuxidc.com/Linux/2012-09/70027.htm

http://blog.mymediasystem.net/uncategorized/vmware-kvm-migration-guide/

http://blog.bodhizazen.net/linux/convert-vmware-vmdk-to-kvm-qcow2-or-virtualbox-vdi/




没有更多推荐了,返回首页