Re: Montgomery Scott
I've worked with long distance replication back in my consulting days, the way it works is that if you store a piece of data it is stored in the local array (more likely in its cache at first) and sent to the remote array, when it stores it in its cache it reports back to the local array and THEN the local array reports to the OS that the data is stored. But there are tricks.
You might think "but wait, 1200 km adds a lot of latency". Well that's nothing compared to the latency hard drives used to have. It is tricky for longer distances because if you have e.g. a database that has to write stuff in order and be sure that the last write completed before doing the next one it affects performance. Which is why databases used to be really slow if running on local hard disk drives, and people would spend a lot of money for arrays with big NVRAM caches on them. But there are tricks you can use via hooks inside the database, which get trickier and trickier the longer the distance. So yes they've supported it at 600 km, but it isn't something that will work for EVERYTHING - not unless you take that round trip latency hit.
EMC supports this type of synchronous behavior, but also supports asynchronous. When using the latter you it reports the data written when it hits the local array so you don't take the latency hit. The array handles shifting the data over to the other array and making sure it is consistent (i.e. the same order it was written locally so your database works etc.) So if a disaster wipes out your local array the remote array has a consistent copy but slightly out of date. For most cases that's good enough, and there are facilities in place to write something "synchronously" which waits for the remote array to get it, which you can use for e.g. critical financial transactions, without forcing that level of synchronization for writes where that doesn't matter.