Red Hat Training

A Red Hat training course is available for RHEL 8

第 2 章 虚拟化入门

要在 RHEL 8 中使用虚拟化,请按照以下步骤操作。默认方法是使用命令行界面(CLI),但为方便用户,可在 web 控制台 GUI 中完成一些步骤。

注意

Web 控制台目前只提供所有虚拟机管理功能的一部分,因此对于一下高级功能,建议在 RHEL 8 使用命令行实现。

2.1. 启用虚拟化

要在 RHEL 8 中使用虚拟化,您必须启用虚拟化模块,安装虚拟化软件包,并确保将您的系统配置为运行虚拟机(VM)的主机。

先决条件

  • 主机已安装 Red Hat Enterprise Linux 8 并进行了注册
  • 您的系统满足以下硬件要求以作为虚拟主机工作:

    • 主机的构架支持 KVM 虚拟化
    • 有以下最小系统资源可用:

      • 主机有 6 GB 可用磁盘空间,以及每个预期的虚拟机需要额外 6 GB 空间。
      • 主机需要 2 GB RAM,以及每个预期的虚拟机需要额外 2 GB。

流程

  1. 在 RHEL 8 虚拟化模块中安装软件包:

    # yum module install virt
  2. 安装 virt-installvirt-viewer 软件包:

    # yum install virt-install virt-viewer
  3. 启动 libvirtd 服务。

    # systemctl start libvirtd
  4. 确认您的系统已准备好成为虚拟化主机:

    # virt-host-validate
    [...]
    QEMU: Checking for device assignment IOMMU support         : PASS
    QEMU: Checking if IOMMU is enabled by kernel               : WARN (IOMMU appears to be disabled in kernel. Add intel_iommu=on to kernel cmdline arguments)
    LXC: Checking for Linux >= 2.6.26                          : PASS
    [...]
    LXC: Checking for cgroup 'blkio' controller mount-point    : PASS
    LXC: Checking if device /sys/fs/fuse/connections exists    : FAIL (Load the 'fuse' module to enable /proc/ overrides)
  5. 如果所有 virt-host-validate 检查都返回 PASS 值,则代表您的系统已经准备好用于创建虚拟机

    如果有任何检查返回 FAIL 值,请按照显示的步骤解决相关问题。

    如果任何检查返回 WARN 值,请考虑根据显示内容改进虚拟化功能。

附加信息

  • 请注意:如果您的主机 CPU 不支持虚拟化,virt-host-validate 会生成以下输出:

    QEMU: Checking for hardware virtualization: FAIL (Only emulated CPUs are available, performance will be significantly limited)

    但是,在这样的主机系统中尝试创建虚拟机会失败,而不是存在性能问题。

2.2. 创建虚拟机

要在 RHEL 8 中创建虚拟机(VM),请使用 命令行界面RHEL 8 web 控制台

先决条件

  • 已在您的系统中安装并启用虚拟化。
  • 您有足够的系统资源来分配给您的虚拟机,如磁盘空间、RAM 或 CPU。根据虚拟机的预期任务和工作负载,推荐的值可能会有很大不同。

    警告

    RHEL 8 无法从主机 CD-ROM 或者 DVD-ROM 设备安装。如果您在使用 RHEL 8 中的任何 VM 安装方法时选择了 CD-ROM 或 DVD-ROM 作为安装源,则安装会失败。如需更多信息,请参阅红帽知识库

2.2.1. 使用命令行界面创建虚拟机

要使用 virt-install 工具在 RHEL 8 主机上创建虚拟机(VM),请按照以下步骤操作。

先决条件

  • 虚拟化已在您的主机系统中启用
  • 操作系统(OS)安装源可存在于本地或者网络中。可以是以下之一:

    • 安装介质的 ISO 镜像
    • 现有虚拟机安装的磁盘镜像
  • 可选:对于快速、简单的配置安装,可以使用 Kickstart 文件。

流程

要创建虚拟机并启动操作系统安装,使用 virt-install 命令以及以下强制参数:

  • 新机器的名称
  • 分配的内存量
  • 分配的虚拟 CPU(vCPU)数量
  • 分配的存储的类型和大小
  • 操作系统安装源的类型和位置

