查看RBD鏡像的實際大小


本篇內容來自 zphj1987 —— 如何統計 Ceph 的 RBD 真實使用容量

Ceph 的 rbd 一直有個問題就是無法清楚的知道這個分配的空間里面到底使用了多少,使用 rbd info 命令查詢出來的容量是預分配的總容量而非實際使用容量。在 Jewel 版中提供了一個新的接口去查詢,對於老版本來說可能同樣有這個需求,本篇將詳細介紹如何解決這個問題。

目前已知的有三種查詢方法:

  1. 使用 rbd du 查詢(Jewel 版才支持)
  2. 使用 rbd diff
  3. 根據對象統計的方法進行統計

方法一:使用 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 的,存在容量復用的問題,需要自己看是否需要統計那一部分的對象,方法同上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM