Hyper-V 虚拟机实现嵌套KVM虚拟化及KVM安装

首先Hyper-V 上安装Centos虚拟机

安装完成后查看是否支持虚拟化

egrep -o 'vmx|svm' /proc/cpuinfo

没有输出说明不支持

下面进行设置,参考Hyper-v 开启嵌套虚拟化的方法

hyber-V 机器开启嵌套虚拟化:

关闭虚拟机,管理员权限打开powershell
Get-VM  ##列出虚拟机 
Get-VMProcessor -VMName KVM主机 | fl    ##查看虚拟化选项参数

关闭虚拟机进行设置

Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName KVM主机    ##将其设置为True

重启虚拟机,查看已支持虚拟化

##上图中可能会看到有多个VMX,有几个就意味着有几个CPU

至此,由Hyper-V创建的虚拟机支持KVM虚拟化的嵌套虚拟化设置完成

虚拟机安装KVM虚拟化工具

安装包说明
qemu-kvm

kvm提供的底层仿真软件

libvirt-daemon

虚拟机守护进程,管理虚拟机

libvirt-client提供客户机管理命令

libvirt-deamon-driver-qemu

连接qemu的驱动

virt-manager

提供图形界面
qemu-img

使用qemu命令创建和管理磁盘,将作为libvirt 依赖安装

libvirt-python

可以使用Python来监控kvm虚拟机的资源使用情况

kvm的管理工具

  • libvirt是一组提供了多种语言接口的API,为各种虚拟化技术提供一套方便、可靠的编程接口。它不仅支持KVM,也支持Xen、LXC、OpenVZ以及VirtualBox等其他虚拟化技术。利用libvirt API,用户可以创建、配置、监控、迁移或者关闭虚拟机。

  • RHEL 7支持libvirt以及基于libvirt的各种管理工具,例如virsh和virt-manager等。

  • virsh:是一个基于libvirt的命令行工具。利用virsh,用户可以完成所有的虚拟机管理任务,包括创建和管理虚拟机、查询虚拟机的配置和运行状态等。virsh工具包含在libvirt-client软件包中。

  • Virt-Manager:是一套基于图形界面的虚拟化管理工具。同样,virt-manager也是基于libvirt API的,所以,用户可以使用virt-manager来完成虚拟机的创建、配置和迁移。此外,virt-manager还支持管理远程虚拟机。

QEMU、KVM、libvirt三者间的关系

虚拟化有关的软件包组:

软件包组说明必须软件包
Virtualization Client安装和管理虚拟机的客户端工具virt-install、virt-manager、virt-top、virt-viewer
Virtualization Platform提供访问和控制虚拟机的接口libvirt、virtwho
Virtualization Tools提供离线管理虚拟机镜像的工具libguestfs

软件安装方式:

至少需要安装:

  • qemu-kvm 和 qemu-img 软件包。提供用户级 KVM 仿真器和磁盘映像管理器。
  • libvirt  控制虚拟机的接口
  • virt-manager 或者 virsh (安装包libvirt-client)管理工具: virt-manager 或者 virsh (安装包libvirt-client)
yum install qemu-kvm qemu-kvm libvirt virsh  

完整安装:

方式一:

yum groupinstall "Virtualization Client" "Virtualization Tools"  "Virtualization Platform"

方式二:安装桌面版 (安装桌面版本centos自带KVM)

yum -y groupinstall GNOME Desktop

查看KVM 是否安装成功:

lsmod | grep kvm

也可以使用virsh命令来验证libvirtd服务是否正常启动:

virsh -c qemu:///system list

虚拟机创建:

virt-manager   启动图形管理界面

virt-manager启动报错解决

报错:

[root@localhost ~]# virt-manager
[root@localhost ~]# libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

解决

yum -y install mesa-libGLES-devel.x86_64 mesa-dri-drivers

图形界面创建KVM虚拟机见  CSDN

命令模式创建KVM 虚拟机:

virt-install  --name test --vcpus 1 --memory 1024 --disk /var/lib/libvirt/images/test.qcow2,bus=virtio,size=5 --network bridge=virbr0,model=virtio --cdrom /home/CentOS-7-x86_64-Minimal-2003.iso   --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0" &