根据所选安装方法,所需选项和值可能会有所不同。请参阅以下的示例:

  • 下面创建一个名为 demo-guest1 的虚拟机,它从本地存储在 /home/username/Downloads/Win10install.iso 文件中的 ISO 镜像安装 Windows 10 OS。此虚拟机还可分配 2048 MiB RAM 和 2 个 vCPU,为虚拟机自动配置 80 GiB qcow2 虚拟磁盘。

    # virt-install --name demo-guest1 --memory 2048 --vcpus 2 --disk size=80 --os-variant win10 --cdrom /home/username/Downloads/Win10install.iso
  • 下面创建一个名为 demo-guest2 的虚拟机,它使用 /home/username/Downloads/rhel8.iso 镜像从 live CD 运行 RHEL 8 OS。没有为这个虚拟机分配磁盘空间,因此在此会话中所做的更改不会被保留。另外,虚拟机被分配 4096 MiB RAM 和 4 个 vCPU。

    # virt-install --name demo-guest2 --memory 4096 --vcpus 4 --disk none --livecd --os-variant rhel8.0 --cdrom /home/username/Downloads/rhel8.iso
  • 下面创建一个名为 demo-guest3 的 RHEL 8 虚拟机,它连接到现有磁盘镜像 /home/username/backup/disk.qcow2。这和在不同的机器间物理地移动硬盘驱动器类似,因此 demo-guest3 可用的操作系统和数据由之前处理镜像的方式决定。另外,这个虚拟机还会分配 2048 MiB RAM 和 2 个 vCPU。

    # virt-install --name demo-guest3 --memory 2048 --vcpus 2 --os-variant rhel8.0 --import --disk /home/username/backup/disk.qcow2

    请注意,在导入磁盘镜像时强烈建议您使用 --os-variant 选项。如果没有提供,创建虚拟机的性能将会受到负面影响。

  • 以下创建一个名为 demo-guest4 的虚拟机,它从 http://example.com/OS-install URL 安装。要使安装成功启动,URL 必须包含可正常工作的操作系统安装树。另外,操作系统是使用 /home/username/ks.cfg kickstart 文件自动配置的。此虚拟机还可分配 2048 MiB RAM、2 个 vCPU 和 160 GiB qcow2 虚拟磁盘。

    # virt-install --name demo-guest4 --memory 2048 --vcpus 2 --disk size=160 --os-variant rhel8.0 --location http://example.com/OS-install --initrd-inject /home/username/ks.cfg --extra-args="ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"
  • 下面创建一个名为 demo-guest5 的虚拟机,它使用文本模式安装 RHEL8.iso 镜像文件,无需图形。它将客户端控制台连接到串行控制台。虚拟机有 16384 MiB 内存、16 个 vCPU 和 280 GiB 磁盘。当通过慢速网络连接连接到主机时这种安装很有用。

    # virt-install --name demo-guest5 --memory 16384 --vcpus 16 --disk size=280 --os-variant rhel8.0 --location RHEL8.iso --graphics none --extra-args='console=ttyS0'
  • 下面创建一个名为 demo-guest6 的虚拟机,其配置与 demo-guest5 相同,但会位于 10.0.0.1 远程主机上。

    # virt-install --connect qemu+ssh://root@10.0.0.1/system --name demo-guest6 --memory 16384 --vcpus 16 --disk size=280 --os-variant rhel8.0 --location RHEL8.iso --graphics none --extra-args='console=ttyS0'

如果成功创建虚拟机,则使用虚拟机的图形控制台打开 virt-viewer 窗口并启动客户端操作系统安装。

故障排除

  • 如果 virt-install 失败并显示 cannot find default network 错误:

    1. 确定安装了 libvirt-daemon-config-network 软件包:

      # yum info libvirt-daemon-config-network
      Installed Packages
      Name         : libvirt-daemon-config-network
      [...]
    2. 验证 libvirt 默认网络是否活跃,并配置为自动启动:

      # virsh net-list --all
       Name      State    Autostart   Persistent
      --------------------------------------------
       default   active   yes         yes
    3. 如果没有,激活默认网络并将其设置为 auto-start:

      # virsh net-autostart default
      Network default marked as autostarted
      
      # virsh net-start default
      Network default started
      1. 如果激活默认网络失败并显示以下错误,则代表还没有正确安装 libvirt-daemon-config-network 软件包。

        error: failed to get network 'default'
        error: Network not found: no network with matching name 'default'

        要解决这个问题,请重新安装 libvirt-daemon-config-network

        # yum reinstall libvirt-daemon-config-network
      2. 如果激活默认网络失败并显示类似如下的错误,则默认网络子网和主机上现有接口之间出现了冲突。

        error: Failed to start network default
        error: internal error: Network is already in use by interface ens2

        要修复这个问题,请使用 virsh net-edit default 命令,并将配置中的 192.168.122.* 值改为一个主机上还没有使用的子网。

