2.4. 高级卷配置
以下流程描述了如何执行高级卷管理流程。
2.4.1. 备份和恢复卷 复制链接链接已复制到粘贴板!
卷备份是卷内容的持久副本。卷备份通常作为对象存储创建,默认通过对象存储服务管理。但是,您可以为备份设置不同的存储库;OpenStack 支持 Red Hat Ceph 和 NFS 作为备份的替代后端。
在创建卷备份时,所有备份的元数据都存储在块存储服务的数据库中。从备份中恢复卷时,cinder
实用程序使用此元数据。因此,在从灾难性数据库丢失中恢复时,您必须先恢复块存储服务的数据库,然后才能从备份中恢复任何卷。这也假设块存储服务数据库正在恢复所有原始卷备份元数据。
如果您只想将卷备份的子集配置为存活灾难性数据库丢失,您也可以导出备份的元数据。然后,您可以稍后将元数据重新导入到块存储数据库,并正常恢复卷备份。
卷备份与快照不同。备份保留卷中包含的数据,而快照则保留卷在特定时间点的状态。另外,如果卷已有快照,则无法删除它。卷备份以防止数据丢失,而快照则用于协助克隆。
因此,快照后端通常与卷后端共存,以便在克隆期间最小化延迟。相反,备份存储库通常位于典型的企业部署中的不同位置(如不同的节点、物理存储甚至地理位置)。这是为了防止备份存储库不受卷后端可能出现的损坏的影响。
有关卷快照的详情,请参考 第 2.3.8 节 “创建、使用或删除卷快照”。
2.4.1.1. 创建完全卷备份 复制链接链接已复制到粘贴板!
要备份卷,请使用 cinder backup-create
命令。默认情况下,此命令将创建卷的完整备份。如果卷有现有的备份,您可以选择创建 增量备份 (详情请参阅 第 2.4.1.2 节 “创建增量卷备份”。)
您可以创建有权访问的卷备份。这意味着,具有管理特权的用户都可备份任何卷,无论所有者是什么。如需更多信息,请参阅 第 2.4.1.1.1 节 “以管理员身份创建卷备份”。
查看您要备份的卷的
ID
或Display Name
:cinder list
# cinder list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备份卷:
cinder backup-create VOLUME
# cinder backup-create VOLUME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您要备份的卷的
ID
或Display Name
替换 VOLUME。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意生成的备份的
volume_id
与源卷的ID
相同。验证卷备份创建已完成:
cinder backup-list
# cinder backup-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当备份条目的
Status
为available
时,卷备份创建已完成。
此时,您还可以导出并存储卷备份的元数据。这可让您恢复卷备份,即使块存储数据库出现灾难性丢失。为此,请运行:
cinder --os-volume-api-version 2 backup-export BACKUPID
# cinder --os-volume-api-version 2 backup-export BACKUPID
其中 BACKUPID 是卷备份的 ID 或名称。例如,
卷备份元数据由 backup_service
和 backup_url
值组成。
2.4.1.1.1. 以管理员身份创建卷备份 复制链接链接已复制到粘贴板!
具有管理特权的用户(如默认的 admin
帐户)可以备份由 OpenStack 管理的任何卷。当管理员备份非管理员用户拥有的卷时,默认会在卷所有者中隐藏备份。
作为管理员,您仍然可以备份卷,并使 备份可供特定租户使用。为此,请运行:
cinder --os-auth-url KEYSTONEURL --os-tenant-name TENANTNAME --os-username USERNAME --os-password PASSWD backup-create VOLUME
# cinder --os-auth-url KEYSTONEURL --os-tenant-name TENANTNAME --os-username USERNAME --os-password PASSWD backup-create VOLUME
其中:
- TENANTNAME 是您要使备份可用的租户的名称。
- USERNAME 和 PASSWD 是 TENANTNAME 中用户的用户名/密码凭据。
- VOLUME 是您要备份的卷的名称或 ID。
- KEYSTONEURL 是 Identity 服务的 URL 端点(通常为 http://IP:5000/v2,其中 IP 是 Identity 服务主机的 IP 地址)。
在执行此操作时,生成的备份大小将根据 TENANTNAME 的配额而不是管理员的租户进行计数。
2.4.1.2. 创建增量卷备份 复制链接链接已复制到粘贴板!
默认情况下,cinder backup-create
命令将创建卷的完整备份。但是,如果卷有现有的备份,您可以选择创建 增量备份。
增量备份捕获自上次备份(完整或增量)以来对卷的任何更改。在卷的大小随时间增加时,定期执行大量、完全备份卷可能会成为资源密集型。因此,增量备份允许您捕获对卷的定期更改,同时尽量减少资源使用量。
要创建增量卷备份,请使用-- incremental
选项。如:
cinder backup-create VOLUME --incremental
# cinder backup-create VOLUME --incremental
使用您要备份的卷的 ID
或 Display Name
替换 VOLUME。NFS 和对象存储备份存储库完全支持增量备份。
如果已具有增量备份,则无法删除完整备份。另外,如果完整备份有多个增量备份,则只能删除最新的备份。
当使用 Red Hat Ceph Storage 作为 Block Storage (cinder)卷和备份的后端时,任何尝试执行增量备份都会生成完整备份,而无需任何警告。这是一个已知问题(BZ":{"63061)。
2.4.1.3. 在块存储数据库 Los 后恢复卷 复制链接链接已复制到粘贴板!
通常,块存储数据库丢失会阻止您恢复卷备份。这是因为 Block Storage 数据库包含卷备份服务(openstack-cinder-backup)所需的元数据。这个元数据由 backup_service
和 backup_url
值组成,您可以在创建卷备份后导出(如 第 2.4.1.1 节 “创建完全卷备份”所示)。
如果您导出并存储此元数据,您可以将其导入到新的块存储数据库(通过允许您恢复卷备份)。
以具有管理特权的用户身份,运行:
cinder --os-volume-api-version 2 backup-import backup_service backup_url
# cinder --os-volume-api-version 2 backup-import backup_service backup_url
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 backup_service 和 backup_url 来自您导出的元数据。例如,使用从 第 2.4.1.1 节 “创建完全卷备份” 导出的元数据:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将元数据导入到块存储服务数据库后,您可以正常恢复卷(请参阅 第 2.4.1.4 节 “从备份中恢复卷”)。
2.4.1.4. 从备份中恢复卷 复制链接链接已复制到粘贴板!
查找您要使用的卷备份的
ID
:cinder backup-list
# cinder backup-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 卷 ID
应与您要恢复的卷 ID 匹配。恢复卷备份:
cinder backup-restore BACKUP_ID
# cinder backup-restore BACKUP_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 BACKUP_ID 是您要使用的卷备份的 ID。
如果您不再需要备份,请删除它:
cinder backup-delete BACKUP_ID
# cinder backup-delete BACKUP_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.2. 迁移卷 复制链接链接已复制到粘贴板!
块存储服务允许您在主机或后端之间迁移卷。您可以迁移当前正在使用的卷(附加到实例),但不能迁移具有快照的卷。
在主机之间迁移卷时,两个主机必须位于相同的后端。要做到这一点:
- 在控制面板中,选择 Admin > Volumes。
- 在要迁移的卷的 Actions 列中,选择 Migrate Volume。
在 Migrate Volume 对话框中,从 Destination Host 下拉列表中选择目标主机。
注意如果要绕过主机迁移的任何驱动程序优化,请选择 Force Host Copy 复选框。
- 点 Migrate 开始迁移。
2.4.2.1. 在后端之间迁移 复制链接链接已复制到粘贴板!
另一方面,在后端之间迁移卷涉及 卷重新编写。这意味着要迁移到新后端:
- 新后端必须在单独的 目标卷类型 中指定为 Extra Spec。
- 目标卷类型中定义的所有其他 Extra Spec 必须与卷的原始卷类型兼容。
如需了解更多详细信息,请参阅 ] 和 xref:section-specify-backend[。
将后端定义为 Extra Spec 时,请使用 volume_backend_name 作为密钥。其对应的值将是后端的名称,如 Block Storage 配置文件(/etc/cinder/cinder.conf)中定义的。在此文件中,每个后端在其自己的部分中定义,其对应的名称在 volume_backend_name 参数中设置。
在目标卷类型中定义了后端后,您可以通过重新键入 将卷迁移到该后端。这涉及将目标卷类型重新应用到卷,从而应用新的后端设置。具体步骤请查看 第 2.3.10 节 “更改卷类型(Volume Re-typing)”。
要做到这一点:
- 在控制面板中,选择 Project > Compute > Volumes。
- 在要迁移的卷的 Actions 列中,选择 Change Volume Type。
- 在 Change Volume Type 对话框中,从 Type 下拉列表中选择定义新后端的目标卷类型。
- 从 Migration Policy 下拉列表中选择 On Demand。
- 点 Change Volume Type 开始迁移。