Patent ID: 7650475

Claim:
A storage apparatus connected to a host apparatus, comprising: a storage unit forming at least a data volume, a journal volume, a snapshot volume, and a journal backup volume therein; and a controller configured to control I/O processing with respect to the storage unit, wherein the controller generates, in response to an I/O request from the host apparatus, first journal data that includes write data for the data volume, and its serial number and time, and stores the first journal data in the journal volume, generates snapshot data for the data volume and stores the generated snapshot data in the snapshot volume; wherein, upon receiving a first restoration request designating a first restore point, the controller performs a first data restoration including storing, in a base volume, the snapshot data of a first snapshot stored in the snapshot volume, restoring the data as of the first restore point, by applying the snapshot data of the first snapshot stored in the base volume and the first journal data stored in the journal volume sequentially, the first journal data to be applied being any journal data made after the time of the first snapshot but not after said first restore point, generating snapshot data of the data restored to the state in the first restore point, and storing, in the journal backup volume, second journal data that includes the data stored in the base volume before the first snapshot data is applied in the restoration, and its serial number and time; wherein, if the controller receives, after the first data restoration, a second restoration request designating a second restore point that is between the time of the first snapshot and the first restore point, the controller restores the data as of the second restore point, by applying the snapshot data of the first snapshot stored in the base volume and the second journal data stored in the journal backup volume, the second journal data being applied sequentially from newer data in descending order of serial numbers; wherein, if the controller receives, after the first data restoration, a second restoration request designating a second restore point that is not between the time of the first snapshot and the first restore point, the controller restores the data as of the second restore point, by applying the snapshot data of the first snapshot stored in the base volume and the first journal data stored in the journal volume in a period up until the second restore point.