HyperV安装和使用

标签: 无 分类: 未分类 创建时间:2021-05-06 06:37:39 更新时间:2025-01-17 10:39:22

我是在windows server2016上安装和配置的Hyper-V,打开和关闭window功能,和参考文章1是一样的,因为有很多的图片,为了节省空间,我就直接略过了,其实就是下一步,下一步,不知道该怎么选的时候,就直接下一步就好了,使用默认的配置。

参考文章:
1.Windows Server 2016 部署Hyper-V (这里配置还是挺全的,还有各种截图)
2.关于虚拟化技术的个人见解(Citrix XenServer,VMware区别) (全虚拟化和半虚拟化的区别)
3.虚拟化技术 - Docker Vs. 虚拟机 (这篇文章对于虚拟机和Docker对比写的更加的全面,从使用到的技术,常用的虚拟机以及相互之间的区别等方面都进行了一定程度的解析)
4.Hyper-V CPU设置 1.物理机CPU是几核的,Hyper-V设置中就可以为虚拟机分配几个CPU。可以通过任务管理器查看;2.根据需要设置上面数值,多个虚拟机之间CPU资源是动态分配的,当然可以通过上面设置加以限制。

1.导入vof/vhd虚拟机

微软提供了一个工具叫“Microsoft Virtual Machine Converter 3.0”,可以通过PowerShell将vmdk转换为vhd文件。既然需要将vmdx转成vhd,Hyper-v才能支持,也就是说,我直接从XenServer导出的vhd,理论上应该可以直接支持。

Windows10 Hyper-V支持的虚拟机文件格式有两代,第一代的文件后缀为.vhd;第二代的文件后缀为.vhdx。VBoxManage转换应该是仅支持第一代。

在新键虚拟机的时候,选择现有的vhd磁盘就可以了。

参考文章10中还提供了以下的几种方式,从VMware迁移到Hyper-V的解决方案:

  • 利用微软官方工具MVMC把VMware平台上的虚拟机迁移到Hyper-V平台上

利用此方案可以把VMware虚拟机迁移到Hyper-V上,但是MVMC转换工具并不支持最新的VMware ESXI 5.1产品,并且要求来宾操作系统必须加入域、开启WMI防火墙端口,不支持最新的windows 8 操作系统、Linux系统。适合那些来宾操作系统加入域环境并满足条件的虚拟机进行转换。

  • 利用SCVMM 2012 SP1 把VMware主机上的虚拟机转换到Hyper-V平台上

利用此方案可以快速方便的转换VMware虚拟机到Hyper-v上,但此方案要求环境中同时拥有SCVMM和Vcenter server等管理平台。同时来宾操作系统必须要卸载VMware Tools,并处于关闭状态。适合那些同时拥有这两套产品的用户使用。

  • 利用第三方工具 把VMware平台的虚拟机转换到Hyper-v平台上

此方案可以迁移VMware虚拟机到Hyper-V上,但该方案只是去转换虚拟机的虚拟磁盘格式到VHD,而不能把源虚拟机的配置文件迁移到Hyper-V平台上。此方案转换简单快速,但是转换完后需要手工去Hyper-V上去创建虚拟机并挂载转换后的VHD文件。适合那些没有SCVMM管理平台,虚拟机数量不多的用户使用。

参考文章:
1.hyper-v的vhdx文件如何打开和转换成vhd vmdk VDI (这个是将hyper-v的虚拟机转换为其他的格式)
2.Import ovf and/or vmdk to Hyper-V (这里提供了一个微软的工具,但是提供的例子是vmdk的转换例子,而且使用的Import-Module模块,我也不知道该如何使用,’Import-Module’ 不是内部或外部命令,也不是可运行的程序。)
3.将VMware虚拟机导入Hyper-V (这里提供了一个WinImage工具进行转换)
4.VirtualBox虚拟机导出导入实战练习 (这是使用VirtualBox导出开放虚拟机格式的方法)
5.转换VMware虚拟机到Hyper-V Server (安装MVMC程序,可以进行虚拟机转换,但是在进行转换的时候,还需要连接vmserver服务器,如果没有vmserver服务器怎么办呢?所以这个我就没有实验成功,虽然也提供了相关的截图)
7.在 Windows 上安装 PowerShell
8.将Virtualbox虚拟机转换格式并导入Hyper-V (这个其实挺简洁的,就是使用VirtualBox提供的工具VBoxManage.exe,将vdi文件转换为vhd,然后通过在Hyper-V中新键虚拟机时选择现有的磁盘进行创建虚拟机的方式,将VirtualBox提供的虚拟机导入到Hyper-V中)
9.VMware虚拟机到Hyper-V平台的迁移 (这里除了提供了借助于工具MVMC,通过服务器连接的方式连接到Vcenter,然后导入虚拟机的方式,还像上面的连接一样,写了使用VHD文件导入虚拟机的方法 )
10.VMware迁移到Hyper-V的解决方案

