You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Nova Client查询OpenStack主机所属Hypervisor及快速获取含位置的主机列表

使用Nova Client查询OpenStack Hypervisor信息

一、列出某台主机所运行的Hypervisor

如果你需要查看OpenStack中某台计算节点(主机)对应的Hypervisor详情,按以下步骤操作就可以:

  1. 先拿到所有Hypervisor的基础清单,找到目标主机对应的Hypervisor名称或ID:

    nova hypervisor-list
    

    要是你用的是更现代的OpenStack统一CLI(和Nova Client兼容,功能更全),可以换成:

    openstack hypervisor list
    

    这个命令会返回所有Hypervisor的ID、名称、状态等基础信息,很容易定位到目标主机。

  2. 查询目标Hypervisor的详细信息,用上一步得到的名称或ID就行:

    nova hypervisor-show <hypervisor-name-or-id>
    

    或者用统一CLI:

    openstack hypervisor show <hypervisor-name-or-id>
    

    执行后就能看到该Hypervisor的完整信息,比如类型(KVM/QEMU这类)、版本、运行的实例数量、主机IP等。

要是你实际想找的是某个虚拟机实例所在的Hypervisor,可以先查实例的主机信息,再关联过去:

nova show <instance-name-or-id> | grep hypervisor_hostname

拿到hypervisor_hostname之后,再用上面的hypervisor-show命令就能查到对应的Hypervisor详情了。

二、快速获取包含位置信息的Hypervisor主机列表

你说逐个查询每个Hypervisor要花好几分钟,这太低效了——批量获取才是最快的解决方案,这里有两种实用方法:

方法1:用CLI一次性拉取详细列表

直接带--detail参数执行命令,一次请求就能拿到所有Hypervisor的完整信息,包括位置相关的字段(比如可用区、主机IP、自定义的物理位置元数据等):

nova hypervisor-list --detail

用统一CLI的话,换成--long参数:

openstack hypervisor list --long

如果只需要特定的位置相关字段,还可以用--fields参数自定义输出,减少冗余数据,速度会更快:

openstack hypervisor list --fields name,availability_zone,host_ip,location

注:location字段如果是你自定义的Hypervisor元数据,得确保OpenStack环境里已经配置了这个字段;要是指的是可用区,直接用availability_zone就够了。

方法2:调用Nova API批量查询

如果要写脚本自动化处理,直接调用Nova的API接口是最高效的。发送一个GET请求到:

GET /v2.1/os-hypervisors/detail

这个接口会一次性返回所有Hypervisor的详细信息,不用逐个请求。你可以用curl快速测试:

curl -H "X-Auth-Token: <你的认证令牌>" <Nova API地址>/v2.1/os-hypervisors/detail

返回的JSON数据里包含所有需要的信息,用jq工具还能快速过滤出位置相关字段:

curl -H "X-Auth-Token: <你的认证令牌>" <Nova API地址>/v2.1/os-hypervisors/detail | jq '.hypervisors[] | {主机名: .hypervisor_hostname, 可用区: .availability_zone, 主机IP: .host_ip}'

这两种方法都能避免逐个查询的低效问题,几秒内就能拿到所有Hypervisor的位置信息清单。


内容的提问来源于stack exchange,提问作者cmcginty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:53:19