USB 闪存驱动器不支持 fstrim 吗?

USB 闪存驱动器不支持 fstrim 吗?

不确定这是否已经正确排序(但我是个菜鸟)

全新安装的 14.04 服务器安装在全新 SanDisk 16Gb USB 棒上,该棒安装在 HP Proliant Microserver 的内部 USB 连接器上。棒包含引导、根、最小用户文件和交换(根据默认安装)、LVM不是已安装。系统基本上可以作为无头文件/媒体服务器正常运行。

每周 CRON 作业失败

fstrim: /: FITRIM ioctl failed: Operation not supported

hdparm 和 smartctl 均显示

Data Set Management TRIM supported (limit 8 blocks)

但该命令fstrim -v /会产生相同的失败消息

fstrim: /: FITRIM ioctl failed: Operation not supported

尽管没有太多的内容写入 USB 驱动器(我猜除了系统日志文件之外),但知道这里到底发生了什么还是很好的。

答案1

错误 1336541是“无法通过 USB 进行 TRIM”。我猜问题也存在于内部 USB 端口。此外,就你的情况而言,听起来你使用的是 USB 闪存棒,而不是 SSD 设备——TRIM 不适用于闪存。如果你的设备真的是 SSD,请将自己添加到错误中。

答案2

某些 USB 外壳将传递trim ioctl与命令 ioctl 不同的命令info。仅仅因为驱动器报告它支持 trim,并不意味着fstrim将被正确转换,即通过 USB 外壳中的桥传递到驱动器本身。

如果您的 USB 外壳带有chip可传递 trim 命令的桥接器,那么您就成功了。接下来,您需要一个udev规则。尝试linux # nano 50-usb-trim.rules将其复制并粘贴到文件中ACTION=="add|change", ATTRS{idVendor}=="152d", ATTRS{idProduct}=="0562", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap",但对于152d0562运行lsusb并找到您的 USB 外壳,它通常包含单词bridge

在我的情况下,有 2 个 4 位十六进制数字,用冒号分隔152d:0562,但请使用 USB 外壳中的数字,并将它们放在适当的位置,就像我所做的那样。

保存上面的 udev 规则文件,并将其放入/etc/udev/rules.d连接 USB 驱动器后,运行sudo systemctl daemon-reload在 /dev 中定位驱动器linux # ls /dev/sd*。如果您仍然无法确定它是哪一个,请使用linux # sudo fdisk -l并查看大小。您可能可以从中判断要修剪哪个驱动器。

linux # sudo mount /dev/sdc1 /mnt但替代 tyh

相关内容