1.2. 备份和恢复工作方式
以下小节演示了备份和恢复的工作流。
1.2.1. 卷备份工作流
当块存储备份服务执行备份时,它会从 cinder API 接收请求来备份目标卷。备份服务完成请求,并将内容存储在后端。
下图演示了请求如何与 Block Storage (cinder)服务交互来执行备份。
- 客户端通过调用 cinder API 来发出一个请求来备份块存储卷。
- Cinder API 服务从 HAProxy 接收请求并验证请求、用户凭据和其他信息。
- 在 SQL 数据库中创建备份记录。
-
通过 AMQP 对
cinder-backup
服务进行异步 RPC 调用,以备份卷。 - 将当前备份记录(带有 ID)返回到 API 调用器。
- RPC 创建消息到达其中一个备份服务。
-
cinder-backup
服务对get_backup_device
执行同步 RPC 调用。 -
cinder-volume
服务确保正确的设备返回到调用者。通常,它是同一个卷,但如果卷正在使用,则服务会返回临时克隆的卷或临时快照,具体取决于配置。 -
cinder-backup
服务向cinder-volume
发出另一个同步 RPC 以公开源设备。 -
cinder-volume
服务导出并映射源设备(卷或快照),并返回适当的连接信息。 -
cinder-backup
服务使用连接信息附加源卷。 -
cinder-backup
服务调用备份驱动程序,设备已经附加,后者开始向备份目的地传输数据传输。 - 卷从 Backup 主机分离。
-
cinder-backup
服务向cinder-volume
发出同步 RPC,以断开源设备的连接。 -
cinder-volume
服务取消映射并删除设备的导出。 -
如果创建了临时卷或临时快照,
cinder-backup
会调用cinder-volume
来删除它。 -
cinder-volume
服务移除临时卷。 - 备份完成后,备份记录会在数据库中更新。
1.2.2. 卷恢复工作流
下图演示了用户请求恢复块存储服务(cinder)备份时所执行的步骤。
- 客户端通过调用 CinderREST API 来发出恢复块存储备份的请求。
- Cinder API 从 HAProxy 接收请求并验证请求、用户凭据和其他信息。
- 如果请求不包含现有卷作为目的地,API 会发出异步 RPC 调用来创建新卷并轮询卷的状态,直到卷可用为止。
-
cinder-scheduler
选择一个卷服务,并发出 RPC 调用来创建卷。 -
所选的
cinder-volume
服务创建卷。 -
当
cinder-api
检测到卷可用时,会在数据库中创建备份记录。 - 通过 AMQP 对备份服务进行异步 RPC 调用,以恢复备份。
- 将当前卷 ID、备份 ID 和卷名称返回到 API 调用器。
- RPC 创建消息到达其中一个备份服务。
-
cinder-backup
服务执行对cinder-volume
的同步 RPC 调用,以公开目标卷。 -
cinder-volume
服务导出并映射目标卷返回适当的连接信息。 -
cinder-backup
服务使用连接信息附加源卷。 -
cinder-backup
服务调用已附加设备的驱动程序,后者开始恢复卷目的地的数据。 - 卷从备份主机分离。
-
cinder-backup
服务向cinder-volume
发出同步 RPC,以断开源设备的连接。 -
cinder-volume
服务取消映射并删除设备的导出。 - 备份完成后,会在数据库中更新备份记录。