第 3 章 使用块存储备份服务
您可以使用块存储备份服务执行完整或增量备份,来保护备份,并将备份恢复到卷。
3.1. 创建备份 复制链接链接已复制到粘贴板!
创建块存储卷的备份,以便在卷失败时保护您的数据丢失。如需更多信息,请参阅创建完整卷备份。您还可以直接从卷快照创建备份。如需更多信息,请参阅创建完整快照备份。除了卷数据外,备份还存储卷元数据,如名称和描述。
如果您为备份存储库启用了数据压缩,则您的备份将被压缩,这可以降低其性能。
完整备份更易于管理,但当卷的大小随着时间增加时,它们可能会变得资源密集型。通过增量备份,您可以捕获卷的定期更改,并最小化资源使用量。如需更多信息,请参阅 增加备份。
您可以创建可访问的卷的备份。项目管理员可以备份属于该项目的任何卷。这些备份在卷所有者中隐藏,除非管理员在创建备份时提供额外的参数。如需更多信息,请参阅 备份参数以验证卷所有者。
每个项目(租户)限制了为它创建的所有备份的最大备份数和最大总大小。作为项目管理员,您可以查看和更改这些配额。如需更多信息,请参阅 查看和修改项目备份配额。
通常,您只能备份具有 可用 状态的卷,但如果需要,就可以备份具有 in-use 状态的卷。如需更多信息,请参阅创建使用中的卷的备份。
当您创建块存储卷的备份时,此备份的元数据存储在块存储服务数据库中,该数据库在恢复此卷时使用。为确保备份在块存储服务数据库的灾难性丢失时存下,项目管理员可以手动导出和存储此备份的元数据。如需更多信息,请参阅 保护您的备份。
3.1.1. 创建完整卷备份 复制链接链接已复制到粘贴板!
您可以创建卷的一个或多个完整备份。
先决条件
- 只有卷所有者和项目管理员可以备份卷。
- 您的备份存储库必须具有所需的空间。
- 为项目指定的备份配额没有超过。如需更多信息,请参阅 查看和修改项目备份配额。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc列出卷以获取您要备份的卷的 ID 或名称:
$ openstack volume list注意通常,您只能备份具有
可用状态的卷,但如果需要,就可以备份具有in-use状态的卷。如需更多信息,请参阅创建使用中的卷的备份。备份卷:
注意如果您是项目管理员而不是卷所有者,那么要使此备份可以被卷所有者访问,则需要在创建此备份时提供额外的参数。如需更多信息,请参阅 备份参数以验证卷所有者。
$ openstack volume backup create [--name <backup_name>] <volume>-
将 &
lt;volume> 替换为您要备份的卷的 ID 或名称。 可选:将
<backup_name> 替换为这个备份的名称。这个命令会立即提供这个备份的 ID,但卷会在后台异步备份。例如:
$ openstack volume backup create --name vol1bu2 vol_1 +-------+--------------------------------------+ | Field | Value | +-------+--------------------------------------+ | id | 83dadc43-2aa9-4c0b-bc05-a12203a8f4cb | | name | vol1bu2 | +-------+--------------------------------------+
-
将 &
验证
列出备份:
$ openstack volume backup list当此备份具有
可用状态时,会创建卷备份。例如:+--------------------------------------+---------+-------------+-----------+------+ | ID | Name | Description | Status | Size | +--------------------------------------+---------+-------------+-----------+------+ | 83dadc43-2aa9-4c0b-bc05-a12203a8f4cb | vol1bu2 | None | available | 1 | | b604a932-94a5-468e-bf6b-841ac16f69a8 | None | None | available | 1 | +--------------------------------------+---------+-------------+-----------+------+
3.1.2. 创建完整快照备份 复制链接链接已复制到粘贴板!
您可以使用与快照关联的卷 ID 从快照创建完整备份。
备份是通过直接附加到快照创建的,这比将快照克隆到卷中更快,然后备份这个卷。但是,这个功能可能会影响备份性能,因为从快照创建卷的额外步骤。
先决条件
- 您的备份存储库必须具有所需的空间。
- 为项目指定的备份配额没有超过。如需更多信息,请参阅 查看和修改项目备份配额。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc列出快照以获取您要备份的快照的名称或 ID:
$ openstack volume snapshot list列出此快照的详情,以获取与这个快照关联的卷 ID:
$ openstack volume snapshot show <snapshot>将
<snapshot> 替换为您要备份的快照的名称或 ID。volume_id字段的值是与此快照关联的卷的 ID。例如:$ openstack volume snapshot show snap_1 +--------------------------------------------+--------------------------------------+ | Field | Value | +--------------------------------------------+--------------------------------------+ | created_at | 2023-07-18T08:14:16.000000 | | description | None | | id | 2d95b707-6657-49af-ac8f-f9a7417d4650 | | name | snap_1 | | os-extended-snapshot-attributes:progress | 100% | | os-extended-snapshot-attributes:project_id | c2c1da89ed1648fc8b4f35a045f8d34c | | properties | | | size | 1 | | status | available | | updated_at | 2023-07-18T08:14:17.000000 | | volume_id | 6841e3d1-8a1a-4496-bc51-f7c04b787e8f | +--------------------------------------------+--------------------------------------+
备份快照:
$ openstack volume backup create [--name <backup_name>] --snapshot <snapshot> <volume_id>-
将
<volume_id> 替换为与该快照关联的卷的 ID。 可选:将
<backup_name> 替换为这个备份的名称。这个命令会立即提供这个备份的 ID,但快照会在后台异步备份。例如:
$ openstack volume backup create --name snap1bu1 --snapshot snap_1 6841e3d1-8a1a-4496-bc51-f7c04b787e8f +-------+--------------------------------------+ | Field | Value | +-------+--------------------------------------+ | id | 867e6cfb-9be7-47fa-8a79-221b0e80c757 | | name | snap1bu1 | +-------+--------------------------------------+
-
将
验证
列出备份:
$ openstack volume backup list当此备份具有
可用状态时,会创建快照备份。例如:+--------------------------------------+------------+-------------+-----------+------+ | ID | Name | Description | Status | Size | +--------------------------------------+------------+-------------+-----------+------+ | 867e6cfb-9be7-47fa-8a79-221b0e80c757 | snap1bu1 | None | available | 1 | +--------------------------------------+------------+-------------+-----------+------+
3.1.3. 创建正在使用的卷的备份 复制链接链接已复制到粘贴板!
通常,您只能备份具有 可用 状态的卷。但是,您可以在创建备份时使用 --force 选项备份具有 in-use 状态的卷。
使用 --force 卷备份选项时,您可以创建一个崩溃一致性,而不是应用程序一致性,备份,因为卷在执行备份前不会被静止。因此,数据是完好,但备份不知道执行备份时运行哪些应用程序。
先决条件
- 只有卷所有者和项目管理员可以备份卷。
- 您的备份存储库必须具有所需的空间。
- 为项目指定的备份配额没有超过。如需更多信息,请参阅 查看和修改项目备份配额。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc列出卷以获取您要备份的卷的 ID 或名称:
$ openstack volume list例如:
+--------------------------------------+----------------+-----------+------+--------------------------------+ | ID | Name | Status | Size | Attached to | +--------------------------------------+----------------+-----------+------+--------------------------------+ | 6841e3d1-8a1a-4496-bc51-f7c04b787e8f | vol_1 | available | 1 | | | 92800cf6-82ae-448a-a2bb-872fa4d98099 | Pansible_vol_2 | in-use | 1 | Attached to inst1 on /dev/vdc | +--------------------------------------+----------------+-----------+------+--------------------------------+如果要备份的卷具有
in-use状态,则强制备份:$ openstack volume backup create [--name <backup_name>] --force <volume>-
将 &
lt;volume> 替换为您要备份的卷的 ID 或名称。 可选:将
<backup_name> 替换为这个备份的名称。这个命令会立即提供这个备份的 ID,但卷会在后台异步备份。例如:
$ openstack volume backup create --name panvol2bu1 --force Pansible_vol_2 +-------+--------------------------------------+ | Field | Value | +-------+--------------------------------------+ | id | 8c72bbf3-eb8e-4459-83e9-c7654ebe6343 | | name | panvol2bu1 | +-------+--------------------------------------+
-
将 &
验证
列出备份:
$ openstack volume backup list当此备份具有
可用状态时,会创建卷备份。例如:+--------------------------------------+------------+-------------+-----------+------+ | ID | Name | Description | Status | Size | +--------------------------------------+------------+-------------+-----------+------+ | 8c72bbf3-eb8e-4459-83e9-c7654ebe6343 | panvol2bu1 | None | available | 1 | +--------------------------------------+------------+-------------+-----------+------+
3.1.4. 增量备份 复制链接链接已复制到粘贴板!
如果卷至少有一个完整备份,您可以使用块存储备份服务来创建增量备份。如需更多信息,请参阅创建增量备份。
完整备份更易于管理,但当卷的大小随着时间增加时,它们可能会变得资源密集型。通过增量备份,您可以捕获卷的定期更改,并最小化资源使用量。
增量备份仅会备份自上次完整或增量备份后,对卷所做的更改。
增量备份会增加管理备份所需的管理开销。例如,如果已经有一个或多个增量备份,则无法删除完整备份,您只能删除最新的增量备份。
增量备份的性能低于全备份:当您创建增量备份时,卷中的所有数据都必须首先读取并与完整备份和后续增量备份中的数据进行比较。
3.1.4.1. 创建增量备份 复制链接链接已复制到粘贴板!
您可以创建一个增量备份,以仅存储自上次完整备份或增量备份后对卷所做的更改。
先决条件
- 至少一个卷的完整备份。如需更多信息,请参阅创建完整卷备份。
- 只有卷所有者和项目管理员可以备份卷。
- 您的备份存储库必须具有所需的空间。
- 为项目指定的备份配额没有超过。如需更多信息,请参阅 查看和修改项目备份配额。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc列出卷以获取您要备份的卷的 ID 或名称:
$ openstack volume list备份卷并使用
--incremental选项:$ openstack volume backup create --incremental [--name <backup_name>] <volume>-
将 &
lt;volume> 替换为您要备份的卷的 ID 或名称。 可选:将
<backup_name> 替换为这个备份的名称。这个命令会立即提供这个备份的 ID,但卷会在后台异步备份。例如:
$ openstack volume backup create --name vol3incbu1 --incremental vol_3 +-------+--------------------------------------+ | Field | Value | +-------+--------------------------------------+ | id | f1681313-b5ed-4520-9b63-5b533f7cdc11 | | name | vol3incbu1 | +-------+--------------------------------------+
-
将 &
验证
列出备份:
$ openstack volume backup list当此备份具有
可用状态时,会创建卷备份。例如:+--------------------------------------+---------+-------------+-----------+------+ | ID | Name | Description | Status | Size | +--------------------------------------+---------+-------------+-----------+------+ | f1681313-b5ed-4520-9b63-5b533f7cdc11 | vol3incbu1 | None | available | 1 | | f0e9ba67-67e1-4c2c-96ce-221df75bf2c2 | vol3bu1 | None | available | 1 | +--------------------------------------+---------+-------------+-----------+------+
其他资源
3.1.5. 备份性能注意事项 复制链接链接已复制到粘贴板!
块存储备份服务的一些功能,如增量备份和数据压缩,可以降低备份的性能。
通过只捕获卷的定期更改,增量备份可以最大程度降低您的资源使用情况。如需更多信息,请参阅 增加备份。但是,增量备份的性能低于全备份:当您创建增量备份时,卷中的所有数据都必须首先读取并与后续增量备份中的数据进行比较。
您还可以通过直接附加到快照来创建备份,这比将快照克隆到卷中要快。如需更多信息,请参阅创建完整快照备份。但是,这个功能可能会影响备份性能,因为从快照创建卷的额外步骤。
启用备份存储库的数据压缩需要额外的 CPU 电源,但使用较少的网络带宽和存储空间。您可以配置块存储备份服务,以启用或禁用备份存储库的数据压缩。如需更多信息,请参阅块存储备份服务配置。
您不能将数据压缩用于 Red Hat Ceph Storage 后端。
3.1.6. 备份参数以验证卷所有者 复制链接链接已复制到粘贴板!
项目管理员可以备份属于该项目的任何卷,但这些备份在卷所有者中是隐藏的。
为确保卷所有者也可以访问卷备份,项目管理员必须提供以下附加参数,以便在备份卷时作为卷所有者进行身份验证:
$ openstack --os-auth-url <keystoneurl> --os-project-name <projectname> --os-username <username> --os-password <password> volume backup create [--name <backup_name>] <volume>
-
将
<keystoneurl> 替换为身份服务的 URL 端点,通常为 http://IP:5000/v3,其中IP是身份服务主机的 IP 地址。 -
将
<projectname> 替换为卷所有者的项目(租户)的名称。 -
将
<username> 和 <password> 替换为此项目中卷所有者的用户的用户名和密码凭证。
[--name <backup_name>] <volume > 是创建卷备份时的典型参数。
3.1.7. 查看和修改项目备份配额 复制链接链接已复制到粘贴板!
项目管理员可以更改或查看所有备份的最大数量,以 GB 为单位,这些备份可以为特定项目(租户)创建,并查看此项目的这些备份配额的使用情况。
先决条件
- 您必须是一个项目管理员,才能查看或修改项目的备份配额。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc列出项目以获取所需项目的 ID 或名称:
$ openstack project list查看特定项目的备份配额:
$ openstack quota show <project>-
将
<project>替换为所需项目的 ID 或名称。
表中的
backup-gigabytes字段的值是此项目中创建的所有备份的最大总量。表中的backup字段的值是此项目中创建的最大备份数。例如:+
$ openstack quota show c2c1da89ed1648fc8b4f35a045f8d34c +-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | backup-gigabytes | 1000 | | backups | 10-
将
修改为项目创建的所有备份的最大大小:
$ openstack quota set --backup-gigabytes <maxgb> <project>-
将 <
;maxgb> 替换为可为此项目创建的备份的最大总大小(以 GB 为单位)。
-
将 <
修改可为项目创建的最大备份数:
$ openstack quota set --backups <maxnum> <project>-
将
<maxnum> 替换为可为此项目创建的最大备份数。
-
将
查看特定项目的这些备份配额的使用:
$ cinder quota-usage <project_id>将
<project_id> 替换为项目的 ID。例如:
$ cinder quota-usage c2c1da89ed1648fc8b4f35a045f8d34c +-----------------------+--------+----------+-------+-----------+ | Type | In_use | Reserved | Limit | Allocated | +-----------------------+--------+----------+-------+-----------+ | backup_gigabytes | 7 | 0 | 1000 | | | backups | 7 | 0 | 10 | | | gigabytes | 6 | 0 | 1000 | | | gigabytes_multiattach | 0 | 0 | -1 | | | gigabytes_tripleo | 6 | 0 | -1 | | | groups | 0 | 0 | 10 | | | per_volume_gigabytes | 0 | 0 | -1 | | | snapshots | 1 | 0 | 10 | | | snapshots_multiattach | 0 | 0 | -1 | | | snapshots_tripleo | 1 | 0 | -1 | | | volumes | 5 | 0 | 10 | | | volumes_multiattach | 0 | 0 | -1 | | | volumes_tripleo | 5 | 0 | -1 | | +-----------------------+--------+----------+-------+-----------+
验证
如果您更改了其中任何一个配额,请查看这些更改:
$ openstack quota show <project>确保修改的值由表中的
backup-gigabytes和backup字段指定。例如:+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | backup-gigabytes | 500 | | backups | 12
3.1.8. 取消备份 复制链接链接已复制到粘贴板!
您必须在备份上请求强制删除才能取消它。
如果您使用 Red Hat Ceph Storage 后端作为备份存储库,则无法取消备份。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc列出备份以获取您要取消的备份的 ID 或名称:
$ openstack volume backup list取消备份:
# openstack volume backup delete --force <backup>将 &
lt;backup> 替换为您要取消的卷备份的 ID 或名称。备份可能会稍微延迟才能成功取消。
验证
当这个命令没有列出备份记录时,备份会取消:
$ openstack volume backup show <backup>