签到成功

知道了

CNDBA社区CNDBA社区

RBD 使用容量查询及属性的添加,删除

2016-11-24 15:13 10515 0 原创 Ceph
作者: Expect-乐

RBD 使用容量查询及属性的添加,删除

  在使用ceph块存储时,使用rbd创建image是不可避免的。不过由于一些操作系统内核不是最新的,对于一些rbdhttp://www.cndba.cn/Expect-le/article/395

的新属性不支持,所以在默认创建rbd的时候就需要指定启用其中某些属性。或者对于已经创建过的image进行修改属性。

  在统计rbd使用容量时也有几种不同的方法。

1.计算RBD使用容量

  1.1使用rbd du

例子:

[root@ceph-osd2 ~]# rbd du image01 -p rbd  
--image01是image名称,data是所属的pool名称
NAME    PROVISIONED USED 
image01      51200M    0

#如果不指定iamge则查询该pool下所有iamge

[root@ceph-osd2 ~]# rbd du -p rbd
NAME                 PROVISIONED USED 
image01@image01_snap      51200M    0 
image01                   51200M    0 
image02                   51200M    0 
image03                   51200M    0 
<TOTAL>                     150G    0


#如果出现这个warning,则需要启用这个image的fast-diff属性。下面会讲到如何启用。http://www.cndba.cn/Expect-le/article/395

[root@ceph-osd2 ~]# rbd du image01 -p rbd 
warning: fast-diff map is not enabled for test. operation may be slow.
NAME    PROVISIONED USED 
image01      10240M    0

1.2.rbd diff查看

[root@ceph-osd2 ~]# rbd diff rbd/image01 | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
8.854 MB

1.3.根据对象统计的方法进行统计

这个是本篇着重介绍的一点,在集群非常大的时候,再去按上面的一个个的查询,需要花很长的时间,并且需要时不时的跟集群进行交互,这里采用的方法是把统计数据一次获取下来,然后进行数据的统计分析,从而获取结果,获取的粒度是以存储池为基准的

拿到所有对象的信息

for obj in `rados -p rbd ls`;do rados -p rbd stat $obj >> obj.txt;done;

这个获取的时间长短是根据对象的多少来的,如果担心出问题,可以换个终端查看进度

http://www.cndba.cn/Expect-le/article/395

tail -f  obj.txt

获取RBD的镜像列表

http://www.cndba.cn/Expect-le/article/395

[root@lab8106 ~]# rbd -p rbd ls
test1
zp

获取RBD的镜像的prefix

for a in `rbd -p rbd ls`;do echo $a ;rbd -p rbd info $a|grep prefix |awk '{print $2}' ;done

获取指定RBD镜像的大小

查询 test1 的镜像大小

[root@lab8106 ~]# cat obj.txt |grep rbd_data.3ac16b8b4567|awk  '{ SUM += $6 } END { print SUM/1024/1024 " MB" }'
4014.27 MB

将上面的汇总,使用脚本一次查询出所有的

第一步获取:

for obj in `rados -p rbd ls`;do rados -p rbd stat $obj >> obj.txt;done;

第二步计算:

创建一个获取的脚本getused.sh

#! /bin/sh
##default pool name use rbd,you can change it 
##default objfile is obj.txt,you can change it
objfile=obj.txt
Poolname=rbd
for image in `rbd -p $Poolname ls`
do
Imagename=$image
Prefix=`rbd  -p $Poolname info $image|grep prefix |awk '{print $2}'`
Used=`cat $objfile |grep $Prefix|awk '{ SUM += $6 } END { print SUM/1024/1024 " MB" }'`
echo $Imagename $Prefix
echo Used: $Used
done

输出如下:

[root@lab8106 ~]# sh getused.sh 
test1 rbd_data.3ac16b8b4567
Used: 4014.27 MB
zp rbd_data.11f66b8b4567
Used: 828.844 MB

注意这里只统计了image里面的真实容量,如果是用了快速clone的,存在容量复用的问题,需要自己看是否需要统计那一部分的对象,方法同上

2.RBD属性的启用

  以上面情况作为例子。启用fast-diff属性。

2.1查看iamge详细信息

[root@ceph-osd2 ~]# rbd info rbd/image01
rbd image 'image01':
size 51200 MB in 12800 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.604e8238e1f29
format: 2
features: layering   --可以看到这里没有fast-diff
flags:

2.2启用fast-diff属性

  首先启用这个属性之前,需要先启用其他两个属性分别是exclusive-lock和 object-map。

[root@ceph-osd2 ~]# rbd feature enable rbd/image01 exclusive-lock
[root@ceph-osd2 ~]# rbd feature enable rbd/image01 object-map
[root@ceph-osd2 ~]# rbd feature enable rbd/image01 fast-diff

2.3查看结果

[root@ceph-osd2 ~]# rbd info rbd/image01
rbd image 'image01':
size 51200 MB in 12800 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.604e8238e1f29
format: 2
features: layering, exclusive-lock, object-map, fast-diff  --可以看到有了
flags: object map invalid, fast diff invalid   --可以看到报错了,这个是因为是后开启object map,需要重建一下
[root@ceph-osd2 ~]# rbd  object-map rebuild image01
Object Map Rebuild: 100% complete...done.

#再看一下,OK了

http://www.cndba.cn/Expect-le/article/395

[root@ceph-osd2 ~]# rbd info rbd/image01
rbd image 'image01':
size 51200 MB in 12800 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.604e8238e1f29
format: 2
features: layering, exclusive-lock, object-map, fast-diff
flags:
[root@ceph-osd2 ~]# rbd du rbd/image01
NAME                 PROVISIONED USED 
image01                   51200M    0

3.RBD属性的禁用

  语法和启用相似,只是把enable替换成disable

如:http://www.cndba.cn/Expect-le/article/395

rbd feature disable rbd/image01 fast-diff

4.题外话

http://www.cndba.cn/Expect-le/article/395

  如果想要修改为默认创建iamge的时候就启用fast-diff,可以修改参数达到效果

先查看当前的默认参数的值。

[root@ceph-osd2 ~]#ceph --show-config|grep rbd_default_features
rbd_default_features = 61

61是某个特性对于的数字相加得到的。http://www.cndba.cn/Expect-le/article/395

下面是特性对应的BIT码:http://www.cndba.cn/Expect-le/article/395

属性               BIT码
layering             1
striping             2
exclusive-lock       4
object-map           8
fast-diff            16
deep-flatten         32

那么61就是1+4+8+16+32得到的,那么默认创建的iamge的属性除了没有striping,其他都有。


http://www.cndba.cn/Expect-le/article/395

版权声明:本文为博主原创文章,未经博主允许不得转载。

RBD

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1547952次
  • 积分:1957
  • 等级:核心会员
  • 排名:第4名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