固态硬盘吧 关注:907,018贴子:6,933,919
  • 6回复贴,共1

usb硬盘盒对trim的支持,trimcheck靠谱吗?

取消只看楼主收藏回复

主控是jms576,到底支不支持trim?网上有的说不支持,但是放上850evo测试trimcheck显示支持。
是不是支持uasp就可以支持trim?可我试过vl711-q4的硬盘盒放影驰黑将trimchwck显示不支持trim。


IP属地:上海来自Android客户端1楼2019-01-03 16:16回复
    定一下


    IP属地:上海来自Android客户端2楼2019-01-03 17:18
    回复
      一年半以后,终于搞清楚怎么判断硬盘盒支持trim了。
      win10的碎片整理和优化驱动器工具,如果盒子硬盘的驱动器(盘符E:)没有被识别为固态硬盘,那肯定不支持trim。我手头只有win10,win7/8不知道有没有这个功能。
      win10会定期对固态盘发起trim,用优化驱动器工具也可以手动发起trim。不能识别为固态盘,win10 就不可能发起trim,不管有什么复杂的trim逻辑。

      最近测试了几个盒子
      vl716是肯定不支持trim的,我试了jeyi的i8和orico的2.5“透明盒子,vl716的都不能识别为固态硬盘,尝试刷了几个固件也不能支持。
      jms 576/578 盒子同样不能被win识别为固态硬盘,虽然jms 578网上“公认”支持trim,并没有找到切实的证据,都是些trimchecker 测试结果,不靠谱。
      1153e支持trim,jeyi的msata支持trim,一个orico的msata type-c盒子不支持,刷固件后可识别为固态。
      jms 583 nvme支持trim
      rtl9210b nvme/sata双协议盒子支持trim.


      IP属地:上海10楼2020-06-21 02:08
      收起回复
        顺便说一下,ORICO这个厂很有意思,产品质量一般(我说的是硬盘盒子)
        老喜欢搞一些奇怪的创新,比如把不支持c口的主控方案弄成c口,
        比如
        ASM1153E的c口盒子,
        JMS578的c口盒子
        大概C口看上去高贵好卖,事实上JMS578、ASM1153e都是不支C口特性,
        无论数据带宽和供电都只能以兼容usb3的方式运行的。


        IP属地:上海12楼2020-06-21 11:35
        收起回复
          JMS580也不支持,至少佳翼的q5cw 2.5寸硬盘盒不行,网上也没有公开的固件。
          至此jms576/jms578/jms580均不支持trim。
          Jmicron目前只有nvme转usb的jms583是支持trim的。


          IP属地:上海14楼2020-06-23 15:06
          收起回复
            最近又了解了一些linux下usb硬盘盒的信息,作了一些实践,认识有些突破。
            总结我做过的一些测试
            1)linux下对usb2sata/nvme芯片的trim支持
            usb转sata/nvme的trim支持实际上依赖于UASP,usb硬盘盒世纪上被当作scsi设备对待,trim在scsi下就是unmap,因此usb转接芯片必须能够把操作系统发出的scsi unmap指令翻译成sata 的trim。linux下用下面命令查询usb芯片对unmap的支持
            # sg_vpd -a /dev/sda
            Logical block provisioning VPD page (SBC):
            Unmap command supported (LBPU): 1
            Write same (16) with unmap bit supported (LBPWS): 0
            Write same (10) with unmap bit supported (LBPWS10):
            LBPU这一项很多uasp主控都支持,ASM1153e/1351/2362、jms583/576/580、vl716/711-q4、rtl9210b,三星T5等,而linux上面三个选项有一个支持就可以trim,当然linux默认情况下还需要LBPME为1,否则需要手动设置udev规则指定使用unmap
            然而LBPME项ASM1153e/1351/2362、jms583、 甚至三星T5都不支持,只有rtl9210b满足
            sudo sg_readcap -l /dev/sdc
            Read Capacity results:
            Protection: prot_en=0, p_type=0, p_i_exponent=0
            Logical block provisioning: lbpme=0, lbprz=0
            Last LBA=488397167 (0x1d1c596f), Number of logical blocks=488397168
            Logical block length=512 bytes
            Logical blocks per physical block exponent=0
            Lowest aligned LBA=0
            这样运行fstrim或者blkdiscard都会报错
            fstrim: /media/xxx/xxxxxxxxx: the discard operation is not supporte
            blkdiscard: /dev/sdc: BLKDISCARD ioctl failed: Operation not supporte
            需要添加这样的udev规则(idVendor:idProduct是USB设备号)
            ACTION=="add|change", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="0583", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap
            这样ASM1153e/1351/2362、jms583/576/580、vl716/711-q4在linux下都可以支持trim,可以运行blkdiscard/fstrim
            PS:一个ASM1351盒子默认固件在windows下不能识别为SSD,linux下LBPU也是0,但是更新固件后win10识别为SSD,linux下LBPU也变成1了。
            2)Trimcheck测试
            Jms576/580 win10下trimcheck显示支持trim,但是win10不识别为SSD,上面说了linux下Jms576/580的LBPU为1支持trim. 两票对一票,我选trimcheck和linux获取到的LBPU靠谱
            vl716/711-q4在为win10下用trimcheck显示不支持trim,但是把trimcheck第一次运行后拿到linux下面运行fstrim,然后再次在win上运行trimcheck显示trim成功。当然测试的用的文件系统是ntfs。这说明windows下vl716/711确实不支持trim而linux下确实支持。这也巩固了我对trimcheck和LBPU的信心。
            win10 不能把jms576/580识别为SSD,这很可能是windows的问题。
            3)win10 的碎片整理和优化驱动器工具
            ASM 1153e/1531/2632、jms583、rtl9210b可以被识别为SSD.
            vl716/711-q4、Jms576/578/580不能识别为固态
            这个工具是用来手动在windows下发出retrim操作的。windows对trim操作的队列大小有一定限制,如果删除操作过多trim请求数量超过限制后windows就将这些trim请求丢弃,然后定期执行retrim以保证所有无效块都得到trim。
            如果我们上面2)里面的结论正确,即jms576/580支持常规的trim,那么即使不运行retrim,问题也不是很大。但是jms576/580在win10下既然能够执行trim,却不能被一个trim相关的工具识别为固态这又有些奇怪了。然后l716/711-q4在linux下支持trim,为和windows不支持?
            由于我对ssd/trim/usb/usap等缺乏理论知识,以上观点基本是靠实践摸索的,理解和表达上的错误在所难免。对于windows如何识别固态硬盘,linux为何LBPME为0不甚理解。希望这些信息对想了解这个问题的人有帮助.,希望有识之士指正和补充。
            附上一些参考链接:
            https://www.zhihu.com/question/305139112
            https://www.glump.net/howto/desktop/enable-trim-on-an-external-ssd-on-linux
            https://wiki.archlinux.org/index.php/Solid_state_drive#External_SSD_with_TRIM_support
            https://spod.cx/blog/enabling_trim_support_via_VL817_usb_sata_adaptor.shtml
            https://social.technet.microsoft.com/Forums/windowsserver/en-US/2cfc8c18-57ed-435d-a648-049cdda329bf/will-windows-do-unmap-on-usb-drives-in-any-case
            http://salutepc.altervista.org/ssd-on-usb-3-0-3-1-with-trim-support-windows-linux.html
            https://bbs.archlinux.org/viewtopic.php?id=236280
            https://bbs.archlinux.org/viewtopic.php?id=244636


            IP属地:上海18楼2020-06-28 04:58
            收起回复
              我上一个贴18楼说vl716/711-q4在为win10下用trimcheck测试显示不支持trim,这个结论有点武断。
              1)我当时用了一个朗科的msata N5m120g + vl716/711 ,trimcheck不成功。等更长时间,安全删除在插上,重启win10等都不影响结果。
              2)此时不删除timcheck的json文件到linux下运行fstrim,再返回win10运行trimcheck显示trim成功,这显然说明linux下fstrim发生了作用,至少fstrim这种现在linux默认的trim方式vl716/711是支持的。
              3)换用西数蓝盘win10 trimcheck+vl716/711测试 trimcheck成功。
              4)朗科N5m+jms576在win10下trimchek显示成功。!!!
              1)现象说明的是朗科的msata N5m120g + vl716/711在win10 trim没有发生还是如4楼@yhhekeda所讲的非确定性trim,我很困惑。
              2)可以让我们乐观一点,vl716/711硬件肯定支持trim的,至少linux下fstrim这种方式trim成功了。


              IP属地:上海20楼2020-07-01 17:49
              收起回复