# US 11,907,585 B2 · Storing data sequentially in zones in a dispersed storage network

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

- Number: US 11,907,585 B2
- Document ID: US11907585B2
- Status: Granted
- Kind: B2
- Application number: 17/989,943
- Filed: 2022-11-18
- Published: 2023-03-16
- Granted: 2024-02-20
- Earliest claimed: 2017-02-28
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Andrew D. Baptist; Manish Motwani; Praveen Viraraghavan; Ilya Volvovski
- Web page: https://patentgrep.com/patent/US11907585B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/064: {Management of blocks}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for execution by a storage unit in a dispersed storage network (DSN) includes selecting a storage zone of a memory device of the storage unit based on zone allocation parameters, and designating the selected storage zone as open for writes. A data slice is received via a network for storage. The data slice is written sequentially at a memory location of the one of storage zone based on determining that the storage zone is designated as open for writes. A pointer corresponding to the data slice that indicates the storage zone and the memory location is generated. A read request is received via the network from a requesting entity that indicates the data slice. The data slice is retrieved from the memory device based on the pointer, and is transmitted to the requesting entity.

## Claims

### Claim 1

A method for execution by a storage unit of a dispersed storage network (DSN) that includes a processor, the method comprising:
determining zone allocation parameters;
selecting a first one of a plurality of storage zones of a memory device of the storage unit to be open for writes based on the zone allocation parameters;
selecting a second one of the plurality of storage zones of the memory device of the storage unit to be closed for the writes based on the zone allocation parameters;
designating the first one of the plurality of storage zones as open for the writes in response to selecting the first one of the plurality of storage zones to be open for the writes;
designating the second one of the plurality of storage zones as closed for the writes in response to selecting the second one of the plurality of storage zones to be closed for the writes;
receiving, via a network, a first data slice for storage; and
creating a vault within the DSN and establishing dispersed storage error encoding parameters for the vault.

### Claim 2 (depends on 1)

The method of claim 1, further comprising writing the first data slice sequentially at a memory location of the first one of the plurality of storage zones based on a small computer system interface protocol.

### Claim 3 (depends on 1)

The method of claim 1, further comprising writing the first data slice sequentially at a memory location of the first one of the plurality of storage zones based on an append point; and updating the append point, after the first data slice is written, based on a length of the first data slice.

### Claim 4 (depends on 1)

The method of claim 1, wherein exactly one storage zone is selected and designated as open for the writes based on the zone allocation parameters, wherein the exactly one storage zone is the first one of the plurality of storage zones, and wherein the method further comprises:
designating all remaining storage zones of the plurality of storage zones that are not the exactly one storage zone as closed for the writes.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
selecting a subset of storage zones from the plurality of storage zones based on the zone allocation parameters, wherein a size of the subset of storage zones is selected based on the zone allocation parameters, and wherein the subset of storage zones includes the first one of the plurality of storage zones;
designating the subset of storage zones as open for the writes; and
designating all storage zones in the plurality of storage zones that are not included in the subset of storage zones as closed for the writes.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
determining a zone reallocation requirement at a time after the first data slice is written;
selecting a second one of the plurality of storage zones that is designated as closed for the writes based on the zone reallocation requirement;
designating the second one of the plurality of storage zones as open for the writes;
receiving, via the network, a second data slice for storage; and
writing the second data slice sequentially at a memory location of the second one of the plurality of storage zones based on determining that the second one of the plurality of storage zones is designated as open for the writes.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving, via the network, a second read request that indicates a second data slice;
determining that the second data slice is stored in a volatile memory of the storage unit; and
retrieving the second data slice from the volatile memory for transmission to a requesting entity via the network.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
receiving, via the network, a plurality of data slice write requests, wherein the plurality of data slice write requests includes a plurality of data slices;
storing the plurality of data slices in a cache of the storage unit; and
flushing the cache in response to a determining a cache flush requirement by generating a data object that includes the plurality of data slices, by writing the data object sequentially to the to the first one of the plurality of storage zones in response to determining the first one of the plurality of storage zones is designated as open for the writes, and by removing the plurality of data slices from the cache.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
designating a subset of the plurality of storage zones that does not include the first one of the plurality of storage zones as closed for the writes;
receiving, via the network, a plurality of data slice write requests, wherein the plurality of data slice write requests includes a plurality of data slices;
storing the plurality of data slices in a cache of the storage unit by assigning each of the plurality of data slices to one of a plurality of queues in the cache, wherein each one of the plurality of queues corresponds to a storage zone in the subset of the plurality of storage zones designated as closed for the writes;
determining a zone reallocation requirement after the plurality of data slices are stored in the cache;
selecting a second one of the plurality of storage zones based on the zone reallocation requirement, wherein the second one of the plurality of storage zones is included in the subset;
designating the second one of the plurality of storage zones as open for the writes; and
flushing a first one of the plurality of queues that corresponds to the second one of the plurality of storage zones from the cache by writing the plurality of data slices in the first one of the plurality of queues sequentially to the second one of the plurality of storage zones in response to determining the second one of the plurality of storage zones is designated as open for the writes, and by deleting the first one of the plurality of queues from the cache.

### Claim 10 (depends on 9)

The method of claim 9, wherein the zone reallocation requirement is based on a capacity of the cache exceeding a cache capacity requirement.

### Claim 11 (depends on 9)

The method of claim 9, wherein the second one of the plurality of storage zones is selected based on a queue priority ranking corresponding to the plurality of queues, and wherein the second one of the plurality of storage zones corresponds to a highest priority ranking of the queue priority ranking.

### Claim 12 (depends on 11)

The method of claim 11, wherein the queue priority ranking is based on a data dependency requirement, wherein the second one of the plurality of storage zones is assigned the highest priority ranking in response to determining that a second data slice in the second one of the plurality of storage zones must be written before a third data slice in a third one of the plurality of storage zones according to the data dependency requirement, and wherein the vault is a virtual memory block associated with a portion of an overall namespace of the DSN.

### Claim 13

A processing system of a storage unit in a dispersed storage network (DSN) comprises:
at least one processor;
a memory that stores operational instructions, that when executed by the at least one processor cause the processing system to:
determine zone allocation parameters;
select a first one of a plurality of storage zones of a memory device of the storage unit to be open for writes based on the zone allocation parameters;
select a second one of the plurality of storage zones of the memory device of the storage unit to be closed for the writes based on the zone allocation parameters;
designate the first one of the plurality of storage zones as open for the writes in response to selecting the first one of the plurality of storage zones to be open for the writes;
designate the second one of the plurality of storage zones as closed for the writes in response to selecting the second one of the plurality of storage zones to be closed for the writes;
receive, via a network, a first data slice for storage; and
create a vault within the DSN and establish dispersed storage error encoding parameters for the vault.

### Claim 14 (depends on 13)

The processing system of claim 13, wherein the operational instructions, when executed by the at least one processor, further cause the processing system to write the first data slice sequentially at a memory location of the first one of the plurality of storage zones based on a small computer system interface protocol.

### Claim 15 (depends on 13)

The processing system of claim 13, wherein the operational instructions, when executed by the at least one processor, further cause the processing system to write the first data slice sequentially at a memory location of the first one of the plurality of storage zones based on an append point, and updating the append point, after the first data slice is written, based on a length of the first data slice.

### Claim 16 (depends on 13)

The processing system of claim 13, wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:
determine a zone reallocation requirement at a time after the first data slice is written;
select a second one of the plurality of storage zones that is designated as closed for the writes based on the zone reallocation requirement;
designate the second one of the plurality of storage zones as open for the writes;
receive, via the network, a second data slice for storage; and
write the second data slice sequentially at a memory location of the second one of the plurality of storage zones based on determining that the second one of the plurality of storage zones is designated as open for the writes.

### Claim 17 (depends on 13)

The processing system of claim 13, wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:
receive, via the network, a second read request that indicates a second data slice;
determine that the second data slice is stored in a volatile memory of the storage unit; and
retrieve the second data slice from the volatile memory for transmission to a requesting entity via the network.

### Claim 18 (depends on 13)

The processing system of claim 13, wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:
receive, via the network, a plurality of data slice write requests, wherein the plurality of data slice write requests include a plurality of data slices;
store the plurality of data slices in a cache of the storage unit; and
flush the cache in response to a determining a cache flush requirement by generating a data object that includes the plurality of data slices, by writing the data object sequentially to the to the first one of the plurality of storage zones in response to determining the first one of the plurality of storage zones is designated as open for the writes, and by removing the plurality of data slices from the cache.

### Claim 19 (depends on 13)

The processing system of claim 13, wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:
designate a subset of the plurality of storage zones that does not include the first one of the plurality of storage zones as closed for the writes;
receive, via the network, a plurality of data slice write requests, wherein the plurality of data slice write requests includes a plurality of data slices;
store the plurality of data slices in a cache of the storage unit by assigning each of the plurality of data slices to one of a plurality of queues in the cache, wherein each one of the plurality of queues corresponds to a storage zone in the subset of the plurality of storage zones designated as closed for the writes;
determine a zone reallocation requirement after the plurality of data slices are stored in the cache;
select a second one of the plurality of storage zones based on the zone reallocation requirement, wherein the second one of the plurality of storage zones is included in the subset;
designate the second one of the plurality of storage zones as open for the writes; and
flush a first one of the plurality of queues that corresponds to the second one of the plurality of storage zones from the cache by writing the plurality of data slices in the first one of the plurality of queues sequentially to the second one of the plurality of storage zones in response to determining the second one of the plurality of storage zones is designated as open for the writes, and by deleting the first one of the plurality of queues from the cache.

### Claim 20

A non-transitory computer readable storage medium comprises:
at least one memory section that stores operational instructions that, when executed by a processing system of a dispersed storage network (DSN) that includes a processor and a memory, causes the processing system to:
determine zone allocation parameters;
select a first one of a plurality of storage zones of a memory device of the storage unit to be open for writes based on the zone allocation parameters;
select a second one of the plurality of storage zones of the memory device of the storage unit to be closed for the writes based on the zone allocation parameters;
designate the first one of the plurality of storage zones as open for the writes in response to selecting the first one of the plurality of storage zones to be open for the writes;
designate the second one of the plurality of storage zones as closed for the writes in response to selecting the second one of the plurality of storage zones to be closed for the writes;
receive, via a network, a first data slice for storage; and
create a vault comprising a virtual memory block associated with a portion of an overall namespace of the DSN.
