重启后,fstrim 不记得已修剪的块

重启后,fstrim 不记得已修剪的块

我使用 LUKS + LVM 全盘加密(包括 /boot)。

但是,每次重启后,系统都会修剪所有可用空间,而并不记住修剪了哪些块。

我担心这会磨损我的 SSD。

Aug 07 15:49:18 /: 338.4 GiB (363312041984 bytes) trimmed
[REBOOT]
Aug 07 15:49:45 /: 225.5 MiB (236392448 bytes) trimmed
[NO REBOOT]
Aug 07 16:00:01 /: 1.4 GiB (1476653056 bytes) trimmed
[REBOOT]
Aug 09 08:08:43 /: 338.3 GiB (363260616704 bytes) trimmed
[NO REBOOT]
Aug 09 10:00:02 /: 1.6 GiB (1708560384 bytes) trimmed
[NO REBOOT]
Aug 09 16:00:02 /: 1.2 GiB (1317408768 bytes) trimmed
[NO REBOOT]
Aug 10 09:10:24 /: 4.9 GiB (5261406208 bytes) trimmed
[REBOOT]
Aug 10 15:02:24 /: 338.3 GiB (363209334784 bytes) trimmed

这是正确的行为吗?我希望在它重启后,继续修剪几个 GiB,而不是所有的可用空间。

答案1

TL;DR 据我所知,在普通 SSD 上,fstrim在相同区域再次运行通常不会造成任何损害。

fstrim遍历整个文件系统,检查文件系统未使用哪些块并告知驱动器。

因此 SSD 会收到一个 TRIM 命令,例如:“操作系统未使用块 123,您可以对其执行任何操作。”大多数 SSD 会将该块标记为未使用,并有效地将内容清零。在针对同一块的下一个 TRIM 命令中,SSD 通常会这样做:“嘿,它已被标记为未使用。我不做任何事情,然后告诉用户它已成功。”

您可以使用smartctl --xall /dev/sdXbefore 和 after 来fstrim检查磨损均衡值(大多数 SSD 都有一些磨损均衡属性)。对于守护进程等更改的极少数块,它们应该只会发生少量变化。

相关内容