Loading

虚拟化技术:认识KVM(一)

一、认识KVM

1. KVM概述

KVM内核模块:它属于标准Linux内核的一部分,是一个专门提供虚拟化功能的模块,主要负责CPU和内存的虚拟化,包括:客户机的创建、虚拟内存的分配、CPU执行模式的切换、vCPU寄存器的访问、vCPU的执行。

QEMU用户态工具:它是一个普通的Linux进程,为客户机提供设备模拟的功能,包括模拟BIOS、PCI/PCIE总线、磁盘、网卡、显卡、声卡、键盘、鼠标等。


image-20230223140455244


2. QEMU与KVM

QEMU它通过ioctl调用/dev/kvm接口,与内核态的KVM模块进行交互,将有关CPU指令的部分交由KVM来做。QEMU本身还是模拟网卡、显卡、存储控制器和硬盘等。

image-20230223141205730


3. 与QEMU/KVM结合的组件

3.1 vhost-net

vhost-net是Linux内核中的一个模块,它用于替代QEMU中的virtio-net用户态的virtio网络的后端实现。使用vhost-net时,还支持网卡的多队列,整体来说会让网络性能得到较大提高。


3.2 Open vSwitch

Open vSwitch是一个高质量的、多层虚拟交换机,使用开源Apache2.0许可协议,主要用可移植性强的C语言编写的。它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow、sFlow、SPAN、RSPAN、CLI、LACP、802.1ag)。同时也提供了对OpenFlow协议的支持,用户可以使用任何支持OpenFlow协议的控制器对OVS进行远程管理控制。Open vSwitch被设计为支持跨越多个物理服务器的分布式环境,类似于VMware的vNetwork分布式vswitch或Cisco Nexus 1000 V。Open vSwitch支持多种虚拟化技术,包括Xen/XenServer、KVM和VirtualBox。在KVM虚拟化中,要实现软件定义网络(SDN),那么Open vSwitch是一个非常好的开源选择。


3.3 DPDK

它专注于网络应用中数据包的高性能处理。具体体现在DPDK应用程序是运行在用户空间上,利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。其优点是:性能高、用户态开发、出故障后易恢复。


3.4 Ceph

Ceph是Linux上一个著名的分布式存储系统,能够在维护POSIX兼容性的同时加入复制和容错功能。Ceph由储存管理器(Object storage cluster对象存储集群,即OSD守护进程)、集群监视器(Ceph Monitor)和元数据服务器(Metadata server cluster,MDS)构成。其中,元数据服务器MDS仅仅在客户端通过文件系统方式使用Ceph时才需要。当客户端通过块设备或对象存储使用Ceph时,可以没有MDS。Ceph支持3种调用接口:对象存储,块存储,文件系统挂载。在libvirt和QEMU中都有Ceph的接口,所以Ceph与KVM虚拟化集成是非常容易的。在OpenStack的云平台解决方案中,Ceph是一个非常常用的存储后端。


3.5 libguestfs

libguestfs是用于访问和修改虚拟机的磁盘镜像的一组工具集合。libguestfs提供了访问和编辑客户机中的文件、脚本化修改客户机中的信息、监控磁盘使用和空闲的统计信息、P2V、V2V、创建客户机、克隆客户机、备份磁盘内容、格式化磁盘、调整磁盘大小等非常丰富的功能。libguestfs还提供了共享库,可以在C/C++、Python等编程语言中对其进行调用。libguestfs不需要启动KVM客户机就可以对磁盘镜像进行管理,功能强大且非常灵活,是管理KVM磁盘镜像的首选工具。


4. KVM的上层管理工具

4.1 libvirt

libvirt是使用最广泛的对KVM虚拟化进行管理的工具和应用程序接口,已经是事实上的虚拟化接口标准,本节后部分介绍的其他工具都是基于libvirt的API来实现的。作为通用的虚拟化API,libvirt不但能管理KVM,还能管理VMware、Hyper-V、Xen、VirtualBox等其他虚拟化方案。


4.2 virsh

virsh是一个常用的管理KVM虚拟化的命令行工具,对于系统管理员在单个宿主机上进行运维操作,virsh命令行可能是最佳选择。virsh是用C语言编写的一个使用libvirt API的虚拟化管理工具,其源代码也是在libvirt这个开源项目中的。


4.3 virt-manager

virt-manager是专门针对虚拟机的图形化管理软件,底层与虚拟化交互的部分仍然是调用libvirt API来操作的。virt-manager除了提供虚拟机生命周期(包括:创建、启动、停止、打快照、动态迁移等)管理的基本功能,还提供性能和资源使用率的监控,同时内置了VNC和SPICE客户端,方便图形化连接到虚拟客户机中。


posted @ 2023-09-17 08:58  YinJayChen  阅读(128)  评论(0编辑  收藏  举报