探索 Linux 通用 SCSI 驱动器研究 Linux 通用 SCSI 驱动器 API 及其用例简介:通过 SCSI 命令管理计算机上的数据,并将数据传输到 SCSI 设备。在本文中,作者介绍了一些 SCSI 命令,以及在Linux? 中使用 SCSI API 时执行SCSI 命令的方法。他介绍了 SCSI 客户机 / 服务器模型和存储 SCSI 命令的背景。接下来解释 Linux 通用 SCSI 驱动器 API ,并提供一个示例,讨论使用通用驱动器执行 inquiry 命令的系统。SCSI 客户机 / 服务器模型在主机和存储介质进行通信期间,主机通常充当SCSI 启动程序 。在计算机存储中, SCSI 启动程序是启动 SCSI 会话的端点,这意味着它会发送 SCSI 命令。存储介质通常充当 SCSI 目标,它接收和处理 SCSI 命令。 SCSI 目标等待启动程序的命令,然后提供请求的输入/ 输出数据转换。SCSI 目标通常为启动程序提供一个或多个逻辑单元号 (LUN)。在计算机存储介质上,LUN 仅是分配给逻辑单元的号码。逻辑单元是一个 SCSI 协议实体, 实际的 I/O 操作只处理这种实体。每个 SCSI 目标可以提供一个或多个逻辑单元;它本身不执行 I/O ,但代替特定的逻辑单元执行。在存储区域中,LUN 通常表示一个主机能够执行读写操作的 SCSI 磁盘。图 1 显示 SCSI 客户机 / 服务器模型是如何工作的。图 1. SCSI 客户机 / 服务器模型启动程序首先向目标发送命令,然后目标解码命令并向启动程序请求数据,或将数据发送给启动程序。在这之后,目标将状态发送给启动程序。如果状态损坏,启动程序将向目标发送一个请求检测(sense)指令。目标将返回检测数据,告知启动程序哪里出错。现在我们研究与存储相关的 SCSI 命令。与存储相关的 SCSI 命令与存储相关的 SCSI 命令一般是在 SCSI Architecture Model (SAM)、SCSI Primary Commands (SPC) 和 SCSI Block Commands (SBC) 中定义的:SAM定义 SCSI 系统模型、 SCSI 标准集的功能性分区,以及适用于所有SCSI 实现和实现标准的需求。SPC 定义对所有 SCSI 设备模型通用的行为。SBC 定义命令集扩展,以方便操作 SCSI 直接访问块设备。每个 SCSI 命令都由 Command Descriptor Block (CDB) 描述,它定义 SCSI 设备执行的操作。 SCSI 命令涉及到用于向 SCSI 设备传输数据 (或从中输出数据)的数据命令,以及用于设置 SCSI 设备的配置参数的非数据命令。表 1 列出了最常...