ISO/IEC 14776-381:2002 (CAN/CSA ISO/IEC 14776-381-02) SCSI Primary Commands-2 技术标准详解

深入解析 SCSI 主要命令集 SPC-2 的协议定义、设备类型、错误处理及实施要点

ISO/IEC 14776-381:2002 是 SCSI (Small Computer System Interface) 协议体系中处于核心地位的规范,通常被称为 SPC-2 (SCSI Primary Commands – 2)。该标准由 ISO 和 IEC 联合发布,加拿大标准协会 (CSA) 将其采纳为 CAN/CSA ISO/IEC 14776-381-02。它详细定义了所有 SCSI 设备必须实现的基础命令集、命令格式、设备类型识别、状态报告以及错误处理机制,是构建任何 SCSI 目标设备 (如磁盘、磁带、光驱) 和发起端 (主机适配器) 之间互操作性的基石。直到 2026 年,该标准仍作为 SCSI 协议兼容性测试的核心引用文档,广泛应用于企业存储、数据中心及工业控制领域。

一、标准概况与适用范围

1.1 标准定位

本标准属于 SCSI-3 协议家族的“主要命令”部分,上接 SCSI 体系结构模型 (SAM-2),下启各类设备专用命令 (如 SBC-2 块命令、SSC-2 流命令)。它抽象了与具体传输介质无关的命令层,使得同一套高级命令可在并行 SCSI (SPI)、光纤通道 (FCP) 或串行连接 SCSI (SAS) 上运行。

1.2 适用范围

  • 目标设备 (Target):包括直接访问存储设备 (磁盘)、顺序访问设备 (磁带)、光盘、打印机、处理器设备等;
  • 发起端 (Initiator):主机总线适配器或嵌入式 SCSI 控制器;
  • 桥接/虚拟化设备:执行协议转换或存储虚拟化的中间设备。
SCSI 标准体系中的位置
层次 标准编号 说明
体系结构 ISO/IEC 14776-411 (SAM-2) 定义 SCSI 交互模型、任务管理
主要命令 ISO/IEC 14776-381 (SPC-2) 通用命令集 (INQUIRY, READ, WRITE 等)
块命令 ISO/IEC 14776-321 (SBC-2) 直接访问设备的命令 (READ, WRITE)
流命令 ISO/IEC 14776-331 (SSC-2) 磁带等顺序访问设备的命令
标准实施益处:严格遵循 SPC-2 可确保不同厂商的 SCSI 设备之间实现基本命令层面的无缝互操作,显著降低系统集成与验证成本。截至 2026 年,几乎所有主流存储阵列仍以其为基础进行兼容性测试。

二、主要技术内容与要求

2.1 命令描述符块 (CDB) 结构

所有 SCSI 命令均通过 CDB 传输。SPC-2 定义了 6 字节、10 字节、16 字节及可变长度 CDB 格式。每个 CDB 至少包含操作码 (Operation Code)、逻辑单元号 (LUN) 和传输长度字段。例如,10 字节 CDB 的通用格式如下:

  • Byte 0:操作码 (如 0x12 INQUIRY, 0x08 READ (6), 0x28 READ (10))
  • Bytes 1-8:逻辑块地址 (LBA)、预留位、数据传输长度等
  • Byte 9:控制字节 (NACA, Link 等)

2.2 关键命令描述

SPC-2 约定义了 60 余条命令,其中约 20 条为强制实现。以下为最常见命令的汇总:

SPC-2 关键命令及操作码
命令名称 操作码(Hex) 功能描述 必需
INQUIRY 0x12 获取设备标识、VPD 参数等 是
TEST UNIT READY 0x00 检查 LUN 是否就绪 是
REQUEST SENSE 0x03 返回上次错误的 sense data 是
READ (10) 0x28 读取数据块 因设备而异
WRITE (10) 0x2A 写入数据块 因设备而异
MODE SENSE (6) 0x1A 返回设备模式参数 是
MODE SELECT (6) 0x15 设置设备模式参数 是

2.3 外围设备类型定义

INQUIRY 命令返回的 Peripheral Device Type (PDT) 字段用 5 bits 标识设备类别。SPC-2 定义了 1Fh 以内的所有类型:

PDT 代码 (Hex) 设备类型 典型命令集
00h 直接访问块设备 (如磁盘) SBC-2
01h 顺序访问设备 (如磁带) SSC-2
05h CD/DVD 设备 MMC-4
07h 光盘存储器 MMC / SBC
0Fh 主机管理设备 本规范 + SMP
实现提示:所有 SCSI 设备必须支持 INQUIRY 和 REQUEST SENSE,并始终返回符合 SPC-2 规范的识别数据。在开发模式下,建议先完整实现 VPD 页面 00h 和 83h 以提升兼容性。

