Snapshot copy facility maintaining read performance and write performance
First Claim
1. A method of creating a snapshot copy of a production dataset concurrent with read-write access to the production dataset, the snapshot copy being the state of the production dataset at a certain point in time, the method comprising:
- (a) keeping a record of blocks of the production dataset that have been modified since said point in time; and
(b) responding to a request for write access to a specified block in the production dataset by checking said record of blocks of the production dataset that have been modified since said point in time and finding that the specified block in the production dataset has not been modified since said point in time, and upon finding that the specified block in the production dataset has not been modified since said point in time, writing new data for the specified block to a non-volatile staging block and returning an acknowledgement of the write operation, and thereafter copying original data from the specified block of the production dataset to a save block, and then copying the new data for the specified block from the staging block to the production dataset.
1 Assignment
0 Petitions
Accused Products
Abstract
To make a snapshot copy of a production dataset concurrent with read/write access, a record is kept of the blocks in the production dataset that have been written to since the point-in-time of the snapshot. The first write to each data block is done as a “fast write” to a non-volatile staging block resulting in an immediate acknowledgement to the application writing to the production dataset. In background, the original contents of the block in the production dataset are copied to a save block, and then the new data is copied from the staging block to the production dataset. This method maintains read and write performance because the background copy operations need not be done on the input-output data path.
119 Citations
24 Claims
-
1. A method of creating a snapshot copy of a production dataset concurrent with read-write access to the production dataset, the snapshot copy being the state of the production dataset at a certain point in time, the method comprising:
-
(a) keeping a record of blocks of the production dataset that have been modified since said point in time; and
(b) responding to a request for write access to a specified block in the production dataset by checking said record of blocks of the production dataset that have been modified since said point in time and finding that the specified block in the production dataset has not been modified since said point in time, and upon finding that the specified block in the production dataset has not been modified since said point in time, writing new data for the specified block to a non-volatile staging block and returning an acknowledgement of the write operation, and thereafter copying original data from the specified block of the production dataset to a save block, and then copying the new data for the specified block from the staging block to the production dataset. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method of operating a server for creating a snapshot copy of a production dataset concurrent with read-write client access to the production dataset, the snapshot copy being the state of the production dataset at a certain point in time, the method comprising:
-
(a) keeping a record of blocks of the production dataset that have been modified since said point in time; and
(b) responding to a request from a client for write access to a specified block in the production dataset by checking said record of blocks of the production dataset that have been modified since said point in time and finding that the specified block in the production dataset has not been modified since said point in time, and upon finding that the specified block in the production dataset has not been modified since said point in time, allocating a block of non-volatile memory to the specified block and writing new data for the specified block from the client to the allocated block of non-volatile memory and returning an acknowledgement of completion of the write operation to the client, and thereafter a background copy process copying original data from the specified block of the production dataset to a save block allocated to the specified block and then initiating a block staging task for copying the new data for the specified block from the allocated block of non-volatile memory to the production dataset. - View Dependent Claims (14, 15, 16, 17, 18)
-
-
19. A server comprising:
-
storage for storing a production dataset; and
at least one processor for creating a snapshot copy of a production dataset concurrent with read-write client access to the production dataset, the snapshot copy being the state of the production dataset at a certain point in time;
said at least one processor being programmed for;
(a) keeping a record of blocks of the production dataset that have been modified since said point in time; and
(b) responding to a request from a client for write access to a specified block in the production dataset by checking said record of blocks of the production dataset that have been modified since said point in time and finding that the specified block in the production dataset has not been modified since said point in time, and upon finding that the specified block in the production dataset has not been modified since said point in time, allocating a block of non-volatile memory to the specified block and writing new data for the specified block from the client to the allocated block of non-volatile memory and returning an acknowledgement of completion of the write operation to the client, and thereafter a background copy process copying original data from the specified block of the production dataset to a save block allocated to the specified block and then initiating a block staging task for copying the new data for the specified block from the allocated block of non-volatile memory to the production dataset. - View Dependent Claims (20, 21, 22, 23, 24)
-
Specification