解决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.
或者是使用在线扩容的方式