你是否會遇到這樣一種情況: 當你正在文思泉涌地敲打鍵盤趕稿件時,電腦突然抽風,然后,你就看到了絕望的藍色(系統(tǒng)崩潰,電腦藍屏了)。 其實office軟件有自動保存的功能,當電腦重啟,再次打開WORD文件時,會提醒你要不要導入最后自動保存的內(nèi)容(這個方法不是100%管用)。 扯遠了哈…… 類似的情況,你是否想過,正在往SSD寫入數(shù)據(jù)時,系統(tǒng)突然掉電了,那SSD的數(shù)據(jù)會怎么樣呢? 總的來說,系統(tǒng)掉電會給SSD帶來三種情況的災難: 1. 用戶寫入數(shù)據(jù)丟失。我們在前面的文章提到“在Host寫入數(shù)據(jù)時,并不會直接交給主控去寫入NAND閃存,而是先把數(shù)據(jù)丟到DRAM緩存中,之后再傳到主控內(nèi)部的緩存中,最后再由主控寫入NAND閃存”(詳細內(nèi)容請見本公眾號歷史文章“SSD內(nèi)涵與外在俱佳—記SSD之結(jié)構(gòu)與工作原理”)。我們假設Host寫入的數(shù)據(jù)在放到DRAM這一步時突然掉電,由于DRAM是揮發(fā)性記憶體,只要斷電,數(shù)據(jù)就會丟失。這對用戶來說肯定會崩潰的,對企業(yè)級的用戶更是不能容忍的。 2. FTL mapping信息丟失。SSD在完成一部分數(shù)據(jù)寫入的時候需要更新閃存轉(zhuǎn)換層FTL的mapping table(FTL相關詳細內(nèi)容請見本公眾號歷史文章“如何成為一個具有領導力的SSD主控?”), 如果在還未來及更新mapping table時,系統(tǒng)掉電,那么后果就是整塊SSD對于系統(tǒng)不能識別。目前市場上SSD廠商都不會提供修復mapping table的工具。要想修復這塊SSD就必須返廠維修,SSD廠商會通過特殊的方式對mapping table進行重建,并找到丟失的數(shù)據(jù)。 3. 造成SSD壞塊增加。系統(tǒng)的突然掉電有可能會使NAND閃存中多個bit發(fā)生錯誤,如果錯誤的bit超過了ECC的糾錯能力,主控就會將其標記為壞塊,后續(xù)就不能用來存儲數(shù)據(jù)。這也就是為什么在不正常斷電之后,我們有時會看到壞塊的增加。 在上一篇文章('你知道企業(yè)級SSD與消費級SSD的區(qū)別嗎?')中,我們有介紹企業(yè)級SSD與消費級SSD區(qū)別。簡單言之,企業(yè)級SSD更加注重數(shù)據(jù)的安全性,而消費級SSD更加注重的是成本。 對于消費級SSD,由于對數(shù)據(jù)的安全性要求不能那么的嚴格,并且ECC/LDPC糾錯技術(shù),Wear-leveling技術(shù)以及其他的Flash管理技術(shù)基本可以滿足需求。 但是,對于企業(yè)級的SSD,這些措施并不能完全滿足數(shù)據(jù)安全性的苛刻要求。 目前針對企業(yè)級SSD掉電保護的措施有兩種: 1.增加電源儲存電路(power hold-up circuit)。 2.關閉“回寫緩存”(write-back caching)功能。 接下來,我們就這兩種保護措施展開介紹: 1.增加電源儲存電路(power hold-up circuit) 大多數(shù)的企業(yè)級SSD會有一塊專門檢測SSD供電電壓的電路,如果檢測到供電電壓低于設定的閾值時,此時會給SSD主控發(fā)送預警。接著啟動power hold-up電路,保證SSD正常的操作。 SMART公司的一款XceedIOPS SSD的掉電保護電路圖如下: Power hold-up電路中的電壓源可以是超級電容(supercapacitor), 或者一系列的分離式電容(discrete capacitors), 甚至可以是一塊電池(不過,目前市場上還沒有產(chǎn)品采用這個方法)。這里主要分享超級電容和分離式電容。 (1)超級電容 超級電容是通過極化電解質(zhì)實現(xiàn)儲存能量的電化學元件。它可以在較小的三維空間存儲驚人的能量?;诔夒娙莸牡綦姳Wo電路如上圖所示。 由于設計基于超級電容的掉電保護電路相對簡單,所以大多數(shù)的企業(yè)級SSD也是采用這個方法。但是超級電容想要在企業(yè)級SSD的應用中立于不敗之地,并不容易。 超級電容大多數(shù)是鋁電解電容。雖然鋁電解電容具有較高的電容體積比,但是與所有的電解電容一樣,鋁電解電容同樣具有可靠性顧慮。 超級電容會隨著時間的增加,容量減小,并且電解液也會因為泄露和擴散而不斷流失。溫度對超級電容的影響不容忽視,環(huán)境溫度每上升10度,超級電容的壽命就會折半。 (2)分離式電容 分離式電容會增加電路設計的復雜性,不過會克服超級電容可靠性的限制?;诜蛛x式電容的掉電保護電路是采用了一系列的分離式電容并聯(lián),如下圖。 分離式電容主要有氧化鈮電容和聚合鉭電容。這些電容不像超級電容那樣采用電解液,所以不會有泄露相關的問題。氧化鈮電容和聚合鉭電容的環(huán)境溫度可以達到85度。從這個角度講,分離式電容更加利用企業(yè)級SSD的應用。 選擇超級電容還是分離式電容,需要應用者根據(jù)成本與可靠性作出折中的決策。 2.關閉“回寫緩存”(write-back caching)功能 我們先回顧一下什么叫write-back caching??聪聢D: 在Host寫入SSD數(shù)據(jù)的整個流程是這樣的: (1)Host觸發(fā)寫入命令,并傳入數(shù)據(jù); (2)SSD接收到數(shù)據(jù)之后,把數(shù)據(jù)放到DRAM緩存中,并開始寫入NAND閃存; (3)SSD發(fā)送完成報告給Host(注意,這時Data還沒真正寫入NAND閃存,SSD已經(jīng)發(fā)送完成報告了); (4)來自DRAM緩存的數(shù)據(jù),這時才真正寫入NAND閃存; (5)NAND閃存完成數(shù)據(jù)寫入之后給主控報告。 這樣的一個過程,我們就稱為write-back caching。 假設,系統(tǒng)在第(4)步掉電了,這時Host已經(jīng)接收到完成報告,就認為數(shù)據(jù)已經(jīng)寫到了NAND閃存。但現(xiàn)實是骨感的,數(shù)據(jù)還在路上,這樣,數(shù)據(jù)肯定丟失了。Host再去讀它自己認為已經(jīng)寫好的數(shù)據(jù),那么SSD會返回數(shù)據(jù)錯誤或者數(shù)據(jù)丟失。 如果,我們把這個功能關掉,把上面的流程調(diào)整一下: (1)Host觸發(fā)寫入命令,并傳入數(shù)據(jù); (2)SSD接收到數(shù)據(jù)之后,把數(shù)據(jù)放到DRAM緩存中,并開始寫入NAND閃存; (3)來自DRAM緩存的數(shù)據(jù),這時才真正寫入NAND閃存; (4)NAND閃存完成數(shù)據(jù)寫入之后給主控報告; (5)SSD發(fā)送完成報告給Host。 關掉write-back caching之后,SSD要等到全部數(shù)據(jù)真正寫入NAND閃存之后才會給Host發(fā)送完成報告, 這樣,Host就不會錯誤的讀取信息了。但是這樣的做法會降低SSD的寫入性能。在應用過程中,需要使用者作出折中的方案。 【結(jié)語】 掉電保護對企業(yè)級SSD尤為重要,目前掉電保護的措施有: 1.增加電源儲存電路(power hold-up circuit),電容可以超級電容或者分離式電容。 2.關閉“回寫緩存”(write-back caching)功能。 研發(fā)更加有效的掉電保護技術(shù)是一門科學,更是一門藝術(shù),讓我們拭目以待新科技。 欲了解更多SSD的結(jié)構(gòu)與原理相關內(nèi)容,請關注頭條號【存儲隨筆】,謝謝! |
|