大容量儲存與磁碟排程

固態硬碟(a solid-state drive)

/ SSD /

硬碟像一台有活動零件的唱片機;SSD 則更像一大片即使拔掉電源也能保持位置的電燈開關陣列。沒有任何東西在旋轉,沒有臂,沒有唱針——只有把位元以困在微小單元中的電荷形式存起來的快閃記憶體晶片。要找到任何一筆資料,SSD 不必走到任何地方;它只是定址到正確的晶片並以電子方式讀出,就像 RAM 那樣,只不過這種記憶體在斷電時仍保有內容。

具體來說,SSD 把資料存在快閃單元中,這些單元被組織成頁(常為 4 到 16 KB),頁是它能讀取或程式化(寫入)的單位,而頁又被歸成大得多的抹除區塊(數百頁)。快閃記憶體有一條塑造一切的古怪非對稱規則:你能快速讀取任何一頁,你只能在一頁已被抹除的情況下對它程式化,而你無法抹除單獨一頁——你只能一次抹除一整個區塊,且很慢。因此你無法就地覆寫資料;要改一頁,你必須把新版本寫到一頁全新、已抹除的頁上,並把舊頁標記為失效,稍後再於背景中整塊抹除。管理這一切隱藏複雜度的,就是快閃轉換層,它與磨損平均、垃圾回收以及 TRIM 指令一起,讓硬碟保持快速且長壽。

為什麼這對作業系統重要:SSD 改寫了硬碟教給我們的規則。沒有搜尋時間、沒有旋轉延遲,所以隨機存取幾乎和循序存取一樣快——這意味著經典的磁碟排程演算法(為了把臂移動降到最低而設計)幾乎買不到任何好處。新的顧慮不同了:快閃單元在有限的抹除循環次數後會磨損,先抹後寫的規則造成寫入放大(寫得比你要求的多),而作業系統應該告訴硬碟哪些區塊是空閒的(TRIM),好讓清理有效率。SSD 比硬碟快得多也耐用得多,但它們不只是更快的硬碟——它們的故障方式不同,管理方式也不同。

在 SSD 上更新一個 4 KB 的頁並不會覆寫它。硬碟會把新資料寫到別處一頁空閒、預先抹除好的頁上,把那個邏輯區塊改導向新頁,並把舊頁標記為失效;之後當某個整塊大多失效時,垃圾回收便會抹除它以回收空間。

不就地覆寫:寫到別處、標記失效、稍後抹除。

SSD 並不只是一顆更快的硬碟。它沒有搜尋時間、會因寫入而磨損、無法就地覆寫,並由它自己的轉換層管理——把它完全當成硬碟看待,既浪費了它的優勢,也忽略了它真正的限制。

又稱
SSDflash driveflash storage快閃儲存