其它资源

  • virt-install 可以指定很多其它选项来进一步配置 VM 及其操作系统安装。详情请查看 virt-install man page。
  • 如果您已经有一个正常工作的虚拟机,则可以迅速克隆它,以使用相同的配置和数据创建新虚拟机。详情请查看 第 8 章 克隆虚拟机

2.2.2. 使用 web 控制台创建虚拟机并安装客户端操作系统

要在 RHEL 8 主机上的 GUI 中管理虚拟机(VM),请使用 web 控制台。以下小节介绍了如何使用 RHEL 8 web 控制台创建虚拟机并安装客户机操作系统。

2.2.2.1. 使用 web 控制台创建虚拟机

要在连接 web 控制台的主机机器中创建虚拟机(VM),请遵循以下步骤。

先决条件

  • 要使用 Web 控制台来管理虚拟机,请安装 Web 控制台虚拟机插件
  • 您有足够的系统资源来分配给您的虚拟机,如磁盘空间、RAM 或 CPU。根据虚拟机的预期任务和工作负载,推荐的值可能会有很大不同。

流程

  1. 在 web 控制台的 Virtual Machines 界面中,点 Create VM

    此时会出现「创建新虚拟机」对话框。

    Cockpit 创建新虚拟机
  2. 输入您要创建的虚拟机的基本配置。

    • Name - 虚拟机的名称。
    • 安装类型 - 安装可以使用本地安装介质、URL、PXE 网络引导或者从有限的操作系统中下载操作系统。
    • 操作系统 - 虚拟机的操作系统。请注意,红帽只支持有限的客户端操作系统
    • 存储 - 要配置虚拟机的存储类型。
    • 大小 - 配置虚拟机的存储空间大小。
    • 内存 - 配置虚拟机的内存量。
    • 执行无人值守安装 - 是否无人值守安装。
    • 立即启动 VM - 虚拟机是否在创建后立即启动。
  3. Create

    虚拟机已创建。如果选择了立即启动虚拟机复选框,则虚拟机将立即启动并开始安装客户端操作系统。

其它资源

2.2.2.2. 使用 web 控制台导入磁盘镜像来创建虚拟机

要通过导入现有虚拟机安装的磁盘镜像来创建虚拟机(VM),请遵循以下步骤。

先决条件

  • 要使用 Web 控制台来管理虚拟机,请安装 Web 控制台虚拟机插件
  • 您有足够的系统资源来分配给您的虚拟机,如磁盘空间、RAM 或 CPU。根据虚拟机的预期任务和工作负载,推荐的值可能会有很大不同。
  • 确保已有虚拟机安装的磁盘镜像

流程

  1. 在 web 控制台的 Virtual Machines 界面中,点 Import VM

    此时会出现「导入虚拟机」对话框。

    Cockpit 导入虚拟机
  2. 输入您要创建的虚拟机的基本配置。

    • Name - 虚拟机的名称。
    • 连接 - libvirt 连接、系统或者会话的类型。
    • 安装源 - 主机系统中虚拟机的现有磁盘镜像。
    • 操作系统 - 虚拟机的操作系统。请注意,红帽只支持有限的客户端操作系统
    • 内存 - 配置虚拟机的内存量。
    • 立即启动 VM - 虚拟机是否在创建后立即启动。
  3. Import

2.2.2.3. 使用 Web 控制台安装客户端操作系统

第一次载入虚拟机(VM)时,您必须在虚拟机上安装操作系统。

注意

如果选中 Create New Virtual Machine 对话框中的 Immediately Start VM 复选框,则在创建虚拟机时自动启动操作系统的安装过程。

