- 第一部分:常用操作
- 第一部分:常用操作 - 1. 操作集群
- 第一部分:常用操作 - 2. 监控集群
- 第一部分:常用操作 - 3. 监控 OSD
- 第一部分:常用操作 - 4. 监控 PG
- 第一部分:常用操作 - 5. 用户管理
- 第一部分:常用操作 - 6. 增加/删除 Monitor
- 第一部分:常用操作 - 7. 增加/删除 OSD
- 第一部分:常用操作 - 8. 操作 Pool
- 第一部分:常用操作 - 9. 管理 Crushmap
- 第一部分:常用操作 - 10. 修改 MON IP
- 第一部分:常用操作 - 11. 修改集群配置
- 第一部分:常用操作 - 12. 日志和调试
- 第二部分:故障处理
- 第二部分:故障处理 - 1. 常见 MON 故障处理
- 第二部分:故障处理 - 2. 常见 OSD 故障处理
- 第二部分:故障处理 - 3. 常见 PG 故障处理
- 第二部分:故障处理 - 4. 全局 Ceph 节点宕机处理
- 第二部分:故障处理 - 5. 单个 Ceph 节点宕机处理
- 第三部分:Ceph 进阶
- 第三部分:Ceph 进阶 - 1. PG 和 PGP 的区别
- 第三部分:Ceph 进阶 - 2. Monitor 的备份和恢复
- 第三部分:Ceph 进阶 - 3. 修改 Cinder/Glance 进程的最大可用 FD
- 第三部分:Ceph 进阶 - 4. 更换 OSD Journal
- 第三部分:Ceph 进阶 - 5. 清空 OSD 的分区表后如何恢复
- 第三部分:Ceph 进阶 - 6. PG 卡在 active + remapped 状态
- 第三部分:Ceph 进阶 - 7. 查看 RBD 镜像的位置
- 第三部分:Ceph 进阶 - 8. 查看 RBD 镜像的实际大小
- 第三部分:Ceph 进阶 - 9. 统计 OSD 上 PG 的数量
- 第三部分:Ceph 进阶 - 10. 查看使用 RBD 镜像的客户端
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第三部分:Ceph 进阶 - 8. 查看 RBD 镜像的实际大小
本篇内容来自 zphj1987 —— 如何统计 Ceph 的 RBD 真实使用容量
Ceph 的 rbd 一直有个问题就是无法清楚的知道这个分配的空间里面到底使用了多少,使用 rbd info
命令查询出来的容量是预分配的总容量而非实际使用容量。在 Jewel 版中提供了一个新的接口去查询,对于老版本来说可能同样有这个需求,本篇将详细介绍如何解决这个问题。
目前已知的有三种查询方法:
- 使用
rbd du
查询(Jewel 版才支持) - 使用
rbd diff
- 根据对象统计的方法进行统计
方法一:使用 rbd du 查询
此命令在 Jewel 版中可用。
root@mon:~# rbd du rbd/mysql-img
NAME PROVISIONED USED
test 52.8047M 0
不过需要注意,执行此命令要求开启 rbd image 的如下属性:
layering, exclusive-lock, object-map, fast-diff
具体使用可参考 这篇文章 。
方法二:使用 rbd diff
root@mon:~# rbd diff rbd/mysql-img | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
52.8047 MB
方法三:根据对象统计的方法进行统计
在集群非常大的时候,再按上面的方法一个个查询,需要花很长的时间,并且需要时不时的跟集群进行交互。方法三是把统计数据一次获取下来,然后进行数据的统计分析,从而获取结果,获取的粒度是以存储池为基准的。
拿到所有对象的信息:
for obj in `rados -p rbd ls`;do rados -p rbd stat $obj >> obj.txt;done
这个获取的时间长短是根据对象的多少来的,如果担心出问题,可以换个终端查看进度:
tail -f obj.txt
获取 RBD 的镜像列表:
rbd -p rbd ls
img2
mysql-img
volume-e5376906-7a95-48bb-a1c6-bb694b4f4813.backup.base
获取 RBD 的镜像的 prefix :
root@mon:~# for a in `rbd -p rbd ls`;do echo $a ;rbd -p rbd info $a|grep prefix |awk '{print $2}' ;done
img2
rb.0.f4730.2ae8944a
mysql-img
rb.0.f4652.2ae8944a
volume-e5376906-7a95-48bb-a1c6-bb694b4f4813.backup.base
rbd_data.23a53c28fb938f
获取指定RBD镜像的大小:
root@mon:~# cat obj.txt |grep rb.0.f4652.2ae8944a |awk '{ SUM += $6 } END { print SUM/1024/1024 " MB" }'
52.8047 MB
将上面的汇总,使用脚本一次查询出指定存储池中所有镜像的大小:
#!/bin/bash
# USAGE:./get_used.sh <poolname>
objfile=obj.txt
Poolname=${1}
echo "In the pool ${Poolname}":
for obj in `rados -p $Poolname ls`
do
rados -p $Poolname stat $obj >> $objfile
done
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@mon:~# ./get_used.sh rbd
In the pool rbd:
img2 rb.0.f4730.2ae8944a
Used: 3076 MB
mysql-img rb.0.f4652.2ae8944a
Used: 158.414 MB
volume-e5376906-7a95-48bb-a1c6-bb694b4f4813.backup.base rbd_data.23a53c28fb938f
Used: 96 MB
注意这里只统计了 image 里面的真实容量,如果是用了链接 clone 的,存在容量复用的问题,需要自己看是否需要统计那一部分的对象,方法同上。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论