带有 USB 3.0 外壳的修剪和 SSD 不起作用 - 不支持 UASP?

Luc*_*ngs 8 ssd trim usb

我在外部 USB 3.0 机箱中安装了一个 SSD 磁盘(Micron C400-MTFDDAC128MAM)。现在我想将此磁盘用作装有 Ubuntu 12.04 的笔记本电脑中的第二个磁盘。磁盘正在工作,但我想使用未按预期工作的 TRIM 支持。

检查修剪支持:

user@server:~$ sudo hdparm -I /dev/sdc | grep -i TRIM
       *    Data Set Management TRIM supported (limit 8 blocks)
       *    Deterministic read data after TRIM
Run Code Online (Sandbox Code Playgroud)

磁盘安装有以下选项:

/dev/sdc1 on /media/MICRON type ext4 (rw,nosuid,nodev,uhelper=udisks)
Run Code Online (Sandbox Code Playgroud)

但是当我手动运行修剪命令时,我收到一个错误:

user@server:~$ sudo fstrim -v /media/MICRON/
fstrim: /media/MICRON/: FITRIM ioctl failed: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我以前用这个磁盘作为内部磁盘,修剪工作正常,请帮助我谢谢。

这里有一些 USB 详细信息:

[ 1039.248050] usb 4-1: new SuperSpeed USB device number 4 using xhci_hcd
[ 1039.265597] scsi8 : usb-storage 4-1:1.0
[ 1041.547879] scsi 8:0:0:0: Direct-Access     C400-MTF DDAC128MAM       0509 PQ: 0 ANSI: 5
[ 1041.549134] sd 8:0:0:0: Attached scsi generic sg2 type 0
[ 1041.550511] sd 8:0:0:0: [sdc] 250069680 512-byte logical blocks: (128 GB/119 GiB)
[ 1041.550778] sd 8:0:0:0: [sdc] Write Protect is off
[ 1041.550785] sd 8:0:0:0: [sdc] Mode Sense: 23 00 00 00
[ 1041.552520] sd 8:0:0:0: [sdc] No Caching mode page present
[ 1041.552528] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[ 1041.554029] sd 8:0:0:0: [sdc] No Caching mode page present
[ 1041.554035] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[ 1041.678373]  sdc: sdc1
[ 1041.679982] sd 8:0:0:0: [sdc] No Caching mode page present
[ 1041.679991] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[ 1041.679997] sd 8:0:0:0: [sdc] Attached SCSI disk
Run Code Online (Sandbox Code Playgroud)

如何确定使用UASP(USB Attached SCSI Protocol)的大容量存储设备是否应该支持TRIM?

亲切的问候

幸运戒指

小智 11

这是一个软件问题,Linux 目前似乎不支持通过 USB 进行 TRIM。问题在于 USB 存储设备使用 SCSI 命令集,而 SSD 驱动器使用 ATA 命令集。USB 外壳必须提供这些命令集之间的转换器。ATA中称为TRIM的操作在SCSI中称为UNMAP,在Linux内核中称为DISCARD。当 Linux 收到修剪设备的命令时,它会查找要发送到设备的正确命令。由于 USB 存储设备看起来像 SCSI 磁盘,Linux 尝试使用 UNMAP 或其他几个可能的 SCSI 命令。原则上,USB 外壳中的转换器通常可以将 UNMAP 请求转换为相应的 ATA TRIM,尽管可能存在一些棘手的情况。实际上,外壳不会这样做,并且它们表示该设备不支持 UNMAP。但是,许多机箱实施 SCSI 命令以直接向设备发出 ATA 命令。它被称为 ATA 直通。有一个标准命令可以执行此操作,但某些机箱具有专有命令。实际上,hdparm -I使用 ATA 直通从设备获取信息。可以使用相同的直通直接向设备发出 TRIM,但 Linux 驱动程序目前不这样做。它必须检测到 SCSI 磁盘实际上是支持 ATA 直通的 SCSI 到 ATA 转换器,并将直通用于 DISCARD 而不是本机 SCSI 命令。


tho*_*hom 1

您的 SSD 向 hdparm 报告以支持 TRIM(hdparm -I = 直接从驱动器请求标识信息)。

然而,TRIM 由驱动控制器控制。

外部硬盘盒的 USB3 硬盘控制器很可能不支持 TRIM(大多数外部控制器不支持)。

在这种情况下,即使您的 SSD 支持 TRIM 功能,您也不会获得任何 TRIM 功能。