爲SSD編程(1):簡介和目錄

原文 http://codecapsule.com/2014/02/12/coding-for-ssds-part-1-introduction-and-table-of-contents/


簡介

我想爲我的鍵值對存儲項目弄一個固態硬盤(SSD)最佳存儲解決方案。爲此,我必須確保我完全瞭解SSD是如何工作的,這樣就可以優化我的hash表實例來適合SSD的內部特徵。網上有很多不完全和相悖的的信息,找到關於SSD的可靠信息並不簡單。爲了找到適當的文獻和基準以說服自己,我必須要進行大量的閱讀。如果我要爲SSD編程,我需要知道我在做什麼。

研究完之後我搞明白了,相信將我所得到的結論向大家分享會有用的。我的意圖是將所有的可用信息轉化爲實用知識。最後我寫了一篇30頁的文章,但它不太適合發佈在博客上。因此我決定將這篇文章分爲數個可被獨立消化的數個邏輯部分。而目錄在本文的下方。

第六部分有最爲顯著的貢獻,這一部分是整個“爲SSD編程”文章系列的總結,我相信那些心急的程序員最爲喜歡。這個總結涵蓋了SSD的基本知識以及所有推薦的實現固態硬盤的最佳讀寫性能的訪問模式。

另外一個重要的細節是,“爲SSD編程”與我的鍵值對存儲項目(IKVS series)之間是相互獨立的,因此並不需要IKVS文章中的知識。我正打算寫一篇關於IKVS series的文章,內容是關於 如何用hash表來實現利用SSD的內部特徵,不過我還沒有具體的發佈時間。

我唯一的遺憾就是,我還沒有寫任何代碼,以證明我建議的訪問模式確實是最好的。但是即使有這些代碼,我也需要在大量不同的固態硬盤上測試性能基準,這將消耗我所不能承受的大量的時間和金錢。我仔細列舉了我引用的文章,如果你認爲我的建議不對,請留下評論指明。當然,如果你有什麼疑問或想在任何方面做出貢獻,請隨意留下評論。

最後,不要忘了訂閱電子報,以便在每當有新文章發表在Code Capsule上時能夠收到通知。訂閱面板在博客的右上角。

目錄

第一部分:簡介和目錄

第二部分:SSD的架構和基準

1. SSD的結構
1.1 NAND閃存單元
1.2 SSD的組織
1.3 製造過程

2. 基準和性能指標
2.1 基本基準
2.2 預處理
2.3 任務負載和指標

第三部分:頁、塊、和閃存轉換層(正在翻譯中)

3. 基本操作
3.1 讀、寫、擦除
3.2 寫入的例子
3.3 寫入放大
3.4 耗損均衡

4. 閃存轉換層(FTL)
4.1 FTL的必要性
4.2 邏輯塊映射
4.3 產業狀態的備註
4.4 垃圾回收

第四部分:高級功能和內部並行(正在翻譯中)

5. 高級功能
5.1 TRIM
5.2 預留空間
5.3 完全抹除
5.4 本地命令隊列(NCQ)
5.5 掉電保護

6. SSD的內部並行
6.1 被限制的I/O總線帶寬
6.2 多層並行
6.3 塊的集羣

第五部分:訪問模式和系統優化(正在翻譯中)

7. 訪問模式
7.1 定義順序和隨機I/O操作
7.2 寫入
7.3 讀出
7.4 合併讀寫

8.系統操作
8.1 分區對齊
8.2 文件系統參數
8.3 操作系統I/O調度
8.4 交換空間
8.5 臨時文件

第六部分:總結——所有程序員需要知道的關於固態硬盤的知識(正在翻譯中)

下一部分

第二部分在這。如果你比較忙,你可以直接去總結了所有其他部分內容的第六部分


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章