Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

虚拟化入门指南

Red Hat Enterprise Linux 7

RHEL 提供的虚拟化技术简介

Jiri Herrmann

Red Hat Customer Content Services

Yehuda Zimmerman

Red Hat Customer Content Services

Dayle Parker

Red Hat Customer Content Services

Laura Novich

Red Hat Customer Content Services

Jacquelynn East

Red Hat Customer Content Services

Scott Radvan

Red Hat Customer Content Services

摘要

Red Hat Enterprise Linux 虚拟化入门指南介绍了虚拟化的基础知识以及 Red Hat Enterprise Linux 提供的虚拟化产品和技术。

第 1 章 虚拟化的一般介绍

1.1. 什么是虚拟化?

虚拟化 是一种广泛的计算术语,用于运行软件,通常是多个操作系统,同时与单一系统上的其他程序隔离。虚拟化通过 利用虚拟机监控程序 来实现。这是一个软件层或子系统,用于控制硬件并启用多个操作系统,称为 虚拟机(VM)客户机 (通常是物理机器)。此机器及其操作系统称为 主机。如需更多信息,请参阅红帽客户门户网站
有几种虚拟化方法:
完全虚拟化
完全虚拟化使用客户机操作系统的未修改版本。客户机通过由管理程序创建的频道来解决主机的 CPU。由于客户机直接与 CPU 通信,因此这是最佳虚拟化方法。
半虚拟化
半虚拟化使用经过修改的客户机操作系统。客户机与管理程序通信。管理程序将未经修改的调用从客户机传递到 CPU 及其他接口,均是真实和虚拟的。由于调用通过虚拟机监控程序进行路由,因此此方法比完全虚拟化要慢。
软件虚拟化(或模拟)
软件虚拟化使用二进制翻译和其他仿真技术来运行未经修改的操作系统。管理程序将客户机调用转换为可供主机系统使用的格式。由于所有调用都已转换,因此此方法比虚拟化要慢。请注意,红帽不支持 Red Hat Enterprise Linux 中的软件虚拟化。
容器化
KVM 虚拟化创建 OS 内核、操作系统级别的虚拟化单独实例(也称为容器化)在现有 OS 内核之上运行,并创建主机操作系统的隔离实例(称为 容器 )。如需有关容器的更多信息,请参阅红帽客户门户网站
容器并不具有 KVM 虚拟化的灵活性,但其处理更加轻便且灵活。有关更详细的比较,请参阅 Linux 容器简介
要使用 Red Hat Enterprise Linux 上的容器,请从 Extras 频道安装 docker 软件包。请注意,红帽还为使用容器(如 Red Hat Enterprise Linux Atomic HostRed Hat OpenShift Container Platform )提供了优化的解决方案。有关容器支持的详情,请查看 Red Hat knowledgeBase

1.2. 虚拟化解决方案

红帽提供以下主要虚拟化解决方案,每个解决方案都有不同的用户重点和功能:
Red Hat Enterprise Linux
红帽企业 Linux 7 中包括创建、运行和管理虚拟机 以及许多虚拟化工具和功能 的能力。这个解决方案支持每个主机运行客户机数量有限,以及有限的客户机类型。因此,Red Hat Enterprise Linux 上的虚拟化对于需要在多个环境中测试的开发人员或小型企业很有用,或者运行不具备严格正常运行时间要求或服务级别协议(SLA)的小型企业。
重要
本指南提供有关 Red Hat Enterprise Linux 的虚拟化的信息,不详细阐述其他虚拟化解决方案。
Red Hat Virtualization
Red Hat Virtualization(RHV)基于基于内核的虚拟机(KVM)技术,如 Red Hat Enterprise Linux 上的虚拟化,但提供了增强的功能数组。该产品专为企业级可扩展性和性能设计,支持从集中式图形界面管理整个虚拟基础架构,包括主机、虚拟机、网络、存储和用户。
注意
有关 Red Hat Enterprise Linux 和 Red Hat Virtualization 中虚拟化差异的更多信息,请参阅红帽客户门户网站。
Red Hat Virtualization 可用于运行大型部署或关键任务应用程序的企业。适用于 Red Hat Virtualization 的大型部署示例包括数据库、平台和消息系统,这些系统需要持续运行且不能出现停机状况。
注意
有关 Red Hat Virtualization 的更多信息,或下载完全支持的 60 天评估版本,请参阅 http://www.redhat.com/en/technologies/virtualization/enterprise-virtualization。或者,请参阅 Red Hat Virtualization 文档套件
Red Hat OpenStack Platform
Red Hat OpenStack Platform 为创建、部署并扩展一个安全可靠的公共或私有 OpenStack 云环境提供了一个集成的基础。
注意
有关 Red Hat OpenStack Platform 的更多信息,或下载 60 天评估版本,请参阅 https://www.redhat.com/en/technologies/linux-platforms/openstack-platform。另外,请参阅 Red Hat OpenStack Platform 文档套件。

第 2 章 为什么使用虚拟化?

虚拟化对服务器部署和单独的桌面站都很有用。桌面虚拟化提供具有成本效益的集中管理和更好的灾难恢复。此外,通过使用 ssh 等连接工具,可以远程连接到桌面。
当用于服务器时,虚拟化只能从更大的网络中受益,而且还能使用多台服务器的部署。虚拟化提供实时迁移、高可用性、容错以及简化的备份。

2.1. 虚拟化成本

引入虚拟化可能很昂贵,但通常能长期节约资金。请考虑以下优点:
更少的功率
使用虚拟化对多个物理平台的需求很多。这可减少机器操作和冷却方面的功率,从而减少能源成本。使用虚拟化可以大大降低购买多个物理平台的初始成本,以及机器的功耗和所需的冷却。
维护减少
Check Alignment of PHsandgt;只要在将物理系统迁移到虚拟化之前执行适当的计划,则需要较少的时间来维护它们。这意味着需要在部分和劳动力上花费更少的资金。
已安装的软件的延长生命周期
较旧版本的软件可能无法直接在较新的裸机上运行。通过实现在更大、更快的系统上运行较旧的软件,软件的生命周期可能会进行扩展,同时充分利用更新系统的性能。
可预测的成本
Red Hat Enterprise Linux 订阅以固定速率提供对虚拟化的支持,使其易于预测成本。
空间减少
将服务器整合到更少的机器意味着计算机系统需要较少的物理空间。

2.2. 性能

较旧虚拟化版本只支持单个 CPU。因此,虚拟机会遇到明显的性能限制。这创建了一个长期的误解,虚拟化解决方案很慢。
不再是这种情况。现代虚拟化技术已大大提高了虚拟机速度。基准显示,虚拟机可以尽可能有效地运行典型的服务器应用程序,作为裸机系统:
注意
有关虚拟化性能调优的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化调整和优化指南

2.3. Migration(迁移)

迁移 描述将客户机虚拟机从一个主机迁移到另一个主机的过程。这是因为虚拟机在虚拟环境中而不是直接在硬件上运行。有两种方式可迁移虚拟机:实时和离线。

迁移类型

离线迁移
离线迁移会暂停客户机虚拟机,然后将虚拟机内存的镜像移到目标主机。然后,虚拟机会在目标主机上恢复,并且释放源主机上虚拟机使用的内存。
实时迁移
实时迁移是将活动虚拟机从一个物理主机迁移到另一个物理主机。请注意,这不可能在所有 Red Hat Enterprise Linux 版本间实现。详情请参阅 虚拟化部署和管理指南

2.3.1. 迁移虚拟机的好处