先决条件

流程

  1. Virtual Machines 界面中,点您要在其中安装客户机操作系统的虚拟机行。

    行会展开,以显示 Overview 窗格中有关所选虚拟机的基本信息,以及用于安装和删除虚拟机的控制信息。

    Cockpit UEFI 概述
  2. 可选:修改固件。

    注意

    只有在 Create New Virtual Machine 对话框中没有选择 Immediately Start VM 复选框且虚拟机上还没有安装操作系统时,才能更改固件。

    1. 点高亮的固件。

      Cockpit vm 概述
    2. 在 Change Firmware 窗口中,选择所需固件。

      Cockpit vm 固件
    3. Save
  3. Install

    在 VM 控制台中运行的操作系统的安装过程。

故障排除

  • 如果安装过程失败,则必须删除虚拟机并重新创建。

2.3. 启动虚拟机

要在 RHEL 8 中启动虚拟机(VM),您可以使用 命令行界面web 控制台 GUI

先决条件

2.3.1. 使用命令行界面启动虚拟机

您可以使用命令行界面启动关闭虚拟机(VM)或恢复保存的虚拟机。按照以下步骤操作。

先决条件

  • 已定义的一个不活跃地虚拟机。
  • 虚拟机的名称。
  • 对于远程虚拟机:

    • 虚拟机所在主机的 IP 地址。
    • 对主机的 root 访问权限。

流程

  • 对于本地虚拟机,使用 virsh start 工具。

    例如,以下命令启动 demo-guest1 虚拟机。

    # virsh start demo-guest1
    Domain demo-guest1 started
  • 对于位于远程主机上的虚拟机,使用 virsh start 工具以及到主机的 QEMU+SSH 连接。

    例如,以下命令在 192.168.123.123 主机上启动 demo-guest1 虚拟机。

    # virsh -c qemu+ssh://root@192.168.123.123/system start demo-guest1
    
    root@192.168.123.123's password:
    Last login: Mon Feb 18 07:28:55 2019
    
    Domain demo-guest1 started

其它资源

  • 对于更多 virsh start 参数,请使用 virsh start --help
  • 有关简化远程主机上的虚拟机管理,请参阅修改 libvirt 和 SSH 配置
  • 您可以使用 virsh autostart 工具配置虚拟机,以便在主机引导时自动启动。有关 autostart 的详情请参考 virsh autostart 帮助页。

2.3.2. 使用 web 控制台启动虚拟机

如果虚拟机(VM)处于关闭状态,您可以使用 RHEL 8 web 控制台启动它。

先决条件

流程

  1. Virtual Machines 接口中,点您要启动的虚拟机行。

    行会展开,以显示有关所选虚拟机以及用于关闭和删除虚拟机的基本信息 Overview 窗格。

  2. Run

    虚拟机启动,您可以连接到其控制台或图形输出

  3. 可选:要将虚拟机设置为在主机启动时自动启动,点 Autostart 复选框。

其它资源

2.4. 连接至虚拟机

要在 RHEL 8 中与虚拟机(VM)交互,您需要通过以下方法之一连接它:

如果您要连接的虚拟机位于远程主机而不是本地主机,您可以选择配置您的系统以更方便地访问远程主机

先决条件

2.4.1. 使用 web 控制台与虚拟机交互

要在 RHEL 8 web 控制台中与虚拟机(VM)交互,您需要连接到虚拟机的控制台。这包括图形和串行控制台。

2.4.1.1. 在 web 控制台中查看虚拟机图形控制台

使用虚拟机(VM)控制台界面,您可以在 RHEL 8 web 控制台中查看所选虚拟机的图形输出。

先决条件

流程

  1. Virtual Machines 界面中,点您要查看图形控制台的虚拟机行。

    行会展开,以显示有关所选虚拟机以及用于关闭和删除虚拟机的基本信息 Overview 窗格。

  2. Consoles

    图形控制台会出现在 web 界面中。

Cockpit 图形控制台

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

注意

运行 web 控制台的主机可能会截获特定的组合键,如 Ctrl+Alt+Del,阻止它们发送到虚拟机。

要发送这样的组合键,点 Send key 菜单并选择要使用地键序列。

