Patent ID: 6948089

Claim:
A method, comprising: mirroring data from a primary storage device at a first location to a secondary storage device at a second location; taking a snapshot of the primary storage device and of the secondary storage device; storing the primary storage device snapshot on a first snapshot volume at the first location; storing the secondary storage device snapshot on a second snapshot volume at the second location; updating a data structure to record backup times for the first and second snapshots and to record locations of the snapshots on the snapshot volumes; repeating the mirroring, taking, storing the primary storage device snapshot, storing the secondary storage device snapshot, and updating so as to store multiple generations of snapshots; selecting a snapshot to use to restore data to the primary storage device; determining if the selected snapshot is stored at the first location; if the selected snapshot is stored at the first location, restoring data to the primary storage device using the selected snapshot generation at the first location; if the selected snapshot is not stored at the first location, synchronizing the secondary storage device with the selected snapshot generation at the second location and then restoring data to the primary storage device using data from the synchronized secondary storage device; wherein the selecting selects a snapshot based on a user preference.