第 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 helpdomain
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 helpdomrename
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 虚拟化部署和管理指南。