fstrim 失败并显示“不支持 thediscard 操作”

fstrim 失败并显示“不支持 thediscard 操作”

我正在运行 ubuntu 18.04。没有 lvm 或加密。我正尝试在全新的外部 sdd(西部数据 wd green 120 gb,装在 USB 外壳 ADATA ED600 中)上运行 trim,该外壳显示 hdparm 上可用 trim。

然而弗斯特里姆报道称

sudo fstrim -v /media/****/644f7d88-df12-4d0e-9423-bdf787d0fd78

fstrim:/media/****/644f7d88-df12-4d0e-9423-bdf787d0fd78:不支持丢弃操作

我不知道还能做什么来让 fstrim 运行。

下面是 hdparm 输出。

****:~$ sudo hdparm -I /dev/sdb

/dev/sdb:

ATA 设备,带有不可移动介质
    型号:WDC WDS120G2G0A-00JH30                  
    序列号:1821B3802831        
    固件修订版本:UE450000
    介质序列号:   
    媒体制造商:
    传输:串行、ATA8-AST、SATA 1.0a、SATA II 扩展、SATA Rev 2.5、SATA Rev 2.6、SATA Rev 3.0
标准:
    使用:未知(小修订代码 0x0110)
    支持:9 8 7 6 5
    可能使用:9
配置:
    逻辑最大电流
    气缸 16383 0
    头 16 0
    扇区/磁道 63 0
    --
    LBA 用户可寻址扇区:234455040
    LBA48 用户可寻址扇区:234455040
    逻辑扇区大小:512 字节
    物理扇区大小:512 字节
    逻辑扇区 0 偏移量:0 字节
    设备大小为 M = 1024*1024:114480 MBytes
    设备大小为 M = 1000*1000:120040 MBytes (120 GB)
    缓存/缓冲区大小 = 未知
    尺寸:2.5 英寸
    标称介质旋转速率:固态设备
功能:
    LBA、IORDY(可禁用)
    队列深度:32
    待机定时器值:由标准指定,没有设备特定的最小值
    R/W 多扇区传输:最大 = 1 当前 = 1
    高级电源管理级别:禁用
    DMA:mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
         周期时间:最小=120ns 建议=120ns
    PIO:pio0 pio1 pio2 pio3 pio4
         周期时间:无流量控制=120ns IORDY流量控制=120ns
命令/功能:
    已启用支持:
       * SMART 功能集
            安全模式功能集
       * 电源管理功能集
       * 写入缓存
       * 展望
       * 主机保护区功能集
       * WRITE_BUFFER 命令
       * READ_BUFFER 命令
       * 下载微代码
            高级电源管理功能集
            SET_MAX 安全扩展
       * 48位地址功能集
       * 设备配置覆盖功能集
       * 强制 FLUSH_CACHE
       *刷新缓存
       * SMART 错误日志
       * 智能自我检测
       * 通用日志功能集
       * 64 位全球名称
       * WRITE_UNCORRECTABLE_EXT 命令
       * {READ,WRITE}_DMA_EXT_GPL 命令
       * 分段 DOWNLOAD_MICROCODE
            未知 119[8]
       * Gen1 信号速度 (1.5Gb/s)
       * Gen2 信号速度 (3.0Gb/s)
       * Gen3 信号速度 (6.0Gb/s)
       * 本机命令队列 (NCQ)
       * 物理事件计数器
       * READ_LOG_DMA_EXT 相当于 READ_LOG_EXT
            设备启动的接口电源管理
            软件设置保存
            设备睡眠 (DEVSLP)
       * SANITIZE 功能集
       * BLOCK_ERASE_EXT 命令
       * SET MAX SETPASSWORD/UNLOCK DMA 命令
       * 写入缓冲区 DMA 命令
       * 读取缓冲区 DMA 命令
       * 设备配置设置/识别 DMA 命令
       * 支持数据集管理TRIM(限制8个块)
       * TRIM 之后确定性读取数据
安全:
    主密码修改代码 = 65534
        支持的
    未启用
    没有锁定
    没有冻结
    未过期:安全计数
    不支持:增强擦除
    安全擦除单元需要 2 分钟。
逻辑单元 WWN 设备标识符:5001b448b60a0235
    乙酰辅酶A:5
    IEEE OUI : 001b44
    唯一 ID :8b60a0235
设备睡眠:
    DEVSLP 退出超时 (DETO):50 毫秒(驱动器)
    最短 DEVSLP 断言时间 (MDAT):31 毫秒(驱动)
校验和:正确

补充评论

最终让它工作了。

****:/媒体$ sudo hdparm --user-master u --security-set-pass 123456 /dev/sdb
安全密码:“123456”

/dev/sdb:
 发出 SECURITY_SET_PASS 命令,密码 =“123456”,用户 = 用户,模式 = 高
****:/媒体$ sudo hdparm --user-master u --security-erase 123456 /dev/sdb
安全密码:“123456”

/dev/sdb:
 发出SECURITY_ERASE命令,密码=“123456”,用户=用户
SG_IO:坏的/缺失的检测数据,sb[]:70 00 01 00 00 00 00 0a 00 00 00 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

它等待了大约 10 秒钟,没有返回任何进一步的信息。安全“已启用”标志变为“未启用”。我假设这能解决问题。

答案1

市场上有支持修剪的 USB 外壳。例如,如果您的外壳使用 JMICRON JMS583 芯片,则它支持修剪。我不知道您的外壳是否支持,但如果支持:

如果受支持,以下是使其工作所需的步骤,但如果您想要更详细的演练,请参阅下面的源链接。

  1. 获取供应商和产品 IDlsusb
  2. 使用以下内容创建/etc/udev/rules.d/50-usb-ssd-trim.rules,但将供应商和产品 ID 更改为与步骤 1 中找到的 ID 相匹配:
ACTION=="add|change", ATTRS{idVendor}=="152d", ATTRS{idProduct}=="0583", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"
  1. 重新加载 udev 配置sudo service udev force-reload
  2. 确保您没有安装 USB 外壳,然后重新插入 USB 外壳。
  3. 您可以检查是否支持lsblk --discard /dev/sda

看:https://www.glump.net/howto/desktop/enable-trim-on-an-external-ssd-on-linux

相关内容