ceph块存储rbd介绍

ceph集群搭建起来后,可以在ceph集群上进行块存储、对象存储以及文件系统存储。从架构上来看,在ceph集群的上面是rados协议,该协议为使用ceph集群的用户提供必要的支持(ceph用户通过调用rados协议来使用ceph集群)。对于块存储来说,可以通过内核模块的方式使用ceph集群也可以通过用户态调用librbd库来使用ceph集群。通过内核模块方式可以充分的利用内核的page cache机制,而通过用户态调用librbd也可以使用librbd在用户态提供的cache方式提高性能。下图是ceph rbd的整体框架图。

ditaa-dc9f80d771b55f2daa5cbbfdb2dd0d3e6dfc17c0.png

1、快照相关。

1)创建快照。

#rbd snap create {pool-name}/{image-name}@{snap-name}

一般来说都是基于一个已有的image来创建快照,创建出来的快照是只读的;

2)查看已有的快照。

#rbd snap ls {pool-name}/{image-name}

查看在已有的image上存在的快照情况;

3)快照roolback。

#rbd snap roolback {pool-name}/{image-name}@{snap-name}

将快照里的内容回写到image中去;

4)删除快照。

#rbd snap rm {pool-name}/{image-name}@{snap-name}

删除指定image上的指定名称的快照;

5)删除image上所有的快照。

#rbd snap purge {pool-name}/{image-name}

2、分层相关。

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}

3、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模式


你可能感兴趣的:(ceph,rbd)