我的Ubuntu 18.04安装是否启用了TRIM?


37

我知道默认情况下从14.10开始启用每周TRIM。资料来源:如何启用TRIM? 但是运行会sudo nano /etc/cron.weekly/fstrim返回一个空文件。还tail -n1 /etc/cron.weekly/fstrim表示此文件不存在。

运行会lsblk -D返回的非零值DISC-GRANDISC-MAX 因此我的SSD支持TRIM。是否实际上为我的SSD启用了每周TRIM?

我正在使用Kingston SSD

Answers:


58

默认情况下修剪(fstrim / discard)在18.04中启用为每周运行
它设置为在支持丢弃操作的设备上的所有已挂载文件系统上运行。

它是systemd通过systemctl而不是CRON 管理的服务。

查看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.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.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,详细执行。将文件系统从块堆栈向下传递到设备的字节数,以进行潜在的丢弃。

查看相关的系统日记帐分录

$ journalctl -u fstrim.timer
Jul 04 14:18:41 user-laptop systemd[1]: Started Discard unused blocks once a week.
Jul 04 21:59:26 user-laptop systemd[1]: Stopped Discard unused blocks once a week.
etc...

$ journalctl -u fstrim.service
Jun 25 10:59:44 user-laptop systemd[1]: Starting Discard unused blocks...
Jun 25 10:59:48 user-laptop fstrim[955]: /: 92.5 GiB (99335237632 bytes) trimmed
Jun 25 10:59:48 user-laptop systemd[1]: Started Discard unused blocks.
-- Reboot --
Jul 02 04:27:41 user-laptop systemd[1]: Starting Discard unused blocks...
Jul 02 04:27:46 user-laptop fstrim[1032]: /: 92.3 GiB (99150807040 bytes) trimmed
Jul 02 04:27:46 user-laptop systemd[1]: Started Discard unused blocks.
etc...

2
作为参考,何时由/lib/systemd/system/fstrim.timerOnCalendar=weekly)控制,什么由/lib/systemd/system/fstrim.serviceExecStart=/sbin/fstrim -av)控制。
Moilleadóir

1
好帖子!我建议您通过专用的systemctl命令更改“ cat”命令:cat /lib/systemd/system/fstrim.timer-> systemctl cat fstrim.timer。通常,该命令显示有效的服务版本。那可能是/ lib / systemd下的那个,但也可能是/ etc / systemd下的修改后的版本。

启用后,是否对所有驱动程序都起作用?例如,我在一个SSD中安装了ubuntu,但又将另一个SSD安装为ext4分区。它会自动修剪吗?(状态为“活跃”)
Eduardo

如何按需激活它?(例如,现在,我想去吃午餐)
剃刀

您可以手动启动/停止/重新启动与任何systemd服务:$ sudo的systemctl [启动/停止/重启] [服务名称]。服务
Broadsworde

2

编辑:请阅读评论,此答案混合了两种机制!

旧答案

有一点很重要,需要在@Broadsworde的答案中添加以使其完整。

在笔记本电脑上启用了所有计时器和服务时,缺少fstrim日志条目(仅:starting… stopping… reboot… starting…等)。

缺少步骤

您可能需要将文件系统标记可丢弃。如果文件系统未标记为可丢弃,则修剪将跳过它[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

在我的安装(原来18.10;后来升级到19.04)的文件系统具备丢弃选项启用。我在系统中仅使用SSD;而且它从来没有任何机械高清。我使用tune2fs启用了它们。关于为什么系统默认不启用它们的任何想法或解释?
FedonKadifeli

1
我认为这是不正确的。当从文件系统中删除文件时,丢弃选项将修剪块。systemd服务会定期修剪文件系统上未使用的块。这些是不同的东西。丢弃选项可能会对某些系统的性能产生负面影响,因此周期性的选项可能更好。
xioxox

1
@xioxox是正确的。最近mount手册页指出:«丢弃功能经常发出命令,以使块设备回收文件系统释放的空间。[...] 可能有显著的性能影响。(fstrim命令也可用于从用户空间启动批量修剪。)»
Fabio A.

谢谢,我相应地编辑了答案。请不要继续否决这个答案:我想保留它,因为您的评论很有价值!
Ben
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.