迁移可用于:
负载均衡
主机机器过载时,可使用实时迁移将一个或多个虚拟机迁移到其他主机。同样,没有使用离线迁移迁移而不再运行的机器也可以迁移超载。
升级或更改主机
升级、添加或删除主机上的硬件设备时,可以安全地将虚拟机重新定位到其他主机。这意味着,由于对主机进行了更改,客户机不会遇到任何停机时间。
节能
虚拟机可以重新分发到其他主机,并且可以关闭未卸载的主机系统,从而在低使用阶段节省能源并降低成本。
地理迁移
出于较低延迟或其他原因将虚拟机移动到其他物理位置。
当迁移过程移动虚拟机的内存时,也会迁移虚拟机关联的磁盘卷。这个过程使用实时块迁移执行。
注意
有关迁移的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南

2.3.2. 虚拟化到虚拟化迁移(V2V)

作为一种特殊类型的迁移,红帽企业 Linux 7 提供了将虚拟机从其他类型的虚拟机监控程序转换为 KVM 的工具。virt-v2v 工具从 Xen、其他版本的 KVM 和 VMware ESX 转换和导入虚拟机。
注意
有关 V2V 的更多信息,请参见 V2V 知识库文章
另外,Red Hat Enterprise Linux 7.3 及更高版本支持使用 virt-p2v 工具进行物理到虚拟(P2V)转换。详情请查看 P2V 知识库文章

2.4. 安全性

KVM 虚拟机使用以下功能来提高安全性:
SELinux
安全增强型 Linux 或 SELinux 为所有 Linux 系统提供强制访问控制(MAC),以及 Linux 虚拟机的优势。在 SELinux 的控制下,所有进程和文件都会被赋予 类型,并且它们在系统上的访问受到精细的控制的限制。SELinux 限制攻击者的能力,并努力防止许多常见的安全漏洞,如缓冲区溢出攻击和特权升级。
sVirt
sVirt 是 Red Hat Enterprise Linux 7 中包含的技术,它集成了 SELinux 和虚拟化。它应用强制访问控制(MAC)来提高使用虚拟机时的安全性,并强化系统免受可能用来攻击主机或其他虚拟机的虚拟机监控程序错误。
注意
有关虚拟化安全性的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化安全指南

2.5. Disaster Recovery

系统虚拟化时,灾难恢复速度更快且更容易。在物理系统上,如果出现严重情况,通常需要完全重新安装操作系统,导致恢复时间数小时。但是,如果系统虚拟化,这比迁移功能快得多。如果遵循实时迁移要求,则虚拟机可以在另一个主机上重新启动,且可能的延迟最长,恢复客户机数据就会出现最长的延迟。此外,由于每个虚拟化系统彼此完全独立,因此一个系统的停机时间不会影响任何其他系统。

第 3 章 Red Hat Virtualization 产品和功能介绍

本章介绍了 Red Hat Enterprise Linux 7 中提供的主要虚拟化产品和功能。

3.1. Red Hat Enterprise Linux 中的 KVM 和虚拟化

KVM(基于内核的虚拟机)是 Linux 在各种构架中的完整虚拟化解决方案。它内置在标准的 Red Hat Enterprise Linux 7 内核中,并与 Quick Emulator(QEMU)集成,并可运行多个 客户机操作系统。Red Hat Enterprise Linux 中的 KVM 管理程序使用 libvirt API 管理,以及为 libvirt 构建的工具(如 virt-managervirsh)。虚拟机将作为多线程 Linux 进程执行并运行,由这些工具控制。
警告
QEMU 和 libvirt 还支持使用 QEMU Tiny Code Generator (TCG)的动态转换模式,它不需要硬件虚拟化支持。红帽不支持此配置。
有关这个限制的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南

图 3.1. KVM 架构

KVM 架构
Red Hat Enterprise 7 中 KVM 支持的虚拟化功能包括:
过量使用
KVM 管理程序支持系统资源 过量使用。过量使用意味着分配比系统中可用资源更多的虚拟化 CPU 或内存,因此当一个客户机需要时,资源可以被动态交换。这可以提高客户机使用主机资源的效率,并让用户可能需要更少的主机。
重要
过量使用涉及系统稳定性的潜在风险。 有关使用 KVM 过量使用以及应采取的预防措施的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
KSM
内核同页合并(KSM) 供 KVM 管理程序使用,使 KVM 客户机能够共享相同的内存页面。这些共享页面通常是通用库或其他相同的高使用数据。KSM 通过避免内存重复实现更大的相同或相似的虚拟机操作系统的密度。
注意
有关 KSM 的详情,请查看 Red Hat Enterprise Linux 7 虚拟化调整和优化指南
QEMU 客户机代理
QEMU 客户机代理 在客户端操作系统中运行,并允许主机机器向客户端操作系统发出命令。
注意
有关 QEMU 客户机代理的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
磁盘 I/O 节流
当几个虚拟机同时运行时,它们会利用过量磁盘 I/O 来干扰总体系统性能。KVM 中的磁盘 I/O 节流 提供了在从独立虚拟机发送到主机机器时对磁盘 I/O 请求 设置限制的功能。这可以防止虚拟机过度利用共享资源,并影响其他虚拟机的性能。
注意
有关使用磁盘 I/O 节流的步骤,请参阅 Red Hat Enterprise Linux 7 虚拟化调整和优化指南
自动 NUMA 平衡
自动非统一内存访问(NUMA)平衡 将任务移动任务,它们可以更接近其访问的内存的线程或进程。这提高了在非统一内存访问(NUMA)硬件系统上运行的应用程序的性能,而无需任何手动调整 Red Hat Enterprise Linux 7 虚拟机。
注意
有关自动 NUMA 平衡的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化调整和优化指南
虚拟 CPU 热添加
虚拟 CPU(vCPU)热添加功能 提供根据需要增加正在运行的虚拟机的处理能力,而无需关闭客户端。分配给虚拟机的 vCPU 可以添加到 一个正在运行的客户机,以满足工作负载的需求,或维护与工作负载相关的服务级别协议(SLA)。
注意
有关虚拟 CPU 热添加的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
嵌套虚拟化
作为技术预览,Red Hat Enterprise Linux 7.2 及更新的版本提供硬件辅助嵌套虚拟化。此功能使 KVM 虚拟机能够作为虚拟机监控程序并创建自己的客户机。
例如,这可用于在虚拟机上调试虚拟机监控程序,或者在有限的物理机器上测试大型虚拟部署。
注意
有关设置和使用嵌套虚拟化的详情,请参考 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
KVM 客户机虚拟机兼容性
Red Hat Enterprise Linux 7 服务器有一定的支持限制。
以下 URL 解释了 Red Hat Enterprise Linux 的处理器和内存量限制:
有关支持的操作系统和主机和客户机组合的完整图表请查看 红帽客户门户网站
注意
要验证您的处理器是否支持虚拟化扩展以及有关启用虚拟化扩展的信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南

3.2. libvirt 和 libvirt 工具

libvirt 软件包提供了一个独立于虚拟机监控程序的虚拟化 API,可与各种操作系统的虚拟化功能进行交互。它包括:
  • 虚拟化层,用于安全管理主机上的虚拟机。
  • 用于管理本地和远程主机的接口。
  • 置备、创建、修改、监控、控制、迁移和停止虚拟机所需的 API。虽然可以通过 libvirt 同时访问多个主机,但 API 仅限于单一节点操作。
    注意
    只有虚拟机监控程序支持的操作才可以使用 libvirt 执行。
libvirt 侧重于管理单个主机,并提供 API 来枚举、监控和使用受管节点上可用的资源,包括 CPU、内存、存储、网络和非统一内存访问(NUMA)分区。管理工具不需要与运行主机的计算机位于同一个物理机器上。在这种情况下,管理工具运行的计算机与主机使用安全协议运行的计算机通信。
Red Hat Enterprise Linux 7 支持 libvirt ,并包含基于 libvirt 的工具,作为其虚拟化管理的默认方法(如 Red Hat Virtualization Management)。
libvirt 软件包在 GNU Lesser General Public License 下作为免费软件提供。libvirt 项目旨在为不同的管理程序技术上运行的虚拟化管理工具提供长期稳定的 C API。libvirt 软件包在 Red Hat Enterprise Linux 5 上支持 Xen,在 Red Hat Enterprise Linux 5、Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7 上支持 KVM。
值得注意的是,libvirt 还提供了在 Red Hat Enterprise Linux 7 上控制虚拟化的主要工具: virshvirt-manager

