一年半前的買的WD黑標硬碟WD7500BPKT突然出現壞軌,雖然從S.M.A.R.T上來看,壞掉的地方只有一個磁區,但是每次電腦開機的時候,ext4檔案系統總是會要求進行修復,十分不便。WD黑標硬碟也不是說這麼不耐操,是因筆者時常把筆電背著到處跑,在這樣的情況下,傳統機械式硬碟會承受不住也算是蠻正常的。所以,為了使這樣的情形不再發生,就決定衝一顆固態硬碟了!



什麼是固態硬碟?

固態硬碟(SSD, Solid State Drive)是使用快閃記憶體(Flash Memory)作為儲存媒介的硬碟(雖然實際上已沒有「碟」了),相對於傳統擁有磁盤、讀寫臂與讀寫頭的機械式硬碟,因內部結構都是使用電子零件而無法活動,故稱為「固態」。固態硬碟比機械式硬碟還要擁有更佳的存取效能,尤其是小檔案隨機存取的能力固態硬碟甚至要比機械式硬碟還快了20倍以上。從機械式硬碟換到固態硬碟,絕對是有感升級!

有沒有液態硬碟和氣態硬碟?

既然有固態硬碟,那有沒有液態硬碟呢?目前市面上還沒有使用液態媒介的儲存裝置,但好像有人真的在研究這種技術,要是真的做出液態硬碟的話,出問題時不知道會不會流汁出來。當然,現在也還沒有氣態硬碟。

Intel 530 240GB 開箱

考慮到自己使用的作業系統是Linux,因此選擇與Linux較相容的Intel廠牌,在價格和保固的衡量下,購買了Intel 530 240GB。

Intel 530 240GB外盒維持著Intel的藍色風格。背面則是寫著產品特色。

外盒的封口貼著「聯強貨」,證明這顆硬碟是聯強代理的。

打開外盒後,從裡面抽出一個用厚紙板折起來的盒子,可以看到Intel 530 240GB就靜靜躺在上面。

這個盒子看起來很小,但是裡面卻塞了許多東西,有Intel Speed Demon裝飾貼紙、塑膠袋包起來的Intel 530 240GB、SATA電源線和資料線、兩組螺絲、說明書與光碟、9mm加厚墊、3.5吋轉接架。

Intel 530 240GB 正面。

Intel 530 240GB 背面。

由於筆者的筆電Acer 4755G是使用9mm,而這顆Intel 530 240GB是7mm的,因此將盒子內附的9mm加厚墊給疊上去。

接著就可以將Intel 530 240GB裝進筆電內啦!

跑一下速度測試,因為筆者的Acer 4755G只有SATA2(SATA 3Gb/s),所以並不能發揮出Intel 530 240GB所有的效能,但也比WD黑標硬碟要快多了!

用SSD安裝Linux

原先筆者用WD黑標硬碟裝Linux系統時,MBR(msdos)分割表必須要有EFI分割區才可以開機(裝Windows的話必須要使用GPT分割表和EFI開機磁區)。但是換上Intel 530 240GB後,卻一直沒辦法掛上EFI分割區,所以又去試了GPT分割表,但是GRUB又一直搞不定。最後回到古早安裝Linux的方式,使用MBR分割表,將「/boot」單獨切出來掛載到第一個分割區,結果就安裝成功了。

SSD 4K對齊

使用SSD在切割分割區時,因SSD內部最小的儲存單位是4KB(1 page),要注意分割區一定得4K對齊,不然會嚴重影響到SSD的存取效能和壽命。Linux的磁碟分割軟體,在預設情況下切割出來的分割區就已經有4K對齊了。以Gparted為例,在設定分割區大小時可以選擇分割區貼齊的方式,如果是使用「MiB」,那分割區就有4K對齊。

如果要檢查分割區有無4K對齊的話,只要看分割區的第一個磁區的位置能不能整除「8」。如下面兩張圖,兩個分割區的第一個磁區分別在2048和526336,都可以整除8,所以有4K對齊。

為什麼第一個磁區的位置能整除8就有4K對齊?

實際上磁區還分為實體磁區和邏輯磁區,會有這樣的區別跟後來出現的「先進格式(Advanced Format)」有關。簡單來說,以前1個磁區只有512個位元組,但是後來往上增加了。為了使得新規格的硬碟可以在舊的系統上使用,於是有了「邏輯磁區」這種模擬技術,有了這樣的技術就可以將4K大小的磁區模擬成512位元組的磁區。在Linux下,可以使用以下指令來查看邏輯與實體磁區大小:

sudo fdisk -lu

