从断开连接恢复 USB 挂载 - 重新连接

从断开连接恢复 USB 挂载 - 重新连接

我在 USB C 外壳中使用 m2 SSD 作为 Linux 上的根分区。尽管尝试了不同的外壳品牌,但总是会出现一些罕见的断开连接(例如移动电缆时)。

快速断开连接将始终强制以只读方式重新挂载分区并且无法恢复(例如:我需要重新启动)。

以前,使用 e-SATA,断开磁盘连接会冻结 I/O,但重新连接驱动器后一切都会恢复正常状态。这也类似于hardNFS 的挂载选项。

有没有办法使用 USB 存储设备来实现 - 在断开连接时冻结 I/O,而不是以只读方式重新安装分区并为 I/O 调用返回 I/O 错误?

答案1

虽然我还没有深入研究,但我怀疑 SATA(在 Linux 上的工作方式)有一个优势,即“SCSI 目标”是静态的;每个 SATA港口具有静态映射。这不适用于 USB 存储,因为 USB 存储的 SCSI 目标无法提前知晓(并且由于 USB 集线器的存在,单个 USB 端口可以连接到多个存储设备,并且端口本身也会来来去去)。

(我也有点怀疑您之前的机器没有完全处理 SATA 热插拔(即使对于 eSATA 端口来说它应该有)并且认为磁盘仍然连接着,只是没有响应。)

应该可以通过以下方式实现你想要的设备映射器子系统(支持 LVM 和 LUKS 等)。如果您设置了一个与dm-linear底层“sda”设备 1:1 映射的简单设备,然后安装 dm 设备,则可以更改 dm 设备映射的位置,而文件系统根本不会注意到任何事情。也就是说,如果 /dev/sda 消失,dmsetup suspend --noflush将暂停 I/Odmsetup reload并可用于将其切换到另一个后备设备。我自己还没有尝试过。(我也不知道您是否需要手动执行此操作,或者 LVM 是否可以为您完成所有操作。)

相关内容