运行Docker:物理机vs虚拟机,五方面详细对比!

杨友山 2018-08-07

1.性能

性能包括CPU性能和IO性能,相同配置的情况下,物理机都是胜出的,这点源自于云主机的硬件都是由软件模拟出来的(passthrough硬件给云主机的情况,暂不考虑,因为一般情况下passthrough的云主机很难得到,且成本较高),性能到底损耗多少呢?

国外有人做过相关的测试,使用了一台8核32G Amazon EC2 m4.2xlarge 云主机和一台8核32G的物理机进行对比测试,测试的结果是物理机上比云主机上运行Docker,在IO和CPU方面要快25%-30%,当然这个结果只能代表他的测试场景,但大家也可以参考他的测试方法,在自己的环境里面亲测一下。25%-30%的性能优势,物理机完胜;(附上链接性能测试连接

https://www.stratoscale.com/blog/containers/running-containers-on-bare-metal/ )。

2.多租户

同一个Docker节点,如果多人使用,且对于某些用户的工作负载无法共享内核或者需要监听相同的端口。在这种情况下,因为云主机提供了额外的隔离层,所以是物理机无法满足的,云主机完胜。

3.自动化

自动化,是目前大家都绕不开的话题,因为对于繁琐重复的事情,谁都不喜欢天天干(特别是运维),所以大部分公司,都有运用自动化,差别在于大公司有完整的平台,小公司有一堆脚本。

目前各大云基本都有各自的API,可以非常方便的管理自己的云主机,创建,删除,都非常方便。但是对于物理机的API,这个就非常困难了,因为涉及到不同的型号,使用IPMI也需要做大量的适配,目前能提供物理机租赁的云厂商也没有好用的API提供给用户。所以当需要临时搞活动的时候,结合自动化/API, 将Docker跑在云主机上是能满足需求的方案。

4.灵活性

灵活性包括两方面,一是服务器配置调整;云主机配置调整,只需要关机,页面升配,开机,整个升配过去1-2分钟就能搞定;物理机调整配置,首先需要确认是否支持,比如硬盘槽位够不够,服务器网口够不够,网线是否布好,交换机口够不够等等,即使可以升配,那升级硬盘还要系统里面重新做raid,升级内存还需要开机箱等等,一系列繁琐的操作,最终完成升配那最快也需要几个小时。1-2分钟 PK 几个小时,云主机完胜。

二是用户配额,云主机的配置是灵活的,可定制的,比如某个用户,需要搭建一套测试环境,需要8核16G的资源就够了,这种情况下,一台云主机即可满足。但如果使用物理机的话,就非常不灵活了,因为物理机在采购的时候,通常是一个规格的,不可能穷举不同的规格。所以这一点上,云主机完胜。

5.灾难恢复

硬件故障,这个谁都无法完全避免,那么出现故障的时候,恢复一台云主机和恢复一台物理机哪个更快?目前的公有云,很多都采用的计算节点和存储节点分开的架构,存储节点做了高可用,所以计算节点出现硬件故障时,只需要将云主机做迁移,再开机即可完成故障恢复。时间可以控制在5分钟内完成。

物理机故障恢复,首先需要判断是什么故障,一般硬盘故障都不影响系统(物理机硬盘都会做raid进行保护),内存故障,主板故障,如果有备机,那可以进行更换至少30分钟+,如果没有备机,那就需要报修,派单,上门更换,整个流程走完需要1-2天(这个还取决你购买的服务,服务器是否过保等等);5分钟 PK 1-2天,云主机完胜。

相关推荐