固态硬盘的Trim是什么原理?

ooolinux 2024-02-21 19:05:11

百度了一下好像都没说清楚,没有Trim的时候固态硬盘是什么动作,有Trim以后呢?操作系统删除文件,固态硬盘擦除块,操作系统在可用块写入文件,这个之间的具体流程动作和时序,没有Trim和有Trim时分别是怎样的?

 

...全文
355 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanqth 02-23
  • 打赏
  • 举报
回复 1

在发送TRIM命令之后,数据不会立即被擦除——它要么在驱动器空闲时在后台进行,要么在下一次向块写入数据时操作。使用哪种方法取决于固件和主控方案。一般来说,消费级固态硬盘方案喜欢在系统空闲时处理擦除,而企业级SSD通常在写入时处理擦除操作。

如果操作系统或SSD配置不支持TRIM,垃圾收集仍然会进行,但这个过程没有那么有效。旧数据最终会被删除,因为SSD最终会在某个时间点覆盖所有不需要的页。

ooolinux 02-24
  • 举报
回复
@tanqth 垃圾收集指什么?
@ooolinux 就是把曾经写过数据,但是已经无效的,那些块擦除,使之成为空闲块,和某些语言中内存的垃圾收集一样。
tanqth 02-25
  • 举报
回复
@ooolinux 就是回收的不需要的、没用的。
2条回复
  • 打赏
  • 举报
回复

不支持TRIM的情况下,基本操作和使用机械硬盘一样,不同之处在于,SSD由于不能在原位置直接重写数据,重写已存在数据的某页要做块迁移,同一块中有数据的页都要复制,而这些页中的数据可能是文件系统中已经标记为删除的无效数据,复制它们浪费一些时间和SSD的寿命。

ooolinux 02-23
  • 举报
回复
@日立奔腾浪潮微软松下联想 不支持Trim时删除文件,对应的页也会标记为删除?
@ooolinux 不会,存储设备是文件系统的载体,更底层,它不了解上层的变动情况,所以需要通知。
ooolinux 02-24
  • 举报
回复
@日立奔腾浪潮微软松下联想 那文件系统中标记为删除,是记录在哪里呢?
14条回复
  • 打赏
  • 举报
回复

那些文章都写得不够透彻,虽然但是... 简单说吧
目前的SSD绝大部分使用NAND Flash存储器,NAND Flash的基本特点是不能直接覆写,对于已经写入数据的区域,要先擦除才能重写,擦除的单位是块(一般是128K的倍数),每块包含若干页(页大小一般是4K,早期也有小于4k的设计)。
而操作系统中删除文件时,为了优化性能,只是在文件系统的某种结构(FAT、$BITMAP文件之类的)中把文件的分配块标记为空闲,并不实际删除数据。所以当操作系统重新使用这些分配块的时候,对于硬盘(不管是机械硬盘还是SSD)看到的,就是重写了某些扇区/块页,而SSD因为不能直接覆写,当重写某页时,需要重新分配一个空闲块,把之前块的所有已用页都复制过去(这就导致了所谓的“写入放大”)。然后把之前的块标记为删除(主控会在空闲时擦除该块)。但是这块中可能有一页或者多页是在文件系统中已经删除的分配块,所以没必要复制,只是SSD的主控不知道,所以就产生了TRIM命令,操作系统中删除文件时,会把对应分配块的LBA通过TRIM命令通知给SSD的主控,主控会把对应的页标记为删除,以后重写某页时就不需要复制同一块中已经标记为删除的页了(如果有的话),这样可以提高性能,也能延长SSD的寿命。
另外,据说intel optane固态硬盘使用的是PCM相变内存,可以直接重写,重写次数达到几千万次,远非一般SSD可比,当然我没用过这种高档货,也就这么一说~~~

ooolinux 02-22
  • 举报
回复
@日立奔腾浪潮微软松下联想 没有Trim的时候(比如XP系统使用SSD),系统删除一个文件,系统和SSD主控是什么动作?
tanqth 02-21
  • 打赏
  • 举报
回复
ooolinux 02-22
  • 举报
