3.2. 备份和迁移

3.2.1. 备份和恢复 Red Hat Virtualization Manager

3.2.1.1. 备份 Red Hat Virtualization Manager - 概述

使用 engine-backup 工具对 Red Hat Virtualization Manager 进行定期备份。工具会将引擎数据库和配置文件备份到一个文件中,并可在不中断 ovirt-engine 服务的情况下运行。

3.2.1.2. engine-backup 命令的语法

engine-backup 命令以两种基本模式之一工作:

# engine-backup --mode=backup
# engine-backup --mode=restore

这两个模式由一组选项进一步扩展,允许您指定 engine 数据库的备份范围和不同凭证。运行 engine-backup --help 以获得选项及其功能的完整列表。

基本选项

--mode
指定命令是否执行备份操作还是恢复操作。可用的选项有: backup (默认)、恢复并验证。您必须为 验证恢复操作 定义 mode 选项。
--file
指定保存到备份模式的文件的路径和名称(例如 file_name.backup),并在恢复模式中作为备份数据读取。该路径默认定义为 /var/lib/ovirt-engine-backup/
--log
指定写入备份或恢复操作的文件的路径和名称(例如: log_file_name)。该路径默认定义为 /var/log/ovirt-engine-backup/
--scope

指定 backup 或 restore 操作的范围。有四个选项: all,用于备份或恢复所有数据库和配置数据(默认设置); 文件,仅备份或恢复系统上的文件; db,仅备份或恢复管理器数据库;以及 dwhdb,仅备份或恢复数据仓库数据库。

在同一个 engine-backup 命令中可以多次指定 --scope 选项。

Manager 数据库选项

仅当在 restore 模式中使用 engine-backup 命令时,以下选项才可用。以下 选项语法适用于恢复管理器数据库。同一选项可用于恢复数据仓库数据库。如需数据仓库选项语法,请参阅 engine-backup --help

--provision-db
创建供要恢复到的 Manager 数据库备份的 PostgreSQL 数据库。当在远程主机上恢复备份或全新安装时,需要这个选项,如果没有配置 PostgreSQL 数据库。当在恢复模式中使用此选项时,默认添加 --restore-permissions 选项。
--provision-all-databases
为存档中包含的所有内存转储创建数据库。启用后,这是默认设置。
--change-db-credentials
允许您指定备用凭证,以便使用备份本身中存储的凭据来恢复 Manager 数据库。有关这个选项所需的附加参数,请参阅 engine-backup --help
--restore-permissions--no-restore-permissions

恢复或不会恢复数据库用户权限。恢复备份时需要其中一个选项。当在恢复 模式中使用 --provision 598 选项时,默认应用 --restore-permissions

注意

如果备份包含额外的数据库用户,请使用 --restore-permissions--provision-db (或 --provision-dwh-db)选项恢复备份,则创建具有随机密码的额外用户。如果额外用户需要访问恢复的系统,则必须手动更改这些密码。请参阅 如何在从备份中恢复 Red Hat Virtualization 后向额外数据库用户授予访问权限

3.2.1.3. 使用 engine-backup 命令创建备份

在 Manager 处于活跃状态时,您可以使用 engine-backup 命令备份 Red Hat Virtualization Manager。在 --scope 选项中附加以下值之一以指定您要备份的内容:

all
管理器上所有数据库和配置文件的完整备份。这是 --scope 选项的默认设置。
files
仅备份系统中的文件
db
仅 Manager 数据库的备份
dwhdb
仅 Data Warehouse 数据库的备份
cinderlibdb
仅备份 Cinderlib 数据库
grafanadb
仅 Grafana 数据库的备份

您可以多次指定 --scope 选项。

您还可以配置 engine-backup 命令来备份其他文件。它恢复了它备份的所有信息。

重要

要将数据库恢复到 Red Hat Virtualization Manager 的全新安装,只需要一个数据库备份是不够的。管理器还需要访问配置文件。如果指定除了 所有 之外的范围,还必须包含 --scope=files 或备份文件系统。

有关 engine-backup 命令的完整说明,在 Manager 机器上输入 engine-backup --help

流程

  1. 登录到 Manager 机器。
  2. 创建备份:

    # engine-backup

默认情况下不应用以下设置:

--scope=all

--mode=backup

该命令在 /var/lib/ovirt-engine-backup/file_name.backup 中生成备份,以及 /var/log/ovirt-engine-backup/log_file_name中的日志文件

使用 file_name.tar 恢复环境。

以下示例演示了几个不同的备份场景。

例 3.1. 完整备份

# engine-backup

例 3.2. Manager 数据库备份

# engine-backup --scope=files --scope=db

例 3.3. Data Warehouse 数据库备份

# engine-backup --scope=files --scope=dwhdb

例 3.4. 在备份中添加特定文件

  1. 创建一个目录来存储 engine-backup 命令的配置自定义:

    # mkdir -p /etc/ovirt-engine-backup/engine-backup-config.d
  2. 在新目录中创建一个名为 ntp-chrony.sh 的文本文件,其内容如下:

    BACKUP_PATHS="${BACKUP_PATHS}
    /etc/chrony.conf
    /etc/ntp.conf
    /etc/ovirt-engine-backup"
  3. 运行 engine-backup 命令时,请使用 --scope=files。备份和恢复包括 /etc/chrony.conf/etc/ntp.conf/etc/ovirt-engine-backup

3.2.1.4. 使用 engine-backup 命令恢复备份

使用 engine-backup 命令恢复备份涉及更多步骤,而不是根据恢复的目的地来创建备份。例如,engine-backup 命令可用于将备份恢复到 Red Hat Virtualization 的全新安装、现有 Red Hat Virtualization 安装之上,以及使用本地或远程数据库。

重要

用于恢复备份的 Red Hat Virtualization Manager (如 4.4.8)的版本必须早于或等于用于创建备份的 Red Hat Virtualization Manager 版本(如 4.4.7)。从 Red Hat Virtualization 4.4.7 开始,这个策略被 engine-backup 命令强制使用。要查看备份文件中所含的 Red Hat Virtualization 版本,请解压缩备份文件并在解压缩文件的根目录中的 version 文件中读取值。

3.2.1.5. 将备份恢复到刷新安装

engine-backup 命令可用于将备份恢复到 Red Hat Virtualization Manager 的全新安装。以下流程必须在安装基础操作系统以及安装了 Red Hat Virtualization Manager 所需的软件包的机器上执行,但尚未运行 engine-setup 命令。此流程假定可以从要恢复备份的机器中访问备份文件或文件。

流程

  1. 登录到 Manager 机器。如果您要将引擎数据库恢复到远程主机,您将需要登录 并对该主机执行相关的操作。同样,如果也将数据仓库恢复到远程主机,您将需要登录到该主机上的相关操作。
  2. 恢复完整备份或仅数据库备份。

    • 恢复完整备份:

      # engine-backup --mode=restore --file=file_name --log=log_file_name --provision-db

      当在恢复 模式中使用 --provision 598 选项时,默认应用 --restore-permissions

      如果 Data Warehouse 也作为完整备份的一部分恢复,请置备额外的数据库:

      engine-backup --mode=restore --file=file_name --log=log_file_name --provision-db --provision-dwh-db
    • 通过恢复配置文件和数据库备份来恢复仅数据库备份:

      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --provision-db

      上例恢复 Manager 数据库的备份。

      # engine-backup --mode=restore --scope=files --scope=dwhdb --file=file_name --log=log_file_name --provision-dwh-db

      上面的示例恢复数据仓库数据库的备份。

      如果成功,则会显示以下输出:

      You should now run engine-setup.
      Done.
  3. 运行以下命令并按照提示配置恢复的 Manager:

    # engine-setup

Red Hat Virtualization Manager 已恢复到备份中保留的版本。要更改新 Red Hat Virtualization 系统的完全限定域名,请参阅 oVirt Engine Rename Tool

3.2.1.6. 恢复备份以覆盖现有安装

engine-backup 命令可以将备份恢复到已安装并设置了 Red Hat Virtualization Manager 的机器。当您进行环境备份后,在该环境中执行更改,然后希望通过从备份中恢复环境来撤销更改,这将非常有用。

因为备份进行了备份,如添加或删除主机后对环境所做的更改将不会出现在恢复的环境中。您必须恢复这些更改。

流程

  1. 登录到 Manager 机器。
  2. 删除配置文件并清理与 Manager 关联的数据库:

    # engine-cleanup

    engine-cleanup 命令只清理 Manager 数据库;它不会丢弃数据库或删除拥有该数据库的用户。

  3. 恢复完整备份或仅数据库备份。您不需要创建新数据库或指定数据库凭据,因为用户和数据库已经存在。

    • 恢复完整备份:

      # engine-backup --mode=restore --file=file_name --log=log_file_name --restore-permissions
    • 通过恢复配置文件和数据库备份来恢复仅数据库备份:

      # engine-backup --mode=restore --scope=files --scope=db --scope=dwhdb --file=file_name --log=log_file_name --restore-permissions
      注意

      要只恢复 Manager 数据库(例如,如果 Data Warehouse 数据库位于另一台机器上),您可以省略 --scope=dwhdb 参数。

      如果成功,则会显示以下输出:

      You should now run engine-setup.
      Done.
  4. 重新配置管理器:

    # engine-setup

3.2.1.7. 使用不同凭证恢复备份

engine-backup 命令可以将备份恢复到已安装并设置了 Red Hat Virtualization Manager 的机器,但备份中数据库的凭证与要恢复备份的机器中的数据库不同。当您进行安装备份并希望从备份恢复到不同系统时,这非常有用。

重要

当恢复备份以覆盖现有安装时,您必须运行 engine-cleanup 命令来清理现有安装,然后才能使用 engine-backup 命令。engine-cleanup 命令只清理 engine 数据库,不会丢弃数据库或删除拥有该数据库的用户。因此,您不需要创建新数据库或指定数据库凭证。但是,如果引擎数据库所有者的凭据未知,则必须在恢复备份前更改它们。

