# US 12,001,700 B2 · Dynamically selecting segment heights in a heterogeneous RAID group

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

- Number: US 12,001,700 B2
- Document ID: US12001700B2
- Status: Granted
- Kind: B2
- Application number: 17/205,512
- Filed: 2021-03-18
- Published: 2021-07-08
- Granted: 2024-06-04
- Earliest claimed: 2018-10-26
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Andrew R. Bernat; Radek Aster; Benjamin Scholbrock; Conner Haffner; Yunpeng Duan; John Adler; Tsu-Hao Chang
- Web page: https://patentgrep.com/patent/US12001700B2

## CPC

- G06F 3/064: {Management of blocks}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 16/907: Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system includes a solid-state storage array having a plurality of solid-state storage devices and a storage controller coupled to the solid-state storage array, the storage controller including a processing device, the processing device to select a segment height based on erase block sizes of the plurality of solid-state storage devices. The processing device is further to program a data segment using the segment height to a data stripe across two or more of the plurality of solid-state storage devices and store the segment height in metadata associated with the data segment.

## Claims

### Claim 1

A system comprising:
a plurality of solid-state storage devices, the plurality of solid-state storage devices comprise two or more solid-state storage devices having different erase block sizes; and
a storage controller coupled to the plurality of solid-state storage devices, the storage controller comprising a processing device, the processing device configured to:
select a segment height based on the different erase block sizes of the two or more of the plurality of solid-state storage devices;
write a data segment using the segment height to a data stripe across the two or more of the plurality of solid-state storage devices, the data stripe divided into multiple segments with each segment having the segment height; and
store the segment height in metadata associated with the data segment.

### Claim 2 (depends on 1)

The system of claim 1, wherein the segment height selected is based on an expected lifespan of data associated with the data segment.

### Claim 3 (depends on 1)

The system of claim 1, wherein the processing device is further configured to:
determine if the two or more of the plurality of solid-state storage devices have different erase block sizes, wherein the segment height is selected upon determining that the two or more of the plurality of storage device have different erase block sizes.

### Claim 4 (depends on 1)

The system of claim 1, wherein the processing device is further configured to:
determine a new segment height based on the erase block sizes of the two or more of the plurality of solid-state storage devices upon determining that the segment height selected exceeds a threshold value.

### Claim 5 (depends on 1)

The system of claim 1, wherein the segment height is a multiple of a smallest erase block size of the two or more the plurality of solid-state storage devices.

### Claim 6 (depends on 1)

The system of claim 1, wherein the processing device is further configured to:
select a new segment height upon determining that an erase block size of at least one of the two or more of the plurality of solid-state storage devices has changed based on a configuration change, wherein the new segment height is based on the erase block sizes of the two or more of the plurality of solid-state storage devices and the erase block size of the at least one of the two or more of the plurality of solid-state storage devices.

### Claim 7 (depends on 1)

The system of claim 1, wherein to select the segment height based on the erase block sizes associated with the plurality of solid-state storage devices, the processing device is further configured to:
determine the segment height that corresponds to a largest erase block size of the two or more of the plurality of solid-state storage devices.

### Claim 8

A method, comprising:
selecting a segment height based on erase block sizes of a plurality of solid-state storage devices, responsive to identifying the plurality of solid-state storage devices comprise two or more solid-state storage devices having different erase block sizes;
writing a data segment using the segment height to a data stripe across the two or more solid-state storage devices having different erase block sizes, the data stripe divided into multiple segments with each segment having the segment height; and
storing the segment height in metadata associated with the data segment.

### Claim 9 (depends on 8)

The method of claim 8, wherein the segment height is a multiple of a smallest erase bock size.

### Claim 10 (depends on 8)

The method of claim 8, wherein the segment height is selected is based on an expected lifespan of data associated with the data segment.

### Claim 11 (depends on 9)

The method of claim 9, further comprising:
determining a new segment height based on the erase block sizes of the plurality of solid-state storage devices upon determining that the segment height based on the multiple is greater than a threshold.

### Claim 12 (depends on 8)

The method of claim 8, further comprising:
selecting a new segment height based on the erase block sizes of the plurality of solid-state storage devices upon determining that the segment height selected exceeds a threshold value.

### Claim 13 (depends on 8)

The method of claim 8, further comprising:
selecting a new segment height upon determining that an erase block size of at least one of the plurality of solid-state storage devices has changed, wherein the new segment height is based on the erase block sizes of the plurality of solid-state storage devices and the erase block size of the at least one of the plurality of solid-state storage devices.

### Claim 14 (depends on 8)

The method of claim 8, wherein selecting the segment height based on the erase block sizes associated with the plurality of solid-state storage devices further comprises:
determining the segment height that corresponds to a largest erase block size of the plurality of solid-state storage devices.

### Claim 15

A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device to:
selecting a segment height based on erase block sizes of a plurality of solid-state storage devices, responsive to identifying the plurality of solid-state storage devices comprise two or more solid-state storage devices having different erase block sizes;
writing a data segment using the segment height to a data stripe across the two or more solid-state storage devices having different erase block sizes, the data stripe divided into multiple segments with each segment having the segment; and
storing the segment height in metadata associated with the data segment.

### Claim 16 (depends on 15)

The non-transitory computer readable storage medium of claim 15, wherein the segment height is a multiple of a smallest erase bock size.

### Claim 17 (depends on 15)

The non-transitory computer readable storage medium of claim 15, wherein the segment height is selected is based on an expected lifespan of data associated with the data segment.

### Claim 18 (depends on 16)

The non-transitory computer readable storage medium of claim 16, wherein the processing device is further to:
determine a new segment height based on the erase block sizes of the plurality of solid-state storage devices upon determining that the segment height based on the multiple is greater than a threshold.

### Claim 19 (depends on 15)

The non-transitory computer readable storage medium of claim 15, wherein the processing device is further to:
select a new segment height based on the erase block sizes of the plurality of solid-state storage devices upon determining that the segment height selected exceeds a threshold value.

### Claim 20 (depends on 15)

The non-transitory computer readable storage medium of claim 15, wherein to select the segment height based on the erase block sizes associated with the plurality of solid-state storage devices, the processing device is further to:
determine the segment height that corresponds to a largest erase block size of the plurality of solid-state storage devices.
