在 Linux 中掛載 SSD 上的 btrfs,可以采用各種參數進行優化:
#<file system><mount point><type><options><dump><pass>
UUID=<略>/ btrfs defaults,ssd,discard,noatime,compress=lzo,subvol=@01
這些參數各有優缺點,酌情添加。
btrfs 文件系統有對 SSD 進行優化,在掛載參數中加入 ssd
即可。該參數不會自動啟用 TRIM/discard。
可以通過以下命令確認 SSD 是否支持 TRIM:
sudohdparm-I /dev/sdX |grep TRIM
*DataSetManagement TRIM supported (limit 8 blocks)
若 SSD 支持 TRIM 命令,可以在 /etc/fstab 中啟用 discard
參數。建議將 discard
掛載參數作為首選。據 debian wiki 所述,包括三星,鎂光,英睿達在內的一些 SSD 在 discard/TRIM 上有問題,不能合適地處理 TRIM 命令。以下是 linux 內核相關處源代碼 (2015/10/15):
/* devices that don't properly handle queued TRIM commands */
{"Micron_M500_*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
ATA_HORKAGE_ZERO_AFTER_TRIM,},
{"Crucial_CT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
ATA_HORKAGE_ZERO_AFTER_TRIM,},
{"Micron_M5[15]0_*"," MU01", ATA_HORKAGE_NO_NCQ_TRIM |
ATA_HORKAGE_ZERO_AFTER_TRIM,},
{"Crucial_CT*M550*","MU01", ATA_HORKAGE_NO_NCQ_TRIM |
ATA_HORKAGE_ZERO_AFTER_TRIM,},
{"Crucial_CT*MX100*","MU01", ATA_HORKAGE_NO_NCQ_TRIM |
ATA_HORKAGE_ZERO_AFTER_TRIM,},
{"Samsung SSD 8*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
ATA_HORKAGE_ZERO_AFTER_TRIM,},
{"FCCT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
ATA_HORKAGE_ZERO_AFTER_TRIM,},
/* devices that don't properly handle TRIM commands */
{"SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM,},
該參數不是必需的,也可以自定義周期性運行 fstrim
命令來取代該參數,使用該命令前要確認 SSD 支持 TRIM,否則可能造成數據丟失。當 SSD 有足夠的空余空間或(未分配的)可用空間時不需要該參數。
掛載參數可以加入 noatime
,通過禁止更新訪問記錄來減少不必要的寫操作以提高性能。該選項對 HDD 同樣有性能提升。btrfs 的默認配置為 relatime
。
打開壓縮功能在通常情況下有利於提高傳輸性能(並非絕對),也可以節省存儲空間。加入以下掛載參數:
compress=lzo
或
compress=zlib
lzo 速度更快,zlib 壓縮率更高。注意確認 SSD 主控是否是非壓縮主控,若為壓縮主控不建議加入該參數。
若 SSD 帶有緩存,啟用 Write Cache 可以提高性能:Disks -> Drive Setting -> Enable Write Cache,但在突然斷電的情況下可能造成數據丟失。
SSD 結構不同於傳統硬盤,尋址時間短,I/O 調度算法可選擇 noop
以降低延遲。以下命令可查看與修改調度器:
cat/sys/block/sdX/queue/scheduler # sdX 指你的設備
sudotee/sys/block/sdX/queue/scheduler <<< noop
注意以上方法並不持久,重啟後會重置。如果 SSD 是系統唯一的存儲設備,可考慮通過 elevator=noop
內核參數設置 I/O 調度器。也可使用 udev 規則來修改調度器,對多存儲設備同樣有效:
/etc/udev/rules.d/60-ssd-scheduler.rules #創建該文件
文件內容如下:
# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="noop"
怎麼把Fedora 21 Workstation Cinnamon 的桌面環境安裝到 Btrfs 文件系統的計算機上 http://www.linuxidc.com/Linux/2014-12/110844.htm
Linux文件系統Btrfs的Makefile分析 http://www.linuxidc.com/Linux/2012-10/73301.htm
Linux 文件系統Btrfs 的Kconfig分析 http://www.linuxidc.com/Linux/2012-10/73300.htm
Btrfs文件系統在CentOS中的應用 http://www.linuxidc.com/Linux/2012-08/68098.htm
Btrfs 的詳細介紹:請點這裡
Btrfs 的下載地址:請點這裡
原文:https://memo.ink/btrfs-on-ssd/ 作者: @alim0x
原創:Linux中國 https://linux.cn/article-6408-1.html