流程

  1. 登录到 Red Hat Virtualization Manager 机器。
  2. 运行以下命令并按照提示删除管理器的配置文件并清理管理器的数据库:

    # engine-cleanup
  3. 如果该用户的凭据未知,则更改 引擎数据库 所有者的密码:

    1. 输入 postgresql 命令行:

      # su - postgres -c 'psql'
    2. 更改拥有 引擎数据库 的用户的密码:

      postgres=# alter role user_name encrypted password 'new_password';

      如果需要,为拥有 ovirt_engine_history 数据库的用户重复此操作。

  4. 使用 --change-db-credentials 参数恢复完整备份或仅数据库备份,以传递新数据库的凭据。数据库的 database_location 于管理器本地,是 localhost

    注意

    以下示例在不指定密码的情况下为每个数据库使用 --*password 选项,该选项会提示输入每个数据库的密码。另外,您还可以为每个数据库使用 --*passfile=password_file 选项,安全地将密码传递给 engine-backup 工具,而无需交互式提示。

    • 恢复完整备份:

      # engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --no-restore-permissions

      如果 Data Warehouse 也作为完整备份的一部分恢复,包括修订额外数据库的凭证:

      engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password --no-restore-permissions
    • 通过恢复配置文件和数据库备份来恢复仅数据库备份:

      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --no-restore-permissions

      上例恢复 Manager 数据库的备份。

      # engine-backup --mode=restore --scope=files --scope=dwhdb --file=file_name --log=log_file_name --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password --no-restore-permissions

      上面的示例恢复数据仓库数据库的备份。

      如果成功,则会显示以下输出:

      You should now run engine-setup.
      Done.
  5. 运行以下命令并按照提示重新配置防火墙并确保正确配置了 ovirt-engine 服务:

    # engine-setup

3.2.1.8. 备份和恢复自托管引擎

您可以备份自托管引擎,并在新的自托管环境中恢复它。对于诸如将环境迁移到具有不同存储类型的新自托管引擎存储域等任务使用这个步骤。

当您在部署期间指定备份文件时,备份会在新的 Manager 虚拟机上恢复,并带有新的自托管引擎存储域。旧的 Manager 被移除,旧的自托管引擎存储域被重命名,您可以在确认新环境正常工作后手动删除。强烈建议在新的主机上部署;如果在备份环境中存在用于部署的主机,它将从恢复的数据库中删除,以避免新环境中的冲突。如果部署到新主机上,则必须为主机分配唯一名称。重新利用备份中包含的现有主机的名称可能会导致新环境中的冲突。

备份和恢复操作涉及以下密钥操作:

这个过程假设您可以访问,并可更改原始 Manager。

前提条件

  • 为 Manager 和主机准备的完全限定域名。正向和反向查找记录必须在 DNS 中设置。新管理器必须与原始 Manager 具有相同的完全限定域名。
  • 原始管理器必须更新至最新的次版本。用于恢复备份的 Red Hat Virtualization Manager (如 4.4.8)的版本必须早于或等于用于创建备份的 Red Hat Virtualization Manager 版本(如 4.4.7)。从 Red Hat Virtualization 4.4.7 开始,这个策略被 engine-backup 命令强制使用。请参阅升级指南中的更新 Red Hat Virtualization Manager

    注意

    如果您需要恢复备份,但没有新的设备,恢复过程将暂停,您可以通过 SSH 登录临时管理器机器,根据需要注册、注册、订阅或配置频道,然后在恢复过程恢复过程前升级 Manager 软件包。

  • 数据中心兼容性级别必须设置为最新版本,以确保与更新的存储版本兼容。
  • 环境中必须至少有一个常规主机。此主机(以及任何其他常规主机)将保持活动状态,以托管 SPM 角色和任何正在运行的虚拟机。如果常规主机尚不是 SPM,请在创建备份之前移动 SPM 角色,方法是选择常规主机并单击 ManagementSelect as SPM

    如果没有可用的常规主机,可以通过两种方式来添加:

3.2.1.8.1. 备份原始管理器

使用 engine-backup 命令备份原始管理器,并将备份文件复制到单独的位置,以便可在进程的任意时间点上访问该文件。

有关 engine-backup --mode=backup 选项的更多信息,请参阅 管理指南中的备份和恢复 Red Hat Virtualization Manager

流程

  1. 登录到一个自托管引擎节点,并将环境移到全局维护模式:

    # hosted-engine --set-maintenance --mode=global
  2. 登录到原始 Manager 并停止 ovirt-engine 服务:

    # systemctl stop ovirt-engine
    # systemctl disable ovirt-engine
    注意

    虽然禁止运行原始管理器,但建议不要对环境进行更改,因为它在创建备份后不会对环境进行任何更改。此外,它还会阻止原始管理器和新管理器同时管理现有资源。

  3. 运行 engine-backup 命令,指定要创建的备份文件的名称,以及要存储备份日志的日志文件名称:

    # engine-backup --mode=backup --file=file_name --log=log_file_name
  4. 将文件复制到外部服务器。在以下示例中,storage.example.com 是网络存储服务器的完全限定域名,它将存储备份直到需要,/backup/ 是任何指定的文件夹或路径。

    # scp -p file_name log_file_name storage.example.com:/backup/
  5. 如果您不要求 Manager 机器用于其他目的,请从 Red Hat Subscription Manager 中取消注册它:

    # subscription-manager unregister
  6. 登录到其中一个自托管引擎节点并关闭原始 Manager 虚拟机:

    # hosted-engine --vm-shutdown

备份管理器后,部署新的自托管引擎并在新虚拟机上恢复备份。

3.2.1.8.2. 在新的自托管引擎中恢复备份

在新主机上运行 hosted-engine 脚本,并使用 --restore-from-file=path/to/file_name 选项在部署期间恢复 Manager 备份。

重要

如果您使用 iSCSI 存储,且您的 iSCSI 目标根据启动器的 ACL 过滤连接,则部署可能会失败,并显示 STORAGE_DOMAIN_UNREACHABLE 错误。要防止这种情况,您必须在开始自托管引擎部署前更新 iSCSI 配置:

  • 如果要在现有主机上重新部署,您必须更新 /etc/iscsi/initiatorname.iscsi 中的主机的 iSCSI 启动器设置。initiator IQN 必须与之前在 iSCSI 目标中映射的相同,或者更新至一个新的 IQN(如果适用)。
  • 如果要在全新的主机上部署,您必须更新 iSCSI 目标配置以接受来自该主机的连接。

请注意,IQN 可以在主机端(iSCSI 启动器)或存储侧(iSCSI 目标)上更新。

流程

  1. 将备份文件复制到新主机。在以下示例中,host.example.com 是主机的 FQDN,/backup/ 是任何指定的文件夹或路径。

    # scp -p file_name host.example.com:/backup/
  2. 登录新主机。
  3. 如果在 Red Hat Virtualization Host 上部署,则 ovirt-hosted-engine-setup 已安装,因此可以跳过这一步。如果要在 Red Hat Enterprise Linux 上部署,请安装 ovirt-hosted-engine-setup 软件包:

    # dnf install ovirt-hosted-engine-setup
  4. 使用 tmux 窗口管理器运行脚本,以避免在出现网络或终端中断时丢失会话。

    安装并运行 tmux

    # dnf -y install tmux
    # tmux
  5. 运行 hosted-engine 脚本,指定到备份文件的路径:

    # hosted-engine --deploy --restore-from-file=backup/file_name

    要随时转义脚本,请使用 CTRL+D 中止部署。

  6. 选择 Yes 以开始部署。
  7. 配置网络。脚本会检测可能的 NIC,以用作环境的管理网桥。
  8. 如果要使用自定义设备进行虚拟机安装,请输入 OVA 存档的路径。否则,将此字段留空,以使用 RHV-M Appliance。
  9. 输入 Manager 的 root 密码。
  10. 输入可让您以 root 用户身份登录 Manager 的 SSH 公钥,并指定是否为 root 用户启用 SSH 访问。
  11. 输入虚拟机的 CPU 和内存配置。
  12. 输入 Manager 虚拟机的 MAC 地址,或接受随机生成的地址。如果要通过 DHCP 为 Manager 虚拟机提供 IP 地址,请确保此 MAC 地址具有有效的 DHCP 保留。部署脚本将不会为您配置 DHCP 服务器。
  13. 输入虚拟机的网络详情。如果指定了 Static,请输入 Manager 的 IP 地址。

    重要

    静态 IP 地址必须属于与主机相同的子网。例如,如果主机在 10.1.1.0/24 中,则管理器虚拟机的 IP 必须位于同一子网范围 (10.1.1.1-254/24) 中。

  14. 指定是否将 Manager 虚拟机和基础主机的条目添加到虚拟机的 /etc/hosts 文件中。您必须确保主机名可以被解析。
  15. 提供 SMTP 服务器的名称和 TCP 端口号、用于发送电子邮件通知的电子邮件地址,以及用于接收这些通知的电子邮件地址列表:
  16. 输入 admin@internal 用户的密码来访问管理门户。

    该脚本将创建虚拟机。如果需要安装 RHV-M 设备,这可能需要一些时间。

    注意

    如果主机无法正常工作,因为缺少所需的网络或类似问题,部署会暂停并显示以下消息:

    [ INFO  ] You can now connect to https://<host name>:6900/ovirt-engine/ and check the status of this host and eventually remediate it, please continue only when the host is listed as 'up'
    [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : include_tasks]
    [ INFO  ] ok: [localhost]
    [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Create temporary lock file]
    [ INFO  ] changed: [localhost]
    [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Pause execution until /tmp/ansible.<random>_he_setup_lock is removed, delete it once ready to proceed]

    暂停进程允许您:

    • 使用提供的 URL 连接到管理门户。
    • 评估该情况,了解主机无法正常运行的原因,并进行修改。例如,如果此部署从备份中恢复,且主机集群包含的备份包含主机集群所需的网络,则配置网络,将相关主机 NIC 附加到这些网络。
    • 一旦一切正常,主机状态为 Up,删除上述消息中显示的锁定文件。部署将继续。
  17. 选择要使用的存储类型:

    • 对于 NFS,请输入版本、完整地址和到存储的路径以及所有挂载选项。

      警告

      不要为新存储域使用旧的自托管引擎存储域挂载点,因为您面临丢失虚拟机数据的风险。

    • 对于 iSCSI,请输入门户详情并从自动检测的列表中选择目标和 LUN。您只能在部署期间选择一个 iSCSI 目标,但支持多路径连接同一门户组的所有门户。

      注意

      要指定多个 iSCSI 目标,您必须先启用多路径,然后才能部署自托管引擎。详情请查看 Red Hat Enterprise Linux DM 多路径。另外,还有一个多路径帮助程序工具,它生成脚本来安装和配置使用不同选项的多路径。

    • 对于 Gluster 存储,请输入到存储的完整地址和路径,以及任何挂载选项。

      警告

      不要为新存储域使用旧的自托管引擎存储域挂载点,因为您面临丢失虚拟机数据的风险。

      重要

      仅支持副本 1 和副本 3 Gluster 存储。确保您按如下方式配置卷:

      gluster volume set VOLUME_NAME group virt
      gluster volume set VOLUME_NAME performance.strict-o-direct on
      gluster volume set VOLUME_NAME network.remote-dio off
      gluster volume set VOLUME_NAME storage.owner-uid 36
      gluster volume set VOLUME_NAME storage.owner-gid 36
      gluster volume set VOLUME_NAME network.ping-timeout 30
    • 对于光纤通道,从自动检测的列表中选择 LUN。必须配置并连接主机总线适配器,而且 LUN 不得包含任何现有数据。要重复使用现有 LUN,请参阅管理指南中的重新使用 LUN
  18. 输入 Manager 磁盘大小。

    该脚本会继续,直到部署完成。

  19. 部署过程会更改管理器的 SSH 密钥。要允许客户端机器在没有 SSH 错误的情况下访问新管理器,请在访问原始管理器的任何客户端机器上从 .ssh/known_hosts 文件中删除原始 Manager 条目。

