每天進步一點點——關於SSD寫入放大問題


轉載請說明出處:http://blog.csdn.net/cywosp/article/details/29812433


1. 關於SSD的寫入放大
    之前在SSD(Solid State Drive)上設計並實現緩存系統用於存儲數據塊時遇到了一些問題,比方在磁盤寫滿后,假設老化掉一些最久未使用的數據塊后。繼續大量寫入新的數據,隨着時間的推移。寫入速度變得比剛開始時慢了很多。為了弄清楚為什么會出現這種情況,於是在網上搜索了一些關於SSD的資料,原來這種情況是因為SSD硬件設計本身決定的,終於映射到應用程序上該中現象稱為寫入放大現象(WA: Write amplification)。WA是閃存及SSD相關的一個極為重要的屬性。這個術語在2008年被Intel公司和SiliconSystems公司(於2009 年被西部數據收購)第一次提出並在公開稿件里使用。以下簡單解說一下為什么會出現這樣的情況以及是如何一個過程。
    SSD的設計全然不同於傳統的機械磁盤。其是一個完整的電子設備,沒有傳統機械盤的讀寫磁頭。因此,在讀寫數據的時候由於少了磁頭在磁道之間的尋道過程所以SSD能提供較高的IOPS性能。也正由於其少了磁頭的調度,所以SSD還能降低電量的使用,在數據中心中使用對企業來說是很故意的。

    SSD與傳統磁盤相比其有了非常大的性能優勢,以及較多的長處,可是事物總是有兩面性的。其也自身也存在一些問題,寫入在SSD中的數據是不能夠直接更新的,僅僅能通過扇區覆蓋重寫。在覆蓋重寫之前須要先擦除,並且擦除操作又是不能在扇區上做的。僅僅能在磁盤的塊上來完畢,擦除塊之前須要將原有的還有效的數據先讀出,然后在與新來的數據一起寫入,這些反復的操作不單會添加寫入的數據量 ,還會降低閃存的壽命,更吃光閃存的可用帶寬而間接影響隨機寫入性能。

    舉個最簡單的樣例:當要寫入一個4KB的數據時,最壞的情況是一個塊里已經沒有干凈空間了。但有無效的數據能夠擦除,所以主控就把全部的數據讀到緩存。擦除塊,緩存里 更新整個塊的數據,再把新數據寫回去。這個操作帶來的寫入放大就是: 實際寫4K的數據。造成了整個塊(共512KB)的寫入操作,那就是放大了128倍。同一時候還帶來了原本僅僅須要簡單一步寫入4KB的操作變成:閃存讀取(512KB)→緩存改(4KB)→閃存擦除(512KB)→閃存寫入(512KB)。共四步操作。造成延遲大大添加。速度變慢。所以說WA是影響SSD隨機寫入性能和壽命的關鍵因素。以100%隨機4KB來寫入,眼下的大多數SSD主控,在最壞的情況下WA能夠達到100以上。假設是100%持續的從低LBA寫入到高LBA的話,WA能夠做到1,實際使用中寫入放大會介於這兩者之間。SSD的詳細操作過程例如以下:
                                        

2. 寫入放大的解決的方法
    在實際操作中我們非常難全然解決掉SSD寫入放大的問題,僅僅能通過某些方法來更有效的降低放大的倍數。一個非常easy的辦法就是將一塊大的SSD硬盤僅僅使用其的一部分容量,比方128GB你僅僅是用64GB,那么最壞的情況就是寫入放大能降低約3倍。

當然這樣的方法有點過於浪費資源了。另外還能夠在寫數據時採用順序寫入。當SSD被順序寫入時,其寫入放大一般為1,但某些因素會影響到該值。

    除了上面的方法外,現階段公認的比較好的方法是TRIM。

TRIM位於操作系統層。操作系統使用TRIM命令來通知SSD某個page的數據不須要了。則能夠回收。

 支持TRIM的操作系統和以往的主要差別是刪除一個Page的操作不同。

在磁盤時期,刪除一個page之后在文件系統的記錄信息里將該page的標志位設置為可用,可是並沒有將數據刪除。使用SSD且支持TRIM的操作系統,在刪除一個page時。會同一時候通知SSD這個page的數據不須要了,SSD內部有一個空暇時刻的垃圾收集進程,在空暇時刻SSD會將一些空暇的數據集中到一起,然后一起Erase。

這樣每次寫操作。就在已經Erase好了的Page上寫入新的數據。


3. 總結
    盡管其存在寫入放大的問題,可是這並沒有讓我們拒絕使用它。用其來做緩存加速已在非常多項目中得到使用,尤其是在數據庫緩存項目中,在這些項目中SSD高效的讀性能得到了充分的利用。

隨着Facebook的開源項目Flash Cache的公布。以及Facebook內部的大量使用,Flash Cache已經成為了一個比較成熟的技術方案,這使得很多其它的公司選擇了SSD來做存儲或者緩存。



參考
[1] http://jfwang213.iteye.com/blog/1562263
[2] http://www.pceva.com.cn/topic/crucialssd/index-6_7.html
[3] http://bbs.pceva.com.cn/thread-3653-1-1.html





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM