AWS recently introduced support for NVMe reservations, a set of industry-standard storage fencing protocols, on io2 and io2 Block Express EBS volumes. Controlling and coordinating access from multiple instances to a shared volume, reservations are used by shared storage applications to ensure data consistency.
The new feature helps achieve higher application availability within a single Availability Zone without the need for data replication across multiple zones supporting scenarios such as SQL Server Failover Cluster Instances (FCI).
NVM Express (NVMe) is a communication protocol that facilitates faster and more efficient data transfer between servers and storage systems. Storage fencing is used to regulate access to storage for a compute or database cluster, ensuring that just one host in the group has permission to write to the volume at any given time.
NVMe reservations require multi-attach enabled EBS volumes that can be attached only to instances built on the Nitro system. Jeff Barr, vice president and chief evangelist at AWS, explains the benefits of io2 Block Express volumes:
Volumes can be as big as 64 TiB, and deliver SAN-like performance with up to 256,000 IOPS/volume and 4,000 MB/second of throughput, all with 99.999% durability and sub-millisecond latency. The volumes support other advanced EBS features including encryption and Multi-Attach, and can be reprovisioned online without downtime.
The EBS volume supports the following NVMe Reservation commands: Reservation Register to register, unregister, or replace a reservation key, and Reservation Acquire, to acquire a reservation on a volume, preempt a reservation held on a namespace, and abort a reservation held. Ran Pergamin, senior solution architect specialist at AWS, comments:
You can now run applications that require SCSI persistent reservations on io2 volumes, such as quorum volumes, clustered applications, and more!
Reservations are enabled by default for new volumes while existing volumes must be detached first to take advantage of the new feature. Barr explains:
If you have existing io2 Block Express volumes, you can enable reservations by detaching the volumes from all of the EC2 instances, and then reattaching them. Reservations will be enabled as soon as you make the first attachment.
Windows Server Failover Clustering is the only cluster and volume manager currently supported, with other options expected in the future.
While there are no additional charges for the feature, multi-attach and storage fencing are supported only on the io2 volumes that are charged by the amount of storage in GB and the amount of IOPS provisioned, with a significant premium on general-purpose SSD volumes.
NVMe reservations are supported on Windows Server (2016, 2019, and 2022), SUSE SLES 12 SP3 and above, RHEL 8.3 and above, and Amazon Linux 2 and later.