CloudStack使用KVM时设置虚拟实例的CPU型号
CloudStack 默認情況下 KVM實例的CPU模型可能是QEMU虛擬CPU版本x.x.x,其CPU特性暴露最少。
如果需要設置CPU。在大多數情況下,主機管理員在每個主機配置文件(/etc/CloudStack/agent/agent.properties)中指定客戶CPU配置就足夠了
custom:可以在/usr/share/libvirt/cpu_map.xml中顯式指定受支持的命名模型之一。
host-model:libvirt將識別/usr/share/libvirt/cpu_map.xml中與主機最接近的CPU模型,然后請求額外的CPU標志來完成匹配。這將提供接近最大功能/性能的功能/性能,如果將來賓遷移到具有稍微不同的主機CPU的另一個主機,則該功能/性能將保持良好的可靠性/兼容性。
host-passthrough:libvirt將告訴KVM在沒有修改的情況下通過主機CPU。主機模型的不同,而不僅僅是匹配特征標志,主機CPU的每一個細節都是匹配的。這提供了絕對最好的性能,對于一些檢查低級別CPU細節的應用程序來說也是很重要的,但這是以遷移為代價的:客戶只能遷移到完全匹配的主機CPU上。
有時候 需求不同虛擬主機擁有不同型號的CPU,為什么會有這樣的需求咱也不懂。。。這時候參考KVM和qumu的使用。最終我也沒實現 如何讓cloudstack管理的虛擬機如何在同一個宿主機上有不同CPU型號。。。
在 VMwareWorkstation 創建兩個虛擬機 一個作為計算節點 一個作為 管理節點時。。。發現在設置custom 時。。。有些 模型不支持設置。。。
本來以為 是因為 qemu 版本問題。。。因為cloudstack4.11.0 版本安裝kvm 主機建議 qemu版本 2.0 或以上,但是CentOS7 版本的附帶的qemu-kvm 安裝包是1.5.3 版本。。。于是源碼安裝了 qemu 最后 發現 只有 2.6版本。。。可以正常安裝后使用,但是,依然是有些 CPU模型無法設置。。。
這里 附上 qemu的源碼安裝
安裝依賴包
下載壓縮包。。。https://download.qemu.org/
解壓
tar xf qemu-XXX.tar.bz2進入該解壓后的包
cd qemu-XXX配置安裝。。可以先查看一下幫助
./configure --help ./configure --prefix=/usr/local/qemu --target-list="x86_64-softmmu x86_64-linux-user" --enable-debug這里一定要說。target-list 表示要安裝的 模擬架構 x86_64-softmmu 表示安裝X86_64 位架構的模擬架構命令所需 x86_64-linux-user 安裝該架構的虛擬機所需。 注,一般 我們只用安裝 這兩個就行了。。。因為target list 中安裝的是獨立的命令。并不是包含在一個指令中。
編譯 這里 qemu2.1-2.5 版本 編譯都會 報錯。。。不知為何
make執行安裝
make install安裝路徑在 配置安裝時指定了 /usr/local/qemu 。可以將這里面的 /bin 目錄下命令 添加到環境變量。。。
vim ~/.bashrc將路徑添加到末尾
export PATH=/usr/local/qemu/bin:$PATH重新激活該文件
source ~/.bashrc
如此做 即使之前安裝了 CentOS7自帶的qemu1.5.3 版本。 相應的 qemu-img qemu-io 等命令也會執行/usr/local/qemu/bin/ 中的。。。
然后。。。為了使cloudstack使用新安裝的qemu(這里說一句。cloudstack是使用qemu + kvm + libvirt 來管理KVM主機的。使用的也是這些個開源軟件 但是做了一些封裝和端口處理。)
執行 virsh capabilities 可以看到 一大堆內容。。。但是大多內容先忽視。。。
可以看到 一個 host 大標簽 和 兩個 guest 大標簽。。。host大概是對計算節點主機的一個大概描述。guest表示在該計算節點上創建虛擬機的一個描述。一個是32位,一個是64位。。。 先看guest 可以看到一行。不管是64位還是32位 都有 /usr/libexec/qemu-kvm 大約是創建的虛擬機和 這個指令有關。。。
安裝完新版 qemu 后,我們要把這個指定替換掉。。。可以先備份。然后
ln -s /usr/local/qemu/bin/qemu-system-x86_64 /usr/libexec/qemu-kvm ln -s /usr/local/qemu/libexec/qemu-bridge-helper /usr/libexec/qemu-bridge-helper然后根據該指令查詢可 設置的CPU型號
/usr/libexec/qemu-kvm -cpu ? [root@agent ~]# /usr/libexec/qemu-kvm -cpu ? x86 qemu64 QEMU Virtual CPU version 2.5+ X x86 phenom AMD Phenom(tm) 9550 Quad-Core Processor X x86 core2duo Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz X x86 kvm64 Common KVM processor Y x86 qemu32 QEMU Virtual CPU version 2.5+ x86 kvm32 Common 32-bit KVM processor x86 coreduo Genuine Intel(R) CPU T2600 @ 2.16GHz X x86 486 x86 pentium x86 pentium2 x86 pentium3 x86 athlon QEMU Virtual CPU version 2.5+ X x86 n270 Intel(R) Atom(TM) CPU N270 @ 1.60GHz X x86 Conroe Intel Celeron_4x0 (Conroe/Merom Class Core 2) Y x86 Penryn Intel Core 2 Duo P9xxx (Penryn Class Core 2) Y x86 Nehalem Intel Core i7 9xx (Nehalem Class Core i7) Y x86 Westmere Westmere E56xx/L56xx/X56xx (Nehalem-C) X x86 SandyBridge Intel Xeon E312xx (Sandy Bridge) x86 IvyBridge Intel Xeon E3-12xx v2 (Ivy Bridge) X x86 Haswell-noTSX Intel Core Processor (Haswell, no TSX) x86 Haswell Intel Core Processor (Haswell) x86 Broadwell-noTSX Intel Core Processor (Broadwell, no TSX) x86 Broadwell Intel Core Processor (Broadwell) x86 Opteron_G1 AMD Opteron 240 (Gen 1 Class Opteron) Y x86 Opteron_G2 AMD Opteron 22xx (Gen 2 Class Opteron) X x86 Opteron_G3 AMD Opteron 23xx (Gen 3 Class Opteron) X x86 Opteron_G4 AMD Opteron 62xx class CPU X x86 Opteron_G5 AMD Opteron 63xx class CPU X x86 host KVM processor with all supported host features (only available in KVM mode)后面的XY是我自己加的。。。沒什么意義 懶得刪除了。。。看上去可以選擇的CPU不少啊
設置 /etc/cloudstack/agent/agent.properties 然后發現其中幾個CPU模型設置后 系統VM 還是啟動失敗。。。所以和qemu版本應該無關。即使1.5.3 版本 ,cloudstack也能正常運行。。。
看日志文件 看了好久 也沒發現到底為什么 系統VM會啟動失敗。。。
ERROR 信息倒是有
com.cloud.exception.InsufficientServerCapacityException: Unable to create a deployment for VM[ConsoleProxy|v-6-VM]Scope=interface com.cloud.dc.DataCenter; id=1什么資源 不夠之類的。。。沒什么用
嘗試了好多次。。。發現錯誤信息在 info 中,不是 error
2020-05-06 14:11:35,518 INFO [c.c.v.VirtualMachineManagerImpl] (Work-Job-Executor-45:ctx-335ce82b job-1/job-54 ctx-2f92e5f7) (logid:56d5ba67) Unable to start VM on Host[-1-Routing] due to the CPU is incompatible with host CPU: Host CPU does not provide required features: monitor大抵意思是 創建該CPU模型需要 HOST 就是宿主機 的CPU具有 monitor 特性。。。我TM。找了快兩天原因。竟然是這個。。。查看當前host 的 CPU是不是沒有 該特性
cat /proc/cpuinfoflags 里面就是 host 的CPU的特性。。。要是覺得過多不好看 直接查詢 沒結果就是沒有。。。
egrep "monitor" /proc/cpuinfo果然沒有,可能是因為這個HOST本身就是VMWare Worksations 創建的一個虛擬機的緣故吧。。。正常的主機應該是有的。。。。
另外 virsh capabilities host 大標簽中 feature name 也是該宿主機 的CPU特性 可以看到 并沒有。。。
所以 最后并未能實現 cloudstack 的一個宿主機上不同虛擬機擁有不同的CPU型號。。。只是發現qemu源碼安裝方式然后,發現 高版本qemu 在和cloudstack結合使用穩定性還不如 qemu1.5.3
另 源碼安裝的 qemu 并沒有 make uninstall 命令。需要卸載可以直接刪除 /usr/local/qemu 然后在 source 就是解壓后的文件夾里執行 make clean 即可。。。當然
要把在 /usr/libexec/ 里qemu-kvm 備份恢復過來。。。
總結
以上是生活随笔為你收集整理的CloudStack使用KVM时设置虚拟实例的CPU型号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中的while和do while
- 下一篇: 人类dna信息量_DNA 里面到底可以写