Patent ID: 7953948

Claim:
A method for data protection comprising: (a) mounting a virtual storage that combines a full access temporary storage and a READ-only portion of a volume of a main storage, wherein the READ-only portion represents a protected area of the volume with useful data and the temporary storage represents a free space of the volume; (b) generating a bitmap for blocks of the virtual storage with all blocks initially unmarked; (c) redirecting virtual storage write requests to the temporary storage, wherein (1) if a data block must be written to initially occupied space of the volume of the main storage, then this data block is written to free space of the temporary storage; (2) if a data block must be written to an initially free space of the volume of the main storage, which is allocated to the temporary storage, and the initially free space is not occupied by the another data block of the temporary storage, then this data block is written to the free space, but this data block still belongs to the temporary storage; (3) if a data block must be written to the initially free space of the volume of the main storage, which is allocated to the temporary storage, and the initially free space is occupied by the another data block, which was written to the temporary storage, then this data block is written to other free space of the temporary storage; (d) marking, in the bitmap, blocks of the virtual storage corresponding to blocks of the temporary storage that are being written to; (e) redirecting, to the READ-only portion, read requests for unmarked blocks; (f) redirecting, to the temporary storage, read requests for marked blocks; (g) upon an acceptance, by a user, of a state of the virtual storage, merging the temporary storage with unmarked blocks of the READ-only portion to form an integral storage that contains all the useful data, wherein (1) for the data blocks of (c)(1), moving the data blocks to the READ-only portion, to replace unmarked corresponding blocks in the READ-only portion; (2) for the data blocks of (c)(2), leaving the data blocks in place; (3) for the data blocks of (c)(3), first moving the data blocks that prevented writing the original block to the intended located in the temporary storage, and then moving the data blocks of (c)(3) to the location that was originally intended for these blocks; and (h) upon a rejection, by the user, of a state of the virtual storage, terminating the redirecting.