SSD固態硬盤是由控制單元和固態存儲單元(DRAM或FLASH芯片)組成的存儲設備,目前支持SATA、FC、SAS接口,可以替代普通的機械硬盤。
在目前HDD機械硬盤容量每年增速較慢,讀寫速度10年來基本上沒有增加,而處理器的速度已經是按莫爾定律成倍的增加,HDD硬盤存儲介質已經成為計算系統的瓶頸,而SSD隨著半導體工業的發展,Flash集成度愈來愈高,成本不斷下降,在采用多通道并行等技術下,SSD盤以其讀寫速度快、綠色省電和無機械部件可靠性高,在高端服務器、存儲和便攜機中愈來愈廣泛使用。
因為電壓變化更頻繁,所以MLC技術的Flash在壽命方面遠劣于SLC,官方給出的可擦寫次數僅為1萬次,這是MLC最要命的一個缺點。MLC技術的Flash還有一個缺點,它的讀寫速度先天不如SLC,一個Block存儲兩組位數據,自然需要更長的時間,這里面還有電壓控制、CRC寫入方式等因素需要考慮。
因為閃存的寫操作的次數是有限制的,如果針對某些單元進行過10萬次寫操作,那么后續這些單元的寫入可靠性則無法保證,有些單元則可能會失效,例如有些管理數據系統日志等改寫頻繁,而某些靜態文件數據卻幾乎從不改寫.如不加控制,部分塊就會因反復多次擦除而提前損壞,而部分塊還未被改寫過,以至影響SSD盤的使用壽命,為解決此問題,使用寫操作均勻分布到各閃存單元上,從整體上做一個平衡,以避免個別單元失效,損耗均衡算法(Wear Leveling)就是為解決此問題而廣泛采用的算法。
Wear Leveling就是提供一個塊映射機制, 把寫入損耗分散在不同的塊上, 不會導致某些塊先被寫壞而使整個SSD盤失效,而是把在預期壽命前失效的塊, 會有一些保留塊來替代, 這個算法使得整個設備的壽命跟Flash的最大壽命在同一量級。
一般為實現損耗均衡算法(Wear Leveling)會采用一種基于頁的文件存儲算法,閃存物理地址和邏輯地址之間并沒有一一對應的關系。當固態硬盤收到數據寫入請求時,并不會循規蹈矩的按順序進行寫入,而是找到最少寫入的單元寫入。因而,在為寫入數據動態分配物理塊時,會根據各塊的使用情況不同分配相應的優先級,從而均衡整個存儲器各單元的使用壽命。
SSD多通道并發技術
由于目前Nand Flash的數據總線為8bit,最大能提供25MB/s的讀速度和3MB/s的寫速度,顯然SSD如果提供此速度是用戶無法接受的,目前SSD控制器普遍采用多個通道同時并行操作多片Flash,類似RAID0,這樣讀寫速度得到了極大地提高,如下圖所示:
糾錯管理與映射機制
SSD控制器會監測和校驗讀寫Flash的數據,以確保對數據操作的成功,并內置糾錯冗余數據,防止基于閃存設備的個別單元數據丟失造成整個數據塊丟失。
SSD的映射機制一般采用基于頁的文件存儲算法,閃存物理地址和邏輯地址之間并沒有一一對應的關系。當固態硬盤收到數據寫入請求時,并不會循規蹈矩的按順序進行寫入,而是找到最方便寫入最快的位置進行寫入,以提高寫入速度。
通常檢測工作通過片上狀態寄存器和特定的硬件部件來校驗寫操作和擦除操作是否成功,校驗工作通過回讀寫入數據與用戶數據進行比較來完成。當寫操作失敗時,系統并不將錯誤簡單的反饋給用戶,而是通過塊重映射機制,另外分配一個空閑塊重新執行寫操作,由于SSD在設計的時候,已經預留了一部分Flash用于臨時存儲數據和壞塊替換使用,再加上Flash芯片對擦寫次數有限制,讀沒有次數限制,這樣即使某些塊被寫壞了,也不會影響到整個SSD的使用壽命。因此,SSD通過自動校驗來預防錯誤發生,個別單元讀錯誤可以通過糾錯來恢復數據,確保數據的完整性,邏輯地址與物理地址的映射機制,解決了寫物理區塊錯誤問題,同時在損耗均衡算法中也需要邏輯地址與物理地址的映射機制來實現。
數據庫環境。數據庫的數據盤一般是小數據塊的隨機讀寫,響應時間要求較高,容量在2TB以下的占絕大多數,采用SSD盤組成的RAID5既可以提供很高的IOPS又最大限度地利用其容量。
高性能集群系統的共享數據盤。在集群系統中需要共享大量數據,且數據需要被各節點頻繁訪問,要求響應速度快,在此系統中通過采用SSD盤后,可以極大地減少各節點的訪問共享盤的待定時間,提高其性能。