第三章现代数据中心之基础架构篇
现代数据中心计算技术与实践
计算技术概述
顾名思义,计算机(电脑)主要代替人脑实现计算功能,帮忙人类完成复杂计算的任务。现代计算机发展不到100年时间,尤其是最近半个世纪电子计算机的迅猛发展,将人类从重复且繁重的计算处理中解脱出来,给人类生活品质带来质的飞跃,人类文明得到空前的繁荣。
“计算机(computer)”原本是一个工种的称呼,主要是女性从事的职业,其任务是执行所需的计算,诸如导航、重复计算的潮汐表和天文历书行星位置。数百年间人类不断寻找一种方式,即一种机制和工具可以重复执行计算任务。
算盘是人类计算的早期工具。现存最古老的算盘是由巴比伦人在公元前300年发明,一个熟练的算盘操作人员做加减法的速度可以匹配手摇机械计算器,但乘法和除法要慢很多。1617年一个名叫约翰·奈皮尔的苏格兰人发明了对数,这种技术通过加法执行乘法,每个操作数对数的原始值来自一张表格。根据奈皮尔的发明诞生了现今的计算尺(如图3.1所示),直到1960年NASA工程师仍然使用计算尺,通过水星、双子座和阿波罗号把人类送上月球。
图3.1奈皮尔对数计算尺
莱布尼茨成功发明了集四大功能(加法,减法,乘法和除法)于一体的阶梯计算器,莱布尼茨是第一个提倡使用二进制数字的人。
1801年,法国人Jacquard发明了动力织机,它可以自动地从穿孔的木卡片上读取它的织法。1890年,Hollerith发明的装置是由一个能感知孔的读卡器、驱动齿轮计算装置(类似汽车里程表)和一个大表盘来显示结果。Hollerith成立了制表计算公司,几经收购后,最终成为国际商业机器公司(IBM)。在2000年总统选举时,佛罗里达州依然使用这种“打孔”计数。
1936年由图灵提出一种抽象的计算模型,将人们使用纸笔进行数学计算的过程进行抽象,由一台的机器替代人们进行数学运算,为了模拟人的这种计算,图灵构造出一台假想的机器,即图灵机(如图3.2所示),包括一条纸带、一个读写头、一个状态寄存器和一套控制规则。
图3.2图灵机原理图
第二次世界大战时,美国军方想要比机械计算器更好的工具,于是愿意投资实现自动计算。最早尝试建立电子计算机(即无齿轮、凸轮、皮带、轴等的数字计算机)的是爱荷华州立大学的数学物理学教授J.V.Atanasoff;到1941年,他成功地发明了一台机器,可以解29个未知数的方程式。这台机器第一次将数据存储在电容器上,这就是今天在其内存存储数据的计算机的鼻祖。
1944年,哈佛大学和IBM成功研制了计算机HarvardMarkⅠ。这是美国的第一个可编程数字计算机,但它不是纯粹的电子计算机,是由开关、继电器、转动轴、离合器组成。
MarkⅠ能够操作23位数字,它可以在0.3s内完成加减任意2个数,乘法需要4s,除法需要10s;与之对比,2000年左右的计算机能够每秒处理10亿次加减法。尽管MarkI拥有75万个组件,它只能存储72个数字;现在PC能够轻易地在内存存储16GB数据,在硬盘存储4TB数据,从内存获取数据耗时为μs级别,在硬盘中获取数据耗时为ms级别,这种速度显然是机械驱动计算机无法达到的,这也是为什么电子计算将代替其机械机制的“前辈”计算机。
集成电路的主要优势不是不再使用晶体管开关,而是数以百万计的晶体管集成批量生产,集成电路上所有元素的装配都是通过光学膜来区分电路层,这加快了计算机的装配进程,并降低了成本,从而使大家负担得起。
就此计算机开始迈入电子时代。1965年戈登摩尔预言,半导体芯片上集成的晶体管和电阻数量将每年增加一倍,之后调整为每18~24个月。我们称为摩尔定律,这一定律揭示了信息技术发展的速度。
1953年,GraceHopper创造了第一个高级语言“FlowMatic”(一种商用数据处理计算机语言)。这种语言最终造成臭名昭著的“千年虫”问题。高级语言被设计为比计算机所理解的二进制语言更容易被人类接受,任何一种高级语言如果没有编译器将其转换为二进制语言是没有任何意义的,因此GraceHopper也创建了世界上第一个编译器。
编程除了二进制语言外,慢慢演变出汇编语言、Basic、PHP、Perl、Python、C、C++、Java、Ruby、Swift等高级编程语言,这些语言越来越贴近我们真实语言,高级语言的发展极大地丰富了应用,提高了工作效率。
一直以来,人类都在不断探索新的计算技术,从机械到电子,这些也为现代计算机技术的出现奠定了基础,从二进制语言到操作系统及云化技术,不断地简化管理复杂度并完善人类的体验。
计算技术发展与展望
计算装置从手工发展到机械再到电子模式,计算形式百花齐放,从大型机、小型机、x86平台服务器到现在的各种移动终端;从大型机虚拟出多个主机,到高性能计算和云计算将多个主机整合成一个性能更强更统一的计算资源供人类任意调用;使用计算机的人群从军方和科研等特定人员,已经普及到人类的生活每一个角落。现代计算机经历短短一个甲子年,冯·诺依曼的体系架构虽然没有变化,技术的发展遵循摩尔定律,使得电子计算机走下神坛,存在的形式不断演变,往越来越便携的终端方向发展,最终成为人类的一个“器官”,即1988年马克·威瑟提出的泛在计算,各种形式的终端嵌入了感知、处理能力,各设备之间通过网络互联并协同工作。需要更大的处理能力时,强大的云计算方向将成为人类的“核电站”,处理后的数据通过网络分发到各个终端,计算也将出现更多类似生物、量子计算的形式,但目前尚未不成熟,企业级现代数据中心仍将延续摩尔定律继续前行。
计算的发展总体划分为三个阶段:主机终端时代,网络互联时代,泛在计算时代。第一次浪潮是很多人共享的大/小型机;目前我们正处于第二次浪潮,个人计算机迅猛发展,人和机器互动的时代;后面就是泛在计算阶段,计算无处不在的时代,有人称之为计算机的第三次浪潮。
主机终端阶段
主机终端相对处理能力强、系统稳定,但较为封闭。资源分配存在两个不同的阶段,由于性能的问题,前期分时利用资源为主,后期性能提升采用虚拟化技术,对计算资源进行切分。
主机阶段的出现是以1946年2月14日诞生于美国宾夕法尼亚大学的ENIAC为标志,ENIAC是世界上第一台具备现代电子计算机概念的设备,具备17468根电子管、7200根晶体二极管、1500个中转、70000个电阻器、10000个电容器、1500个继电器和6000多个开关,处理能力每秒5000次加法或400次乘法,达到机械式计算机的1000倍、手工计算数万倍。ENIAC的诞生标志着人类摆脱人脑和机械计算的年代,进入电子计算的时代,开启崭新的纪元。
大型机硬件
大型机是安装在一个封闭的盒子中的计算系统。大型机最早是指IBM的System/360计算机。1964年4月7日,IBM第一台大型机System/360诞生了,虽然投资了高达50亿美元来开发,但后来被证实是改变商业的革命性产品,直到今天,IBM大型机经历了近一甲子的风雨还在政府机构、银行等企事业支撑核心业务,如人口的统计,客户行为的统计分析,企业ERP和银行在线交易处理等。
目前大型机主要是IBM的SystemZ系列产品,其一直服务于政府和企业的核心应用,全球500强的企业大部分还是IBMSystemZ的客户,全球重要核心数据仍有一部分运行在IBM大型机上。
IBM占据了全球90%的大型机市场,剩下的厂商包括:ClearPath大型机、Unisys大型机等。2000年以后,日立和IBM合作生产Z800系列,最后日立独立生产自己的大型机设备,惠普收购Tandem公司而拥有自己的NonStop大型机系统。在欧洲市场还能见到富士通的BS2000和ICLVME大型机。2012年戴尔也看上了大型机市场,开始涉足IBM长期统治的大型机市场。
但近年来随着云计算和大数据的兴起、x86服务器性能的快速崛起,大型机面临基础架构转型的冲击,大型机是否会退出历史舞台成为重要的问题,根据历史合久必分、分久必合的经验,大型机发展到小型机再到x86,虽然单机物理尺寸变小,但有些性能反而增强。
大型机芯片
IBM在1958年发布第一台全晶体管计算机RCA501。次年IBM公司推出了7070、7090等大型晶体管计算机以及I401等中小型晶体管计算机。1964年,IBM继续研制成功第一台大型机IBMSystem/360系列,采用大规模集成电路工艺。
面向航空、金融、政府等行业关键业务,2010年IBM发布了SystemZEnterprise196大型机。新型主机的处理器为四核5.2GHz主频,是目前单核主频最快的处理器。
与此对应的,另一个全球大型机巨头Unisys2014年宣布停止使用已有数十年的大型机专用处理器,转而改成英特尔处理器。Unisys将拥有12款安装至强E52600v2的高端服务器。这些服务器面向海关、银行、交通和电信部门客户,但这些高端服务器仍运行之前遗留的应用程序,应用程序因为处理器指令集的不同将面临兼容性问题。
因此在选择技术方向非常重要,必须具有前瞻性,如果原厂商的技术路线发生突变,用户的应用延续性很难保持。
大型机虚拟化技术
由于目前虚拟化技术在x86服务器上的迅速普及已经引发了虚拟化技术和云计算的热潮。无论是软件还是硬件的虚拟化技术最初只是应用在大型主机上,后来才迁移到x86平台上。以下是虚拟化发展的历程。
1965年,在IBM公司内部代码为“M44/44X”的项目中,起初仅定义虚拟内存管理机制,应用程序可以运行在虚拟的内存中,为多个用户的应用提供独立的内存资源。1968年IBM首次发明全面虚拟化概念并应用在C67大型机上,发明了操作系统虚拟机技术,允许在单台主机上并行运行多个操作系统,并通过虚拟机监视器虚拟所有的硬件接口,让更多使用者充分地利用昂贵的大型机资源。
1984年,Amdahl、HDS与IBM联合发明了LPAR(logicalpartition,逻辑分区)技术并应用在IBM390大型机上。2001年IBM将LPAR技术移植迁移至P和I系列小型机上。1998年VMware将虚拟化技术引入到x86架构上,从此虚拟化技术慢慢地在普通服务器上开始落地。
IBM是虚拟机技术的鼻祖,并涌现了一批具备虚拟功能的大型机,如IBM360/67、VM/370等型号,通过虚拟机监控器的技术实现物理硬件虚拟化,产生许多虚拟机实例运行在独立的操作系统上。
虚拟化技术在成本控制上的巨大优势,使得RISC服务器与小型机也采用虚拟化技术。1999年IBM在其AS/400上提出逻辑分区(LPAR)技术和集群高可用性解决方案,使得具有LPAR逻辑分区技术的单台AS/400如同12台物理的服务器。2002年IBM更进一步地在AIXv5.2版本上实现了动态逻辑分区,即热分区技术,允许操作系统不重启时重新划分CPU、内存和其他系统资源分区,这种类似现在热插拔的技术,使得系统管理更加敏捷,提升效率,降低总体拥有成本。
虽然HP、Sun等公司在自己的RISC服务器上采用虚拟化技术,但毕竟使用大型机和小型机的用户占比不高,主要厂商的产品和技术之间并不兼容,虚拟化技术一直不太被关注,直到VMware公司的出现。
大型机操作系统
大型机前期由于计算机设备昂贵,用户群也集中在政府机构,并没有批量生产,厂商为每一个型号的计算机创建不同的操作系统,因而造成兼容性问题,此计算机的程序无法移植到新一代计算机中运行,直到1964年IBM经典的大型机System/360的出现,IBM才给它做出通用统一的操作系统OS/360,部署在同系列主机中,并且其新的产品线也以OS/360为基础改进操作系统,确保代码在不同系列主机上运行的兼容性。
OS/360出现时引入两大重要的概念,一是引入存储设备,永久保存数据的硬盘驱动器;二是分时概念的诞生,这是现在VMware虚拟化技术的核心,分时技术让所有用户或程序感觉自己独占主机的资源。
目前在通用计算机上的操作系统主要有两大类:类UNIX操作系统和微软Windows操作系统;其他的嵌入式操作系统采用多样的系统。
类UNIX是一个操作系统集合,主要包括UNIX、BSD、SystemV和Linux等操作系统。UNIX允许厂商在一个定义前提下自由地开发自己的操作系统版本,UNIX系统运行在从大型机到嵌入式系统的各种处理器架构上,主要用于稳定性和可靠性要求苛刻的环境下。
和大型机UNIX不同,开源软件例如Linux和BSD逐步开始流行,并且已经进入桌面操作系统领域。APPLE公司的MacOSX是一个BSD特例,其也是一个闭源操作系统。和开源类UNIX操作系统不同,HPUX和AIX是专门设计并仅运行在客户购买的设备上的商业操作系统,仅有一些特殊的如Solaris可以运行在厂商设备和基于工业标准的PC上,主流的UNIX操作系统正在慢慢兼容和融合。
云操作系统将计算能力融合起来,变成统一计算资源池,高端存储到中低端存储再到分布式存储,软件定义将其融合起来变成统一存储资源池。大型机将转向另一个方向,即超融合方向,实现计算、网络加存储结合整合为一体。目前大型机支撑的应用已经萎缩到保险、证券、银行、交通运输等行业,其对可用性和可靠性要求严苛。
小型机硬件
随着大型机影响的不断扩大,日常生活对计算资源的需求也扩大,但毕竟大型机的采购和运维成本让人望而却步,因此迫使厂商研发性能强大且成本较低的小型机。传统的小型机是采用RISC、MIPS等专用处理器、主要采用UNIX操作系统的服务器,不同于大型机和现在的x86服务器,通俗称为RISC和UNIX服务器,图3.3是IBM公司的机架式Power系列UNIX小型机的外形。
图3.3IBM机架式Power系列UNIX小型机
20世纪60年代,DEC公司首次发布高性能的计算产品,即康柏UNIX小型机的前期产品,后来各家陆续开发自己的产品,形成各自的体系结构,造成严重的兼容性问题。
基本上各家厂商的UNIX服务器使用自己的UNIX操作系统和专用处理器,例如基于Power芯片的AIX是IBM小型机的专用操作系统,HP采用的HPUX操作系统运行在PARISC架构和安腾处理器,Solaris操作系统是SUN公司的,并运行在SPARC处理器上。由于单台UNIX服务器的处理能力和UNIX操作系统稳定性要高于单台x86服务器和通用操作系统,因此还有用户在使用小型机。
早期的小型机各厂商均采用自己的专利,使用专用的处理器指令系统和操作系统,由于兼容性问题严重,各厂商除了采用自己的专用处理器,甚至其I/O总线也不同,如Fujitsu(富士通)公司的I/O总线标准是PCI,Sun的I/O总线标准是SBUS(但SUN的模式已经走向消亡),这些差异也造成网卡、显示卡和SCSI卡均不能兼容。随着20世纪80年代UNIX操作系统兴起后,一些小型厂商的小型机改用了UNIX系统。
20世纪80年代开始,网络化和微小化的趋势明显,传统的大型机集中式处理和主机终端模式越来越不能适应分布式应用和数据共享的要求,因此传统的大型机和小型机无法解决新的问题,小型机和大型机开始改变访问模式,例如以C/S模式只提供处理的服务。
从全球的UNIX服务器出货量中发现,2011年第三季度开始小型机开始走下巅峰,占据霸主地位的IBM小型机也日益没落不可逆转。现在x86处理器在各方面性能越来越接近小型机,但x86的开放性、标准化等优势非常明显,这也能解释HPSuperdome后来转向x86架构,IBM则开放其Power指令,出现PowerLinux和OpenPower。
不难看出,如今的小型机正在向着标准化、开放化的路线演进。这其中x86是一个大方向,即便没采用x86,他们也在朝着更开放的方向发展,如OpenPower、PowerLinux。越来越多的核心数据库等应用渐渐地往x86平台迁移。
小型机芯片
小型机采用专门的处理器,完全不同于普通PC服务器的x86架构,根据各厂商主要分为几类。
IBM的PowerPC处理器。20世纪90年代,IBM、Motorola和Apple联合开发PowerPC芯片,并基于PowerPC设计多处理器计算机。PowerPC架构具备弹性伸缩的特点,刚开始PowerPC采用0.6μm的生产工艺,单芯片集成300万个晶体管。目前采用14nm生产工艺的硅芯片CPU集成2亿个晶体管,大幅度提升其主频。芯片电压从2.5V降低到1.8V,降低了芯片的功耗,减少散热问题,提高了系统的稳定性。
Sun的SPARC处理器。Sun和TI合作开发的RISC处理器SPARC以扩展性著称。1999年推出的UltraSPARCⅢ采用0.18μm的生产工艺以及64位和VIS指令,并百分之百向前兼容,保护了客户之前软件的投资。其s系列针对高性能和高扩展的多处理需求,使得Sun小型机赢得领先地位。
HP的PARISC处理器。HP于1986年推出专用RISC芯片PARISC。PA8000为其第一款芯片,主频为180MHz。2001年HP公司开发64位微处理器PA8700,面向服务器和工作站。RARISC不仅采用64位架构,而且将虚拟存储架构、统一数据格式、浮点运算、多媒体和图形加速等功能集成在芯片中。
MIPS的MIPS处理器。MIPS最开始只是一家设计制造高性能、高档次的嵌入式32位/64位处理器的厂商,在RISC处理器发展初期占有重要地位。1992年MIPS公司被SGI并购后又独立,1986年推出R2000处理器,1991年推出64位商用微处理器R4000。20世纪90年代末,MIPS公司把重点放在嵌入式系统上。1999年MIPS公司发布MIPS32和MIPS64架构标准,新的架构中集成以前MIPS的所有指令集,且增加了许多新的功能。
COMPAQ的Alpha处理器。其实Alpha处理器是由DEC公司设计制造,Compaq公司并购DEC后Alpha处理器继续得到发展,主要运行在Compaq服务器上。采用0.5μm生产工艺的21164芯片在1995年发布,主频仅为200MHz。21264芯片以能运行多种操作系统而著称,兼容的操作系统包括Tru64UNIX、OpenVMS和Linux等,因此兼容许多成熟的应用,且该芯片后期增加了处理视频信息的能力,视音频处理能力非常突出。
随着小型机单颗处理器对比x86架构CPU的主频越来越不占优势,且x86服务器的操作系统和主板已经支持16颗甚至更多CPU,给小型机越来越大的压力;x86服务器在高性能计算上的应用,成功地实现几百上千颗CPU分布式处理业务,小型机的性能优势将逐渐消失。
……