(一) 概述

1. P2V是什么

P2V即物理机转虚拟机,要求将物理机原封不动的转化成虚拟机,保持文件系统、任何文件都不发生变化。

2. 为什么要做p2v,p2v的价值是什么

p2v将物理机环境搬到虚拟机环境,适用于以下场景:

(1) 物理机利用非常低,转化成虚拟机可以提供资源利用率;

(2) 物理机的软件环境如果非常复杂,将物理机转化成虚拟机,不需要重新配置软件环境;

(3) 因为转化成虚拟机,可以在虚拟化层面做快照和高可用,提高系统的可靠性;

3. p2v的技术实施方案

(1) 静态方案

就是将物理机关机,使用克隆软件克隆,再在虚拟机上还原;kvm的virt-p2v,vmware 3.5以前都属于这样的解决方案;

(2) 动态方案

物理机处于运行状态,使用专用的agent,将物理机文件在线拷贝到虚拟机中,vmware4.0以后采用动态方案实施p2v

(3) 两种方案的优缺点和难点比较

静态方案

优点:因为是关机操作,对现有的系统不改造,及时实施失败,也不影响现有系统;

缺点:物理机的系统,没有虚拟机的磁盘驱动,比如kvm 的virtio vmwae的vmdk,需要将驱动导入到系统中,负责克隆到虚拟机中的系统不能正常启动,windows会蓝屏,linux会报无法识别硬盘的错误;

动态方案

优点:开机情况下完成物理机到虚拟机转化,转化的时候不需要加载驱动;

缺点:要在现有系统安装agent;有一定的几率转化不成功。

额外的话:目前也有一些第三方公司,帮助企业将业务迁移到云上,很重要一个技术点就是P2V。目前几个比较大的公有云,也提供P2V服务,这些大多使用的都是动态方案,因为这样对业务影响比较小,但是也要求一定的技术实力和实践。

(二) windows系统物理机转虚拟机(p2v)操作方法

经验总结:

操作前的准备工作很重要

1. 清空垃圾站;

2. 删除不需要的软件;

3. 清空各种缓存文件,尤其是浏览器的,曾经碰到因为浏览器的缓存文件过多,导致p2v恢复的时候不成功的案例。

工具:

1. ghost 软件,建议使用高版本;

2. winpe 及能引导winpe的pxe环境,环境搭建请参考微软相关文档;

操作方法:

1转化成ide硬盘方式

第一步在物理机,以下简称p机,运行附件中的ide.reg注册表文件,文件内容如下:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\primary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\secondary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*pnp0600]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*azt0502]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\gendisk]
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"Service"="disk"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#cc_0101]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_0e11&dev_ae33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1039&dev_0601]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1039&dev_5513]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1042&dev_1000]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_105a&dev_4d33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0640]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646&REV_05]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646&REV_07]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0648]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0649]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1097&dev_0038]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10ad&dev_0001]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10ad&dev_0150]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5215]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5219]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5229]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1106&dev_0571]
"Service"="pciide"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_1222]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_1230]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2411]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2421]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7010]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7111]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7199]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"
;Add driver for Atapi (requires Atapi.sys in Drivers directory)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi]
"ErrorControl"=dword:00000001
"Group"="SCSI miniport"
"Start"=dword:00000000
"Tag"=dword:00000019
"Type"=dword:00000001
"DisplayName"="Standard IDE/ESDI Hard Disk Controller"
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\ 52,00,49,00,56,00,45,00,52,00,53,00,5c,00,61,00,74,00,61,00,70,00,69,00,2e,\ 00,73,00,79,00,73,00,00,00
;Add driver for intelide (requires intelide.sys in drivers directory)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IntelIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000004
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\ 52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,6e,00,74,00,65,00,6c,00,69,\ 00,64,00,65,00,2e,00,73,00,79,00,73,00,00,00
;Add driver for Pciide (requires Pciide.sys and Pciidex.sys in Drivers directory)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PCIIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000003
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\ 52,00,49,00,56,00,45,00,52,00,53,00,5c,00,70,00,63,00,69,00,69,00,64,00,65,\ 00,2e,00,73,00,79,00,73,00,00,00

根据系统不行,拷贝windows 2003 32位系统、64位系统、windows 2008系统的*.sys文件到windows\system32\driver目录下面。

驱动文件可以在http://down.51cto.com/data/1871930下载。

第二步 pxe方式启动winpe,运行ghost,制作镜像。

第三步在kvm虚拟机,以下简称v机,pxe方式启动winpe,运行ghost,恢复镜像。

第四步启动v机,系统会重新加载驱动,然后提示重启,完成。

2 转化成virtio硬盘方式

驱动文件可以在http://down.51cto.com/data/1871930下载

