比如,我们使用ceph作为后端存储,这时候就会使用RBD的驱动,快照调用的方法为:
def create_snapshot(self, snapshot):
"""Creates an rbd snapshot."""
with RBDVolumeProxy(self, snapshot.volume_name) as volume:
snap = utils.convert_str(snapshot.name)
volume.create_snap(snap)
volume.protect_snap(snap)
其过程也就是创建一个Image对象,然后直接调用librbd相关的方法执行秒级快照,不做具体分析了。
小结:cinder-volume快照功能很简单:调用后端存储执行快照,然后更新glance数据库快照记录
阅读完上面的分析,相信读者会发现上面的快照过程中cinder执行的就是卷的快照,nova实现的是云主机信息及其镜像记录的处理。事实确实也如此:快照执行完成后,会在Dashboard的镜像面板显示一条镜像记录,在卷快照面板显示一条或者多条(如果有多个卷的话)卷快照记录。