之前买了一把鱼竿厂的 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 开源)
1
likuku 2019-02-03 20:49:58 +08:00
女朋友好厉害!能写这么底层基础的项目,佩服~
|
2
likuku 2019-02-03 20:51:37 +08:00
好奇这个案例的 btrfs 用了多久了?目前出过幺蛾子么?
最近几年被 btrfs 坑过好几次,所以比较好奇。 |
3
ClassicOldSong OP @likuku 这个跟 fs 其实没什么关系,任何支持 discard 的 fs 应该都能用
如果因为 btrfs 出的问题跟这个理论上是不会有关系的。。。 (刚写好,目前看来稳定(用各种方式 discard 测试过比如 blkdiscard、fstrim、删文件然后 sync 等都没问题 |
4
ladypxy 2019-02-03 20:57:15 +08:00
几年前绝大部分 SAS 卡的固件都支持 trim 了啊。
|
5
likuku 2019-02-03 20:59:37 +08:00
@ClassicOldSong 原来是 “ Linux 下的 trim 支持叫 discard ”,这还是第一次知道这个。
btrfs 相关,我其实只是想知道如今 btrfs 本身用起来是否足够稳定。 感谢解答,顺道知道了个新词。 |
6
ClassicOldSong OP |
7
514146235 2019-02-03 21:15:37 +08:00
btrfs 目前挺稳定的,前提是比较新的内核。
arch 上面跑 btrfs 已经三年了。中间经历过数次意外停电,没有任何问题。就是性能不好,因为开了 snapshot 4 快硬盘。总容量 16T。没有组 raid,只是简单的合成了一个卷。 |
8
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
很简单的事。。。 |
9
ClassicOldSong OP @ladypxy 早就刷成 IT 固件了(不然连 sg_unmap 都不支持),然而 IT mode 下的 trim 支持要求 SSD 明确标注支持 trim 后读零( Deterministic read ZEROs after TRIM )才能用(你发的链接里也是这么描述的),很可惜不是所有的 SSD 都支持这个。
|
10
sdijeenx 2019-02-04 00:16:15 +08:00
问下 LZ 的 SAS 卡是什么型号的=3=
|
11
sdijeenx 2019-02-04 00:22:55 +08:00
等等还有个问题,LSI1068 插 10T 硬盘开机时显示容量为 2T,但是进 winserver 能正确显示硬盘容量。如果用这张卡读写硬盘会出 BUG 么?
|
12
msg7086 2019-02-04 03:14:49 +08:00
啊? RAID-5 Trim ?
|
13
sdijeenx 2019-02-04 03:17:55 +08:00
啊? RAID-5 Trim ?
|