虛擬機器個數與物理主機的硬體
做openstack可能都會有個疑問,一臺物理伺服器能建立多少個雲主機?執行多少個雲主機最合適?我也找了好多資料,總結一下。
建立雲主機時,對物理機硬體的使用不限於1:1,因為不同硬體會支援kvm虛擬化的,這個就引入了 overcommit(超配)概念。
舉個例子,宿主機有兩個物理 CPU,上面起了兩個虛機 VM1 和 VM2。 VM1 有兩個 vCPU,VM2 有 4 個 vCPU,現在情況是虛機的 vCPU 總數可以超過物理 CPU 數量,這個叫 CPU overcommit(超配)。
1. 記憶體
記憶體基本上是一個硬限制。物理伺服器的記憶體肯定是有限的。例如,一臺伺服器有8 core,8G記憶體,通常hypervisor會佔用512M記憶體,大概還剩下7.5G記憶體,假設每個虛擬機器的配置是1 core cpu,1G記憶體,那麼在此機器上最多可以執行7個這樣的虛擬機器。 再建立新的虛擬機器時,就會報錯說記憶體不夠。在此情況下,每個虛擬機器在滿負載情況下最多可以擁有1個cpu core的運算能力,1G的記憶體空間。
當然,現在的hypervisor基本上都支援over-commit的功能,也就是說,如果你的記憶體只有8G,但是設定一定比例的overcommit,例如50%,那麼你可以最多分出去12G記憶體。還是上面那個例子,如果設定overcommit為50%,那麼最多可以建立11個虛擬機器(1core,1Gmem)。 在伺服器虛擬化方面,建議overcommit設定的不要太高,一般20%。在桌面虛擬化方面,可以將overcommit設定到50%.
2. 網絡卡
如果伺服器只有一個網絡卡,所有虛擬機器的網路流量都是通過一塊網絡卡出去,虛擬機器越多,每個虛擬機器可以使用的頻寬就會越少,這個是需要綜合考慮。例如使用多個網絡卡等。
在openstack控制節點下,有個/etc/nova/nova.conf檔案
這段話翻譯就是虛擬CPU的物理CPU的分配比的影響所有的CPU過濾器。此配置指定一個全域性分配率,如果沒有額外設定就會按照這個預設值(CPU分配率= 16)來處理。
這樣的話虛擬主機cpu總數 = 物理CPU數 * 16