答:这个具体取决于你的物理服务器的硬件配置,以及虚拟机的资源消耗情况来定。没有固定的算法。
但是一般会有几个限制:
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. 网卡如果服务器只有一个网卡,所有虚拟机的网络流量都是通过一块网卡出去,虚拟机越多,每个虚拟机可以使用的带宽就会越少,这个是需要综合考虑。例如使用多个网卡等。
3. CPUCPU资源基本上都是采用时分复用,也就是时间片的方式来轮询的。
4. 磁盘I/O是本地磁盘还是网络磁盘?如果是网络磁盘,是使用的iSCSI还是光纤?不同的情况,负载是不一样的。
一般一台服务器上能跑多少个虚拟机,需要综合考虑物理服务器,虚拟机负载等方面的整体情况,再来计算。没有一个固定的公式。