问题

在从XenServer中导入虚拟机到Hyper-V中,出现了各种问题。

1.由于操作系统限制,因此请求的操作无法完成

当我完成了虚拟机的添加之后,出现了问题,就是”由于操作系统限制,因此请求的操作无法完成。”,我查看了磁盘的文件系统,发现是exFAT格式,于是我将vhd文件复制到另外的磁盘中,重新创建并加载虚拟机,最后终于是启动了虚拟机,但是随之而来的问题就是系统启动不起来。

参考文章:
1.创建虚拟磁盘 提示 由于文件系统限制 因此请求的操作无法完成 (这里是优盘使用的fat32文件格式,我觉得和我的差不多)

2.虚拟机无法启动

我虽然在Hyper-V中成功的加载了vhd格式的虚拟机,但是启动时,总是会出现问题。我参考了很多的文章,进行了不同的操作,最后还是没有成功。

然后重启,就回陷入一个死循环中。

(1) 使用sfc命令
我尝试了使用命令行进入,然后执行: sfc /scannow,出现了:Windows 资源保护无法执行请求操作。

(2) 使用系统修复命令

1
2
3
4
5
6
7
8
9
10
11
12
## 1.找来window系统安装盘ISO文件,挂载在虚拟机的DVD,作为第一启动盘。

## 2.进入windows安装,

## 3.选择“修复windows系统”,

## 4.调出cmd命令提示符
Bootrec.exe /fixmbr
Bootrec /fixboot
bootrec /rebuildBcd
bootsect /nt60 c: /mbr
bcdboot c:\windows /s c:

(3) 导出的vhd如果是centos系统,直接就进入了dracut模式

(4) 于是我尝试使用iso文件恢复系统,但是始终还是无法完成。很长时间卡在了指定网络影像位置上

最后虽然指定了网络位置共享文件夹,输入用户名和密码时又费了一番周折,输入用户名密码需要带上域,即:电脑名\administrator。

成功输入了网络地址,最后还是没有找到还原的iso文件,也没有成功的恢复系统。

参考文章:
1.如何使用SFC命令行工具修复Windows 10系统文件
2.“ Windows 资源保护无法执行请求的操作”怎么办?? (没啥用)
3.利用DISK2VHD将物理服务器转换虚拟机VHD后出现系统无法启动故障解决办法 (我使用了这个方法,但是没有作用)
4.VMWare虚拟机迁移到Hyper-v虚拟机加载不了系统 (这里有了一个类似的东西就是启动centos之后,直接进入到了dracut模式,作者给出了重建initramfs的方法)
5.使用Windows Server2016裸机恢复教程 (我按照上面的操作,我卡在了 “高级-在网络上搜索系统映像” 这个步骤上,死活搜索不到我共享的文件夹)
6.还原或修复运行 Windows Server Essentials 的服务器

(5) 尝试直接从XenServer导入到HyperV中
根据参考文章1中的描述,主要有如下的几个步骤:

  • Uninstall XenServer Tools/Management Agent
  • Remove Ghost Devices
  • Remove drivers from source VM
  • Convert the VM
  • Check the VHDX
  • Move on in life
参考文章:
1.Migrate XenServer VMs to HyperV 这篇文章我觉得可以尝试一下,但是我自己没有尝试成功
2.如何将XenServer虚拟机转换成Hyper-V格式 (这里有两个人回答了,但是我都没有操作成功,但是可以作为参考步骤进行处理)
3.关于 VM 导入和导出 (XenServer中关于VM的导入导出说明)
4.hyper-v虚拟机缺少引导无法开机 这里提供了一个答案,可以作为参考。相关环境:一台EFI启动的物理机,公司用作OA系统。需要转换为Hyper-v虚拟机,方便管理和维护;同时释放物理机资源。尝试了以下几种办法:结果失败!

1、使用disk2vhd 工具转换,转换之后的虚拟机无法启动。
2、使用 mvmc3.0 ,最后一步提示,不支持 efi 启动的机器。
3、使用sccm 2012R2,没有转换到虚拟机选项。

最终使用下面的办法解决:

1、安装VMware Convert 直接将物理机转换到 vmware workstation 或者 esxi主机;成为一台 vmware 虚拟机,
2、安装StarWind V2V Image Converter,转换 vmware 虚拟机硬盘为vhdx 格式;
3、在hyper-v主机上新建虚拟机,并使用转换之后的vhdx硬盘。

注意:
1、工具安装在其他主机上,
2、转转成 vmware 的虚拟机不要安装 vm tool !
3、SERVER2012R2 系统的的物理机转换成功!

4.安装的虚拟机,和主机在一个局域网内,但是无法ping通主机的ip地址

以前安装的虚拟机好好的,不知道从什么时候开始,安装的虚拟机,虽然和主机在一个局域网内,但是无法ping通主机的ip地址。

[解决方法]
经过不断的重复,不断的尝试,修改ip地址,修改网络,最后找到了解决方法。
(1) 在Hyper-V的虚拟交换机管理器界面,新建一个外部虚拟网络交换机

(2) 然后选择自己的网卡,确定。如果提示已经绑定了虚拟交换机,就在 控制面板的 网络和共享 中,找到这个网络适配器,右键属性,取消勾选 “Hyper-V Extensible Virtual Switch”,就可以了。

(3) 然后修改虚拟机的设置,将网络适配器选择为自己新创建的这个虚拟机网络适配器

3.安装虚拟机

在使用Hyper-V安装第二代操作系统的时候,出现了:PXE network boot,无法启动。

重启之后出现了三个错误提示:

解决方法:
(1) 虚拟机设置中添加DVD驱动器,选择CentOS的iso文件,选择固件->将DVD移动到最上面。

(2) 虚拟机设置中,安全->将启用安全启动 关闭

参考文章:
1.hyperv 创建第二代虚拟机 (很多的图片,指示如何创建二代的虚拟机window8.1)
2.是否应在 Hyper-V 中创建第 1 代或第 2 代虚拟机?
3.Hyper-V 2nd Gen: Can’t install an operating system (关闭安全启动功能)
4.Windows 10 Hyper-V VM boot not working (在设置中将DVD移动到最上面)
5.使用Win10 Hyper-V 创建虚拟机 (从Hyper-V安装到安装虚拟机都包括了)

4.配置虚拟机的cpu数量

在虚拟处理器数量字段中,指定虚拟处理器的数量。最小建议值为 8。如果需要更高的虚拟机性能,则可以指定较大的值。在任务管理器中,查看物理机是几核的,设置的时候,就设置几个处理器。

参考文章:
1.Hyper-V CPU设置 (物理机是几核的,就配置几个cpu)
2.Hyper-V CPU设置 (可以限制cpu的使用率)
3.更改虚拟机处理器的数量
4.Checklist: Optimizing Performance on Hyper-V
5.Hyper-V虚拟化CPU分配探讨 这篇文章探讨了cup切换的原理,可以进行参考

5.临时关闭Hyper-V

开启了Hyper-V那就无法使用VirtualBox等其他的VM了,但是我又必须临时使用,怎么办呢?只能先临时关闭了。

(1) 尝试使用命令行,关闭了下面的方式,不起作用需要重启,重启之后就Hyper-V就不会自动启动和运行了。

1
2
3
4
5
## 关闭
bcdedit /set hypervisorlaunchtype off

## 开启
bcdedit /set hypervisorlaunchtype auto

(2) 后来我使用了VirtualBox提供的工具,也是不可以同时运行virtualbox和hyper-v

1
C:\Program Files\Oracle\VirtualBox> .\VBoxManage setextradata global "VBoxInternal/NEM/UseRing0Runloop" 0

(3) 在控制面板的打开和关闭windows功能中关闭Hyper-V的选项

(4) 在服务中关闭所有Hyper-V的相关服务

把VHD转换成VHDX

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。