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

2024年 7月 19日 106.3k 0

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

优化挂载参数

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

#           
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'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

挂载参数可以加入 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

相关文章

Linux 命令行的聊天工具 CenterIM
Linux 桌面年仍未到来 但 Linux 移动之年已到来
12 个在线学习 Linux 技能网站
Linux Mint : 会是另一个新的 Ubuntu 吗?
W3Conf 开发者大会将于下周召开
Ubuntu 10.04 ARM 处理器上网本版本结束服务期

发布评论