Method, system, apparatus, and computer-readable medium for improving disk array performance
First Claim
1. A method for writing metadata to a mass storage array comprising a plurality of mass storage devices, the array being divided into stripes having at least one block written to each of the mass storage devices, the method comprising:
- maintaining metadata relating to the array in a structure on the array;
detecting a change to existing metadata stored in the structure;
reading a parity block from a stripe of the array where changed metadata is to be stored in the structure;
calculating a new parity for the stripe using only the existing metadata, the changed metadata, and the parity read from the array;
storing the changed metadata in the structure on the array; and
storing the new parity in the structure on the array.
3 Assignments
0 Petitions
Accused Products
Abstract
A method, system, apparatus, and computer-readable medium are provided for improved maintenance of metadata relating to a mass storage array. The metadata may comprise the data structures utilized by a thin provisioning system. When the metadata changes, such as in response to the modification of the underlying data, changed metadata is created in the memory. A parity block is then read from the row of the array where the changed metadata is to be stored. A new parity is calculated for the row using only the old metadata, the changed metadata, and the parity read from the stripe. The old metadata need not be read from disk expressly, as is usually done. Instead, the value that is present in memory before the metadata change is utilized directly to calculate the new parity. The changed metadata and the new parity are then written to the array.
-
Citations
19 Claims
-
1. A method for writing metadata to a mass storage array comprising a plurality of mass storage devices, the array being divided into stripes having at least one block written to each of the mass storage devices, the method comprising:
-
maintaining metadata relating to the array in a structure on the array; detecting a change to existing metadata stored in the structure; reading a parity block from a stripe of the array where changed metadata is to be stored in the structure; calculating a new parity for the stripe using only the existing metadata, the changed metadata, and the parity read from the array; storing the changed metadata in the structure on the array; and storing the new parity in the structure on the array. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for writing metadata relating to a mass storage array to a data structure on the mass storage array, comprising:
-
a plurality of mass storage devices; a storage controller having a management layer, the management layer creating the mass storage array from the plurality of mass storage devices; and a kernel module having a thin provisioning client that allocates physical capacity on the mass storage devices on an as-needed basis, wherein the mass storage array is divided into stripes having at least one block written to each of the mass storage devices, wherein the thin provisioning client maintains the metadata in the data structure on the array, and wherein when a change to the existing metadata stored in the structure is detected, a parity block is read from a stripe of the array where changed metadata is to be stored, and a parity for the stripe is calculated using only the existing metadata, the changed metadata, and the parity read from the array, and the changed metadata and new parity is stored in the structure on the array. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A tangible computer readable medium comprising computer executable instructions for writing metadata to a mass storage array comprising a plurality of mass storage devices, the array being divided into stripes having at least one block written to each of the mass storage devices, the instructions when executed by a computing device causing the computing device to perform the method, comprising:
-
maintaining metadata relating to the array in a structure on the array; detecting a change to existing metadata stored in the structure; reading a parity block from a stripe of the array where changed metadata is to be stored in the structure; calculating a new parity for the stripe using only the existing metadata, the changed metadata, and the parity read from the array; storing the changed metadata in the structure on the array; and storing the new parity in the structure on the array. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
Specification