SAS 阵列卡不支持 SSD trim 的问题终于解决了

2019-02-03 20:46:06 +08:00
 ClassicOldSong

之前买了一把鱼竿厂的 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 开源)

5168 次点击
所在节点    分享创造
14 条回复
likuku
2019-02-03 20:49:58 +08:00
女朋友好厉害!能写这么底层基础的项目,佩服~
likuku
2019-02-03 20:51:37 +08:00
好奇这个案例的 btrfs 用了多久了?目前出过幺蛾子么?

最近几年被 btrfs 坑过好几次,所以比较好奇。
ClassicOldSong
2019-02-03 20:55:07 +08:00
@likuku 这个跟 fs 其实没什么关系,任何支持 discard 的 fs 应该都能用

如果因为 btrfs 出的问题跟这个理论上是不会有关系的。。。

(刚写好,目前看来稳定(用各种方式 discard 测试过比如 blkdiscard、fstrim、删文件然后 sync 等都没问题
ladypxy
2019-02-03 20:57:15 +08:00
几年前绝大部分 SAS 卡的固件都支持 trim 了啊。
likuku
2019-02-03 20:59:37 +08:00
@ClassicOldSong 原来是 “ Linux 下的 trim 支持叫 discard ”,这还是第一次知道这个。

btrfs 相关,我其实只是想知道如今 btrfs 本身用起来是否足够稳定。

感谢解答,顺道知道了个新词。
ClassicOldSong
2019-02-03 21:10:56 +08:00
@ladypxy 我手上捡便宜的两块 LSI 2008 和一块 LSI 2308 都不支持

@likuku btrfs 这块我没管过,都是我女票在处理,至少在我看来是稳的(可能只有 power user (比如我女票这种被找 btrfs 的作者才能修好的问题坑过的人) 才能用好系列(逃
514146235
2019-02-03 21:15:37 +08:00
btrfs 目前挺稳定的,前提是比较新的内核。

arch 上面跑 btrfs 已经三年了。中间经历过数次意外停电,没有任何问题。就是性能不好,因为开了 snapshot

4 快硬盘。总容量 16T。没有组 raid,只是简单的合成了一个卷。
ladypxy
2019-02-03 21:39:56 +08:00
@ClassicOldSong 这俩卡有 IR 和 IT mode, 直接修改到 IT mode 就支持了。。https://www.broadcom.com/support/knowledgebase/1211161496937/trim-and-sgunmap-support-for-lsi-hbas-and-raid-controllers

很简单的事。。。
ClassicOldSong
2019-02-03 21:56:53 +08:00
@ladypxy 早就刷成 IT 固件了(不然连 sg_unmap 都不支持),然而 IT mode 下的 trim 支持要求 SSD 明确标注支持 trim 后读零( Deterministic read ZEROs after TRIM )才能用(你发的链接里也是这么描述的),很可惜不是所有的 SSD 都支持这个。
sdijeenx
2019-02-04 00:16:15 +08:00
问下 LZ 的 SAS 卡是什么型号的=3=
sdijeenx
2019-02-04 00:22:55 +08:00
等等还有个问题,LSI1068 插 10T 硬盘开机时显示容量为 2T,但是进 winserver 能正确显示硬盘容量。如果用这张卡读写硬盘会出 BUG 么?
msg7086
2019-02-04 03:14:49 +08:00
啊? RAID-5 Trim ?
sdijeenx
2019-02-04 03:17:55 +08:00
啊? RAID-5 Trim ?
yuikns
2019-02-04 10:22:50 +08:00
@sdijeenx 2T 10T 是单位不同吧 1 byte / 1 bit. 我们的一个 nfs 貌似也有这种毛病。看了下源码,貌似这儿就套了个 wrapper。read/write 没有动,就 trim hack 了下。



本帖子感想是,lz lz 你的女票咋找到的?是自己 new 的么?哪个系统 new 的还能上 buff

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/532890

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX