第三章現代數據中心之基礎架構篇
現代數據中心計算技術與實踐
計算技術概述
顧名思義,計算機(電腦)主要代替人腦實現計算功能,幫忙人類完成復雜計算的任務。現代計算機發展不到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分布式處理業務,小型機的性能優勢將逐漸消失。
……