3.3. 域 XML 配置

每个 KVM 客户机虚拟机(也称为 )的基于主机的配置都存储在客户机 XML 配置(或 域 XML)中。这包括虚拟硬件、引导选项、资源分配、网络接口等的设置。使用永久修改 guest 属性(如 virsh setmem )的应用程序或实用程序,将此更改写入客户机的 XML 配置,然后引导客户机并相应地修改虚拟机。
要显示特定客户机的 XML 配置,请使用 virsh dumpxml guestname 命令。
要编辑虚拟机的 XML 配置,请使用以下之一:
  • virsh 命令 - 使用 virsh 命令对客户虚拟机所做的更改记录在域 XML 中。
  • virt-xml 命令 - 此命令根据提供的选项配置指定客户机的域 XML 文件。
  • 虚拟机管理器 - 对虚拟机管理器中客户虚拟机所做的更改记录在域 XML 中。
注意
对于必须直接编辑域 XML 文件的个别情况,请使用 virsh edit guestname。默认情况下,该命令会在由 root 的 bash 配置决定的文本编辑器中打开指定 guest 的域 XML 配置。
要更改 virsh edit 的编辑器,请在预期用户的 .bashrc 文件中设置或修改 EDITOR 变量。例如,对于 root 用户,此文件位于 /root/ 目录中。
对于使用 virsh edit 执行的修改以使更改生效,请保存编辑的 XML 配置并重启客户机。
警告
不要在文本编辑器中打开文件作为文件来编辑客户机的 XML 配置,例如使用 gedit /etc/libvirt/qemu/guestname.xml。以这种方式进行的更改不会生效,并且会自动覆盖。
有关域 XML 配置文件的详细信息,请参阅 虚拟化部署和管理指南

3.4. 虚拟化硬件设备

Red Hat Enterprise Linux 7 中的虚拟化允许虚拟机将主机的物理硬件用作三种不同类型的设备:
  • 虚拟化和模拟设备
  • 半虚拟设备
  • 物理共享设备
这些硬件设备都显示为物理附加到虚拟机,但设备驱动程序以不同的方式工作。

3.4.1. 虚拟化和模拟设备

KVM 为虚拟机实施许多核心设备作为软件。这些模拟硬件设备对于虚拟化操作系统至关重要。模拟设备是完全存在于软件中的虚拟设备。
另外,KVM 提供仿真驱动程序。 它们在虚拟机和 Linux 内核(管理源设备)之间形成转换层。设备级别指令由 KVM 管理程序完全转换。Linux 内核识别的相同类型(存储、网络、键盘或鼠标)的任何设备都可用作模拟驱动程序的后备源设备。
虚拟 CPU(vCPU)
在 Red Hat Enterprise Linux 7.2 及更高版本中,主机系统最多可显示 240 个虚拟 CPU(vCPU),这些虚拟 CPU 可供虚拟客户机使用,无论主机 CPU 的数量是什么。这在 Red Hat Enterprise Linux 7.0 中从 160 个。
模拟系统组件
以下核心系统组件被模拟,以提供基本的系统功能:
  • Intel i440FX 主机 PCI 网桥
  • PIIX3 PCI 到 ISA 网桥
  • PS/2 mouse 和键盘
  • EvTouch USB 图形表t
  • PCI UHCI USB 控制器和虚拟化 USB hub
  • 模拟串行端口
  • EHCI 控制器、虚拟化 USB 存储和 USB 鼠标
  • USB 3.0 xHCI 主机控制器(在 Red Hat Enterprise Linux 7.3 中技术预览)
模拟存储驱动程序
存储设备和存储池可以使用模拟驱动程序将虚拟机附加存储设备。客户机使用模拟存储驱动程序来访问存储池。
请注意,与所有虚拟设备一样,存储驱动程序不是存储设备。驱动程序用于将后备存储设备、文件或存储池卷附加到虚拟机。后备存储设备可以是任意类型的存储设备、文件或存储池卷。
模拟的 IDE 驱动程序
KVM 提供两个仿真 PCI IDE 接口。模拟的 IDE 驱动程序可用于将多达四个虚拟化 IDE 硬盘或虚拟 IDE CD-ROM 驱动器的任意组合附加到每个虚拟机。模拟 IDE 驱动程序也用于虚拟化 CD-ROM 和 DVD-ROM 驱动器。
模拟软盘驱动器驱动程序
模拟软盘驱动器驱动程序用于创建虚拟化软盘驱动器。
模拟声音设备
以下客户端操作系统支持模拟(Intel) HDA 声音设备 intel-hda
  • Red Hat Enterprise Linux 7,对于 AMD64 和 Intel 64 架构
  • Red Hat Enterprise Linux 4、5 和 6,用于 32 位 AMD 和 Intel 构架以及 AMD64 和 Intel 64 构架
注意
以下模拟声音设备也可用,但不建议您因为某些客户机操作系统的兼容性问题造成的:
  • ac97,一个模拟的 Intel 82801AA AC97 Audio 兼容声卡
模拟图形卡
提供以下模拟图形卡。
  • Cirrus CLGD 5446 PCI VGA 卡
  • 带有 Bochs VESA 扩展的标准 VGA 图形卡(硬件级别,包括所有非标准模式)
客户机可使用独立计算环境(SPICE)协议或虚拟网络计算(VNC)系统的简单协议连接到这些设备。
模拟网络设备
提供了以下两个模拟网络设备:
  • e1000 设备模拟 Intel E1000 网络适配器(Intel 82540EM、82573L、82544GC)。
  • rtl8139 设备模拟一个 Realtek 8139 网络适配器。
模拟 watchdog 设备
watchdog 可以用来在虚拟机过载或无响应时自动重新引导虚拟机。
Red Hat Enterprise Linux 7 提供以下模拟 watchdog 设备:
  • i6300esb 是模拟的 Intel 6300 ESB PCI watchdog 设备。它支持客户机操作系统红帽企业 Linux 6.0 版及以上版本,是建议使用的设备。
  • ib700,一个模拟的 iBase 700 ISA watchdog 设备。只有使用 Red Hat Enterprise Linux 6.2 及更高版本的客户端才支持 ib700 watchdog 设备。
对于 Red Hat Enterprise Linux 6.2 及更高版本,这两个 watchdog 设备都被支持 32 位和 64 位 AMD 和 Intel 构架。

3.4.2. 半虚拟设备

泛虚拟化为客户机在主机机器 上使用设备提供快速高效的通信方式。KVM 使用 virtio API 作为管理程序和客户机之间的层为虚拟机提供半虚拟设备。
有些半虚拟设备 减少 I/O 延迟,并将 I/O 吞吐量增加到接近的裸机级别,而其他泛虚拟化设备会将功能添加到不可用的虚拟机中。对于运行 I/O 密集型应用程序的虚拟机,建议使用半虚拟设备而不是模拟设备。
所有 virtio 设备都有两个部分:主机设备和客户机驱动程序。半虚拟化设备驱动程序允许客户机操作系统访问主机系统上的物理设备。
要使用此设备,必须在客户端操作系统中安装半虚拟化设备驱动程序。默认情况下,Red Hat Enterprise Linux 4.7 及更新的版本、Red Hat Enterprise Linux 5.4 及更新的版本以及 Red Hat Enterprise Linux 6.0 及更高版本中包含半虚拟化设备驱动程序。
注意
有关使用半虚拟化设备和驱动程序的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
半虚拟网络设备(virtio-net)
半虚拟设备是一个虚拟网络设备,它为虚拟机提供网络访问, 提高了 I/O 性能并降低延迟。
半虚拟块设备(virtio-blk)
半虚拟存储设备是高性能的虚拟存储设备,可为虚拟机提供存储,提高了 I/O 性能并降低延迟。管理程序支持半虚拟块设备,并附加到虚拟机(除软盘磁盘驱动器除外,必须模拟)。
半虚拟控制器设备(virtio-scsi)
半虚拟化 SCSI 控制器设备为 virtio-blk 提供了更加灵活且可扩展的替代方法。virtio-scsi 客户机能够继承目标设备的功能集,并可处理与 virtio-blk 相比的数百个设备,这只能处理 28 设备。
以下客户端操作系统完全支持 virtio-scsi :
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 6.4 及更高版本
半虚拟时钟
使用时间戳计数器(TSC)作为时钟源的客户机可能会遭遇计时问题。KVM 通过为客户机提供半虚拟化时钟,可解决没有恒定时间戳计数器的主机。另外,半虚拟时钟还有助于在客户机运行睡眠(S3)或挂起到 RAM 操作后进行时间调整。
半虚拟串行设备(virtio-serial)
半虚拟设备是面向字节流设备,在主机的用户空间和客户机用户空间之间提供简单的通信接口。
balloon 设备(virtio-balloon)
Balloon 设备可指定虚拟机的 RAM 的一部分,不被使用(称为"撤销 "操作 的进程),这样便可释放该内存供该主机使用(或供该主机上的其他虚拟机)使用。当虚拟机再次需要内存时,可以暂停 balloon,主机可以将 RAM 重新分发到虚拟机。
半虚拟化随机数生成器(virtio-rng)
半虚拟化随机数生成器可让虚拟机直接从主机中收集熵或随机数,以便用于加密数据和安全性。虚拟机通常会耗尽熵,因为典型的输入(如硬件使用量)不可用。来源熵可能非常耗时。virtio-rng 通过将熵直接从主机注入客户虚拟机来加快这个过程的速度。
半虚拟图形卡(QXL)
半虚拟化图形卡与 QXL 驱动程序配合使用,提供从远程主机显示虚拟机图形的有效方法。 使用 SPICE 需要 QXL 驱动程序。

3.4.3. 物理主机设备

某些硬件平台可让虚拟机直接访问各种硬件设备和组件。虚拟化中的此过程称为 设备分配,或者也称为 passthrough
VFIO 设备分配
虚拟功能 I/O(VFIO)是 Red Hat Enterprise Linux 7 中的新内核驱动程序,它为虚拟机提供对物理硬件的高性能访问。
VFIO 将主机系统上的 PCI 设备直接附加到虚拟机,使客户机能够为一系列任务提供对 PCI 设备的独占访问权限。这可让 PCI 设备出现,并像物理附加到客户机虚拟机一样操作。
VFIO 通过将设备分配设备从 KVM 管理程序中移出设备分配,并在内核级别强制实施设备隔离,从而改进了以前的 PCI 设备分配架构。VFIO 提供更好的安全性,与安全引导兼容。它是 Red Hat Enterprise Linux 7 中的默认设备分配机制。
VFIO 在 Red Hat Enterprise Linux 7 中将分配的设备数量增加到 32,从 Red Hat Enterprise Linux 6 的最大 8 个设备增加到 32。VFIO 还支持分配 NVIDIA GPU。
注意
有关 VFIO 设备分配的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
USB、PCI 和 SCSI 透传
KVM 管理程序支持将主机系统上的 USB、PCI 和 SCSI 设备附加到虚拟机。USB、PCI 和 SCSI 设备分配使得设备显示为和行为,就像物理附加到虚拟机一样。因此,它为客户机提供了对这些设备的独占访问权限,以实现各种任务使用。
注意
有关 USB、PCI 和 SCSI 透传的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
SR-IOV
SR-IOV(Single Root I/O 虚拟化)是一个 PCI Express(PCI-e)标准,它扩展了单个物理 PCI 功能,作为单独的 虚拟功能 (VF)共享其 PCI 资源。每个功能都可通过 PCI 设备分配的不同虚拟机使用。
一个支持 SR-IOV 的 PCI 设备提供了一个单根功能(例如,单个以太网端口),并将多个不同的虚拟设备显示为唯一的 PCI 设备功能。每个虚拟设备都有自己的唯一的 PCI 配置空间、内存映射的寄存器以及单独的 MSI 的中断。
注意
有关 SR-IOV 的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
NPIV
N_Port ID 虚拟化(NPIV)是某些光纤通道设备提供的功能。NPIV 共享单个物理 N_Port 作为多个 N_Port ID。NPIV 为 SR-IOV 为 PCIe 接口提供的光纤通道主机总线适配器(HBA)提供了类似的功能。使用 NPIV 时,可将虚拟机提供到存储区域网络(SAN)的虚拟光纤通道启动器。
NPIV 可以利用企业级存储解决方案提供高密度虚拟化环境。

3.4.4. 客户机 CPU 型号

CPU 型号 定义哪些主机 CPU 功能公开给客户端操作系统。KVMlibvirt 包含很多处理器模型的定义,允许用户启用仅在较新的 CPU 模型中的 CPU 功能。可公开给客户机的 CPU 功能集取决于主机 CPU、内核和 KVM 代码的支持。
为确保在具有不同 CPU 功能集的主机间安全地迁移虚拟机,KVM 默认不将主机 CPU 的所有功能公开给客户机操作系统。相反,CPU 功能会根据所选 CPU 型号公开。 如果虚拟机启用了给定 CPU 功能,则无法将其迁移到不支持将该功能公开给客户机的主机。
注意
有关客户机 CPU 模型的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南

3.5. 存储

虚拟机的存储从分配给虚拟机的物理存储提取。它使用泛虚拟化或模拟块设备驱动程序附加到虚拟机。

3.5.1. 存储池

存储池是libvirt 管理的文件、目录或存储设备,用于为虚拟机提供存储。存储池被分成存储虚拟机镜像或作为额外存储附加到虚拟机的存储卷。多个虚拟机可以共享同一存储池,从而更好地分配存储资源。如需更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
本地存储池
本地存储池直接附加到主机服务器。它们包括本地设备中的本地目录、直接附加磁盘、物理分区以及逻辑卷管理(LVM)卷组。本地存储池对不需要迁移或大量虚拟机的部署非常有用。本地存储池可能不适用于许多生产环境,因为它们不支持实时迁移。
联网的(共享)存储池
联网的存储池包括使用标准协议通过网络共享的存储设备。当使用 virt-manager 在主机之间迁移虚拟机时,需要网络存储,但在使用 virsh 迁移时是可选的。网络的存储池由 libvirt 管理。

3.5.2. 存储卷

存储池被分成一个 存储卷。存储卷是物理分区、LVM 逻辑卷、基于文件的磁盘镜像以及 libvirt 处理的其他存储类型的抽象。无论底层硬件是什么,存储卷都以本地存储设备的形式出现。

3.5.3. 模拟存储设备

虚拟机可以呈现由主机仿真的一系列存储设备。每种类型的存储设备都适合特定的用例,从而最大灵活性和与客户机操作系统兼容。
virtio-scsi
VirtIO-scsi 是客户机使用大量磁盘或高级存储功能(如 TRIM)的建议半虚拟化设备。使用除 Red Hat Enterprise Linux 7 以外的操作系统可能需要客户机驱动程序安装。
virtio-blk
virtio-blk 是一个半虚拟化存储设备,适合向客户机公开镜像文件。virtio-blk 可为虚拟机提供最佳的磁盘 I/O 性能,但功能比 virtio-scsi 少。
IDE
对于不支持 virtio 驱动程序的传统客户机,推荐使用 IDE。IDE 性能低于 virtio-scsi 或 virtio-blk,但它与不同的系统广泛兼容。
CD-ROM
ATAPI CD-ROM 和 virtio-scsi CD-ROM 可用,并可供 guest 使用 ISO 文件或主机的 CD-ROM 驱动器。virtio-scsi CD-ROM 可以和安装了 virtio-scsi 驱动程序的客户端一起使用。ATAPI CD-ROM 可提供更广泛的兼容性,但性能会降低。
USB 大量存储设备和软盘
需要可移动介质时,可以使用模拟 USB 容量存储设备和软盘。由于 USB 容量较大容量,因此 USB 容量更倾向于软盘。

