TRIM到底是什么?

桑德拉

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

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

这个

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

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

哈维尔

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

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

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章