第 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 虚拟化部署和管理指南
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.