当 USB 大容量存储设备连接到主机时,将发生设备枚举,并发生为设备提供地址、获取描述符的过程,然后核心检查所需的类驱动程序并分配大容量存储驱动程序。之后会发生什么?SCSI 在哪里出现?
检查以下dmesg
输出:
[23870.089465] usb 3-2: new high-speed USB device number 5 using xhci_hcd
[23870.158769] usb 3-2: New USB device found, idVendor=058f, idProduct=6387
[23870.158778] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[23870.158782] usb 3-2: Product: Mass Storage
[23870.158785] usb 3-2: Manufacturer: Generic
[23870.158788] usb 3-2: SerialNumber: EEA1EE5B
[23870.202363] usb-storage 3-2:1.0: USB Mass Storage device detected
[23870.202469] scsi6 : usb-storage 3-2:1.0
答案1
一旦usb-storage
将设备连接到给定接口,内核还会启动 SCSI 模拟过程(如果适用),定义sg
和sd
命名(如/dev/sdb这对我们来说是最重要的。
要检查哪个设备对应scsi6
安装sg3-utils
包:
sudo apt-get install sg3-utils
并输入以下命令:
sudo sg_scan
您将获得类似以下的输出:
/dev/sg0: scsi0 channel=0 id=0 lun=0 [em]
/dev/sg1: scsi1 channel=0 id=0 lun=0 [em]
/dev/sg2: scsi6 channel=0 id=0 lun=0 [em]
这里scsi6
定义为/dev/sg2
。
编辑:
USB 大容量存储设备还可以使用各种 SCSI 标准定义的 SCSI 命令。
SCSI 命令集指定了传输数据块和状态及控制信息(如设备容量和交换数据的准备情况)的协议。具有 USB 和其他硬件接口的设备可以使用 SCSI 命令集。
我的意思不是说 usb-storage 控制 SCSI、硬盘、闪存驱动器和其他 USB 大容量存储设备支持命令SCSI 主命令 (SPC) 集和 SCSI 块命令 (SBC) 集摘自 www.t10.org(INCITS 技术委员会 T10)。