Maintaining hole boundary information for restoring snapshots from parity
First Claim
1. A computer-implemented method, comprising:
- receiving a request to write to a first block of a stripe of data stored across different physical storage devices;
determining a block attribute of a second block in the stripe of data, wherein the block attribute of the second block indicates whether the second block includes written data or is a hole;
calculating a block attribute parity value based upon both a block attribute of the first block and the block attribute of the second block, wherein the block attribute of the first block indicates the first block includes data written based upon the request;
calculating a data parity value for blocks within the stripe based upon contents of the first block and contents of the second block;
storing the block attribute parity value and the data parity value on one of the physical storage devices in response to the request; and
in response to determining that a storage device storing the second block cannot be reached, recovering the second block by calculating the block attribute value of the second block using the block attribute of the first block and the block attribute parity value.
2 Assignments
0 Petitions
Accused Products
Abstract
Exemplary methods, apparatuses, and systems maintain hole boundary information by calculating a block attribute parity value. For example, a request is received to write to a first block of a stripe of data. A block attribute of a second block is determined. The block attribute of the second block indicates whether the second block includes written data or is a hole. A block attribute parity value is calculated based upon both the block attribute of the first block and the block attribute of the second block. The block attribute of the first block indicates the first block includes written data based upon the received request. The block attribute parity value and the data parity value are stored on one of the physical storage devices in response to the received write request. As a result, if a disk is lost, holes can be recovered using the block attribute parity value.
17 Citations
17 Claims
-
1. A computer-implemented method, comprising:
-
receiving a request to write to a first block of a stripe of data stored across different physical storage devices; determining a block attribute of a second block in the stripe of data, wherein the block attribute of the second block indicates whether the second block includes written data or is a hole; calculating a block attribute parity value based upon both a block attribute of the first block and the block attribute of the second block, wherein the block attribute of the first block indicates the first block includes data written based upon the request; calculating a data parity value for blocks within the stripe based upon contents of the first block and contents of the second block; storing the block attribute parity value and the data parity value on one of the physical storage devices in response to the request; and in response to determining that a storage device storing the second block cannot be reached, recovering the second block by calculating the block attribute value of the second block using the block attribute of the first block and the block attribute parity value. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A non-transitory computer-readable medium storing instructions, which when executed by a processing device, cause the processing device to perform a method comprising:
-
receiving a request to write to a first block of a stripe of data stored across different physical storage devices; determining a block attribute of a second block in the stripe of data, wherein the block attribute of the second block indicates whether the second block includes written data or is a hole; calculating a block attribute parity value based upon both a block attribute of the first block and the block attribute of the second block, wherein the block attribute of the first block indicates the first block includes data written based upon the request; calculating a data parity value for blocks within the stripe based upon contents of the first block and contents of the second block; storing the block attribute parity value and the data parity value on one of the physical storage devices in response to the request; and in response to determining that a storage device storing the second block cannot be reached, recovering the second block by calculating the block attribute value of the second block using the block attribute of the first block and the block attribute parity value. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. An apparatus comprising:
-
a processing device; and a memory coupled to the processing device, the memory storing instructions which, when executed by the processing device, cause the apparatus to; receive a request to write to a first block of a stripe of data stored across different physical storage devices; determine a block attribute of a second block in the stripe of data, wherein the block attribute of the second block indicates whether the second block includes written data or is a hole; calculate a block attribute parity value based upon both a block attribute of the first block and the block attribute of the second block, wherein the block attribute of the first block indicates the first block includes data written based upon the request; calculate a data parity value for blocks within the stripe based upon contents of the first block and contents of the second block; store the block attribute parity value and the data parity value on one of the physical storage devices in response to the request; and in response to determining that a storage device storing the second block cannot be reached, recover the second block by calculating the block attribute value of the second block using the block attribute of the first block and the block attribute parity value. - View Dependent Claims (14, 15, 16, 17)
-
Specification