這個具體取決于你的物理服務(wù)器的硬件配置,以及虛擬機的資源消耗情況來定。沒有固定的算法。
但是一般會有幾個限制:
1. 內(nèi)存
內(nèi)存基本上是一個硬限制。物理服務(wù)器的內(nèi)存肯定是有限的。例如,一臺服務(wù)器有8 core, 8G內(nèi)存,通常hypervisor會占用512M內(nèi)存,大概還剩下7.5G內(nèi)存,假設(shè)每個虛擬機的配置是1 core cpu, 1G內(nèi)存,那么在此機器上最多可以運行7個這樣的虛擬機。 再創(chuàng)建新的虛擬機時,就會報錯說內(nèi)存不夠。 在此情況下,每個虛擬機在滿負載情況下最多可以擁有1個cpu core的運算能力,1G的內(nèi)存空間。
當(dāng)然,現(xiàn)在的hypervisor基本上都支持over-commit的功能,也就是說,如果你的內(nèi)存只有8G,但是設(shè)定一定比例的overcommit,例如50%,那么你可以最多分出去12G內(nèi)存。還是上面那個例子,如果設(shè)定overcommit為50%,那么最多可以創(chuàng)建11個虛擬機(1core,1Gmem)。 在服務(wù)器虛擬化方面,建議overcommit設(shè)置的不要太高,一般20%。在桌面虛擬化方面,可以將overcommit設(shè)置到50%.
2. 網(wǎng)卡
如果服務(wù)器只有一個網(wǎng)卡,所有虛擬機的網(wǎng)絡(luò)流量都是通過一塊網(wǎng)卡出去,虛擬機越多,每個虛擬機可以使用的帶寬就會越少,這個是需要綜合考慮。例如使用多個網(wǎng)卡等。
3. CPU
CPU資源基本上都是采用時分復(fù)用,也就是時間片的方式來輪詢的。
4. 磁盤I/O
是本地磁盤還是網(wǎng)絡(luò)磁盤?如果是網(wǎng)絡(luò)磁盤,是使用的iSCSI還是光纖?不同的情況,負載是不一樣的。
一般一臺服務(wù)器上能跑多少個虛擬機,需要綜合考慮物理服務(wù)器,虛擬機負載等方面的整體情況,再來計算。沒有一個固定的公式。