解决Openstack windows创建虚拟机只显示两2个CPU
解决Openstack 创建虚拟机只有两个CPU
现在在部署OpenStack之后会发现按照配额运行Linux的虚拟机没有问题,但是运行windows的虚拟机会发现如果配置2个以上的核则无法识别,windows server也最多支持到4个核。无法满足很多业务的需求,但到底是什么原因造成了这样的现象呢?本文将解释这种现象,并且说明解决的办法。
socket,core和thread的概念
在理解这个概念之前,我们需要首先了解下CPU架构的概念。以物理服务器为例,现在的服务器都成为多路服务器,一般可以有多个CPU插槽,而每个CPU又有多个核,每个核可以超线程运行。所以socket即代表服务器的插槽数,core代表每个CPU的核数,thread代表每个核的线程数。
Windows对于socket的支持
Windows系统对于socket的支持各不相同。一般,桌面版的如win7这些最大支持两路CPU,也就是socket为2。而服务器最大支持四路CPU,即socket为4。
先创建一个虚拟机模板,然后再使用下面的命令;然后再dashboard中更新元数据。再用这个模板去创建新的虚拟机就可以了。
设置vm的cpu toplogy。 max limit类型的设置也可以通过image 属性来设置.
$ nova flavor-key FLAVOR-NAME set hw:cpu_sockets=FLAVOR-SOCKETS
$ nova flavor-key FLAVOR-NAME set hw:cpu_cores=FLAVOR-CORES
$ nova flavor-key FLAVOR-NAME set hw:cpu_threads=FLAVOR-THREADS
$ nova flavor-key FLAVOR-NAME set hw:cpu_max_sockets=FLAVOR-SOCKETS
$ nova flavor-key FLAVOR-NAME set hw:cpu_max_cores=FLAVOR-CORES
$ nova flavor-key FLAVOR-NAME set hw:cpu_max_threads=FLAVOR-THREADS
# FLAVOR-NAME 模板的名称
# sockets x cores x threads = 总vcpu数
# sockets # 标识cpu的插槽数,根据操作系统能支持的主板cpu数量来填。
# cores # cpu的核心数
# threads # 线程。
Where:
FLAVOR-SOCKETS—(Integer) The number of sockets for the guest VM. By this is set to the number of vCPUs requested.
FLAVOR-CORES—(Integer) The number of cores per socket for the guest VM. By this is set to 1.
FLAVOR-THREADS—(Integer) The number of threads per core for the guest VM. By this is set to 1.
或者是使用在线扩容的方式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具