zhuan:https://segmentfault.com/a/1190000002697929

本文完整记录了如何从物理服务器,保持所有环境配置信息,纹丝不动的迁移到虚拟机上,俗称 P2V 。采用的工具是VMware公司的 VMware vcenter vconverter standalone,它支持将windows和linux操作系统用作源,可以执行若干转换任务:

  • 将正在运行的远程物理机和虚拟机作为虚拟机导入到vCenter Server管理的独立ESX/ESXi或ESX/ESXi主机
  • 将由VMware Workstation或Microsoft Hyper-V Server托管的虚拟机导入到vCenter Server管理的ESX/ESXi主机
  • 将第三方备份或磁盘映像导入到vCenterServer管理的ESX/ESXi主机中
  • 将旧版服务器迁移到新硬件,而不重新安装操作系统或应用程序软件等
  • 完整功能见《Converter Standalone 用户指南》

Converter Standalone的组件,只能安装在Windows操作系统上:

  • Converter Standalone Server —— 启用并执行虚拟机的导入和导出
  • Converter Standalone agent —— Converter Standalone Server会在Windows物理机上安装代理,从而将这些物理机作为虚拟机导入,完成后可以选择自动删除
  • Converter Standalone client —— 与Converter服务端配合使用,包括看到的用户界面、创建和管理转换任务等
  • Vmware vCenter Converter引导CD:是单独的组件,可用于在物理机上执行冷克隆

冷克隆可以创建一致的源计算机的精确副本,而我们更多的是进行热克隆,也就是源服务器在迁移过程中会继续工作,这就可能会出现某些文件不一致,但Converter Standalone会在热克隆后将目标虚拟机与与主机同步,同步执行过程是将在初始克隆期间更改的块从源复制到目标。

本文记录的过程是,源主机是 SUSE 11.x 物理机,运行华为的智能呼叫中心应用,因此安装有Oracle数据库,对于数据文件和控制文件的一致性和安全性较高,所以建议先把oracle数据库关闭再操作;目标虚拟服务器是 ESXi 5.1,但我使用的Converter是 5.5-en,操作过程类似。下面正式开始

源主机:172.30.31.0/24
ESXi: 172.29.88.0/24,与源主机IP段无法通信
Helper VM: 172.29.41.0/24,与上面两个IP段都通

1. 设置源和目的主机地址

  • Source System
    选择你要转换的源系统,物理机为 Powered-on machine,填写其他登陆信息:

  • Destination System
    填写要在哪个主机上创建虚拟机,也就是ESXi服务器地址:

这两个过程有个简短的拉去主机信息的过程。

2. 选择目标虚拟机和存放位置

  • Destination Virtual Machine
    目标虚拟机名字默认是源hostname,不用选择folder:

  • Destination Location
    选择新虚拟机要放在ESXi的哪个Datastore上,请确保有足够的磁盘空间,不能小于源系统实际使用的大小:

3. 为转换任务设置其它选项

这一步尤为关键,直接关乎后面转换的成败。

  • Data to copy
    设置目标虚拟机的磁盘和分区,我们可以看到自动获取的源分区信息,我这里因为硬盘资源有限,没有遵循默认的 Maintain size,但比Minmun size(在源SUSE下 df -h 看到的used大小)大。

    CPU个数和内存大小默认也是与源主机保持一致。

  • Network
    网络设置这一块比较纠结。按理说源主机不需要与目的主机的网卡通信,只需要与Helper
    VM能互通即可,但我一直卡在这走不过去。源主机有2块网卡在使用,最后在这一步只设置了一块能ping同源主机的网卡,迁移完成后再手动添加剂一块网卡。如下是vmware官方知识库的Note:

In the Conversion wizard, ensure to select the virtual machine
portgroup when configuring the network card. This virtual machine
portgroup must be connected to the physical network that is routable via
port 22 (SSH) in both directions from the source Linux server's
configured network IP address.
The IP address entered must be routable to the IP address of the
physical Linux source machine. Helper virtual machine IP address should
able to ping the physical machine.

图中看到VM Local是事先在vSphere Server上新建的端口组(portgroup),而且这个虚拟交换机vSwitch没有关联任何物理网卡:

  • Helper VM network
    Helper
    VM是做转换时的一个临时操作系统,运行在目的主机上,从源主机拷贝数据。如果转化的时windows,则没有这个vm,取而代之的时再源主机上运行一个agent,所以转换windows要求ESXi与源主机能互通,而转换Linux则只需要设定的Helper
    VM network能与源主机22端口互通即可。

4. 开始转换

可以看到转换的信息汇总,finish则开始迁移转换过程。


测试在ESXi上可以看到会自动创建一台虚拟机并启动。等待转换完成。

5. 问题

转换几次失败都是因为网络设置不当,转换到1%时报错:

Error:event.ObtainHelperVmIpFailedEvent.summary

解决办法就是手动设置HelperVm的IP,并确保能够与源主机通信。如果继续报错,修改目标地址网卡设置,比如去除只剩一个网卡(后续添加),也设置成HelpVm网段。参考 Convert: converter.fault.HelperVmFailedToObtainIpFault

转换Windows Server 2003时还有可能会出现

Unable tp locate the required Sysprep files. Please upload them under
c:\documents and settings\all users\application data\vmware\vmware vcenter converter standalone\sysprep\svr2003
on the converter server machine

解决办法是,需要下载WindowsServer2003-KB926028-v2-x86-CHS.exe,在cmd下执行WindowsServer2003-KB926028-v2-x86-CHS –x(不可以用winrar),解压缩出来2个目录加一堆文件,在SP2QFE目录下找到deploy.cab,再将deploy.cab解压缩(winrar即可),得到10个文件,拷贝到所提示的 svr2003 目录。参考 Sysprep文件位置和版本 (2040984)

6. on windows

加入迁移的是windows主机,上面的操作略有不同,主要区别在于没有HelperVm,而是在需要转换的源主机上安装agent。所以要求ESXi与源主机必须能够直接通信才可以迁移。

使用vmware vconverter从物理机迁移系统到虚拟机P2V(多图)的更多相关文章

  1. 【转载】Vmware Vconverter从物理机迁移系统到虚拟机P2V

    本文完整记录了如何从物理服务器,保持所有环境配置信息,纹丝不动的迁移到虚拟机上,俗称 P2V .采用的工具是VMware公司的 VMware vcenter vconverter standalone ...

  2. 物理机迁移至vmware

    使用用vmware vcenter converter standalone将物理机迁移到虚拟机. 6.2版本下载地址如下: https://www.filehorse.com/download-vm ...

  3. [转]如何用Vmware 10虚拟化物理机

    在重装系统的过程中总会遇到这种情况,平时用的东西一下子就找不到了,比如办公记录,考勤记录等等.虽然在重装系统之前你一般都会备份一些重要文件,但是往往都会漏备份一些之前忽略文件,还有一些自己使用电脑的“ ...

  4. vsphere的P2V工具做的物理机迁移到虚拟机报错out of memory

     vsphere的P2V工具做的物理机迁移到虚拟机  迁移成功,但是启动报错  进入rescue模式后发现是sysctl.conf文件的参数设大了因为虚拟机的内存没有物理机内存大 kernel.shm ...

  5. VMware 物理机可以复制文件到虚拟机,却无法从虚拟机复制文件到物理机(已解决)

    物理机运行,输入gpedit.msc确定,把如图的那个改成“已禁用” 之后虚拟机重新安装VMware Tool重启即可 事情是这样的,每次打开IDM会 “警告:您在以管理员身份运行IDM,在该模式下, ...

  6. Ubuntu物理机中解决VirtualBox虚拟机无法连接USB设备的问题

    本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=611 问题描述: 在安装完VirtualBox的USB控制器扩展(关于在VirtualBox中安装USB控制器扩展的 ...

  7. virtual box虚拟机跨物理机迁移

    VirtualBox保存虚机数据的是vdi文件,但是直接拷贝在新的VirtualBox中不能打开,因为每个vdi文件都包含了一个uuid的数据,如果直接拷贝,uuid在新的VirtualBox中是不能 ...

  8. 将物理机转换成vmware虚机

    随着虚拟化的快速发展,公司主要是以公有云+私有云结合的混合云部署,据我不成熟的了解,目前很少有公司会将一台单独的物理机作为服务器,在公司内部大家逐渐接受了私有云的部署方案,这样做不但可以节省硬件资源, ...

  9. VMware Converter 迁移物理机到 esxi 虚拟机

    http://dngood.blog.51cto.com/446195/685082/ VMware Converter  有啥用? VMware Converter 是一款能将物理电脑系统.VMwa ...

随机推荐

  1. C# webapi简单学习

    创建WebApi项目: 在VS工具中创建一个ASP.NET Web应用程序 选择Webapi 一个webapi项目就创建好了 这里简单的写一个post和get两种请求的方法,由于post请求参数需要参 ...

  2. 利用Access-Control-Allow-Origin响应头解决跨域请求原理

    传统的跨域请求没有好的解决方案,无非就是jsonp和iframe,随着跨域请求的应用越来越多,W3C提供了跨域请求的标准方案(Cross-Origin Resource Sharing).IE8.Fi ...

  3. 【练习】Python第三次

    对函数,内置函数的用法,递归,程序运行顺序的考试 1.列举布尔值为 False 的值 0 False '' [] () {} None 经常使用的场景是 if object 如果object有值就执行 ...

  4. Git命令解释

    pwd命令: Print Working Directory 显示工作目录的路径名称.

  5. python测试开发django-2.templates模板与html页

    前言 Django 中的视图的概念是一类具有相同功能和模板的网页的集合.通俗一点来说,就是你平常打开浏览器,看到浏览器窗口展示出来的页面内容,那就是视图.前面一章通过浏览器访问http://127.0 ...

  6. 解决python logging重复写日志问题

    import logging from homework.exam_homework_0413.common import contants from homework.exam_homework_0 ...

  7. linux命令总结----转载

    1.终端是个奇妙的东西,一开始它的低颜值,高难度可能会令我们灰心气馁. 但是入门之后,你会发现终端命令行是如此强大,简直飞一般的感觉.就是这个feel,倍儿爽~ 享受“弹指间,一切尽在掌握”的感觉. ...

  8. vue 配置了全局的http拦截器,单独某个组件不需要这个拦截器,如何设置

    之前写过关于全局配置http拦截器的随笔,现在有个需求,在微信支付时,生成二维码,页面显示一个遮罩层,二维码页面需要每两秒请求一次接口,若返回结果为已支付,则进行页面跳转,但因为全局http中load ...

  9. 19-03【golang】strings包

    golang的strings包提供了字符串操作的一系列函数.下面做个简单介绍 函数 用法 备注 Compare(a,b sring) 比较两个字符串   Contains(s, substr stri ...

  10. es6数组的扩展

    数组扩展运算符 ...(三个点) const demoArr=[0,1,2,3,4] console.log(...demoArr) // 0 1 2 3 4 // 他把一个数组用逗号分隔了出来 // ...