最后我们对Docker容器和KVM虚拟机重启时间长度进行了测试。我们在实验环境中的物理宿主机分别部署了五个KVM虚拟机和五个Docker容器,每个虚拟机内存为1G,硬盘为10GB,运行64位Ubuntu 16.04.4操作系统。测试结果如图7-7所示。
图7-7 Docker容器与KVM虚拟机重启时间对比
可以看到,Docker容器重启时间长度与KVM虚拟机重启时间长度差别巨大,且随着同时重启数目的增多,这种差别越来越大。这是因为相对Docker只是宿主机系统中的一个进程而言,KVM虚拟机是运行在Hypervisor之上的一个完整的环境,在这个过程中还需要重启虚拟机中的操作系统。
KVM虚拟机重启首先会涉及重启开始时虚拟机资源的清理工作,将系统资源回收和再释放,并不断检查,以防再启动时造成资源前后不一致。之后将会加载完整的镜像文件,加载磁盘文件,读取文件信息,加载内核资源,启动内核模块,启动login程序,最后进入到登录状态。整个过程基本与宿主机重启过程类似。(www.xing528.com)
由以上比较可以看出,在使用性能上,由于Docker属于操作系统级虚拟化,只是相当于一个进程运行在宿主机服务器上,其拥有的CPU计算能力、内存读取能力、网络吞吐能力以及重启的启动时间上均贴近于宿主机具有的能力。而KVM虚拟化方式相对而言属于一种较为重的虚拟化方式,其采用全虚拟化的方式向用户提供了一个完整的运行环境,在一些性能上会造成损耗。当进行VNF部署时,IO密集型需求和计算密集型需求部署于Docker容器中更容易获得最佳性能。但也要看到,KVM虚拟机在使用过程中也具有Docker容器所不具备的一些优势。
KVM虚拟机的资源隔离性要优于Docker容器,这是因为Docker使用cgroup技术实现资隔离的,其只能限制资源消耗的最大值,可能会造成与其他程序共享资源的情况。KVM虚拟机的安全性优于Docker容器,Docker容器的用户拥有该宿主机上所有容器的使用权限,这可能会造成一些安全隐患,而KVM虚拟机拥有独立的操作系统,可以使不同用户拥有不同的操作权限。同时,KVM虚拟化技术还支持热迁移,可以使虚拟机在不停机的情况下单点迁移,而这是目前的Docker技术所不具有的。
综上,KVM虚拟化技术和Docker容器技术在性能和隔离性安全性上各有其优势,应该根据网络功能虚拟化场景的不同,按照需求来决定所采用的虚拟化的手段。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。