A network comprises at least one host processing system, a number of
storage controllers, each coupled to one of a plurality of storage arrays,
each storage array including at least one mass storage device. Each
storage controller may be coupled to at least one host processing system
and to at least one other storage controller to control access of the host
processing systems to the mass storage devices. Multiple copies of data
are maintained in storage arrays that are geographically remote to each
other, such that any copy can be accessed by any host. Each storage
controller includes an interface with a host that emulates a mass storage
device and an interface with a local storage array that emulates a host.
The interfaces to the host and local storage arrays are independent of the
type of host or devices in the local storage array. Two or more hosts may
be dissimilar to each other, and two or more storage arrays may include
dissimilar mass storage devices. Hosts access stored data using virtual
addressing. During a data access, the storage controller connected to the
accessing host maps a virtual address provided by the host to a real
physical location in any of the storage arrays, such that the actual
location of the data is transparent to the host. The storage controllers
provide automatic back-up and error correction as well as write protection
of back-up copies.