ACCESSING DATA IN A STORAGE SYSTEM
First Claim
1. A method for accessing data in a storage system, the method comprising:
- writing data blocks to a first set of storage locations, the first set of storage locations spanning a plurality of storage devices and the writing comprising, for each data block;
writing multiple copies of the data block to a subset of the first set of storage locations, the subset of the first set of storage locations located on at least two of the storage devices; and
recording, in a first index, an identifier of the data block and identifiers of the subset of the first set of storage locations;
recording, in a second index, identifiers of storage locations in a second set of storage locations, the second set of storage locations spanning the plurality of storage devices;
processing an update request that includes an identifier of one of the data blocks to be updated and an updated data block, the processing an update request comprising writing multiple copies of the received identifier and the updated data block to a subset of the second set of storage locations, the subset of the second set of storage locations located on at least two of the storage devices and selected based on the second index; and
processing a read request, the processing a read request comprising;
performing a quorum read of the second set of storage locations to retrieve the updated data blocks; and
performing a quorum read of the first index to determine storage locations in the first set of storage locations that contain data blocks to be read as part of processing the read request, the data blocks to be read excluding the updated data blocks.
2 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the invention relate to accessing data that spans multiple storage devices in a storage system. A first index records identifiers of data blocks and their storage locations, and a second index records storage locations. An update request is processed by writing multiple copies of a received data block identifier and the updated data block to storage locations recorded in the second index. A read request is processed by performing a quorum read of the storage locations recorded in the second index to retrieve the updated data blocks. The processing of the read request also includes performing a quorum read of the first index to determine storage locations that contain data blocks to be read as part of processing the read request. The data blocks to be read exclude the updated data blocks.
14 Citations
20 Claims
-
1. A method for accessing data in a storage system, the method comprising:
-
writing data blocks to a first set of storage locations, the first set of storage locations spanning a plurality of storage devices and the writing comprising, for each data block; writing multiple copies of the data block to a subset of the first set of storage locations, the subset of the first set of storage locations located on at least two of the storage devices; and recording, in a first index, an identifier of the data block and identifiers of the subset of the first set of storage locations; recording, in a second index, identifiers of storage locations in a second set of storage locations, the second set of storage locations spanning the plurality of storage devices; processing an update request that includes an identifier of one of the data blocks to be updated and an updated data block, the processing an update request comprising writing multiple copies of the received identifier and the updated data block to a subset of the second set of storage locations, the subset of the second set of storage locations located on at least two of the storage devices and selected based on the second index; and processing a read request, the processing a read request comprising; performing a quorum read of the second set of storage locations to retrieve the updated data blocks; and performing a quorum read of the first index to determine storage locations in the first set of storage locations that contain data blocks to be read as part of processing the read request, the data blocks to be read excluding the updated data blocks. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer program product for accessing data in a storage system, the computer program product comprising:
-
a computer readable storage medium having program code embodied therewith, the program code executable by a processor to; write data blocks to a first set of storage locations, the first set of storage locations spanning a plurality of storage devices and the writing comprising, for each data block; writing multiple copies of the data block to a subset of the first set of storage locations, the subset of the first set of storage locations located on at least two of the storage devices; and recording, in a first index, an identifier of the data block and identifiers of the subset of the first set of storage locations; record, in a second index, identifiers of storage locations in a second set of storage locations, the second set of storage locations spanning the plurality of storage devices; process an update request that includes an identifier of one of the data blocks to be updated and an updated data block, the processing an update request comprising writing multiple copies of the received identifier and the updated data block to a subset of the second set of storage locations, the subset of the second set of storage locations located on at least two of the storage devices and selected based on the second index; and process a read request, the processing a read request comprising; performing a quorum read of the second set of storage locations to retrieve the updated data blocks; and performing a quorum read of the first index to determine storage locations in the first set of storage locations that contain data blocks to be read as part of processing the read request, the data blocks to be read excluding the updated data blocks. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A storage system comprising:
-
a storage controller comprising a memory having computer readable computer instructions and a processor for executing the computer readable computer instructions, the computer readable computer instructions including; writing data blocks to a first set of storage locations, the first set of storage locations spanning a plurality of storage devices and the writing comprising, for each data block; writing multiple copies of the data block to a subset of the first set of storage locations, the subset of the first set of storage locations located on at least two of the storage devices; and recording, in a first index, an identifier of the data block and identifiers of the subset of the first set of storage locations; recording, in a second index, identifiers of storage locations in a second set of storage locations, the second set of storage locations spanning the plurality of storage devices; processing an update request that includes an identifier of one of the data blocks to be updated and an updated data block, the processing an update request comprising writing multiple copies of the received identifier and the updated data block to a subset of the second set of storage locations, the subset of the second set of storage locations located on at least two of the storage devices and selected based on the second index; and processing a read request, the processing a read request comprising; performing a quorum read of the second set of storage locations to retrieve the updated data blocks; and performing a quorum read of the first index to determine storage locations in the first set of storage locations that contain data blocks to be read as part of processing the read request, the data blocks to be read excluding the updated data blocks. - View Dependent Claims (18, 19, 20)
-
Specification