OpenStack 环境中尝试调整虚拟机实例大小(Resize/Flavor Change)时,操作失败。

1. 问题描述

在 OpenStack 环境中尝试调整虚拟机实例大小(Resize/Flavor Change)时,操作失败。
错误信息:

Error: No valid host was found. Reason: No valid host found for reschedulle During resizng... (HTTP 400) (Request-ID: req-...)

2. 原因分析

OpenStack 的 nova-scheduler 在执行 Resize 操作时,默认逻辑是“冷迁移”,即它会尝试在集群中寻找除当前节点以外的其他计算节点来承载新配置的实例。

如果遇到以下情况,就会报错:

  • 单节点环境:集群中只有一个计算节点,调度器找不到“另一个”节点。
  • 资源碎片:其他节点虽然存在,但其剩余资源(CPU/RAM/Disk)不足以满足新 Flavor 的要求。
  • 调度策略限制:未开启允许在同一台主机上进行 Resize。

3. 解决方案(A方案:允许同主机调整大小)

通过修改 Nova 配置文件,允许实例在当前所在的同一台计算节点上完成配置变更。

步骤 1:修改配置文件

控制节点所有计算节点 上编辑 nova.conf

sudo vi /etc/nova/nova.conf

步骤 2:添加/修改配置项

[DEFAULT] 配置段下,确保存在以下参数并设置为 True

[DEFAULT]
# 允许在同一台主机上调整实例大小
allow_resize_to_same_host = True
# (可选) 允许迁移到同一台主机
allow_migrate_to_same_host = True

步骤 3:重启 Nova 服务

为了使配置生效,需要重启相关的 Nova 服务(具体命令取决于你的 OpenStack 版本或安装方式):

  • 计算节点:
systemctl restart openstack-nova-compute

  • 控制节点:
systemctl restart openstack-nova-api

4. 验证结果

重启服务后,再次执行 Resize 操作:

  1. 在 Horizon 面板或 CLI 执行调整大小。
  2. 等待实例状态变为 Verify Resize
  3. 点击 确认调整(Confirm Resize)
  4. 实例成功升级/降级配置,且宿主机保持不变。

5. 总结

在生产环境中,通常建议配置多个计算节点以实现高可用。但在实验环境或边缘节点场景下,开启 allow_resize_to_same_host 是解决“找不到有效主机”报错最直接有效的方法。

posted @ 2026-01-13 17:23  郭小睿  阅读(4)  评论(0)    收藏  举报