KVM虚拟化技术实战与原理解析-4-KVM核心基础功能

KVM虚拟化技术实战与原理解析-4-KVM核心基础功能

10分钟 ·
播放数0
·
评论数0

根据提供的文章内容,以下是关于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主要支持四种网络模式:

  1. 网桥(Bridge)模式:客户机通过TAP设备连接到宿主机网桥,直接接入物理网络,性能好。需要宿主机配置网桥和脚本。
  2. NAT模式:客户机通过虚拟网络(默认192.168.122.0/24)经宿主机进行地址转换访问外网。需要配置网桥、iptables NAT规则和DHCP服务器(如dnsmasq)。
  3. 用户模式(User Mode):QEMU内部实现的NAT网络,无需root权限,配置简单(-net user),但性能较差,不支持ICMP,且无法从外部直接访问客户机。支持端口转发(hostfwd)。
  4. 直接分配网络设备:包括VT-d和SR-IOV(文章提及在第5章详述)。
  • 网络设备模拟:通过-net nic,model=参数指定模拟的网卡类型,如默认的rtl8139,或e1000virtio等。

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章)将介绍更多高级特性和性能优化技术。