EXTENT-BASED STORAGE ARCHITECTURE
First Claim
1. A computerized method comprising:
- receiving, by a storage server from a client, a read request for an extent, wherein the extent includes a group of contiguous blocks of data and the read request includes a file block number (FBN);
retrieving, by the storage server, a first extent identifier from a first sorted data structure, wherein the storage server uses the received FBN to traverse the first sorted data structure to the first extent identifier; and
retrieving, by the storage server, a first reference to the first extent from a second sorted data structure, wherein the storage server uses the retrieved first extent identifier to traverse the second sorted data structure to the first reference, and wherein the second sorted data structure is global across a plurality of volumes;
retrieving, by the storage server from a storage device, the extent using the first reference; and
returning, by the storage server, the extent to the client.
1 Assignment
0 Petitions
Accused Products
Abstract
An extent-based storage architecture is implemented by a storage server receiving a read request for an extent from a client, wherein the extent includes a group of contiguous blocks and the read request includes a file block number. The storage server retrieves an extent identifier from a first sorted data structure, wherein the storage server uses the received file block number to traverse the first sorted data structure to the extent identifier. The storage server retrieves a reference to the extent from a second sorted data structure, wherein the storage server uses the retrieved extent identifier to traverse the second sorted data structure to the reference, and wherein the second sorted data structure is global across a plurality of volumes. The storage server retrieves the extent from a storage device using the reference and returns the extent to the client.
54 Citations
28 Claims
-
1. A computerized method comprising:
-
receiving, by a storage server from a client, a read request for an extent, wherein the extent includes a group of contiguous blocks of data and the read request includes a file block number (FBN); retrieving, by the storage server, a first extent identifier from a first sorted data structure, wherein the storage server uses the received FBN to traverse the first sorted data structure to the first extent identifier; and retrieving, by the storage server, a first reference to the first extent from a second sorted data structure, wherein the storage server uses the retrieved first extent identifier to traverse the second sorted data structure to the first reference, and wherein the second sorted data structure is global across a plurality of volumes; retrieving, by the storage server from a storage device, the extent using the first reference; and returning, by the storage server, the extent to the client. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A storage server comprising:
-
a memory; a processor coupled to the memory through a bus, wherein the processor executes instructions that cause the processor to receive a read request from a client for an extent, wherein the extent includes a group of contiguous blocks of data and the read request includes a file block number (FBN); retrieve a extent identifier from a first sorted data structure, wherein the storage server uses the received FBN to traverse the first data structure to the first extent identifier; retrieve a first reference to the extent from a second sorted data structure, wherein the storage server uses the retrieved first extent identifier to traverse the second data structure to the first reference, and wherein the second sorted data structure is global across a plurality of volumes; retrieve the extent from a storage device using the first reference; and return the extent to the client. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computerized method comprising:
-
receiving, by a storage server from a client, a write request for a first extent including a group of contiguous blocks of data and a file block number (FBN); writing, by the storage sever, a first entry in a first sorted data structure, the first entry including a first extent identifier and a first reference to the first extent in the storage device, wherein the first extent identifier is used to determine a location the first entry in the first sorted data structure; and writing, by the storage sever, a second entry in a second sorted data structure, the second entry including the FBN and the first extent identifier, wherein the FBN is used to determine a location the second entry in the second sorted data structure, and wherein the second sorted data structure is global across a plurality of volumes. - View Dependent Claims (16, 17, 18, 19)
-
-
20. A storage server comprising:
-
a memory; a processor coupled to the memory through a bus, wherein the processor executes instructions that cause the processor to receive a write request for a first extent including a group of contiguous blocks of data and a file block number (FBN) from a client, write a first entry in a first sorted data structure, the first entry including a first extent identifier and a first reference to the first extent in the storage device, wherein the first extent identifier is used to determine a location the first entry in the first sorted data structure, and write a second entry in a second sorted data structure, the second entry including the FBN and the first extent identifier, wherein the FBN is used to determine a location the second entry in the second sorted data structure, and wherein the second sorted data structure is global across a plurality of volumes. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A computerized method comprising:
storing data, by a storage server, using an extent-based architecture mapping entries in a volume layer to entries in an aggregate layer, wherein the volume layer comprises a plurality of indirect volumes including an entry for each extent, and wherein the aggregate layer comprises an extent-to-physical block map that shares data blocks within the extents across boundaries of the plurality of indirect volumes. - View Dependent Claims (26, 27, 28)
Specification