虚拟化工具,更广为人知的名称是 Virt Tools,是由多个贡献者创建的六个开源虚拟化工具的集合,旨在让虚拟化世界变得更美好。

(Bryant Son,CC BY-SA 4.0)
其中一些工具,如 KVM 和 QEMU,Linux 爱好者可能很熟悉,但像 libvirt 和 libguestfs 这样的工具可能就不那么熟悉了。
如果您更喜欢通过观看视频而不是阅读来学习,我创建了本文的视频版本,您可以在 YouTube 上观看。
在了解这些工具之前,最好先了解一些基本的虚拟化术语。 我从维基百科中提取了许多这些定义,并在表格中链接了页面。
术语 | 定义 |
---|---|
虚拟化 | 在计算中,虚拟化是指创建某物的虚拟(而非物理)版本的行为,包括虚拟计算机硬件平台、存储设备和计算机网络资源。 |
模拟器 | 模拟器是一种硬件或软件,使一个计算机系统(称为主机)的行为类似于另一个计算机系统(称为 guest 客户机)。 |
虚拟机 (VM) | 也称为“guest 客户机机器”,这些是对真实物理硬件计算机的模拟。 |
主机 | 在硬件虚拟化中,运行一个或多个虚拟机的 hypervisor 虚拟机监控程序的计算机。 |
Hypervisor 虚拟机监控程序 | 这是创建和运行虚拟机的计算机软件、固件或硬件。 |
内核 | 这是一个计算机程序,位于计算机操作系统的核心,可以完全控制系统中的一切。 |
守护进程 | 这是一个作为后台进程运行的计算机程序,而不是在交互用户的直接控制下运行。 |
此表总结了每个 Virt Tool,包括许可信息以及指向每个工具的网站和源代码的链接。 大部分信息来自 Virt Tools 网站和每个工具的站点。
名称 | 它是什么 | 许可证 | 源代码 |
---|---|---|---|
基于内核的虚拟机 (KVM) | Linux 内核中的虚拟化模块,允许内核充当虚拟机监控程序 | GNU GPL 或 LGPL | 源代码 |
快速模拟器 (QEMU) | 通用且开源的机器模拟器和虚拟化器 | GPLv2 | 源代码 |
Libvirt | 一个库和守护程序,提供稳定的开源 API,用于管理虚拟化主机 | GNU | 源代码 |
Libguestfs | 一套用于访问和修改虚拟机磁盘映像的工具 | LGPL, GPL | 源代码 |
Virt-manager | 用于通过 libvirt 管理虚拟机的桌面用户界面 | GPLv2+ | 源代码 |
Libosinfo | 提供有关操作系统版本的数据库信息,以帮助在部署虚拟机时优化配置硬件 | LGPLv2+ | 源代码 |
基于内核的虚拟机管理器 (KVM)

(Bryant Son,CC BY-SA 4.0)
KVM 是适用于 Linux 的完整虚拟化解决方案,它基于包含虚拟化扩展的硬件。 KVM 为各种 guest 客户机操作系统(包括 Linux、Windows、macOS、ReactOS 和 Haiku)提供硬件虚拟化。 使用 KVM,您可以在未修改的 Linux 或 Windows 映像上运行多个虚拟机。 每个虚拟机都具有私有的虚拟化硬件:网卡、磁盘、图形适配器等。
大多数时候,您不会直接与 KVM 交互。 相反,您必须使用 QEMU、virt-manager 或其他虚拟化管理工具来利用 KVM。
快速模拟器 (QEMU)

(Bryant Son,CC BY-SA 4.0)
QEMU 是通用的开源机器模拟器和虚拟化器。 当用作模拟器时,QEMU 可以在不同的机器(例如,您自己的 x86_64 PC)上运行为一台机器(例如,ARM 板)制作的操作系统和程序。 当用作虚拟化器时,QEMU 通过使用 KVM 直接在主机 CPU 上执行 guest 客户机代码来实现接近原生的性能。
QEMU 在多个操作系统上受支持,并且其安装过程就像运行一些简单的命令一样容易; 在这里,您可以看到如何在 macOS 上使用 Homebrew 安装 QEMU。

(Bryant Son,CC BY-SA 4.0)
安装后,通过阅读其文档来学习如何使用它,您还可以访问其源代码。
Libvirt

(Bryant Son,CC BY-SA 4.0)
Libvirt 是一个库和守护程序,提供稳定的开源 API,用于管理虚拟化主机。 它的目标是多个 hypervisor 虚拟机监控程序,包括 QEMU、KVM、LXC、Xen、OpenVZ、VMWare ESX、VirtualBox 等。
关于 libvirt 的另一个有趣之处是,KubeVirt,一个用于在 Kubernetes 平台内部创建和管理虚拟机的开源项目,在很大程度上利用了 Libvirt。 (我将在以后的文章中介绍 KubeVirt。)Libvirt 是一个值得探索的有趣项目,您可以在其官方网站上找到大量信息,并下载其源代码。
Libguestfs

(Bryant Son,CC BY-SA 4.0)
Libguestfs 是一套用于访问和修改虚拟机磁盘映像的工具。 您可以使用它来查看和编辑 guest 客户机内部的文件; 编写脚本来更改虚拟机; 监控磁盘已用/可用统计信息; 创建 guest 客户机、物理到虚拟 (P2V) 或虚拟到虚拟 (V2V) 机器; 执行备份; 克隆虚拟机; 构建虚拟机; 格式化磁盘; 调整磁盘大小; 以及更多。 我最近在使用一个名为 OpenShift Virtualization 的基于 KubeVirt 的项目时一直在使用它,您可以在我的视频教程中了解更多信息。
Libguestfs 的官方网站包含有关如何使用每个命令的广泛文档,您还可以从 GitHub 下载其源代码。
Virt-manager

(Bryant Son,CC BY-SA 4.0)
Virt-manager 是一个桌面用户界面,用于通过 libvirt 管理虚拟机。 它主要针对 KVM 虚拟机,但也管理 Xen 和 LXC。 它还包括命令行配置工具 virt-install。 将 virt-manager 视为易于使用的虚拟机管理工具。 例如,您可以使用 virt-manager 在 Linux 工作站上运行 Microsoft Windows 环境,反之亦然。
Virt-manager 的源代码可在 GitHub 上找到,文档在其网站上。 目前,virt-manager 仅适用于 Linux 平台。
Libosinfo

(Bryant Son,CC BY-SA 4.0)
Libosinfo 提供有关操作系统版本的数据库信息,以帮助在部署虚拟机时配置硬件。 它包括一个 C 库,用于查询数据库中的信息,该库也可以从 GObject 自省支持的任何语言访问。 您可能会猜到,libosinfo 更像是启用操作系统功能的构建块——但非常重要。
Libosinfo 的源代码可在 GitLab 上找到,其文档可在其网站上找到。
结论
Virt-tools 是一组六个强大的工具,可以简化虚拟化并启用重要的虚拟化功能。 它们都是开源项目,因此我鼓励您进一步探索,甚至可能为它们做出贡献。
您怎么看? 欢迎随意留言分享您的想法或提出问题。
1 条评论