Linux 中的固态硬盘:为 SSD 启用 TRIM

466 位读者喜欢这篇文章。
Three giant robots and a person

Opensource.com

在运行 Linux 的计算机中安装我的第一个固态硬盘 (SSD) 后,我开始探索如何维护它们。固态硬盘的运行方式与传统磁性硬盘不同,并且它们需要来自软件方面的不同维护,才能实现最佳功能。

在传统磁性硬盘上,删除的文件在删除时不会从磁盘上完全移除。这就是您可以恢复已删除文件的原因。本质上,文件系统只是引用磁盘上文件的位置,当文件被删除时,该引用被擦除,允许您在这些空白空间中写入新数据。但是,对于 SSD,新数据只能写入驱动器的全新或已擦除的单元。由于必须在写入之前清除空间,如果写入文件时没有足够的可用空间,则必须先擦除空间。这可能会对性能产生负面影响。

如果操作系统在写入新数据之前擦除未使用过的空间,并且在设备没有同时尝试写入时,文件保存性能可以得到提高。输入 TRIM。TRIM 命令本质上允许您的操作系统告知驱动器哪些数据区域不再使用,以便它可以擦除它们,从而加快驱动器以供将来写入,并为 SSD 用户提供更优化的体验。

在 Linux 中,fstrim 提供了此功能,使驱动器为写入新数据做好准备,并延长驱动器的长期寿命。由于在我使用过的 Linux 发行版上,SSD 的 TRIM 操作不是自动的,因此必须对其进行计划,否则 SSD 的性能会随着时间的推移而下降。

为了在驱动器上运行 fstrim,驱动器本身以及位于其上的文件系统必须支持 TRIM。可以在文件系统挂载过程中启用 TRIM。例如,为了将设备 /dev/sda2 挂载到 /mnt 并启用 TRIM,您将运行

mount -t ext4 -o discard /dev/sda2 /mnt

一旦启用,TRIM 过程本身相当简单。也可以在命令行或 cron 作业中手动完成 SSD 的 TRIM 操作。作为超级用户(使用 su 或 sudo),运行 fstrim / -v 以完成手动 TRIM 操作,或者设置一个 cron 作业,以便在您的计算机不使用时定期为您运行此命令。有关 fstrim 的完整选项列表,请参阅其 手册页

硬件支持因使用的驱动器接口类型而异,无论是 PCI、ATASCSI 还是 SD/MMC。还值得咨询您的 Linux 供应商,以了解有关您的特定发行版如何支持 TRIM 的更多信息。

例如,Red Hat 提供了以下 SSD 磁盘指南。“随着已用块数接近磁盘容量,性能会下降。性能影响的程度因供应商而异。但是,所有设备都会经历某种程度的性能下降。为了解决性能下降问题,主机系统(例如,Linux 内核)可以使用丢弃请求来通知存储器,给定的块范围不再使用。”

Debian wiki 提供了 SSD 使用的一些基本注意事项:使用 Linux kernel 3.2 或更高版本,使用 SSD 的最新固件,使用 EXT4 文件系统,以及“拥有足够的 DRAM,以便在正常工作负载下无需交换空间即可运行。”

标签
User profile image.
教育家、企业家、开源倡导者、终身学习者、Python 教师。教育心理学硕士,教育领导学硕士,Linux 系统管理员。

19 条评论

很棒的信息。我在我的台式机和笔记本电脑上的 SSD 上使用 JFS,带有 TRIM 功能,而且我认为设置了 noatime。效果很好。

discard 标志导致文件系统在每个扇区被删除时发出 TRIM 命令。关于这是否是一个好主意,存在不同的观点,但这可能会对性能产生影响。文件系统不需要使用 -o discard 挂载即可运行 fstrim。事实上,一些发行版有一个 cron 作业,每周运行 fstrim -av 以代替使用 -o discard 挂载。

Ubuntu 在检测到您正在使用 ssd 硬盘驱动器后,默认情况下会激活 trim 命令。

您可以分享一个关于此的链接吗?

回复 ,作者:Greavy Weavy (未验证)

您好,

您可以查看 Ubuntu 16.04 的更新日志,关于 util-linux 软件包。它安装了 fstrim 命令和脚本以自动运行。引用
“util-linux (2.27.1-6ubuntu1) xenial; urgency=medium * 从 Debian unstable 合并。剩余更改:- 定期自动 TRIM SSD(core-1311-ssd-trimming):+ 添加 debian/fstrim-all.cron:调用 fstrim --all。安装为 /etc/cron.weekly/fstrim。”

来自

https://launchpad.net/ubuntu/xenial/+source/util-linux/+changelog

Carlos

回复 ,作者:Don Watkins

感谢分享,并为学习添砖加瓦。

回复 ,作者:cromualdo (未验证)

Systemd 也提供了 fstrim.timer。
例如,以下是如何为 Debian 启用它
sudo cp /usr/share/doc/util-linux/examples/fstrim.service /etc/systemd/system
sudo cp /usr/share/doc/util-linux/examples/fstrim.timer /etc/systemd/system
sudo systemctl enable fstrim.timer

感谢分享。所有这些都有助于更好地了解如何维护固态硬盘。

回复 ,作者:Ferdinand Thommes (未验证)

感谢这个精彩的解释和文章。

这篇文章具有误导性。我知道已经有人评论过这一点,但您真的应该在您的主要文章中修复它。它不是
步骤 1:使用 discards 挂载
步骤 2:现在运行 fstrim
这些实际上是两种完全不同的方法。事实上,在文件系统已使用 discards 挂载后运行 fstrim 是完全没有必要的(除了第一次)。

这篇文章迟到了大约 5 年,即使在那之后,充其量也是不准确的。

我不是 SSD 硬盘驱动器的粉丝。我不知道它们有什么特别之处,我只是更喜欢我熟悉和喜爱的旋转磁盘,它们按照我的需要运行,并且在它们的 EOL 之前不会出现问题。到那时,我已经有了另一个来更换它。更不用说我可以用很少的钱购买 2/3/4TB 的硬盘驱动器

http://www.tigerdirect.com/applications/SearchTools/item-details.asp?Ed…

http://www.tigerdirect.com/applications/SearchTools/item-details.asp?Ed…

-- 对于我作为一名刚起步的程序员编写的所有脚本来说,空间绰绰有余!我想当 SSD 成为常态时,我最终将不得不接受它并购买它们,但在那之前?...我会囤积旋转磁盘并享受寻道时间!哈哈!

我在我的单 SSD 笔记本电脑上安装了 Linux,我是否必须启用 TRIM,系统会自动启用它吗?谢谢。

非常好的文章!

我使用三星 EVO 850 SSD 和几个不同的发行版,并且不知道这个问题。

在获得适当的授权和作者署名后,我想为我网站的读者准备一篇文本。

谢谢!

http://www.openbuntu.com/

很好的评论

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.