例如:要将 Ctrl+Alt+Del 组合发送到 VM,点 Send key 菜单并选择 Ctrl+Alt+Del 菜单。

其它资源

2.4.1.2. 使用 Web 控制台在远程 viewer 中查看图形控制台

您可以在 remote viewer 中查看所选虚拟机(VM)的图形控制台,比如 virt-viewer。具体步骤请查看以下操作。

注意

您可以在 web 控制台中启动 Virt Viewer。可以手动启动其他 VNC 和 SPICE remote viewer。

先决条件

  • 要使用 Web 控制台来管理虚拟机,请安装 Web 控制台虚拟机插件
  • 确保主机和虚拟机支持图形界面。
  • 在您在 Virt Viewer 中查看图形控制台前,必须在连接 web 控制台的机器中安装 Virt Viewer。

    要查看有关安装 Virt Viewer 的信息,选择 Graphics Console in Desktop Viewer控制台类型,在 Consoles 窗口中点 More Information

    cockpit 安装 vv 信息
注意

有些浏览器扩展和插件不允许 web 控制台打开 Virt Viewer。

流程

  1. Virtual Machines 界面中,点您要查看图形控制台的虚拟机行。

    行会展开,以显示有关所选虚拟机以及用于关闭和删除虚拟机的基本信息 Overview 窗格。

  2. Consoles

    图形控制台会出现在 web 界面中。

  3. 选择 Graphics Console in Desktop Viewer 控制台类型。

    Cockpit 在 vv 中启动图形控制台
  4. Launch Remote Viewer

    图形控制台会出现在 Virt Viewer 中。

    virt viewer GUI

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

注意

运行 web 控制台的服务器可以截获特定的组合键,如 Ctrl+Alt+Del,阻止它们发送到虚拟机。

要发送这样的组合键,点 Send key 菜单并选择要使用地键序列。

例如:要将 Ctrl+Alt+Del 组合发送到 VM,点 Send key 菜单并选择 Ctrl+Alt+Del 菜单。

故障排除

  • 如果在 web 控制台中启动远程查看器图形控制台无法正常工作或者无法优化,您可以使用 Manual Connection 信息,显示在 Graphics Console 窗格的右侧。

    Cockpit manual viewer info

    输入 SPICE 或者 VNC viewer 应用程序中的信息,比如 Virt Viewer。

其它资源

2.4.1.3. 在 web 控制台中查看虚拟机串口控制台

您可以在 RHEL 8 web 控制台中查看所选虚拟机(VM)的串行控制台。这在主机机器或者虚拟机没有使用图形界面配置时很有用。

先决条件

流程

  1. Virtual Machines 窗格中,点您要查看的串口控制台的虚拟机行。

    行会展开,以显示有关所选虚拟机以及用于关闭和删除虚拟机的基本信息 Overview 窗格。

  2. Consoles

    图形控制台会出现在 web 界面中。

  3. 选择 Serial Console 控制台类型。

    串行控制台会出现在 web 界面中。

    Cockpit 串口控制台

您可以断开串行控制台与虚拟机的连接和重新连接。

  • 要断开串行控制台与虚拟机的连接,请点 Disconnect
  • 要将串行控制台重新连接到虚拟机,请点 Reconnect

其它资源

2.4.2. 使用 Virt Viewer 打开虚拟机图形控制台

要连接到 KVM 虚拟机(VM)的图形控制台并在 Virt Viewer 桌面应用程序中打开它,请按照以下步骤操作。

先决条件

  • 您的系统以及您要连接的虚拟机必须支持图形显示。
  • 如果目标虚拟机位于远程主机上,则需要对主机有连接和 root 访问权限。
  • 可选: 如果目标虚拟机位于远程主机上,请设置 libvirt 和 SSH 以更方便地访问远程主机

流程

  • 要连接到本地虚拟机,请使用以下命令,并将 guest-name 替换为您要连接的虚拟机的名称:

    # virt-viewer guest-name
  • 要连接到远程虚拟机,使用带 SSH 协议的 virt-viewer 命令。例如,以下命令以 root 身份连接到位于远程系统 10.0.0.1 的名为 guest-name 的虚拟机。此连接还需要为 10.0.0.1 进行 root 身份验证。

    # virt-viewer --direct --connect qemu+ssh://root@10.0.0.1/system guest-name
    root@10.0.0.1's password:

