作者: 勁爆小朋友 時間: 2017-1-9 18:52 標題: SSD 儲 file 方式和消耗, 求教
SSD 會自已做 TRIM 與 Garbage Collection 保持 read write 表現
所以唔應該用盡整個容量, 這些我都明白, 情況有d似 hdd 要留位做 sector relocation
想請教的是, 在SSD上一個檔案係咪都會亂分散晒在不同cell上儲存? 尤其係不斷 trim 與 Garbage Collection 後更會不規律地分佈?
例如 (請想象紅色係一個檔案, 綠色係另一個檔案)
問題源於我用一隻 SSD 黎 save vmdk, 我有5個 vm 但只有兩個係長開住, 其餘耐唔耐先會開黎用。我發現長開果兩個好正常, 但 boot 入其他果 3 個會因為唔係成日 run 住, 出現之前有師兄話 SSD會因為唔常開機無得做 trim 和 Garbage Collection 而變慢的問題。但我唔明我隻 SSD 係長開住 (因為果2個vm要長開), 難道 trim 只會在開了機果個vm上做? 而不是整隻 SSD 做? 咁的話, 長開果個VM所用既 cell 就會高用量過好小開果個vm佔用緊果d cell? 造成消耗不平均?
作者: freefdhk 時間: 2017-1-9 19:03
以我經驗 MLC 沒呢個問題
TLC 就有呢個問題
作者: 勁爆小朋友 時間: 2017-1-9 19:20
如果我係成隻 SSD 唔通電擺佢一兩個禮拜再開機, load野慢左我覺得合乎 TLC 特性。
但我個情況係長通電都唔會全隻 SSD 做 trim?
作者: 燕飛 時間: 2017-1-9 20:13
NAND Flash 以一個 page作單位讀寫 不存在上述問題
作者: freefdhk 時間: 2017-1-9 21:20
簡單D來講 , TLC 既壞處是不能說的秘密! 說出來只會比人話根本冇呢個問題 ,
長期不通電、長期不讀的冷檔案讀寫時很慢 , 這一些 100% 是用家的錯覺!
應該要咁說先岩了.
TLC 呢隻賊算上過一次當就算了當交下學費 ~
下次記得睇清楚 係真 MLC 定係 TLC / TLC模疑MLC.
作者: masseffect 時間: 2017-1-9 21:33
MLC 一樣會有呢個問題

作者: 勁爆小朋友 時間: 2017-1-9 22:06
本帖最後由 勁爆小朋友 於 2017-1-9 22:08 編輯
我唔知有無理解錯你們的答案
但我的情況係
---------------------------
| SSD |
| |
| (VM1) (VM2) |
| |
| (VM3) (VM4) (VM5) |
| |
|__________________________|
同一隻內, VM1 VM2 長開住, 無反應慢, VM3 VM4 VM5 耐唔耐開, 反應會慢d
原理上同一隻SSD應該唔會有咁大分別吧?
作者: s84292 時間: 2017-1-9 22:09
本帖最後由 s84292 於 2017-1-9 22:12 編輯
ssd主控自己會搬,無論你係slc mlc tlc,
佢地都會定期做回收同內部重組,係好早期的ssd先冇呢類機制
本身ssd主控就有自己的排序磁區算法,
所以先話重組磁碟對ssd無用,主控本身就會做亂序
除非你隻ssd半年以上都唔通電,唔係佢自己就會做曬以上工作
至於冇咁常開的vm會比較慢,可能同cache有關
作者: 勁爆小朋友 時間: 2017-1-9 22:11
對, 我的概念都係咁, 所以奇怪點解同一隻ssd內都會有快慢之別
作者: s84292 時間: 2017-1-9 22:13
有D SSD本身有SLC緩衝區,如果你唔常用佢會清空
VM開得慢又可能同你系統個快取機制有關,唔常開就唔CACHE 定,好正常
作者: masseffect 時間: 2017-1-9 22:35
SSD 會自已做 TRIM 與 Garbage Collection 保持 read write 表現
所以唔應該用盡整個容量, 這些我都明白, ...
勁爆小朋友 發表於 2017-1-9 18:52
消耗係咪平均,或者話,有幾平均,我諗係好睇個CONTROLLER點去HANDLE
呢樣嘢應該同啲FILE 係咪好散關係唔太大
但基本上,一個BLOCK 有冇用到,係應該會同佢有幾可靠有關
因為當CONTROLLER 讀個BLOCK 嘅時候,佢係可以收集到呢個BLOCK RETENTION相關嘅資料(電壓..)
呢啲嘢,其實係一路改善緊..
所以點解你見啲SSD 制程越縮越細,但佢地嘅P/E 又好似無乜跌到
我覺得其中一個原因為就CONTROLLER 有所改善...
至於你個CASE,好難講,呢度應該無人知道你隻SSD 嘅CONTROLLER 到底點做
但可以想像到嘅係,如果你有一個FILE 係常用,而且係用嚟做VM 又會有寫入,起碼佢呢PART 會不斷地MARK做DELETE 然後GC
至於唔常用嗰啲...正如我上面講我覺得好睇CONTROLLER
CONTROLLER可以唔理佢,咁佢個VOLTAGE 就不斷DEGRADE,令到讀取時嘅RBER 高,要花更多時間修正
但如果個CONTROLLER 有不斷MON 住,間中READ 下UPDATE下VOLTAGE 嘅資料
又會睇住佢個QUALITY 轉差就移啲資料去第二個BLOCK,然後MARK DELETE等GC
咁樣可以保障到個QUALITY,但當然..換嚟嘅係WA高左..
作者: 勁爆小朋友 時間: 2017-1-9 23:17
本帖最後由 勁爆小朋友 於 2017-1-9 23:21 編輯
對上兩位解釋得好清楚, 明白了好多, 學到野, 亦都好合理, thank you
作者: harryytm 時間: 2017-1-10 19:54
師兄你誤解咗 TRIM 係咩,TRIM 其實只係一個指令,令 OS 可以透過 TRIM 指令,通知返 SSD 個 Controller 知道到邊啲 LBA 入面嘅數據,係可以抹除無用嘅數據,等個 Controller 做 Garbage Collection 嘅時候,唔會連埋啲無用嘅數據一齊移去新 Block。
而喺 Delete 檔案嘅時候,OS 都會用 TRIM 指令,將原先屬於個檔案嘅佔用嘅 LBA,標示返做可抹除嘅空間。
另外,檔案係統多數會有一個檔去記載每個叢集有無被檔案佔用,就以 NTFS為例,就有一個叫 $BITMAP 嘅檔案,記住全隻碟上面邊個叢集係已被檔案,而 Windows 8.1 開始嘅磁碟優化嗰個 TRIM SSD 嘅功能,就係利用返 $BITMAP 去用利用 TRIM 指令,將啲未用被檔案佔用嘅空間,標示返做可抹除嘅空間。

