SSD 固態硬碟保護之道


最近買了顆 SSD 固態硬碟,雖然對於讀寫速度非常滿意,但是也不是沒聽過業界諸多蠢事與慘劇,像是把 SSD 當成一般硬碟拿去放 DB 然後資料全噴光之類的,很多人可能在追求那種爽度之餘,根本沒去理解過 SSD 固態硬碟的特性或完全忘記可能的風險。

基於 SSD 讀寫生命有限的特性, SSD 一般只適於當作系統碟,不適用作頻繁讀寫的資料碟,縱然 SSD 現在有平均抹寫、動態抹寫等技術來延長可用時間,但是讀寫次數依然有限,不巧碰上那一次就是萬念俱灰全送給它了,有幾個保護之道是在使用 SSD 可以派得上用場的,太奇技淫巧的方式就不寫,省得出問題靠悲靠墓的,基本保養工作應該就可以延年益壽了。

首先:別只用 SSD ,記得多備一顆一般硬碟搭配使用。
SSD + HDD 是最好的搭配方式,多這一顆硬碟很重要,主要是能把頻繁讀寫的工作搬到這顆一般硬碟上進行,即便是 Ultrabook 都建議準備一顆外接硬碟來放資料,比放在本機修改妥當多了,如果是桌上型電腦,告訴你多一顆二手傳統硬碟能保命,你裝不裝呢?當然要裝了!所有好的壞的事情記得都給 D 槽,出事前記得格式化就好

第二顆硬碟如果夠大,最好是分割一塊區域出來作備份使用,例如買了 128GB 的 SSD 最好就是在硬碟上切一塊 128GB 出來直接 MIRROR 備份是最佳的了。如果是筆電,也建議三不五時或定時定期備份到外接硬碟上去。

別傻到在 SSD 上跑分!
別真的為了求爽就在 SSD 上測試讀寫跑分,純粹只是為了看數字爽快!笨取標分(benchmark)會叫「笨取」不是沒有原因的,這種軟體真的會寫檔案進硬碟然後再刪除掉,跑越多次死越快而已,甚至還有人跑4GB的大檔求爽分,一點意義都沒有,SSD買到開箱裝上後就開始耗損壽命,千萬別笨取。

將個人資料夾、家資料夾搬到別的地方去
依據作業系統的趨勢,現在都會建立使用者的個人專屬資料夾,方便使用者作整理,這底下的檔案通常就是系統或軟體會頻繁改寫的檔案,筆電就沒辦法了,但是桌上型電腦建議移到另外一顆硬碟去。

Windows 在個人資料夾內的各個媒體資料夾上按右鍵、選內容、改變位置作移動即可。

Mac OSX 作法可以參照一般 Unix 指令把資料夾搬移到別的地方後再建立替身( ln -s )連結回本位,但是比較徹底又終極的方法是先將家目錄 /Users/YourName 整個複製到別的硬碟去,然後進 System Preferences / User and Groups 內在帳號上按右鍵、選 Advance Option 改變家目錄的路徑設定,重啟後完成搬家工作。通常這個雙帳號比較好處理, A 帳號把自己的家目錄複製到另一顆硬碟後,用 B 帳號進去改路徑設定,接著把原本的家目錄改名(username.bak之類的),再重新用 A 帳號登入看是否設定成功即可。

將暫存、快取檔案移動到別的地方去
cache 或 temp 這類暫存資料夾,是許多軟體在「執行過程當中」會暫時存放資料之用,像是解壓縮、遠端存取檔案等等,有立即需求卻又沒有持續性必要的檔案,這類檔案又會很頻繁的寫寫刪刪,SSD 也會因此折壽的,所以建議搬走。

Windows 就我的電腦上按右鍵、進系統內容、進階設定內,把 tmp / temp 路徑改設到另一顆硬碟或別的磁區去。

