SSD的GC和TRIM、写入放大简介

SSD的GC和写入放大

GC是(Garbage Collection,垃圾回收)的缩写,是固态硬盘(SSD)的一个基本技术,它对SSD的性能和寿命有直接的影响。这里主要介绍一下GC是如何工作的。

当使用机械硬盘时,文件系统可以直接将新数据写入到旧数据存储的位置,即可以直接覆盖旧数据。在固态硬盘中,境况有所不同。如果想让存储无用数据的块写入新数据,就需要先把整个块删除,才可以写入新的数据,也就是说固态硬盘并不具备直接覆盖旧数据的能力。对于固态硬盘来说,GC(垃圾回收)是指把现存数据重新转移到其他闪存位置,并且把一些无用的数据彻底删除的过程。上面介绍了,数据写入的方式,即以页面为单位写入,但是要想删除数据却需要以块为单位。因此要删除无用的数据,固态硬盘首先需要把一个块内包含有用的数据先复制粘贴到全新的块中的页面内,这样原来块中包含的无用数据才能够以块为单位删除。删除后,才能够写入新的数据,而在擦除之前是无法写入新数据的。

说了GC之后,再说一下经常听到的SSD的写放大问题。因为当写入新数据时,如果SSD控制器找不到可以写入的page时,会执行GC过程,然后GC机制会将一些block中的有效数据合并写入其他的block中,然后将这些block的无效数据擦出,再将新数据写入到这些block中,而在整个过程中除了要写入用户的数据之外,实际上SSD还写入了一些其他block合并过来的数据,所以这就叫写入放大。

TRIM或DISCARD

了解了GC和写入放大之后,再来说一下TRIM和DISCARD。TRIM(或者DISCARD)的出现主要为了提高SSD垃圾资源的回收效率以及减少写入放大的发生。我们知道,在文件系统上删除某个文件时候,它只是简单的在逻辑数据表内把存储要删除的数据的位置标记为可用而已,而并不是真正将磁盘上的数据给删除掉。使用机械硬盘的系统根本就不需要向存储设备发送任何有关文件删除的消息,因为在将来,系统可以随时把新数据直接覆盖到无用的数据上。固态硬盘的情况就不同,只有当系统准备把新数据要写入那个位置的时候,固态硬盘才意识到原来这写数据已经被删除了!(无用数据。),而如果在这之前,SSD执行了GC操作,那么GC会把这些实际上已经删除了的数据还当作是有效数据进行迁移写入到其他的block中,这是没有必要的。

TRIM和DISCARD的支持,不仅仅要SSD实现这个功能,而是整个数据链路中涉及到的文件系统、RAID控制卡以及SSD都需要实现。要使用这个功能必须要在mount文件系统时,加上discard选项。如果想要确认SSD是否支持,可以通过hdparm -I命令检查。


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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之前备份重要数据。 希望这些信息对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值