因為之前一個移動硬盤因為壞道蔓延導致沒辦法繼續使用,我略沖動地跑去買了一塊 120GB 的三星840 固態硬盤回來。為了使用起來更方便,還去弄了個光驅位硬盤托架,把固態硬盤接在了光驅位與原本的筆記本硬盤一起工作。機械硬盤裝 Win7 兼作備份盤,固態硬盤則安裝了 Ubuntu。
在買固態硬盤前我是做了些功課的,了解到要使固態硬盤發揮出它應有的性能以及延長它的壽命,需要對它進行 4K 對齊並且開啟 Trim。
先說說這個 4K 對齊。有人說用 GParted 直接分區會自動進行 4K 對齊,而更普遍的說法則是分區時在 “Free Space Preceding” 處填上一個整數(比如1或2,如下圖)。我使用了后面那個方法,因為我是裝完系統才知道前面那個(更新:經測試前面那個方法是有效的)。

測試是否 4K 對齊很簡單,在終端運行 $sudo fdisk -l 然后查看各分區的起始扇區,如果是8的倍數則表明該分區已經“4K 對齊”了(如下圖,Start 一欄的數值全部為8的倍數)。

接下來就是啟用 Trim。有兩種方法可以讓 Trim 運作,第一種是使用 Online Discard (fstab),另一種是使用 cron 按計划執行 fstrim。在啟用 Trim 之前,首先要滿足下面幾個條件:
可以通過下面這個命令來查看所用的 SSD 是否支持 Trim:
在終端輸入 $sudo gedit /etc/fstab,然后在 SSD 每個分區的選項中都加上 “discard”,比如我的 fstab 修改后是這樣:
這個方法比較簡單,但是並不推薦這么做。Discard 選項啟用后,文件系統上的文件一旦被刪除,會立即通知 SSD 進行 Trim 操作,這就是online discard (立即刪除)。在進行刪除大量小文件的操作時可能會造成不小的性能下降,參見 Patrick 的博客文章。
fstrim 是執行 Trim 操作的命令,配合 cron 可以讓操作系統按計划執行 Trim 操作,每天一次。
首先在 /etc/cron.daily 目錄下創建一個名為 trim 的文件:
往 trim 文件中粘貼如下內容:
真正執行 Trim 操作的是最后兩個命令,要根據實際情況進行修改。因為我的根目錄和 home 目錄在兩個獨立的分區,所以在這里使用了兩個命令分別執行 fstrim。
最后給 trim 文件加一個可執行權限就可以了:
Ubuntu 會在每天早上 6:25 執行 cron 每日任務,如果當時電腦沒有開機的話,任務仍然會在其它時間執行。日志文件保存在 /var/log/trim.log 中。
總的來說,4K 對齊與啟用 Trim 都很簡單。我安裝完系統測得平均讀取速度達到 280MB/S,逼近 SATA2 的理論上限。與原先的機械硬盤相比,不論是開機啟動速度還是應用程序響應速度都得到了極大的改善!
先說一下我現在的平台配置:
CPU:AMD Phenom II X4 955 BE(OC 4GHz)
主板:Gigabyte GA-890GPA-UD3H v1.0
內存:Crucial BLT4G3D1869DT2TXOB(4GB x 2)
SSD:Plextor(浦科特) M3P 128GB
顯卡:HIS HD 4870 IceQ 4+ Turbo 1GB
這里我還是用Ubuntu 12.10來演示,安裝好系統進入桌面后,運行命令行工具。Ubuntu就是UXTerm了。
要在Linux下對SSD開啟系統自動Trim功能,我們需要做的是修改文件系統的配置表,添加對應的分區格式參數。
不過文件系統配置表是非常重要的系統文件之一,如果修改錯誤,會導致無法再正常進入系統,所以我們要先做好備份,首先在命令行工具輸入:
- sudo cp /etc/fstab ~/fstab-backup
備份完畢我們就可以去修改fstab文件了,由於fstab是系統文件,如果直接在圖形界面打開,是不允許編輯,因此我們需要用授權模式打開文件,在命令行界面輸入以下命令:
- gksudo gedit /etc/fstab
檢測命令輸入無誤后回車便能看到彈出如下圖的窗口
要開啟自動Trim功能,我們需要在options一項的內容上添加對應的參數,EXT4分區需要添加的參數為:discard
新添加的參數跟原來的參數要加半角“,”來區分開,正確添加參數后如下圖所示:
正確編輯好fatab文件后,我們只需要保存文件,重啟電腦后自動Trim即會生效。
注意:編輯完后請仔細認真檢查,確認無誤后才保存文件並重啟電腦,否則會導致掛載磁盤出錯而無法正常進入系統。
在WIN7下,我們只需要確保3個條件成立就可以確定Trim是開啟了的,但要驗證卻不甚容易(雖然一般也沒需要特地去驗證
),那linux呢?
Linux下其實有一個不太復雜的驗證方式,大家請看下去。
首先我們重新打開命令行窗口,進入SSD分區下的目錄。以我這里的home目錄為例,則需要輸入的命令為:cd /home
進入目錄后,我們新建一個名為tempfil的臨時文件,輸入命令:
- sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
接着我們需要先查詢到這個文件占用的LBA地址,輸入命令:
- sudo hdparm --fibmap tempfile
這里我順道打開home目錄給大家看一下,tempfile這個測試文件就被創建在這里。
然后我們還需要確認SSD的標識符,運行磁盤工具就能看到,如下圖,我的M3P標識符為sde。
在命令行界面繼續輸入命令:
- sudo hdparm --read-sector 41286656 /dev/sde
我們再輸入以下2個命令以刪除測試文件並要求系統同步向硬盤發出刪除指令:
- sudo rm tempfile
- sync
上圖看到測試文件已經被刪除了。
然后我們再執行一次檢查LBA地址數據的命令
- sudo hdparm --read-sector 41286656 /dev/sde
到此為止,我已經正常在Ubuntu 12.10內為我M3P的EXT4分區開啟了自動Trim。
這里可能有人會問,如果是其它分區格式呢?若誤修改fstab導致無法進入系統,要怎么恢復?
這兩個問題,我在后面的帖子會接着給大家答案。先讓我休息下吧,折騰次Linux不容易,誰叫我手上就只有1個SSD和1台電腦呢
拓展閱讀:SSD 新手使用須知:4K 對齊調教實戰,提升 SSD 效能
David Yin. (19 Aug, 2012). Make sure 4K Alignment on SSD. David Yin”s Blog. Retrieved 26 Jul, 2013, from http://www.yinfor.com/blog/archives/2012/08/make_sure_4k_alignment_on_ssd.html
Nicolay Doytchev. (17 Oct, 2010). HOWTO: Configure Ext4 to Enable TRIM Support for SSDs on Ubuntu and Other Distributions. Forked by Nicolay. Retrieved 26 Jul, 2013, from https://sites.google.com/site/lightrush/random-1/howtoconfigureext4toenabletrimforssdsonubuntu
OpenNingia. (30 Dec, 2010). Installing Ubuntu on a SSD. Ask Ubuntu. Retrieved from http://askubuntu.com/questions/19376/installing-ubuntu-on-a-ssd
Uli. (30 Dec, 2010). How to enable TRIM?. Ask Ubuntu. Retrieved from http://askubuntu.com/questions/18903/how-to-enable-trim
ivan. (19 Oct, 2010). Linux平台使用SSD必讀 (範例為Ubuntu). 永遠的真田幸村. Retrieved from http://yblog.org/archive/index.php/11734
Nicolay Doytchev. (21 Sep, 2010). HOWTO: Check If TRIM On Ext4 Is Enabled And Working On Ubuntu And Other Distributions. Forked by Nicolay. Retrieved 26 Jul, 2013, from https://sites.google.com/site/lightrush/random-1/checkiftrimonext4isenabledandworking
Multiple. (n.d.). TRIM. Wikipedia, the free encyclopedia. Retrieved 26 Jul, 2013, from http://en.wikipedia.org/wiki/TRIM
Multiple. (n.d.). Serial ATA. Wikipedia, the free encyclopedia. Retrieved 26 Jul, 2013, from http://en.wikipedia.org/wiki/Serial_ATA
Anonymous. (n.d.). Grub2. Community Ubuntu Documentation. Retrieved from https://help.ubuntu.com/community/Grub2
Andrew. (15 Jan, 2013). ENABLE TRIM ON SSD (SOLID-STATE DRIVES) IN UBUNTU FOR BETTER PERFORMANCE. Web Upd8: Ubuntu / Linux blog. Retrieved 22 Apr, 2014, from http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html
Patrick. (8 Jul, 2011). Impact of ext4′s discard option on my SSD. Patrick’s WebLog. Retrieved 22 Apr, 2014, from https://patrick-nagel.net/blog/archives/337
Multiple. (n.d.). cron. Wikipedia, the free encyclopedia. Retrieved 22 Apr, 2014, from http://en.wikipedia.org/wiki/Cron
Anonymous. (n.d.). fstrim(8). Linux manual page. Retrieved 22 Apr, 2014, from http://man7.org/linux/man-pages/man8/fstrim.8.html
Anonymous. (n.d.). CronHowto. Community Help Wiki. Retrieved 22 Apr, 2014, from https://help.ubuntu.com/community/CronHowto
Ji m. (8 Dec, 2013). How to Enable TRIM on SSD in Ubuntu Linux. UbuntuHandbook. Retrieved 22 Apr, 2014, from http://ubuntuhandbook.org/index.php/2013/12/enable-trim-ssd-better-performance/