回复
@tanqth 有些环节还是get不到有点模糊
FancyCache 概述 FancyCache是一个可以将系统内存或闪存虚拟成硬盘缓存的软件。它把从硬盘中读取的数据存入系统内存或闪存,使系统在下次访问该数据时可以很快从内存读取,避免再次读取速度较慢的硬盘,从而突破硬盘瓶颈,提升系统性能。 FancyCache还具有检测和利用系统未识别内存的功能,解决32位Windows操作系统无法完全使用4G或更多内存的问题。通过将检测到的系统未识别内存用作硬盘缓存的方式,FancyCache使计算机可以利用全部安装的内存。 基本原理 FancyCache为硬盘分配内存作缓存,并拦截系统发送至硬盘的IO请求。如果IO请求读取的数据已经在缓存中,则直接读取缓存中的数据并完成IO请求。否则数据则从硬盘中读取出来,并存入缓存,同时完成IO请求。由此可见,从缓存读取的数据量越多,则系统性能提升的越多。 FancyCache Principle Fig. 1 FancyCache Principle Fig. 2 主要特性 支持 LRU (最近最少使用调度算法) 和LFU (最近最不常用调度算法) 缓存算法, 支持 读写缓存、仅读缓存和仅写缓存 三种缓存策略, 支持 直接写入 和 延迟写入 两种写入模式, 支持 系统内存、系统未识别内存、闪存盘、固态硬盘SSD作为缓存, 支持对分区或整个硬盘缓存, 支持 TRIM 指令, 支持可视化性能监视统计, 支持动态硬盘, 支持NTFS junction point (符号连接), 支持自定义文件系统, 支持即插即用。 为什么使用FancyCache? Windows操作系统本身已经实现了基于文件的缓存系统,我们还需要再使用一个缓存系统FancyCache吗? 某些应用程序会绕过Windows操作系统自身的缓存系统; Windows操作系统的缓存系统是基于全局进行缓存,即对所有数据进行缓存,而FancyCache可以根据用户需要,设置仅对某一特定分区进行缓存。在同等缓存容量下,后者将更具目标性,从而提高缓存命中率。 FancyCache可以识别系统未识别内存,将其利用作缓存; FancyCache可以将闪存盘或SSD固态硬盘用作缓存,提升普通硬盘的访问能力。 软件截图 FancyCache Main UI FancyCache Performance Monitor UI 支持的操作系统 Windows XP, Windows 2003, Windows Vista, Windows 2008, Windows 7, Windows 2008 R2 更多信息 使用帮助 评测应用 FancyCache正进行Beta测试! FancyCache Beta测试版本 0.8.0 已经发布。如果您有时间并愿参与我们的测试,我们表示非常感谢! 测试版本有效期为180天,可以从以下地址获取, 分区版(可对每个分区缓存):进入下载页面 硬盘版(可对整个硬盘缓存):进入下载页面 测试授权文件:点击这里查找最新的测试授权文件,以便继续试用该软件。 我们强烈建议您在非实际生产和工作环境中测试beta版本软件,以免造成不必要的损失。同时Beta测试者请注意在测试之前对重要文件和数据先进行备份,以防万一。如遇系统无法启动等致命问题,用户可以尝试进入安全模式卸载软件。
SD Fresh界面清新简洁友好,用户能在较短的时间内掌握软件的使用。SSD Fresh具有比较强大的SSD固态硬盘优化功能,能满足用户的需要。如果你在用windows ssd固态硬盘,可以试试ssd fresh。它是一款专门为优化ssd固态硬盘而开发的小软件。ssd fresh号称能够进一步优化windows操作系统使用ssd硬盘的效率,最大限度减少写入次数,避免不必要的写入操作,从而提升ssd的使用寿命。固态硬盘简称SSD,性能是十分的强劲的,目前最新的windows7也没有完全的对SSD优化,虽然有对SSD的使用做了一些考虑。这是一款目前为数不多的SSD优化软件,而且还是免费的。它可以优化windows系统使用ssd固态硬盘的效率,平均分布写入区域,最大限度延长ssd硬盘寿命,是固态硬盘用户必备的优化工具。 SSD Fresh功能特色: SSD Fresh 的优化操作操作其实很简单也很傻瓜,点击“Optimization”即可可以开始优化操作,然后选择图标下方的“Optimize”对该项目进行优化,当图标变成绿色勾即表示该项已经优化成功了。下面我们给大家解释一下 SSD Fresh 的优化项目的大概意思吧,好让大家用起来心中也有个底。 Indexing:Windows文件索引,虽然建立索引可以让搜索更快,但硬盘写入会变得特别频繁。我们强烈推荐大家使用 Everything、光速搜索等工具替代原本 Windows 的搜索功能; Defragmentation:由于固态硬盘和普通机械硬盘的工作原理完全不同,SSD是完全不需要进行整理磁盘碎片的,否则只会减少寿命,没任何优化作用; Timestamp:每当系统去读写硬盘中的文件时,都会记录下读取的时间,这是非必要的,省略这个操作可以减少很多硬盘操作; Prefetch:文件预读取,将常用的一些文件自动载入到内存中。因为使用固态硬盘性能速度较好,此操作可以省略; Defragmentation of boot files:对启动文件进行碎片整理,对于SSD硬盘来说毫无必要; Windows event logging:记录系统事件日志。估计真会去分析系统错误日志的人不多,关闭它可以节省不少的硬盘读写; System Restore:系统恢复。它会经常写入一些需要备份的记录,如果你使用了Ghost或其他备份手段,这个功能可以关闭; 8.3 name creation:为了兼容旧的16位DOS系统,Windows会为全部的文件/文件夹生成8个字符的短文件名(如 “Program File” 文件夹会对应 “PROGRAM~1”)供其使用,这也会触发大量的硬盘读写。但我们平常基本不会用到,可以关闭; Windows Trim function:开启 Windows 的 Trim 功能,这是一个专门针对SSD硬盘特有的优化技术。 SSD Fresh截图
PrimoCache是一款可以将物理内存、SSD硬盘或闪存盘等虚拟成硬盘缓存的软件。它可以自动将硬盘中读取的数据存入物理内存等速度较快的设备,当系统再次需要该数据时它可以很快从缓存设备中读取,而无需再次访问速度较慢的硬盘,从而有效提升物理硬盘的访问性能。 硬盘缓存增强软件 PrimoCache Desktop Edition 3.0.2 中文多语免费版 PrimoCache 它能做什么? 如果您的计算机装有4GB或更多内存,您可以使用一部分内存作为缓存加速本地磁盘,包括机械硬盘、SSD固态硬盘、闪存盘等,或iSCSI磁盘。 如果您的计算机有一部分内存不能被Windows使用,通常是32位Windows系统,您可以使用这部分“丢失”的内存作为缓存来加速本地磁盘和iSCSI磁盘。 如果您的计算机一个SSD硬盘和一个普通机械硬盘,您可以使用一部分或全部SSD空间作为缓存来加速机械硬盘。 如果您有一个空闲的USB 3.0 闪存盘,您可以用这个闪存盘作为缓存加速普通机械硬盘。 PrimoCache 功能特性简介 PrimoCache基于双级缓存系统架构设计,该架构由一个一级缓存(level-1 cache)和一个二级缓存(level-2 cache)组成。一级缓存使用物理内存作为缓存设备,而二级缓存则通常使用SSD固态硬盘、闪存盘或其它永续性存储设备。很明显地,一级缓存的访问速度远快于二级缓存,尽管一级缓存通常容量小于二级缓存。另一方面,一级缓存中存储的缓存数据在断电后会消失,而二级缓存则具有永久保存的特性。PrimoCache支持任意配置单双级缓存,即可以仅使用一级缓存或仅使用二级缓存,也可以同时使用一级缓存和二级缓存。 由于二级缓存存储设备具有数据永续性的特性,二级缓存中的缓存内容在计算机关机后不会丢失。因此当计算机再次启动后,所需要的常用数据可以直接从二级缓存中读取,而无需访问速度较慢的机械硬盘。对于操作系统或应用程序安装在机械硬盘的计算机,这个特性可以显著减少系统启动时间以及加快应用程序的启动运行。 PrimoCache也支持缓写功能,即可以将系统请求写入的数据先存入缓存设备中,在一定时间后再将数据从缓存设备写入物理硬盘中。缓写功能使系统的写入请求可以快速完成,从而极大地提升硬盘的写入性能。 此外,PrimoCache具备未识别内存管理接口(UIMMI),支持检测系统未识别内存并将其作为一级缓存。由于Windows操作系统和硬件对内存总量的限制,部分系统无法识别所有安装的物理内存,例如,32位桌面Windows系统最大仅支持4GB内存,多余的内存则无法使用。PrimoCache对未识别内存的支持则克服了Windows操作系统的限制,充分利用全部物理内存。 PrimoCache内置智能缓存调度算法,可自动优化决定当缓存空间已满的情况下哪些缓存内容可被丢弃已便腾出空间存储新内容。该算法结合了常用的LFU和LRU算法,并具有自适应调整性,可提供更好的命中率,并无需用户进行参数设置。 PrimoCache支持多种缓存策略以及灵活的缓存设置。您可轻松为您的物理硬盘创建缓存,提高硬盘的读写性能。由于PrimoCache是在Windows驱动层中实现功能,在创建缓存后,系统和其它应用程序无需作任何改变即可自动应用缓存。 基本原理 PrimoCache主要部件位于Windows驱动层,它拦截并处理系统发送至硬盘的IO请求。如果IO请求读取的数据已经在缓存中,则直接读取缓存中的数据并完成IO请求。否则数据则从硬盘中读取出来,并存入缓存,同时完成IO请求。由此可见,从缓存读取的数据量越多,则系统性能提升的越多。 主要特性列表 支持物理内存、SSD固态硬盘、闪存盘等作为缓存设备, 采用双级缓存系统架构, 支持永久二级缓存, 支持“直接写入”和“延迟写入”两种写入模式, 支持 TRIM 指令, 支持系统未识别内存, 支持预取数据到缓存, 内置自适应智能缓存调度算法, 支持三种缓存策略:读写缓存、仅读缓存和仅写缓存, 支持性能数据监视和统计, 支持同时缓存多个硬盘和多个分区, 支持缓存采用自定义文件系统的分区, 支持缓存动态硬盘的分区, 支持即插即用, 支持命令行接口。 为什么使用PrimoCache? Windows操作系统本身已经实现了基于文件的缓存系统,为什么还需要额外再使用PrimoCache? PrimoCache采用基于逻辑块的缓存机制,而Windows是基于文件的缓存机制。这两个缓存机制各有优缺点,PrimoCache可以是Windows缓存系统的一个很好补充。 某些应用程序会绕过Windows的缓存系统,但无法绕过PrimoCache,这是因为PrimoCache比Windows缓存位于系统更底层位置。 Window

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