OpenStack卷已使用空间查看方法及等价API咨询
OpenStack卷已使用空间查看方法及等价API咨询
嗨,我来帮你梳理下OpenStack里查看卷已使用空间的办法,还有对应virt-df <domain> --human的API方案:
一、通过CLI工具查看的常用方式
- 如果卷已经挂载到实例上,最简单的办法就是登录实例内部查看:用
openstack server ssh <实例名称/ID>登录后,直接跑df -h命令,就能看到对应挂载点的已用/可用空间,这和virt-df的实际效果是一致的。 - 要是不想登录实例,你可以试试
openstack volume show <卷名称/ID>,不过默认情况下这个命令只显示卷的总容量,不会直接给出已用空间。如果你的OpenStack部署开启了卷使用量统计功能(部分企业部署会配置),可以留意命令输出里properties字段下的相关统计项,可能会有已用空间的记录。
二、对应virt-df的API实现方案
OpenStack原生控制平面并没有直接返回卷已用空间的API——因为卷的已用空间属于实例内部文件系统的状态,Cinder块存储服务本身不会主动跟踪这个数据,这和virt-df直接读取虚拟机磁盘文件系统的逻辑类似,但OpenStack的分布式架构没法直接从控制层做这个操作。不过有两个可行的替代方案:
- 利用Nova API执行实例内命令:通过Nova的
os-execute扩展API(对应CLI的openstack server execute命令),在目标实例内部执行df -h <卷挂载点>,然后获取返回的结果。这个方法最接近virt-df的效果,都是直接获取实例内的磁盘使用情况。需要注意的是,实例要允许远程执行命令的权限,且你要有对应的操作权限。 - 通过计量服务查询(若已配置):如果你的部署开启了Ceilometer或Gnocchi计量服务,并且配置了卷使用量的指标采集,就可以通过Gnocchi的API查询
volume.used和volume.size这两个指标,从而计算出已用空间占比。不过这个依赖于计量服务的配置,不是所有OpenStack环境都默认开启。
额外注意点
- 如果卷还没有挂载到任何实例上,那它的已用空间基本就是0(除非是从带数据的快照创建的卷,但这种情况也得挂载后才能查看实际已用)。
virt-df是从宿主机直接读取虚拟机磁盘镜像的文件系统,而OpenStack因为多租户隔离的原因,控制层不会直接访问宿主机的磁盘文件,所以只能通过上述间接方式获取。
备注:内容来源于stack exchange,提问作者Bani
相关产品推荐
相关产品推荐

