Linux中國

在 SSD 上使用 btrfs 文件系統的相關優化

優化掛載參數

在 Linux 中掛載 SSD 上的 btrfs,可以採用各種參數進行優化:

# <file system> <mount point>   <type>  <options>  <dump>  <pass>
UUID=<略>  /  btrfs defaults,ssd,discard,noatime,compress=lzo,subvol=@ 0   1

這些參數各有優缺點,酌情添加。

ssd

btrfs 文件系統有對 SSD 進行優化,在掛載參數中加入 ssd 即可。該參數不會自動啟用 TRIM/discard。

discard

可以通過以下命令確認 SSD 是否支持 TRIM

sudo hdparm -I /dev/sdX | grep TRIM
   * Data Set Management TRIM supported (limit 8 blocks)

若 SSD 支持 TRIM 命令,可以在 /etc/fstab 中啟用 discard 參數。建議將 discard 掛載參數作為首選。據 debian wiki 所述,包括三星,鎂光,英睿達在內的一些 SSD 在 discard/TRIM 上有問題,不能合適地處理 TRIM 命令。以下是 linux 內核相關處源代碼 (2015/10/15):

/* devices that don&apos;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&apos;t properly handle TRIM commands */
{ "SuperSSpeed S238*",      NULL,   ATA_HORKAGE_NOTRIM, },

該參數不是必需的,也可以自定義周期性運行 fstrim 命令來取代該參數,使用該命令前要確認 SSD 支持 TRIM,否則可能造成數據丟失。當 SSD 有足夠的空餘空間或(未分配的)可用空間時不需要該參數。

noatime

掛載參數可以加入 noatime,通過禁止更新訪問記錄來減少不必要的寫操作以提高性能。該選項對 HDD 同樣有性能提升。btrfs 的默認配置為 relatime

compress

打開壓縮功能在通常情況下有利於提高傳輸性能(並非絕對),也可以節省存儲空間。加入以下掛載參數:

compress=lzo
或
compress=zlib

lzo 速度更快,zlib 壓縮率更高。注意確認 SSD 主控是否是非壓縮主控,若為壓縮主控不建議加入該參數。

寫緩存

若 SSD 帶有緩存,啟用 Write Cache 可以提高性能:Disks -> Drive Setting -> Enable Write Cache,但在突然斷電的情況下可能造成數據丟失。

I/O 調度

SSD 結構不同於傳統硬碟,定址時間短,I/O 調度演算法可選擇 noop 以降低延遲。以下命令可查看與修改調度器:

cat /sys/block/sdX/queue/scheduler  # sdX 指你的設備
sudo tee /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"

參考:

  1. 關於在SSD上使用btrfs文件系統需要做的優化 - akarin.cn
  2. Solid State Drives - Arch wiki
  3. SSD Optimization - debian wiki
  4. Btrfs wiki

本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...