SCSI 可以被视为一个命令集和一组传输该命令集的硬件总线。这些硬件总线可以进一步划分为专门用于 SCSI 的总线(例如超宽总线),与其他协议共享的总线(例如 USB、IEEE 1394)以及未被各种 SCSI 标准定义的总线。在最后一类中,有几个有趣的例子,包括 ATAPI CD 刻录机和 PC 并行总线 ZIP 驱动器。这些设备在外部总线上使用 SCSI 命令集(或非常接近它的东西)。
本节简要概述了各种伪底层驱动程序,这些驱动程序本质上与其他 Linux 子系统通信,以便将 SCSI 命令集发送到由这些其他子系统控制的设备。这引发了一些所有权问题,这些问题经常使用户感到困惑,并导致维护人员收到许多问题。
IDE-SCSI. 从配置的角度来看,ide-scsi 将会抓取并尝试控制每个没有附加“原生”驱动程序(例如 ide-cd、ide-tape 等)的 ATA(又名 IDE)设备。因此,例如,如果 ide-cd 和 ide-scsi 都被编译到内核中,在一个拥有 ATAPI cdrom 的系统中,ide-cd 将会获得控制权。如果只编译了 ide-scsi,它将获得该设备。有一些内核启动时参数可以控制哪个驱动程序获得哪个设备。
IDE 子系统的偏好可以使用以下内核启动时参数之一来覆盖(其中第一个参数对于此子系统最有趣)
hdx=ide-scsi
hdx=ide-cdrom
hdx=ide-floppy
当驱动程序运行时,设备将可以使用 SCSI 设备访问(/dev/sda, /dev/sr0等等),而不是通过相应的/dev/hdx设备。 尽管如此,/dev/hdx设备仍然可用,但仅用于配置。
所有通用的 IDE 配置参数(DMA 开/关、32 位 I/O、取消屏蔽 irq 等)都可以通过使用/dev/hdx设备获得,例如启用 DMA
hdparm -d1 /dev/hdx |
bios_cyl
bios_head
bios_sect
transform
log
位 0:为非 sg 驱动程序发起的命令启用(1)/禁用(0)转换。
位 1:为使用 sg 驱动程序发出的命令启用/禁用转换。
echo "log:1" > /proc/ide/hdx/settings |
echo "using_dma:0" > /proc/ide/hdx/settings |
PPA + IMM. Iomega ZIP 驱动器有多种类型,包括并行端口、SCSI 和 ATAPI。并行端口版本(包括旧的和新的)分别由 ppa 和 imm 驱动。
并行端口 ZIP 驱动器实际上是 SCSI 设备,它们使用称为 VPI0(旧式)和 VPI2(新式)的接口通过并行端口隧道传输 SCSI 命令。ppa 驱动程序是 VPI0 主机实现,而 imm 驱动程序是 VPI2 主机实现。
它的工作方式是 HBA 是 ZIP 驱动器内部的芯片,因此主机适配器和外围设备在同一个实际外壳中。
PPSCSI. 用于通过并行端口电缆使用 SCSI 的设备的新型、尚未集成的架构是 ppscsi。ppscsi 模块提供了样板代码,并使编写不同接口的实现变得容易。
每个 ppscsi 协议模块都向 ppscsi 模块注册自身,并传入所有协议驱动程序通用的各种事物的入口点列表。
PPSCSI 驱动程序的结构。
计划是 ppscsi 架构将吸收 ppa 和 imm 驱动程序和协议模块;到目前为止只编写了 vpi0。请参阅 www.torque.net/parport/ppscsi.html。
USB. USB 将一组设备分类为“大容量存储”(例如磁盘),并使用 SCSI 命令集与这些设备交互。模块名称是 “usb-storage”。请参阅 www.one-eyed-alien.net/~mdharm/linux-usb。
还有用于控制 Microtek 的 X6 USB 扫描仪的 usb/microtek 驱动程序。配置后,SANE 应用程序使用 sg 驱动程序通过 USB 发送 SCSI 命令来控制此扫描仪。
I2O. 请参阅内核源文件/usr/src/linux/drivers/i2o/io2_scsi.c.
IEEE 1394. 现在可以使用对使用 SBP-2 协议的 IEEE 1394 设备的支持 (lk 2.4.7)。有关更多信息,请参阅此章节中的 IEEE 1394 段落。
iSCSI. iSCSI 的 IETF 草案正在形成中。这通过 TCP 网络连接发送 SCSI 命令集。iSCSI 似乎正在迅速普及,并且有几种针对 Linux 的实现正在形成。一种实现位于 sourceforge.net/projects/intel-iscsi/。使用您喜欢的搜索引擎查找其他项目。
[1] | 据报告,在某些发行版中,尝试使用 hdparm 命令会失败。在这种情况下,请使用 “echo ... > /proc/ide/hdx/settings” 形式。 |