前面咱们 backup 了 voluem,今天咱们将讨论如何 restore volume。api
restore 的过程其实很简单,两步走:spa
在存储节点上建立一个空白 volume。rest
将 backup 的数据 copy 到空白 voluem 上。日志
下面咱们来看 restore 操做的详细流程:ci
向 cinder-api 发送 backup 请求meta
cinder-api 发送消息请求
cinder-scheduler 挑选最合适的 cinder-volume程序
cinder-volume 建立空白 volumeim
cinder-backup 将 backup 数据 copy 到空白 volume 上数据
咱们先来看第 1 步。
客户(能够是 OpenStack 最终用户,也能够是其余程序)向 cinder-api 发送请求:“请 restore 指定的 backup。这里咱们将 restore 以前建立的 backup。
目前 restore 只能在 CLI 中执行。
cinder-api 接收到 restore 请求。日志文件在 /opt/stack/logs/c-api.log。
这里看到 cinder-api 转发请求,为 restore 建立 volume。 以后 cinder-scheduler 和 cinder-volume 将建立空白 volume,这个过程与 create volume 同样,再也不赘述。
接下来分析数据恢复的过程。 首先,在 cinder-api 日志中能够看到相关信息。
这里注意日志中的 volume_id 和 backup_id 与前面 backup-restore 命令的输出是一致的。
下面来看 cinder-backup 是如何恢复数据的。
日志为 /opt/stack/logs/c-vol.log。
启动 restore 操做,mount NFS。
读取 container 目录中的 metadata。
将数据解压并写到 volume 中。
恢复 volume 的 metadata,完成 restore 操做。
此时,在 GUI 中已经能够看到 restore 建立的 volume。
以上就是 volume restore 的分析,下一节咱们讨论如何将 volume 做为 instance 的启动盘。