Mac

MAC OSX 使用 SSD 之後的系統優化方式與注意事項

自從把自己手上的 MBP 改裝 SSD 之後最大的感受就是整體效能提昇不少速度與反應都變快許多,但是 SSD 確有先天性的致命傷,至於有哪些缺陷呢?Leo 擷取維基百科的說明提供給大家參考

  • 寫入次數:目前固態硬碟普及的最大問題仍然是成本和寫入次數。無論是揮發性記憶體還是非揮發性記憶體,其每百萬位元組成本都遠遠高於傳統硬碟。因此只有小容量的固態硬碟的價格能夠被大多數人所承受。而由於快閃記憶體都有一定的寫入壽命、而且壽命屆滿後資料會讀不出來,因此成為大眾接受固態硬碟的另一個障礙
  • 資料遺失:固態硬碟數據損壞後是難以修復的。當負責儲存資料的快閃記憶體顆粒有毀損時,目前的數據修復技術不可能在損壞的晶片中救回資料,相反傳統機械硬碟或許還能挽回一些資料。

因此為要增加 SSD 的壽命就必須來降低 SSD 的寫入次數,因為 SSD 都有一定的寫入壽命,壽命屆滿之後資料就會讀不出來囉!!所以我們就必須手動來優化 OSX 的作業系統來達到降低寫入次數以便增加 SSD 的使用壽命。


因此為了要有效的降低寫入次數的目的我們必須來手動優化一下 OSX 來達到目的,今天 Leo 在這與各位介紹以下三種作法,透過這樣的設定就可以讓您的 OSX 存取硬碟的次數降低,順便將常用的資料夾路徑更改到實體硬碟上,方可避免 SSD 損毀時資料遺失的問題出現

  1. 設定noatime掛載
  2. 更改 OSX 休眠時資料存放模式
  3. 修改預設路徑

1. 設定noatime掛載

*nix的作業系統會對每一個檔案紀錄最後一次開啟( access )的時間,而這樣的功能其實不是說非常的必要。例如 Finder 內的搜尋目標有今天使用過的檔案、昨天使用過的檔案、或過去一週使用過的檔案等等,就是利用這個檔案屬性,而當我們使用 noatime 選項來掛載硬碟之後,就不會只開啟檔案就去更動其 access time 屬性了(資料引用來源),接著使用文字編輯軟體建立一個檔案命名為 「com.你的名字.noatime.plist」(ex. com.User.noatime.plist)並輸入以下內容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.你的名字.noatime</string>
<key>ProgramArguments</key>
<array>
<string>mount</string>
<string>-vuwo</string>
<string>noatime</string>
<string>/</string>
</array>
<key>RunAtLoad</key>
<true />
</dict> </plist>

接著請執行以下的步驟。

  1. 接著開啟 Terminal 輸入以下指令
  2. sudo chown root:wheel /Library/LaunchDaemons/com.你的名字.noatime.plist
  3. 接著重新啟動 MAC。
  4. 重新開完機之後開啟 Terminal 輸入以下指令
  5. mount
  6. 後查看,掛載在root路徑下的硬碟顯示為 /dev/disk0s2 on / (hfs, local, journaled, noatime) 之類的就是搞定啦!

2.更改 OSX 休眠時資料存放模式

OSX 系統有一個超好用的功能那就是休眠,透過這個休眠機制 Leo 自己就曾經一個月沒關過機喔!不過改裝 SSD 之後這個功能可算是 SSD 殺手了,因為當您把螢幕合上的時候 OSX 會將記憶體裡面的資料寫入到硬碟中並儲存起來以利您下次使用,因此當您的記憶體越大的時候上面的資料也愈多,因此寫入的時間與次數也更久,如果您的 MBP 上面配備 16 G 的記憶體的話,每次休眠的時候寫入的檔案最多就寫到 16G ,文章一開始有提到 SSD 最大的問題就在快閃記憶體有一定的寫入壽命,只要達到這個次數限制的時候資料將會讀不出來喔!各位可以想想,當您每次把螢幕合上利用休眠的方式來關機並從家裡移動到公司,此時就會寫入 16G 的資料,如果您一天開關的次數眾多,那寫入的次數就非常的可觀囉!因此為了要延長 SSD 的使用壽命我們就必須來修改這個機制。一般來說現在的 OSX 休眠時保存資料方式有以下幾種

  1. suspend to RAM:速度快但是需要消耗電力來保持記憶體當中的資料,hibernatemode 值為 0。
  2. suspend to Disk:速度慢但不需靠任何的電力即可維持資料,hibernatemode 值為 5。
  3. suspend to RAM + Disk:結合上述兩者優缺點,合上螢幕到完成休眠時間較長,但喚醒速度快,雖要靠電力維持資料,但萬一沒電後還是可以從 Disk 當中的檔案來恢復您合上之前的資料,hibernatemode 值為 3。

