我知道从 14.10 开始,每周 TRIM 默认启用。来源:如何启用TRIM?
但运行sudo nano /etc/cron.weekly/fstrim
返回一个空文件。还说tail -n1 /etc/cron.weekly/fstrim
这个文件不存在。
运行lsblk -D
返回非零值,DISC-GRAN
因此DISC-MAX
我的 SSD 支持 TRIM。我的 SSD 是否真的启用了每周 TRIM?
我正在使用金士顿 SSD
答案1
从 18.04 开始fstrim
(丢弃未使用的块)默认每周运行一次对于支持丢弃操作的设备上所有已安装的文件系统。
fstrim
systemctl
由 管理,不由管理,并且由服务单元 ( ) 和计时器单元 ( )cron
定义systemd
fstrim.service
fstrim.timer
查看配置的fstrim.service
:
$ systemctl cat fstrim.service
# /lib/systemd/system/fstrim.service
[Unit]
Description=Discard unused blocks
[Service]
Type=oneshot
ExecStart=/sbin/fstrim -av
笔记:ExecStart=/sbin/fstrim
-av
在哪里:
-a
, 修剪支持丢弃操作的设备上所有已挂载的文件系统。
-v
, 详细执行。输出从文件系统沿块堆栈向下传递到设备以供潜在丢弃的字节数。
查看配置的fstrim.timer
:
$ systemctl cat fstrim.timer
# /lib/systemd/system/fstrim.timer
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim
[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true
[Install]
WantedBy=timers.target
查看状态的fstrim.timer
:
$ systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Thu 2018-07-05 05:45:11 BST; 4h 42min ago
Trigger: Mon 2018-07-09 00:00:00 BST; 3 days left
Docs: man:fstrim
开始/停止/重启 fstrim.timer
:(
不改变启动状态)
$ sudo systemctl [start/stop/restart] fstrim.timer
启用/禁用 fstrim.timer
:(
添加到启动或从启动中删除,不会改变当前活动状态)
$ sudo systemctl [enable/disable] fstrim.timer
查看日记帐分录为了fstrim.service
:
$ journalctl -u fstrim.service
...
May 01 07:57:48 user-laptop systemd[1]: Starting Discard unused blocks...
May 01 07:57:51 user-laptop fstrim[810]: /: 94.5 GiB (101432025088 bytes) trimmed
May 01 07:57:51 user-laptop systemd[1]: Started Discard unused blocks.
-- Reboot --
May 07 05:29:03 user-laptop systemd[1]: Starting Discard unused blocks...
May 07 05:29:05 user-laptop fstrim[776]: /: 94.3 GiB (101260668928 bytes) trimmed
May 07 05:29:05 user-laptop systemd[1]: Started Discard unused blocks.
-- Reboot --
etc...
查看日记帐分录为了fstrim.timer
:
$ journalctl -u fstrim.timer
...
May 01 07:57:48 user-laptop systemd[1]: Started Discard unused blocks once a week.
May 01 20:21:43 user-laptop systemd[1]: Stopped Discard unused blocks once a week.
-- Reboot --
May 02 06:21:59 user-laptop systemd[1]: Started Discard unused blocks once a week.
May 02 20:37:11 user-laptop systemd[1]: Stopped Discard unused blocks once a week.
-- Reboot --
etc...
答案2
编辑:请阅读评论,这个答案混淆了两种机制!
旧答案
有一个重要的观点需要添加到@Broadsworde 的答案中以使其完整。
虽然我的笔记本电脑上的所有计时器和服务都已启用,但 fstrim 日志条目却丢失了(只有:starting… stopping… reboot… starting…
等等)。
缺少步骤
您可能需要标记文件系统可丢弃如果文件系统未标记为可丢弃,则 trim 将跳过它[1]。
要将文件系统标记为可丢弃,您有两个选择:
1.选项:tune2fs
sudo tune2fs -o discard /dev/mapper/ubuntu--vg-root
这会将丢弃选项设置为我的 ext4 设备的默认选项。如果您不使用加密,请尝试一下/dev/sda
。
2.选项:/etc/fstab
确保将选项添加discard
到现有挂载选项的前面或后面。例如:
/dev/mapper/ubuntu--vg-root / ext4 discard,relatime,errors=remount-ro 0 1
只有在此之后,定时器服务才会真的做一点事。
脚注
- [1] 实际上,设备需要支持该
TRIM
操作。但在 Linux 上,这是一个文件系统标志。不过,运行文件系统的设备需要支持该TRIM
操作。要查看您的设备是否支持它,请使用:sudo hdparm -I /dev/sda | grep -i TRIM
。