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

udast

优化挂载参数

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

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

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

ssd

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

discard

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

  1. sudohdparm-I /dev/sdX |grep TRIM
  2. *DataSetManagement TRIM supported (limit 8 blocks)

若 SSD 支持 TRIM 命令,可以在 /etc/fstab 中启用 discard 参数。建议将 discard 挂载参数作为首选。据 debian wiki 所述,包括三星,镁光,英睿达在内的一些 SSD 在 。以下是 内核相关处 (2015/10/15):

  1. /* devices that don't properly handle queued TRIM commands */
  2. {"Micron_M500_*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
  3. ATA_HORKAGE_ZERO_AFTER_TRIM,},
  4. {"Crucial_CT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
  5. ATA_HORKAGE_ZERO_AFTER_TRIM,},
  6. {"Micron_M5[15]0_*"," MU01", ATA_HORKAGE_NO_NCQ_TRIM |
  7. ATA_HORKAGE_ZERO_AFTER_TRIM,},
  8. {"Crucial_CT*M550*","MU01", ATA_HORKAGE_NO_NCQ_TRIM |
  9. ATA_HORKAGE_ZERO_AFTER_TRIM,},
  10. {"Crucial_CT*MX100*","MU01", ATA_HORKAGE_NO_NCQ_TRIM |
  11. ATA_HORKAGE_ZERO_AFTER_TRIM,},
  12. {"Samsung SSD 8*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
  13. ATA_HORKAGE_ZERO_AFTER_TRIM,},
  14. {"FCCT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
  15. ATA_HORKAGE_ZERO_AFTER_TRIM,},
  16. /* devices that don't properly handle TRIM commands */
  17. {"SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM,},

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

noatime

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

compress

打开压缩功能在通常情况下有利于提高传输性能(并非绝对),也可以节省存储空间。加入以下挂载参数:

  1. compress=lzo
  2. compress=zlib

lzo 速度更快,zlib 压缩率更高。注意确认 SSD 主控是否是非压缩主控,若为压缩主控不建议加入该参数。

写缓存

若 SSD 带有缓存,启用 Write Cache 可以提高性能:Disks -> Drive Setting -> Enable Write Cache,但在突然断电的情况下可能造成数据丢失。

I/O 调度

SSD 结构不同于传统硬盘,寻址短,I/O 调度可选择 noop 以降低延迟。以下命令可查看与修改调度器:

  1. cat/sys/block/sdX/queue/scheduler # sdX 指你的设备
  2. sudotee/sys/block/sdX/queue/scheduler noop

注意以上方法并不持久,重启后会重置。如果 SSD 是系统唯一的存储设备,可考虑通过 elevator=noop 内核参数设置 I/O 调度器。也可使用 udev 规则来修改调度器,对多存储设备同样有效:

  1. /etc/udev/rules.d/60-ssd-scheduler.rules #创建该文件

文件内容如下:

# set deadline scheduler for non-rotating disksACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="noop"

怎么把

文件系统Btrfs的Makefile分析

文件系统Btrfs 的Kconfig分析

Btrfs文件系统在

Btrfs 的详细介绍

原文:

转载自:https://www.linuxidc.com/Linux/2015-10/124190.htm

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《在 SSD 上使用 Btrfs 文件系统的相关优化
本文地址:https://www.zhiletu.com/archives-4966.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微