我正在尝试调试我的硬件上的SSD未被正确的设备驱动程序检测到的情况.应该拥有SSD的设备驱动程序是一个软件RAID驱动程序(megasr),它将在镜像模式下自动配置2个SSD.我很确定megasr驱动程序没有检测/拥有SSD,但我不确定哪个驱动程序实际检测到它们.
在Linux中是否有办法确定哪个设备驱动程序拥有/ dev目录中的特定磁盘.
所以我想确定哪个驱动程序拥有设备/ dev / sda,例如.
操作系统是RHEL 6.x.
非常感谢.
解决方法:
您可以看到内核日志
dmesg | grep sda
<...>
[ 0.618438] sd 2:0:0:0: [sda] Attached SCSI disk
<...>
日志正在讨论scsi磁盘,而sd 2:0:0:0是生成该消息的设备.您可以检查sysfs以获取更多详细信息:
cd /sys/block/
cd /sys/block/sda/
在这里,您可以找到有关所有块设备的信息.如果您查看特定设备的目录,您应该看到它的信息.
这里有关于scsi总线的信息.有两个目录:驱动程序和设备.
cd /sys/bus/scsi
cd /sys/bus/scsi/devices
cd /sys/bus/scsi/drivers
这里有scsi总线上的驱动程序列表.
ls /sys/bus/scsi/drivers
sd sr
日志表示sd 2:0:0:0
cd /sys/bus/scsi/drivers/sd/2:0:0:0
这是我的设备,所以sd是我的驱动程序.
磁盘是块设备,您应该看到目录块
cd /sys/bus/scsi/drivers/sd/2:0:0:0/block/sda
可能有一个程序自动执行此操作:)
如果错误的驱动程序正在处理您的设备,您可以从该驱动程序解除绑定设备,并将其绑定到另一个驱动程序.
ls /sys/bus/scsi/drivers/sd
2:0:0:0 bind uevent unbind
您可以在解除绑定文件上写入设备标识符,以将该设备与驱动程序分离.
echo -n "2:0:0:0" > unbind
然后,您可以将设备连接到另一个驱动程序
cd /sys/bus/scsi/drivers/
echo -n "2:0:0:0" > bind
显然(1),你不能将scsi设备绑定到非scsi驱动程序.
显然(2),这不是您特定问题的答案,但它是一种检索解决问题所需信息的方法