Persistent Reservations


SCSI-3 Persistent Reservation (SCSI-3 PR) supports device access from multiple systems, or from multiple paths from a single system. At the same time it blocks access to the device from other systems, or other paths.

SCSI-3 PR 就是一组 SCSI 命令集,用在多个系统访问一个共享存储的时候协调之用,并且与旧的命令集不兼容。Windows 2008 用 SCSI-3 PR,而 Windows 2003 用 SCSI-2。当 Windows 2003 访问 SCSI-3 的共享存储的时候,会发生错误。

SCSI 锁类型

通常来讲目前 SCSI 锁有两种类型:SCSI-2 Reservation 和 SCSI-3 Reservation,这里 SCSI-3 Reservation 也称之为 Persistent Reservation。这两种类型的锁是不能共存在一个 LUN 上的。

SCSI-2 Reservation 只允许设备被发出加锁的 Initiator 访问,这里 Initiator 一般指 HBA。比如 HostA 上的 fcs0 对访问的 LUN 加上 SCSI-2 锁,此时即使 HostA 上的 fcs1 也无法访问该 LUN。所以 SCSI-2 Reservation 有时也被称为 Single-path Reservation。

SCSI-3 Reservation(Persistent Reservation)是使用 PR Key 来对设备进行加锁。通常一台 Host 会有唯一的 PR Key,不同的 Host,PR Key 也不同。所以一般 SCSI-3 Reservation 通常被应用在多通路的共享环境下面。


ALUA(Asymmetric Logical Unit Access)是前端控制器多路径机制之一。前端控制器多路径机制一定程度上决定存储的读写性能和可靠性,现有机制包括:

  1. A/A(Symmetric Active/Active)

    对于特定的 LUN 来说,在它的路径中,两个存储控制器的目标端口均处于主动/优化(Active/Optimized)状态。两个控制器之间实现高速互联的通讯,一个 I/O 发到控制器端,两个控制器可同时参与处理;当一个控制器繁忙,系统不需要主机端的负载均衡软件参与就可以自动实现负载均衡。

  2. ALUA(Asymmetric Active/Active)

    对于特定的 LUN 来说,在它的路径中,一个控制器的目标端口处于主动/优化(Active/Optimized)状态,另一个控制器的目标端口处于主动/非优化(Active/Unoptimized)状态。在某一个时刻,某个 LUN 只是属于某一个控制器,要想实现两边的负载均衡,就是将任务 A 扔给控制器 A,将任务 B 扔给控制器 B,对于同一个任务来说,任何时候只有一个控制器在控制。

  3. A/P(Active/Passive)

    对于特定的 LUN 来说,在它的路径中,一个控制器的目标端口处于主动/优化(Active/Optimized)状态,另一个控制器的目标端口处于备用(Standby)状态。其负载均衡及任务处理方式与 ALUA 类似。


ALUA is a feature defined by the ANSI T10 SCSI committee. It allows a target to tell the initiator which path to use in a multipath setup plus, in the explicit case, control state of each path via SET TARGET PORT GROUPS SCSI command. The redundant paths between initiator and target can be used either for redundancy or for load sharing purposes.

The target can either be a single target system with multiple communication interfaces or two target systems each configured in a high availability setup.

In the SPC-4 standard the following concepts are defined related to ALUA:

  • Relative target port ID

    A number between 1 and 65535 that uniquely identifies a target port. These numbers must be unique over the target as a whole, even if that target consists of multiple systems.

  • Target port group asymmetric access state

    One of active/optimized, active/non-optimized, standby, unavailable, logical block dependent or offline. The access state of a port defines which (if any) SCSI commands will be processed by the target port.

  • Target port preference indicator

    This indicator is additional information next to the asymmetric access state that is provided by the target to an initiator and that may impact the decision taken by the initiator about which path that will be chosen.