TRIM到底是什么?


14

TRIM的Wikipedia页面上,我得到的印象是,引入TRIM是为了减少对SSD的写入,但要考虑到未使用哪些块的情况,给文件系统添加字母。

如果是正确的话,是否意味着不使用TRIM的SSD在删除文件时将零写入块,以使SSD知道这些块是空闲的?

这个

来宾系统中的文件系统趋向于不重用块,这意味着即使文件系统相对于虚拟映像大小仍然很小,实际映像大小也会趋于增长,直到达到最大大小为止。

让我想到,SSD不会被零覆盖吗?还是guest虚拟机中的文件系统完全不同?

Answers:


16

闪存设备(今天的SSD所用的设备)无法随时写入任意数据;在写入单元之前(通常为4KB),必须先擦除。不幸的是,擦除操作非常慢。这就是为什么闪存设备比磁驱动器慢得多的原因,尽管它没有活动部件。

现代的SSD通过维护一组预先擦除的单元来隐藏擦除时间,这意味着写命令不会立即覆盖现有数据,而是驱动器的控制器选择一个擦除的单元,对其进行重新映射,并使用新数据进行写入。这(和几个写以为高速缓存策略)给出了驱动器巨大的加速,大大超过了磁驱动器。

为了确保始终有一组已擦除的单元格,无论何时不需要一个单元格,驱动器都会对其进行调度以进行后台擦除,并将其添加到费用单元格列表中。

不幸的是,现有的文件系统没有费心地告诉驱动器扇区何时空闲。毕竟,该驱动器只是一个笨拙的位存储库。从文件系统的角度来看,删除文件或将某个扇区标记为空闲的任何其他操作仅是某些元数据结构上的标记。该行业本身并未受到影响。即使文件系统通过在其上写入零来清除它,驱动器也不知道这是否意味着该扇区是空闲的,或者用户是否希望在文件上添加一些零。一段时间后,驱动器将没有任何空闲单元可擦除,然后再进行写入。并且性能严重下降。

TRIM指令很快被当前维护的大多数文件系统起草并采用。这是文件系统用来告诉驱动器扇区内容不再重要的简单信号。一旦一个单元上映射的所有扇区都空闲,SSD控制器便取消对该单元的映射,并计划对其进行擦除。如果主机读取了这些扇区,则SSD不会从闪存中获取数据,它会立即以零进行响应。但最重要的效果是要始终保留已删除的单元格列表。

但是,大多数SSD的容量要小于闪存的物理容量,有时甚至低至75%。这样一来,即使在100%完整的系统上,它也可以保留一些未使用的单元,因此(覆盖)已使用的扇区仍然很快。


有趣。我从概念上了解TRIM的工作原理,但想知道SSD会公开多少存储空间。现在,我想看看是否针对给定的SSD将该数据发布到任何地方...
Michael B

保留单元的数量通常会发布。便宜的消费类驱动器通常在5%到10%之间,高端消费类驱动器通常在20%以上。企业级闪存驱动器(EFD)的备用容量通常为100%至400%;因此,为什么它们如此昂贵,它们却保留了这么大的储备,因为每次写入闪存位置都会破坏该位置。编写通常在服务器环境中发现的繁重应用程序,将迅速杀死大多数消费者SSD。
克里斯S

“在单元上写入(通常为4KB)” - 与闪存的常规用法相比,您滥用了“单元”的概念。闪存“单元”仅存储一个(或几个)位。如闪存IC数据表中通常所述,您对“单元”的使用似乎对应于更大的(擦除)块(可能为128K)。数据组织是单元<扇区<页面<块<平面<芯片。
木屑

8

引入了TRIM,因此操作系统(操作系统内的文件系统)可以与ATA存储介质进行通信,从而文件系统不再使用扇区。这与写入磁盘无关。

TRIM不保证媒体上的扇区为零。它确实保证了文件系统请求从该扇区读取数据时返回零(请注意,由于SSD知道该扇区应为零,因此无论介质中实际存储了什么,它都将返回零;有可能恢复尽管通常固态硬盘实际上确实会擦除内存,但是从简单修剪过的磁盘中读取数据)。

文件系统确实倾向于分发其写入内容(出于各种原因,从尝试进行写入均衡,垃圾回收,随机化存储位置等所有事情)。因此,如果介质不知道文件系统未使用哪个扇区,则简单地写入零并不一定意味着该扇区未被使用,那么它最终必须假定整个磁盘都在使用中。

对于SSD,此假设意味着必须在写入时擦除一个扇区,从而降低了写入速度。而不是在删除文件时删除内存位置。与虚拟化系统中的虚拟磁盘文件类似,动态磁盘文件最终将包含虚拟磁盘的全部容量。如果虚拟化系统实现了TRIM,则它将知道何时不再使用扇区,因此动态磁盘不需要跟踪该位置。


这是否意味着引入TRIM是为了让SSD知道使用了哪些扇区,以便可以将新数据放在使用较少的扇区上?
桑德拉(Sandra)

1
SSD只是使用TRIM来知道何时不再需要扇区。它不能保证写入均衡或存储介质可以实现的任何其他功能。也就是说,大多数SSD确实将其用于写均衡,垃圾回收(在闪存介质中,擦除未使用的扇区)以及保留空闲扇区列表以提高写入性能)。
克里斯S
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.