HyperMetro I/O Processing Mechanism
HyperMetro uses dual-write and data change log (DCL) to synchronize data changes between the storage systems in two DCs, ensuring data consistency. The storage systems in both DCs provide services for hosts concurrently.
Write I/O Process
Dual-write and locking mechanisms are essential for data consistency between storage systems.
- Dual-write and DCL technologies synchronize data changes while services are running. Dual-write enables hosts' I/O requests to be delivered to both local and remote caches, ensuring data consistency between the caches. If the storage system in one DC malfunctions, the DCL records data changes. After the storage system recovers, the data changes are synchronized to the storage system, ensuring data consistency across DCs.
- Two HyperMetro storage systems can process hosts' I/O requests concurrently. To prevent conflicts when different hosts access the same data on a storage system simultaneously, a locking mechanism is used to allow only one storage system to write data. The storage system denied by the locking mechanism must wait until the lock is released and then obtain the write permission.
Figure 2-5 shows an example of the write I/O process in which a host delivers an I/O request to the local storage system and dual-write is used to write the data to the remote storage system.
- A host delivers a write I/O to the HyperMetro I/O processing module.
- The write I/O applies for write permission from the optimistic lock on the local storage system. After write permission is obtained, the system records the address information in the log but does not record the data content.
- The HyperMetro I/O processing module writes the data to the caches of both the local and remote LUNs concurrently. When data is written to the remote storage system, the write I/O applies for write permission from the optimistic lock before the data can be written to the cache.
- The local and remote caches return the write result to the HyperMetro I/O processing module.
- The system determines whether dual-write is successful.
- If writing to both caches is successful, the log is deleted.
- If writing to either cache fails, the system:
- Converts the log into a DCL that records the differential data between the local and remote LUNs. After conversion, the original log is deleted.
- Suspends the HyperMetro pair. The status of the HyperMetro pair becomes To be synchronized. I/Os are only written to the storage system on which writing to its cache succeeded. The storage system on which writing to its cache failed stops providing services for the host.
In the background, the storage systems use the DCL to synchronize data between them. Once the data on the local and remote LUNs is identical, HyperMetro services are restored.
- The HyperMetro I/O processing module returns the write result to the host.
Read I/O Process
The data of LUNs on both storage systems is synchronized in real time. Both storage systems are accessible to hosts. If one storage system malfunctions, the other one continues providing services for hosts.
Figure 2-6 shows an example of the read I/O process.
- A host delivers a read I/O to the HyperMetro I/O processing module.
- The HyperMetro I/O processing module enables the local storage system to respond to the read request of the host.
- If the local storage system is operating properly, it returns data to the HyperMetro I/O processing module.
- If the local storage system is not operating properly, the HyperMetro I/O processing module enables the host to read data from the remote storage system. Then the remote storage system returns data to the HyperMetro I/O processing module.
- The HyperMetro I/O processing module returns the requested data to the host.