虚拟化老兵介绍虚拟化技术
大家好,我是徐安,一位虚拟化老兵。2010年开始在世纪互联(云快线)接触云计算和虚拟化技术,应该算是国内较早的一批人吧。目前在汉柏科技有限公司,负责服务器虚拟化以及桌面虚拟化产品的技术工作。我将从虚拟clone出来的子盘放在SSD中,D盘放入机械硬盘中。这样的VM启动速度,我们测试的结果是60个桌面,90秒内可启动完。预读机制是指,虚拟机让我读取1k的数据,我自动帮你读1M的数据让在内存中。
如果还嫌VM启动太慢了,那还有办法,我们看一个虚拟机启动的过程无非是这样的:CPU转起来,读取Disk里的数据放入内存中。那启动多个一模一样虚拟机的时候能不能不走这个流程呢,直接把内存和CPU的数据从虚拟机A拷贝到虚拟机B,那理论上虚拟机B的启动速度等于内存对拷的时间。还可以再加速,如果虚拟机基本差不多,有些内存数据根本不会变化,那内存拷贝的时候能不能只是做一个link链接,当子内存某一块有变化时,再从母内存中copy on write即可。
网卡性能加速第一方向是使用vhost-net,网络数据包转发可抛掉qemu-kvm,直接走到vhost设备,在内核中转发到tap设备,然后走host内核的bridge走出去。说的直白点,在创建VM时,给qemu-kvm的网卡设备文件是vhost的。DPDK可加速交换模块OVS的转发效率,这部分我们还没有深入研究,就一笔带过了。
针对KVM的vGPU方案还比较少,时间关系,也一笔带过了。
关于Docker,我们也是刚刚开始研究,算是学吧。有说的不对的地方,请各位大牛批评指正。
左边是常用的对比图,可以明显看出Docker少了Guest OS Kernel这一层,所以它的密度更高,启动速度更快。但用户使用Docker和虚拟机,不会直接使用命令,一般是使用一个系统。所以,正确的对比办法是对比它们的系统。右边是从这么几个方面我认识到的对比。可以明显看出,Docker在启动速度,密度,更新管理上占有比较大的优势,其他方面,比如对Windows的支持行,稳定性,安全性,监控成熟度,高可用性,管理平台成熟度上来看,都低于虚拟化技术。当然,再次强调这个是我个人的认识,不一定正确。欢迎批评指正。
可以看出,这是个群雄涿鹿的时代,主要有OpenStack、Mesos、Kubernetes、Docker公司(社区)四个玩家。它们争夺的当然是云时代,开源平台的份额,也就是云时代的控制权。
笔者一直认为,云消费者并不关心,你这个服务商使用的是虚拟化技术还是Docker,更不关心你自己写的还是基于开源平台改的。他关心的是你的服务是否可靠,是否稳定,是否便宜,是否安全。所以,根据你团队的特点,选择你们自己最擅长的技术,为云消费者提供有竞争力的服务,才是未来我们能否立足的核心。笔者认为融合了Docker与虚拟化的云平台应该包括三个层次:资源管理层,虚拟化层,服务层。当然docker与虚拟化会共用大部分模块,这也是笔者认为要构筑融合平台的好处。资源管理层至少包括:计算资源管理,存储资源管理,网络管理,安全管理。虚拟化层肯定包括:虚拟化引擎(一般情况下就是KVM),容器引擎(一般情况下就是Docker)。服务层至少包括:高可用性,编排管理,容灾备份,服务发现,应用发布,应用升级,自感扩容,编排管理,平台高可用性,生命周期管理,用户权限认证,监控报警,日志审计,负载均衡,镜像管理,系统维护等模块。
Kubernetes的优势在于它是第一个Docker集群管理平台,第一个提出并实现了Pod,Replication,Services Discovery等概念。关于技术细节,笔者在此不做过多介绍,请自行百度,Google,或者自己搭建平台体验。下面的其他方案也相同。Swarm是Docker在2014年12月份新发布的Docker集群管理工具。Swarm可管理Docker集群,管理和分配计算资源,也包含服务发现(可以选用etcd、ZooKeeper、Consul),容器编排等功能。Swarm的优势是与Docker接口API统一。Mesos的目标是下一代数据中心操作系统(DCOS),其最核心功能在于集群管理,计算资源管理,任务分发,原本用作Hadoop等分布式任务管理。,Mesos支持Docker形式的任务调度(主要看中Docker的任务隔离,资源限制,随镜像发布)。在Mesos之上,Marathon可以用作为Docker编排和生命周期管理。为保证云计算领域的领先地位,2015年5月份温哥华峰会上,OpenStack提出了“集成引擎”的思路。其实说白了就是在Kubernetes、Swarm和Mesos的上面套一层,用OpenStack Magnum的接口来管理它们。Op
虚拟化老兵介绍虚拟化技术 来自淘豆网m.daumloan.com转载请标明出处.