1. 程式人生 > >OSX: 開啟SSD的TRIM功能可能不是一個好主意

OSX: 開啟SSD的TRIM功能可能不是一個好主意

很久以前,自從人們開始把SSD裝載Mac機器中,並且OSX開始支援TRIM開始,人們就開始注意開啟OSX的TRIM功能來優化SSD的效能,尤其是當SSD中的垃圾資料越來越多,而SSD需要騰挪這些垃圾來為有用資料騰地的時候,這也是SSD執行最慢的操作。

從前,一直沒有認為開啟TRIM對系統會有什麼副作用,所以,對Apple在OSX10.10中只支援自己的OEM SSD的做法很是不理解。自從看了一篇部落格文章才多少理解了Apple的謹慎態度。

事情是從得知10.10.4有了一個內建開啟支援第三方SSD盤的TRIM功能開始的,

sudo trimfoce enable

剛看著Apple的警告,多少心裡還有點不屑一顧,毫不猶豫地就選擇了y(為什麼不呢;終於可以擺脫第三方Trim Enabler軟體了,不用Apple系統自帶的功能才傻呢;OSX系統的東西,放心用吧)相信這樣做的人不在少數。還記得不久前OWC宣稱它的Mercury系列SDD,採用SandForce核心,不使用TRIM依然可以自動實現垃圾清理的功能吧,估計有人會對它動心的。

後來在MacRumuors中看到了一個網友回覆提醒的“HEED THE DATA LOSS WARNING”的訊息。從哪裡找到了有關Trim+SSD導致Linux伺服器系統錯誤的原始文章,在這裡:When Solid State Drives are not that solid。他們的Linux伺服器叢集中,最嚴重時大致每隔1個小時就會有伺服器宕機,他們嘗試了所有的相關係統的更新,排錯幾乎從應用層、檔案系統到系統核心跟蹤檢查每個相關應用的日誌,詢問伺服器提供商,是不是有硬體相關問題回饋,都沒有發現和解決問題。他們發現雖然同類型的伺服器,只是有很少的硬體不同(其中包括SSD),但是隻是一部分伺服器會重複宕機,使用排除法更換硬體伺服器,還是沒有發現問題。後來發現有些系統小檔案的內容塊(512B)被“隨機的”全部寫了0,他們不知道到底誰會把這些檔案清零,猜測的是可能會是Trim,最後他們關閉了Trim,經過了數個星期的執行,系統也不再宕機了。隨後他們聯絡了供貨商和三星,結果三星會在現場除錯,如果無法解決問題將會把機器運到韓國總部進行進一步的檢測。截止目前為止,還沒有進一步的訊息。

根據他們的發現,通過讀Linux最新原始碼,Linux系統有個持續更新的Trim blacklist,(當然,還有其它品牌的SSD以及其它有問題硬碟)其中最新更新是,所有的三星800系列的SSD盤都列在了這個Blacklist中,其中標示它們不支援NCQ Trim(還有Misron和Crucial的幾個系列)。再根據其它人揭示的有關三星客服回覆的報道,三星的這些SSD不支援Queued Trim命令,而使用Sequential Trim是安全的。根據其他人的解釋,之所以目前沒有人反映Windows出現類似的問題,似乎是因為Windows禁止了在不支援Queued Trim的SSD操作亦或本身就不支援Queued Trim操作,或者是一種非實時TRIM,一種有計劃的集中TRIM處理,具體詳情還有待澄清。

Sequential Trim的執行會明顯方面SSD的速度,因為它需要完全執行完一個TRIM命令後,再執行下一個,這樣如果作業系統每刪除一個檔案都進行TRIM操作,那麼根據SSD韌體的速度快慢,不同程度地影響SSD的表現。而SATA 3.1標準推出的Queued Trim解決了上面的問題。但是由於韌體問題,有些SSD在執行Queued Trim操作時會出現混亂。

不過還有人報道說,即便是Sequential Trim,有些韌體的SSD依然會有問題。

事情並不那麼簡單,根據其它的報道,這些三星SSD較新版本的firmware雖然內部標識是完全支援SATA 3.2的技術標準,但是其實有些該標準的功能並沒有完全實現,比如“RECEIVE/SEND FPDMA QUEUED”韌體並完全不支援,而宣稱是完全支援的,這造成的問題是,一旦上層系統使用這個功能,就會出現問題,嚴重的是資料丟失。而這個問題在以前的型號中就存在了。還有一種可能是,SATA卡有某種缺陷,與SSD配合造成出錯,這給看似簡單的問題,又添加了一層不確定性。不過目前看上去,似乎都集中在這些SSD的韌體本身,它們可能存在某種未知的技術缺陷。

現在的情況是,禁止作業系統的即時TRIM功能,而進行定期的TRIM操作,這樣會盡量避免上述問題。雖然說這樣可能會造成系統的臨時不可用,但是更加安全。

還有一點是,如果使用了即時TRIM,那麼誤刪檔案的回覆操作可能就無法進行了,試想被刪除的檔案在SSD中物理地被清零了,而不是像傳統磁碟那樣,作業系統只是給刪除檔案做個標記,那麼恢復檔案也就無從談起。那麼帶有可追溯歷史的備份,就是一個比磁碟時代更加被重視的功能了。幸好,時間機器Time Machine支援版本恢復,是一個不錯的選擇。現在不瞭解的是,OSX本身的文件版本回滾功能,會不會受Trim問題的影響。

所以,在OSX上載第三方SSD硬體上開啟TRIM是不是一個好主意,使用者自己決定。

另外,Aerospike公司做了一個SSD開源的檢測工具:ACT,也是一個可以考慮使用的。