固態硬盤(SSD)在存儲文件后讀寫速度(尤其是寫入速度)變慢,是一個非常普遍的現象,主要原因在于SSD獨特的寫入機制和閃存特性。以下詳細解釋核心原因:
寫入機制與“寫前擦除”:
- 基本單位差異:?SSD 寫入數據的最小單位是“頁”,但擦除數據的最小單位是更大的“塊”。每個塊包含多個頁。
- 空白頁需求:?寫入新數據必須寫入到空白的頁中。
- 已使用狀態的頁:?當 SSD 被文件占滿后,幾乎所有頁都存儲了有效數據(用戶文件)或無效數據(被刪除文件的殘留)。
- 寫入新數據或修改舊數據的過程:
- 如果要寫入新數據到某個已包含無效數據的頁,或者要修改現有文件(本質是先刪除舊數據再寫入新數據),SSD 控制器不能立刻寫入。
- 控制器必須先找到包含這個無效頁的整個塊。
- 然后,它需要把這個塊里所有仍然有效的頁讀取出來,暫時復制到緩存或其它地方。
- 接著,才能擦除整個塊(這是耗時的操作)。
- 最后,才把新的數據(包含要寫入的新數據/修改數據以及之前復制出來的有效數據)寫回到這個塊或其他地方擦除好的空白頁中。
- 性能損耗:?這個“讀取有效數據 -> 擦除塊 -> 寫入新數據”的過程被稱為寫放大。它顯著增加了寫入操作的復雜性和時間成本,尤其是在盤空間接近滿載時,空白頁稀缺,這種操作會變得非常頻繁和低效。
垃圾回收效率下降:
- 后臺任務:?SSD 控制器有一個叫“垃圾回收”的后臺進程,其任務就是主動尋找包含無效數據的塊,提前將其中有效數據搬走,然后擦除該塊,騰出連續的空白塊/頁,為新的寫入請求做好準備。
- 空間不足的影響:
- 當 SSD 空閑空間很大時,垃圾回收有充足的空閑塊來存放搬移的有效數據,并且可以輕松找到包含大量無效數據的塊進行高效擦除,整個過程對用戶寫入的影響很小。
- 當 SSD 空間被大量占用時,空閑塊和空白頁變得稀缺。垃圾回收難以找到合適的地方搬移有效數據,并且可能被迫去處理那些只包含少量無效數據的塊(擦除一個塊只能釋放少量新空間),效率變得極低。
- 用戶寫入時觸發:?結果就是,當用戶發起寫入請求時,由于沒有足夠的空白頁可用,寫入操作被迫等待垃圾回收先處理出足夠的空白頁。這種等待直接導致寫入速度驟降和延遲增加。
預留空間(OP - Over-Provisioning)被壓縮:
- 廠商預留:?所有 SSD 出廠時都有一定的預留空間(OP)。例如,一個標稱 1TB 的 SSD,其物理閃存容量實際可能是 1.1TB 或 1.2TB,多出的部分就是 OP。系統(格式化后)通常只顯示用戶可用空間(如 1TB)。
- OP 的作用:?OP 為垃圾回收、磨損均衡等后臺操作提供了寶貴的“工作空間”和緩沖池,有助于維持性能和延長壽命。
- 用戶空間填滿的影響:?當用戶文件幾乎填滿所有可用空間(接近 100%)時,實質上 OP 空間也被嚴重壓縮(因為控制器能自由使用的空間幾乎沒有了)。這極大地限制了垃圾回收的處理能力和效率,放大了上述第 2 點的問題。
SLC 緩存耗盡/縮小:
- 緩存機制:?絕大多數消費級 SSD(尤其是 TLC/QLC)都使用 SLC 緩存策略。一部分閃存空間被模擬成速度更快的 SLC 模式來接收寫入數據(SLC 寫入比 TLC/QLC 快得多)。數據寫入 SLC 緩存后,控制器會在后臺將其遷移到 TLC/QLC 區域。
- 有限且動態的緩存:?SLC 緩存的大小通常是動態的,并且與SSD 的空閑空間正相關。空閑空間越大,可用的 SLC 緩存就越大。
- 空間不足的影響:
- 當 SSD 存儲大量文件導致空閑空間很小時,可分配的 SLC 緩存容量也會變得非常小(可能只有幾百 MB 或幾 GB)。
- 當用戶進行持續的大文件寫入(如拷貝電影、安裝大型游戲)時,數據量會很快超出這個縮水后的 SLC 緩存的容量。
- 一旦 SLC 緩存被填滿,后續的寫入數據就不得不直接寫入到速度慢得多的原生 TLC/QLC 區域,導致寫入速度斷崖式下跌(例如從 500MB/s 突然降到 50-100MB/s 甚至更低)。這是用戶感知寫入變慢的最直觀原因之一。
磨損均衡和可用塊減少:
- 磨損均衡:?控制器需要將寫入負載均勻分散到所有閃存塊上,避免某些塊過早磨損報廢。這需要一定的空閑塊來進行數據遷移。
- 空間不足的影響:?空間嚴重不足時,空閑塊稀缺,磨損均衡操作變得更加困難,也會間接影響到寫入性能。
總結:
- 核心矛盾:SSD 寫入需要空白頁,但刪除文件不會立刻提供空白頁(只是標記可回收),而擦除以大塊為單位。
- 空間滿載導致:
- 空白頁稀缺:?迫使每次寫入前進行更復雜的“擦除-搬運-寫入”操作(寫放大)。
- 垃圾回收效率暴跌:?用戶寫入被強制等待垃圾回收騰出空間,延遲驟增。
- OP 空間被擠占:?控制器失去重要的后臺操作空間。
- SLC 緩存大幅縮水:?大文件寫入時緩存迅速耗盡,跌至慢速原生速度。
- 磨損均衡受限。
如何避免或減輕?
- 保持足夠空閑空間:?這是最關鍵的一點。建議始終保留至少?10%-20%?的總容量作為空閑空間(對于 QLC SSD 或小容量 SSD,建議比例更高)。這為垃圾回收、SLC 緩存、OP、磨損均衡提供了充裕的空間。
- 定期清理無用文件:?刪除不需要的文件,給 TRIM 命令執行的機會(現代操作系統基本自動支持 TRIM),讓控制器知道哪些數據塊可以安全擦除回收,提高垃圾回收效率。
- 選擇更大容量的 SSD:?更大的 SSD 意味著更大的物理 OP 空間和潛在的 SLC 緩存空間,即使使用率相同,性能下降幅度也可能更小。
- 選擇帶 DRAM 緩存的 SSD:?DRAM 緩存可以加速映射表查找,減輕控制器負擔,尤其是在碎片化或高負載情況下。無緩存的 SSD 在空間滿載時性能下降可能更明顯。
- 了解 SSD 類型:?TLC 比 QLC 的原始寫入速度通常更快,SLC 緩存耗盡后性能下降幅度相對小一些。
總而言之,SSD 存儲文件后速度變慢是其工作原理和閃存物理特性的必然結果,尤其是在空間接近滿載時最為明顯。通過合理規劃存儲空間(預留足夠空閑)是維持其高性能的最有效方法。