3.5.4. 主机存储

磁盘镜像可以存储在连接到主机的一系列本地和远程存储技术中。
镜像文件
镜像文件只能存储在主机文件系统中。镜像文件可以存储在本地文件系统中,如 ext4 或 xfs,或者网络文件系统,如 NFS。
libguestfs 等工具可以管理、备份和监控文件。KVM 中的磁盘镜像格式包括:
raw
原始镜像文件包含磁盘的内容,没有额外元数据。
如果主机文件系统允许,则原始文件可以被预先分配或稀疏。稀疏文件根据需要分配主机磁盘空间,因此是精简调配的形式。预分配文件被完全置备,但性能比稀疏文件要高。
原始文件在磁盘 I/O 性能至关重要,并且很少需要通过网络传输镜像文件。
qcow2
qcow2 镜像文件提供了很多高级磁盘映像功能,包括备份文件、快照、压缩和加密。它们可用于通过模板映像实例化虚拟机。
qcow2 文件通常更加有效地通过网络传输,因为只有虚拟机写入的扇区仅在镜像中分配。
Red Hat Enterprise Linux 7 支持 qcow2 版本 3 镜像文件格式。
LVM 卷
逻辑卷(LV)可用于磁盘镜像并使用系统的 LVM 工具进行管理。由于其更简单的块存储模型,LVM 比文件系统提供更好的性能。
LVM 精简配置为 LVM 卷提供快照和高效的空间使用情况,可用作迁移到 qcow2 的替代选择。
主机设备
可以向客户机显示物理 CD-ROM、原始磁盘和逻辑单元号(LUN)等主机设备。这可启用 SAN 或 iSCSI LUN,以及本地 CD-ROM 介质供客户机使用,以获得良好的性能。
当在 SAN(而非主机上的 )上进行存储管理时,可以使用主机设备。
分布式存储系统
Gluster 卷可以用作磁盘镜像。这可实现网络上高性能的集群存储。
Red Hat Enterprise Linux 7 包括对 GlusterFS 上的磁盘镜像的原生支持。这可让 KVM 主机从 GlusterFS 卷引导虚拟机镜像,并将 GlusterFS 卷中的镜像用作虚拟机的数据磁盘。与 GlusterFS FUSE 相比,KVM 中的本地支持提供了更高的性能。
有关存储和虚拟化的更多信息,请参阅为虚拟机管理存储

3.6. 虚拟网络

虚拟客户机与任何网络的连接使用物理主机的软件组件。这些软件组件可以使用 libvirt 的虚拟网络配置重新安排和重新配置。因此,主机充当 虚拟网络交换机,以多种不同方式进行配置,以适合客户机网络的需求。
默认情况下,单一主机上的所有客户机都连接到名为 的同一 libvirt 虚拟网络。这个网络上的客户机可以进行以下连接:
与其他主机以及虚拟化主机之间相互兼容
入站和出站流量都有可能,但受到客户机操作系统网络堆栈中的防火墙的影响,并由附加到 guest 接口的 libvirt 网络配置 规则的影响。
与虚拟化主机之外的网络中的其他主机
仅允许出站流量,并且受到 网络地址转换(NAT) 规则以及主机系统的防火墙的影响。
但是,如果需要,客户机接口可以被设置为以下模式之一:
隔离模式
客户机连接到网络,不允许除虚拟化主机之外的任何流量。
路由模式
客户机连接到网络,网络在客户机和外部主机间路由流量而不执行任何 NAT。这可启用进入的连接,但对于外部网络上的系统需要额外的路由条目。
网桥模式
客户机连接到网桥设备,它也直接连接到连接到本地以太网的物理以太网设备。这使得客户机可以在物理网络中直接看到,从而启用传入的连接,但不需要任何额外的路由表条目。
对于虚拟机的基本出站网络访问,通常不需要额外的网络设置,因为默认网络会与 libvirt 软件包一起安装,并在 libvirtd 服务启动时自动启动。如果需要更高级的功能,可以使用 virshvirt-manager 创建和配置额外网络,并且可以编辑 guest XML 配置文件 以使用其中一个新的网络。
注意
有关高级虚拟网络设置的详情,请查看 Red Hat Enterprise Linux 7 虚拟化部署和管理指南
从客户机操作系统的角度来看,虚拟网络连接与普通物理网络连接相同。有关在 Red Hat Enterprise Linux 7 客户端中配置网络的更多信息,请参阅 Red Hat Enterprise Linux 7 网络指南

第 4 章 虚拟化命令行界面入门

在 Red Hat Enterprise Linux 7 中操作虚拟化的标准方法是使用命令行界面(CLI)。输入 CLI 命令可激活在主机系统上创建或与虚拟机交互的系统实用程序。这个方法比使用图形应用程序 (如 virt-manager )提供更多详细的控制,并提供了脚本处理和自动化的机会。

4.1. 虚拟化的主要命令行实用程序

以下小节列出了可用于在 Red Hat Enterprise Linux 7 中设置和管理虚拟化的主要命令行实用程序。这些命令以及许多其他虚拟化实用程序包含在 Red Hat Enterprise Linux 存储库提供的软件包中,可以使用 Yum 软件包管理器 进行安装。
有关安装虚拟化软件包的更多信息,请参阅 虚拟化部署和管理指南

4.1.1. virsh

virsh 是一个 CLI 工具,用于管理 hypervisor 和客户虚拟机。它是在 Red Hat Enterprise Linux 7 中控制虚拟化的主要方法。其功能包括:
virsh 工具是创建虚拟化管理脚本的理想选择。没有 root 特权的用户也可以使用 virsh,但处于只读模式。

使用 virsh

virsh 工具可在标准命令行输入中使用,也可以作为交互式 shell。在 shell 模式中,不需要 virsh 命令前缀,用户始终以 root 身份注册。以下示例使用 virsh hostname 命令显示 hypervisor 的主机名 - 首先在标准模式下,然后以交互模式显示。
 $ virsh hostname
 localhost.localdomain

 $ virsh
 Welcome to virsh, the virtualization interactive terminal.

 Type:  'help' for help with commands
        'quit' to quit

 virsh # hostname
 localhost.localdomain
重要
当以非 root 用户身份使用 virsh 时,您可以进入非特权 libvirt 会话,这意味着您无法看到或与客户机交互,或者由 root 创建的任何其他虚拟化元素。
要获得对元素的只读访问权限,请使用 virsh-c qemu:///system 选项。

使用 virsh获得帮助

与所有 Linux bash 命令一样,您可以使用 man virsh 命令或 --help 选项获取 virsh 的帮助。另外,virsh help 命令可以用来查看特定 virsh 命令的帮助文本,或使用关键字列出属于某个组的所有 virsh 命令。
virsh 命令组及其对应的关键字如下:
  • 客户机管理 - 关键字
  • 客户机监控 - 关键字 监控器
  • 主机和虚拟机监控程序监控和管理关键字 主机
  • 主机系统网络接口管理 - 关键字 接口
  • 虚拟网络管理 - 关键字 网络
  • 网络过滤器管理 - 关键字 过滤器
  • 节点设备管理 - 关键字 nodedev
  • 管理 secret,如密码短语或加密密钥 - 关键字 secret
  • 快照管理 - 关键字 快照
  • 存储池管理 - 关键字
  • 存储卷管理 - 关键字
  • 常规 virsh usage - keyword virsh
在以下示例中,您需要了解如何重命名客户机虚拟机。通过使用 virsh help,您首先找到要使用的正确命令,然后了解其语法。最后,您可以使用 命令将名为 Fontaine 的客户机重命名为 Atlas

例 4.1. 如何使用关键字列出所有命令的帮助信息

# virsh help domain
 Domain Management (help keyword 'domain'):
    attach-device                  attach device from an XML file
    attach-disk                    attach disk device
    [...]
    domname                        convert a domain id or UUID to domain name
    domrename                      rename a domain
    [...]
# virsh help domrename
 NAME
   domrename - rename a domain

 SYNOPSIS
   domrename <domain> <new-name>

 DESCRIPTION
   Rename an inactive domain.

 OPTIONS
   [--domain] <string>  domain name, id or uuid
   [--new-name] <string>  new domain name

# virsh domrename --domain Fontaine --new-name Atlas
Domain successfully renamed
注意
有关使用 virsh 管理虚拟机的详情,请查看 Red Hat Enterprise Linux 7 虚拟化部署和管理指南

4.1.2. virt-install

virt-install 是一个用于创建新虚拟机的 CLI 工具。它支持基于文本的安装和图形安装,使用串行控制台、SPICE 或 VNC 客户端对图形对图形。安装介质可以是本地的,也可以远程存在于 NFS、HTTP 或者 FTP 服务器中。工具也可以配置为以无人值守方式运行,并使用 kickstart 方法准备客户端,从而可以轻松自动化安装。此工具包含在 virt-install 软件包中。
重要
当以非 root 用户身份使用 virt-install 时,您可以进入一个非特权的 libvirt 会话。这意味着,所创建的 guest 只会对您可见,而且它无法访问由 root 创建的客户端的某些功能。
注意
有关使用 virt-install 的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南

4.1.3. virt-xml

virt-xml 是一个用于编辑域 XML 文件的命令行工具。要成功修改 XML 配置,必须包括 guest 的名称、XML 操作和要进行的更改。
例如,以下列出了与客户机引导配置相关的子选项,然后在 example_domain 客户机上的引导菜单上打开:
# virt-xml boot=?
 --boot options:
   arch
   cdrom
   [...]
   menu
   network
   nvram
   nvram_template
   os_type
   smbios_mode
   uefi
   useserial
# virt-xml example_domain --edit --boot menu=on
Domain 'example_domain' defined successfully.
请注意,命令的每个调用都可以对一个域 XML 文件执行一项操作。
注意
此工具包含在 virt-install 软件包中。有关使用 virt-xml 的更多信息,请参阅 virt-xml 手册页。

4.1.4. guestfish

guestfish 是一个用于检查和修改虚拟机磁盘镜像的命令行工具。它使用 libguestfs 库,并公开 libguestfs API 提供的所有功能。

使用 guestfish

guestfish 实用程序可以在标准命令行输入模式中使用,也可以用作交互式 shell。在 shell 模式中,不需要 guestfish 命令前缀,并且始终以 root 用户身份注册该用户。以下示例使用 guestfish 来显示 testguest 虚拟机上的文件系统 - 首先处于标准模式,然后处于交互模式。
# guestfish domain testguest : run : list-filesystems
/dev/sda1: xfs
/dev/rhel/root: xfs
/dev/rhel/swap: swap
# guestfish

Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: 'help' for help on commands
	  'man' to read the manual
	  'quit' to quit the shell

><fs> domain testguest
><fs> run
><fs> list-filesystems
/dev/sda1: xfs
/dev/rhel/root: xfs
/dev/rhel/swap: swap
此外,在 bash 脚本中 还可使用 guestfish 来实现自动化目的。
重要
当以非 root 用户身份使用 guestfish 时,您将进入一个非特权的 libvirt 会话。这意味着您无法在 root 创建的客户端中看到或与磁盘镜像交互。
要获得对这些磁盘镜像的只读访问权限,请使用 guestfish-ro -c qemu:///system 选项。另外,您必须具有磁盘镜像文件的读取权限。

使用 guestfish 的帮助

与所有 Linux bash 命令一样,您可以使用 man guestfish 命令或 --help 选项获得 guestfish 帮助。此外,可以使用 guestfish help 命令查看特定 guestfish 命令的详细信息。以下示例显示了 guestfish add 命令的信息:
$ guestfish help add
NAME
    add-drive - add an image to examine or modify

SYNOPSIS
     add-drive filename [readonly:true|false] [format:..] [iface:..] [name:..] [label:..] [protocol:..] [server:..] [username:..] [secret:..] [cachemode:..] [discard:..] [copyonread:true|false]

DESCRIPTION
    This function adds a disk image called filename to the handle. filename
    may be a regular host file or a host device.
    [...]
注意
有关 guestfish 的更多信息,请参阅 Red Hat Enterprise Linux 7 虚拟化部署和管理指南

4.2. 演示:使用命令行实用程序创建和管理客户机

为了展示如何在 CLI 中执行虚拟化任务,本章节将提供一个演示新的客户机虚拟机创建位置,在其上安装操作系统,然后客户端则使用 CLI 命令与之交互和管理。

4.2.1. 安装

下面创建一个名为 guest1-rhel7 的新 guest,并从 Red Hat Enterprise Linux 7 Workstation ISO 镜像启动操作系统安装。此镜像可 在客户门户网站上 获得,在本示例中,它目前位于 ~/Downloads/ 文件夹中。客户机分配有两个虚拟 CPU、2048 MB RAM 和 8 GB 磁盘空间。
# virt-install --name guest1-rhel7 --memory 2048 --vcpus 2 --disk size=8 --cdrom /home/username/Downloads/rhel-workstation-7.4-x86_64-dvd.iso --os-variant rhel7

Starting install...
Allocating 'guest1-rhel7.qcow2'                                                   | 8.0 GB  00:00:00
这会在 virt-viewer 应用程序中启动图形 Anaconda 安装程序。有关安装的详情,请查看 安装指南
注意
在无法访问图形界面的主机系统中,可以使用 基于文本的 Anaconda 安装客户机操作系统,使用类似如下的 virt-install 命令:
# virt-install -name rhel7anaconda-guest -r 1024 --location=/home/jherrman/Downloads/rhel-workstation-7.4-x86_64-dvd.iso --disk size=8 --nographics --extra-args="console=tty0 console=ttyS0,115200n8"
如果安装成功完成,命令行会显示以下内容:
Domain creation completed.
Restarting guest.
现在可以将任何需要的配置提供给客户端。但是,为了安全地管理客户机设置,建议先关闭 guest。
# virsh shutdown guest1-rhel7
Domain guest1-rhel7 is being shutdown

4.2.2. 附加设备

要使客户机检测并使用连接到主机的 USB 设备,本例中的 Samsung 手机首先使用主机上的 lsusb 命令来检索设备的 ID。
# lsusb

[...]
Bus 003 Device 007: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP)
之后,使用主机上的首选文本编辑器为设备创建 XML 文件,本例中为 samsung_USB_device.xml,在其中输入供应商和产品 ID。
# vim samsung_USB_device.xml
<hostdev mode='subsystem' type='usb' managed='yes'>
  <source>
    <vendor id='0x04e8'/>
    <product id='0x6860'/>
  </source>
</hostdev>
最后,使用 virsh attach-device 命令将设备附加到客户机。
# virsh attach-device guest1-rhel7 --file samsung_USB_device.xml --config
Device attached successfully
注意
也可以将设备附加到运行的 guest。为此,请使用 --live 选项。

4.2.3. 与客户机交互

