Patent ID: 7657721

Claim:
A method for maintaining a plurality of snapshots of an operational volume in a server apparatus, said operational volume having a plurality of blocks each for allowing a block of data to be read/written therein, respective ones of said snapshots representing volume images of said operational volume taken at different points-in-time, said server apparatus including at least one CPU, a memory, at least one network interface, and at least one storage interface, at least one disk apparatus being connected to said storage interface, the method comprising: providing a plurality of virtual volumes in association with respective ones of said snapshots, for allowing at least one user to read/write a desired snapshot from among said snapshots from/to a block in said plurality of virtual volumes; forming a difference volume for storing therein a copy of a block of data stored in a block of said operational volume; generating a first table accessible from said plurality of virtual volumes, said first table storing in first entries thereof, in association with each of said virtual volumes, first information indicating if a copy of a block of data in a block of said operational volume is present in said difference volume or not, said first information including either an address value of the block storing therein said desired snapshot of said plurality of snapshots in said difference volume or information indicating that said block of data is in said block of said operational volume and not present in said difference volume, said first table further storing in a second entry thereof a value of a CoW bit indicating whether update has been conducted or not for each of said virtual volumes that are associated with respective ones of said snap shots, in association with each of said blocks in said operational volume; and copying CoW (copy-on-write) bit values provided in said second entry associated with a first virtual volume onto CoW bit values associated with a second virtual volume and also copying said first information associated with said first virtual volume onto first information associated with said second virtual volume.