在 Fedora 27 中,当断开外部 USB 磁盘驱动器时,日志记录如下:
May 07 22:29:11 usb 2-3.1: USB disconnect, device number 23
May 07 22:29:11 sd 3:0:0:0: [sdb] Synchronizing SCSI cache
May 07 22:29:11 sd 3:0:0:0: [sdb] Synchronize Cache(10) failed:
Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
对此应该怎么做?
为什么系统/内核在驱动器已断开连接后尝试同步缓存?
是否可以在断开连接之前优雅地关闭 USB 磁盘?例如,使用发出 Synchronize-Cache 命令然后使驱动器减速的命令。
这也许还会减少驱动器上的机械应力,因为旋转磁盘的突然断电不一定是最佳的。
编辑:一个eject /dev/sdb
无效,即上面的内核消息仍然显示在设备拔出并且磁盘继续旋转。相反,弹出命令会产生这些内核日志消息:
May 18 17:26:06 ldm_validate_partition_table(): Disk read failed.
May 18 17:26:06 Dev sdb: unable to read RDB block 0
May 18 17:26:06 sdb: unable to read partition table
May 18 17:26:06 ldm_validate_partition_table(): Disk read failed.
May 18 17:26:06 Dev sdb: unable to read RDB block 0
May 18 17:26:06 sdb: unable to read partition table
编辑:关闭磁盘电源udisksctl power-off --block-device /dev/sdb
确实有效:
May 19 08:08:21 udisksd[9447]: Successfully sent SCSI command SYNCHRONIZE CACHE
to /dev/sdb
May 19 08:08:21 udisksd[9447]: Successfully sent SCSI command START STOP UNIT
to /dev/sdb
May 19 08:08:21 kernel: sd 3:0:0:0: [sdb] Synchronizing SCSI cache
May 19 08:08:21 udisksd[9447]: Powered off /dev/sdb - successfully wrote
to sysfs path /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/remove
May 19 08:08:21 kernel: usb 2-3.1: USB disconnect, device number 60
实际上,磁盘随后会断电。
用于
udisksctl
关闭驱动器:所以例如
您可以以普通用户身份运行该命令,无需 root 访问权限。
如果你更喜欢 gui,
gnome disks
有一个按钮来“关闭这个磁盘”。