我的 Ubuntu 18.04 安装上启用了 TRIM 吗?

我的 Ubuntu 18.04 安装上启用了 TRIM 吗?

我知道从 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(丢弃未使用的块)默认每周运行一次对于支持丢弃操作的设备上所有已安装的文件系统。

fstrimsystemctl由 管理,不由管理,并且由服务单元 ( ) 和计时器单元 ( )cron定义systemdfstrim.servicefstrim.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

相关内容