之前买了一把鱼竿厂的 1.5T SSD (当时还是 TLC )回来组阵列,然后尴尬地发现 SAS 阵列卡不支持 trim。。。当时想着就先这么用着吧,反正保 5 年就没管,然后 md raid5 + btrfs raid0 的 8TB 阵列被写得只剩 70G,上面还跑了两个 Windows 10 虚拟机。。。。然后就在前两天检查阵列发现损坏了几个文件,赶紧看 smart 信息发现卧槽居然已经有 reallocate 了。。。。心想不行必须得把 discard 开起来,于是就有了这个项目(女票写的):
https://github.com/ReimuNotMoe/trim2unmap
原理很简单,把 trim 指令翻译成 SCSI 的 sg_unmap 即可,我们试了一下发现并没有出什么问题,工作得相当良好而且也没有出现读写性能损失,各位要是有需要的话可以考虑一下(出问题不保,暂时 GPLv3 开源)