# US 2020/0401327 A1 · Dynamic Allocation Of Storage From A Shared Storage Pool Across Different Redundancy Levels

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

- Number: US 2020/0401327 A1
- Document ID: US20200401327A1
- Status: Published application
- Kind: A1
- Application number: 16/445,152
- Filed: 2019-06-18
- Published: 2020-12-24
- Earliest claimed: 2019-06-18
- Assignees: Intelliflash By Ddn, Inc.
- Applicants: Intelliflash by DDN, Inc.
- Inventors: Nabakishore Munda; Shailendra Tripathi
- Web page: https://patentgrep.com/patent/US20200401327A1

## CPC

- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- G06F 3/0683: {Plurality of storage devices}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods are described for dynamically allocating digital data storage from a shared storage pool across multiple different redundancy configurations. Respective slabs of storage from a first set and from a second set of storage devices of a data storage system are allocated to a first virtual device having a first redundancy level and to a second virtual device having a second different redundancy level, where at least one of the slabs corresponding to each respective virtual device is from the same device. In response to write requests corresponding to the virtual devices, such as from a different application corresponding to each respective virtual device, data blocks from each respective slabs can be dynamically allocated to fulfill the requests. As such, redundancy/fault tolerant policies can effectively be set as a configurable property relative to each application that utilizes the data storage system.

## Claims

### Claim 1

A method of allocating digital storage space from a shared storage pool comprising physical storage from a plurality of data storage devices of a data storage system, the method comprising:
allocating a first one or more slabs of storage from a first set of the plurality of data storage devices to a first virtual device having a first redundancy level; and
allocating a second one or more slabs of storage from a second set of the plurality of data storage devices to a second virtual device having a second redundancy level, wherein:
at least one of the first slabs and at least one of the second slabs is from a same data storage device, and
the second redundancy level is different from the first redundancy level;
in response to freeing of a set of blocks from the first one or more slabs corresponding to the first virtual device, returning to the storage pool the set of blocks;
allocating a third one or more slabs of storage from a third set of the plurality of data storage devices to a third virtual device having a third redundancy level different from the first redundancy level, wherein the third one or more slabs includes the set of blocks; and
in response to a write request corresponding to the third virtual device, allocating the set of blocks from the third one or more slabs to fulfill the write request corresponding to the third virtual device.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
in response to a write request corresponding to the first virtual device, allocating a plurality of blocks from the first one or more slabs to fulfill the write request corresponding to the first virtual device; and
in response to a write request corresponding to the second virtual device, allocating a plurality of blocks from the second one or more slabs to fulfill the write request corresponding to the second virtual device.

### Claim 3 (depends on 2)

The method of claim 2, wherein:
the first virtual device is associated with a first application operating as a client of the data storage system; and
the second virtual device is associated with a second different application operating as a client of the data storage system.

### Claim 4

(canceled)

### Claim 5 (depends on 1)

The method of claim 1, wherein allocating the first one or more slabs comprises:
determining a number of the one or more slabs to meet a corresponding allocation request; and
determining a minimum number of the first set of the plurality of data storage devices to meet the first redundancy level.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
increasing performance corresponding to the first virtual device by allocating one or more slabs of storage from an adjusted first set of the plurality of data storage devices to the first virtual device, wherein the adjusted first set comprises more data storage devices than the first set.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
maintaining, in at least one of the plurality of data storage devices not included in the first and second sets of data storage devices, a mapping of the respective plurality of blocks allocated from the first one or more slabs and from the second one or more slabs and to which of the first and second virtual devices each of the first and second slabs corresponds.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
maintaining, in at least one of the plurality of data storage devices not included in the first and second sets of data storage devices, a mapping of from which of the plurality of data storage devices each of the first and second slabs is allocated.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
creating a respective volume or filesystem corresponding to each of the first and second virtual devices.

### Claim 10

A data storage system comprising:
a plurality of data storage devices; and
a system controller circuitry comprising memory and one or more processors and embodying one or more sequences of instructions which, when executed by the one or more processors, cause performance of:
allocating a first one or more slabs of storage from a first set of the plurality of data storage devices to a first virtual device having a first redundancy level; and
allocating a second one or more slabs of storage from a second set of the plurality of data storage devices to a second virtual device having a second redundancy level, wherein:
at least one of the first slabs and at least one of the second slabs is from a same data storage device, and
the second redundancy level is different from the first redundancy level;
in response to freeing of a set of blocks from the first one or more slabs corresponding to the first virtual device, returning to the storage pool the set of blocks;
allocating a third one or more slabs of storage from a third set of the plurality of data storage devices to a third virtual device having a third redundancy level different from the first redundancy level, wherein the third one or more slabs includes the set of blocks; and
in response to a write request corresponding to the third virtual device, allocating the set of blocks from the third one or more slabs to fulfill the write request corresponding to the third virtual device.

### Claim 11 (depends on 10)

The data storage system of claim 10, wherein the one or more sequences of instructions, when executed, cause further performance of:
in response to a write request corresponding to the first virtual device, allocating a plurality of blocks from the first one or more slabs to fulfill the write request corresponding to the first virtual device; and
in response to a write request corresponding to the second virtual device, allocating a plurality of blocks from the second one or more slabs to fulfill the write request corresponding to the second virtual device.

### Claim 12 (depends on 11)

The data storage system of claim 11, wherein:
the first virtual device is associated with a first application operating as a client of the data storage system; and
the second virtual device is associated with a second different application operating as a client of the data storage system.

### Claim 13

(canceled)

### Claim 14 (depends on 10)

The data storage system of claim 10, wherein the one or more sequences of instructions, when executed, cause further performance of:
determining a number of the one or more slabs to meet a corresponding allocation request; and
determining a minimum number of the first set of the plurality of data storage devices to meet the first redundancy level.

### Claim 15 (depends on 10)

The data storage system of claim 10, wherein the one or more sequences of instructions, when executed, cause further performance of:
increasing performance corresponding to the first virtual device by allocating one or more slabs of storage from an adjusted first set of the plurality of data storage devices to the first virtual device, wherein the adjusted first set comprises more data storage devices than the first set.

### Claim 16 (depends on 10)

The data storage system of claim 10, wherein the one or more sequences of instructions, when executed, cause further performance of:
maintaining, in at least one of the plurality of data storage devices not included in the first and second sets of data storage devices, a mapping of the respective plurality of blocks allocated from the first one or more slabs and from the second one or more slabs and to which of the first and second virtual devices each of the first and second slabs corresponds.

### Claim 17 (depends on 10)

The data storage system of claim 10, wherein the one or more sequences of instructions, when executed, cause further performance of:
maintaining, in at least one of the plurality of data storage devices not included in the first and second sets of data storage devices, a mapping of from which of the plurality of data storage devices each of the first and second slabs is allocated.

### Claim 18 (depends on 10)

The data storage system of claim 10, wherein the one or more sequences of instructions, when executed, cause further performance of:
creating a respective volume or filesystem corresponding to each of the first and second virtual devices.

### Claim 19

A data storage system comprising:
means for allocating a first one or more slabs of storage from a first set of the plurality of data storage devices to a first virtual device having a first redundancy level; and
means for allocating a second one or more slabs of storage from a second set of the plurality of data storage devices to a second virtual device having a second redundancy level, wherein:
at least one of the first slabs and at least one of the second slabs is from a same data storage device, and
the second redundancy level is different from the first redundancy level.

### Claim 20 (depends on 19)

The data storage system of claim 19, further comprising:
means for allocating, in response to a write request corresponding to the first virtual device, a plurality of blocks from the first one or more slabs to fulfill the write request corresponding to the first virtual device; and
means for allocating, in response to a write request corresponding to the second virtual device, a plurality of blocks from the second one or more slabs to fulfill the write request corresponding to the second virtual device.
