ceph集群搭建起来后,能够在ceph集群上进行块存储、对象存储以及文件系统存储。从架构上来看,在ceph集群的上面是rados协议,该协议为使用ceph集群的用户提供必要的支持(ceph用户经过调用rados协议来使用ceph集群)。对于块存储来讲,能够经过内核模块的方式使用ceph集群也能够经过用户态调用librbd库来使用ceph集群。经过内核模块方式能够充分的利用内核的page cache机制,而经过用户态调用librbd也可使用librbd在用户态提供的cache方式提升性能。下图是ceph rbd的总体框架图。linux
一、快照相关。web
1)建立快照。缓存
#rbd snap create {pool-name}/{image-name}@{snap-name}架构
通常来讲都是基于一个已有的image来建立快照,建立出来的快照是只读的;框架
2)查看已有的快照。性能
#rbd snap ls {pool-name}/{image-name}spa
查看在已有的image上存在的快照状况;orm
3)快照roolback。对象
#rbd snap roolback {pool-name}/{image-name}@{snap-name}get
将快照里的内容回写到image中去;
4)删除快照。
#rbd snap rm {pool-name}/{image-name}@{snap-name}
删除指定image上的指定名称的快照;
5)删除image上全部的快照。
#rbd snap purge {pool-name}/{image-name}
二、分层相关。
ceph中的分层技术指的是在一个只读且受保护的快照上clone出一个新的image且该image是写时复制的。clone出一个新的image后,该image与那个只读snap之间是child-parent关系。
1)保护一个快照。
#rbd snap protect {pool-name}/{image-name}@{snap-name}
2)clone一个受保护的快照。
#rbd clone {pool-name}/{image-name}@{snap-name} {newpool-name}/{newimage-name}
clone出一个受保护的image后,就能够按照普通的image来使用这个clone后的image
3)解除一个受保护的快照。
#rbd snap unprotect {pool-name}/{image-name}@{snap-name}
只有解除了快照的保护才能真正的删除该快照,不然快照没法被删除
4)查看快照被clone的状况。
#rbd children {pool-name}/{image-name}@{snap-name}
此命令能够看到基于该snap-name clone出来的image信息
5)去分层技术。
基于某个快照clone出来的image与那个快照之间是一种child-parent关系(能够认为是一种分层关系)。而去分层技术指的是将parent中的内容彻底的复制到child中去,从而使得child和parent在去分层后变得没有任何关系。
#rbd flatten {pool-name}/{image-name}
三、rbd cache相关。
rbd cache指的是在用户态环境下经过使用librbd库来访问ceph集群时在client端使用cache技术来提升client端访问ceph集群的性能。对于之内核模块的方式访问ceph集群时使用的是linux内核中的page cache技术进行缓存而不是rbd cache技术。
rbd cache须要在ceph client端的ceph配置文件中配置相应的属性来启用rbd cache。ceph client端的ceph配置文件位于/etc/ceph/ceph.conf,在该文件中须要添加client节点且在client节点出添加具体的配置项。rbd cache配置项具体内容以下:
rbd cache = true|false 是否启用rbd cache
rbd cache size = rbd cache大小
rbd cache max dirty = 在writeback模式下cache的最大bytes数,默认是24MB。当该值为0时,表示使用writethrough模式
rbd cache target dirty = 在writeback模式下cache向ceph集群写入的bytes阀值,默认16MB。注意该值必定要小于rbd cache max dirty值
rbd cache max dirty age = cache中脏数据存在的最大秒数
rbd cache writethrough until flush = true|false 在内核触发flush cache到ceph集群前rbd cache一直是writethrough模式,直到flush后rbd cache变成writeback模式