Handling writing new data includes creating a journal entry that points to
a first storage location containing old data to be replaced by the new
data, where the journal entry is maintained after writing the new data,
allocating new storage space having a second storage location, and
writing the new data to the new storage space at the second storage
location. The storage space may be provided by at least one storage
device. Allocating new storage space may include remapping a switch
coupled to the at least one storage device. The new data may be written
by a host coupled to the switch. The switch may present the host with a
logical storage area that is created by the switch mapping to different
locations of the at least one storage device. The mapping may be
transparent to the host. The switch may include at least one processor
and a corresponding memory. The journal entry may be part of a journal
that is stored in the memory. The storage space may correspond to a disk
array storage device. The journal entry may be stored in the disk array
storage device. The journal entry may be stored outside the disk array
storage device. Allocating new storage space may include remapping a
switch coupled to the disk array storage device and where the journal
entry is stored on the switch. Each of the journal entries also includes
a time stamp and/or a result of writing the data.