Mac OSX 如果沒有照剛剛前面那種方式搬移,一個作法則是先把所有軟體關閉,開 Terminal 輸入:
open ~/Library/
在 Finder 中直接把其中的 Caches 資料夾複製到別的地方去,然後在別的硬碟上建立 Caches 資料夾的替身,然後把替身複製回 Library 資料夾,這樣其他軟體就會傻傻轉去其他硬碟上開暫存檔案了。

瀏覽網頁的暫存檔案當然也要跟著移走,尤其是常看 YouTube 等線上串流影片的話,動輒讀寫上 GB 資料,對SSD是大傷,可能直接么壽都有可能。 IE 瀏覽器的暫存資料夾很好移動,大家都會;Firefox 暫存資料夾移動看這邊Chrome 暫存資料夾移動看這邊, Mac OSX 內只要移動剛剛那個 cache 資料夾,所有瀏覽器的暫存就等於全搬走了,省事。

關閉虛擬記憶體(virtual memory)或是移到別的地方去
比前述暫存跟快取檔案更需要關閉的設定,其實是「虛擬記憶體」。只要系統記憶體不足時,作業系統就會大量採用虛擬記憶體作為交換使用,這時的讀寫量遠高過前面的暫存檔案,如果依照目前的裝機記憶體來看,4GB ram 對於中輕量使用包括一般的遊戲執行都已經足夠,建議嘗試關掉看看,如果 8GB ram 又沒有執行什麼怪物級軟體,建議虛擬記憶體直接關了吧!

如果記憶體小、但有另外一顆硬碟,就改設定到另一顆去,筆記型電腦不如插一根 usb 3.0 的隨身碟來當替死鬼,如果真的所有最糟的狀況都遇上了(記憶體小、又沒有第二顆硬碟、卻買了SSD、還只有 usb 2.0),就看你 SSD 保固夠不夠長了...等死吧你,南無...

Windows 修改方式是進系統設定、進階設定,修改虛擬記憶體設定,將在 SSD 的設定設為關閉即可,記憶體不足的則將虛擬記憶體開在別的磁碟當中。

Mac OSX 修改虛擬記憶體比較囉唆,要開啟 Terminal 輸入以下指令關閉虛擬記憶體 swap 檔案:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
重開機後就關閉了,要重新開啟虛擬記憶體 swap 檔案:
sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
至於虛擬記憶體檔案要不要刪除,我是覺得沒什麼必要囉...修改設定只是為了要防止系統刪了又寫、寫了又刪,不會動的可以不用管他,不過真要刪除,也可以用下面的指令:
sudo rm /private/var/vm/swapfile*

其他注意事項
有些軟體會以自己的安裝資料夾作為暫存檔案的地方,這種軟體直接搬走為妙,像是 PPS 、 utorrent 等軟體,都直接搬去另一顆硬碟上執行最好,在 SSD 上執行會加快 SSD 的死亡速度到難以想像(拿來做資料庫也死的很快)。

最近似乎有不少人在談 Ram Disk,說是將暫存快取設定在 Ram Disk 中可以保護 SSD ,又能加快網頁瀏覽速度;基本上能保護 SSD 是對的,但只能加速「重新瀏覽這次開機後瀏覽過的網站」,Ram Disk 在重開機後內容會被清空,重開機後重新連上某個網站時,這時拼的是網速、看下載網頁夠不夠快,因為暫存快取完全不會有加速的感覺,只有在重新瀏覽看過的網站時會加速讀取,但是網頁大多沒多少容量,這種加速感覺不出來。這只有在沒有第二顆硬碟、記憶體又夠大(>8GB)時建議使用而已,不然容量沒抓精準,開 Ram Disk 出來反而會浪費能用的效能,甚至會啟用虛擬記憶體來存放原本在記憶體內的資料,4GB ram 以下的筆電建議識別玩這個了。

要用 ram disk 大致上會這樣建議:
4GB ram :看使用習慣上能不能關 swap ,少看些網頁影片或串流,多作點正事,網頁暫存容量限制看能不能設定成 0。ram disk 就別想了。
8GB ram :關 swap 、嘗試開 1GB ram disk 放暫存檔 。
>16GB ram:關 swap 、開 4GB~8GB ram disk 放暫存檔、把 PPS、 utorrent 搬進這裡執行,關機等於清空垃圾。

