KVM虚拟化解决方案系列之KVM管理工具-绪论篇

我们在《KVM虚拟化解决方案系列之KVM架构篇》有讲到两个重要的内容,一个内容是“要实现一个可运行、可运维的KVM虚拟化解决方案,需要解决两个问题,第一个是虚拟化技术实现问题,第二个是集群虚拟机管理问题。”另一个内容则是“KVM模块作为整个虚拟化环境的核心工作在内核空间,负责CPU和内存的调度。QEMU作为模拟器工作在用户空间,负责虚拟机I/O模拟,KVM虚拟机的创建和运行是一个内核态KVM模块和用户态QEMU程序相互配合的过程。

第一个内容实际上讲的就是“KVM虚拟化”的问题和“KVM管理工具”的问题。第二个内容实际上讲的就是如何解决第一个内容中提到的“KVM虚拟化”的问题,通过KVM+QEMU的协同合作,完美地解决了KVM虚拟化问题。但是,我们还有一个“KVM管理工具”的问题没有解决,如果我们也把这个“KVM管理工具”问题都解决了,那么一个完整的KVM解决方案也就解决了,所以我们从这两个内容可以得出一个总结,那就是KVM虚拟化解决方案一般分为三层,如图1所示。

在这里插入图片描述

图1 .KVM虚拟化解决方案

1. 第一层KVM

第一层的KVM,基本上是Linux内核自带,从Linux 2.6.20版本开始,KVM被完全正式收录到Linux内核中,KVM作为Linux内核中的一个模块而存在,因此只要使用了Linux 2.6.20版本或高于Linux 2.6.20版本的Linux,在安装系统的时候,就已经加载了KVM模块,因此我们只需要在CLI命令行模式下启用KVM模块即可。

2. 第二层QEMU

第二层的QEMU,在2012年的时候,qemu-kvm这个分支并入了主流的QEMU了,从此之后要实现KVM虚拟化可以不需要特殊的qemu-kvm(你也可以继续使用,现在的CentOS就在用着),而只需要在通用的QEMU命令上增加“-enable-kvm”选项就等于是使用KVM功能了,是KVM驱动虚拟机了,也就是QEMU可以调用KVM内核了,这样效率就比纯QEMU高多了。

3. 第三层KVM管理工具

3.1. KVM管理工具的不同玩法

第一层的KVM和第二层的QEMU解决了之后,剩下的就是KVM管理工具了,KVM管理工具的玩法有很多种,如果你的企业搞云计算的团队只有40-50个人,那玩WebVirtMgr、Proxmox VE这种类型的管理工具比较合适,如果你的企业搞云计算的团队有几百号人,又有金主爸爸,可以玩OpenStack这种类型的云计算管理平台。

KVM管理工具有很多种不同层次、不同段位、不同定位的玩法,这个要看你的企业的产品定位、业务方向以及是否有金主爸爸,如图2所示。

在这里插入图片描述

图2. KVM管理工具的不同玩法

在图2中,我们可以看到KVM的管理工具有原生级、初级、中级、高级以及超级五种玩法,要实现KVM虚拟化解决方案商用化就必须要解决虚拟机集群管理问题,但是这并不意味着原生级、初级和中级这三种段位没用,恰恰相反,他们是高级和超级段位的底层技术。

3.2. KVM虚拟化解决方案架构

为了让大家看得更明白,我根据图2的内容重新构建了一个更为具象化的架构图——KVM虚拟化解决方案架构图,如图3所示。

在这里插入图片描述

图3. KVM虚拟化解决方案架构

一个虚拟机就是一个普通的Linux进程,通过对这个进程的管理,就可以实现对虚拟机的管理。我们从图3中可以看到,Proxmox VE、Kimchi以及原生管理工具QEMU都是直接通过对KVM进程的管理来实现对虚拟机的管理的。

不过因为对进程的直接管理非常麻烦,所以RedHat和Proxmox各发布了一个开源项目Libvirt和Proxmox VE,来降低KVM的管理难度。Libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口,也就是说Libvirt有API,也有一套命令行管理工具,可以完成对虚拟机的管理。Proxmox VE也一样,有 REST API,有一套命令行工具和一个WebGUI管理工具,也可以完成对虚拟机的管理。

3.2.1. Libvirt的生态

Libvirt是RedHat和IBM等大鳄们倾力打造的一个开源项目,背靠RedHat和IBM这两棵大树,Libvirt的生态链非常好,从底层的linux操作系统到中间层的虚拟化,到上层的Libvirt API,莫不如此:

  • 底层的Linux系统,Libvirt支持RHEL、CentOS、Fedora、Ubuntu、Debian、……等Linux操作系统;

  • 中间层的虚拟化,Libvirt支持KVM/QEMU、Xen、VMware、VirtualBox、Hyper-V等在内的平台虚拟化方案。

  • Libvirt工具,自带virsh命令行工具,该virsh命令行工具只能实现单机管理模式,单纯依靠virsh管理虚拟机,无法成为一个成熟的KVM虚拟化解决方案。

  • Libvirt API,Libvirt提供了一套API的lib库,支持生态合作伙伴的KVM管理工具通过调用Libvirt API对虚拟机进行管理。目前已有命令行工具(virt-install)、图形化工具(virt-manager、virt-viewer、virt-top)、Web管理工具(WebVirtMgr、oVirt)以及云管理平台工具(OpenStack、ZStack、OpenNebula、Eucalyptus、CloudStack)等工具是基于Libvirt的管理工具。

3.2.2. Proxmox VE的生态

Proxmox VE既是一个KVM管理工具,也是一个类似于Libvirt中间层的应用程序接口。Proxmox VE是奥地利商业公司Proxmox Server Solutions的开源产品,Proxmox VE软件和社区支持都是免费的,企业用户则可以通过订阅制获得付费商业支持。Proxmox VE的主要劣势,是这个开源产品只有Proxmox Server Solutions一家在维护,生态方面不如Libvirt。

  • 底层的Linux系统,Proxmox VE只支持Debian Linux操作系统,不支持其他的Linux操作系统。
  • 中间层的虚拟化,Proxmox VE只支持KVM/QEMU一种虚拟化方案。
  • Proxmox VE工具,自带一个内嵌的WebGUI管理界面工具和一个命令行管理工具,其中WebGUI管理界面可以完成98%以上的配置,极少部分功能需要命令行管理工具配置。Proxmox VE的这两个自带工具能实现小规模集群管理,与KVM/QEMU一起搭配,可以成为一个成熟的KVM虚拟化解决方案。
  • REST API,Proxmox VE 使用了RESTful形式的API,第三方的开发人员选用JSON作为主要数据格式,所有的API定义均采用JSON语法,第三方管理工具很容易就可以将Proxmox VE的API 集成进去。不过Proxmox VE的生态不是很好,到目前为止,没有看到有什么第三方合作伙伴使用Proxmox VE API去管理KVM虚拟化。这可能有两方面的原因,一方面是Proxmox VE本身的底层操作系统和中间层虚拟化支持就不多,再加上Proxmox VE只适合小规模集群管理,所以没有什么第三方合作伙伴去开发基于Proxmox VE API的管理工具。另一方面是Proxmox VE自带的WebGUI管理界面工具已经是一个可以媲美VMware的商用级管理工具了,客户直接就可以使用Proxmox VE的WebGUI管理界面,第三方合作伙伴已经找不到太多的商业想象空间了。

接下来,我会在后续的章节里边逐一介绍Libvirt(libvirt工具、libvirt API)以及基于Libvirt API的管理工具,介绍基于KVM进程管理的Proxmox VE、Kimchi工具等等,这里就不再赘述了。

猜你喜欢

转载自blog.csdn.net/jianghu0755/article/details/129776211
今日推荐