部署完成后,登录新的 Manager 虚拟机并启用所需的存储库。

3.2.1.8.3. 启用 Red Hat Virtualization Manager 存储库

您需要使用 Red Hat Subscription Manager 登录并注册 Manager 机器,附加 Red Hat Virtualization Manager 订阅并启用 Manager 存储库。

流程

  1. 使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:

    # subscription-manager register
    注意

    如果您使用 IPv6 网络,请使用 IPv6 转换机制来访问 Content Delivery Network 和 subscription Manager。

  2. 查找 Red Hat Virtualization Manager 订阅池并记录池 ID:

    # subscription-manager list --available
  3. 使用池 ID 将订阅附加到系统:

    # subscription-manager attach --pool=pool_id
    注意

    查看当前附加的订阅:

    # subscription-manager list --consumed

    列出所有启用的软件仓库:

    # dnf repolist
  4. 配置存储库:

    # subscription-manager repos \
        --disable='*' \
        --enable=rhel-8-for-x86_64-baseos-eus-rpms \
        --enable=rhel-8-for-x86_64-appstream-eus-rpms \
        --enable=rhv-4.4-manager-for-rhel-8-x86_64-rpms \
        --enable=fast-datapath-for-rhel-8-x86_64-rpms \
        --enable=jb-eap-7.4-for-rhel-8-x86_64-rpms \
        --enable=openstack-16.2-cinderlib-for-rhel-8-x86_64-rpms \
        --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
  5. 将 RHEL 版本设置为 8.6:

    # subscription-manager release --set=8.6
  6. 启用 pki-deps 模块。

    # dnf module -y enable pki-deps
  7. 启用 postgresql 模块的版本 12。

    # dnf module -y enable postgresql:12
  8. 启用 nodejs 模块的版本 14:

    # dnf module -y enable nodejs:14
  9. 同步安装的软件包,将它们更新至最新可用版本。

    # dnf distro-sync --nobest

其它资源

有关模块和模块流的详情,请参考安装、管理和删除用户空间组件中的以下部分

现在,管理器及其资源在新的自托管环境中运行。自托管引擎节点必须在 Manager 中重新安装,以更新其自托管引擎配置。标准主机不会受到影响。为每个自托管引擎节点执行以下步骤。

3.2.1.8.4. 重新安装主机

从管理门户重新安装 Red Hat Virtualization 主机(RHVH)和 Red Hat Enterprise Linux 主机。该流程包括停止和重启主机。

警告

安装或重新安装主机的操作系统时,红帽强烈建议您先分离附加到主机的任何现有非 OS 存储,以避免意外初始化这些磁盘,从而避免意外初始化这些磁盘,并可能会丢失数据。

前提条件

  • 如果集群启用了迁移,虚拟机可以自动迁移到集群中的另一台主机。因此,在主机使用量相对较低时,重新安装主机。
  • 确保集群有足够的内存来执行维护。如果集群缺少内存,迁移虚拟机将挂起,然后失败。要减少内存用量,请在将主机移至维护之前关闭部分或所有虚拟机。
  • 在执行重新安装前,请确保集群包含多个主机。不要尝试同时重新安装所有主机。个主机必须保持可用才能执行存储池管理程序(SPM)任务。

流程

  1. 单击 ComputeHosts,再选择 主机。
  2. ManagementMaintenanceOK
  3. InstallationReinstall。这将打开 Install Host 窗口。
  4. 单击 Hosted Engine 选项卡,再从下拉菜单中选择 DEPLOY
  5. 单击确定以 重新安装主机。

重新安装主机并将其状态返回到 启动 后,您可以将虚拟机迁移到主机。

重要

将 Red Hat Virtualization Host 注册到 Red Hat Virtualization Manager 并重新安装它后,管理门户可能会错误地将其状态显示为 Install Failed。单击 ManagementActivate,主机将更改为 Up 状态并可供使用。

在重新安装自托管引擎节点后,您可以通过在其中一个节点上运行以下命令来检查新环境的状态:

# hosted-engine --vm-status

在恢复过程中,旧的自托管引擎存储域被重命名为,在恢复错误时不会从新环境中删除。确认环境正常运行后,您可以删除旧的自托管引擎存储域。

3.2.1.8.5. 删除存储域

在您的数据中心中有一个要从虚拟环境中删除的存储域。

流程

  1. StorageDomains
  2. 将存储域移到维护模式并分离它:

    1. 点存储域的名称。这会打开详情视图。
    2. Data Center 选项卡。
    3. 单击 Maintenance,然后单击 OK
    4. 单击 Detach然后单击确定
  3. 单击 Remove
  4. (可选)选择 格式化域,即存储内容将丢失! 复选框可清除域的内容。
  5. 点击 OK

存储域已从环境中永久移除。

3.2.1.9. 从现有的备份中恢复自托管引擎

如果由于无法修复的问题而出现自托管引擎不可用,您可以在新的自托管环境中使用在问题开始前的备份将其恢复(如果可用)。

当您在部署期间指定备份文件时,备份会在新的 Manager 虚拟机上恢复,并带有新的自托管引擎存储域。旧的 Manager 被移除,旧的自托管引擎存储域被重命名,您可以在确认新环境正常工作后手动删除。强烈建议在新的主机上部署;如果在备份环境中存在用于部署的主机,它将从恢复的数据库中删除,以避免新环境中的冲突。如果部署到新主机上,则必须为主机分配唯一名称。重新利用备份中包含的现有主机的名称可能会导致新环境中的冲突。

恢复自托管引擎涉及以下关键操作:

此流程假设您无法访问原始管理器,并且新主机可以访问备份文件。

前提条件

  • 为 Manager 和主机准备的完全限定域名。正向和反向查找记录必须在 DNS 中设置。新管理器必须与原始 Manager 具有相同的完全限定域名。
3.2.1.9.1. 在新的自托管引擎中恢复备份

在新主机上运行 hosted-engine 脚本,并使用 --restore-from-file=path/to/file_name 选项在部署期间恢复 Manager 备份。

重要

如果您使用 iSCSI 存储,且您的 iSCSI 目标根据启动器的 ACL 过滤连接,则部署可能会失败,并显示 STORAGE_DOMAIN_UNREACHABLE 错误。要防止这种情况,您必须在开始自托管引擎部署前更新 iSCSI 配置:

  • 如果要在现有主机上重新部署,您必须更新 /etc/iscsi/initiatorname.iscsi 中的主机的 iSCSI 启动器设置。initiator IQN 必须与之前在 iSCSI 目标中映射的相同,或者更新至一个新的 IQN(如果适用)。
  • 如果要在全新的主机上部署,您必须更新 iSCSI 目标配置以接受来自该主机的连接。

请注意,IQN 可以在主机端(iSCSI 启动器)或存储侧(iSCSI 目标)上更新。

流程

  1. 将备份文件复制到新主机。在以下示例中,host.example.com 是主机的 FQDN,/backup/ 是任何指定的文件夹或路径。

    # scp -p file_name host.example.com:/backup/
  2. 登录新主机。
  3. 如果在 Red Hat Virtualization Host 上部署,则 ovirt-hosted-engine-setup 已安装,因此可以跳过这一步。如果要在 Red Hat Enterprise Linux 上部署,请安装 ovirt-hosted-engine-setup 软件包:

    # dnf install ovirt-hosted-engine-setup
  4. 使用 tmux 窗口管理器运行脚本,以避免在出现网络或终端中断时丢失会话。

    安装并运行 tmux

    # dnf -y install tmux
    # tmux
  5. 运行 hosted-engine 脚本,指定到备份文件的路径:

    # hosted-engine --deploy --restore-from-file=backup/file_name

    要随时转义脚本,请使用 CTRL+D 中止部署。

  6. 选择 Yes 以开始部署。
  7. 配置网络。脚本会检测可能的 NIC,以用作环境的管理网桥。
  8. 如果要使用自定义设备进行虚拟机安装,请输入 OVA 存档的路径。否则,将此字段留空,以使用 RHV-M Appliance。
  9. 输入 Manager 的 root 密码。
  10. 输入可让您以 root 用户身份登录 Manager 的 SSH 公钥,并指定是否为 root 用户启用 SSH 访问。
  11. 输入虚拟机的 CPU 和内存配置。
  12. 输入 Manager 虚拟机的 MAC 地址,或接受随机生成的地址。如果要通过 DHCP 为 Manager 虚拟机提供 IP 地址,请确保此 MAC 地址具有有效的 DHCP 保留。部署脚本将不会为您配置 DHCP 服务器。
  13. 输入虚拟机的网络详情。如果指定了 Static,请输入 Manager 的 IP 地址。

    重要

    静态 IP 地址必须属于与主机相同的子网。例如,如果主机在 10.1.1.0/24 中,则管理器虚拟机的 IP 必须位于同一子网范围 (10.1.1.1-254/24) 中。

  14. 指定是否将 Manager 虚拟机和基础主机的条目添加到虚拟机的 /etc/hosts 文件中。您必须确保主机名可以被解析。
  15. 提供 SMTP 服务器的名称和 TCP 端口号、用于发送电子邮件通知的电子邮件地址,以及用于接收这些通知的电子邮件地址列表:
  16. 输入 admin@internal 用户的密码来访问管理门户。

    该脚本将创建虚拟机。如果需要安装 RHV-M 设备,这可能需要一些时间。

    注意

    如果主机无法正常工作,因为缺少所需的网络或类似问题,部署会暂停并显示以下消息:

    [ INFO  ] You can now connect to https://<host name>:6900/ovirt-engine/ and check the status of this host and eventually remediate it, please continue only when the host is listed as 'up'
    [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : include_tasks]
    [ INFO  ] ok: [localhost]
    [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Create temporary lock file]
    [ INFO  ] changed: [localhost]
    [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Pause execution until /tmp/ansible.<random>_he_setup_lock is removed, delete it once ready to proceed]

    暂停进程允许您:

    • 使用提供的 URL 连接到管理门户。
    • 评估该情况,了解主机无法正常运行的原因,并进行修改。例如,如果此部署从备份中恢复,且主机集群包含的备份包含主机集群所需的网络,则配置网络,将相关主机 NIC 附加到这些网络。
    • 一旦一切正常,主机状态为 Up,删除上述消息中显示的锁定文件。部署将继续。
  17. 选择要使用的存储类型:

    • 对于 NFS,请输入版本、完整地址和到存储的路径以及所有挂载选项。

      警告

      不要为新存储域使用旧的自托管引擎存储域挂载点,因为您面临丢失虚拟机数据的风险。

    • 对于 iSCSI,请输入门户详情并从自动检测的列表中选择目标和 LUN。您只能在部署期间选择一个 iSCSI 目标,但支持多路径连接同一门户组的所有门户。

      注意

      要指定多个 iSCSI 目标,您必须先启用多路径,然后才能部署自托管引擎。详情请查看 Red Hat Enterprise Linux DM 多路径。另外,还有一个多路径帮助程序工具,它生成脚本来安装和配置使用不同选项的多路径。

    • 对于 Gluster 存储,请输入到存储的完整地址和路径,以及任何挂载选项。

      警告

      不要为新存储域使用旧的自托管引擎存储域挂载点,因为您面临丢失虚拟机数据的风险。

      重要

      仅支持副本 1 和副本 3 Gluster 存储。确保您按如下方式配置卷:

      gluster volume set VOLUME_NAME group virt
      gluster volume set VOLUME_NAME performance.strict-o-direct on
      gluster volume set VOLUME_NAME network.remote-dio off
      gluster volume set VOLUME_NAME storage.owner-uid 36
      gluster volume set VOLUME_NAME storage.owner-gid 36
      gluster volume set VOLUME_NAME network.ping-timeout 30
    • 对于光纤通道,从自动检测的列表中选择 LUN。必须配置并连接主机总线适配器,而且 LUN 不得包含任何现有数据。要重复使用现有 LUN,请参阅管理指南中的重新使用 LUN
  18. 输入 Manager 磁盘大小。

    该脚本会继续,直到部署完成。

  19. 部署过程会更改管理器的 SSH 密钥。要允许客户端机器在没有 SSH 错误的情况下访问新管理器,请在访问原始管理器的任何客户端机器上从 .ssh/known_hosts 文件中删除原始 Manager 条目。