要开始使用 guest1-rhel7 虚拟客户机,请先启动它。
# virsh start guest1-rhel7
Domain guest1-rhel7 started
根据您的主机系统是否有图形显示,您可以使用 virt-viewer 应用程序与客户机交互,或使用 SSH shell。
  • 在带有图形显示的系统中,使用 virt-viewer
    # virt-viewer guest1-rhel7
    之后,您可以与 virt-viewer 窗口中的屏幕输出(如使用物理机上的 OS GUI)进行交互。例如,您可以使用 Subscription Manager 应用程序注册 Red Hat Enterprise Linux 客户机操作系统:
  • 如果主机或客户机具有纯文本接口,请使用 SSH。这需要知道客户机的 IP 地址。如果您不知道 IP 地址,可以使用 virsh domifaddr 命令获取它。
    # virsh domifaddr guest1-rhel7
     Name       MAC address          Protocol     Address
    -------------------------------------------------------------------------------
     vnet0      52:54:00:65:29:21    ipv4         10.34.3.125/24
    # ssh root@10.34.3.125
    root@10.34.3.125's password:
    Last login: Wed Jul 19 18:27:10 2017 from 192.168.122.1
    [root@localhost ~]#
    
    注意
    要使 virsh domifaddr 正常工作,客户机必须在网络上运行并可访问,并且可能 需要激活 QEMU 客户机代理
    之后,您可以像在客户机机器上使用终端一样与主机终端交互。例如,您可以使用 subscription-manager 实用程序注册 Red Hat Enterprise Linux 客户机操作系统:
    [root@localhost ~]# subscription-manager register
    Registering to: subscription.rhsm.redhat.com:443/subscription
    Username: username@sample.com
    Password:
    The system has been registered with ID: 30b5e666-67f9-53bb-4b90-c2a88e5be789
    

4.2.4. 诊断

显示客户端状态的常规信息:
# virsh dominfo guest1-rhel7
Id:             1
Name:           guest1-rhel7
UUID:           ec0c0122-fb63-4a54-b602-5cf84f5e2dfd
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       33.4s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: unconfined_u:unconfined_r:svirt_t:s0:c102,c792 (enforcing)

4.2.5. 创建快照

要备份客户机的状态,您可以使用 virsh snapshot-create 命令。
# virsh snapshot-create guest1-rhel7
Domain snapshot 1500563241 created
您可以显示您当前的快照和每个快照的 XML 设置。
# virsh snapshot-list guest1-rhel7
Name                 Creation Time             State
------------------------------------------------------------
1500563241           2017-07-20 17:07:21 +0200 shutoff

# virsh snapshot-dumpxml guest1-rhel7 1500563241
<domainsnapshot>
  <name>1500563241</name>
  <state>shutoff</state>
  <creationTime>1500563241</creationTime>
  <memory snapshot='no'/>
  <disks>
    <disk name='vda' snapshot='internal'/>
[...]
之后可能会加载这个快照,将客户机恢复到保存的快照中的状态。
# virsh snapshot-revert guest1-rhel7 --snapshotname 150056324

第 5 章 虚拟机管理器入门

虚拟机管理器(也称为 virt-manager )是创建和管理客户虚拟机的图形化工具。本章介绍了 虚拟机管理器 以及如何运行它。
注意
在具有图形界面的系统中只能运行 Virtual Machine Manager。
有关使用虚拟机管理器的详情,请查看其它 Red Hat Enterprise Linux 虚拟化指南

5.1. 运行虚拟机管理器

要运行 Virtual Machine Manager,请在应用程序列表中选择它,或使用以下命令:
# virt-manager
虚拟机管理器会打开主窗口。

图 5.1. Virtual Machine Manager

Virtual Machine Manager
注意
如果运行 virt-manager 失败,请确保安装了 virt-manager 软件包。有关安装 virt-manager 软件包的详情,请参考 Red Hat Enterprise Linux Virtualization 部署和管理指南中的安装虚拟化软件包。https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html-single/Virtualization_Deployment_and_Administration_Guide/index.html#chap-Installing_the_virtualization_packages

5.2. 虚拟机管理器接口

以下部分提供有关虚拟机管理器用户界面的信息。用户界面包括虚拟机管理器主窗口Virtual Machine 窗口

5.2.1. Virtual Machine Manager Main 窗口

下图显示了 Virtual Machine Manager 主窗口界面。

图 5.2. Virtual Machine Manager 窗口

Virtual Machine Manager 窗口
Virtual Machine Manager 主窗口标题栏显示 Virtual Machine Manager

5.2.1.1. 主窗口菜单栏

下表列出了 Virtual Machine Manager 主窗口菜单中的条目。

表 5.1. Virtual Machine Manager 主窗口菜单

菜单名称 菜单项 描述
File 添加连接 打开 Add Connection 对话框以连接到本地或远程管理程序。如需更多信息,请参阅《Red Hat Enterprise Linux 虚拟化部署和管理指南》中的 添加 远程连接。
新虚拟机 打开 New VM 向导以创建新 guest 虚拟机。如需更多信息,请参阅 Red Hat Enterprise Linux Virtualization 部署和管理指南中的使用 virt-manager 创建客户机
关闭 关闭虚拟机管理器窗口,无需关闭任何虚拟机窗口。正在运行的虚拟机没有停止。
Exit 关闭虚拟机管理器和所有 Virtual Machine 窗口。正在运行的虚拟机没有停止。
编辑 连接详情 打开所选连接的 Connection Details 窗口。
虚拟机详情 为所选虚拟机打开 Virtual Machine 窗口。如需更多信息,请参阅 虚拟机窗格
删除 删除所选连接或虚拟机。
首选项 打开"首选项"对话框,以用于配置虚拟机管理器选项。
View
  • 客户机 CPU 用量
  • 主机 CPU 用量
  • 内存用量
  • 磁盘 I/O
  • 网络 I/O
切换会在 Virtual Machine Manager 主窗口中为虚拟机选择参数。
Help 关于 显示 About 窗口,其中包含有关 Virtual Machine Manager 的信息。

5.2.1.2. 主窗口工具栏

下表列出了虚拟机管理器主窗口中的图标。

表 5.2. Virtual Machine Manager 主窗口工具栏

图标 描述
打开 New VM 向导以创建新 guest 虚拟机。
为所选虚拟机打开 Virtual Machine 窗口。
启动所选虚拟机。
暂停所选虚拟机。
停止所选虚拟机。
打开菜单,以选择要在所选虚拟机上执行以下操作之一:
  • reboot - 重启 所选虚拟机。
  • 关闭 - 关闭所选虚拟机。
  • force Reset - 强制所选虚拟机关闭并重启。
  • force Off - 强制选择的虚拟机关闭。
  • save - 将所选虚拟机的状态保存到文件中。如需更多信息,请参阅《Red Hat Enterprise Linux 虚拟化部署和管理指南》中的 保存客户机虚拟机配置

5.2.1.3. Virtual Machine 列表

虚拟机列表显示连接到虚拟机管理器的虚拟机列表。列表中的虚拟机按照连接分组。您可以点击表列的标头来排序列表。

图 5.3. Virtual Machine 列表

Virtual Machine 列表
虚拟机列表会显示图形,其中包含有关各个虚拟机所用资源的信息。您可以在 Edit 菜单中的 Preferences 对话框的 Polling 选项卡中显示资源。以下是虚拟机列表中可以显示的资源列表:
  • CPU 用量
  • 主机 CPU 使用量
  • 内存用量
  • 磁盘 I/O
  • 网络 I/O
您可以使用 View 菜单中的 Graph 菜单项选择要显示的资源。

5.2.2. 虚拟机窗口

本节提供有关虚拟机窗口接口的信息。

图 5.4. Virtual Machine 窗口

Virtual Machine 窗口
标题栏显示虚拟机的名称及其使用的连接。

5.2.2.1. Virtual Machine 窗口菜单栏

下表列出了 Virtual Machine 窗口菜单中的条目。

表 5.3. 虚拟机窗口菜单

菜单名称 菜单项 描述
File 查看管理器 打开主虚拟机管理器窗口。
关闭 仅在不停止虚拟机的情况下关闭虚拟机窗口。
Exit 关闭所有虚拟机管理器窗口。正在运行的虚拟机没有停止。
虚拟机 运行 运行虚拟机.只有在虚拟机没有运行时,这个选项才可用。
Pause 暂停虚拟机。只有在虚拟机已在运行时,这个选项才可用。
关闭 打开菜单,以选择要在虚拟机上执行以下操作之一:
  • reboot - 重启虚拟机
  • 关闭 - 关闭虚拟机。
  • force Reset - 强制虚拟机关闭并重启。
  • force Off - 强制虚拟机关闭。
  • save - 将虚拟机的状态保存到文件中。
克隆 创建虚拟机的克隆。如需更多信息,请参阅 Red Hat Enterprise Linux Virtualization 部署和管理指南中的使用 virt-manager Cloning Guests。
migrate 打开 Migrate the virtual machine 对话框,将该虚拟机迁移到另一个主机上。如需更多信息,请参阅 Red Hat Enterprise Linux Virtualization 部署和管理指南中的使用 virt-manager 迁移
删除 删除虚拟机。
截屏 截取虚拟机控制台的截图。
重定向 USB 设备 打开选择 USB 设备以进行重定向对话框,以选择要重定向的 USB 设备。如需更多信息,请参阅 Red Hat Enterprise Linux Virtualization 部署和管理指南中的 USB 重定向
View 控制台(Console) 在 Virtual Machine 窗格中打开 Console 显示。
详情 在 Virtual Machine 窗格中打开 Details 显示。如需更多信息,请参阅 虚拟机详情窗口
快照 在 Virtual Machine 窗格中打开快照显示。如需更多信息,请参阅 快照窗口
全屏 以完整屏幕模式显示虚拟机控制台。
调整为虚拟机 将完整屏幕中的显示大小调整为为虚拟机配置的大小和分辨率。
扩展显示 根据以下子菜单项选择扩展虚拟机的显示:
  • Always - 虚拟机的显示始终扩展到 Virtual Machine 窗口。
  • 仅在 Fullscreen - 虚拟机的显示仅在 Virtual Machine 窗口处于 Full 屏幕模式时扩展到虚拟机窗口。
  • Never - 虚拟机的显示永远不会扩展到 Virtual Machine 窗口。
  • auto resize VM with window - 当 Virtual Machine 窗口调整大小时,虚拟机的显示会自动调整大小。
文本控制台 显示列表中选择的虚拟机显示。显示虚拟机的示例包括 Serial 1 和 graphical Console SPICE
工具栏 切换 Virtual Machine 窗口工具栏的显示。
发送密钥
Ctrl+Alt+Backspace
Ctrl+Alt+Delete
Ctrl+Alt+F1
Ctrl+Alt+F2
Ctrl+Alt+F3
Ctrl+Alt+F4
Ctrl+Alt+F5
Ctrl+Alt+F6
Ctrl+Alt+F7
Ctrl+Alt+F8
Ctrl+Alt+F9
Ctrl+Alt+F10
Ctrl+Alt+F11
Ctrl+Alt+F12
Ctrl+Alt+Printscreen
将所选密钥发送到虚拟机。

5.2.2.2. Virtual Machine 窗口工具栏

下表列出了 Virtual Machine 窗口中的图标。

表 5.4. 虚拟机窗口工具栏

图标 描述
显示虚拟机的图形控制台。
显示虚拟机的详细信息窗格。
启动所选虚拟机。
暂停所选虚拟机。
停止所选虚拟机。
打开菜单,以选择要在所选虚拟机上执行以下操作之一:
  • reboot - 重启 所选虚拟机。
  • 关闭 - 关闭所选虚拟机。
  • force Reset - 强制所选虚拟机关闭并重启。
  • force Off - 强制选择的虚拟机关闭。
  • save - 将所选虚拟机的状态保存到文件中。
在 Virtual Machine 窗格中打开快照显示。
以完整屏幕模式显示虚拟机控制台。

5.2.2.3. 虚拟机窗格

Virtual Machine 窗格显示以下之一:

虚拟机控制台

虚拟机控制台显示虚拟机的图形输出。

图 5.5. Virtual Machine 控制台

Virtual Machine 控制台
您可以使用鼠标和键盘与虚拟机控制台以与实际机器交互的方式与 VM 控制台进行交互。虚拟机控制台中的显示反映了虚拟机上执行的活动。

虚拟机详情窗口

虚拟机详情窗口提供了有关虚拟机、其硬件和配置的详细信息。

图 5.6. 虚拟机详情窗口

虚拟机详情窗口
虚拟机详情窗口包含虚拟机参数列表。当选择列表中的参数时,虚拟机详情窗口右侧的与所选参数相关的信息。您还可以使用虚拟机详情窗口添加和配置硬件。
有关虚拟机详情窗口的更多信息,请参阅 Red Hat Enterprise Linux Virtualization 部署和管理指南中的虚拟硬件详细信息 窗口。

快照窗口

虚拟机快照窗口提供为虚拟机创建的快照列表。

图 5.7. 虚拟机快照窗口

虚拟机快照窗口
虚拟机快照窗口包含保存虚拟机的快照列表。选择了列表中的快照时,有关所选快照的详细信息(包括其状态、描述和屏幕截图)会出现在虚拟机快照窗口的右侧。您可以使用虚拟机快照窗口添加、删除和运行快照。
有关 管理快照 的更多信息,请参阅 Red Hat Enterprise Linux Virtualization 部署和管理指南中的管理快照。

附录 A. 修订历史记录

修订历史
修订 1.0-56Thu May 23 2019Jiri Herrmann
7.6 GA 发行的版本
修订 1.0-55Thu Oct 25 2018Jiri Herrmann
7.6 GA 发行的版本
修订 1.0-53Thu Aug 5 2018Jiri Herrmann
7.6 Beta 发布的版本
修订 1.0-52Thu Apr 5 2018Jiri Herrmann
7.5 GA 发行本版本
修订 1.0-49Thu Jul 27 2017Jiri Herrmann
7.4 GA 发行本版本
修订 1.0-46Mon Oct 17 2016Jiri Herrmann
7.3 GA 发行本版本
修订 1.0-44Mon Dec 21 2015Laura Novich
重新发布指南以了解几个程序错误修复
修订 1.0-43Thu Oct 08 2015Jiri Herrmann
清理 Revision History
修订 1.0-42Sun Jun 28 2015Jiri Herrmann
针对 7.2 测试版本进行更新

法律通告

Copyright © 2019 Red Hat, Inc.
本文档由红帽根据 Creati ve Commons Attribution-ShareAlike 3.0 Unported License 许可。如果您发布本文档,或者修改了这个文档,则必须向 Red Hat, Inc. 提供相关版本,并提供原始文档的链接。如果修改文档,则必须删除所有红帽商标。
作为本文档的许可者,红帽可能会放弃强制制执行 CC-BY-SA 第4d 条款,且不声明该条款在适用条款允许的最大限度内有效。
红帽、Red Hat Enterprise Linux、Shadowman 徽标、红帽徽标、JBoss、OpenShift、Fedora、Infinity 徽标和 RHCE 是 Red Hat, Inc. 在美国和其他国家/地区注册的商标。
Linux® 是 Linus Torvalds 在美国和其它国家的注册商标。
Java® 是 Oracle 和/或其附属公司的注册商标。
XFS® 是 Silicon Graphics International Corp. 或其子公司在美国和/或其他国家的商标。
MySQL® 是 MySQL AB 在美国、欧盟和其他国家/地区的注册商标。
Node.js® 是 Joyent 的官方商标。红帽不正式与官方 Joyent Node.js 开源或商业项目进行正式关联或终止。
OpenStack® Word Mark 和 OpenStack 徽标是 OpenStack Foundation 在美国和其它国家的注册商标/服务标记或商标/服务标记,并被 OpenStack Foundation 授权使用。我们不附属于 OpenStack Foundation 或 OpenStack 社区。
所有其他商标均由其各自所有者所有。