背景:
为了保障虚拟机用户的数据安全,需要提供云硬盘的备份的功能,该功能是针对用户的整台虚拟机包括系统盘与所有的数据盘,提供的备份服务,可以帮助用户方便的将数据恢复到任意备份点,以此来保障用户的数据安全。
系统架构
上图主要涉及如下交互:
- 用户通过REST api访问cinder-api。
- cinder-backup组件通过REST api访问nova-api。
- cinder组件之间以及nova组件之间通过AMQP(rabbitmq通信)。
- cinder-volume通过librbd及rbd cli控制ceph集群,对ceph rbd的image(卷)进行制作snapshot等操作。
- cinder-backup通过swift api访问ceph rgw对象存储。
- cinder-backup需要访问ceph rbd的数据面来读取数据,并将数据上传到ceph rgw对象存储。
主要流程如下:
- cinder-api收到创建云硬盘备份的API请求,先进行参数,云硬盘的状态等检查;
- 之后由cinder-api通过rpc-cast调用cinder-backup执行备份动作;
- cinder-backup会先对备份的数据库状态,云硬盘的数据库状态做检查;
- cinder-backup会通过rpc-call调用cinder-volume获取云硬盘的连接信息
- 如果云硬盘是挂载状态,cinder-backup会通过REST api请求nova-compute先检查虚机是否是开机状态;如果云硬盘挂载状态且云主机是开机状态,则cinder-backup通过REST api请求nova-api,执行sync动作,等待nova-api返回。
- 接着cinder-backup连接磁盘,并从磁盘中分段读取磁盘数据;每段数据通过swift接口上传到对象存储中;
- 完成备份后,刷新云硬盘状态和备份状态;
- 删除备份中临时创建的快照或者临时卷。
总结:
天翼云实现了云盘的磁盘数据备份功能,支持将数据备份到对象存储中,同时云管界面还支持客户定时备份策略,保留最近备份的个数等灵活设置,为客户随时恢复任何时间的备份提供数据高可靠服务保障。