我有一块 Seagate FreeAgent Go 外置 USB 硬盘,已安装但神秘地决定自行重新连接:
Sep 30 15:07:06 feinman kernel: [243901.551604] usb 1-1.2: USB disconnect, device number 3
Sep 30 15:07:06 feinman kernel: [243901.553828] sd 6:0:0:0: [sdb] Synchronizing SCSI cache
Sep 30 15:07:06 feinman kernel: [243901.553893] sd 6:0:0:0: [sdb] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
Sep 30 15:07:10 feinman kernel: [243905.336557] usb 1-1.2: new high-speed USB device number 4 using ehci_hcd
Sep 30 15:07:10 feinman kernel: [243905.431219] scsi7 : usb-storage 1-1.2:1.0
Sep 30 15:07:11 feinman kernel: [243906.427207] scsi 7:0:0:0: Direct-Access Seagate FreeAgent Go 0148 PQ: 0 ANSI: 4
Sep 30 15:07:11 feinman kernel: [243906.428303] sd 7:0:0:0: Attached scsi generic sg1 type 0
Sep 30 15:07:11 feinman kernel: [243906.430317] sd 7:0:0:0: [sdc] 625142447 512-byte logical blocks: (320 GB/298 GiB)
Sep 30 15:07:11 feinman kernel: [243906.430860] sd 7:0:0:0: [sdc] Write Protect is off
Sep 30 15:07:11 feinman kernel: [243906.430865] sd 7:0:0:0: [sdc] Mode Sense: 1c 00 00 00
Sep 30 15:07:11 feinman kernel: [243906.431386] sd 7:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Sep 30 15:07:11 feinman kernel: [243906.493674] sdc: sdc1
Sep 30 15:07:11 feinman kernel: [243906.496109] sd 7:0:0:0: [sdc] Attached SCSI disk
它从 变为sdb
,sdc
给我带来了很多问题。我该怎么做才能进一步查明原因?
我认为可能是睡眠问题但当我 时cat /sys/class/scsi_disk/6\:0\:0\:0/allow_restart
,我发现它已经是 1 了。
答案1
如果您出于某种原因需要访问设备文件(如/dev/sdb1
),而不是挂载点本身,那么您应该使用 UUID,而不是更传统的“sd*”标签。
键入blkid
以查找驱动器的标签,例如输出可能如下所示:
/dev/sda3: UUID="e04c6aa5-4341-491f-8226-ddf79021115d" TYPE="ext3"
不会改变的设备 ID 是
/dev/disk/by-uuid/e04c6aa5-4341-491f-8226-ddf79021115d
可以保证 UUID 是唯一且具体的。您也可以直接在 fstab 中使用它:
UUID=e04c6aa5-4341-491f-8226-ddf79021115d /data ext3 relatime,errors=remount-ro 0 1
答案2
我认为要么整台计算机都进入睡眠状态,要么驱动器不只是被旋转下来,而是整个计算机实际上都关闭了(其控制器正在关闭,并在此过程中断开与 USB 总线的连接。
您可以从您发布的消息之前的其他消息中知道它是否是前者。设备上是否有指示灯可以告诉您是否是后者?
如果以上情况均未解决,我建议您尝试插入计算机上的其他 USB 端口。我以前也遇到过不稳定的情况,移动设备会有所帮助。
如果您无法阻止这种情况发生,您可能需要使用您提到的帖子中的 udev 技巧来强制执行不同的规则——确保驱动器始终具有相同的名称,例如 /dev/seagate,以避免您看到的复杂情况。为此,您可以使用 SYMLINK 参数而不是 RUN 参数。请参阅这, 例如。
注意——由于这不是 allow_restart 的已知问题,因此这很可能是一个新的错误。
答案3
如果您为相关分区指定卷名,它将始终安装在 /media 文件夹中的同一位置。例如,如果您将其命名为“BACKUP”,那么只要没有其他同名设备,或者您将目录永久地放在 /media 中,它的安装点将始终是 /media/BACKUP。
然后脚本就可以可靠地访问 /media/BACKUP 上的驱动器。
如果自动挂载因任何原因无法分配通常的设备名称,则实际设备名称可能会更改。可能已挂载另一个设备,或者像本例一样,设备因某种原因丢失了连接,旧的设备名称尚未再次可用。在正常使用过程中断开连接的 USB 设备将是一个严重的问题,最可能的原因通常是 USB 电源问题。在本例中,似乎是睡眠或其他断电操作触发了它。