在 SSD 上使用 btrfs 文件系统的相关优化
October 17, 2015
Table of Contents
优化挂载参数
在 Linux 中挂载 SSD 上的 btrfs,可以采用各种参数进行优化:
#UUID=<略> / btrfs defaults,ssd,discard,noatime,compress=lzo,subvol=@ 0 1
这些参数各有优缺点,酌情添加。
ssd
btrfs 文件系统有对 SSD 进行优化,在挂载参数中加入
discard
可以通过以下命令确认 SSD 是否支持 TRIM:
sudo hdparm -I /dev/sdX | grep TRIM * Data Set Management TRIM supported (limit 8 blocks)
若 SSD 支持 TRIM 命令,可以在 /etc/fstab 中启用
/* 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, },
该参数不是必需的,也可以自定义周期性运行
noatime
挂载参数可以加入
compress
打开压缩功能在通常情况下有利于提高传输性能(并非绝对),也可以节省存储空间。加入以下挂载参数:
compress=lzo 或 compress=zlib
lzo 速度更快,zlib 压缩率更高。注意确认 SSD 主控是否是非压缩主控,若为压缩主控不建议加入该参数。
写缓存
若 SSD 带有缓存,启用 Write Cache 可以提高性能:Disks -> Drive Setting -> Enable Write Cache,但在突然断电的情况下可能造成数据丢失。
I/O 调度
SSD 结构不同于传统硬盘,寻址时间短,I/O 调度算法可选择
cat /sys/block/sdX/queue/scheduler # sdX 指你的设备 sudo tee /sys/block/sdX/queue/scheduler <<< noop
注意以上方法并不持久,重启后会重置。如果 SSD 是系统唯一的存储设备,可考虑通过
/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"
0 Comments