Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 14776-232-02(加拿大采纳版本为 CAN CSA ISO/IEC 14776-232-02)是 SCSI 标准体系中的核心架构规范,正式名称为 SCSI Architecture Model – 2(SAM-2)。该标准由 ISO/IEC JTC 1/SC 25 联合技术委员会制定,于 2002 年首次发布,后续被多个国家直接采纳或转化为本国标准。
SAM-2 定义了 SCSI 设备及其协议实现所必须遵从的架构模型,包括分层模型、命令执行模型、任务管理模型以及设备服务器与任务管理器的行为状态机。它不描述特定传输协议(如 iSCSI、FC、SAS)或特定命令集(如 SBC、SSC),而是提供一套统一的抽象框架,使所有 SCSI 命令集和传输协议能够在同一架构下协同工作。
适用范围包括:
SAM-2 将 SCSI 系统抽象为以下逻辑层:
这些层之间的交互通过状态机严格定义,保证实现独立于具体传输介质。
命令以 16 字节或可变格式的命令描述块(CDB)形式发送。SAM-2 规定了命令执行的五个阶段:命令传输、参数解析、数据移动、状态传输、命令完成。每个阶段的状态转移图给出明确要求,防止歧义。
任务管理用于控制 I/O 任务的执行顺序和生命周期。SAM-2 定义了以下任务类型:
| 任务管理功能 | 说明 | 状态机关键状态 |
|---|---|---|
| ABORT TASK | 中止指定任务 | ABORTING, ABORTED |
| ABORT TASK SET | 中止指定发起器的全部任务 | TASK_ABORTED |
| CLEAR TASK SET | 清除所有待处理任务 | CLEARING |
| LUN RESET | 逻辑单元复位 | RESETTING |
| QUERY TASK | 查询任务是否存在 | 无状态变化 |
状态机详细定义了设备服务器从空闲到执行命令、传输数据、返回状态、错误重试等行为的合法转移。例如,在“命令执行”状态下若检测到 fatal error,必须进入“错误回复”状态并返回 CHECK CONDITION status。
SAM-2 是 SCSI 标准族中最上层框架,其下是各传输层标准(如 ISO/IEC 14776-321-FCP、14776-412-SAS),其上是命令集标准(如 SPC-2、SBC-2、SSC-2)。所有命令集标准都必须引用 SAM-2 的定义,例如:命令描述符的格式、状态码含义、任务管理请求的交互流程。因此,任何 SCSI 实现(硬件或软件)都必须引用 SAM-2 来保证与后续标准版本的一致性。
在异构存储环境中(例如不同厂商的 HBA 连接不同品牌的磁盘阵列),实现一致的状态机是避免超时、重连、数据不一致的关键。标准要求:
| 实现组件 | 对应标准要求 | 验证要点 |
|---|---|---|
| 发起器驱动程序 | 正确生成 CDB、管理任务序列 | I/O 完成顺序、任务超时处理 |
| 目标器固件 | 执行状态机、生成 status 与检查条件 | 预期状态转移覆盖、异常恢复 |
| 传输协议适配器 | 映射 SAM-2 抽象交互到具体协议帧 | 协议标准符合性(如 FCP 或 SAS 协议测试) |
截至 2026 年,SAM-2 已被后续版本(SAM-3 至 SAM-6)所扩展,但其核心的状态机框架依然被广泛实践。许多遗留存储系统仍基于 SAM-2 开发,而新系统通常兼容 SAM-2 以确保向后互操作。在实现高可靠存储系统时,建议以 SAM-2 为基础,并对照 SAM-6 中新添加的特性(如多任务增强、Power Condition 管理)进行渐进式升级。