SSD为什么需要Trim?

什么是Trim? Trim又叫 Disable Delete Notify。当系统删除某个文件时候,它只是简单的在逻辑数据表内把存储要删除的数据的位置标记为可用而已。使用机械硬盘的系统根本就不需要向存储设备发送任何有关文件删除的消息,因为在将来,系统可以随时把新数据直接覆盖到无用的数据上。固态硬盘的情况就不同,当系统准备把新数据要写入那个位置的时候,固态硬盘才意识到原来这写数据已经被删除了!(无用数据)。

当Windows识别到SSD并确认SSD支持Trim后,在删除数据时,会不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。 Volume Bitmap只是一个磁盘快照,其建立速度比直接读写硬盘去标记删除区域要快得多。这一步就已经省下一大笔时间了。然后再是写入数据的时候,由于NAND闪存保存数据是纯粹的数字形式,因此可以直接根据Volume Bitmap的情况,向快照中已删除的区块写入新的数据,而不用花时间去擦除原本的数据。以上就是Trim的原理以及真正作用。

在新一代操作系统中,例如Windows 7/Windows Server 2008 R2/Linux 2.6.33/FreeBSD 8.2/Open Solaris/Mac OS X Lion,它们都加入对Trim指令的支持。这可以让操作系统在删除逻辑表中删除逻辑扇区地址的同时通知固态硬盘某些数据已经无用了。
TRIM的先进性在于它可以让固态硬盘在进行垃圾回收的时候跳过移动无用数据的过程,从而不再用重新写入这些无用的数据,达到节省时间的目的 这也会减少闪存删除数据的次数,从而在写入过程中实现高性能。固态硬盘也不需要立即删除或者“垃圾回收”这些TRIM指令告知的位置了,它只是先标记这些位置的数据为“无用”即可。

支持TRIM的系统,在用户写入数据时并没有不同。但是当用户删除文件C的时候,因为系统支持了TRIM指令,固态硬盘立刻就把数据标记为“无用”,从而为接下来的垃圾回收做准备。原来存放文件C的空间,固态硬盘把其看做是可用空间。“动态预留空间”意味着固态硬盘在执行垃圾回收的过程中拥有更多的可用空间,从而整体提高性能。
在第三列中,用户写入新的文件E。尽管现在固态硬盘与不支持TRIM的硬盘闲置空间相同。区别就在于:TRIM支持的固态硬盘知道哪些数据是无用的,在垃圾回收的时候,这些无用数据可以被看成是空闲空间,从而避免把无用数据移动到其他块中。
下面是不支持TRIM指令SSD的工作过程
可以看到当向上面复写E的时候,SSD才会知道C需要删除(而不是在OS删除C的时候)。所以在此之前如果发生GC的话,C还是需要被移动的。虽然C对OS来说已经是无用的,可是SSD设备本身却不知道。如果支持TRIM指令的话(如下图),OS就可以标记C删除,并且通知SSD设备C已经删除,这样每次GC就就不用在移动C,减少数据写入量。
这将会产生三大优点: 1. 降低写入放大。更少的数据被重写,更多的空闲空间为垃圾回收所利用。更多的空间可用也意味着不需要重新写入更多的数据。

2. 更高的吞吐量。支持了TRIM指令,就意味着在垃圾回收阶段需要移动的数据表少,固态硬盘性能就会提升。固态硬盘吞吐量的瓶颈在于闪存。固态硬盘的最快写入速度就是闪存所能支持的最快写入速度。在执行垃圾回收过程中,由于涉及到数据的移动和写入,固态硬盘不得不要停止一些主控的数据传输。这也是为什么固态硬盘知道无用数据的优点所在,至少在垃圾回收阶段,它这些数据不在需要移动,从而节省带宽。
3. 改善耐用性。由于不在需要重新写入无用数据,这样可以减少固态硬盘的实际写入次数。
注意:目前TRIM并不能正常工作在RAID环境中。这是因为目前RAID驱动一般都不支持TRIM。当更多的RAID厂商开始支持RAID TRIM,我们期待TRIM无乱在RAID还是正常环境下都能够为用户带来益处
如何知道您的电脑里是否已开启Trim:●点击开始菜单,在搜索栏中输入CMD
●在搜索结果的图标上右键单击,选择以管理员权限运行
●输入“fsutil behavior query DisableDeleteNotify”
●如果返回值是0,则代表您的TRIM处于开启状态
●如果返回值是1,则代表您的TRIM处于关闭状态


更多精彩内容,敬请关注公众号: 存储随笔,Memory-logger.


Linux的SSD TRIM是一种用于优化固态硬盘SSD)性能和寿命的技术。TRIM是一项操作系统级别的指令,用于通知SSD哪些数据块不再被使用,可以被擦除和重写。这有助于提高SSD的写入性能,并减少因为重写未使用数据块而引起的性能下降。 要启用SSD TRIM功能,您需要进行以下步骤: 1. 确保您的SSD支持TRIM。大多数现代SSD支持这个功能,但一些较旧或低端的SSD可能不支持。您可以查看SSD制造商的文档或技术规格来确认它是否支持TRIM。 2. 检查您的Linux发行版是否已启用TRIM。大多数现代Linux发行版默认情况下已启用TRIM。您可以运行以下命令来检查: ``` sudo systemctl status fstrim.timer ``` 如果输出显示"active"或"enabled",则表示TRIM已启用。 3. 确保您的文件系统支持TRIM。大多数常见的文件系统,如ext4和XFS,都支持TRIM。您可以通过检查`/etc/fstab`文件中的文件系统挂载选项来确认是否启用了TRIM。 例如,对于ext4文件系统,您应该看到类似于以下内容的挂载选项: ``` UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 discard,noatime,errors=remount-ro 0 1 ``` 请注意,`discard`选项用于启用TRIM。 4. 手动运行TRIM命令。如果TRIM没有自动运行,您可以手动运行TRIM命令来清理未使用的数据块。使用以下命令: ``` sudo fstrim -av ``` 这将触发对所有已挂载文件系统的TRIM操作。 请谨慎使用TRIM命令,因为它会触发SSD上的擦除操作,可能会导致数据丢失。确保在运行TRIM之前备份重要数据。 希望这些信息对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古猫先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值