To start with, let us discuss about SCSI-3 Persistent Group Reservation. One reason I choose to start with it is because I couldn't find much information about it on the internet. So, lets start.
Definitions/Abbreviations
- SCSI : Small Computer System Interface.
- SCSI-3 : SCSI standard 3.
- I_T Nexus : In SCSI, I_T nexus stands for relationship between two SCSI endpoints namely, SCSI initiator and target ports.
- PGR : Persistent Group Reservation.
- Device Server : A logical unit processing SCSI commands.
Why SCSI-3 Persistent Group Reservation ?
- Like any other reservation mechanism, SCSI-3 PGR is used for managing the access of I_T nexuses to a SCSI-3 device servers. It helps us create set of I_T nexuses with specific device server access credentials. I_T nexuses within this set are allowed to perform specific set of operations on the device server while others are not permitted to perform those operations.
- SCSI-3 PGR extends the SCSI-2 reservations by allowing the set of permitted I_T nexuses to have more than one element in it.For e.g. consider a device server accessible through 4 I_T nexuses i.e. (I1,T1), (I2,T2), (I3,T3) and (I4,T4).The SCSI-2 reservation mechanism allows the device server to be accessible through only one nexus at a time. For instance,Permitted Nexus = { (I1,T1) };Restricted Nexuses = { (I2,T2), (I3,T3), (I4,T4) );
However, SCSI-3 PGR allows the device server to be accessible through a group of nexuses (the G in PGR). So, following is a possible configuration:Permitted Nexuses = { (I1,T1), (I2,T2) };Restricted Nexuses = { (I3,T3), (I4,T4) ); - The PGR takes SCSI reservation one level further by keeping the reservation activities persistent across disruptive events like SCSI initiator device failure, I_T nexus loss, logical unit reset and optionally across power failure at SCSI target device.
What is SCSI-3 Persistent Group Reservation ?
SCSI-3 PGR is a logical mechanism for controlling the access to a device server. It is implemented using PERSISTENT RESERVE IN and PERSISTENT RESERVE OUT SCSI commands. These SCSI commands provide multiple sub-options like register, reserve, release, etc for achieving various access permissions.
Let us understand the basic and commonly used sub-options, We will use sg3_utils library for understanding SCSI-3 PGR with sg_persist utility program. In following examples, we would be using /dev/sdai and /dev/sdbn as two SCSI paths (nexuses) connecting to a SCSI LUN (device server).
- Read Keys: It is a sub-option for PERSISTENT RESERVE IN command and is used reading the keys registered with the device server.
- Read Reservations: It is another sub-option of PERSISTENT RESERVE IN command and is used for reading the current reservation, along with its type and scope, on the device.
- Register: It is a sub-option for PERSISTENT RESERVE OUT command and used for establishing the information on an I_T nexus with the device server. The registration process establishes a key with the device server. This key is used as a reference for further operations by the nexus on device server.
- Reservation: Having registered a key with device, the next possible action is to reserve it with required access permissions. We will be talking about different reservation types later. Reservation is once again a sub-option to PERSISTENT RESERVE OUT command and below is the required sg_persist command for reserving a device in Exclusive Access-Registrants Only type.
- Release: This sub-option of PERSISTENT RESERVE OUT command is used to release an existing reservation. Only the I_T nexus holding the reservation is allowed to execute this command.
SCSI-3 persistent group reservations are most commonly employed as fencing mechanisms in High-availability clusters to safegaurd against split-brain conditions.
Some interesting and useful links
- SCSI-3 Primary commands standard documentation at http://www.t10.org/drafts.htm
- SCSI-3 Persistent reservations at http://sfdoccentral.symantec.com/sf/5.0/linux/html/vcs_install/ch_vcs_install_iofence4.html
- Kristien's blog on SCSI reservation on SUN cluster 3.x at http://blogs.sun.com/kristien/entry/scsi_reservations_in_sun_cluster
Coming up next
Discussion on types of SCSI-3 Persistent Group Reservations.