如果沒有特別標示,那麼磁碟工具顯示出來的磁區多半是指「邏輯磁區」。為了要可以組成4K的磁區,必須使用8個512位元組的磁區,因此第一個磁區的位置能整除8就有4K對齊。

優化SSD上的EXT4檔案系統

Linux預設的檔案系統為EXT4,EXT4支援SSD的Trim指令,Trim可以使作業系統主動通知SSD哪些區塊是不要的,SSD會在閒置的情況時將不要的區塊給擦除成0。為什麼要這樣做呢?因為SSD只能將資料寫入至完全淨空的Page中,如果沒有Trim,SSD在寫入資料前,不像HDD可以直些覆寫資料,它必須先擦除掉原先早已刪掉不要的的資料,而且SSD只能以Block為單位,Block為許多個pages組成,可能有64 pages或更多,SSD緩慢的擦除效率會連帶讓寫入效率下降,這也就是為什麼SSD用久了就愈慢的原因(變髒啦)。

預設的情況下EXT4並不會開啟SSD的Trim,MBR分割表的話要使用類似以下的指令用文字編輯器來編輯「/etc/fstab」設定檔:

sudo pluma /etc/fstab

將「discard」參數加入SSD每個分割區的options中,重開機後即可啟用Trim。如果電腦並非當作Server使用的話,甚至還可以多加上「noatime」參數,讓EXT4在讀取檔案或是目錄的時候不紀錄存取時間,這樣可以有效的減少SSD的寫入次數和增加讀取效能。有些人在加入「noatime」參數時會連「nodiratime」參數也一併加入,這是不必要的,因為「noatime」參數已經包含了「nodiratime」參數的功能。

驗證Trim是否已經開啟

如何驗證Trim是否已經開啟,很簡單,就是查看被刪除的檔案原本在硬碟內的位置是不是已經被清空為0,可以使用以下方式來測試:

首先將工作目錄切換到一個比較容易處理(不要太深太多層,自找麻煩罷了)的目錄下,可以選擇家目錄「~」,可以使用以下指令:

cd ~

使用dd指令,建立一個亂數產生的檔案,檔名為「magictest」,檔案大小為512k x 100也就是50MB。

dd if=/dev/urandom of=magictest count=100 bs=512k oflag=direct

接著要查詢這個檔案在硬碟中的位置,實際上查到的是LBA(邏輯區塊位址, Logical Block Address),輸入以下指令:

sudo hdparm --fibmap magictest

記下第一行,byte_offset為0的begin_LBA,這就是「magictest」這個檔案的開始位址。

如果您還不知道自己的SSD是在哪個路徑下,可以先用磁碟工具查看,如筆者的是在/dev/sda。

接著輸入以下指令,查看指定位址下硬碟存放的內容。

sudo hdparm --read-sector LGA位址 硬碟路徑

以筆者的為例:

sudo hdparm --read-sector 14256128 /dev/sda

如果執行成功,應該會看到一堆以16進制表示的數值,這就是檔案內容了。

接著輸入以下指令將「magictest」檔案刪除:

rm magictest

因為作業系統可能會使用記憶體來暫存實際硬碟的資料,需要使用以下指令,建議系統將所有更變寫入至硬碟:

sync

接著再一次查看剛才的LBA位址下的檔案內容。

sudo hdparm --read-sector LGA位址 硬碟路徑

以筆者的為例:

sudo hdparm --read-sector 14256128 /dev/sda

如果Trim開啟成功,應該會顯示出一堆0。如果沒有的話也不必擔心,可能是sync指令尚未發生作用,也可能是SSD尚未執行Trim指令,也可能是SSD已經執行Trim指令了,但這塊空間又在短時間內被其他檔案佔用。所以可以重試幾次看看。

寫入快取

在Linux系統上可以開啟寫入快取的功能,已Linux Mint為例,到磁碟工具的「磁碟設定值」,開啟寫入快取即可。

開啟寫入快取後,寫入速度會明顯快很多,而且還可以使得硬碟不會變得過於忙碌,可以增加硬碟的壽命。

Intel 530 240GB 使用心得

回到開箱文的部份,經過了大概兩天的試用,換上SSD之後,筆電雖沒有跑的比之前還快很多,但是卻順很多了!同時做很多事情的時候,像是一邊聽音樂,一邊開一堆網頁上網,一邊下載軟體,一邊編譯程式,也沒有明顯的LAG現象,讓工作效率提升許多!硬碟容量部份在裝完系統、常用軟體和要聽的音樂之後,還剩下170GB,算是剛好夠用啦!