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 秒,广告加载完成后将自动显示下载链接

发表回复

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