1.KVM 虚拟机简介
KVM 虚拟机的管理工具
准确来说,KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM
虚拟机,需要更多的辅助工具
QEMU-KVM
在 Linux 系统中,首先我们可以用 modprobe 系统工具去加载 KVM
模块,如果用 RPM 安装 KVM 软件包,系统会在启动时自动加载模块。
加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有 KVM
模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必
须有一个用户空间的工具。
关于用户空间的工具,KVM 的开发者选择了已经成型的开源虚拟化软
件 QEMU。QEMU 是一个强大的虚拟化软件,它可以虚拟不同的
CPU 构架。比如说在 x86 的 CPU 上虚拟一个 Power 的 CPU,并利
用它编译出可运行在 Power 上的程序。
KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制
KVM 内核模块的用户空间工具 QEMU-KVM。所以 Linux 发行版中
分为 kernel 部分的 KVM 内核模块和 QEMU-KVM 工具。这就是
KVM 和 QEMU 的关系
Libvirt、virsh、virt-manager
尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为
KVM 开发了更多的辅助工具,比如 libvirt、libguestfs 等。原因
是 QEMU 工具效率不高,不易于使用。
Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一
套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚
拟机。
使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen
宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt 不仅提供
了 API,还自带一套基于文本的管理虚拟机的命令—— virsh,可以
通过使用 virsh 命令来使用 libvirt 的全部功能。但最终用户更渴望的
是图形用户界面,这就是 virt-manager,它是一套用 python 编写
的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。
Virt-manager 就是利用 libvirt 的 API 实现的