谷歌發(fā)聲更能引起關(guān)注,因為是用戶,而且是是互聯(lián)網(wǎng)用戶,畢竟時代賦予了互聯(lián)網(wǎng)公司的正確性、正義性,信谷歌,谷歌似乎什么都能做,但面對硬盤,面對現(xiàn)實,谷歌最多是在接口層和固件方面做點文章,谷歌重塑硬盤,其實谷歌的需求更多是為了引起業(yè)內(nèi)討論,提出了作為用戶的需求。
白皮書里列舉了谷歌對于重塑數(shù)據(jù)中心硬盤的種種看法,當(dāng)然,硬盤的重塑需要與整個產(chǎn)業(yè)界的共同努力,啟事錄創(chuàng)始人張廣彬告訴筆者說,其實業(yè)內(nèi)許多硬盤廠商已經(jīng)開始在做這方面的努力和嘗試了。
Eric Brewer是報告的撰寫者之一,他除了是谷歌數(shù)據(jù)中心基礎(chǔ)設(shè)施的副總裁之外,還是加州大學(xué)伯利克分校的教授,他在報告中寫道,現(xiàn)在數(shù)據(jù)中心的硬盤是由歷史原因造成的,它繼承自PC的軟盤,現(xiàn)在應(yīng)該考慮出現(xiàn)一種TCO更好的磁盤了,過程可能是漫長的,需要經(jīng)過廣泛討論,但這件事本身是值得考慮的。
筆者查看了這幾篇報告,加上之前看的幾個報告,總結(jié)出了關(guān)于谷歌重塑數(shù)據(jù)中心硬盤需要知道的兩件事。
第一件事:為什么這次不是閃存?
不是說閃存來了嗎?閃存性能那么好,又說閃存越來越便宜了,沒幾年就換要替代磁盤了,為什么又回過頭來折騰磁盤了呢?
圖片Wikibon:2023年單位容量閃存和磁盤的價格將基本一致
在這篇報告中提到,目前來說成本是最主要的,不是說閃存不重要,閃存現(xiàn)在主要還是用在高IO應(yīng)用領(lǐng)域。
差不多同一時間,谷歌聯(lián)合多倫多大學(xué)發(fā)布了另外一份報告——《閃存盤的可測與不可測》,從另一個角度對閃存提出疑問。
報告仔細分析了存放著六年來產(chǎn)生數(shù)據(jù)的存儲設(shè)備,包括數(shù)百萬的磁盤,十多種不同磁盤模型和不同的閃存技術(shù)。
報告數(shù)據(jù)顯示,四年來,有超過20%的磁盤發(fā)現(xiàn)了不可恢復(fù)錯誤,差不多同樣長的時間內(nèi),將近80%的磁盤都發(fā)現(xiàn)了壞塊。相比之下,磁盤在32月時間內(nèi),不可恢復(fù)錯誤的比例僅為3.5%。
圖注:使用壽命(按PE來算)對失效率的影響
原始比特誤碼率(RBER)確實會隨著使用壽命而增長,但是沒以往想象的那么高,并不是呈指數(shù)增長的。
圖注:橫軸是使用次數(shù)
在相同的PE下,舊的閃存盤比新的閃存盤失效率要高,閃存盤的年齡影響失效率,看來盤買了不用也是罪,電子產(chǎn)品買新不買舊啊。 令許多人大跌眼鏡的是,報告居然說企業(yè)級市場常用的SLC閃存在可靠性上并不比總是比MLC強,比如上圖所示。許多全新的SSD也會有壞塊,壞塊越多未來的錯碼率就越高,對閃存盤影響越大,這個是可以預(yù)測的。
報告提到,原始比特誤碼率(RBER)是在測量磁盤可靠性時的重要參數(shù),然而RBER在閃存面前沒什么意義,因為高RBER并不意味著高UBER,這是人們在面對閃存時候的不可測。
似乎人們對閃存的認識還不夠全面,人們還在了解當(dāng)中,對閃存的研究可不止谷歌做過。
去年Facebook發(fā)布的閃存失效率(錯碼率)報告(A Large-Scale Study of Flash Memory Failures in the Field)也對閃存進行了研究,報告讓我們認識到,閃存普及與否不全是價格的因素,還有性能穩(wěn)定性的因素,因為性能隨著使用次數(shù)增多是會有衰減的,這可能會影響客戶的關(guān)鍵業(yè)務(wù)。
失效率與使用次數(shù)不呈線性。圖片來自:閃存失效率報告
我們很難說谷歌和Facebook的報告誰更準(zhǔn)確,但可以肯定的是,磁盤比閃存成熟的多,一個顯而易見的事實是,閃存在數(shù)據(jù)中心的替代率不高,所以才有了重塑數(shù)據(jù)中心硬盤的命題。
第二件事,要如何重塑數(shù)據(jù)中心硬盤,谷歌提出了哪些意見?
Eric表達了對數(shù)據(jù)中心現(xiàn)有的3.5吋盤的種種不滿,近線企業(yè)級硬盤不適合當(dāng)前應(yīng)用。從以下三點說明:
一,重塑單塊磁盤,優(yōu)化磁盤存儲集合的整體表現(xiàn),簡單指標(biāo)有提升IO,提升容量等。
二,降低(tail latency)尾延遲,比如通過讀緩存提升云用戶的響應(yīng)速度,通過提升吞吐量提升MapReduce這類應(yīng)用的體驗,簡單來說延遲要大,帶寬要高。
三,安全,一方面是固件漏洞引起攻擊引起的問題,一方面是固件在加密方面的問題。
具體的做法谷歌指出了是個細節(jié)我們來看一下:
1,讓硬盤外形變高變細,從而提升IOPS,提升容量,降低單位容量價格。
提升容量。給現(xiàn)有磁盤外形加以改造,思路是說讓單個磁盤的盒子放高一些,這樣每塊硬盤可以放更多的盤片,從而增加容量,增加盤片來增加容量這正式磁盤廠商一直在做的事兒,最近希捷還推出了7碟片的磁盤,容量刷新到了10TB。
提升IOPS,把每塊盤片的直徑縮短,這樣盤片小了尋道距離就短了,尋到時間就快了,因為盤片小了,轉(zhuǎn)起來更穩(wěn)定了,所以硬盤可以轉(zhuǎn)得更快,這樣就可以提升RPM,減少尋道時間,從而提升IOPS性能了。
另外,文中還列舉了提升并行IOPS的方法還有四種,(1),硬盤內(nèi)部對角放兩個機械臂,每個機械臂覆蓋所有盤面,這樣無疑會提高成本,但是性能會很高;(2),在一個位置放兩個半長的機械臂,每個機械臂負責(zé)半個盤面。(3),一個機械臂上做一種雙極設(shè)計,從而讓兩個磁頭對應(yīng)兩個碟片,這會提升順序讀寫性能,但是隨機訪問沒什么好處。(4),一個機械臂,改變機械臂上的磁頭,讓它可以同時讀兩個道,這樣增加順序讀寫性能。
另外,由于一個硬盤封裝(硬盤殼)里的碟片更多了,也可以降低成本,打個不太合適的比方,有點像3塊錢的可樂和6塊錢一瓶的可樂單位容量的價格的區(qū)別一樣。
2,硬盤緩存,降成本,降低(tail latency)尾延遲。
現(xiàn)在許多硬盤都有自己的緩存(30-100MB),硬盤是要連接到主機的,從成本的角度來說這不太好,我們讓磁盤通過PCIe使用主機的RAM,主機那邊的RAM比較便宜,這樣既可以降低成本還能提高利用率。
另外還提到,硬盤到磁盤的供電電壓有12V,5V,還有3.3V,谷歌希望未來能統(tǒng)一成12V的直流電,這樣以后設(shè)計系統(tǒng)的時候不用再考慮電壓的問題了,降低TCO。
3,優(yōu)化SMR,提升容量。
SMR提升了存儲密度但是降低了隨機寫的性能,因為被刪掉的數(shù)據(jù)的空間只有GC之后才能被重新利用,但什么時候做GC是個問題,時間不好會影響性能,當(dāng)請求來的時候你GC,這會影響IOPS。
通常,一些可預(yù)測生命周期的數(shù)據(jù)被集中放在SMR的區(qū)域,這雖然能緩解問題,但因為這些是冷數(shù)據(jù),所以浪費了原有的IOPS能力,不僅如此,更多IOPS集中在了CMR(conventional magnetic recording ),增加了CMR的IOPS壓力,所以說SMR提升了單位價格容量的性價比而不是單位IOPS的性價比。
于是谷歌提出了出混合磁盤,既有冷數(shù)據(jù)又有熱數(shù)據(jù),既有CMR又有SMR。新數(shù)據(jù)來了先放在CMR,SMR可以放長久的數(shù)據(jù)。什么樣的混合盤呢?在一個硬盤里分別做優(yōu)化,一些是對SMR優(yōu)化的磁頭和盤片,一些是對CMR做優(yōu)化的磁頭和盤片。
進一步想,如果未來能有可以動態(tài)調(diào)整CMR和SMR的配比的硬盤就更好了。
4,硬盤日志,優(yōu)化IOPS和(tail latency)尾延遲
設(shè)立一個日志文件,文件內(nèi)容是重要的性能或者某一類操作的事件,比如數(shù)據(jù)完整性的重寫,硬盤在執(zhí)行命令或者普通的讀寫的時候參考這個日志。系統(tǒng)在不影響性能的時候定時讀取這個日志,比如當(dāng)發(fā)現(xiàn)一個延遲很高的讀操作時候,讀取一下這個日志進行診斷。
5,利用重讀(Read Retry)機制降低(tail latency)尾延遲
這條其實是讀策略的問題,硬盤的讀操作都會進行“有限的嘗試”,如果發(fā)現(xiàn)壞數(shù)據(jù)之后會很快返回一個值。谷歌建議把這一機制用在并行讀操作,以此來降低(tail latency)尾延遲。
6,改變硬盤故障率,錯碼率標(biāo)準(zhǔn),也就是許多媒體說的,不重視硬盤的可靠性。
大意就是說現(xiàn)在的硬盤為了可靠性犧牲了性能,增大了(tail latency)尾延遲,犧牲了存儲密度等等。
7,后臺任務(wù)和后臺管理API
磁盤的后臺任務(wù)可以用來解決和防止故障,但是這些操作影響了延遲性能,但是后臺任務(wù)又是必須的,為了更好的用它,谷歌提出了幾點建議:
比如讓所有的任務(wù)都可以改變優(yōu)先級,比如磁盤可以獲知后臺任務(wù)執(zhí)行所需時間,比如主機來決定什么時候進行后臺任務(wù),當(dāng)主機出問題的時候磁盤可以自己做一些維護工作等等。做一些靈活的調(diào)整。
8,靈活的容量配置
1)磁盤有的部分是有缺陷的,但廠商為了提供特定容量的磁盤,會預(yù)留一部分空間彌補缺陷部分損失的空間,如果容量太低的話就不能提供而定空間,就得返廠重新生產(chǎn),或者就按現(xiàn)有容量這么賣。
2)硬盤上不是有做緩存,Reallocation的扇區(qū)嗎?在硬盤使用的早期把這部分拿出來存儲數(shù)據(jù),然后一步步的把這些數(shù)據(jù)拿回來發(fā)揮原有的功能。
3)還有就是當(dāng)磁頭故障時磁盤需要重新初始化,然后找回丟失的數(shù)據(jù)。谷歌建議以后磁頭故障的時候別管他,直接繼續(xù)往下讀,這樣能延長使用壽命。
9,增大扇區(qū)
ECC校驗?zāi)芰Φ奶嵘沟糜脖P服務(wù)商能提高扇區(qū)的大小,從512B提升到4KB之后降低了ECC的不利影響,而現(xiàn)在許多時候都需要把數(shù)據(jù)讀取到分布式系統(tǒng)當(dāng)中,如果能繼續(xù)增加扇區(qū)大小的話,會有許多好處。
許多主機軟件在寫入數(shù)據(jù)的時候都會加入CRC(周期性循環(huán)檢查),而現(xiàn)在許多SATA盤都開始支持擴展扇區(qū)功能,比如有了4K+16B,64K+256B這樣的扇區(qū),據(jù)了解,現(xiàn)在許多SCSI磁盤已經(jīng)有了這樣的功能了。
10,通過優(yōu)化隊列管理,提升IOPS
谷歌指出了NCQ和TCQ的許多問題,這個比較復(fù)雜,筆者能力有限,想了解的更詳細的內(nèi)容點擊下方下載鏈接獲取完整報告吧。
看完這篇報告,筆者感覺谷歌實在是很挑剔,但正如企事錄創(chuàng)始人狒哥所說,谷歌其實做不了什么,最多也就在固件和接口層做點內(nèi)容。誠然,谷歌提出意見為的是引起關(guān)注,希望硬盤廠商能行動起來做出一些優(yōu)化。