In this article, we will be discussing few of the very basic questions frequently being asked about SCSI reservations.
- Why do we need SCSI Reservation?
- What is SCSI Reservation?
- Different Type of SCSI Reservations
- Limitations of SCSI-2 Reservation
- Understanding SCSI-3 Reservation
- How SCSI-3 Reservation Works?
Before understanding SCSI Reservation, let’s first understand WHAT IS RESERVATION itself means.
I believe most of us would be very much familiar with Reservation term. In some or other ways, everyone have dealt with RESERVATION while booking tickets in Train/Bus or table in some restaurant etc…
WHAT RESERVATION MEANS
When single resource is being shared across multiple objects/Users then we need some control mechanism for helping us to avoid any kind of confliction/unnecessary congestion while claiming that resource. That’s what exactly being solved by Reservation.
Reservation restrict other users to claim resource which is already being allocated or used by another user.
In Conclusion, Reservation mechanism enables control access to a Shared Resource.
WHAT IS SCSI RESERVATION
SCSI Reservation solves the same problem in storage world. When multiple Nodes trying to access same LUN or Storage device then we need some Reservation mechanism at Storage Level to allow Node to have control access to that device & also restrict simultaneous access to that device by other nodes to avoid any kind of data corruption.
SCSI RESERVATIONS refer to the act of an Initiator to issue some SCSI Commands (for ex. RESERVE & RELEASE) to lock a LUN/Storage Device for a specific operation.
TYPE OF SCSI RESERVATION
SCSI-2 Reservations also known as SCSI RESERVE and RELEASE. Under this mechanism, an Initiator would set a Reservation on Device using SCSI RESERVE command. Once Reservation is Set, then It can only be released by same Host by issuing SCSI RELEASE command or resetting the SCSI Bus.
SCSI Bus reset performed as an Error recovery to release all SCSI reservation on device.
LIMITATIONS OF SCSI-2 RESERVATION
- SCSI-2 Reservation were designed for one and only one initiator which means only single node can access the LUN at a time. While a reservation is placed on LUN, if another initiator attempts to perform any command on the reserved LUN will be rejected with RESERVATION CONFLICT device status.
- SCSI-2 Reservation doesn’t support multiple paths from Host to a Disk. For ex. If Host is having Four Paths, then only 1 path from 1 Host remain active at a time. This limitation of SCSI-2 prevents the use of multiple paths to SCSI device even if they are available.
- SCSI-2 Reservations are not persistent reservations or do not remain active upon Host reboot or bus reset. Reboot of the host clears the reservation on the LUN (Non-Persistent). During Path recovery, SCSI-2 reservation are not able to reclaim the path due to clearing reservation on that device or LUN.
SCSI-3 Reservations has capability of persisting reservation even after host reboot or SCSI bus reset. Persistent reservation also allows device to be accessed through multiple paths from Initiator to target.
WHAT MAKES SCSI-3 RESERVATION BETTER THAN SCSI-2 RESERVATION
- SCSI-3 reservations use a concept of Registration and Reservation. Each system needs to register a key to access SCSI Device. In SCSI-3 Implementation, multiple system can register its own key to access same SCSI-3 Device and form a membership.
- These member nodes set reservation type “Write Exclusive Registrants Only” which means only registered systems can perform write operations on that SCSI Device & only registered members can remove the registration of another member.
- Single node registers same key for all the paths to SCSI device solves multipathing limitation of SCSI-2.
Obviously, SCSI-3 was always better choice than SCSI-2 Reservation to meet Clustering requirements.
How SCSI-3 RESERVATION WORKS:
- The Initiator registers RESERVATION KEY with Target.
- After successful registration, Initiator uses it KEY to establish persistent reservation on LUN.
- Lock established on LUN gives initiator complete control over all operations to the LUN
- During this time, if any other initiator issue Reservation on same LUN then target send a RESERVATION CONFLICT status.
- After completion, the initiator releases the target reservation using its key
- At last, Initiator unregister its key also.
- This process repeat again for new request.
I hope you guys might have found this article useful and got little understanding of SCSI Reservation and its implementation. SCSI Reservation is little complicated topic & tried my best to explain in simplified way.
If you have still any query, please feel free to drop your comments and i’ll be happy to answer.
In my next article, we will be discussing about SCSI-3 Reservation limitations and how new locking mechanism introduced by ATS solved this limitations with improved performance.