以目前 OSX 來說預設都是採用第三種的方式來保存休眠時的資料,因此為了有效的增加 SSD 的壽命就需要犧牲一些電力來讓資料存放到記憶體當中囉!因此我們就必須修改預設值來達到我們的目的,修改方式如下:

請進入終端機模式鍵入:『sudo pmset -g』並輸入密碼來檢查您目前的使用的休眠時資料存檔的模式為何


Leo-MBP:~ Leo$ sudo pmset -g
WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.
To proceed, enter your password, or type Ctrl-C to abort.
Active Profiles:
Password:
Battery Power 1
AC Power -1*
Currently in use:
womp 1
halfdim 1
sms 1
hibernatefile /var/vm/sleepimage
networkoversleep 0
disksleep 10
sleep 0
hibernatemode 3
ttyskeepawake 1
displaysleep 180
acwake 0
lidwake 1

此時應該會看到 hibernatemode 3 這行字跑出來,這就表示預設的休眠存檔模式則是採用 RAM + Disk 的方法,因此我們要將這個值修改成 0 才是我們要的利用 RAM 來存放休眠時其他資料,修改方式如下:
請進入終端機模式鍵入:『sudo pmset -a hibernatemode 0』來達到修改的目的
Leo-MBP:~ Leo$ sudo pmset -a hibernatemode 0
Warning: Idle sleep timings for “Battery Power” may not behave as expected.
– Disk sleep should be non-zero whenever system sleep is non-zero.
Leo-MBP:~ Leo$
修改完畢之後可在終端機模式鍵入:『sudo pmset -g』來確認是否修改完成,如果出現『hibernatemode 0』 則代表修改完成。
最後請在終端機模式下鍵入『sudo rm /var/vm/sleepimage』來將硬碟上的休眠時產生的暫存檔刪除掉來增加 SSD 可使用的空間。

3.修改預設路徑

最後要做的就是將常用的資料夾路徑更改到第二顆硬碟上,以 Leo 來說最常用的資料夾就是 Downloads 這個資料夾,因此要如何把資料夾挪到第二顆硬碟上的指定資料夾就變得分常重要,其實非常的簡單,只要打開您的終端機鍵入下列的指令即可

  • 首先先將 SSD 上面既有的目錄刪除:sudo rm -r /Users/Leo/Downloads
  • 接著做個捷徑來取代原本被刪除的目錄:ln -s /Volumes/你第二顆硬碟的名稱/資料夾名稱   /user/你的使用者簡稱/資料夾名稱
  • 範例:ln -s /Volumes/750G/Leo/Downloads   /Users/Leo/Downloads

這樣就可以將您常用的資料夾路經更改到第二顆硬碟上面!避免 SSD 損毀時資料無法救出的窘境發生。

感想

透過這樣的修改您已經大幅度降低 OSX 寫入硬碟的次數來增加您SSD 的壽命,不過不是這樣就大功告成下次 Leo 再來與各位分享最後的步驟那就是 RamDisk ,請大家耐心期待吧!



關於作者

Leo

Leo

喜愛旅遊並沉迷科技應用數十年無法自拔的重度 3C 上癮者!

9 回應

  • 請問一下!!是否要在root模式下執行sleepimage delet的指令呢?因為重開機後還是會發現儲存空間中仍然還有sleepimage的佔據!謝謝!!

    版主回應:
    請問改完有重新開機嗎?

  • 不好意思!!
    我利用軟體把TRIM開啟那樣算優化的一種嗎??
    再麻煩你回我謝謝!!

    版主回應:
    算呀!

  • 請問noatime那個文字檔顯示已鎖定為正常嗎?

    版主回應:
    要有編輯權限去更改才行

  • 不好意思,請問一下我都有按照上述的第一個方法建立一個plist檔,也輸入指令,但為何在重啓後在終端機中卻不見您所說的/dev/disk0s2 on / (hfs, local, journaled, noatime)?

    system version: Mountain Lion 10.8

    版主回應:
    指令有打對嗎?

  • 如果還是無法掛載noatime的可以試試下列指令

    $ sudo chown root:wheel /Library/LaunchDaemons/com.你的名字.noatime.plist
    & sudo chmod 644 /Library/LaunchDaemons/com.你的名字.noatime.plist
    $ sudo launchctl load -w /Library/LaunchDaemons/com.你的名字.noatime.plist

    重啟後再輸入

    $ mount | grep ” / ”

    以後重開機就自動掛載

  • 想請教一下,最後Sean回應的那三個指令,前兩個我都ok但第三個打完跑出這個
    launchctl: no plist was returned for: /Library/LaunchDaemons/com.你的名字.noatime.plist
    nothing found to load

    請問一下是哪邊有問題呢?
    謝謝

  • 另外請問,如果想把最後一招更改Downloads目錄改回原來的話,要怎麼做呢?因為還是不常帶第二顆硬碟出門…謝謝

發表評論