Ubuntu是否支持SSD的TRIM命令?

SSD驱动器在填满后需要进行“清除/重置”以保持性能。这是通过TRIM命令来完成的,适用于新的SSD驱动器。Ubuntu是否支持使用hdparm等工具执行TRIM命令来清除/重置这些驱动器?

好问题,不过要注意的是,TRIM对于SSD的性能改善程度在不同设备之间会有所差异,对于某些设备来说,并没有像你想象的那么大的影响(尽管它们大多数都是速度较慢的设备)。 - Nicholas Knight
1我认为性能将恢复到与工厂设置相同(如果不是非常接近的话)。在这里查看解释-> http://www.anandtech.com/show/2738/10 - ssanj
5个回答

看起来10.10及更新版本中支持TRIM功能:

此外,TRIM功能会自动进行 - 当不再需要空块(例如,删除文件)时,它们会自动释放,如果磁盘报告支持TRIM。您无需手动发出hdparm命令即可使用此功能。


我原以为你还需要使用将TRIM命令“发送”到SSD的工具。如果按照你所说明的那样能够正常工作,那就很好。这篇Anandtech文章(http://www.anandtech.com/show/2738/10)指出,为了使TRIM起作用,操作系统和SSD都需要支持TRIM。我猜我的问题是关于操作系统/ Linux在与支持TRIM的SSD驱动器一起使用时的TRIM支持。 - ssanj
3TRIM命令需要知道要释放哪个块,所以在不确切知道磁盘上未使用的块是哪些的情况下,发出此命令可能会很危险。是的,操作系统和磁盘都需要支持TRIM。在Linux中,这是在内核版本2.6.33中添加的,因此将包含在Maverick中。为了使其正常工作,磁盘驱动程序和您正在使用的文件系统都需要支持TRIM。如果您在Maverick上使用ext4作为文件系统,那么应该没问题。 - Jeremy Kerr
我在想现有的固态硬盘是否可以进行“后期安装TRIM”来清理操作系统支持TRIM之前积累的垃圾文件。或者是否需要重新安装操作系统? - Kent Boogaart

Jeremy的回答在我看来并不完全准确。我一直在Lucid上运行最新的稳定内核,并且一直非常关注TRIM的状态,因为我的主要磁盘是OCZ Agility。
以下是我(认为)了解的情况:
- 内核从2.6.33开始支持TRIM(Maverick是2.6.35)。 - EXT4支持TRIM,但只有在关闭journaling时才能使用。 - 内核中的TRIM工作方式非常基本且相当慢。符合规范的磁盘可以接受多个范围,但目前内核只能一次处理一个范围。这是我大约一个月前读到的一些内容。我希望我能找到来源,因为这可能不准确或者已经不适用了。
对我来说,日志记录是个问题。数据损坏真是让人头疼。
然而,更新版本的hdparm(v9.25 - Maverick版本为v9.27)带有一个名为的脚本,它可以对驱动器进行快速分析,然后修剪所有的空白空间。与失去功能相比,我发现将定期设置为每周运行(或每天/每月/任何时间段)更加容易。除非您不断地损坏东西,否则操作系统驱动器的SSD退化并不会发生得那么快。您不需要实时TRIM。

还有一个名为DiskTRIM的GUI前端 DiskTRIM似乎没有在存储库中。经验较少的用户可能会发现这比设置cron作业更容易使用。

对于hdparm和disktrim,都有PPA可用,并且可以在Lucid(以及更早的版本)上运行,无需2.6.33+内核。


请问你能提供那些PPA的链接吗? - Jorge Castro
1启用ext4的“discard”挂载选项是否禁用了日志记录?我一直在寻找参考资料,但除了这个答案外,我找不到其他的 - 你能提供一个来源吗? - Hamish Downer
2在Ubuntu 12.04中,wiper.sh已被fstrim取代。 - tomodachi
1@Oli:我又做了一些阅读,现在我非常确定丢弃选项不会禁用日志。据我所知,最初丢弃选项只能与日志一起使用(我找到了这个补丁,允许在没有日志的情况下进行丢弃)。内核ext4页面记录了丢弃选项,但没有提到与日志不兼容。 - Hamish Downer

Linux自内核2.6.33版本开始,对EXT4文件系统提供了自动TRIM的支持。
第一个具备自动TRIM支持的Ubuntu版本是10.10(Maveric),但需要在fstab中进行激活(如这里所述)。

一般而言,是的,因为有许多方法可以获得更新的内核。如果我们将您的问题澄清为“10.04 LTS是否原生支持该命令?”,那么答案是否定的。然而,Maverick和Natty的内核(-generic、-generic-pae、-server和-virtual版本)已经被回溯到10.04 LTS并可在Ubuntu软件源的$release-updates中获取,例如,linux-image-generic-lts-backport-maverick是《Maverick回溯到Lucid》的链接

我正在运行11.04,看起来TRIM似乎没有开箱即用。
我测试了 使用这里的说明创建一个文件,删除它,看看扇区是否被清零/删除
我尝试启用TRIM使用这里的说明,但是没有成功。
当我运行wiper.sh时,我得到:
/sbin/wiper.sh --verbose --commit /dev/sda1 wiper.sh: Linux SATA SSD TRIM utility, version 3.3, by Mark Lord. rootdev=/dev/sda1 fsmode2: fsmode=read-write /: fstype=ext4 freesize = 13785252 KB, reserved = 137852 KB Preparing for online TRIM of free space on /dev/sda1 (ext4 mounted read-write at /).
This operation could silently destroy your data. Are you sure (y/N)? y Creating temporary file (13647400 KB).. Syncing disks.. Beginning TRIM operations.. get_trimlist=/sbin/hdparm --fibmap WIPER_TMPFILE.9689
/dev/sda: trimming 27294800 sectors from 462 ranges succeeded Removing temporary file.. Syncing disks.. Done.

然而,如果我再次运行它,它显示需要修剪的扇区/范围数量相同,并再次报告成功。每次都是完全一样的情况。看起来扇区从未被删除/释放。读取它们仍然显示相同的数据。

好奇是否有其他人成功使用它。


如果你在fstab中添加了discard选项,但它仍然无法正常工作,那很可能是alpha版本中的一个错误。你应该提交一个错误报告。 - Uli
我刚在natty中进行了测试(按照这些指示:http://askubuntu.com/questions/18903/how-to-enable-trim),在natty中它的效果甚至更好,TRIM几乎是即时的。 - Uli
有可能你的固态硬盘不支持TRIM - 早期的很多固态硬盘都不支持TRIM。 - Hamish Downer