部署完成后,登录新的 Manager 虚拟机并启用所需的存储库。

3.2.1.9.2. 启用 Red Hat Virtualization Manager 存储库

您需要使用 Red Hat Subscription Manager 登录并注册 Manager 机器,附加 Red Hat Virtualization Manager 订阅并启用 Manager 存储库。

流程

  1. 使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:

    # subscription-manager register
    注意

    如果您使用 IPv6 网络,请使用 IPv6 转换机制来访问 Content Delivery Network 和 subscription Manager。

  2. 查找 Red Hat Virtualization Manager 订阅池并记录池 ID:

    # subscription-manager list --available
  3. 使用池 ID 将订阅附加到系统:

    # subscription-manager attach --pool=pool_id
    注意

    查看当前附加的订阅:

    # subscription-manager list --consumed

    列出所有启用的软件仓库:

    # dnf repolist
  4. 配置存储库:

    # subscription-manager repos \
        --disable='*' \
        --enable=rhel-8-for-x86_64-baseos-eus-rpms \
        --enable=rhel-8-for-x86_64-appstream-eus-rpms \
        --enable=rhv-4.4-manager-for-rhel-8-x86_64-rpms \
        --enable=fast-datapath-for-rhel-8-x86_64-rpms \
        --enable=jb-eap-7.4-for-rhel-8-x86_64-rpms \
        --enable=openstack-16.2-cinderlib-for-rhel-8-x86_64-rpms \
        --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
  5. 将 RHEL 版本设置为 8.6:

    # subscription-manager release --set=8.6
  6. 启用 pki-deps 模块。

    # dnf module -y enable pki-deps
  7. 启用 postgresql 模块的版本 12。

    # dnf module -y enable postgresql:12
  8. 启用 nodejs 模块的版本 14:

    # dnf module -y enable nodejs:14
  9. 同步安装的软件包,将它们更新至最新可用版本。

    # dnf distro-sync --nobest

其它资源

有关模块和模块流的详情,请参考安装、管理和删除用户空间组件中的以下部分

现在,管理器及其资源在新的自托管环境中运行。自托管引擎节点必须在 Manager 中重新安装,以更新其自托管引擎配置。标准主机不会受到影响。为每个自托管引擎节点执行以下步骤。

3.2.1.9.3. 重新安装主机

从管理门户重新安装 Red Hat Virtualization 主机(RHVH)和 Red Hat Enterprise Linux 主机。该流程包括停止和重启主机。

警告

安装或重新安装主机的操作系统时,红帽强烈建议您先分离附加到主机的任何现有非 OS 存储,以避免意外初始化这些磁盘,从而避免意外初始化这些磁盘,并可能会丢失数据。

前提条件

  • 如果集群启用了迁移,虚拟机可以自动迁移到集群中的另一台主机。因此,在主机使用量相对较低时,重新安装主机。
  • 确保集群有足够的内存来执行维护。如果集群缺少内存,迁移虚拟机将挂起,然后失败。要减少内存用量,请在将主机移至维护之前关闭部分或所有虚拟机。
  • 在执行重新安装前,请确保集群包含多个主机。不要尝试同时重新安装所有主机。个主机必须保持可用才能执行存储池管理程序(SPM)任务。

流程

  1. 单击 ComputeHosts,再选择 主机。
  2. ManagementMaintenanceOK
  3. InstallationReinstall。这将打开 Install Host 窗口。
  4. 单击 Hosted Engine 选项卡,再从下拉菜单中选择 DEPLOY
  5. 单击确定以 重新安装主机。

重新安装主机并将其状态返回到 启动 后,您可以将虚拟机迁移到主机。

重要

将 Red Hat Virtualization Host 注册到 Red Hat Virtualization Manager 并重新安装它后,管理门户可能会错误地将其状态显示为 Install Failed。单击 ManagementActivate,主机将更改为 Up 状态并可供使用。

在重新安装自托管引擎节点后,您可以通过在其中一个节点上运行以下命令来检查新环境的状态:

# hosted-engine --vm-status

在恢复过程中,旧的自托管引擎存储域被重命名为,在恢复错误时不会从新环境中删除。确认环境正常运行后,您可以删除旧的自托管引擎存储域。

3.2.1.9.4. 删除存储域

在您的数据中心中有一个要从虚拟环境中删除的存储域。

流程

  1. StorageDomains
  2. 将存储域移到维护模式并分离它:

    1. 点存储域的名称。这会打开详情视图。
    2. Data Center 选项卡。
    3. 单击 Maintenance,然后单击 OK
    4. 单击 Detach然后单击确定
  3. 单击 Remove
  4. (可选)选择 格式化域,即存储内容将丢失! 复选框可清除域的内容。
  5. 点击 OK

存储域已从环境中永久移除。

3.2.1.10. 从现有的备份覆盖自托管引擎

如果自托管引擎可以访问,但遇到数据库崩溃等问题,或者难以回滚的配置错误,您可以使用在问题开始前的备份恢复到之前的状态。

恢复自托管引擎之前的状态涉及以下步骤:

有关 engine-backup --mode=restore 选项的更多信息,请参阅 备份和恢复管理器

3.2.1.10.1. 启用全局维护模式

您必须将自托管引擎环境置于全局维护模式,然后才能在 Manager 虚拟机上执行任何设置或升级任务。

流程

  1. 登录到自托管引擎节点并启用全局维护模式:

    # hosted-engine --set-maintenance --mode=global
  2. 在继续前确认环境处于全局维护模式:

    # hosted-engine --vm-status

    您应该会看到指示集群处于全局维护模式的消息。

3.2.1.10.2. 恢复备份以覆盖现有安装

engine-backup 命令可以将备份恢复到已安装并设置了 Red Hat Virtualization Manager 的机器。当您进行环境备份后,在该环境中执行更改,然后希望通过从备份中恢复环境来撤销更改,这将非常有用。

因为备份进行了备份,如添加或删除主机后对环境所做的更改将不会出现在恢复的环境中。您必须恢复这些更改。

流程

  1. 登录到 Manager 机器。
  2. 删除配置文件并清理与 Manager 关联的数据库:

    # engine-cleanup

    engine-cleanup 命令只清理 Manager 数据库;它不会丢弃数据库或删除拥有该数据库的用户。

  3. 恢复完整备份或仅数据库备份。您不需要创建新数据库或指定数据库凭据,因为用户和数据库已经存在。

    • 恢复完整备份:

      # engine-backup --mode=restore --file=file_name --log=log_file_name --restore-permissions
    • 通过恢复配置文件和数据库备份来恢复仅数据库备份:

      # engine-backup --mode=restore --scope=files --scope=db --scope=dwhdb --file=file_name --log=log_file_name --restore-permissions
      注意

      要只恢复 Manager 数据库(例如,如果 Data Warehouse 数据库位于另一台机器上),您可以省略 --scope=dwhdb 参数。

      如果成功,则会显示以下输出:

      You should now run engine-setup.
      Done.
  4. 重新配置管理器:

    # engine-setup
3.2.1.10.3. 禁用全局维护模式

流程

  1. 登录 Manager 虚拟机,并将它关闭。
  2. 登录到自托管引擎节点之一并禁用全局维护模式:

    # hosted-engine --set-maintenance --mode=none

    当您退出全局维护模式时,ovirt-ha-agent 会启动 Manager 虚拟机,然后 Manager 会自动启动。管理器最多可能需要十分钟才能启动。

  3. 确认环境正在运行:

    # hosted-engine --vm-status

    列出的信息包括引擎状态引擎状态的值应该是:

    {"health": "good", "vm": "up", "detail": "Up"}
    注意

    当虚拟机仍在引导且管理器尚未启动时,引擎状态为:

    {"reason": "bad vm status", "health": "bad", "vm": "up", "detail": "Powering up"}

    如果发生这种情况,请等待几分钟后重试。

当环境再次运行时,您可以启动任何停止的虚拟机,并检查环境中的资源是否如预期执行。

3.2.2. 将数据仓库迁移到 9 月的机器