如果连接正常工作,则虚拟机显示在 Virt Viewer 窗口中。

virt Viewer 显示 RHEL 7 虚拟机操作系统

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

其它资源

2.4.3. 使用 SSH 连接到虚拟机

要使用 SSH 连接协议与虚拟机(VM)终端交互,请遵循以下步骤:

先决条件

  • 有对目标虚拟机的网络连接和 root 访问权限。
  • 如果目标虚拟机位于远程主机上,您也可以拥有对该主机的连接和 root 访问权限。
  • libvirt-nss 组件在虚拟机的主机上安装并启用。如果没有,请执行以下操作:

    1. 安装 libvirt-nss 软件包:

      # yum install libvirt-nss
    2. 编辑 /etc/nsswitch.conf 文件并将 libvirt_guest 添加到 hosts 行中:

      [...]
      passwd:      compat
      shadow:      compat
      group:       compat
      hosts:       files libvirt_guest dns
      [...]

流程

  1. 可选:当连接到远程虚拟机时,请首先 SSH 到其物理主机。以下示例演示了使用其 root 凭证连接到主机 10.0.0.1:

    # ssh root@10.0.0.1
    root@10.0.0.1's password:
    Last login: Mon Sep 24 12:05:36 2018
    root~#
  2. 使用虚拟机的名称和用户访问凭证来连接它。例如,以下命令使用根凭证连接到 "testguest1" 虚拟机:

    # ssh root@testguest1
    root@testguest1's password:
    Last login: Wed Sep 12 12:05:36 2018
    root~]#

故障排除

  • 如果您不知道虚拟机的名称,可以使用 virsh list --all 命令列出主机上所有可用虚拟机:

    # virsh list --all
    Id    Name                           State
    ----------------------------------------------------
    2     testguest1                    running
    -     testguest2                    shut off

2.4.4. 打开虚拟机串口控制台

使用 virsh console 命令,可以连接到虚拟机(VM)的串行控制台。

但虚拟机有以下情况时很有用:

  • 没有提供 VNC 或 SPICE 协议,因此没有为 GUI 工具提供视频显示。
  • 没有网络连接,因此无法使用 SSH 进行交互。

先决条件

  • 虚拟机必须在内核命令行中配置串口控制台。要验证这一点,虚拟机的 cat /proc/cmdline 命令输出应该包含 console=ttyS0。例如:

    # cat /proc/cmdline
    BOOT_IMAGE=/vmlinuz-3.10.0-948.el7.x86_64 root=/dev/mapper/rhel-root ro console=tty0 console=ttyS0,9600n8 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb

    如果没有在虚拟机中正确设置串口控制台,请使用 virsh 控制台连接到虚拟机,请将您连接到无响应的客户端控制台。然而,您仍然可以使用 Ctrl+] 快捷键退出无响应控制台。

  • 要在虚拟机上设置串行控制台,请执行以下操作:

    1. 在虚拟机上,编辑 /etc/default/grub 文件并将 console=ttyS0 添加到以 GRUB_CMDLINE_LINUX 开头的行中。
    2. 清除可能会阻止您更改生效的内核选项。

      # grub2-editenv - unset kernelopts
    3. 重新载入 Grub 配置:

      # grub2-mkconfig -o /boot/grub2/grub.cfg
      Generating grub configuration file ...
      Found linux image: /boot/vmlinuz-3.10.0-948.el7.x86_64
      Found initrd image: /boot/initramfs-3.10.0-948.el7.x86_64.img
      [...]
      done
    4. 重启虚拟机。

流程

  1. 在您的主机系统中,使用 virsh console 命令。如果 libvirt 驱动程序支持安全控制台处理,以下示例连接到 guest1 虚拟机:

    # virsh console guest1 --safe
    Connected to domain guest1
    Escape character is ^]
    
    Subscription-name
    Kernel 3.10.0-948.el7.x86_64 on an x86_64
    
    localhost login:
  2. 您还可以使用与标准命令行界面相同的方法与 virsh 控制台互动。

其它资源

  • 有关 VM 串口控制台的详情请参考 virsh man page。

