当前位置: 代码迷 >> 综合 >> Hyper-V 虚拟机实现嵌套KVM虚拟化及KVM安装
  详细解决方案

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

热度:31   发布时间:2023-12-15 23:10:31.0

首先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指定没有控制台被分配给客户机
  相关解决方案