物理机转虚拟机(P2V)概述、操作方法及生产环境经验总结
(一) 概述
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)概述、操作方法及生产环境经验总结相关推荐
- VMware P2V---从物理机到虚拟机(二)
温故: 上一篇文章<VMware P2V---从物理机到虚拟机(一)>中讲了物理机到虚拟机的P2V过程,因为上一篇文章主要讲的是P2V的原理,今天咱们聊聊P2V中的两种类型,即运行Wind ...
- VMware P2V---从物理机到虚拟机(一)
温故: 在上一篇的文章中我和大家聊了VDP的规划方面的知识,希望能够对大家有一些小小的帮助.这里还要再提醒一下VDP的容量问题. 这个VDP是一个备份的软件不容置疑吧.然后既然是一个管备份的,总得,有 ...
- spyder上怎样将figure框出来_怎样将数据中心现有的物理机和虚拟机平滑的迁移到云平台上?...
怎样将数据中心现有的物理机和虚拟机平滑的迁移到云平台上?风险和工作量怎样评估?成熟的产品怎样选型? 某信系统集成公司 技术总监: 首先要有一个正确的理解,你要迁移不是几个虚机和物理机,而是一个或者多个 ...
- Xendesktop 可基于物理机及虚拟机的桌面控制交付
我们在部署xendesktop虚拟桌面的时候,很多时候是利用xendesktop的底层机制复制相应的摸板生成虚拟桌面,但也有时候想接管已经设置好相应应用的物理机和虚拟机,这个时候可以采用xendesk ...
- 《VMware vSphere企业运维实战》——2.6 使用vCenter Converter迁移物理机到虚拟机
本节书摘来自异步社区<VMware vSphere企业运维实战>一书中的第2章,第2.6节,作者:王春海著,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.6 ...
- linux区分物理机和虚拟机,如何判断linux服务器是虚拟机还是物理机
如何判断linux服务器是虚拟机还是物理机 发布时间:2020-03-31 15:38:12 来源:亿速云 阅读:1089 作者:三月 随着虚拟化技术的日益成熟,越来越多的企业开始接受使用虚拟化软件产 ...
- Windows远程桌面实现物理机访问控制虚拟机2-Tomcat发布网页
1.任务简介 昨天的博客中已经讲解了如何使用物理机远程控制虚拟机,那么今天的博客就讲解物理机远程控制虚拟机发布网页,该部分内容仍是前期任务中接触过的知识,所以仍有必要温习一下. 2.前期准备 1)物理 ...
- 关于性能测试中使用物理机和虚拟机的区别
需要说明的情况,以下对比表格主要针对性能测试: 举例的物理机和虚拟机的数值 CPU 2Ghz 内存 4GB 网卡 100M 硬盘 200G 虚拟机所在的物理机器称之为"宿主机", ...
- 物理机、虚拟机、云服务器三者的区别
1. 什么是物理机 物理机是相对于虚拟机而言的对实体计算机的称呼.物理机提供给虚拟机以硬件环境,有时也称为"寄主"或"宿主".通过物理机和虚拟机的配合,一台计算 ...
最新文章
- java和C#面向对象的区别
- 2021腾讯数字生态大会:腾讯安全聚焦安全共建,护航数字经济发展
- 全球超算500强榜单更新:美国Summit居首,中国上榜227台
- GoldenGate的ADD SCHEMATRANDATA命令研究
- Java面向对象练习题之字母输出
- 01-subgradients_notes
- 农林资金 大数据审计案例_大数据审计:现状与发展
- Python Pytest装饰器@pytest.mark.parametrize详解
- 【以太坊开发】发币指南--基础篇
- 解决npm 下载速度慢的问题
- MyBatis 报错The error may exist in…….xml
- 【用行动说话】第一篇博客
- Java Exception的日志输出
- 手机关机的java代码_Android关机界面代码
- Xilinx SDx 2018.3安装
- USB转串口芯片 FT232RL/CH9101/PL2303/CY7C65213同类型芯片参数对比
- 餐饮店选址要考虑竞品分布,用户画像等
- mysql LOCATE函数
- [教程]通过注册表关闭win10 xbox dvr 游戏录像
- SeaJS从入门到原理
热门文章
- 缺失值可视化Python工具库:missingno
- 项目搭建后启动时无法自动打开浏览器 Your application is running here:
- mysql 创建函数 split_在mysql中实现split函数的几种方法
- dede:channelartlist 判断 ,根据id判断二级栏目是否需要加跳转链接
- mingw报未定义引用gdi32中函数,undefined reference to `__imp_CreateCompatibleDC‘错误解决办法
- Java设计模式之(工厂模式)
- 百度是如何判断网页价值的?
- DNS初体验之完美邂逅
- macm1安装tensorflow以及pycharm配置
- CSS常用样式属性锦集