閃存SSD以及閃存SSD存儲陣列已經變得越發普及。其原因來自于許多方面,比如說有對速度的需求,或者至少是感覺有這樣的需求。市場上大多數人對SSD存儲的看法是這是一款比傳統HDD存儲更快的設備。但這究竟是否屬實?我們將在本文一起探討閃存SSD的真相。
觀點:閃存SSD總是比傳統硬盤更快
大多數IT人員都會認為這句話說的沒錯。但事實是,這里的“總是”是否用的正確。
事實:閃存SSD存儲并不總是比HDD存儲快
這取決于應用負載,SSD使用壽命以及SSD被寫入的位置。
在隨機訪問及讀訪問延時上的表現均會優于傳統HDD硬盤上的表現,例如在隨機讀延時上,傳統硬盤在合理的2.9ms到12ms的范圍內,而SSD閃存的表現則會控制在100微秒左右,這對高負載的讀操作和隨機訪問場景是不錯的選擇。低延時的直接效果是使得閃存SSD讀取數據的能力更加直接,可以直接從閃存SSD的特定區域將數據讀出來。在操作系統啟動和應用啟動的時候,閃存SSD通常會幫上大忙,特別是在讀取數據的環節。
當在寫操作放大的時候,SSD閃存存儲的性能明顯有所降低,并且會隨著閃存SSD的使用而持續下降。盡管有手段將性能降低的水準減緩,但這只是相對而言的。性能降低的程度很大程度上取決于閃存NAND的類型。更為昂貴的單層單元SLC閃存性能表現會比企業級多層單元eMLC,多層MLC或者三層單元TLC閃存更好。
傳統磁盤存儲的性能也會因為做過磁盤碎片整理而降低。每一個碎片都會去讀取整個數據塊,隨著碎片的增加延遲也隨之增加。對于傳統磁盤來說,碎片整理工作相對直接且有效。很遺憾的是,就目前的閃存來說,SSD寫操作會降低性能是一個不爭的事實。因此,盲目的表示SSD的速率優于傳統磁盤的速率是不科學的,在一些場景下閃存的確遜于傳統磁盤的表現。
寫操作對于閃存SSD來說,的確是一塊短板。同樣是寫操作,閃存SSD和傳統磁盤處理的方式相當不同。所有閃存SSD的寫操作僅能發生在沒有使用過的或是事先擦除過的數據塊,而對于傳統磁盤來說,則可以覆蓋之前寫過的數據,這點在閃存SSD上是無法實現的。這些數據塊需要先被擦除干凈,再寫入新的數據。這就意味著對于閃存SSD來說,數據寫起來就沒有傳統磁盤這么方便。
SSD控制器的作用則是通過后臺進行垃圾清理,從而減緩閃存SSD的性能問題。控制器垃圾回收的實現方法有許多種,但最常見的方法是提前分配20%-50%額外的空間,取決于廠商以及存儲單元的不同。
這就意味著,對于一個200TB的SSD存儲來說,可能就需要有256TB的空間,其中僅有200TB的空間是真實可見并可用的。額外的空間則用于給控制器提供動態空間,這樣在做垃圾清理的時候用戶的寫操作并不會被影響。存有廢棄數據的寫入頁與剩余的頁空間交換,然后新擦除后的頁則成為了新的可用空間。
閃存SSD的動態空間縮短了整體寫入時間,其本質是縮短了寫入操作的整個流程,從而大大提升了寫操作的性能。
寫操作在較為昂貴的單層單元SLC閃存SSD上的表現接近于讀速度。而對于企業級多層單元eMLC,多層單元MLC,尤其是三層單元TLC來說,寫性能是遠遠低于讀性能的。而對于傳統磁盤來說,讀和寫的性能則相對接近。
的確,從一般意義上來說,閃存SSD會比傳統磁盤的速度要快。因此,在什么時候閃存SSD會慢于傳統硬盤的表現呢?答案是在工作負載大多為寫操作或者是在用久了的或已進行過大量寫操作的SSD上進行混合操作的時候。