我想跳出来,站在一个更高一点的高度看看整个数据中心或者整个云计算。去除掉一个个技术细节后,会是什么样子?至少我期望的样子。数据中心无论有没有云计算、无论有没有虚拟化、无论是Windows还是Linux,无论是Web服务器还是数据库服务器,数据中心只做三件事情,数据计算、数据存储、数据传输。
以下文字是我的一些想法,而且我认为在现有的技术上可以实现我所期望的云计算,那么我想象的云计算到底应该是什么样子呢?以下分为两块来展开,先是以VMware来举例,说说从虚拟化到云计算;再说说我想象的云计算。
从虚拟化到云计算
说说云计算之前,我们先说说虚拟化,云计算和虚拟化还是有5毛钱的关系的,说说虚拟化就不得不说说VMware,VMware虚拟化部署在商业环境中,已经有十几年的时间了,从2000年左右。无论他们的产品历史怎么发展,但是在我看来大概有以下三个关键的里程碑。
1、一个物理主机上建立虚拟层,并且在虚拟层上创建若干硬件资源,在每个虚拟硬件资源上运行若干个操作系统,每个操作系统彼此独立。
这个时候的虚拟化***的优势是充分利用剩余的计算资源,从开发环境、测试环境一步步的向生产系统迁移。
2、几乎同时和虚拟化发展起来的SAN技术越来越成熟,而且通过SAN,人们可以将避免单物理服务器的故障,可以共享数据来实现更高速的集群计算,数据统一管理等。虚拟化不可避免的用到SAN技术,原先2台物理主机之间的HA是依赖才操作系统的HA功能或者第三方的HA软件,但是VMware推出了与上层操作系统和应用无关的vMotion(编者按,还有HA和FT)。在我看来vMotion这个功能在很大程度上帮助VM真正成为虚拟化的领头羊。
3、VMware VSAN,这个上市时间并不长的软件,成为今天的VMware云计算的一个核心组件。为***的资源池化提供了技术保障。也可以说,VSAN是一个里程碑的产品。
以上是我认为VMware的3个重要阶段。按照从虚拟化到云计算的过程,当然还有很多新功能不断被增加进来,网络虚拟化,集中的管理功能等等。
我想象中的云计算
虚拟化到云计算,为什么这么发展?
数据和CPU的关系决定了今天的云计算的结构,我们通常考虑的事情是数据属于哪个计算节点(CPU),数据在哪个计算节点上运行。原先通过SAN来实现数据耦合不同的物理主机,但是SAN的局限性决定了不可能扩大到云计算的规模(速度、主机数)。于是VSAN可以在更大的网络规模上可以实现数据耦合不同的物理主机。由于VSAN的多副本,可以轻松的实现数据和其它主机的耦合。
(单机虚拟化,数据仅仅属于这个主机,数据和计算紧耦合)
(数据通过SAN被投射给不同的物理主机,而且因为SAN可以灵活的按照各种策略将数据投射到不同的物理主机)
(由于正本和副本数据存储在不同的物理主机上,可以按照需要来实现数据和物理主机的耦合,比如上图红色数据耦合在主机1,如果主机1宕机,数据可以立即耦合到主机2)
由于有虚拟层的存在,所以数据可以被轻松的耦合到任何一个物理主机,再分配给任何一台虚拟机,我认为云计算就是数据更灵活的和计算单元(物理CPU或虚拟CPU)耦合。计算虚拟化为计算提供灵活的粒度,比如双路至强CPU运行1个VM或者20个VM。
因此,问题来了,
1) 有没有可能不需要虚拟化实现灵活的数据和计算单元的耦合?
2) 有没有可能没有虚拟化,同时又能实现灵活的计算粒度?
至于为什么要去掉虚拟化呢?这是另外一个话题,改天再说。
(现在的云计算,图片中的一个杯子就是一台物理主机,按照VM+APP的需求来填充,直到填充到每个杯子差不多满就可以了(CPU利用率均衡)。)
(我想象的云计算是这样的,用不同的计算单元来装不同的应用。有大杯子(4路或者8路服务器),也有小杯子(Atom或者ARM CPU),什么样的应用装在什么样的杯子里,可以自动的或者手动的)
希望上面这幅图可以清晰表达我想说的事情。我期望的云计算是什么样子呢?
- 云计算环境中没有虚拟层;
- 单计算节点功耗从5W到1000W,X86 、ARM、Power PC可以同时存在;
- 存储资源池化,而且充分发挥每一个介质的性能;
- 云计算以数据为中心,不同算力的计算节点来自动适配不同的OS+应用。
- 现有的OS和应用不需要做出任何改变,可以是Linux、Windows或VM等;
- 可以实现自动化、易管理、硬件资源透明、安全、可靠等等;
- 未来IO统一后甚至可以实现DSA(Direct Storage Access),从存储直接提供数据给客户端。
那么我的想法怎么才能实现呢?呵呵,改天再说。
重复一句我以前说过的话,数据中心三件事,数据计算、数据存储、数据传输。