创建虚拟机镜像文件

qemu-img create -f 类型 -b 母盘路径名称 快照路径名称

qemu-img create -f qcow2 -b /var/lib/libvirt/images/westos.qcow2  /var/lib/libvirt/images/node1.qcow2 

利用虚拟机镜像文件qcow2安装虚拟机

virt-install --name vm3 --ram 1024 --disk /var/lib/libvirt/images/vm3.qcow2 --import 

##--ram 为必要参数,指定虚拟机运行内存,其余参数如果不指定会根据系统默认值进行设置(不是母镜像文件的值),可通过  virsh edit [vmname]  方式去修改,

删除虚拟机

virsh shutdown  vm1 

virsh destroy  vm1 

 删除虚拟机的硬件信息
命令: virsh undefine

/etc/libvirt/qemu 

 一次性打开虚拟机
命令: virsh create vmname.xml

永久性恢复虚拟机
命令: virsh define vmname.xml

virt-install 命令参数:

  • -n --name= 客户端虚拟机名称
  • -r --ram= 客户端虚拟机分配的内存
  • -u --uuid= 客户端UUID 默认不写时,系统会自动生成
  • --vcpus= 客户端的vcpu个数
  • -v --hvm 全虚拟化
  • -p --paravirt 半虚拟化
  • -l --location=localdir 安装源,有本地、nfs、http、ftp几种,多用于ks网络安装
  • --vnc 使用vnc ,另有--vnclient=监听的IP  --vncport =VNC监听的端口
  • -c --cdrom= 光驱 安装途径
  • --disk= 使用不同选项作为磁盘使用安装介质
  • -w NETWORK, --network=NETWORK 连接客户机到主机网络
  • -s --file-size= 使用磁盘映像的大小 单位为GB
  • -f --file= 作为磁盘映像使用的文件
  • --cpuset=设置哪个物理CPU能够被虚拟机使用
  • --os-type=OS_TYPE 针对一类操作系统优化虚拟机配置(例如:‘linux’,‘windows’)
  • --os-variant=OS_VARIANT 针对特定操作系统变体(例如’rhel6’, ’winxp’,'win2k3')进一步优化虚拟机配置
  • --host-device=HOSTDEV 附加一个物理主机设备到客户机。HOSTDEV是随着libvirt使用的一个节点设备名(具体设备如’virsh nodedev-list’的显示的结果)
  • --accelerate KVM或KQEMU内核加速,这个选项是推荐最好加上。如果KVM和KQEMU都支持,KVM加速器优先使用。
  • -x EXTRA, --extra-args=EXTRA 当执行从"--location"选项指定位置的客户机安装时,附加内核命令行参数到安装程序
  • --nographics "virt-install" 将默认使用--vnc选项,使用nographics指定没有控制台被分配给客户机