2.4.5. 设置对远程虚拟化主机的简单访问

当使用 libvirt 工具在远程主机系统中管理虚拟机时,建议使用 -c qemu+ssh://root@hostname/system 语法。例如,要在 10.0.0.1 主机上以 root 用户身份使用 virsh list 命令:

# virsh -c qemu+ssh://root@10.0.0.1/system list

root@10.0.0.1's password:
Last login: Mon Feb 18 07:28:55 2019

Id   Name              State
---------------------------------
1    remote-guest      running

然而,为方便起见,您可以通过修改 SSH 和 libvirt 配置来完全删除需要指定连接详情。例如,您可以:

# virsh -c remote-host list

root@10.0.0.1's password:
Last login: Mon Feb 18 07:28:55 2019

Id   Name              State
---------------------------------
1    remote-guest      running

要进行改进,请按照以下步骤操作。

流程

  1. 编辑或创建 ~/.ssh/config 文件并添加以下内容,其中 host-alias 是与特定远程主机关联的短名称,hosturl 是主机的 URL 地址。

    Host host-alias
            User                    root
            Hostname                hosturl

    例如,下面的命令为 root@10.0.0.1 设置 tyrannosaurus 别名:

    Host tyrannosaurus
            User                    root
            Hostname                10.0.0.1
  2. 编辑或创建 /etc/libvirt/libvirt.conf 文件,添加以下内容,其中 qemu-host-alias 是 QEMU 和 libvirt 工具与预期主机关联的主机别名:

    uri_aliases = [
      "qemu-host-alias=qemu+ssh://host-alias/system",
    ]

    例如,以下命令使用上一步中配置的 tyrannosaurus 别名来设置 t-rex 别名,它代表 qemu+ssh://10.0.0.1/system

    uri_aliases = [
      "t-rex=qemu+ssh://tyrannosaurus/system",
    ]
  3. 因此,您可以使用本地系统中基于 libvirt 的实用程序以及添加的 -c qemu-host-alias 参数来管理远程虚拟机。这会在远程主机中使用 SSH 自动执行命令。

    例如,以下列出了 10.0.0.1 远程主机上的虚拟机,其连接在前面的步骤中被设置为 t-rex

    $ virsh -c t-rex list
    
    root@10.0.0.1's password:
    Last login: Mon Feb 18 07:28:55 2019
    
    Id   Name              State
    ---------------------------------
    1    velociraptor      running
  4. 可选:如果您要在单一远程主机中只使用 libvirt 工具,您也可以为基于 libvirt 的实用程序设置一个特定的连接作为默认目标。要做到这一点,编辑 /etc/libvirt/libvirt.conf 文件并将 uri_default 参数的值设置为 qemu-host-alias。例如:以下命令使用在前面的步骤中设置的 t-rex 主机别名作为默认的 libvirt 目标。

    # These can be used in cases when no URI is supplied by the application
    # (@uri_default also prevents probing of the hypervisor driver).
    #
    uri_default = "t-rex"

    因此,所有基于 libvirt 的命令都会在指定的远程主机中自动执行。

    $ virsh list
    root@10.0.0.1's password:
    Last login: Mon Feb 18 07:28:55 2019
    
    Id   Name              State
    ---------------------------------
    1    velociraptor      running

    但是,如果您也要管理本地主机或不同远程主机上的虚拟机,则不建议这样做。

其它资源

2.5. 关闭虚拟机

要在 Red Hat Enterprise Linux 8 中关闭正在运行的虚拟机,请使用 命令行界面web 控制台 GUI

2.5.1. 使用命令行界面关闭虚拟机

要关闭响应的虚拟机(VM),请执行以下操作之一:

  • 连接到客户端时,使用适合客户端操作系统的 shutdown 命令。
  • 在主机上使用 virsh shutdown 命令:

    • 如果虚拟机位于本地主机上:

      # virsh shutdown demo-guest1
      Domain demo-guest1 is being shutdown
    • 如果虚拟机位于远程主机上,在本例中为 10.0.0.1:

      # virsh -c qemu+ssh://root@10.0.0.1/system shutdown demo-guest1
      
      root@10.0.0.1's password:
      Last login: Mon Feb 18 07:28:55 2019
      Domain demo-guest1 is being shutdown

