<aside>
本文介绍在Intel处理器的Linux系统(yum包管理)上配置KVM虚拟机的完整流程,包括环境配置、虚拟机创建和设备直通等内容。
</aside>
确认支持硬件虚拟化:lscpu | grep virtual
,出现VT-x类似字样(intel)说明cpu支持硬件虚拟化。
*(only for 设备直通 vfio)*确认内核开启 iommu 并设置 passthrough:cat /proc/cmdline
,查看内核选项是否包含intel_iommu=on iommu=pt
没有,需要手动添加参数并重启:
yum install grubby
grubby --update-kernel=DEFAULT --args="intel_iommu=on iommu=pt"
grubby --info=DEFAULT #confirm
reboot
继续
安装虚拟化管理框架libvirtd
和虚拟化执行软件qemu-kvm
,启用 libvirtd
yum install libvirtd qemu-kvm
systemctl enable --now libvirtd.service
*(optional)*安装辅助工具 libvirt-install
(用于生成 libvirt 所需配置文件)
yum install libvirt-install
准备虚拟机磁盘镜像(已经有系统),例如:ubuntu-cloud.qcow2
以下命令生成一个内存大小为32*1024M,cpu核心数为32,配置了默认NAT网络,配置系统盘为/var/lib/libvirt/images/ubuntu-cloud.qcow2
的名叫ubuntu-cloud的虚拟机配置文件(重定向到ubuntu-cloud.xml
中)。
--os-variant <os-type>
必须按照虚拟机镜像安装的os类型来填写,支持的os类型通过virt-install --os-variant list
查看--network network=default
配置了一个默认网络,连接到宿主机的一个网桥上(libvirt自动创建的),不需要的话可以去掉。virt-install \\
--name ubuntu-cloud \\
--memory $((32*1024)) \\
--os-variant ubuntu22.04 \\
--network network=default \\
--vcpus 32 \\
--disk path=/var/lib/libvirt/images/ubuntu-cloud2.qcow2 \\
--print-xml > /var/lib/libvirt/images/ubuntu-cloud.xml
*(optional)*编辑 xml 文件,需要参考:https://libvirt.org/formatdomain.html
ethtool -i <netdev>
,例如这里查看要直通的网卡ens6f1np1
的总线地址为0000:98:00.1
在 xml 文件的<device>
内部添加<hostdev>
配置:
<address>
内容 <device>
...
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x98' slot='0x00' function='0x1'/>
</source>
</hostdev>
</device>
如果需要配置SR-IOV的VF直通(网卡虚拟化),参考:
virsh define <path-to-xml>
virsh list --all
virsh start <vm-name>