DISTRIBUTED MAINTENANCE OF SNAPSHOT COPIES BY A PRIMARY PROCESSOR MANAGING METADATA AND A SECONDARY PROCESSOR PROVIDING READ-WRITE ACCESS TO A PRODUCTION DATASET
First Claim
1. A method of operating a primary data processor and a secondary data processor for access to a production dataset in data storage while maintaining a snapshot copy of the production dataset, comprising:
- the primary data processor pre-allocating blocks of the data storage for use as new storage blocks in the production dataset when data blocks in the production dataset are first written to after creation of the snapshot copy of the production dataset;
the secondary data processor responding to a request from an application for a first write to a data block of the production dataset after creation of the snapshot copy of the production dataset by writing to one of the pre-allocated blocks of the data storage and sending a request to the primary data processor to commit said one of the pre-allocated blocks of the data storage to the production dataset; and
the primary data processor responding to the request from the secondary data processor to commit said one of the pre-allocated blocks of the data storage to the production dataset by committing said one of the pre-allocated blocks of the data storage to the production dataset.
9 Assignments
0 Petitions
Accused Products
Abstract
A primary processor manages metadata of a production dataset and a snapshot copy, while a secondary processor provides concurrent read-write access to the primary dataset. The secondary processor determines when a first write is being made to a data block of the production dataset, and in this case sends a metadata change request to the primary data processor. The primary data processor commits the metadata change to the production dataset and maintains the snapshot copy while the secondary data processor continues to service other read-write requests. The secondary processor logs metadata changes so that the secondary processor may return a “write completed” message before the primary processor commits the metadata change. The primary data processor pre-allocates data storage blocks in such a way that the “write anywhere” method does not result in a gradual degradation in I/O performance.
164 Citations
20 Claims
-
1. A method of operating a primary data processor and a secondary data processor for access to a production dataset in data storage while maintaining a snapshot copy of the production dataset, comprising:
-
the primary data processor pre-allocating blocks of the data storage for use as new storage blocks in the production dataset when data blocks in the production dataset are first written to after creation of the snapshot copy of the production dataset;
the secondary data processor responding to a request from an application for a first write to a data block of the production dataset after creation of the snapshot copy of the production dataset by writing to one of the pre-allocated blocks of the data storage and sending a request to the primary data processor to commit said one of the pre-allocated blocks of the data storage to the production dataset; and
the primary data processor responding to the request from the secondary data processor to commit said one of the pre-allocated blocks of the data storage to the production dataset by committing said one of the pre-allocated blocks of the data storage to the production dataset. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of operating a primary data processor and a secondary data processor for access to a production file in data storage while maintaining a snapshot copy of the production file, comprising:
-
the secondary data processor maintaining a local cache of production file mapping information and a local write map of pre-allocated blocks of the data storage, wherein the local cache of production file mapping information includes storage addresses for at least some of the data blocks of the production file and block state information indicating whether each of said at least some of the data blocks of the production file has been written to after creation of the snapshot copy of the production file;
the secondary data processor responding to a request from an application for writing to a specified data block of the production file by accessing the local cache of production file mapping information to determine that the specified data block of the production file has not yet been written to after creation of the snapshot copy of the production file, and upon determining that the specified data block of the production file has not yet been written to after creation of the snapshot copy of the production file, writing to one of the pre-allocated blocks of the data storage and sending a request to the primary data processor to commit said one of the pre-allocated blocks of the data storage to the production file; and
the primary data processor maintaining block mapping information of blocks of the data storage in the snapshot copy of the production file, and the primary data processor responding to the request from the secondary data processor to commit said one of the pre-allocated blocks of the data storage to the production file by committing said one of the pre-allocated blocks of the data storage to the production file. - View Dependent Claims (11, 12, 13)
-
-
14. A data processing system comprising:
-
a primary data processor programmed for maintaining metadata of a production file and metadata of a snapshot copy of the production file; and
a secondary data processor being coupled to the primary data processor for sending metadata changes to the primary data processor, and being programmed for storing data of the production file and data of the snapshot copy of the production file in data storage;
wherein the secondary data processor is programmed for maintaining a local cache of production file mapping information and a local write map of pre-allocated blocks of the data storage, wherein the local cache of production file mapping information includes storage addresses for at least some of the data blocks of the production file and block state information indicating whether each of said at least some of the data blocks of the production file has been written to after creation of the snapshot copy of the production file;
wherein the secondary data processor is programmed for responding to a request from an application for writing to a specified data block of the production file by accessing the local cache of production file mapping information to determine that the specified data block of the production file has not yet been written to after creation of the snapshot copy of the production file, and upon determining that the specified data block of the production file has not yet been written to after creation of the snapshot copy of the production file, writing to one of the pre-allocated blocks of the data storage and sending a request to the primary data processor to commit said one of the pre-allocated blocks of the data storage to the production file; and
wherein the primary data processor is programmed for maintaining block mapping information of blocks of the data storage in the snapshot copy of the production file, and for responding to the request from the secondary data processor to commit said one of the pre-allocated blocks of the data storage to the production file by committing said one of the pre-allocated blocks of the data storage to the production file. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification