V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ClassicOldSong
V2EX  ›  分享创造

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

  •  
  •   ClassicOldSong ·
    ClassicOldSong · 2019-02-03 20:46:06 +08:00 · 5182 次点击
    这是一个创建于 2129 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    14 条回复    2019-02-04 10:22:50 +08:00
    likuku
        1
    likuku  
       2019-02-03 20:49:58 +08:00
    女朋友好厉害!能写这么底层基础的项目,佩服~
    likuku
        2
    likuku  
       2019-02-03 20:51:37 +08:00
    好奇这个案例的 btrfs 用了多久了?目前出过幺蛾子么?

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

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

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

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

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

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

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

    4 快硬盘。总容量 16T。没有组 raid,只是简单的合成了一个卷。
    ladypxy
        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

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



    本帖子感想是,lz lz 你的女票咋找到的?是自己 new 的么?哪个系统 new 的还能上 buff
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 239ms · UTC 20:10 · PVG 04:10 · LAX 12:10 · JFK 15:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.