Storage scheme for a distributed storage system
First Claim
1. A method comprising:
- assigning, by a storage manager computer system, at least a portion of a storage volume to a first storage node computer system;
receiving, by the first storage node computer system, write requests for the at least the portion of the storage volume;
allocating, by the first storage node computer system, a first segment of a plurality of segments on a first storage device of the first storage node computer system only in response to the write requests; and
writing, by the first storage node computer system, data from the write requests to the one or more segments, reassigning, by the storage manager computer system, the at least the portion of the storage volume to a second storage node computer system;
transferring, by the first storage node computer system, data from the first segment to the second storage node computer system;
allocating, by the second storage node computer system, a second segment of a second storage device of the second storage node computer system to the at least the portion of the storage volume; and
writing, by the second storage node computer system, the data from the first segment to the second segment;
wherein allocating the first segment of the first storage device further comprises mapping, by the first storage node computing device, the first segment to a virtual segment identifier; and
2 wherein allocating the second segment further comprises mapping, by the second storage node computing device, the second segment to the same virtual segment identifier.
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
18 Claims
-
1. A method comprising:
- assigning, by a storage manager computer system, at least a portion of a storage volume to a first storage node computer system;
receiving, by the first storage node computer system, write requests for the at least the portion of the storage volume;
allocating, by the first storage node computer system, a first segment of a plurality of segments on a first storage device of the first storage node computer system only in response to the write requests; and
writing, by the first storage node computer system, data from the write requests to the one or more segments, reassigning, by the storage manager computer system, the at least the portion of the storage volume to a second storage node computer system;
transferring, by the first storage node computer system, data from the first segment to the second storage node computer system;
allocating, by the second storage node computer system, a second segment of a second storage device of the second storage node computer system to the at least the portion of the storage volume; and
writing, by the second storage node computer system, the data from the first segment to the second segment;
wherein allocating the first segment of the first storage device further comprises mapping, by the first storage node computing device, the first segment to a virtual segment identifier; and
2 wherein allocating the second segment further comprises mapping, by the second storage node computing device, the second segment to the same virtual segment identifier. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
- assigning, by a storage manager computer system, at least a portion of a storage volume to a first storage node computer system;
-
11. A system comprising:
-
a storage manager computer system comprising one or more manager processing devices and one or more manager memory devices, the one or more manager memory devices storing manager executable code effective to cause the one or more manager processing devices to assign at least a portion of a storage volume to a first storage node computer system; a first storage node computer system comprising one or more first processing devices and one or more first memory devices, the one or more first memory devices storing first executable code effective to cause the one or more first processing devices to; receive write requests for the at least the portion of the storage volume; allocate a first segment of a plurality of segments on a first storage device of the first storage node computer system only in response to the write requests; and write data from the write requests to the one or more segments; wherein the manager executable code is further effective to cause the one or more manager processing devices to transmit an instruction to the first storage node computer system, to reassign the at least the portion of the storage volume to a second storage node computer system; wherein the first executable code is further effective to cause the one or more first processing devices to, in response to the instruction, transfer data from the first segment to the second storage node computer system; wherein the second storage node computer system comprises one or more second processing devices and one or more second memory devices, the one or more second memory devices storing second executable code effective to cause the one or more second processing devices to; allocate a second segment of a second storage device of the second storage node computer system to the at least the portion of the storage volume; and write the data from the first segment to the second segment; wherein the first executable code is further effective to cause the one or more first processing devices to allocate the first segment of the first storage device by mapping the first segment to a virtual segment identifier; and wherein the second executable code is further effective to cause the one or more second processing devices to allocate the second segment of the second storage device by mapping the second segment to the same virtual segment identifier. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
Specification