固态硬盘
安装后,您需要为固态驱动器启用 TRIM。 你可以通过运行检查哪些设备允许 TRIM:
$ lsblk --discard
如果 DISC-GRAN(丢弃颗粒度)和 DISC-MAX(丢弃最大字节数)列非零,这意味着该块设备有 TRIM 支持。如果你的固态硬盘分区没有显示支持 TRIM,请确认你选择了一个支持 TRIM 的文件系统(ext4, Btrfs, F2FS, 等等)。注意,F2FS 需要内核 4.19 或更高版本来支持 TRIM。
要一次性运行 TRIM,你可以手动运行 fstrim(8)
。例如,如果你的 /
目录在一个 SSD 上。
# fstrim /
要自动运行 TRIM,使用 cron 或在 /etc/fstab
中添加 discard
选项。
使用cron的定期TRIM
将以下行添加到 /etc/cron.weekly/fstrim
:
#!/bin/sh
fstrim /
最后,使该脚本可执行:
# chmod u+x /etc/cron.weekly/fstrim
使用 fastab discard 和 持续 trim
你可以使用连续或定期的 TRIM,但如果你的 SSD 不能正确处理 NCQ,则不建议使用连续 TRIM。请参考内核的黑名单。
编辑 /etc/fstab
,添加 discard
选项以阻止需要TRIM的设备。
例如,如果 /dev/sda1
是一个 SSD 分区,格式化为 ext4,挂载 在 /
:
/dev/sda1 / ext4 defaults,discard 0 1
LVM
要为 LVM 的命令(lvremove
, lvreduce
, 等等)启用 TRIM,编辑 /etc/lvm/lvm.conf
,取消对 issue_discards
选项的注释,并将其设置为1
。
issue_discards=1
LUKS
警告: 在为你的 LUKS 分区启用 discard 之前,请注意安全问题。
要打开一个加密的 LUKS 设备并允许 discards ,用 --allow-discards
选项打开设备:
# cryptsetup luksOpen --allow-discards /dev/sdaX luks
非 root 设备
编辑 /etc/crypttab
,为 SSD 上的设备设置 discard
选项。例如,如果你有一个 LUKS 设备,名称为 externaldrive1
,设备为 /dev/sdb2
,密码为 none
。
externaldrive1 /dev/sdb2 none luks,discard
Root 设备
如果你的根设备在 LUKS 上,把 rd.luks.allow-discards
添加到 CMDLINE_LINUX_DEFAULT
。在 GRUB 的情况下,编辑 /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="rd.luks.allow-discards"
验证配置
要验证你是否已为 LUKS 正确配置 TRIM,请运行:
# dmsetup table /dev/mapper/crypt_dev --showkeys
如果此命令输出包含字符串 allow_discards
, 在你的 LUKS 设备上成功启用了 TRIM。
ZFS
在 ZFS 池上运行 trim
之前,确保池中的所有设备都支持它:
# zpool get all | grep trim
如果池允许 aurotrim
(默认设置为 off
),你可以定期或者自动 trim
zfs池。要一次性 trim
你的 zfs 池的名字
:
# zpool trim yourpoolname
定期 TRIM
将以下行添加到 /etc/cron.daily/ztrim
:
#!/bin/sh
zpool trim yourpoolname
最后,使该脚本可执行:
# chmod u+x /etc/cron.daily/ztrim
自动 trim
设置 autotrim yourpoolname
, 请运行:
# zpool set autotrim=on yourpoolname