如何在Linux下使用fstrim延长SSD驱动器的寿命

系统 Linux
在过去的十年中,固态驱动器(SSD)带来了一种管理存储的新方法。与上一代的转盘产品相比,SSD 具有无声、更冷却的操作和更快的接口规格等优点。如果你一直在 Linux 系统上使用此功能,则你可能熟悉下面描述的两种方法。

[[317464]]

这个新的系统服务可以使你的生活更轻松。

在过去的十年中,固态驱动器(SSD)带来了一种管理存储的新方法。与上一代的转盘产品相比,SSD 具有无声、更冷却的操作和更快的接口规格等优点。当然,新技术带来了新的维护和管理方法。SSD 具有一种称为 TRIM 的功能。从本质上讲,这是一种用于回收设备上未使用的块的方法,该块可能先前已被写入,但不再包含有效数据,因此可以返回到通用存储池以供重用。Opensource.com 的 Don Watkins 首先在其 2017 年的文章《Linux 固态驱动器:为 SSD 启用 TRIM》中介绍过 TRIM 的内容。

如果你一直在 Linux 系统上使用此功能,则你可能熟悉下面描述的两种方法。

老的方式

丢弃选项

我最初使用 mount 命令的 discard 选项启用了此功能。每个文件系统的配置都放在 /etc/fstab 文件中。

  1. # cat /etc/fstab
  2. UUID=3453g54-6628-2346-8123435f  /home  xfs  defaults,discard   0 0

丢弃选项可启用自动的在线 TRIM。由于可能会对性能造成负面影响,最近关于这是否是最佳方法一直存在争议。使用此选项会在每次将新数据写入驱动器时启动 TRIM。这可能会引入其他磁盘活动,从而影响存储性能。

Cron 作业

我从 fstab 文件中删除了丢弃选项。然后,我创建了一个 cron 作业来按计划调用该命令。

  1. # crontab -l
  2. @midnight /usr/bin/trim

这是我最近在 Ubuntu Linux 系统上使用的方法,直到我了解到另一种方法。

一个新的 TRIM 服务

我最近发现有一个用于 TRIM 的 systemd 服务。Fedora 在版本 30 中将其引入,尽管默认情况下在版本 30 和 31 中未启用它,但计划在版本 32 中使用它。如果你使用的是 Fedora 工作站 31,并且你想要开始使用此功能,可以非常轻松地启用它。我还将在下面向你展示如何对其进行测试。该服务并非 Fedora 独有的服务。它是否存在及其地位将因发行版而异。

测试

我喜欢先进行测试,以更好地了解幕后情况。我通过打开终端并发出配置服务调用的命令来执行此操作。

  1. /usr/sbin/fstrim --fstab --verbose --quiet

fstrim-help 参数将描述这些信息和其他参数。

  1. $ sudo /usr/sbin/fstrim --help
  2.  
  3. Usage:
  4. fstrim [options] <mount point>
  5.  
  6. Discard unused blocks on a mounted filesystem.
  7.  
  8. Options:
  9. -a, --all trim all supported mounted filesystems
  10. -A, --fstab trim all supported mounted filesystems from /etc/fstab
  11. -o, --offset <num> the offset in bytes to start discarding from
  12. -l, --length <num> the number of bytes to discard
  13. -m, --minimum <num> the minimum extent length to discard
  14. -v, --verbose print number of discarded bytes
  15. --quiet suppress error messages
  16. -n, --dry-run does everything, but trim
  17.  
  18. -h, --help display this help
  19. -V, --version display version

因此,现在我可以看到这个 systemd 服务已配置为在我的 /etc/fstab 文件中的所有受支持的挂载文件系统上运行该修剪操作(-fstab),并打印出所丢弃的字节数(-verbose),但是抑制了任何可能会发生的错误消息(–quiet)。了解这些选项对测试很有帮助。例如,我可以从最安全的方法开始,即空运行。我还将去掉 -quiet 参数,以便确定驱动器设置是否发生任何错误。

  1. $ sudo /usr/sbin/fstrim --fstab --verbose --dry-run

这就会显示 fstrim 命令根据在 /etc/fstab 文件中找到的文件系统要执行的操作。

  1. $ sudo /usr/sbin/fstrim --fstab --verbose

现在,这会将 TRIM 操作发送到驱动器,并报告每个文件系统中丢弃的字节数。以下是我最近在新的 NVME SSD 上全新安装 Fedora 之后的示例。

  1. /home: 291.5 GiB (313011310592 bytes) trimmed on /dev/mapper/wkst-home
  2. /boot/efi: 579.2 MiB (607301632 bytes) trimmed on /dev/nvme0n1p1
  3. /boot: 787.5 MiB (825778176 bytes) trimmed on /dev/nvme0n1p2
  4. /: 60.7 GiB (65154805760 bytes) trimmed on /dev/mapper/wkst-root

启用

Fedora Linux 实现了一个计划每周运行它的 systemd 计时器服务。要检查其是否存在及当前状态,请运行 systemctl status

  1. $ sudo systemctl status fstrim.timer

现在,启用该服务。

  1. $ sudo systemctl enable fstrim.timer

验证

然后,你可以通过列出所有计时器来验证该计时器是否已启用。

  1. $ sudo systemctl list-timers --all

会显示出下列行,表明 fstrim.timer 存在。注意,该计时器实际上激活了 fstrim.service 服务。这是实际调用 fstrim 的地方。与时间相关的字段显示为 n/a,因为该服务已启用且尚未运行。

  1. NEXT   LEFT    LAST   PASSED   UNIT           ACTIVATES
  2. n/a    n/a     n/a    n/a      fstrim.timer   fstrim.service

结论

该服务似乎是在驱动器上运行 TRIM 的最佳方法。这比必须创建自己的 crontab 条目来调用 fstrim 命令要简单得多。不必编辑 fstab 文件也更安全。观察固态存储技术的发展很有趣,并且我很高兴看到 Linux 似乎正在朝着标准且安全的方向实现它。

在本文中,学习了固态驱动器与传统硬盘驱动器有何不同以及它的含义… 

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2019-12-17 08:46:02

存储固态驱动器硬盘驱动器

2023-02-14 07:41:07

Linux 系统USB 驱动器

2017-02-08 14:59:17

LinuxSSDTRIM

2018-06-27 10:50:16

UbuntuexFAT驱动器

2012-10-31 09:31:06

SSD使用寿命固态存储

2011-05-03 15:13:32

墨盒喷墨打印机

2016-10-20 09:17:23

LinuxU盘驱动器

2019-11-13 10:08:55

Windows 10映射网络驱动器

2018-12-03 09:10:07

Linux驱动器命令

2011-05-06 17:38:59

硒鼓

2023-11-21 10:05:49

NAS磁盘硬盘

2023-01-06 07:52:26

Linux磁盘驱动命令

2019-01-15 14:29:43

Windows 10分区USB驱动器

2019-06-14 15:48:39

Windows 10硬盘SSD

2014-12-23 09:37:09

Linuxrsync

2020-12-27 21:08:58

物联网传感器IOT

2022-07-18 11:17:52

SSD

2019-06-19 09:00:33

驱动器安装Windows 10

2020-09-04 10:40:18

计算机互联网 技术

2021-09-26 15:00:18

Linux命令行工具NVMe驱动器
点赞
收藏

51CTO技术栈公众号