强制内核取消注册驱动器,然后再次初始化它

强制内核取消注册驱动器,然后再次初始化它

我有一个驱动器,无论我做什么,它似乎都处于挂载状态并且很忙。但由于我不想重新启动整个系统,所以我运行 echo 1 > /sys/block/sd*/device/delete强制内核“拔出”或取消注册该驱动器。

然后我拔下并重新插入磁盘的 SATA 电源线,它再次出现在系统中并按预期工作。

但是如果我无法物理访问它,我该怎么办?除了物理拔掉 SATA 电缆以便系统在运行后再次看到它之外,还有什么其他方法吗echo 1 > /sys/block/sd*/device/delete

答案1

您可以通过运行以下命令重新扫描 SCSI 主机总线

echo "- - -" > /sys/class/scsi_host/host0/scan

笔记:上述命令的一部分host0是主机 ID。您的机器上可能有多个/其他主机 ID。这意味着,如果上述命令没有让您找回驱动器,您可能需要更改主机 ID 以匹配您机器上的主机 ID。

你可以通过运行以下命令来查找你的机器上有哪些可用的主机 ID:

ls /sys/class/scsi_host

在我的计算机上返回

host0  host1  host2  host3  host4  host5

因此,查找您的主机 ID 并在每个 ID 上运行第一个命令,以确保驱动器被检测到。

编辑:

要对每个主机 ID 重复此命令,您可以将其放入这样的循环中:

for host in /sys/class/scsi_host/host*/scan; do echo "- - -" > $host; done

相关内容