8.3. proc 接口

要显示 SCSI 子系统当前连接(并已识别)的 SCSI 设备,请使用 cat /proc/scsi/scsi 命令。

输出看起来像这样

    Attached devices:
    Host: scsi0 Channel: 00 Id: 02 Lun: 00
      Vendor: PIONEER  Model: DVD-ROM DVD-303  Rev: 1.10
      Type:   CD-ROM              ANSI SCSI revision: 02
    Host: scsi1 Channel: 00 Id: 00 Lun: 00
      Vendor: IBM      Model: DNES-309170W     Rev: SA30
      Type:   Direct-Access       ANSI SCSI revision: 03

在“Attached devices:”行之后,每个识别的设备有 3 行。第一行是 SCSI 地址信息,在第 3.1 节中讨论。 随后的 2 行数据是从设备连接时对其执行的 INQUIRY 命令获得的。 有关这些设备的排序与 sg 驱动程序排序(大多数情况下是相同的)之间关系的更多信息,请参见第 9.4 节

可以使用 echo "scsi remove-single-device <h> <b> <t> <l>" > /proc/scsi/scsi 命令移除现有设备,其中变量是主机 (host)、总线 (bus)(通道 channel)、目标 (target)(scsi id)和 lun。 此命令是否成功可以通过发送后续的 cat /proc/scsi/scsi 命令来确定。 如果设备正忙(例如,如果设备上的文件系统已挂载),则移除将失败。

可以使用 echo "scsi add-single-device <h> <b> <t> <l>" > /proc/scsi/scsi 命令添加新设备,其中变量是主机 (host)、总线 (bus)(通道 channel)、目标 (target)(scsi id)和 lun。 此命令是否成功可以通过发送后续的 cat /proc/scsi/scsi 命令来确定。[1]

SCSI 子系统不支持 SCSI 设备的热插拔(相关的 SCSI 并行总线上也可能存在电气问题)。 建议使用 add+remove-single-device 的用户确保在进行重新插拔时,该 SCSI 总线上的其他设备处于非活动状态。

要输出内部 SCSI 命令块的列表,请使用 echo "scsi dump <n>" > /proc/scsi/scsi 命令,其中 <n> 的数值无关紧要。 这可能只对在 SCSI 子系统内追踪错误的人员感兴趣。

要启动(或停止)记录发送到控制台/日志的信息,请使用 echo "scsi log <token> <n>" > /proc/scsi/scsi 命令,其中 <token> 是以下之一:{all, none, error, timeout, scan, mlqueue, mlcomplete, llqueue, llcomplete, hlqueue, hlcomplete, ioctl},<n> 是介于 0 到 7 之间的数字。 前缀含义

    hl    upper level drivers [exception: sg uses "timeout"]
    ml    mid level
    ll    lower level drivers
           [adapter drivers often have there own flags]
值“0”关闭日志记录,而“7”最大化输出量。 只有在内核构建中选择了 CONFIG_SCSI_LOGGING 时,才会输出日志信息。

Warning

警告:“scsi log all”(以及其他几种变体)可能会导致日志记录无限循环,如果日志文件(通常是/var/log/messages)位于 SCSI 磁盘上。 要么关闭内核日志守护进程,要么将其输出定向到非 SCSI 设备。

注释

[1]

“add-single-device”和“remove-single-device”的解析相当不灵活。 因此,最好保持与演示语法接近,没有额外的空格(也没有制表符)。