除了延遲和IOPS 評(píng)估SSD性能還要考慮這些因素
企業(yè)級(jí)SSD供應(yīng)商通?;谕掏铝俊⒀舆t和IOPS指標(biāo)來為市場上的買家區(qū)分固態(tài)驅(qū)動(dòng)器的性能檔次,但這些規(guī)格并不能代表全部。其他因素——驅(qū)動(dòng)器組件的架構(gòu)以及處理寫入放大的方式——同樣是評(píng)估驅(qū)動(dòng)器在生命周期內(nèi)性能表現(xiàn)的重要指標(biāo)。
目前在數(shù)據(jù)中心內(nèi)已經(jīng)部署的大多數(shù)SSD都基于flash閃存技術(shù)。構(gòu)成閃存驅(qū)動(dòng)器的零件包括存儲(chǔ)數(shù)據(jù)的NAND單元以及存儲(chǔ)控制器、接口和高速緩沖存儲(chǔ)器,每個(gè)組件都會(huì)對(duì)固態(tài)驅(qū)動(dòng)器的性能起到重要作用。
NAND單元技術(shù)經(jīng)歷了長期的發(fā)展,現(xiàn)在支持的容量越來越大,市場價(jià)格越來越便宜。最初的閃存驅(qū)動(dòng)器基于單級(jí)單元(SLC)結(jié)構(gòu),每個(gè)數(shù)據(jù)單元能存儲(chǔ)1位二進(jìn)制數(shù)據(jù)。后來出現(xiàn)的是每個(gè)單元能存儲(chǔ)2位二進(jìn)制數(shù)據(jù)的多級(jí)單元(MLC)驅(qū)動(dòng)器,再然后是三級(jí)單元(TLC)驅(qū)動(dòng)器,每個(gè)單元能存儲(chǔ)3位數(shù)據(jù)。
基于TLC的閃存驅(qū)動(dòng)器可以支持比過去更高的容量,其容量甚至超過了他們的許多硬盤驅(qū)動(dòng)器近親。不幸的是,TLC驅(qū)動(dòng)器無法持續(xù)提供與最初的SLC驅(qū)動(dòng)器相同的性能水平。***出現(xiàn)的3D NAND技術(shù)給出了供容量和性能兩全的承諾——只要制造成本降低到與其他NAND技術(shù)相當(dāng)就可以實(shí)現(xiàn)。
存儲(chǔ)控制器
存儲(chǔ)控制器是一種專用于各型號(hào)驅(qū)動(dòng)器的處理器,用于運(yùn)行固件程序并處理耗損均衡、垃圾回收、加密、壞塊映射和錯(cuò)誤代碼糾正等操作,這是決定固態(tài)硬盤性能的另一個(gè)關(guān)鍵要素。無論驅(qū)動(dòng)器的I/O工作負(fù)載程度如何,控制器都要維持關(guān)鍵的操作功能,即使在滿負(fù)荷運(yùn)行時(shí)也必須能夠正確執(zhí)行所有存儲(chǔ)相關(guān)的操作??刂破鞯娜魏稳毕荻伎赡車?yán)重降低SSD的性能。
服務(wù)器和驅(qū)動(dòng)器之間的接口也是SSD架構(gòu)中的關(guān)鍵組件。常用的兩種接口是:串行連接SCSI(SAS)和串行高級(jí)技術(shù)連接(SATA)。SAS側(cè)重于提供更多的企業(yè)級(jí)功能,通常也可以提供(比SATA)更好的固態(tài)驅(qū)動(dòng)器性能。
潛臺(tái)詞是,這兩種接口都可能成為存儲(chǔ)瓶頸。為了突破瓶頸,供應(yīng)商提供非易失性存儲(chǔ)器快速接口(NVMe),讓閃存結(jié)合PCI Express運(yùn)作以提供比SAS或SATA更好的性能。
在企業(yè)級(jí)SSD內(nèi)部的存儲(chǔ)介質(zhì)和接口之間還包括一個(gè)動(dòng)態(tài)RAM內(nèi)聯(lián)緩沖區(qū)。緩沖區(qū)提供高速緩存機(jī)制,為數(shù)據(jù)提供臨時(shí)分段和匯集區(qū)域。為了有效地執(zhí)行這些操作,緩沖區(qū)必須足夠大才能有效加速數(shù)據(jù)訪問和修改動(dòng)作,并盡可能減少寫入操作的影響。正確設(shè)計(jì)的緩沖區(qū)是高性能SSD中的關(guān)鍵組件。
寫入放大
大多數(shù)SSD和閃存驅(qū)動(dòng)器都同樣容易產(chǎn)生寫入放大的問題,在某些情況下的實(shí)際寫入次數(shù)會(huì)超過實(shí)際請求的寫入次數(shù)。寫入放大問題是由SSD的數(shù)據(jù)寫入方式而帶來的固有缺陷。和硬盤直接添加或覆蓋數(shù)據(jù)的操作不同,SSD必須整塊寫入,并且在數(shù)據(jù)寫入之前必須先擦除數(shù)據(jù)塊內(nèi)已有的數(shù)據(jù),然后重新寫入。由于寫入放大帶來的額外IOPS會(huì)明顯降低寫入性能。
數(shù)據(jù)存儲(chǔ)在閃存驅(qū)動(dòng)器上時(shí)會(huì)被寫入頁面,這些頁面被組合成塊。將數(shù)據(jù)寫入單元之前必須先擦除整個(gè)塊,除非塊已經(jīng)是空的。如果要寫入的塊非空,則必須復(fù)制舊數(shù)據(jù)到緩存,然后從原始位置刪除數(shù)據(jù),***合并新舊數(shù)據(jù)一起重新寫入驅(qū)動(dòng)器。這些過程會(huì)增加大量寫入操作,不僅會(huì)影響SSD性能,還會(huì)縮短驅(qū)動(dòng)器的使用壽命。
為了提高寫入性能,SSD通常會(huì)啟用某種類型的垃圾回收過程,在后臺(tái)主動(dòng)釋放帶有舊數(shù)據(jù)的廢棄塊。這個(gè)過程可以消除每次寫入操作中的擦除整個(gè)數(shù)據(jù)塊的步驟。但是,如果處理不當(dāng),垃圾回收過程同樣會(huì)導(dǎo)致寫入放大并影響主寫入操作的性能。
大多數(shù)固態(tài)硬盤還會(huì)實(shí)施磨損平衡處理,以防止存儲(chǔ)單元過早磨損。磨損均衡算法能將寫入次數(shù)均勻地分布在可用塊上,以防止相同塊持續(xù)承受擦除和寫入操作。磨損平衡與垃圾回收一樣也會(huì)導(dǎo)致寫入放大,并可能影響固態(tài)驅(qū)動(dòng)器性能,具體取決于實(shí)這些技術(shù)的實(shí)現(xiàn)方式。
其他進(jìn)程也可能有助于緩解寫入放大問題,例如壞塊管理,控制器能識(shí)別和標(biāo)記出對(duì)于存儲(chǔ)數(shù)據(jù)可能不可靠的一個(gè)或多個(gè)塊。另外,對(duì)驅(qū)動(dòng)器進(jìn)行碎片整理不會(huì)給SSD帶來任何好處,只會(huì)白白增加讀/寫開銷。
如果要減少寫入放大,減輕垃圾收集、磨損平衡和其他操作的不良影響,一個(gè)常見的策略是過量配置SSD,或?qū)Ⅱ?qū)動(dòng)器的允許被使用的存儲(chǔ)空間限制在一定比例。例如,一些組織將允許使用的存儲(chǔ)空間限制在75%或80%,有時(shí)甚至更低。通過預(yù)留足夠的剩余可用空間,驅(qū)動(dòng)器可以更有效地支持寫入操作,并***限度地提高SSD性能。
另外,SSD有時(shí)可以利用接口內(nèi)置的功能來緩解寫入放大。例如,SATA提供TRIM指令,SAS提供UNMAP指令。兩種指令都能標(biāo)識(shí)不再使用的數(shù)據(jù)塊,從而可以讓設(shè)備從內(nèi)部自動(dòng)清除這些數(shù)據(jù)。這些措施可以獲得更好的固態(tài)驅(qū)動(dòng)器性能,因?yàn)榭梢宰钚』占M(jìn)程,并且可以盡快在驅(qū)動(dòng)器上獲得更多可用空間。
在數(shù)據(jù)中心部署固態(tài)硬盤要注意的事項(xiàng)還有很多,例如可用的服務(wù)器和網(wǎng)絡(luò)資源,以及在這些服務(wù)器上運(yùn)行的操作系統(tǒng)類型,但驅(qū)動(dòng)器的組件架構(gòu)和寫放大對(duì)策才是最需要關(guān)心的問題。只有充分考慮到所有因素,組織才能確保購買的驅(qū)動(dòng)器能提供足夠的性能,更好地支持各種應(yīng)用程序。