前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >物理机转虚拟机(P2V)概述、操作方法及生产环境经验总结

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

作者头像
力哥聊运维与云计算
发布2019-06-28 13:04:21
13.7K3
发布2019-06-28 13:04:21
举报
文章被收录于专栏:力哥聊运维与云计算

(一) 概述

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注册表文件,文件内容如下:

代码语言:javascript
复制
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/sysp_w_picpath

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,碰到问题的时候,再使用上面介绍的手动方式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014/09/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档