V2V迁移

前言
v2v(virtual machine to virtual machine)是通过各种手段将不同平台的虚拟机进行迁移的一种方式。现在常见的迁移有
VMware –> KVM
KVM –> VMware
Xen –> VMware
本篇将介绍如何使用工具和手动方式来将VMware上虚机迁移到KVM环境中,以及博主在实际操作中遇到一些实际问题的troubleshooting。
VMware虚拟机迁移到KVM的方式
分为两种,一种是静态迁移,另一种是在线迁移。
静态迁移(offline migration)也叫做常规迁移,离线迁移。在迁移之前将虚拟机暂停,同时拷贝虚拟机镜像和状态到目的主机。相比较于在线迁移(online migration),其缺点就是静态迁移方式的过程需要显式的停止虚拟机的运行,而在线迁移的过程仅有非常短暂的停机时间,保证迁移过程中虚拟机服务的持续可用;静态迁移的优点是兼容性强,不需要VMM的同意API接口,可以借助第三方工具辅助迁移。由于目前VMM的开发没有统一的标准,不同的虚拟化厂商,尤其是闭源的厂商开发的VMM各成一套,静态迁移是解决不同类型虚拟机之间迁移的有效办法。我们分别演示使用手动方式将VMware虚拟机迁移到KVM和使用自动化迁移工具virt-v2v方式来迁移。
VMware虚拟机文件介绍
成功迁移虚拟机的一个重要的验证标准就是文件的正确性和完整性。下图中列出与 VMware 虚拟机相关的文件,但是迁移 VMware 虚拟机到 KVM 并不需要用到所有的文件。
在这里插入图片描述
VMware 虚拟机的文件主要包括 .nvram 文件,.vmx 文件,vmdk 文件,.vswp 文件,.vmss 文件,.vmsd 文件,.vmsn 文件,.log 文件,.vmxf 文件。与迁移相关的最主要的是 .vmx 文件和 .vmdk 文件。

  • .vmx 文件:包括虚拟机所有配置信息与硬件设置。不管你对虚拟机的设置做了何种编辑,所有的信息都会以文本形式保存在这个文件里。如特殊硬件配置(例如 RAM 大小,网络接口信息,硬盘驱动信息,串行与并行信息),高级能源与资源配置、VMware 工具选项及能源管理选项。迁移虚拟机时,需要更改这个文件的格式到 KVM 支持的 xml 文件,并且重新确认文件信息的有效性。

  • .vmdk 文件:包含虚拟磁盘的信息。虚拟机的文件系统就建立在 .vmdk 文件上。迁移时需要拷贝这个文件到 KVM 主机,并且转换成能够被 libvirt 识别的文件格式。

  • 以下的虚拟机文件有些只在虚拟机处于的某种状态时出现,迁移过程中不会用到。例如当虚拟机开启时出现 .vswp 文件,当虚拟机暂停时出现 .vmss 文件。

  • .nvram 文件:包括虚拟机启动过程一部分的 Phoenix BIOS。它类似于拥有 BIOS 芯片的物理服务器,能够设置硬件配置选项。如果删除的话,在虚拟机启动时会自动地重新创建。

  • .vswp file:这些文件的大小等于分配给虚拟机的内存大小,再减去任何内存预留(默认是 0)。这些文件通常创建在虚拟机里,但是只有当 ESX 主机耗尽所有物理内存时才使用。当虚拟机关闭或暂停时,这些文件将删除。

  • .vmss 文件:这个文件用于虚拟机暂停时,保存虚拟机的存储内容,以便在重新开始时继续运行。

  • .vmsd 文件:这个文件与快照一起使用,用于存储元数据和其他活动在虚拟机里的每个快照的信息。这个文本文件在创建快照之前的初始大小是 0 字节,并在每次创建或删除快照时更新信息。

  • .vmsn 文件:这个文件与快照一起使用,用于存储虚拟机在进行快照时的状态。每在虚拟机上创建一个快照就会生成一个 .vmsn 文件,在删除快照时,文件自动删除。

  • .log 文件:这些文件创建来用于存储虚拟机的日志信息,并常常用于故障检查。在虚拟机目录里,有大量的这样的文件。当前的日志文件通常命名为 vmware.log。

  • .vmxf 文件:这是一个附加配置文件,不用于 ESX,用于与 Workstation 兼容的目的。这个文件是文本格式,Workstation 用来聚合虚拟机(VM teaming),将多个虚拟机分配成一组,作为一个单一对象开启或关闭、暂停或恢复它们。
    2.使用virt-v2v迁移虚拟机
    virt-v2v 是由 perl 语言编写的脚本,可以自动化的将创建在 Xen,KVM 和 VMware ESX 上的虚拟机拷贝到 virt-v2v 的主机,并且自动的更改配置,使之能够被 libvirt 进行管理。目前,virt-v2v 支持静态迁移下列虚拟机:RHEL4、RHEL5, RHEL6,Windows XP,Windows Vista, Windows 7, Windows Server 2003 和 Windows Server 2008。
    在这里插入图片描述
    迁移前的环境配置
    如果是要单纯的将虚拟机迁移到KVM的环境,则需要安装以下包。
    yum install -y qemu-kvm
    yum install -y libvirt
    yum install -y virt-manager
    yum install -y virt-v2v
    这里演示如何将VMspher下的linux虚拟机通过工具和VMware workstation手动的方式迁移到KVM环境中。
    使用virt-v2v工具自动迁移
    如果虚机是ESXi种的虚机,那么我们可以使用virt-v2v的工具直接进行自动迁移。virt-v2v工具可以将其他hypervisor平台上的虚拟机迁移到KVM上。它可以读取Xen,Hyper-v,VMware平台上的虚拟机,将它们迁移到由libvirt管理的KVM,openstack或者RHEV环境中。本节只针对ESCi上如何将虚机迁移到KVM中,往openstack和RHEV上迁移只需要转换镜像和导入即可不做赘述。
    KVM存储池配置过程
    mkdir -p /data/vmfs
    virsh pool-define-as vmdisk --type dir --target /data/vmfs
    virsh pool-build vmdisk
    virsh pool-autostart vmdisk
    virsh pool-start vmdisk
    创建ESXi认证文件
    (本步骤不是必须步骤,如果不做配置的话则在使用virt-v2v的时候需要稍微改变命令)
    vim /root/.netrc
    machine YourESXiServerIPAddress login root password YourESXiServerIPAddress
    chmod 0600 ~/.netrc
    开始迁移
    开始迁移前先测试看是否能够连接上ESXi主机
    virsh -c esx://172.17.20.80/no_verify=1 list --all
    1
    在这里插入图片描述
    如果能够看到运行在这个ESXi上的主机说明连接没有问题。
    开始迁移
    virt-v2v -ic esx://172.17.20.80/no_verify=1 -os vmdisk -of qcow2 -b virbr0 inner-db
    1
    注:1.如果遇到了类似于“ Peer certificate cannot be authenticated with given CA certificates”这一类的错误通过在url后面设置no_verify=1 参数来忽略证书检查。
    2.整个url的组成由user@esxi组成。如果在3.2没有创建认证文件的话这里需要将命令改成如下
    virt-v2v -ic esx://root@172.17.20.80/no_verify=1 -os vmdisk -of qcow2 -b virbr0 inner-db
    1
    3.如果用户名使用的是域账户(domain\name)或者虚机名中包含有反斜线,则反斜线需要转码特殊标示,使用“%5c”代替“\”
    4.-os表示指定到KVM中的哪个存储池,-of表示迁移转出的虚机磁盘格式,我这里指定的事qcow2,-b表示指定KVM中的虚拟网桥。
    输出结果如下
    [root@localhost ~]# virt-v2v -ic esx://172.17.20.80/?no_verify=1 -os vmdisk -of qcow2 -b virbr0 inner-db
    db_inner-db2: 38% [*]ETA 13:39db_inner-db2: 100% [=========]D 1h26m58s
    virt-v2v: No capability in config matches os=‘linux’ name=‘virtio’ distro=‘rhel’ major=‘3’ minor=‘8’
    virt-v2v: No capability in config matches os=‘linux’ name=‘cirrus’ distro=‘rhel’ major=‘3’ minor=‘8’
    virt-v2v: WARNING: Display driver was updated to cirrus, but unable to install cirrus driver. X may not function correctly
    virt-v2v: WARNING: /etc/fstab references unknown device /dev/cdrom. This entry must be manually fixed after conversion.
    virt-v2v: inner-db configured without virtio drivers.
    (因为迁移的目标虚机中没有安转virtio驱动所以报错,这里可以忽略)
    查看转换出来的xml配置文件
    在这里插入图片描述
    这里需要注意v2v工具把虚机的磁盘bus总重定义为了ide的,说明盘符变成了hd形式,如果出现开机无法加载则需要把启动步骤暂定进入启动文件修改启动分区,把/dev/sda1改成/dev/hda1,这里具体盘符视每个人的自己情况修改。
    测试虚机能否开启
    virsh list --all查看KVM下的虚机
    virsh strrt inner-db 开启虚拟机
    我这里就用图形化的截图来更加直观的显示结果。
    在这里插入图片描述
    手动迁移
    这里说的手动迁移思路指的是,将VMspher或者VMware workstation中的虚拟机运用命令的方式来迁移。在刚刚的VMware知识扩展中我们可以了解到,VMware存储虚机的文件系统可以分为两种模式,一种是单文件的存储,一种是多文件存储。在这里最好处理的就是单文件情况。如果遇到了多文件来提供虚机的磁盘存储情况我们需要使用vmware自带的工具来做文件合并。因为在KVM中是不支持多个存储文件的。介于在VMsphere中可以直接使用virt-v2v的命令来进行v2v的迁移,所以自动的就能将多存储文件合并,所以这里只针对在VMware workstation中如何将多存储文件进行合并。VMware Workstation自带了一个离线的磁盘管理工具vmware-vdiskmanager.exe。
    使用vmware-vdiskmanager.exe合并多个vmdk文件
    命令语法:
    vmware-vdiskmanager [选项]
    这里的选项你必须包含以下的一些选择项或参数
    选项和参数
    描述
    在powershell中运行vmware-vdiskmanager命令
    PS C:\WINDOWS\system32> F:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager -r F:\Virtual Machines\db\i nner-db2.vmdk -t 0 F:\Virtual Machines\db\inner-db2-new.vmdk
    注意:
    1.指定vmware-vdiskmanager的绝对路径和与当前目录的相对路径
    2.多个文件存储的话指定那个几K或者几百K的vmdk描述文件而不用一一指定那些存储文件
    参数解释:
    -r
    转换已经指定类型的虚拟磁盘的类型,结果会输出创建一个新的虚拟磁盘。你必须用-t选项来指定你想要转换成的磁盘类型,并且指定目标虚拟磁盘的文件名。一旦转换完成,你可以先测试虚拟磁盘以确保它能够像你所希望的那样工作,然后再删除原来的那个虚拟磁盘文件。为了让虚拟机重新认识转换后的虚拟磁盘,你应该使用虚拟机设置编辑器先从虚拟机中移除先前存在的虚拟磁盘,然后添加转换好的虚拟磁盘给虚拟机。
    -t [0|1|2|3]
    你在创建一个新的虚拟磁盘或者重新配置一个虚拟磁盘时必须指定虚拟磁盘的类型。指定以下类型之一:
    0 —— 创建一个包含在单一虚拟文件中的可增长虚拟磁盘
    1 —— 创建一个被分割为每个文件2GB大小的可增长虚拟磁盘
    2 —— 创建一个包含在单一虚拟文件中的预分配虚拟磁盘
    3 —— 创建一个被分割为每个文件2GB大小的预分配虚拟磁盘
    vmware-vdiskmanager.exe使用说明
    Usage: vmware-vdiskmanager.exe OPTIONS |
    Offline disk manipulation utility
    Operations, only one may be specified at a time:
    -c : create disk. Additional creation options must
    be specified. Only local virtual disks can be
    created.
    -d : defragment the specified virtual disk. Only
    local virtual disks may be defragmented.
    -k : shrink the specified virtual disk. Only local
    virtual disks may be shrunk.
    -n : rename the specified virtual disk; need to
    specify destination disk-name. Only local virtual
    disks may be renamed.
    -p : prepare the mounted virtual disk specified by
    the mount point for shrinking.
    -r : convert the specified disk; need to specify
    destination disk-type. For local destination disks
    the disk type must be specified.
    -x : expand the disk to the specified capacity. Only
    local virtual disks may be expanded.
    -R : check a sparse virtual disk for consistency and attempt
    to repair any errors.
    -e : check for disk chain consistency.
    -D : make disk deletable. This should only be used on disks
    that have been copied from another product.
    Other Options:
    -q : do not log messages
    Additional options for create and convert:
    -a : (for use with -c only) adapter type
    (ide, buslogic, lsilogic). Pass lsilogic for other adapter types.
    -s : capacity of the virtual disk
    -t : disk type id
    Disk types:
    0 : single growable virtual disk
    1 : growable virtual disk split in 2GB files
    2 : preallocated virtual disk
    3 : preallocated virtual disk split in 2GB files
    4 : preallocated ESX-type virtual disk
    5 : compressed disk optimized for streaming
    6 : thin provisioned virtual disk - ESX 3.x and above
    The capacity can be specified in sectors, KB, MB or GB.
    The acceptable ranges:
    ide/scsi adapter : [1MB, 8192.0GB]
    buslogic adapter : [1MB, 2040.0GB]
    ex 1: vmware-vdiskmanager.exe -c -s 850MB -a ide -t 0 myIdeDisk.vmdk
    ex 2: vmware-vdiskmanager.exe -d myDisk.vmdk
    ex 3: vmware-vdiskmanager.exe -r sourceDisk.vmdk -t 0 destinationDisk.vmdk
    ex 4: vmware-vdiskmanager.exe -x 36GB myDisk.vmdk
    ex 5: vmware-vdiskmanager.exe -n sourceName.vmdk destinationName.vmdk
    ex 6: vmware-vdiskmanager.exe -r sourceDisk.vmdk -t 4 -h esx-name.mycompany.com
    -u username -f passwordfile “[storage1]/path/to/targetDisk.vmdk”
    ex 7: vmware-vdiskmanager.exe -k myDisk.vmdk
    ex 8: vmware-vdiskmanager.exe -p
    (A virtual disk first needs to be mounted at )
    转化成KVM内虚机
    转换成一个单文件的vmdk存储文件之后,将这个文件拷贝到你KVM环境下的linux机器中。
    qemu-img convert -f vmdk -O qcow2 inner-db.vmdk db_inner-db.qcow2
    (建议cd到你拷贝文件的目录执行,方便操作
    qemu-img info db_inner-db.qcow2
    [root@template test]# qemu-img info db_inner-db2
    image: db_inner-db2
    file format: qcow2
    virtual size: 50G (53687091200 bytes)
    disk size: 50G
    cluster_size: 65536
    在本地环境中挂载这个卷然后查看所要迁移虚机的磁盘格式,这个很重要,要是选择磁盘格式错误的话之后挂载很可能因为驱动问题无法找到根分区。这里给出三种挂载方式分别针对qcow2和raw的镜像来如何挂载。
    1.使用nbd挂载qcow2磁盘文件:(如果没有nbd驱动的话请看第二种)
    modprobe nbd max_part=8
    qemu-nbd -c /dev/nbd0 db_inner-db.qcow2
    mount /dev/nbd0p1 /mnt
    查看这个迁移虚机的分区。
    umount分区
    #umount /mnt
    #qemu-nbd -d /dev/nbd0
    2.当然你也可以使用guestmount来挂载
    guestmount -a 磁盘文件 –rw -m 要挂载的磁盘分区 本地目录
    guestmount -a db_inner-db2 --rw -m /dev/sda2 /mnt/
    1
    3.挂载raw格式的磁盘
    对于已分区的挂载:
    losetup /dev/loop0 db_inner-db2
    kpartx -a /dev/loop0
    mount /dev/mapper/loop0p1 /mnt
    注意:
    kpartx命令用来让Linux内核读取一个设备上的分区表,然后生成代表相应分区的设备。
    之后的话使用qemu命令来打开下这个镜像看是否能够打开
    qemu-kvm -name inner_db -smp 8 -m 8000 -drive file=db_inner-db2-flat.qcow2,if=virtio -net nic,model=virtio -net user -usbdevice tablet -vnc :94
    注意:如果待虚机的一开始没有安转virtio驱动的话,用这个命令是无法加载根分区的。
    然后使用vnc打开查看
    之后我在这里出了一个错误,错误如下
    在这里插入图片描述
    (笔者在之后用virt-v2v工具转的自后才发现虚机的磁盘驱动是ide的所以一开始很纳闷为什么会找不到根分区,因为笔者不知道虚机在vmware上配置。)
    如果虚机在vmware使用的是ide的bus总线则需要将virtio参数去掉。
    qemu-kvm -name inner_db -smp 8 -m 8000 -drive file=db_inner-db2-flat.qcow2 -net nic -net user -usbdevice tablet -vnc :94
    如果能够通过vnc链接看到系统正常加载启动的画面说明可以在KVM中使用这个镜像创建虚机。这个时候只需要使用virt-manager图形化操作即可。将虚机的镜像指定为本地的我们刚刚转好的qcow2镜像即可。
    在这里插入图片描述
    这里记得选择“import existing disk image”
    在这里插入图片描述
    在这里插入图片描述
    注意在之后的创建虚机的过程当中配置需要尽可能的与vmware中虚机的配置一致,否则很有可能导致创建不成功。
    后记
    如果有读者想在虚机中做这方面的测试一定要开启虚机支持硬件虚拟化,否则转换的时候会出现错误。
    类似于:qemu-img:…:CURL:Error opeing file: Server does not support ‘rang’(byte ranges)
    在这里插入图片描述
    查看是否支持硬件虚拟化的方法
    egrep ‘(vmx|svm)’ /proc/CPUinfo
    参考文献
    http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm3/
    http://libguestfs.org/virt-v2v.1.html#output-to-rhev
    操作说明
    现有一台kvm宿主机10.10.200.227,上面有通过libvirt管理的多台vm,需要将上面的一台Centos 7 guest主机迁移至ovirt虚拟化平台中。
    ovirt环境说明:
    ovirt-engine:10.10.200.229
    ovirt-host:10.10.200.228

      ovirt-storage:10.10.200.43,这里使用的nfs存储,export存储路径为10.10.200.43:/home/nfs
    

操作步骤
1.配置ovirt的export存储域
在ovirt-engine中新建export的存储域
在这里插入图片描述
2.查看kvm宿主主机中的vm,并选择一台vm进行迁移
[html] view plain copy
[root@ovirt-host-227 ~]# virsh list --all
Id Name State

2 windows2008 running

  • Centos7                        shut off  
    
  • Centos7-2                      shut off  
    
  • windows2003                    shut off  
    
  • windows2008-1                  shut off  
    
  • windows2008-vmware             shut off  
    

在这里我们选择Centos7这台vm进行迁移,在迁移需要在宿主服务器上安装virt-v2v

[html] view plain copy
#yum -y install virt-v2v
下面我们通过virt-v2v进行迁移Centos7这台vm,-os参数后面的存储路径为前面配置的export存储域的存储路径,–network的参数为vnet,ovirt中的vnet名称一般都为ovirtmgmt

[html] view plain copy
[root@ovirt-host-227 ~]# virt-v2v -i libvirt -o rhev -os 10.10.200.43:/home/nfs --network ovirtmgmt Centos7
[ 0.0] Opening the source -i libvirt Centos7
[ 0.0] Creating an overlay to protect the source from being modified
[ 0.0] Opening the overlay
[ 5.0] Initializing the target -o rhev -os 10.10.200.43:/home/nfs
[ 5.0] Inspecting the overlay
[ 18.0] Checking for sufficient free disk space in the guest
[ 18.0] Estimating space required on target for each disk
[ 18.0] Converting CentOS Linux release 7.2.1511 (Core) to run on KVM
virt-v2v: This guest has virtio drivers installed.
[ 56.0] Mapping filesystem data to avoid copying unused and blank areas
[ 58.0] Closing the overlay
[ 58.0] Checking if the guest needs BIOS or UEFI to boot
[ 58.0] Copying disk 1/1 to /tmp/v2v.jXKwCN/3dfea236-3b8a-4da8-b8bf-fae9768045e4/images/c271532e-d60e-41f1-b577-bf7f0cdf9533/819dbc8a-37c7-432e-a36f-539d39bf879e (qcow2)
(100.00/100%)
[ 104.0] Creating output metadata
[ 104.0] Finishing off
3,数据迁移完成后,我们在ovirt-engine中将vm添加至ovirt中

在这里插入图片描述
在这里插入图片描述
在添加完成后,可以在ovirt-engine的虚拟机这一栏,看见Centos7名称的vm,
在这里插入图片描述
在刚刚添加的时候,vm处于import状态,需要等一段时间,待日志提示已经imported success后,我们可以启动该vm,第一次启动相对耗时较长,待vm启动后,可以查看的为
up状态
在这里插入图片描述
virt-v2v 使用指南
1.定义.
virt-v2v将外部的虚拟化平台上的虚拟机转化到可以运行的KVM平台上。它可以读取在VMware、Xen运行Hyper-V和其他虚拟机管理程序上的Windows和Linux的虚拟机,并将其转换为KVM的libvirt,OpenStack,oVirt管理,红帽虚拟化(RHV)等几种方式。
2.基本转化图
[html] view plain copy
┌────────────┐ ┌─────────▶ -o null
-i disk ────────────┐ │ │ ─┘┌───────▶ -o local
-i ova ──────────┐ └──▶ │ virt-v2v │ ──┘┌───────▶ -o qemu
└────▶ │ conversion │ ───┘┌────────────┐
VMware─▶┌────────────┐ │ server │ ────▶ -o libvirt │─▶ KVM
Xen ───▶│ -i libvirt ──▶ │ │ │ (default) │
… ───▶│ (default) │ │ │ ──┐ └────────────┘
└────────────┘ │ │ ─┐└──────▶ -o glance
-i libvirtxml ─────────▶ │ │ ┐└─────────▶ -o rhv
└────────────┘ └──────────▶ -o vdsm
3.安装
(主机是centos7.2系统)
3.1 KVM 需要有 CPU 的支持(Intel vmx或 AMD svm),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持:

egrep’^flags.*(vmx|svm)’ /proc/cpuinfo

有显示, 有显示则说明处理器具有VT功能,在主板BIOS中开启CPU的Virtual Technolege(VT,虚化技术)
3.2 安装kvm及其需要的软件包

yum installkvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-pythonpython-virtinst

或# yum groupinstall KVM
检查kvm模块是否安装,使用以下命令显示两个模块则表示安装完成

lsmod | grep kvm

3.3 安装irt-v2v
#yum install virt-v2v
4.基本参数语法
-i libvirt 读取本地libvirt的资源。当然libvirt 可以连接多中虚拟化平台的资源,比如Vmware,Xen,或者其他的。当连接外部的虚拟化平台时使用 -ic 。
-i libvirtxml 读取libvirt 的XML文件。
-i vmx 是直接读取vmware的image的文件
-i ova 是读取VMware的ova 文件。
-o glance 是输出到 OpenStack Glance.
-o libvirt 可以输出到任意的libvirt 目标,可以连接本地的和远端的kvm虚拟化平台。使用-oc 到远端。
-o local 输出到本地的磁盘镜像和一个配置文件。(一般也不用)
-o qemu 和local比较像,一般也不用。
-o rhv 输出到rhv平台上。
-o vdsm 只是用来当 virt-v2v 在VDSM的运行控制下(基本不用).
–in-place instructs virt-v2v to customize the guest OS in the input virtual machine, instead of creating a new VM in the target hypervisor.
5.支持的平台和虚拟机类型。
VMware ESXi >=5.0
OVA exported from VMware
OVAs from other hypervisors will not work.
SUSE Xen
Citrix Xen
Citrix Xen has not been recently tested.
Hyper-V(不一定好使)
从本地但是这个images必须支持虚拟化,并且格式是qemu支持的。
物理机器:
使用 virt-p2v
Virtualization management systems (Output)
OpenStack Glance
Red Hat Virtualization (RHV) 4.1 and up
Local libvirt
And hence virsh(1), virt-manager(1), and similar tools.
Local disk
Red Hat Enterprise Linux 3, 4, 5, 6, 7
CentOS 3, 4, 5, 6, 7
Scientific Linux 3, 4, 5, 6, 7
Oracle Linux
Fedora
SLES 10 and up
OpenSUSE 10 and up
Windows XP to Windows 10
Currently NT 5.2 to NT 6.3 are supported.
虚拟机固件
BIOS or UEFI for all guest types
6.简单操作的实例。
1:从VMware vcenter server 到本地libvirt。
首先需要有一个VMware vcenter server 然后设置好Datacenter。
virt-v2v -ic vpx://vcenter.example.com/Datacenter/esxi vmware_guest
转换后是在本地/var/lib/libvirt/images
2:从VMware vcenter server 到RHV/ovirt.
首先确保Vmware 和 RHV 平台配置运行正常。(关于RHV的有其他章节介绍)
virt-v2v -ic vpx://vcenter.example.com/Datacenter/esxi vmware_guest
-o rhv -os rhv.nfs:/export_domain --network rhvm
3:从本地到OpenStack glance。
(现在仅仅支持从kvm本地到openstack)
virt-v2v -i disk disk.img -o glance
4:从本地到本地。(比较简单,实现方式也比较多,注意改名字)
virt-v2v -i disk disk.img -o local -os /var/tmp
virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp
virt-v2v -i disk disk.img -o qemu -os /var/tmp --qemu-boot
virt-v2v命令解析:
lvirt-v2v -ic esx://128.9.67.30/?no_verify=1 -os migration -ofqcow2 --bridge virbr0 test_v2v
p-icesx://128.9.67.30/?no_verify=1 : 输入URI,提供Vmware所在单板地址,?no_verify=1,忽略SSL证书检查。
p-os : 输出目标机器上存储域名字。
p-of:转换后KVM上虚拟机镜像格式
p–bridge:网桥名,虚拟机在迁移之后将连接KVM 主机网络, 因此主机必须有一个与之相匹配的网络接口
ptest_v2v:Vmware上源虚拟机名字,配合URI使用

一:命令行参数解析
l源码再现:
lGetOptions(“ic=s” => $input_uri,
l “os=s” =>$output_storage,
l “op=s” => $output_storage, # Deprecated
l “of=s” => $output_format, ……)
l功能:
l接收命令行输入的参数,并移出散列@ARGV;
l
二:配置文件的加载
l源码再现:
lpush(@config_files, ‘/etc/virt-v2v.conf’) if -r’/etc/virt-v2v.conf’;
lpush(@config_files, ‘/var/lib/virt-v2v/virt-v2v.db’)
l if -r ‘/var/lib/virt-v2v/virt-v2v.db’;
l功能:
l安装virt-v2v后KVM机器上自动生成两个配置文件,分别是virt-v2v.conf和virt-v2v.db,记录执行virt-v2v需要哪些配置或者依赖。
三:读取配置文件
l源码再现:
lpush(@config_files, ‘/etc/virt-v2v.conf’) if -r’/etc/virt-v2v.conf’;
lpush(@config_files, ‘/var/lib/virt-v2v/virt-v2v.db’)
l if -r ‘/var/lib/virt-v2v/virt-v2v.db’;
l功能:
l安装virt-v2v后KVM机器上自动生成两个配置文件,分别是virt-v2v.conf和virt-v2v.db,记录执行virt-v2v需要哪些配置或者依赖。
四:登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值