1.简介
1.概念:RBD快照是RBD在某一时刻全部数据的只读镜像,可以保留某个时间点的状态历史。
2.原理:RBD快照只保留少量的快照元数据信息,其底层数据I/O的实现完全依赖于RADOS层的快照实现。
3.用途:
- 基于快照做clone卷。
- 数据备份:
-
- 基于快照的导入导出
- 基于快照的回滚
- 基于快照的rbd mirror
4.使用方式:
- 通过rbd命令行。
- 通过对外提供的接口:
-
- QEMU
- Libvirt
- OpenStack
- CloudStack
2.基本操作
1.创建快照
#rbd snap ceate pool_name/image_name@snap_name
rbd snap create rbd/m1@v1
2.查看快照
#rbd snap list pool_name/image_name
rbd snap list rbd/m1
3.快照回滚,恢复到指定快照的数据
#rbd snap rollback pool_name/image_name@snap_name
rbd snap rollback rbd/m1@v1
4.删除快照
#rbd snap rm pool_name/image_name@snap_name
rbd snap rm rbd/m1@v1
5.清除快照个数限制
#rbd snap limit clear pool_name/image_name
rbd snap limit clear rbd/m1
6.设置快照个数限制,默认不限制
#rbd snap limit set pool_name/image_name limit_num
rbd snap limit set rbd/m1 7
7.设置快照保护,设置后可以进行克隆
#rbd snap protect pool_name/image_name@snap_name
rbd snap protect rbd/m1@v1
8.快照去保护
#rbd snap unprotect pool_name/image_name@snap_name
rbd snap unprotect rbd/m1@v1
9.清除所有快照
#rbd snap purge pool_name/image_name
rbd snap purge rbd/m1
10.快照重命名
#rbd snap rename pool_name/image_name@src_name pool_name/image_name@dst_name
rbd snap rename rbd/m1@v1 rbd/m1@v10
3.原理
1.云硬盘存储架构
Librbd:提供操作image的接口,会将image拆分成多个obj。
Librados:提供操作obj的接口,librbd调用接口将指定obj请求发送到指定osd。
Rados:提供osd服务,处理librados的消息。
磁盘:提供物理存储介质。
2.rados快照原理
从云硬盘架构可以看出librbd是依赖rados的,云硬盘快照也是依赖rados快照的。
操作1,如下:
①rbd写[0~4M]。
②rbd创建快照v1。
③rbd写[512k~1M]。
此时有head对象和clone对象,通过overlap记录clone对象和head对象的覆盖区间。
操作2,如下:
①1.对rbd写[0~4M]。
②2.创建快照v1。
③3.写[512k~1M]。
④4.写[1.5M~2M]。
快照后,随着新写入的数据增多,对应快照的overlap越小,直至没有覆盖区间。
2.云硬盘快照原理
1.创建快照snap1
创建快照,只是记录了快照元数据,数据没有变化。
2.云硬盘写0~4M区间的数据,会触发COW操作,将obj0克隆。