第一步在物理机,运行驱动文件中的1、2、3、4、5、.reg注册表文件,有的文件可能提示不能成功导入,拷贝windows 2003 32位系统、64位系统、windows 2008系统的*.sys文件到windows\system32\driver目录下面,右击安装相应驱动下的viostor.inf。

第二步 pxe方式启动winpe,运行ghost,制作镜像。

第三步在v机,pxe方式启动winpe,运行ghost,恢复镜像。

第四步启动v机,系统会重新加载驱动,在这个过程中,提示需要安装virtio驱动,按照提示安装,然后根据提示重启,完成。

三 转化成VMDK硬盘方式

驱动文件可以在http://down.51cto.com/data/1871930下载

第一步在物理机,运行驱动文件中的1、2、3、4、5、.reg注册表文件,有的文件可能提示不能成功导入,拷贝windows 2003 32位系统、64位系统、windows 2008系统的*.sys文件到windows\system32\driver目录下面。

第二步 pxe方式启动winpe,运行ghost,制作镜像。

第三步在v机,pxe方式启动winpe,运行ghost,恢复镜像。

第四步启动v机,系统会重新加载驱动,在这个过程中,提示需要安装virtio驱动,按照提示安装,然后根据提示重启,完成。


(三) Linux 物理机服务器转化虚拟机操作

1. 克隆

linux 推荐用再生龙这个克隆软件,并且设置一个nfs,通过再生龙,将物理机克隆到nfs服务器上,具体操作请参考再生龙的相关操作

2. 还原

创建一个虚拟镜像文件,空间大于物理机

qemu-img create linux-p2v.qcow2.vda –f qocw2 300G

创建一个虚拟机,使用上一步创建的镜像文件,并按照要求设置cpu和内存

注意:这一步硬盘采用ide方式

网络引导,用再生龙将物理机镜像恢复到这台虚拟机中

关闭虚拟机

查看镜像分区和硬盘大小 virt-df –h linux-p2v.qcow2.vda

通过guestfish修改linux分区大小

guestfish –a linux-p2v.qcow2.vda

run

list-filesystem

e2fsck-f /dev/vda2

resize2fs-size /dev/vda2 30G

exit

3. 修改虚拟机硬盘为virtio

通过相应版本的安装光盘引导,进入相应版本的救援模式,加载virtio驱动

modproble virtio virtio_pci virtio_blk virtio_net

chroot /mnt/sysimage

sed -i "s/hda/vda/" /boot/grub/device.map

mkinitrd --with virtio --with virtio_pci --with virtio_blk --with virtio_net -f /boot/initrd-$(uname -r).img $(uname -r)

重启

4. 修改内核的时间设置

因为虚拟机都会发生时间飘逸,所以需要设置下内核参数,使虚拟机的时间走的更精确些,同时建议设置NTP服务器。

按照官方文档,每个系统的内核时间参数设置如下:

Red Hat Enterprise Linux version

Additional guest kernel parameters

6.0 AMD64/Intel 64 with the para-virtualized clock

Additional parameters are not required

6.0 AMD64/Intel 64 without the para-virtualized clock

notsc lpj=n

5.5 AMD64/Intel 64 with the para-virtualized clock

divider=10[1]

5.5 AMD64/Intel 64 without the para-virtualized clock

divider=10 notsc lpj=n

5.5 x86 with the para-virtualized clock

Additional parameters are not required

5.5 x86 without the para-virtualized clock

divider=10 clocksource=acpi_pm lpj=n

5.4 AMD64/Intel 64

divider=10 notsc

5.4 x86

divider=10 clocksource=acpi_pm

5.3 AMD64/Intel 64

divider=10 notsc

5.3 x86

divider=10 clocksource=acpi_pm

4.8 AMD64/Intel 64

notsc divider=10

4.8 x86

clock=pmtmr divider=10

3.9 AMD64/Intel 64

Additional parameters are not required

3.9 x86

Additional parameters are not required

(四) virt-p2v

笔者刚开始做P2V的时候,virt-p2v作为专门的工具,还不好用,也不稳定,目前的virt-p2v已经好用很多,做KVM的virt-p2v的时候,建议优先使用virt-p2v,碰到问题的时候,再使用上面介绍的手动方式。


欢迎加我微信(ID:xiaolikvm)一起交流。欢迎加入云技术社区KVM/QEMU技术交流QQ,请加QQ:502207183,注明姓名,城市,及要加入KVM群。

物理机转虚拟机(P2V)概述、操作方法及生产环境经验总结相关推荐

  1. VMware P2V---从物理机到虚拟机(二)

    温故: 上一篇文章<VMware P2V---从物理机到虚拟机(一)>中讲了物理机到虚拟机的P2V过程,因为上一篇文章主要讲的是P2V的原理,今天咱们聊聊P2V中的两种类型,即运行Wind ...

  2. VMware P2V---从物理机到虚拟机(一)

    温故: 在上一篇的文章中我和大家聊了VDP的规划方面的知识,希望能够对大家有一些小小的帮助.这里还要再提醒一下VDP的容量问题. 这个VDP是一个备份的软件不容置疑吧.然后既然是一个管备份的,总得,有 ...

  3. spyder上怎样将figure框出来_怎样将数据中心现有的物理机和虚拟机平滑的迁移到云平台上?...

    怎样将数据中心现有的物理机和虚拟机平滑的迁移到云平台上?风险和工作量怎样评估?成熟的产品怎样选型? 某信系统集成公司 技术总监: 首先要有一个正确的理解,你要迁移不是几个虚机和物理机,而是一个或者多个 ...

  4. Xendesktop 可基于物理机及虚拟机的桌面控制交付

    我们在部署xendesktop虚拟桌面的时候,很多时候是利用xendesktop的底层机制复制相应的摸板生成虚拟桌面,但也有时候想接管已经设置好相应应用的物理机和虚拟机,这个时候可以采用xendesk ...

  5. 《VMware vSphere企业运维实战》——2.6 使用vCenter Converter迁移物理机到虚拟机

    本节书摘来自异步社区<VMware vSphere企业运维实战>一书中的第2章,第2.6节,作者:王春海著,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.6 ...

  6. linux区分物理机和虚拟机,如何判断linux服务器是虚拟机还是物理机

    如何判断linux服务器是虚拟机还是物理机 发布时间:2020-03-31 15:38:12 来源:亿速云 阅读:1089 作者:三月 随着虚拟化技术的日益成熟,越来越多的企业开始接受使用虚拟化软件产 ...

  7. Windows远程桌面实现物理机访问控制虚拟机2-Tomcat发布网页

    1.任务简介 昨天的博客中已经讲解了如何使用物理机远程控制虚拟机,那么今天的博客就讲解物理机远程控制虚拟机发布网页,该部分内容仍是前期任务中接触过的知识,所以仍有必要温习一下. 2.前期准备 1)物理 ...

  8. 关于性能测试中使用物理机和虚拟机的区别

    需要说明的情况,以下对比表格主要针对性能测试: 举例的物理机和虚拟机的数值 CPU  2Ghz 内存 4GB 网卡 100M 硬盘 200G 虚拟机所在的物理机器称之为"宿主机", ...

  9. 物理机、虚拟机、云服务器三者的区别

    1. 什么是物理机 物理机是相对于虚拟机而言的对实体计算机的称呼.物理机提供给虚拟机以硬件环境,有时也称为"寄主"或"宿主".通过物理机和虚拟机的配合,一台计算 ...

最新文章

  1. java和C#面向对象的区别
  2. 2021腾讯数字生态大会:腾讯安全聚焦安全共建,护航数字经济发展
  3. 全球超算500强榜单更新:美国Summit居首,中国上榜227台
  4. GoldenGate的ADD SCHEMATRANDATA命令研究
  5. Java面向对象练习题之字母输出
  6. 01-subgradients_notes
  7. 农林资金 大数据审计案例_大数据审计:现状与发展
  8. Python Pytest装饰器@pytest.mark.parametrize详解
  9. 【以太坊开发】发币指南--基础篇
  10. 解决npm 下载速度慢的问题
  11. MyBatis 报错The error may exist in…….xml
  12. 【用行动说话】第一篇博客
  13. Java Exception的日志输出
  14. 手机关机的java代码_Android关机界面代码
  15. Xilinx SDx 2018.3安装
  16. USB转串口芯片 FT232RL/CH9101/PL2303/CY7C65213同类型芯片参数对比
  17. 餐饮店选址要考虑竞品分布,用户画像等
  18. mysql LOCATE函数
  19. [教程]通过注册表关闭win10 xbox dvr 游戏录像
  20. SeaJS从入门到原理

热门文章

  1. 缺失值可视化Python工具库:missingno
  2. 项目搭建后启动时无法自动打开浏览器 Your application is running here:
  3. mysql 创建函数 split_在mysql中实现split函数的几种方法
  4. dede:channelartlist 判断 ,根据id判断二级栏目是否需要加跳转链接
  5. mingw报未定义引用gdi32中函数,undefined reference to `__imp_CreateCompatibleDC‘错误解决办法
  6. Java设计模式之(工厂模式)
  7. 百度是如何判断网页价值的?
  8. DNS初体验之完美邂逅
  9. macm1安装tensorflow以及pycharm配置
  10. CSS常用样式属性锦集