在SSD上使用btrfs文件系统的相关优化


优化挂载参数

    Linux   中挂载 SSD 上的 btrfs,可以采用各种参数进行优化:

#

UUID=<略> / btrfs defaults,ssd,discard,noa     ti   me,compress=lzo,subvol=@ 0 1

这些参数各有优缺点,酌情添加。

ssd

btrfs 文件系统有对 SSD 进行优化,在挂载参数中加入 ssd 即可。该参数不会自动启用 TRIM/discard。

 在SSD上使用btrfs文件系统的相关优化_设计制作_模拟技术

discard

可以通过以下命令确认 SSD 是否支持 TRIM:

sudo hdp     arm   -I /dev/sdX | grep TRIM

* Data Set Management TRIM suppor     te   d (li     mi   t 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, },

{ "S     ams   ung 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 */

{ "Supe     rS   Speed S238*", NULL, ATA_HORKAGE_NOTRIM, },

该参数不是必需的,也可以自定义周期性运行 fstrim 命令来取代该参数,使用该命令前要确认 SSD 支持 TRIM,否则可能造成数据丢失。当 SSD 有足够的空余空间或(未分配的)可用空间时不需要该参数。

noa  TI me

挂载参数可以加入 noa  TI me,通过禁止更新访问记录来减少不必要的写操作以提高性能。该选项对 HDD 同样有性能提升。btrfs 的默认配置为 rela  TI me。

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-rota  TI ng disks ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="noop"



45
62
0
82

相关资讯

  1. 1、《禁忌游戏之迷藏》曝惊悚片段捉迷藏跌入井中3115
  2. 2、《华丽一族》周播剧再创新野兽派情爱剧惹争议3299
  3. 3、《顶楼》洛根李下线意难平,网友脑洞大开,四点原因力证他会回归1638
  4. 4、四大影帝同台飙戏,王晶这部新片真的拼了!追虎擒龙港片新辉煌?2071
  5. 5、那些影视剧中的“渣男”,你最想给谁一巴掌?3121
  6. 6、他颜值好过张国荣金城武,是王祖贤的偶像,近照变老4868
  7. 7、《长歌行》临近大结局,大boss已现身,最担心的事也要来了!3458
  8. 8、延禧攻略:皇帝一把抱起魏璎珞走向龙床,太甜!这场戏百看不厌4193
  9. 9、《欧洲攻略》梁朝伟携“鲜男鲜女”来袭,网友直呼带不动,你咋看3522
  10. 10、58岁钟楚红近况,现身奢侈品店,容颜依旧,身材火辣2264
全部评论(0)
我也有话说
0
收藏
点赞
顶部