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

或者是使用在線擴容的方式