<think>好的,我需要解决用户在KVM虚拟机安装Win7时遇到的蓝屏错误0x0000007F的问题。首先,我要理解这个错误代码的含义。0x0000007F通常与硬件或驱动程序的不兼容有关,尤其是在虚拟化环境中。可能的原因包括CPU配置问题、驱动冲突或虚拟机设置不正确。 根据用户提供的引用,其他类似问题如Hyper-V安装Integration Services后的蓝屏[^1],OpenStack中VirtIO驱动问题导致的蓝屏[^2],以及KVM环境下的配置问题[^3],这些案例都涉及到虚拟化环境中的驱动或硬件设置。因此,我需要考虑KVM的特定配置是否正确,特别是与CPU虚拟化扩展相关的部分。 首先,检查CPU模型和设置。KVM默认可能使用特定的CPU模型,而Win7可能需要更兼容的配置。例如,使用qemu64或host-passthrough模型,并确保启用了必要的虚拟化扩展(如vmx/svm)。此外,关闭一些高级特性如hypervisor、tsc等可能有助于避免冲突。 其次,检查磁盘控制器和驱动。用户提到VirtIO驱动已安装,但Win7可能对此支持不够好,尤其是在半虚拟化模式下。改用IDE或SATA控制器可能更稳定,或者在安装时提前加载VirtIO驱动。 另外,内存配置也可能导致问题。大页内存或NUMA设置不当可能引发蓝屏,调整这些设置或关闭相关选项可能有效。 最后,安装KVM增强工具(virtio-win驱动)和更新系统组件也是关键步骤。确保使用最新版本的驱动,并在安装前整合所有必要组件。 总结解决方案步骤:调整CPU模型,检查虚拟化扩展,修改磁盘控制器类型,优化内存配置,安装最新驱动,逐步排查硬件设置。同时,建议用户备份系统,分步骤测试每个调整,以确定具体原因。</think>### KVM虚拟机Win7蓝屏0x0000007F解决方案 0x0000007F错误通常与硬件或虚拟化环境中的CPU配置、驱动不兼容有关。以下是逐步解决方案: --- #### **1. 检查CPU配置** - **问题原因**:KVM默认CPU模型可能与Win7不兼容,导致硬件抽象层(HAL)异常。 - **解决方案**: - 修改虚拟机XML配置中的CPU模型: ```xml <cpu mode='host-passthrough' check='none'/> ``` 或尝试兼容性模型: ```xml <cpu mode='custom' match='exact'> <model fallback='allow'>qemu64</model> <feature policy='disable' name='hypervisor'/> <feature policy='disable' name='tsc'/> </cpu> ``` - 确保主机BIOS中已启用虚拟化扩展(Intel VT-x/AMD-V)。 --- #### **2. 调整磁盘控制器类型** - **问题原因**:VirtIO半虚拟化驱动在Win7中可能存在兼容性问题[^2]。 - **解决方案**: - 临时改用IDE控制器安装系统: ```xml <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <target dev='hda' bus='ide'/> </disk> ``` - 安装完成后,再尝试添加VirtIO驱动: 1. 下载最新[virtio-win驱动](https://fedoraproject.org/wiki/Windows_Virtio_Drivers)。 2. 通过ISO挂载方式加载驱动到虚拟机--- #### **3. 关闭高级CPU特性** - **问题原因**:部分CPU特性(如嵌套虚拟化)可能导致冲突。 - **解决方案**: 在XML配置中禁用以下特性: ```xml <features> <acpi/> <apic/> <pae/> </features> ``` 同时关闭KVM的`kvm=off`标志以避免检测到虚拟化环境: ```xml <hyperv> <vendor_id state='on' value='1234567890ab'/> </hyperv> ``` --- #### **4. 调整内存配置** - **问题原因**:大页内存或NUMA配置不当可能引发错误。 - **解决方案**: - 禁用大页内存: ```xml <memoryBacking> <hugepages/> </memoryBacking> ``` - 若使用NUMA,尝试简化配置: ```xml <numa> <cell id='0' cpus='0-3' memory='4096'/> </numa> ``` --- #### **5. 安装KVM增强工具** - 加载virtio-win驱动ISO到虚拟机: ```xml <disk type='file' device='cdrom'> <source file='/path/to/virtio-win.iso'/> <target dev='hdb' bus='ide'/> </disk> ``` - 在Win7安装过程中选择“加载驱动程序”,手动安装`viostor`(磁盘驱动)和`vioserial`(串口驱动)。 --- #### **6. 其他注意事项** - **BIOS设置**:确保虚拟机使用`BIOS`而非`UEFI`启动(Win7对UEFI支持有限)。 - **驱动版本**:使用virtio-win-0.1.240或更高版本(旧版本对Win7支持较差)。 - **系统补丁**:安装完成后立即更新Windows系统补丁。 --- ### § 验证步骤 1. 先使用`IDE控制器+host-passthrough CPU`最小化配置启动。 2. 成功进入系统后,逐步添加VirtIO设备(网卡、显卡等)。 3. 每次修改配置后创建快照,便于回滚。 --- ### 相关问题 1. KVM中如何为Windows虚拟机优化CPU性能? 2. VirtIO驱动在哪些Windows版本中需要手动安装? 3. 如何诊断KVM虚拟机的常见蓝屏错误? : Hyper-V集成服务安装后蓝屏案例 : OpenStack中VirtIO驱动兼容性问题 : KVM环境配置不当导致蓝屏
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值