本节论述了如何将数据仓库数据库和服务从 Red Hat Virtualization Manager 机器迁移到单独的机器。在单独的计算机上托管数据仓库服务可减少每台计算机的负载,并避免与其他进程共享 CPU 和内存资源导致的潜在冲突。

注意

红帽只支持安装数据仓库数据库、数据仓库服务和 Grafana,它们都与彼此相同,尽管您可以在独立的机器上分别安装这些组件。

您有以下迁移选项:

  • 您可以从管理器计算机迁移数据仓库服务,并将其与现有数据仓库数据库 (ovirt_engine_history) 连接。
  • 您可以从 Manager 机器迁移数据仓库数据库,然后迁移数据仓库服务。

3.2.2.1. 将数据仓库数据库迁移到独立机器

在迁移数据仓库服务之前,迁移数据仓库数据库 (ovirt_engine_history)。使用 engine-backup 创建数据库备份,并在新数据库计算机上恢复它。有关 engine-backup 的更多信息,请运行 engine-backup --help

注意

红帽只支持安装数据仓库数据库、数据仓库服务和 Grafana,它们都与彼此相同,尽管您可以在独立的机器上分别安装这些组件。

新数据库服务器必须安装了 Red Hat Enterprise Linux 8。

在新数据库服务器上启用所需的存储库。

3.2.2.1.1. 启用 Red Hat Virtualization Manager 存储库

您需要使用 Red Hat Subscription Manager 登录并注册数据仓库,附加 Red Hat Virtualization Manager 订阅并启用 Manager 存储库。

流程

  1. 使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:

    # subscription-manager register
    注意

    如果您使用 IPv6 网络,请使用 IPv6 转换机制来访问 Content Delivery Network 和 subscription Manager。

  2. 查找 Red Hat Virtualization Manager 订阅池并记录池 ID:

    # subscription-manager list --available
  3. 使用池 ID 将订阅附加到系统:

    # subscription-manager attach --pool=pool_id
    注意

    查看当前附加的订阅:

    # subscription-manager list --consumed

    列出所有启用的软件仓库:

    # dnf repolist
  4. 配置存储库:

    # subscription-manager repos \
        --disable='*' \
        --enable=rhel-8-for-x86_64-baseos-eus-rpms \
        --enable=rhel-8-for-x86_64-appstream-eus-rpms \
        --enable=rhv-4.4-manager-for-rhel-8-x86_64-rpms \
        --enable=fast-datapath-for-rhel-8-x86_64-rpms \
        --enable=jb-eap-7.4-for-rhel-8-x86_64-rpms \
        --enable=openstack-16.2-cinderlib-for-rhel-8-x86_64-rpms \
        --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
  5. 将 RHEL 版本设置为 8.6:

    # subscription-manager release --set=8.6
  6. 启用 postgresql 模块的版本 12。

    # dnf module -y enable postgresql:12
  7. 启用 nodejs 模块的版本 14:

    # dnf module -y enable nodejs:14
  8. 同步安装的软件包,将它们更新至最新可用版本。

    # dnf distro-sync --nobest

其它资源

有关模块和模块流的详情,请参考安装、管理和删除用户空间组件中的以下部分

3.2.2.1.2. 将数据仓库数据库迁移到独立机器

流程

  1. 在 Manager 中创建数据仓库数据库和配置文件的备份:

    # engine-backup --mode=backup --scope=grafanadb --scope=dwhdb --scope=files --file=file_name --log=log_file_name
  2. 将备份文件从 Manager 复制到新机器:

    # scp /tmp/file_name root@new.dwh.server.com:/tmp
  3. 在新机器上安装 engine-backup

    # dnf install ovirt-engine-tools-backup
  4. 安装 PostgreSQL 服务器软件包:

    # dnf install postgresql-server postgresql-contrib
  5. 初始化 PostgreSQL 数据库,启动 postgresql 服务,并确保该服务在引导时启动:

    # su - postgres -c 'initdb'
    # systemctl enable postgresql
    # systemctl start postgresql
  6. 在新计算机上恢复数据仓库数据库。file_name 是从 Manager 复制的备份文件。

    # engine-backup --mode=restore --scope=files --scope=grafanadb --scope=dwhdb --file=file_name --log=log_file_name --provision-dwh-db

    当在恢复 模式中使用 --provision 598 选项时,默认应用 --restore-permissions

数据仓库数据库现在托管在与管理器托管的独立计算机上。成功恢复数据仓库数据库后,提示您运行 engine-setup 命令。在运行此命令之前,请先迁移数据仓库服务。

3.2.2.2. 将数据仓库服务迁移到独立机器

您可以将 Red Hat Virtualization Manager 上安装并配置的数据仓库服务迁移到单独的机器。在单独的计算机上托管数据仓库服务有助于减少管理器计算机上的负载。

请注意,这个过程仅迁移数据仓库服务。

要在迁移数据仓库服务前迁移数据仓库数据库(ovirt_engine_history),请参阅 迁移数据仓库数据库到 9 月 9 日

注意

红帽只支持安装数据仓库数据库、数据仓库服务和 Grafana,它们都与彼此相同,尽管您可以在独立的机器上分别安装这些组件。

前提条件

  • 您必须在同一台机器上安装并配置了管理器和数据仓库。
  • 要设置新的数据仓库机器,您必须有以下内容:

    • Manager 的 /etc/ovirt-engine/engine.conf.d/10-setup-database.conf 文件中的密码。
    • 允许从数据仓库计算机访问 Manager 数据库计算机的 TCP 端口 5432.
    • 数据仓库数据库中的 /etc/ovirt-engine-dwh/ovirt-engine-dwh/ovirt-engine-dwhd.conf.d/10-setup-database.conf 文件中的用户名和密码。

      如果您使用将 Data Warehouse Database 中的步骤迁移到 9 月 9 月机器 中所述迁移了 ovirt_engine_history 数据库,则备份包括该机器上的数据库设置中定义的这些凭证。

安装此场景需要四个步骤:

  1. 设置新的数据仓库机器
  2. 在管理器机器上停止数据仓库服务
  3. 配置新的数据仓库
  4. 在 Manager 计算机上禁用数据仓库软件包
3.2.2.2.1. 设置新的数据仓库机器

启用 Red Hat Virtualization 软件仓库并在 Red Hat Enterprise Linux 8 机器上安装数据仓库设置软件包:

  1. 启用所需的软件仓库:

    1. 使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:

      # subscription-manager register
    2. 查找 Red Hat Virtualization Manager 订阅池并记录池 ID:

      # subscription-manager list --available
    3. 使用池 ID 将订阅附加到系统:

      # subscription-manager attach --pool=pool_id
    4. 配置存储库:

      # subscription-manager repos \
          --disable='*' \
          --enable=rhel-8-for-x86_64-baseos-eus-rpms \
          --enable=rhel-8-for-x86_64-appstream-eus-rpms \
          --enable=rhv-4.4-manager-for-rhel-8-x86_64-rpms \
          --enable=fast-datapath-for-rhel-8-x86_64-rpms \
          --enable=jb-eap-7.4-for-rhel-8-x86_64-rpms
      
      # subscription-manager release --set=8.6
  2. 启用 pki-deps 模块。

    # dnf module -y enable pki-deps
  3. 确保当前安装的所有软件包都为最新版本:

    # dnf upgrade --nobest
  4. 安装 ovirt-engine-dwh-setup 软件包:

    # dnf install ovirt-engine-dwh-setup
3.2.2.2.2. 在 Manager 机器上停止数据仓库服务

流程

  1. 停止数据仓库服务:

    # systemctl stop ovirt-engine-dwhd.service
  2. 如果数据库托管在远程计算机上,您必须通过编辑 postgres.conf 文件来手动授予访问权限。编辑 /var/lib/pgsql/data/postgresql.conf 文件并修改 listen_addresses 行,使其与以下内容匹配:

    listen_addresses = '*'

    如果该行不存在或已被注释掉,请手动添加。

    如果数据库托管在 Manager 机器上,且是在 Red Hat Virtualization Manager 完全设置过程中配置的,则默认授予访问权限。

  3. 重启 postgresql 服务:

    # systemctl restart postgresql
3.2.2.2.3. 配置新的数据仓库(Data Warehouse 机器)

本节中显示的选项或设置顺序可能因您的环境而异。

  1. 如果您要同时将 ovirt_engine_history 数据库和数据仓库服务迁移到同一个计算机上,请运行以下命令,否则继续下一步。

    # sed -i '/^ENGINE_DB_/d' \
            /etc/ovirt-engine-dwh/ovirt-engine-dwhd.conf.d/10-setup-database.conf
    
    # sed -i \
         -e 's;^\(OVESETUP_ENGINE_CORE/enable=bool\):True;\1:False;' \
         -e '/^OVESETUP_CONFIG\/fqdn/d' \
         /etc/ovirt-engine-setup.conf.d/20-setup-ovirt-post.conf
  2. 删除 apache/grafana PKI 文件,以便 engine-setup 使用正确值重新生成这些文件:

    # rm -f \
      /etc/pki/ovirt-engine/certs/apache.cer \
      /etc/pki/ovirt-engine/certs/apache-grafana.cer \
      /etc/pki/ovirt-engine/keys/apache.key.nopass \
      /etc/pki/ovirt-engine/keys/apache-grafana.key.nopass \
      /etc/pki/ovirt-engine/apache-ca.pem \
      /etc/pki/ovirt-engine/apache-grafana-ca.pem
  3. 运行 engine-setup 命令,开始在机器上配置数据仓库:

    # engine-setup
  4. Enter 接受自动检测到的主机名,或者输入替代主机名并按 Enter

    Host fully qualified DNS name of this server [autodetected host name]:
  5. Enter 键自动配置防火墙,或者键入 No 并按 Enter 来维护现有设置:

    Setup can automatically configure the firewall on this system.
    Note: automatic configuration of the firewall may overwrite current settings.
    Do you want Setup to configure the firewall? (Yes, No) [Yes]:

    如果您选择自动配置防火墙,且没有防火墙管理器处于活动状态,系统会提示您从支持的选项列表中选择您所选的防火墙管理器。输入防火墙管理器的名称,然后按 Enter。即使只列出了一个选项,也是如此。

  6. 为 Manager 输入完全限定域名和密码。按 Enter 键接受其他字段中的默认值:

    Host fully qualified DNS name of the engine server []: engine-fqdn
    Setup needs to do some actions on the remote engine server. Either automatically, using ssh as root to access it, or you will be prompted to manually perform each such action.
    Please choose one of the following:
    1 - Access remote engine server using ssh as root
    2 - Perform each action manually, use files to copy content around
    (1, 2) [1]:
    ssh port on remote engine server [22]:
    root password on remote engine server engine-fqdn: password
  7. 输入 Manager 数据库计算机的 FQDN 和密码。按 Enter 键接受其他字段中的默认值:

    Engine database host []: manager-db-fqdn
    Engine database port [5432]:
    Engine database secured connection (Yes, No) [No]:
    Engine database name [engine]:
    Engine database user [engine]:
    Engine database password: password
  8. 确认安装设置:

    Please confirm installation settings (OK, Cancel) [OK]:

数据仓库服务现在在远程计算机上配置。继续在管理器计算机上禁用数据仓库服务。

3.2.2.2.4. 在 Manager 机器上禁用数据仓库服务

前提条件

  • Manager 机器上的 Grafana 服务被禁用:

    # systemctl disable --now grafana-server.service

流程

  1. 在 Manager 机器中重启 Manager:

    # service ovirt-engine restart
  2. 运行以下命令修改文件 /etc/ovirt-engine-setup.conf.d/20-setup-ovirt-post.conf,并将选项设置为 False:

    # sed -i \
         -e 's;^\(OVESETUP_DWH_CORE/enable=bool\):True;\1:False;' \
         -e 's;^\(OVESETUP_DWH_CONFIG/remoteEngineConfigured=bool\):True;\1:False;' \
         /etc/ovirt-engine-setup.conf.d/20-setup-ovirt-post.conf
    
    # sed -i \
         -e 's;^\(OVESETUP_GRAFANA_CORE/enable=bool\):True;\1:False;' \
         /etc/ovirt-engine-setup.conf.d/20-setup-ovirt-post.conf
  3. 禁用数据仓库服务:

    # systemctl disable ovirt-engine-dwhd.service
  4. 删除数据仓库文件:

    # rm -f /etc/ovirt-engine-dwh/ovirt-engine-dwhd.conf.d/*.conf /var/lib/ovirt-engine-dwh/backups/*

数据仓库服务现在托管在管理器之外的独立机器上。

3.2.3. 使用备份存储域备份和恢复虚拟机

3.2.3.1. 备份存储域解释

备份存储域是一个可用来存储和迁移虚拟机和虚拟机模板,用于备份和恢复用于灾难恢复、迁移或任何其他备份/恢复模式。备份域不同于非备份域,使备份域上的所有虚拟机都处于关机状态。虚拟机不能在备份域中运行。

您可以将任何数据存储域设置为备份域。您可以选择或在 Manage Domain 对话框中选择或取消选择复选框来禁用此设置。您只能在该存储域上的所有虚拟机停止后启用此设置。

您无法启动存储在备份域中的虚拟机。Manager 会阻止这个操作以及可能会使备份造成任何其他操作。但是,如果虚拟机磁盘不属于备份域,您可以基于存储在备份域上的模板运行虚拟机。

与其他类型的存储域一样,您可以将备份域附加到数据中心或从数据中心进行分离。因此,除了存储备份外,您还可以使用备份域在数据中心之间迁移虚拟机。

优点

下面列出了一些使用备份域而不是导出域的原因:

  • 您可以在数据中心中有多个备份存储域,而不是只有一个导出域。
  • 您可以指定一个备份存储域,以用于备份和灾难恢复。
  • 您可以将虚拟机、模板或快照的备份传输到备份存储域
  • 迁移大量虚拟机、模板或 OVF 文件比导出域要快得多。
  • 备份域使用磁盘空间比导出域更有效。
  • 备份域支持文件存储(NFS、Gluster)和块存储(光纤通道和 iSCSI)。这与导出域不同,它只支持文件存储。
  • 您可以动态启用和禁用存储域的备份设置,考虑限制。

限制

  • _backup 域中的任何虚拟机或模板都必须在同一域中拥有其所有磁盘。
  • 必须先关闭存储域上的所有虚拟机,然后才能将它设置为备份域。
  • 您无法运行存储在备份域中的虚拟机,因为这样做可能会操控磁盘的数据。
  • 备份域不能是内存卷的目标,因为内存卷只支持活跃虚拟机。
  • 您不能在备份域中预览虚拟机。
  • 无法将虚拟机实时迁移到备份域。
  • 您不能将备份域设置为 主域
  • 您不能将自托管引擎的域设置为备份域。
  • 不要使用默认存储域作为备份域。

3.2.3.2. 将数据存储域设置为备份域

前提条件

  • 属于存储域上虚拟机或模板的所有磁盘都必须位于同一域中。
  • 域上的所有虚拟机都必须关机。

流程

  1. 在管理门户中,选择 StorageDomains
  2. 创建新的存储域或选择现有存储域,然后单击 管理域。此时会打开 Manage Domains 对话框。
  3. 高级参数下,选中备份复选框。

现在,域是备份域。

3.2.3.3. 使用备份域备份或恢复虚拟机或快照

您可以备份已关闭的虚拟机或快照。然后,您可以将备份保存到同一数据中心,并根据需要恢复备份,或者将其迁移到另一个数据中心。

步骤:备份虚拟机

  1. 创建备份域。请参阅 将存储域设置为备份域备份域
  2. 根据您要备份的虚拟机创建新虚拟机:

    • 要备份快照,首先从快照创建虚拟机。请参阅虚拟机管理指南中的从快照创建虚拟机
    • 要备份虚拟机,请先克隆虚拟机。请参阅虚拟机管理指南中的克隆虚拟机。在继续操作前,请确保克隆已关闭。
  3. 将新虚拟机导出到备份域。请参阅虚拟机管理指南中的将虚拟机导出到数据域

步骤:恢复虚拟机

  1. 确保存储虚拟机备份的备份存储域已附加到数据中心。
  2. 从备份域导入虚拟机。请参阅从数据域中导入虚拟机

3.2.4. 使用备份和恢复 API 备份和恢复虚拟机

3.2.4.1. 备份和恢复 API

备份和恢复 API 是功能的集合,允许您执行完整或文件级备份和恢复虚拟机。API 结合了 Red Hat Virtualization 的多个组件,如实时快照和 REST API,用于创建和操作临时卷,这些卷可以连接到包含独立软件供应商提供的备份软件的虚拟机。

有关支持的第三方备份供应商,请参阅 Red Hat Virtualization 生态系统

3.2.4.2. 备份虚拟机

使用备份和恢复 API 来备份虚拟机。此流程假设您有两个虚拟机:要备份的虚拟机,以及在其中安装管理备份的软件的虚拟机。

流程

  1. 使用 REST API,创建要备份的虚拟机的快照:

    POST /api/vms/{vm:id}/snapshots/ HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
    
    <snapshot>
        <description>BACKUP</description>
    </snapshot>
    注意
    • 在这里,将 {vm:id} 替换为您要生成快照的虚拟机 ID。这个 ID 位于 Administration PortalVM PortalNew Virtual MachineEdit Virtual Machine 窗口的 General 选项卡中。
    • 对虚拟机执行快照将其当前配置数据存储在快照下 初始化 中的 配置属性data 属性中。
    重要

    您不能对标记为共享的磁盘或基于直接 LUN 磁盘执行快照。

  2. 从快照下的 data 属性中检索虚拟机的配置数据:

    GET /api/vms/{vm:id}/snapshots/{snapshot:id} HTTP/1.1
    All-Content: true
    Accept: application/xml
    Content-type: application/xml
    注意
    • 此处,将 {vm:id} 替换为之前生成快照的虚拟机 ID。将 {snapshot:id} 替换为快照 ID。
    • 添加 All-Content: true 标头以在响应中检索额外的 OVF 数据。XML 响应中的 OVF 数据位于 VM 配置元素中 < initialization><configuration> 中。之后,您将使用这些数据来恢复虚拟机。
  3. 获取快照 ID:

    GET /api/vms/{vm:id}/snapshots/ HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
  4. 确定快照的磁盘 ID:

    GET /api/vms/{vm:id}/snapshots/{snapshot:id}/disks HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
  5. 将快照作为活跃磁盘附加附加将快照附加到备份虚拟机,并具有正确的接口类型(例如,virtio_scsi):

    POST /api/vms/{vm:id}/diskattachments/ HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
    
    <disk_attachment>
    	<active>true</active>
    	<interface>_virtio_scsi_</interface>
    	<disk id="{disk:id}">
    	<snapshot id="{snapshot:id}"/>
    	</disk>
    </disk_attachment>
    注意

    在这里,将 {vm:id} 替换为 备份 虚拟机的 ID,而不是您之前生成快照的虚拟机。将 {disk:id} 替换为磁盘 ID。将 {snapshot:id} 替换为快照 ID。

  6. 使用备份虚拟机上的备份软件备份快照磁盘上的数据。
  7. 从备份虚拟机中删除快照磁盘附件:

    DELETE /api/vms/{vm:id}/diskattachments/{snapshot:id} HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
    注意

    在这里,将 {vm:id} 替换为 备份 虚拟机的 ID,而不是您之前生成快照的虚拟机。将 {snapshot:id} 替换为快照 ID。

  8. 另外,还可删除快照:

    DELETE /api/vms/{vm:id}/snapshots/{snapshot:id} HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
    注意

    此处,将 {vm:id} 替换为之前生成快照的虚拟机 ID。将 {snapshot:id} 替换为快照 ID。

您已在使用在单独虚拟机上安装的备份软件,在固定时间点备份虚拟机状态。

3.2.4.3. 恢复虚拟机

恢复使用备份和恢复 API 备份的虚拟机。此流程假设您已安装了备份虚拟机,用来管理之前备份的软件。

流程

  1. 在管理门户中,创建一个浮动磁盘来恢复备份。有关如何创建 浮动磁盘 的详情,请参阅创建虚拟磁盘。
  2. 将磁盘附加到备份虚拟机:

    POST /api/vms/{vm:id}/disks/ HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
    
    <disk id="{disk:id}">
    </disk>
    注意

    此处,将 {vm:id} 替换为此 backup 虚拟机的 ID,而不是您之前创建的快照的虚拟机。将 {disk:id} 替换为备份虚拟机时所使用的磁盘 ID。

  3. 使用备份软件将备份恢复到磁盘。
  4. 从备份虚拟机中分离磁盘:

    DELETE /api/vms/{vm:id}/disks/{disk:id} HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
    
    <action>
        <detach>true</detach>
    </action>
    注意

    此处,将 {vm:id} 替换为此 backup 虚拟机的 ID,而不是您之前创建的快照的虚拟机。将 {disk:id} 替换为磁盘 ID。

  5. 使用正在恢复的虚拟机的配置数据创建新虚拟机:

    POST /api/vms/ HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
    
    <vm>
        <cluster>
            <name>cluster_name</name>
        </cluster>
        <name>_NAME_</name>
          <initialization>
          <configuration>
      <data>
      <!-- omitting long ovf data -->
      </data>
          <type>ovf</type>
          </configuration>
          </initialization>
        ...
    </vm>
    注意

    要在创建虚拟机时覆盖 ovf 中的任何值,请在 initialization 元素 之前之后重新定义该元素。不在初始化元素内。

  6. 将磁盘附加到虚拟机:

    POST /api/vms/{vm:id}/disks/ HTTP/1.1
    Accept: application/xml
    Content-type: application/xml
    
    <disk id="{disk:id}">
    </disk>
    注意

    此处,将 {vm:id} 替换为新虚拟机的 ID,而不是您之前创建的快照的虚拟机。将 {disk:id} 替换为磁盘 ID。

