以動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)取代硬盤(pán)話(huà)懷舊(151109)
閔應(yīng)驊
上一篇博文從分子電子學(xué)的沉浮看創(chuàng)新(151102)得到15817次閱讀,本文“以動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)取代硬盤(pán)話(huà)懷舊”是想說(shuō)明過(guò)去的技術(shù)基礎(chǔ)對(duì)今天的創(chuàng)新仍然非常重要。創(chuàng)新不是空中樓閣,大學(xué)生們要好好學(xué)習(xí)基礎(chǔ)知識(shí)。對(duì)于幾千上萬(wàn)臺(tái)服務(wù)器的數(shù)據(jù)中心,用硬盤(pán)速度太慢。據(jù)IEEE Spectrum報(bào)道,斯坦福大學(xué)有人提出來(lái)用動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)取代硬盤(pán)。這是一個(gè)創(chuàng)新的想法。但是,大量的問(wèn)題在于容錯(cuò)。而容錯(cuò)技術(shù)是一個(gè)已經(jīng)發(fā)展了50年的老技術(shù),不過(guò)遇到了新情況,碰到了新問(wèn)題。
磁盤(pán)存儲(chǔ)器已經(jīng)用了半個(gè)世紀(jì)。第一個(gè)商業(yè)化的磁盤(pán)出現(xiàn)在1956年,到1970年代就取代了磁帶。就像集成電路,今天可以存的數(shù)據(jù)是1985年時(shí)的2萬(wàn)倍,而平均每字節(jié)的花費(fèi)是那時(shí)的百萬(wàn)分之一。所以,今天的文件系統(tǒng)、關(guān)系數(shù)據(jù)庫(kù)都是存在硬盤(pán)里。它的對(duì)手是閃速存儲(chǔ)器,存取快、存儲(chǔ)緊密、抗震。所以,所有移動(dòng)設(shè)備,譬如平板電腦、智能手機(jī)、手表都是用閃存。筆記本電腦也用閃存代替硬盤(pán),越來(lái)越多的數(shù)據(jù)中心等大型應(yīng)用都在用閃存,因?yàn)樗俣群荜P(guān)鍵。動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)作為主存對(duì)于長(zhǎng)期存儲(chǔ)數(shù)據(jù)是另一種選擇。譬如,谷歌的服務(wù)人員的查詢(xún)是存在DRAM中,臉書(shū)的社交網(wǎng)絡(luò)數(shù)據(jù)是在DRAM中,IBM的沃森人工智能系統(tǒng)所有數(shù)據(jù)存在DRAM中。過(guò)去人們認(rèn)為DRAM是在計(jì)算過(guò)程中存那些暫時(shí)性的數(shù)據(jù),它比閃存快1000倍,但是比硬盤(pán)貴100倍,但關(guān)電源,數(shù)據(jù)就丟失了?,F(xiàn)在它可能成為主存儲(chǔ)器,因?yàn)槿绻?/span>DRAM在硬盤(pán)或閃存有備份,用戶(hù)就可以得到它的高速的優(yōu)越性。而大型的數(shù)據(jù)中心一般不會(huì)關(guān)電源。
斯坦福大學(xué)建造的一個(gè)通用存儲(chǔ)系統(tǒng),稱(chēng)為RAMCloud,它存儲(chǔ)數(shù)據(jù)中心的幾百幾千服務(wù)器里的數(shù)據(jù)。其備份存于硬盤(pán)或閃存,并當(dāng)服務(wù)器故障時(shí)自動(dòng)從備份恢復(fù)數(shù)據(jù)。
讀寫(xiě)硬盤(pán)數(shù)據(jù)其所以慢是因?yàn)樽x寫(xiě)頭必須機(jī)械地在旋轉(zhuǎn)盤(pán)上尋找特定磁道,然后等待讀寫(xiě)頭旋轉(zhuǎn)到所需的數(shù)據(jù)位置上。這個(gè)機(jī)械過(guò)程很難加快。存儲(chǔ)的數(shù)據(jù)越多,這個(gè)時(shí)間就越長(zhǎng)。在許多場(chǎng)合,數(shù)據(jù)隨機(jī)地存在許多不同的小塊中,這個(gè)時(shí)間就更長(zhǎng)。這個(gè)問(wèn)題已經(jīng)存在多年,于是人們對(duì)閃存由于速度快而感興趣。
大規(guī)模Web應(yīng)用需要支持幾千萬(wàn)甚至上億的用戶(hù),從而需要與傳統(tǒng)完全不同的操作結(jié)構(gòu)。傳統(tǒng)的應(yīng)用處理單機(jī)上的存儲(chǔ),而大規(guī)模應(yīng)用由于在許多計(jì)算機(jī)上,運(yùn)行應(yīng)用邏輯和服務(wù)器與用戶(hù)的接口程序,其他計(jì)算機(jī)可能變成存儲(chǔ)服務(wù)器,而大部分?jǐn)?shù)據(jù)存在硬盤(pán)上,經(jīng)常要用的數(shù)據(jù)存在存儲(chǔ)器里。過(guò)去的技術(shù)是加載應(yīng)用程序和它的數(shù)據(jù)到單機(jī)的主存里,應(yīng)用可以存取數(shù)據(jù)達(dá)到DRAM的速度,即50-100納秒。但吞吐量受限于單機(jī)。1990年代后期,Web大發(fā)展,傳統(tǒng)應(yīng)用體系結(jié)構(gòu)無(wú)法處理眾多網(wǎng)站的負(fù)載。此后10年,新的體系結(jié)構(gòu)讓大的數(shù)據(jù)中心用上千臺(tái)機(jī)器一起工作。這樣,應(yīng)用程序和數(shù)據(jù)是分離的,數(shù)據(jù)在另一組機(jī)器里。這時(shí),數(shù)據(jù)一般在硬盤(pán)里,常用的數(shù)據(jù)緩存在DRAM。但讀寫(xiě)需要應(yīng)用服務(wù)器與數(shù)據(jù)中心的內(nèi)部網(wǎng)絡(luò)的一個(gè)存儲(chǔ)服務(wù)器通信,而存儲(chǔ)服務(wù)器也許需要存取硬盤(pán),這就需要0.5-10毫秒,比單機(jī)情況要慢4-5個(gè)數(shù)量級(jí)。所以,臉書(shū)產(chǎn)生一個(gè)網(wǎng)頁(yè)只能查閱幾百個(gè)數(shù)據(jù)片,否則時(shí)間就太長(zhǎng)。開(kāi)發(fā)者就必須把數(shù)據(jù)片搞得盡可能大。
2009年,斯坦福人開(kāi)始了RAMCloud項(xiàng)目。他們把所有數(shù)據(jù)一直存在DRAM中。它不需要額外的硬件,它只是一個(gè)普通機(jī)器上的軟件包,成為RAMCloud服務(wù)器,以代替今天的存儲(chǔ)服務(wù)器。
RAMCloud的存儲(chǔ)服務(wù)器每個(gè)機(jī)器配備32-256 GB的DRAM,足夠存儲(chǔ)所有數(shù)據(jù),同時(shí),服務(wù)器也包括硬盤(pán)和帶電池備用的DRAM,另外一個(gè)機(jī)器稱(chēng)為協(xié)調(diào)器,管理應(yīng)用服務(wù)器和存儲(chǔ)服務(wù)器之間的通信。每一個(gè)RAMCloud服務(wù)器包含兩個(gè)軟件部件:一個(gè)主控;一個(gè)備用。主控程序用DRAM存儲(chǔ)RAMCloud的數(shù)據(jù),同時(shí)在應(yīng)用服務(wù)器需要時(shí)可以用這些數(shù)據(jù)。備用程序則是保存其他RAMCloud主控在服務(wù)器二級(jí)存儲(chǔ)的冗余數(shù)據(jù)。RAMCloud的第三個(gè)軟件部件,協(xié)調(diào)器,運(yùn)行在另一臺(tái)機(jī)器上,管理整個(gè)RAMCloud集群,當(dāng)存儲(chǔ)服務(wù)器失效時(shí)協(xié)調(diào)恢復(fù)行動(dòng)。各應(yīng)用服務(wù)器用RAMCloud庫(kù)包去存取RAMCloud存儲(chǔ)。第一次應(yīng)用服務(wù)器需要通過(guò)協(xié)調(diào)器找出什么主存存了什么數(shù)據(jù),以后緩存這些信息到自己,以后就可直接請(qǐng)求相關(guān)的主存。
當(dāng)RAMCloud服務(wù)器要取代正常的存儲(chǔ)服務(wù)器時(shí),它并不像今天的數(shù)據(jù)庫(kù)服務(wù)器那樣復(fù)制整個(gè),其數(shù)據(jù)模型是所謂關(guān)鍵值鑰,即包含一些表,每一個(gè)表可以包含許多對(duì)象,每個(gè)對(duì)象包含可變長(zhǎng)度的鑰,它在表中是唯一的,并且對(duì)應(yīng)一個(gè)值,這個(gè)值可以是大到1MB的任意數(shù)據(jù)。應(yīng)用程序要讀寫(xiě)任何對(duì)象,只要給定表和鑰即可。現(xiàn)在的RAMCloud讀100字節(jié)對(duì)象需5微秒,寫(xiě)14微秒,比讀硬盤(pán)快1000倍,比讀閃存快10-20倍。這個(gè)加速即使用DRAM也是不可想象的,因?yàn)榫W(wǎng)絡(luò)基礎(chǔ)設(shè)施有相當(dāng)大的延遲。網(wǎng)絡(luò)中的每一次交換增加10-30微秒,數(shù)據(jù)請(qǐng)求和響應(yīng)至少要經(jīng)過(guò)5次交換,數(shù)據(jù)包的處理必須經(jīng)過(guò)操作系統(tǒng)的進(jìn)入和離開(kāi),又增加60微秒。所以,數(shù)據(jù)中心內(nèi)的往返時(shí)間就達(dá)到幾百微秒。
在網(wǎng)絡(luò)上,RAMCloud有兩個(gè)改進(jìn)。一個(gè)是用專(zhuān)用交換芯片,內(nèi)部延遲小于1微秒。另一個(gè)是用新一代的網(wǎng)絡(luò)接口控制器(NIC),它有核心旁路功能,它允許應(yīng)用直接與NIC通信,發(fā)送和接收數(shù)據(jù)包,而不需要計(jì)算機(jī)核心操作系統(tǒng)介入。
數(shù)據(jù)中心一般幾年會(huì)有一次停電,當(dāng)停電或服務(wù)器故障時(shí)數(shù)據(jù)不能丟,這就要靠硬盤(pán)或閃存?zhèn)溆脭?shù)據(jù),就像今天的硬盤(pán)用磁帶備用數(shù)據(jù)一樣。其他容錯(cuò)措施還包括寫(xiě)備份、斷電時(shí)的備份、服務(wù)器在備份前失效、存著備份數(shù)據(jù)的服務(wù)器失效、存儲(chǔ)器服務(wù)器失效的恢復(fù)等許多問(wèn)題。這些問(wèn)題有點(diǎn)太專(zhuān)業(yè),這里就不詳細(xì)介紹了。
RAMCloud現(xiàn)在還是一個(gè)大學(xué)的研究項(xiàng)目,但許多大學(xué)的研究組已經(jīng)用上了RAMCloud的開(kāi)源程序,譬如華為公司的分布式主存數(shù)據(jù)庫(kù)項(xiàng)目。RAMCloud現(xiàn)在存在的一個(gè)問(wèn)題是不支持關(guān)系數(shù)據(jù)庫(kù),因?yàn)槟壳斑€沒(méi)有一個(gè)存儲(chǔ)系統(tǒng)支持關(guān)系數(shù)據(jù)庫(kù)。所以,現(xiàn)在還不太適用于已有企業(yè)級(jí)的應(yīng)用。
上圖顯示RAMCloud自動(dòng)數(shù)據(jù)恢復(fù)。當(dāng)服務(wù)器失效,只要幾秒鐘就能實(shí)現(xiàn)在線(xiàn)恢復(fù),用戶(hù)根本感知不到。對(duì)云計(jì)算數(shù)據(jù)中心非常適用。一個(gè)數(shù)據(jù)中心有100萬(wàn)CPU核,1千萬(wàn)億字節(jié)的數(shù)據(jù),任意核可以在5-10微秒內(nèi)存取任意的數(shù)據(jù),速度比現(xiàn)在快1000倍。
這個(gè)程序就是多用DRAM,不用硬盤(pán),基本就是一個(gè)軟件。但核心問(wèn)題是容錯(cuò)。這么多機(jī)器,這么多數(shù)據(jù),一旦發(fā)生讀寫(xiě)錯(cuò)誤,如何自動(dòng)糾正?一旦某一個(gè)機(jī)器失效,或者某一個(gè)存儲(chǔ)器失效,如何發(fā)現(xiàn)?如何自動(dòng)恢復(fù)?這些容錯(cuò)的老問(wèn)題在大數(shù)據(jù)中心的環(huán)境下表現(xiàn)出來(lái)更大的復(fù)雜性。在1970年代IBM推出360的時(shí)候,主要是磁心存儲(chǔ)器不可靠,容易出錯(cuò),所以才出現(xiàn)了容錯(cuò)技術(shù)。而今天,DRAM很可靠,但是,太多太大,管理、存儲(chǔ)、電源任何一個(gè)環(huán)節(jié)出問(wèn)題,就使系統(tǒng)不可靠。所以,容錯(cuò)技術(shù)仍然不可缺少。談到容錯(cuò),大家就想起備用冗余。但是,備用有一系列的深層次問(wèn)題,不像帶兩個(gè)相機(jī),壞了一個(gè)用另一個(gè)那么簡(jiǎn)單。最近,本人在金華的可信計(jì)算會(huì)議上有一個(gè)報(bào)告,叫“軟件定義的網(wǎng)絡(luò)中的容錯(cuò)”,大家如果有興趣,以后可以寫(xiě)一寫(xiě)。
聯(lián)系客服