Linux 對SSD硬碟最佳化的方法

G8bao7發表於2015-07-23

# 測試 ssd效能
hdparm -t /dev/sda
 
###################################################### 關閉日誌功能 #########################################
可以延長SSD壽命,但是突然斷電容易造成檔案損壞
方法一:
# fstab里加掛載引數data=writeback,如:
# 原
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 relatime,errors=remount-ro 0 1
# 修改,增加data=writeback
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 relatime,errors=remount-ro,data=writeback 0 1
 
方法二:
    # 直接關閉日誌,不用重新分割槽(要解除安裝分割槽才能執行該指令)
tune2fs -O ^has_journal /dev/sda2 

# 然後執行 
e2fsck -f /dev/sda2
    #
dmesg | grep EXT4 
如果顯示 “EXT4-fs (sda2): mounted filesystem without journal”  說明關閉日誌成功;
否則顯示 “mounted filesystem with ordered data mode”

# 開啟日誌
tune2fs -O has_journal /dev/sda2
 
###################################################### 修改 /etc/fstab ###########################################
sudo gedit /etc/fstab
# 原
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,errors=remount-ro 0 1
# 修改, 增加 discard,noatime 項, 執行 mount 檢視是否含有 discard
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 discard,noatime,defaults,errors=remount-ro 0 1
### discard  開啟TRIM功能(如果SSD組RAID0後,將失去Trim功能)
Trim的作用
原本在機械硬碟上,寫入資料時,Windows會通知硬碟先將以前的擦除,再將新的資料寫入到磁碟中。而在刪除資料時,Windows只會在此處做 個標記,說明這裡應該是沒有東西了,等到真正要寫入資料時再來真正刪除,並且做標記這個動作會保留在磁碟快取中,等到磁碟空閒時再執行。
這樣一來,磁碟需要更多的時間來執行以上操作,速度當然會慢下來。
而當Windows識別到SSD並確認SSD支援Trim後,在刪除資料時,會不向硬碟通知刪除指令,只使用Volume Bitmap來記住這裡的資料已經刪除。Volume Bitmap只是一個磁碟快照,其建立速度比直接讀寫硬碟去標記刪除區域要快得多。這一步就已經省下一大筆時間了。然後再是寫入資料的時候,由於NAND 快閃記憶體儲存資料是純粹的數字形式,因此可以直接根據Volume Bitmap的情況,向快照中已刪除的區塊寫入新的資料,而不用花時間去擦除原本的資料。
以上就是Trim的原理以及真正作用。


# 檢查核心版本, Linux核心自2.6.33開始支援TRIM。
uname -a


# 檢查SSD是否支援trim
# 顯示 * Data Set Management TRIM supported  說明支援
hdparm -I /dev/sda | grep TRIM   




### noatime  禁止記錄最近一次訪問的時間戳
預設情況下,Linux ext 檔案系統在檔案被訪問、建立、修改等的時候記錄下了檔案的一些時間戳,比如:檔案建立時間、最近一次修改時間和最近一次訪問時間。因為系統執行的時候要訪 問大量檔案,如果能減少一些動作(比如減少時間戳的記錄次數等)將會顯著提高磁碟 IO 的效率、提升檔案系統的效能。Linux 提供了 noatime 這個引數來禁止記錄最近一次訪問時間戳。

###################################################### IO排程改為noop #######################################
### 所有磁碟
gedit /boot/grub/menu.lst
# 最後一行增加
elevator=deadline

### 指定磁碟
vim /etc/rc.local
echo deadline > /sys/block/sda(磁碟)/queue/scheduler
echo 1 > /sys/block/sda(磁碟)/queue/iosched/fifo_batch

###################################################### 臨時檔案使用ramdisk替換ssd #####################################
會浪費一些RAM
# Using a ramdisk instead of the SSD to store temporary files will speed things up, but will cost you a few megabytes of RAM. 
sudo gedit /etc/fstab
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0



參考
/> http://blog.csdn.net/gold2008/article/details/18904621
%E5%AF%B9ssd%E7%A1%AC%E7%9B%98%E4%BC%98%E5%8C%96%E7%9A%84%E6%96%B9%E6%B3%95/



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1745716/,如需轉載,請註明出處,否則將追究法律責任。

相關文章