您已使用使用备份和恢复 API 创建的备份恢复虚拟机。

3.2.5. 使用增加备份和恢复 API 备份和恢复虚拟机

3.2.5.1. 增量备份和恢复 API

Red Hat Virtualization 提供了一个增量备份 API,可用于完整备份 QCOW2 或 RAW 虚拟磁盘,或者 QCOW 2 虚拟磁盘的增量备份,而无需任何临时快照。数据以 RAW 格式备份,无论正在备份的虚拟磁盘是 QCOW2 或 RAW。您可以恢复 RAW 客户机数据以及 RAW 或 QCOW2 磁盘。增量备份 API 是 RHV REST API 的一部分。您可以备份正在运行或非运行的虚拟机。

作为开发人员,您可以使用 API 来开发备份应用程序。

功能

备份比使用备份和恢复 API 更简单、更强大。Incremental Backup API 改进了与备份应用程序集成,并提供新的支持来备份和恢复 RAW 客户机数据,而不考虑底层磁盘格式。

如果无效的位图导致备份失败,您可以在备份链中删除特定的检查点。您不需要运行完整备份。

限制:

  • 只有 QCOW2 格式的磁盘才可以递增,而不是 RAW 格式磁盘。备份过程以 RAW 格式保存备份的数据。
  • 只有以 RAW 格式备份的数据才能恢复。
  • 增量恢复不支持在备份时存在快照恢复,而增量恢复只恢复数据,而不是在备份时存在卷或镜像的结构。这个限制对于其他系统的备份解决方案很常见。
  • 与备份解决方案通常一样,增量恢复只恢复快照中的数据,而不是在备份时存在时卷或镜像的结构。
  • 一个未彻底的关闭(无论原因)可能会对磁盘上的位映射无效,这会导致整个备份链无效。使用无效的位映射恢复增量备份会导致虚拟机数据被破坏。

    除了启动备份外,无法检测无效的位映射。如果磁盘包含无效的位映射,则操作会失败。

下表描述了支持增量备份的磁盘配置。

注意

使用管理门户创建磁盘时,您将设置存储类型、置备类型,以及增量备份是启用还是禁用。根据这些设置,Manager 会决定虚拟磁盘格式。

表 3.1. 增量备份支持的磁盘配置

存储类型置备类型当增量备份为…​虚拟磁盘格式是…​

block

thin

enabled

qcow2

block

预分配

enabled

qcow2 (preallocated)

file

thin

enabled

qcow2

file

预分配

enabled

qcow2 (preallocated)

block

thin

disabled

qcow2

block

预分配

disabled

raw (preallocated)

file

thin

disabled

原始(稀疏)

file

预分配

disabled

raw (preallocated)

network

Not applicable

disabled

raw

LUN

Not applicable

disabled

raw

3.2.5.1.1. 增量备份流

使用 Incremental Backup API 的备份应用程序必须遵循此序列备份已启用的虚拟机磁盘进行增量备份:

  1. 备份应用使用 REST API 查找应包含在备份中的虚拟机磁盘。只包括 QCOW2 格式的磁盘。
  2. 备份应用启动完整备份增量备份。API 调用指定虚拟机 ID、可选先前检查点 ID 以及要备份的磁盘列表。如果 API 调用没有指定之前的检查点 ID,则完整备份将开始,其中包含指定磁盘中的所有数据(基于每个磁盘的当前状态)。
  3. 该引擎会准备要备份的虚拟机。虚拟机可以在备份过程中继续运行。
  4. 备份应用程序轮询备份状态引擎,直到引擎报告备份已准备好开始。
  5. 当备份准备好开始时,备份应用程序 会为备份中包含的每个磁盘创建一个镜像传输对象
  6. 备份应用程序 ovirt-imageio 获取更改的块列表,用于每个镜像传输。如果更改列表不可用,备份应用程序会出错。
  7. 备份应用程序 ovirt-imageio 下载经过 RAW 格式的块,并将它们存储在备份介质中。如果更改的块列表不可用,备份应用程序可能会回退来复制整个磁盘。
  8. 备份应用程序完成所有镜像传输。
  9. 备份 应用程序使用 REST API 完成备份
3.2.5.1.2. 增量恢复流

使用 Incremental Backup API 的备份应用程序必须遵循此序列来恢复已备份的虚拟机磁盘:

  1. 用户使用备份应用程序根据可用备份选择恢复点。
  2. 备份应用程序会创建一个新磁盘,或使用现有磁盘保存恢复的数据的快照。
  3. 备份应用程序 为每个磁盘 启动上传镜像传输其格式为 原始。这会在将 RAW 数据上传到 QCOW2 磁盘时启用格式转换。
  4. 备份应用程序使用 API 将此恢复中包含的数据传输到 imageio
  5. 备份应用程序完成镜像传输。
3.2.5.1.3. 增量备份和恢复 API 任务

Red Hat Virtualization REST API 指南中记录了 Incremental Backup and Restore API。备份和恢复流程需要以下操作:

3.2.5.1.4. 在新虚拟磁盘中启用增量备份

为虚拟磁盘启用增量备份,将其标记为增量备份中。添加磁盘时,您可以使用 REST API 或管理门户为每个磁盘启用增量备份。您可以使用完整备份备份备份或者与之前相同的方式,备份未启用的现有磁盘。

注意

Manager 不需要启用磁盘,使其包含在增量备份中,但您可以启用它来跟踪启用了哪些磁盘。

由于增量备份需要采用 QCOW2 格式化磁盘,因此请使用 QCOW2 格式,而非 RAW 格式。

流程

  1. 添加新的虚拟磁盘。如需更多信息 ,请参阅创建虚拟磁盘
  2. 在配置磁盘时,选中 Enable Incremental Backup 复选框。
3.2.5.1.5. 在现有 RAW 虚拟磁盘中启用增量备份

因为采用 RAW 格式的磁盘不支持增量备份,所以任何 RAW 格式磁盘之上的 QCOW2 格式层必须存在,才能使用增量备份。创建快照会从创建快照的时间点,生成 QCOW2 层,并在快照中包含的所有磁盘上实现增量备份。

警告

如果磁盘的基本层使用 RAW 格式,请删除最后一个快照,并将顶级 QCOW2 层合并到基础层,将磁盘转换为 RAW 格式,从而在设置了增量备份时禁用增量备份。要重新启用增量备份,您可以创建一个新快照,包括这个磁盘。

流程

  1. 在管理门户中,点 ComputeVirtual Machines
  2. 选择虚拟机并点击 Disks 选项卡。
  3. 单击 编辑 按钮。这会打开 Edit Disk 对话框。
  4. 选中" 启用增量备份 "复选框。
3.2.5.1.6. 启用增量备份

您可以使用 REST API 请求为虚拟机的磁盘启用增量备份。

流程

  • 为新磁盘启用增量备份。例如,对于 ID 为 123 的虚拟机上的新磁盘,请发送此请求:

    POST /ovirt-engine/api/vms/123/diskattachments

    请求正文应包含 backup 设置为 incremental,作为 磁盘 对象的一部分,如下所示:

    <disk_attachment>
        …​
        <disk>
           …​
           <backup>incremental</backup>
           …​
        </disk>
    </disk_attachment>

响应是:

<disk_attachment>
    …​
    <disk href="/ovirt-engine/api/disks/456" id="456"/>
    …​
</disk_attachment>

其他资源

3.2.5.1.7. 查找为增量备份启用的磁盘

对于指定的虚拟机,您可以列出为增量备份启用的磁盘,并根据备份属性过滤。

流程

  1. 列出附加到虚拟机的磁盘。例如,对于 ID 为 123 的虚拟机,请发送此请求:

    GET /ovirt-engine/api/vms/123/diskattachments

    响应包含所有 disk_attachment 对象,每个对象包括一个或多个磁盘对象。例如:

    <disk_attachments>
        <disk_attachment>
           …​
           <disk href="/ovirt-engine/api/disks/456" id="456"/>
           …​
        </disk_attachment>
        …​
    </disk_attachments>
  2. 使用 disk 服务查看上一步中的磁盘属性。例如,对于 ID 为 456 的磁盘,请发送此请求:

    GET /ovirt-engine/api/disks/456

    响应包括磁盘的所有属性。备份 被设置为 noneincremental。例如:

    <disk href="/ovirt-engine/api/disks/456" id="456">
        …​
        <backup>incremental</backup>
        …​
    </disk>
3.2.5.1.8. 启动完整备份

在进行完整备份后,您可以使用生成的检查点 ID 作为下一个增量备份中的起点。

在对正在运行的虚拟机进行备份时,该过程会在与正在备份的磁盘相同的存储域中创建全新磁盘。备份过程会创建此磁盘,使新数据在备份期间写入到正在运行的虚拟机中。您可以在备份过程中在管理门户中看到这一全新磁盘。在备份完成后,它将自动删除。

启动完整备份需要请求调用正文,并包含响应。

流程

  1. 发送指定虚拟机的请求进行备份。例如,指定 ID 为 123 的虚拟机,如下所示:

    POST /ovirt-engine/api/vms/123/backups
  2. 在请求正文中,指定要备份的磁盘。例如,要启动 ID 为 456 的磁盘的完整备份,请发送以下请求正文:

    <backup>
        <disks>
           <disk id="456" />
           …​
        </disks>
    </backup>

    响应正文应类似于如下:

    <backup id="789">
        <disks>
           <disk id="456" />
           …​
           …​
        </disks>
        <status>initializing</status>
        <creation_date>
    </backup>

    响应包括以下内容:

    • 备份 ID
    • 备份的状态,表示备份正在初始化。
  3. 轮询备份,直到状态 就绪。响应包括 to_checkpoint_id。请注意此 ID,并在下一次增量备份中使用它进行 from_checkpoint_id

