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 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.
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.
105 Citations
15 Claims
-
1. 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 (2, 3, 4, 5, 6, 7)
-
-
8. 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 (9, 10, 11, 12, 13, 14)
-
-
15. 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; 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; the secondary data processor is programmed for sending to the primary data processor a request for mapping information needed for reading from a specified block offset range of the production file, and the primary data processor is programmed for responding to the request for mapping information needed for reading from the specified block offset range of the production file by returning to the secondary data processor mapping information for the specified block offset range of the production file, the mapping information for the specified block offset range of the production file including storage addresses for the data blocks in the specified block offset range of the production file and block state information indicating whether each of the data blocks in the specified block offset range of the production file has been written to after creation of the snapshot copy of the production file; the secondary data processor is programmed for sending to the primary data processor a request for mapping information needed for writing to a specified block offset range of the production file, and the primary data processor is programmed for responding to the request for mapping information needed for writing to the specified block offset range of the production file by returning to the secondary data processor mapping information for file blocks that have been written to in the specified offset range of the production file after creation of the snapshot copy of the production file, and by returning to the secondary data processor mapping information for pre-allocated blocks of storage for receiving new data for file blocks that have not yet been written to in the specified offset range of the production file after creation of the snapshot copy of the production file; and the primary data processor is programmed for maintaining a local map of pre-allocated blocks of the data storage, and for searching the local map of pre-allocated blocks of the data storage for finding the mapping information for pre-allocated blocks of storage for receiving new data for file blocks that have not yet been written to in the specified offset range of the production file after creation of the snapshot copy of the production file.
-
Specification