當然更進細緻的方式是把系統的 log 檔、紀錄檔等等都搬移到另一顆硬碟去存放,而像遊戲的暫存資料夾、設定檔、遊戲存檔等等也可以一一連結或搬移到其他硬碟上去,不過這些就完全看個人願意做的複雜度到多少了。對我而言啟動程式快速就夠了,至於開啟文件或檔案夠不夠快並不是很絕對重要。

advance option: 關閉深層睡眠 hibernate
hibernate 深層睡眠模式跟 standby sleep 最大的不同就是作業系統會將記憶體內的資料傾印進硬碟上的一個暫存檔案中,硬體進入無耗電狀態的睡眠,當硬體被喚醒時,如果這個檔案存在,就從這個檔案內讀取資料恢復桌面狀態,達到快速開機的效果(不過依然比 standby sleep 慢很多),如果筆電有啟用到這個功能,當電腦沒電的時候就會強制進入 hibernate 睡眠,而這種睡眠方式因為都寫在主系統碟上,一樣會耗損 SSD,桌上型用這種睡眠亦同,改用 SSD 固態硬碟的話最好還是將這種睡眠模式強制關閉掉,同時又可以為主系統碟釋放出幾乎等同記憶體容量的硬碟空間(這意思就是你記憶體越大,這個睡眠檔案就越大!)。

Windows 的作法是到控制台「電源」選項內、選擇進階計畫,將 hibernate 的時間設定為 never 永不;然後刪除 c:\hiberfil.sys 釋出容量。

Mac OS X 又有點麻煩了,要打開 Terminal 輸入下列指令:
sudo pmset -a hibernatemode 0
然後刪除傾印的檔案:
sudo rm /var/vm/sleepimage
恢復則是輸入:
sudo pmset -a hibernatemode 3

這個唯一的風險發生在筆電上,當筆電電力快要消耗完畢時系統將不會進入深層睡眠,有可能會直接斷電而失去所有未存檔的資料,不過要用到這個樣子應該也是故意的吧?

2014/10/01 update
這篇是原是 2012 年的文章,短短兩年之間 SSD 有了很多很重大的改變。

首先是平均抹寫技術的系統普及化,幾乎所有 SSD 的控制技術都加入了平均抹寫,現代的作業系統也都支援了平均抹寫;其次是價格下降與保固延長,以往 64GB 的價格現在已經可以買到 256GB ,保固也從一年、變成三年、更進一步有五年的,所以很多最佳化的作法在成本考量上都變得不重要了。

主要是平均抹寫技術, SSD 寫入不再針對同一檔案的儲存區域重複寫入,而是不斷在各位置寫入,以 120 GB 可以寫入 500 次來計算, 120*500 = 60000GB = 60TB 的寫入量,這是非常龐大的讀寫量,如果整顆硬碟都是在經常讀寫抹除的狀態也會需要很久很久的時間才會達到這個數字。

如果是以這個觀念來採購 SSD 的話,就是將「會一直不斷變動的資料放在 SSD 上,求取最大的讀取效益」,用來存放非必要資料,但是要注意的是像作業系統就不是「不斷變動的資料」,因為作業系統安裝完後基本的檔案可能三年動不到一次。

例如 120 GB 上安裝作業系統後佔用 10GB ,因為這 10GB 的檔案幾乎都不會變動,所以平均抹寫只對其他 110GB 經常變更的容量有作用,不會經常變動的資料在平均抹寫上幾乎得不到效益,但是也不會超過 500 次的寫入限制就是了。

使用上也不用在乎這麼多,挑一顆五年保的 SSD 在五年內盡力使用它,故障就是換掉或是購買新一代的 SSD ,這樣會輕鬆很多的。

這個網誌中的熱門文章

Gatsby 廣告中木村拓哉機械舞的背後

Google Doodle : Pacman 小精靈

自架 Android BT / NAS 機:超靜音超省錢超低功耗