解决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.

或者是使用在线扩容的方式

posted @ 2021-06-01 16:17  Gshelldon  阅读(1347)  评论(0编辑  收藏  举报