根据提供的文章内容,以下是关于KVM核心基础功能的总结:
概述
KVM采用完全虚拟化技术,在硬件虚拟化(如Intel VT-x)的支持下,通过内核KVM模块与QEMU的设备模拟协同工作,为未修改的普通操作系统(客户机)提供一套完整的虚拟计算机系统。核心子系统包括处理器(CPU)、内存、存储、网络和显示。
1. CPU配置
- vCPU概念:客户机中的每个vCPU对应宿主机中QEMU进程的一个线程。vCPU在三种模式下运行:用户模式:由QEMU处理I/O模拟。
内核模式:由KVM处理特权指令引起的退出(VM-Exit)和影子内存管理。
客户模式:执行客户机中的大部分指令。 - SMP支持:通过
-smp参数为客户机配置对称多处理器,可指定CPU数量、核心数、线程数和插槽数。 - CPU过载使用:允许分配的vCPU总数超过物理CPU数量,但不推荐在生产环境中过度使用,尤其是单个客户机的vCPU数超过物理CPU数。
- CPU模型:QEMU/KVM默认提供
qemu64等基本CPU模型,也可通过-cpu参数指定特定模型(如SandyBridge),便于在不同硬件平台间实现平滑迁移。 - 处理器亲和性与vCPU绑定:可以使用
taskset命令将代表vCPU的QEMU线程绑定到特定的物理CPU上,以提高性能或实现资源隔离。通常结合内核启动参数isolcpus隔离出专用CPU。
2. 内存配置
- 基本设置:通过
-m参数设置客户机内存大小,单位默认为MB。 - EPT与VPID:Intel的硬件虚拟化扩展,用于优化内存管理单元(MMU)的虚拟化。EPT简化了GVA->GPA->HPA的地址转换,提升性能;VPID优化TLB管理,减少VM切换时的TLB失效。
- 大页(Huge Page):使用大于4KB的内存页(如2MB),可以减少页表数量,降低TLB失效,提升内存访问性能。通过
-mem-path参数指定使用hugetlbfs文件系统。 - 内存过载使用:允许分配给客户机的内存总量超过宿主机物理内存。主要通过三种方式实现:内存交换(Swapping):使用交换空间弥补不足。
气球驱动(Ballooning):通过virtio_balloon驱动动态调整客户机内存(文章提及在第5章详述)。
页共享(Page Sharing):通过KSM合并相同内存页(文章提及在第5章详述)。
注意:过度过载使用可能影响性能和稳定性。
3. 存储配置
- 基本配置与启动顺序:QEMU模拟多种块设备(IDE、SCSI、软盘、CD-ROM等)。
-boot参数可设置启动顺序(如order=d从光盘启动)。 qemu-img命令:QEMU的磁盘管理工具,支持创建、转换、快照、扩容等多种操作。常用命令:create:创建镜像文件。convert:转换镜像格式(如vmdk转qcow2)。info:查看镜像信息。snapshot:管理快照。resize:调整镜像大小。- 镜像文件格式:raw:原始格式,简单易移植,支持稀疏文件。
qcow2:QEMU推荐格式,支持稀疏文件、加密、压缩、快照、后端镜像等功能。 - 存储后端:镜像文件可存储在本地文件、物理磁盘/分区、LVM、NFS、iSCSI等多种后端上。
4. 网络配置
QEMU/KVM主要支持四种网络模式:
- 网桥(Bridge)模式:客户机通过TAP设备连接到宿主机网桥,直接接入物理网络,性能好。需要宿主机配置网桥和脚本。
- NAT模式:客户机通过虚拟网络(默认
192.168.122.0/24)经宿主机进行地址转换访问外网。需要配置网桥、iptables NAT规则和DHCP服务器(如dnsmasq)。 - 用户模式(User Mode):QEMU内部实现的NAT网络,无需root权限,配置简单(
-net user),但性能较差,不支持ICMP,且无法从外部直接访问客户机。支持端口转发(hostfwd)。 - 直接分配网络设备:包括VT-d和SR-IOV(文章提及在第5章详述)。
- 网络设备模拟:通过
-net nic,model=参数指定模拟的网卡类型,如默认的rtl8139,或e1000、virtio等。
5. 图形显示
- SDL:QEMU默认的图形显示方式,需要图形界面,会弹出独立窗口。鼠标可通过
Ctrl+Alt组合键释放。 - VNC:重要的远程图形管理方式,克服了SDL对图形界面的依赖。通过
-vnc参数启动,支持密码验证、访问控制、反向连接等。常用解决VNC鼠标偏移问题的方法是添加-usb -usbdevice tablet参数。 - 非图形模式:通过
-nographic参数启动,将客户机串口重定向到控制台,适用于纯命令行管理和内核调试。 - 其他选项:
-curses:使用文本模式界面显示VGA输出。-vga:选择模拟的VGA显卡类型(如cirrus,std,vmware)。
总结
本章详细介绍了在KVM虚拟化环境中配置和管理客户机核心子系统(CPU、内存、存储、网络、图形显示)的基本原理、方法和实践操作。涵盖了从基础参数设置到性能优化(如CPU绑定、大页、EPT/VPID)和多种网络/存储方案的选择,为构建功能完整的虚拟机提供了全面指导。后续章节(第5章)将介绍更多高级特性和性能优化技术。
