Can you give me some focus on H/W vs. S/W replication techniques? How can SANs be used for replication purposes and how cost effective would it be? I worked with an EMC SRDF/time finder but it is a costly solution. What are some major issues with synchronous vs. asynchronous replication?
Continued from Part I
Let me explain the different techniques:
Hardware-based synchronous: All replication processes are offloaded from the host, and accomplished via the storage array itself. This means there is no host CPU utilization needed. A data write is written from the host into the cache of the storage array. The storage array then caches that data, and then retransmits it across either a Fibre or Escon link, over distance, to the cache in the storage array at the remote site. The remote array acknowledges the write back to the local array, and the local array then sends the I/O complete back to the host application. This is the best means of data replication for those application environments where data MUST be guaranteed to be written to the remote site. (NYSE or NASDAQ for instance.)
The problem here is that as you extend the distance, you also extend the latency of the write data. This solution is good for shorter distances. The trade-off is application performance vs. distance.
Hardware-based asynchronous: Again, all replication processes are offloaded from the host, and accomplished via the storage array itself. A data write is written into cache, and an I/O complete is immediately sent to the host application. The storage array then retransmits the data to the remote array, and sends an ACK back to the local array, where it is then written to disk at both locations. As you can see, async provides for much greater distances, and has a much lower impact on application performance. The trade-off here is that data that the application deems written to both locations may only be written to the local location, and lost via a link failure or a remote storage array failure. Therefore, there is no data guarantee to the remote location.
One way to help solve this is to timestamp and sequence ID each write into cache. On a link failure and recovery, the local array will retry the write to the remote array, and the remote array can then use the sequence ID and timestamp to guarantee write order at the remote site. Only a few vendors have the capability to do hardware based async, and very few provide sequence ID and time stamping of writes. Do your homework before making your decision.
This was first published in September 2001