其他资源

3.2.5.1.9. 启动增量备份

完成给定虚拟磁盘的完整备份后,磁盘后续增量备份仅包含自上次备份之后的更改。使用最新备份中的 to_checkpoint_id 值作为请求正文中 from_checkpoint_id 的值。

在对正在运行的虚拟机进行备份时,该过程会在与正在备份的磁盘相同的存储域中创建全新磁盘。备份过程会创建此磁盘,使新数据在备份期间写入到正在运行的虚拟机中。您可以在备份过程中在管理门户中看到这一全新磁盘。在备份完成后,它将自动删除。

启动增量备份或混合备份需要使用正文进行请求调用,并包含响应。

流程

  1. 发送指定虚拟机的请求进行备份。例如,指定 ID 为 123 的虚拟机,如下所示:

    POST /ovirt-engine/api/vms/123/backups
  2. 在请求正文中,指定要备份的磁盘。例如,要启动 ID 为 456 的磁盘的增量备份,请发送以下请求正文:

    <backup>
        <from_checkpoint_id>previous-checkpoint-uuid</from_checkpoint_id>
        <disks>
           <disk id="456" />
           …​
        </disks>
    </backup>
    注意

    在请求正文中,如果您包含之前检查点中不包含的磁盘,则请求也会运行此磁盘的完整备份。例如,ID 为 789 的磁盘还没有备份。要在上述请求正文中添加 789 的完整备份,请发送请求正文,如下所示:

    <backup>
        <from_checkpoint_id>previous-checkpoint-uuid</from_checkpoint_id>
        <disks>
           <disk id="456" />
           <disk id="789" />
           …​
        </disks>
    </backup>

    响应正文应类似于如下:

    <backup id="101112">
    <from_checkpoint_id>previous-checkpoint-uuid</from_checkpoint_id>
    <to_checkpoint_id>new-checkpoint-uuid</to_checkpoint_id>
        <disks>
           <disk id="456" />
           <disk id="789" />
           …​
           …​
        </disks>
        <status>initializing</status>
        <creation_date>
    </backup>

    响应包括以下内容:

    • 备份 ID。
    • 备份中包含的任何磁盘的 ID。
    • 表示备份正在初始化的状态。
  3. 轮询备份,直到状态 就绪。响应包括 to_checkpoint_id。请注意此 ID,并在下一次增量备份中使用它进行 from_checkpoint_id

其他资源

3.2.5.1.10. 获取有关备份的信息

您可以获取有关可用于启动新增量备份的备份的信息。

VmBackups 服务 的列表 方法返回以下有关备份的信息:

  • 备份的每个磁盘的 ID。
  • 备份的开头和端点的 ID。
  • 备份磁盘镜像的 ID,用于备份中包含的每个磁盘。
  • 备份的状态。
  • 创建备份的日期。

当 <status> 的值 就绪时,响应包括 <to_checkpoint_id>,它应用作下一个增量备份中的 <from_checkpoint_id>,您可以开始下载磁盘来备份虚拟机存储。

流程

  • 要获取一个带有 ID 为 123 的虚拟机的 ID 为 456 的备份的信息,请发送如下请求:

    GET /ovirt-engine/api/vms/456/backups/123

    响应包括 ID 为 456 的备份,<from_checkpoint_id> 999 和 <to_checkpoint_id> 666。备份中包含的磁盘在 <link> 元素中引用。

    <backup id="456">
        <from_checkpoint_id>999</from_checkpoint_id>
        <to_checkpoint_id>666</to_checkpoint_id>
        <link href="/ovirt-engine/api/vms/456/backups/123/disks" rel="disks"/>
        <status>ready</status>
        <creation_date>
    </backup>
3.2.5.1.11. 在备份中获取有关磁盘的信息

您可以获取有关作为备份一部分的磁盘的信息,包括备份中每个磁盘的备份模式,这有助于确定用于下载备份的模式。

VmBackupDisks 服务 列表 方法返回以下有关备份的信息:

  • 备份的每个磁盘的 ID 和名称。
  • 备份磁盘镜像的 ID,用于备份中包含的每个磁盘。
  • 磁盘格式。
  • 磁盘支持的备份行为。
  • 对磁盘进行的备份类型(完整/递增)。

流程

  • 要获取一个带有 ID 为 123 的虚拟机的 ID 为 456 的备份的信息,请发送如下请求:

    GET /ovirt-engine/api/vms/456/backups/123/disks

    响应包括 ID 为 789 的磁盘,磁盘镜像的 ID 为 555。

    <disks>
        <disk id="789">
            <name>vm1_Disk1</name>
            <actual_size>671744</actual_size>
            <backup>incremental</backup>
            <backup_mode>full</backup_mode>
            <format>cow</format>
            <image_id>555</image_id>
            <qcow_version>qcow2_v3</qcow_version>
            <status>locked</status>
            <storage_type>image</storage_type>
            <total_size>0</total_size>
        </disk>
    </disks>
3.2.5.1.12. 备份最终大小

备份最终结束备份,解锁资源,并执行清理。使用 完成的 备份服务方法

流程

  • 要在 ID 为 123 的虚拟机上完成 ID 为 456 的磁盘备份,请发送请求,如下所示:

    POST /vms/123/backups/456/finalize

其他资源

3.2.5.1.13. 为增量备份创建镜像传输对象

当备份准备好下载时,备份应用应 创建镜像transfer 对象,该对象为增量备份启动传输。

创建镜像转让对象需要带有正文的请求调用。

流程

  1. 发送请求,如下所示:

    POST /ovirt-engine/api/imagetransfers
  2. 在请求正文中,指定以下参数:

    • 磁盘 ID。
    • 备份 ID。
    • 磁盘的方向设置为 download
    • 磁盘设置为 raw 的格式。

    例如,要传输磁盘 ID 为 123 且备份 ID 为 456 的磁盘的备份,请发送以下请求正文:

    <image_transfer>
        <disk id="123"/>
        <backup id="456"/>
        <direction>download</direction>
        <format>raw</format>
    </image_transfer>

其他资源

3.2.5.1.14. 创建用于增量恢复的镜像传输对象

要启用使用增量备份 API 备份的原始数据到 QCOW2 格式磁盘,备份应用程序应 创建镜像transfer 对象。

当传输格式为 raw 且底层磁盘格式是 QCOW2 时,在写入存储时,上传的数据会在 fly to QCOW2 格式中转换。不支持将数据从 QCOW2 磁盘上传到 RAW 磁盘。

创建镜像转让对象需要带有正文的请求调用。

流程

  1. 发送请求,如下所示:

    POST /ovirt-engine/api/imagetransfers
  2. 在请求正文中,指定以下参数:

    • 磁盘 ID 或快照 ID。
    • 磁盘集的方向,以上传
    • 磁盘设置为 raw 的格式。

    例如,要传输磁盘 ID 为 123 的磁盘备份,请发送以下请求正文:

    <image_transfer>
        <disk id="123"/>
        <direction>upload</direction>
        <format>raw</format>
    </image_transfer>

其他资源

3.2.5.1.15. 列出虚拟机的检查点

您可以通过发送请求调用来列出虚拟机的所有检查点,包括每个检查点的信息。

流程

  • 发送指定虚拟机的请求。例如,指定 ID 为 123 的虚拟机,如下所示:

    GET /vms/123/checkpoints/

响应包括所有虚拟机的检查点。每个检查点包含以下信息:

  • 检查点的磁盘。
  • 父检查点的 ID。
  • 检查点的创建日期。
  • 所属的虚拟机。

例如:

<parent_id>, <creation_date> and the virtual machine it belongs to <vm>:
<checkpoints>
    <checkpoint id="456">
         <link href="/ovirt-engine/api/vms/vm-uuid/checkpoints/456/disks" rel="disks"/>
         <parent_id>parent-checkpoint-uuid</parent_id>
         <creation_date>xxx</creation_date>
         <vm href="/ovirt-engine/api/vms/123" id="123"/>
    </checkpoint>
</checkpoints>

其他资源

3.2.5.1.16. 列出虚拟机的特定检查点

您可以通过发送请求调用来列出虚拟机的特定检查点的信息。

流程

  • 发送指定虚拟机的请求。例如,指定 ID 为 123 的虚拟机,以及检查点 ID 456,如下所示:

    GET /vms/123/checkpoints/456

响应包括检查点的以下信息:

  • 检查点的磁盘。
  • 父检查点的 ID。
  • 检查点的创建日期。
  • 所属的虚拟机。

例如:

<checkpoint id="456">
     <link href="/ovirt-engine/api/vms/vm-uuid/checkpoints/456/disks" rel="disks"/>
     <parent_id>parent-checkpoint-uuid</parent_id>
     <creation_date>xxx</creation_date>
     <vm href="/ovirt-engine/api/vms/123" id="123"/>
</checkpoint>

其他资源

3.2.5.1.17. 删除检查点

您可以通过发送 DELETE 请求来删除虚拟机的检查点。您可以删除虚拟机上的检查点,不论它是否正在运行。

流程

  • 发送指定虚拟机和检查点的请求。例如,指定 ID 为 123 的虚拟机,以及 ID 为 456 的检查点,如下所示:

    DELETE /vms/123/checkpoints/456/
3.2.5.1.18. 使用 imageio API 来传输备份数据

镜像传输 API 会启动和停止镜像转让。结果是一个转让 URL。

您可以使用 imageio API 实际传输来自转让 URL 的数据。

有关使用 imageio API 的完整信息,请参阅 ovirt-imageio Images API 引用

表 3.2. 增量备份和恢复中使用的 imageio Image API 方法

API 请求DescriptionImageio Image API 参考部分

OPTIONS /images/{ticket-id} HTTP/1.1

获取服务器选项,找出服务器支持的功能。

请参阅 OPTIONS

GET /images/{ticket-id}/extents

获取磁盘镜像内容和分配的信息,或者有关增量备份期间更改的块的信息。这些信息被称为 扩展 信息。

请参阅 EXTENTS

GET /images/{ticket-id}/extent?context=dirty

进行镜像传输的程序需要下载备份中的更改。这些更改称为脏扩展。要下载更改,请发送类似以下请求:

请参阅 EXTENTSExamplesRequest dirty extents

PUT /images/{ticket-id}

备份应用程序会创建一个新磁盘,或使用现有磁盘保存恢复的数据的快照。

请参阅 PUT

其他资源

Red Hat Virtualization Python SDK 包括一些可用于开始进行传输备份的实施示例: