# US 11,442,645 B2 · Distributed storage system expansion mechanism

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,442,645 B2
- Document ID: US11442645B2
- Status: Granted
- Kind: B2
- Application number: 17/185,410
- Filed: 2021-02-25
- Published: 2021-06-17
- Granted: 2022-09-13
- Earliest claimed: 2018-01-31
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Robert Lee; John Martin Hayes; Faissal Sleiman
- Web page: https://patentgrep.com/patent/US11442645B2

## CPC

- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0632: {by initialisation or re-initialisation of storage systems}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0637: {Permissions}
- G06F 3/0638: {Organizing or formatting or addressing of data}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for storage cluster expansion is provided. The method includes distributing user data throughout a storage cluster as directed by each of a plurality of authorities in the storage cluster. Each of the plurality of authorities has a plurality of wards, and each of the plurality of wards has ownership of a range of the user data. The method includes splitting one of the plurality of authorities, as a parent authority, into at least two child authorities and assigning a first subset of the plurality of wards of the parent authority to one of the at least two child authorities, and a second subset of the plurality of wards of the parent authority to another one of the at least two child authorities.

## Claims

### Claim 1

A method, comprising:
distributing data throughout a storage cluster as directed by each of a plurality of data structures in the storage cluster, each of the plurality of data structures having ownership of a range of the data;
generating at least two child data structures from one of the plurality of data structures;
assigning a first subset of the plurality of data structures of a parent data structure to one of the at least two child data structures, and a second subset of the plurality of data structures of the parent data structure to another one of the at least two child data structures; and
modifying the parent data structure from read and write access to read only access, responsive to the generating, and wherein the distributing, the generating, and the assigning do not require moving the data.

### Claim 2 (depends on 1)

The method of claim 1, wherein the one of the at least two child data structures with the first subset of the plurality of data structures, remains in a same storage node as the parent data structure.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
deleting the parent data structure.

### Claim 4 (depends on 1)

The method of claim 1, wherein the generating is responsive to adding a storage node to the storage cluster.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
reprocessing metadata of the parent data structure, pertaining to one of file inodes or data ranges, into metadata for each of the at least two child data structures.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
recovering an entirety of a memory region associated with the parent data structures upon completion of the assigning.

### Claim 7

A storage cluster, comprising:
a storage cluster having storage memory;
the storage cluster configured to distribute data throughout the storage memory of the storage cluster in accordance a plurality of data structures in the storage cluster;
each of the plurality of data structures having ownership of a range of the data; and
the storage cluster configured to split one of the plurality of data structures, as a parent data structure, into at least a first child data structure and a second child data structure, the first child data structure having a first subset of the plurality of data structures, the second child data structure having a second subset of the plurality of data structures, wherein the storage cluster is further configured to modify the parent data structure from read and write access to read only access responsive to splitting the one of the plurality of data structures.

### Claim 8 (depends on 7)

The storage cluster of claim 7, further comprising:
the storage cluster configured to receive a storage node, which expands the storage cluster, wherein the split of the parent data structure is triggered by receiving the storage node.

### Claim 9 (depends on 7)

The storage cluster of claim 7, wherein the storage cluster is configured to filter through metadata of the parent data structure to find identifiers belonging to the first child data structure and reprocess the metadata of the parent data structure into metadata of the first child data structure.

### Claim 10 (depends on 7)

The storage cluster of claim 7, wherein the first child data structure is located in a storage node having the parent data structure, and the second child data structure is located in a further storage node of the storage cluster.

### Claim 11 (depends on 7)

The storage cluster of claim 7, wherein the parent data structure is deleted subsequent to modifying the parent data structure.

### Claim 12 (depends on 7)

The storage cluster of claim 7, wherein the parent data structure is split without relocating the data.

### Claim 13 (depends on 7)

The storage cluster of claim 7, wherein an entirety of a memory region associated with the parent data structure is reclaimed upon completion of splitting the one of the plurality of data structures.

### Claim 14

A storage cluster, comprising:
a storage cluster having storage memory;
the storage cluster having a plurality of data structures;
each of the plurality of data structures configured to direct distribution of data throughout the storage memory;
each of the plurality of data structures having control of a portion of the data; and
the storage cluster configured to separate one of the plurality of data structures, as a parent data structure, into at least a first child data structure having a first subset of the plurality of data structures and a second child data structure having a second subset of the plurality of data structures, wherein the storage cluster is further configured to modify the parent data structure from read and write access to read only access responsive to separating the one of the plurality of data structures.

### Claim 15 (depends on 14)

The storage cluster of claim 14, further comprising:
each of the plurality of data structures having control of one of a range of inodes or data segments of the data.

### Claim 16 (depends on 14)

The storage cluster of claim 14, further comprising deleting the parent data structure.

### Claim 17 (depends on 14)

The storage cluster of claim 14, wherein an entirety of a memory region associated with the parent data structure is reclaimed upon completion of separating the one of the plurality of data structures.

### Claim 18 (depends on 14)

The storage cluster of claim 14, wherein the separation of the one of the plurality of data structures does not require moving the data.

### Claim 19 (depends on 14)

The storage cluster of claim 14, wherein separation of the one of the plurality of data structures is responsive to expansion of the storage cluster.