要强制客户端关闭(例如,如果它已经变得不响应),请在主机中使用 virsh destroy 命令:

# virsh destroy demo-guest1
Domain demo-guest1 destroyed
注意

virsh destroy 命令并不实际删虚拟机配置或磁盘镜像。它只会销毁正在运行的虚拟机实例。然而,在个别情况下,这个命令可能会导致虚拟机文件系统崩溃,因此只有在其它所有关闭方法都失败时才建议使用 virsh destroy

2.5.2. 使用 web 控制台关闭和重启虚拟机

使用 RHEL 8 web 控制台,您可以关闭重启运行虚拟机。您还可以向无响应的虚拟机发送不可屏蔽中断。

2.5.2.1. 在 web 控制台中关闭虚拟机

如果虚拟机(VM)处于 running 状态,您可以使用 RHEL 8 web 控制台关闭它。

先决条件

流程

  1. Virtual Machines 界面中,点您要关闭的虚拟机行。

    行会展开,以显示有关所选虚拟机以及用于关闭和删除虚拟机的基本信息 Overview 窗格。

  2. Shut Down

    虚拟机关机。

故障排除

其它资源

2.5.2.2. 使用 web 控制台重启虚拟机

如果虚拟机(VM)处于 running 状态,您可以使用 RHEL 8 web 控制台重启它。

先决条件

流程

  1. Virtual Machines 接口中,点您要重新启动的虚拟机行。

    行会展开,以显示有关所选虚拟机以及用于关闭和删除虚拟机的基本信息 Overview 窗格。

  2. 重启

    虚拟机将关机并重启。

故障排除

其它资源

2.5.2.3. 使用 web 控制台向虚拟机发送不可屏蔽中断

发送不可屏蔽中断(NMI)可能会导致无响应运行的虚拟机(VM)响应或关闭。例如,您可以将 Ctrl+Alt+Del NMI 发送到不响应标准输入的虚拟机。

先决条件

流程

  1. Virtual Machines 接口中,点您要将 NMI 发送到的虚拟机行。

    行会展开,以显示有关所选虚拟机以及用于关闭和删除虚拟机的基本信息 Overview 窗格。

  2. Shut Down 按钮旁边的 Menu 按钮,然后选择 Send Non-skable Interrupt

    一个 NMI 发送到虚拟机。

其它资源

2.6. 删除虚拟机

要删除 Red Hat Enterprise Linux 8 中的虚拟机,使用 命令行界面web 控制台 GUI

2.6.1. 使用命令行界面删除虚拟机

要删除虚拟机(VM),您可以使用命令行从主机中删除它的 XML 配置和相关存储文件。按照以下步骤操作:

先决条件

  • 备份虚拟机中的重要数据。
  • 关闭虚拟机。
  • 确保没有其他虚拟机使用相同的关联的存储。

流程

  • 使用 virsh undefine 工具。

    例如:以下命令删除 guest1 虚拟机、与其关联的存储卷以及非电压 RAM(若有)。

    # virsh undefine guest1 --remove-all-storage --nvram
    Domain guest1 has been undefined
    Volume 'vda'(/home/images/guest1.qcow2) removed.

其它资源

  • 有关其他 virsh undefine 参数,请使用 virsh undefine --help 或查看 virsh man page。

2.6.2. 使用 web 控制台删除虚拟机

要从 RHEL 8 web 控制台连接的主机中删除虚拟机(VM)及其关联的存储文件,请按照以下步骤操作:

先决条件

  • 要使用 Web 控制台来管理虚拟机,请安装 Web 控制台虚拟机插件
  • 备份虚拟机中的重要数据。
  • 关闭虚拟机。
  • 确保没有其他虚拟机使用相同的关联的存储。

流程

  1. 虚拟机界面中,点击您要删除 的虚拟机的 Menu 按钮

    此时会出现一个下拉菜单,控制各种虚拟机操作。

    Cockpit VM 操作
  2. 删除

    此时会出现确认对话框。

    Cockpit vm delete 确认
  3. 可选: 要删除与虚拟机关联的所有或部分存储文件,请选择您要删除的存储文件旁的复选框。
  4. 删除

    虚拟机和任何选择的存储文件都将被删除。


为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。