前言

ceph的rbd一直有个问题就是无法清楚的知道这个分配的空间里面到底使用了多少,这个在Jewel里面提供了一个新的接口去查询,对于老版本来说可能同样有这个需求,本篇将详细介绍如何解决这个问题

查询的各种方法

目前已知的有三种方法

  • 1、使用rbd du查询(Jewel才支持)
  • 2、使用rbd diff
  • 3、根据对象统计的方法进行统计

详细介绍

方法一:使用rbd du查询

这个参考我之前的文章:查询rbd的使用容量

方法二:使用rbd diff

[root@lab8106 ~]# rbd diff rbd/zp | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
828.844 MB

方法三:根据对象统计的方法进行统计

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

拿到所有对象的信息

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

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

tail -f  obj.txt

获取RBD的镜像列表

[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的,存在容量复用的问题,需要自己看是否需要统计那一部分的对象,方法同上

总结

对于已存在的系统,并且数据量很大的系统,不要频繁的去做请求,最好把统计请求,集中起来,并且就单线程的处理,慢一点不要紧,然后拉取到数据后,慢慢处理,这样能把影响降低到最少,可以在最不忙的时候去进行相关的操作

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-09-08

如何统计Ceph的RBD真实使用容量的更多相关文章

  1. ceph查询rbd的使用容量(快速)

    ceph在Infernalis加入了一个功能是查询rbd的块设备的使用的大小,默认是可以查询的,但是无法快速查询,那么我们来看看这个功能是怎么开启的 ceph版本 root@lab8107:~/cep ...

  2. k8s使用ceph的rbd作后端存储

    k8s使用rbd作后端存储 k8s里的存储方式主要有三种.分别是volume.persistent volumes和dynamic volume provisioning. volume: 就是直接挂 ...

  3. ceph中rbd的增量备份和恢复

    ceph中rbd的增量备份和恢复 ceph的文档地址:Ceph Documentation ​ 在调研OpenStack中虚机的备份和恢复时,发现OpenStack和ceph紧密结合,使用ceph做O ...

  4. 006 管理Ceph的RBD块设备

    一, Ceph RBD的特性 支持完整和增量的快照 自动精简配置 写时复制克隆 动态调整大小 二.RBD基本应用 2.1 创建RBD池 [root@ceph2 ceph]# ceph osd pool ...

  5. ceph的rbd备份软件ceph-backup

    teralytics是一家国外的大数据公司,这个是他们开源的ceph的备份的工具,在twitter上搜索相关信息的时候看到,觉得不错就拿来试用一番 这是个什么软件 一个用来备份 ceph 的 rbd ...

  6. java操作ceph之rbd基本操作

    一.安装librados和librbd Ceph存储集群提供了基本的存储服务,允许Ceph在一个统一的系统中唯一地传送对象,块和文件存储. 但是,不限于使用RESTful,块或POSIX接口. 基于R ...

  7. xenserver使用ceph的rbd的方法

    首先安装的xenserver6.5的环境,看到有地方有提到这个上面可以安装rbd的支持,网上有一种方式是libvirt+kvm方式,因为ceph对libviet是原生支持的,但是xenserver底层 ...

  8. ceph 006 rbd高级特性 rbd快照 镜像克隆 rbd缓存 rbd增量备份 rbd镜像单向同步

    版本 [root@clienta ~]# ceph -v ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57 ...

  9. 分布式存储系统之Ceph集群RBD基础使用

    前文我们了解了Ceph集群cephx认证和授权相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16748149.html:今天我们来聊一聊ceph集群的 ...

随机推荐

  1. python 使用pyinstaller打包程序

    使用pyinstaller 打包.py脚本,在其他计算机可以直接运行,不需要python环境 安装pyinstaller库 pip install pystaller 打包程序 pyinstaller ...

  2. PO模式学习笔记

    框架: 1.PO模式应用(测试对象和测试用例分离)(写到简历中) 2.引入ddt 3.深入分层:测试数据分离 4.遵循原则:测试用例的独立性 5.深入分层:元素定位分离 6.框架优化:提取basepa ...

  3. 再过两年C语言就50岁了,这么老的编程语言怎么还没有过时?

    再过两年,C语言将迎来它的 50 岁生日,同样进行周年庆的还有 PL/M和Prolog.不过,C语言至今仍然非常受欢迎,它在几乎所有编程语言中的受欢迎程度,始终排在前十名.   大多数操作系统的内核( ...

  4. 什么是C和C++标准——小白必看

    本文简要介绍编写C/C ++应用程序的领域,标准库的作用以及它是如何在各种操作系统中实现的. 我已经接触C++一段时间了,一开始就让我感到疑惑的是其内部结构:我所使用的内核函数和类从何而来? 谁发明了 ...

  5. 三色二叉树 ---伪树形dp

    题目描述 一棵二叉树可以按照如下规则表示成一个由0.1.2组成的字符序列,我们称之为"二叉树序列S": 0 该树没有子节点 1S1 该树有一个子节点,S1为其二叉树序列 1S1S2 ...

  6. logstash -grok插件语法介绍

      介绍 logstash拥有丰富的filter插件,它们扩展了进入过滤器的原始数据,进行复杂的逻辑处理,甚至可以无中生有的添加新的 logstash 事件到后续的流程中去!Grok 是 Logsta ...

  7. Helium文档2-WebUI自动化-常用方法介绍

    学习思路: 查看github项目的源码,每个方法都有介绍及使用说明 https://github.com/mherrmann/selenium-python-helium/blob/master/he ...

  8. JS实现页面计时

    前言 计时功能在网页上是非常多的,现在我就用原生JS做个计时功能吧 HTML <div><label>得到毫</label> <h5></h5&g ...

  9. 配置通过Console口登录交换机

    组网图形 图1 通过Console口登录交换机组网图 通过Console口登录交换机简介 通过Console口登录交换机是指使用专门的Console通信线缆将用户PC的串口与交换机的Console口相 ...

  10. Paillier同态加密的介绍以及c++实现

    我们先来简短认识一下Paillier同态加密算法: 如果就这么按照定义来用最简朴的c++程序写 就像这样: #include <iostream> #include <math.h& ...