2.4 状态与错误处理

每条命令以状态字节结束。SPC-2 定义了 5 种主要状态:Good (00h), Check Condition (02h), Busy (08h), Reservation Conflict (18h), 以及 Task Aborted (40h)。当状态为 Check Condition 时,发起者必须发送 REQUEST SENSE 获取包含 Sense Key、Additional Sense Code (ASC) 及 Qualified (ASCQ) 的详细错误描述。

安全关键要求:对于涉及数据完整性的操作 (如发出 WRITE 后出现写入错误),目标设备必须正确返回 Check Condition 状态并设置 sense key 为 MEDIUM ERROR (03h) 或 HARDWARE ERROR (04h),严禁返回 Good 状态。否则可能导致数据损坏无法恢复。

三、实施与应用要点

3.1 版本兼容性

SPC-2 相对 SPC-1 增加了 READ (16)/WRITE (16)、COMPARE AND WRITE 等命令,同时规范了 VPD 页面的版本标识。实现时建议:

  • 若需最大兼容性,支持 10 字节命令的同时,应同时实现 16 字节变体以访问 >2 TiB LBA;
  • 注意早期启动器可能不完全支持新的标准状态码,应提供配置选项切换 SPC-1 兼容模式。
注意事项:如果目标设备声明遵循 SPC-2,但未实现强制命令 (如 PERSISTENT RESERVE IN/OUT),可能造成存储集群中的资源冲突。务必在测试矩阵中覆盖这些命令的负面测试。

3.2 传输层适配

SPC-2 不依赖特定的传输协议。实施时需注意不同物理层对命令超时、最大 CDB 长度及自动连续状态处理 (ACA) 的支持差异。例如,并行 SCSI 通常要求更短的 ACA 超时而 SAS 允许更长的命令排队。

3.3 测试与认证

SCSI 贸易协会 (STA) 提供了针对 SPC-2 的官方测试工具。关键测试用例包括:INQUIRY 数据校验、状态码序列、任务管理功能 (ABORT TASK, TARGET RESET) 以及错误恢复流程。建议开发团队在实现初期即进行自动化回归测试。

四、与其他标准的关系

4.1 与 SAM-2 (ISO/IEC 14776-411)

SPC-2 的交互模型和任务管理遵循 SAM-2。例如,任务排队、自动连续支持 (ACA) 均在 SAM-2 中定义,SPC-2 仅扩展了具体命令行为。

4.2 与设备专用标准

  • SBC-2 (ISO/IEC 14776-321): 在块设备 LUN 上,READ(10)/WRITE(10) 等命令的实际数据传送行为由 SBC-2 定义,包括错误恢复策略。
  • SSC-2 (ISO/IEC 14776-331): 顺序访问设备中,命令如 READ BLOCK LIMITS 继承自 SPC-2 但由 SSC-2 细化。
  • SPC-3 及后续版本: 在向后兼容的基础上增加了扩展描述符、ATA 头透传等功能。新设计建议参考 SPC-4 (ISO/IEC 14776-454) 以获得长期兼容性,但核心实现仍以 SPC-2 为基础。

常见问题 (FAQ)

问:SPC-2 与 SPC-1 的主要区别是什么?
答:SPC-2 新增了 16 字节 READ/WRITE 命令以支持超过 2 TiB 的 LBA 范围;增加了 PERSISTENT RESERVE IN/OUT 命令用于集群系统;并引入了更详细的 VPD 页面 (如设备标识 83h 页面)。此外,状态码和 sense data 格式得到进一步统一。
问:是否所有 SCSI 设备都必须支持 INQUIRY 命令?
答:是的,根据 SPC-2,每个 LUN 必须正确响应 INQUIRY,并返回有效的外设类型和设备标识。未支持 INQUIRY 的设备被视为不合格。
问:该标准是否涵盖数据加密或安全擦除?
答:SPC-2 本身不涉及加密,但其定义的 MODE SELECT 和 SECURITY PROTOCOL IN/OUT 命令 (后者常配合 TCG 规范) 可用于加密密钥管理。安全擦除功能通常由后续的 SPC-4 或专用命令层实现。
问:CAN/CSA ISO/IEC 14776-381-02 与国际标准 ISO/IEC 14776-381:2002 有何不同?
答:加拿大采用版将国际标准直接发布为国家采纳标准,内容与 ISO/IEC 版本保持一致,只是在封面及规范性引用文件中引用加拿大标准体系文档。技术内容无异。

© 2026 年, 本文基于 ISO/IEC 14776-381:2002 及 CAN/CSA ISO/IEC 14776-381-02 编写,仅供技术参考。所有标准版本以官方发布为准。

📥 标准文件下载

🔒
请等待 10 秒,广告加载完成后将自动显示下载链接

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注