Storage scheme for a distributed storage system
First Claim
1. A storage system comprising:
- a storage node comprising a storage device, one or more processing devices, and one or more memory devices operably coupled to the one or more processing devices, the one or more memory devices storing executable code effective to cause the one or more processing devices to—
define a segment map having a plurality of segment entries, each segment entry corresponding to a segment of a plurality of segments available for storage on the storage device; and
process a plurality of write requests, each write request referencing a storage volume and including write data and a write address;
wherein the executable code is further effective to cause the one or more processing devices to process each write request of the plurality of write requests by—
if an entry in the segment map references the storage volume and corresponds to a segment having sufficient space for the write data of the each write request, writing the write data of the each write request to the segment;
if no entry in the segment map both references the storage volume and corresponds to a segment having sufficient space for the write data of the each write request, (a) selecting an unassigned segment from the plurality of segments, (b) adding a reference to the storage volume referenced by the each write request to a segment entry of the segment map corresponding to the unassigned segment of the plurality of segments, and (c) writing the write data of the each write request to the assigned segment.
2 Assignments
0 Petitions
Accused Products
Abstract
A storage scheme allocates portions of a logical volume to storage nodes in excess of the capacity of the storage nodes. Slices of the storage nodes and segments of slices are allocated in response to write requests such that actual allocation on the storage nodes is only in response to usage. Segments are identified with virtual segment identifiers that are retained when segments are moved to a different storage node. Logical volumes may therefore be moved seamlessly to different storage nodes to ensure sufficient storage capacity. Data is written to new locations in segments having space and a block map tracks the last segment to which data for a given address is written. Garbage collection is performed to free segments that contain invalid data, i.e. data for addresses that have been subsequently written to.
-
Citations
20 Claims
-
1. A storage system comprising:
-
a storage node comprising a storage device, one or more processing devices, and one or more memory devices operably coupled to the one or more processing devices, the one or more memory devices storing executable code effective to cause the one or more processing devices to— define a segment map having a plurality of segment entries, each segment entry corresponding to a segment of a plurality of segments available for storage on the storage device; and process a plurality of write requests, each write request referencing a storage volume and including write data and a write address; wherein the executable code is further effective to cause the one or more processing devices to process each write request of the plurality of write requests by— if an entry in the segment map references the storage volume and corresponds to a segment having sufficient space for the write data of the each write request, writing the write data of the each write request to the segment; if no entry in the segment map both references the storage volume and corresponds to a segment having sufficient space for the write data of the each write request, (a) selecting an unassigned segment from the plurality of segments, (b) adding a reference to the storage volume referenced by the each write request to a segment entry of the segment map corresponding to the unassigned segment of the plurality of segments, and (c) writing the write data of the each write request to the assigned segment. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method comprising:
-
defining, by a storage node comprising one or more processing devices and a storage device, a segment map having a plurality of segment entries, each segment entry corresponding to a segment of a plurality of segments available for storage on the storage device; and processing a plurality of write requests, each write request referencing a storage volume and including write data and a write address; determining, by the storage node, that, for a first write request of the plurality of write requests, that (a) an entry in the segment map references the storage volume of the first write request and corresponds to a first segment having sufficient space for the write data of the first write request; in response to determining (a), writing, by the storage node, the write data of the first write request to the first segment; determining, by the storage node, that, for a second write request of the plurality of write request, that (b) no entry in the segment map both references the storage volume of the second write request and corresponds to any segment having sufficient space for the write data of the second write request; in response to determining (b)— (i) selecting an unassigned segment from the plurality of segments; (ii) adding a reference to the storage volume of the second write request to a segment entry of the segment map corresponding to the unassigned segment of the plurality of segments; and (iii) writing the write data of the second write request to the assigned segment. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification