使用 Python 为 KVM 编写脚本,第 1 部分: libvirt

虚拟化是目前市场上大多数服务器操作系统的标准设备。在 Linux® 的世界里,服务器虚拟化有两个主要选择:基于 Kernel 的虚拟机 (KVM) 和 Xen。KVM 是 Red Hat 和其他公司采用的主要技术。虽然 Citrix 拥有 Xen,但是大多数核心功能是向外公开的。
虚拟机管理器(VMM 或 virt-manager)项目为管理 KVM 和 Xen 虚拟机 (VM) 实例的创建和运行提供了一个工具。VMM 是用 Python 编写的,它使用 GTK+ 库来完成图形用户界面的构造。真实的构造是通过libvirt 库完成的,本系列文章中会用到这个库。虽然 libvirt 是由 Red Hat 赞助研发的产品,但它是为一个开源项目,可通过 GNU Lesser General Public License 获得。
libvirt 由几个不同的部分组成,其中包括应用程序编程接口 (API) 库、一个守护进程 (libvirtd),以及一个默认命令行实用工具 (virsh)。出于本文的目的,所有测试均使用 Ubuntu Server version 11.04 完成。安装与设置 部分介绍了我通过配置服务器来开发此处展示的脚本的所有步骤。第 1 部分介绍了 libvirt 和 KVM 虚拟化的基础知识,以及引发您的兴趣的一些命令行脚本。第 2 部分将深入探讨如何使用 libvirt、Python 和 wxPython 构建您自己的虚拟化管理工具。
准备开始
在深入研究实际代码示例之前,先让我们复习一些关于虚拟化和 KVM 的术语和概念。当您在 Ubuntu Server 11.04 等服务器上安装 KVM 时,同时也在创建一个虚拟化主机 或虚拟机管理程序。这意味着,您的服务器可以管理运行在 KVM 主机上的多个来宾操作系统 (guest operating system)。每个惟一的来宾均被称为一个 和函数,它们以与您期望的大致相同的方式出现在个人机器上的单个服务器实例中。您可以通过安全外壳 (SSH) 或虚拟网络计算连接至服务器,就像连接至物理机器一样。
虽然 KVM 的功能与虚拟机管理程序或来宾管理器相似,但是 QEMU 提供了实际的机器仿真,这意味着 QEMU 可以执行目标机器的本机指令集。对于 x86 来宾操作系统,该执行会转换成为底层硬件上的直接执行的本机指令。对于其他架构,如 ARM,必须执行转换进程。KVM 和 QEMU 的组合提供了虚拟化所有目前可用以及某些不再可用的操作系统所需的所有支持函数。
来宾域 包含若干个文件,其中包括一个或多个磁盘映像文件和一个基于 XML 的配置文件。该设置使得管理多台 VM 变得极其简单,方法是先创建一个基准系统映像,然后修改配置文件,使之符合您的需求。配置 KVM/QEMU 并与之通信的一个方法是使用 libvirt 工具包。一些供应商已经基于 libvirt 标准化其管理产品。
下面来看一个典型的域配置文件的内容。清单 1 显示了来自 libvirt 示例的 testdev.xml 文件。
清单 1. 设备 XML 定义

   File_test_device
   
         
               Libvirt
               Test driver
               123456
               11111111-2222-3333-4444-555555555555
         
         
               Libvirt
               Test Driver
               01/22/2007
         
   

从 清单 2 显示的测试 domfv0.xml 文件中,您可以看到关于配置虚拟设备的更多详细信息。
清单 2. domfv0.xml 设备定义文件

  /usr/lib/xen/bin/qemu-dm
         
               
               
               

你可能感兴趣的:(虚拟化相关)