硬碟盒中SSD斷線分兩種,一種是正常斷線,另一種是異常斷線,不管是哪種原因導致的斷線,在硬碟盒重新通電後,SSD都需要能從斷線中恢復過來,繼續正常運作。
 

  • 正常斷線

    先說正常斷線。在斷線前,硬碟盒主機會下命令通知 SSD,比如 SATA 中的 Idle Immediately,SSD 收到該命令後,主要會做以下事情:


    - 把 buffer 中緩存的使用者資料寫入快閃記憶體。
    - 把映射表寫入快閃記憶體。
    - 把快閃記憶體的塊資訊寫入快閃記憶體硬碟盒(比如目前寫的是哪個快閃記憶體塊,以及寫到該快閃記憶體塊的哪個位置,哪些快閃記憶體塊已經寫過,哪些快閃記憶體塊又是無效的……等)。
    - 把 SSD 中的其他資訊寫入快閃記憶體。

    硬碟盒主機等 SSD 處理完以上事情後,才會真正停止對 SSD 的供電。正常斷線不會導致資料的丟失,重新通電後,SSD 只需把斷線前保存的相關資訊(比如映射資料,快閃記憶體塊資訊等)重新載入,又能接續斷線前的狀態繼續工作。

     
  1. 異常斷線

    如果硬碟盒 SSD 世界只存在正常斷線,那麼一切會簡單許多。 可是,總是會有突如其來的斷線(異常斷線),對 SSD 來說,沒有“喜”,只有“驚”。

  • 所謂的異常斷線,就是硬碟盒 SSD 在沒有收到主機的斷線通知時就被斷電;或者收到主機的斷線通知,但還沒有來得及處理上述的那些動作,就被斷電了。 硬碟盒異常斷線可能會導致資料的丟失,比如緩存在 SSD 中的資料來不及寫到快閃記憶體,斷線導致這部分資料丟失。還有,根據快閃記憶體特性,如果斷線發生在寫 MLC 的 Upper page,會導致其對應的Lower Page 資料遭到破壞,也就是意味著之前寫入快閃記憶體的資料也可能由於異常斷線導致丟失。異常斷線恢復的目的一方面是盡可能恢復使用者資料,把損失減到最低;另一方面是讓硬碟盒中的 SSD 經歷異常斷線後還能正常運作。


    硬碟盒異常斷線的處理方式? 

    硬碟盒 SSD 為什麼怕異常斷線? 它不是使用快閃記憶體作為存儲介質嗎? 它不是資料斷線不丟失嗎? 沒錯! 不過一個硬碟盒 SSD,除了資料斷線不丟失的快閃記憶體,還需要有斷線資料丟失的 RAM、SRAM 或者 DRAM。 快閃記憶體的作用是存儲資料,而 RAM 的作用主要是 SSD 工作時用以緩存使用者資料和存放映射表(Map Table,邏輯位址映射快閃記憶體物理位址),所以一旦斷線,RAM 的資料就會丟失。

    硬碟盒為防止異常斷線導致的資料丟失,一個簡單的設計就是在 SSD 上加電容,硬碟盒 SSD 一旦檢測到斷線,就讓電容開始放電,硬碟盒把 RAM 中的資料寫入到快閃記憶體上面去,從而避免資料丟失。 企業級的 SSD 一般都帶有電容,帶電容的 SSD,還是需要設計異常斷線處理模組,因為電容不能 100% 保證 SSD 在斷線前把所有的資訊寫入快閃記憶體。

    硬碟盒還有一個比較新穎的想法,就是把 RAM 這樣的揮發性記憶體,用非揮發性記憶體來替代,但要求非揮發性記憶體的性能上要接近 RAM。 如此,整個 SSD 都是非揮發性記憶體了。 Intel 和 Micron 合作開發的 3D XPoint,可作為一個選擇。3D XPoint 兼有快閃記憶體斷線資料不丟失和記憶體快速訪問的特點。

    硬碟盒 RAM 中緩存使用者資料時,主機就會認為已經把它們寫到 SSD 了(非 FUA 命令,資料寫到緩存,硬碟盒 SSD 就回傳狀態給主機),但 SSD 只是把它們緩存在 RAM 中,並沒有寫入到快閃記憶體。 異常斷線時,如果 SSD 上沒有電容,也沒有使用其他黑科技,這部分資料便損失無疑。 重新通上電後,主機就讀不到這些資料了。

    硬碟盒斷線還會導致 RAM 中映射表丟失,映射表資料很重要,如果硬碟盒 SSD 查找不到對應的物理位址,就無法從快閃記憶體上讀取資料回傳給主機。 如果映射表中的資料不是最新的,硬碟盒 SSD 就會錯誤地把老資料回傳給主機,這個問題就嚴重了。
    舉例: 阿呆原帳戶上有 10 元,最近存入 100 萬元,但由於異常斷線導致銀行沒有把 100 萬元寫入資料庫,下次阿呆到 ATM 上一看,怎麼還是 10 元?

    與 RAM 中使用者資料丟失不同,RAM 中映射表資料是有辦法恢復的,SSD的異常斷線恢復,主要就是映射表的恢復與重建。

 

arrow
arrow
    文章標籤
    SSD 硬碟盒斷線
    全站熱搜

    icydock 發表在 痞客邦 留言(0) 人氣()