存储阵列系统提供了各种的配置项和功能特性,取决于他的类别和设计。根据阵列如何处理提供给主机的设备的I/O,他们可以分类如下:
Active/Active。I/O(输入/输出)可以通过任意的存储处理器(Storage Processor)和端口发送到逻辑单元号(LUNs)。这些阵列中,大多数都是具有比较大的缓存,并且I/O是在LUN的缓冲区完成的,随后异步的刷新写入物理磁盘中。
Active/Passive。I/O只能发送到存储处理器拥有”LUN”的任意端口(也称主动SP)。如果尝试通过”非所有者”处理器(也称为被动SP)上的端口在LUN上执行IO操作,则会向启动器(initiator)返回一个错误,简单的表示 “禁止进入” 或者 “不,你不能这样做”。
Pseudo-active/Active(also known as asymmertric active-active)。IO可以发送到任意存储处理器(SP)上的端口。但是,由于I/O从每个存储处理器(SP)到达设备的路径,发送到所有者存储处理器(SP)的IO比发送到非所有者控制器的IO要快。通过非所有者SP需要通过某些后端的通道发送IO,而通过所有者SP则有一条直接的路径。
后两者类型的阵列称为 “非对称逻辑单元访问(ALUA)” 的SCSI-3规范。它允许通过两个SP访问阵列设备,但是向启动器(initiators)清楚地表示哪些目标(targets)位于所有者SP上,哪些目标(targets)位于非所有者SP上。
ALUA定义
标准的官方释义如下:
Asymmetric logical unit access occurs when the access characteristics of one port may differ from those of another port.
翻译过来就是:当一个端口的访问特征可能与另一个端口的访问特征不同时,就会发生非对称逻辑单元(ALUA)访问。
简单来说,ALUA指定了一种存储设备类型,该设备能够在两个不同的存储处理器(SP)上以不均匀的方式给定LUN提供服务。
正如上面所提到的那样,使用ALUA时,可以将给定的LUN的I/O发送到存储阵列中任何存储处理器(SP)的可用端口上。这样就更加接近于非对称 active/active(主动/主动)阵列的行为,而不是active/passive(主动/被动)的行为。允许LUN进行I/O,但是所有者存储处理器(SP)的性能会优于非存储处理器(SP)所有。为了使(initiators)启动器能够确定哪些目标(targets),将提供最佳的IO,每个存储处理器(SP)上的端口都分组到目标端口组中。每个目标端口组都有一个独特的”状态”(非对称访问状态[AAS]),表示一个存储处理器(SP)上的端口与另一个控制器上的端口相比的优化。(列如,主动优化和主动-非优化)。
ALUA目标端口组
根据SPC-3,目标端口组(TPG)描述如下:
A target port group is defined as a set of target ports that are in the same target port asymmetric access state at all times. A target port group asymmetric access state is defined as the target port asymmetric access state common to the set of target ports in a target port group. The grouping of target ports is vendor specific.
翻译过来就是:目标端口组定义为始终处于同一目标端口非对称访问状态的一组目标端口。目标端口组非对称访问状态定义为目标端口组中目标端口集共有的目标端口非对称访问状态。目标端口的分组是特定于供应商的。
这仅仅意味着,在具有两个SP(SPA和SPB)的给定的存储阵列中,SPA上的端口组合在一起,而SPB上的端口则分组到一个单独的组中。假设此存储阵列向E主机中的启动器提供两个LUN—-LUN1和LUN2,并且LUN1归属于SPA,LUN2归属于SPB。对于主机,最好通过SPA访问LUN1,并且通过SPB访问LUN2。相对于LUN1,SPA上的端口位于主动优化(AO)TPG中,SPB上的端口位于主动非优化(ANO)TPG中。在此示例中,LUN2的情况正好相反,其中SPA上的TPG是ANO,SPB上的TPG是AO。
下图显示了非对称active/active阵列上的示例。ID=1的TPG(SPA上的左侧矩形)是AO(由连接到LUN1的实线表示)。同样的TPG是LUN2的ANO(由连接TPG1和LUN2的中断线路表示)。
TPG的图示。

对于ID=2的TPG,情况正好相反。也就是说,LUN2是ANO,LUN1是ANO。
在某些支持ALUA的主动/被动(active/passive)阵列上,你可能会在非所有者SP上看到端口组具备有”备用”AAS,而不是”ANO”。
非对称访问状态
对于给定的LUN,ALUA TPG中的端口可以始终处于同一AAS中。TPG的AAS将报告给发起方,以相应REPORT TPGS命令。TPG描述符在该想你的字节1中报告。
可能的状态如下:
主动优化(Active-optimized ,AO)。端口位于非所有者SP上,与AO AAS相比,LUN的I/O不太理想。
正在转换(Transitioning)。TPG AAS 正在从一种状态切换到另一种状态。例如,如果 AO TPG 的 SP 正在重新启动或脱机,或者如果 SAN(存储区域网络)管理员手动转移 LUN 所有权(在 EMC CLARiiON 上,这称为主动变更),则备用 SP 上 TPG 的 AAS 将更改为 AO。虽然这一过程正在进行中,但 TPG AAS 正在过渡。
当 TPG 处于此状态时,接收来自启动器的请求将返回 BUSY 或 CHECK CONDITION,并带有检测键 NOT READY 和 ASC(附加检测代码)LOGICAL UNIT NOT ACCESSIBLE 或非对称访问状态转换(ASYMMETRIC ACCESS STATE TRANSITION)。
备用(Standby)。此状态类似于非 ALUA 配置和某些支持 ALUA 的阵列中的被动 SP。它返回一个带有感应键
NOT READY
的CHECK CONDITION
.当 TPG 位于此 AAS 中时,它支持在 AO AAS 中时接受的命令子集:
不可用(Unavaliable)。当 TPG 对 LUN 的访问由于硬件错误或其他 SCSI 设备限制而受到限制时,通常会出现此 AAS。处于此状态的 TPG 无法转换为 AO 或 ANO,直到错误消退。
reference
[1] https://www.pearsonitcertification.com/articles/article.aspx?p=2819032