首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过python获取ceph的磁盘使用率

如何通过python获取ceph的磁盘使用率
EN

Stack Overflow用户
提问于 2019-09-14 16:46:12
回答 1查看 717关注 0票数 1

我想要获取ceph上我的卷的磁盘使用情况。

代码语言:javascript
复制
rbd -p volumes list
volume-3968ca3d-d55f-47ac-9174-ff2614b0bde1
volume-493eee5c-3cdb-4c1c-b8d0-a24efba0c884

现在我可以通过它的ID来获取使用情况

代码语言:javascript
复制
rbd disk-usage volumes/volume-3968ca3d-d55f-47ac-9174-ff2614b0bde1
NAME                                               PROVISIONED USED
volume-3968ca3d-d55f-47ac-9174-ff2614b0bde1@yasin1       1024M 532M

一切都很正常。我想通过API来执行这个命令。我读了上百遍https://docs.ceph.com/docs/mimic/rados/api/python/,但找不到任何解决方案来理解python的用法。

我能做些什么来获取pyhton的用法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-17 22:16:33

所有内容都在RadosRBD文档中。

您的代码将类似于以下代码片段。它将连接到群集。它将获得其IO上下文,创建一个RBD实例,该实例可以检索大小,并且image_name用于访问最终具有image_names ()方法的图像实例。这将为我们提供图像的最大尺寸。为了计算磁盘使用率,使用diff_iterate方法扫描整个图像,以查找该图像的现有/不存在对象。对于每个对象,都会调用计数器实例的cb_offset方法。如果对象存在,则计数增加对象的长度。对于没有快速差分图的图像,这需要一段时间。使用相同的技术来比较快照。在本例中,diff_iterate的第三个参数指向快照。在我们的例子中,我们喜欢与时间的开始(一个空图像)不同,所以它是无的。

代码语言:javascript
复制
import rados
import rbd

class DiffCounter:
    def __init__(self):
        self.count = 0
    def cb_offset(self, offset, length, exists):
        if exists:
            self.count+=length

def disk_usage():
    cluster = rados.Rados(conffile='/etc/ceph/ceph.conf')
    cluster.connect()
    try:
        ioctx = cluster.open_ioctx('rbd')
        try:
            rbd_inst = rbd.RBD()
            try:
                for image_name in rbd_inst.list(ioctx):
                    image = rbd.Image(ioctx, image_name)
                    max_size = image.size()
                    counter = DiffCounter()
                    image.diff_iterate(0,max_size,None,counter.cb_offset)
                    current_size = counter.count
                    print(image_name,max_size,current_size)
            finally:
                image.close()
        finally:
            ioctx.close()
    finally:
        cluster.shutdown()

if __name__ == '__main__':
    disk_usage()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57933896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档