# US 10,372,363 B2 · Thin provisioning using cloud based ranks

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

- Number: US 10,372,363 B2
- Document ID: US10372363B2
- Status: Granted
- Kind: B2
- Application number: 15/704,712
- Filed: 2017-09-14
- Published: 2019-03-14
- Granted: 2019-08-06
- Earliest claimed: 2017-09-14
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Lokesh Gupta; Matthew G. Borlick
- Web page: https://patentgrep.com/patent/US10372363B2

## CPC

- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A computer-implemented method for thin provisioning using cloud based ranks comprises determining a total amount of unused physical storage space for all of a plurality of local ranks associated with a storage controller; comparing the total amount of unused physical storage space to a first threshold; in response to determining that the total amount of unused physical storage space is less than the first threshold, creating one or more cloud based ranks. Creating each of the one or more cloud based ranks comprises allocating storage space on one or more corresponding cloud storage devices via a cloud interface; mapping the allocated storage space to corresponding virtual local addresses; and grouping the virtual local addresses as a virtual local rank associated with the storage controller.

## Claims

### Claim 1

A computer-implemented method comprising:
determining a total amount of unused physical storage space for all of a plurality of local ranks associated with a storage controller;
comparing the total amount of unused physical storage space to a first threshold;
in response to determining that the total amount of unused physical storage space is less than the first threshold, creating one or more cloud based ranks;
wherein creating each of the one or more cloud based ranks comprises:
allocating storage space on one or more corresponding cloud storage devices via a cloud interface;
mapping the allocated storage space to corresponding virtual local addresses; and
grouping the virtual local addresses as a virtual local rank associated with the storage controller;
wherein the method further comprises:
determining a total amount of used storage space for the plurality of local ranks and the one or more cloud based ranks;
determining a difference between a total amount of storage space for the plurality of local ranks and the determined total amount of used storage space; and
in response to determining that the difference is greater than a second threshold, moving data from the one or more cloud based ranks to the plurality of local ranks.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising storing, on the one or more cloud based ranks, new data written after creating the one or more cloud based ranks.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, further comprising:
moving, to the one or more cloud based ranks, data stored on the plurality of local ranks prior to creating the one or more cloud based ranks; and
storing new data written after creating the one or more cloud based ranks on the plurality of local ranks.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising:
converting local data access requests for one of the cloud based ranks to cloud data access requests configured for the cloud interface; and
communicating the cloud data access requests to the one or more corresponding cloud storage devices via the cloud interface.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein the first threshold is different from the second threshold.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, further comprising removing the one or more cloud based ranks after moving all of the data from the one or more cloud based ranks to the plurality of local ranks.

### Claim 7

A storage system comprising:
a host adapter having one or more ports configured to communicatively couple the host adapter to one or more host devices;
a storage controller comprising a processor and a memory, the storage controller communicatively coupled to the host adapter; and
a device adapter comprising a processor and a memory, the device adapter communicatively coupled to the storage controller;
wherein the device adapter further comprises a plurality of ports communicatively coupled to a plurality of local storage drives and at least one network port communicatively coupled to a plurality of cloud storage devices via a network;
wherein one of the device adapter or the storage controller is further configured to implement a cloud provisioning module configured to:
create one or more cloud based ranks in response to a determination that a total amount of unused physical storage space on the plurality of local storage drives is less than a first predetermined threshold;
wherein, to create each of the one or more cloud based ranks, the cloud provisioning module is configured to:
allocate storage space on one or more corresponding cloud storage devices via a cloud interface;
assign the allocated storage space to corresponding virtual local addresses; and
organize the assigned virtual local addresses into a corresponding virtual local RAID array associated with the storage controller such that the allocated storage space on the one or more corresponding cloud storage devices appears to the storage controller as a local array of storage devices; and
wherein the cloud provisioning module is further configured to:
determine a total amount of used storage space for the plurality of local storage drives and the one or more cloud based ranks;
determine a difference between a total amount of storage space for the plurality of local storage drives and the determined total amount of used storage space; and
in response to determining that the difference is greater than a second predetermined threshold, move data from the one or more cloud based ranks to the plurality of local storage drives.

### Claim 8 (depends on 7)

The system of claim 7, wherein the cloud provisioning module is further configured to store, on the one or more cloud based ranks, new data written after creating the one or more cloud based ranks.

### Claim 9 (depends on 7)

The system of claim 7, wherein the cloud provisioning module is further configured to:
move, to the one or more cloud based ranks, data stored on the plurality of local storage drives prior to creating the one or more cloud based ranks; and
store new data written after creating the one or more cloud based ranks on the plurality of local storage drives.

### Claim 10 (depends on 7)

The system of claim 7, wherein the cloud provisioning module is further configured to:
convert local data access requests for one of the cloud based ranks to cloud data access requests configured for the cloud interface; and
communicate the cloud data access requests to the one or more corresponding cloud storage devices via the cloud interface.

### Claim 11 (depends on 7)

The system of claim 7, wherein the first predetermined threshold is different from the second predetermined threshold.

### Claim 12 (depends on 7)

The system of claim 7, wherein the cloud provisioning module is further configured to remove the one or more cloud based ranks after moving all of the data from the one or more cloud based ranks to the plurality of local storage drives.

### Claim 13

A computer program product comprising a computer readable storage medium having a computer readable program stored therein, wherein the computer readable program, when executed by a processor, causes the processor to:
determine a total amount of unused physical storage space for all of a plurality of local redundant array of independent disks (RAID) arrays associated with a storage controller;
compare the total amount of unused physical storage space to a first predetermined threshold;
in response to determining that the total amount of unused physical storage space is less than the first predetermined threshold, create one or more cloud based ranks;
wherein to create each of the one or more cloud based ranks, the computer readable program is configured to cause the processor to:
allocate storage space on one or more corresponding cloud storage devices via a cloud interface;
assign the allocated storage space to corresponding virtual local addresses; and
organize the assigned virtual local addresses into a corresponding virtual local RAID array associated with the storage controller such that the allocated storage space on the one or more corresponding cloud storage devices appears to the storage controller as a local array of storage devices;
wherein the computer readable program is further configured to cause the processor to:
determine a total amount of used storage space for the plurality of local RAID arrays and the one or more cloud based ranks;
determine a difference between a total amount of storage space for the plurality of local RAID arrays and the determined total amount of used storage space; and
in response to determining that the difference is greater than a second predetermined threshold, move data from the one or more cloud based ranks to the plurality of local RAID arrays.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the computer readable program is further configured to cause the processor to store, on the one or more cloud based ranks, new data written after creating the one or more cloud based ranks.

### Claim 15 (depends on 13)

The computer program product of claim 13, wherein the computer readable program is further configured to cause the processor to:
move, to the one or more cloud based ranks, data stored on the plurality of local RAID arrays prior to creating the one or more cloud based ranks; and
store new data written after creating the one or more cloud based ranks on the plurality of local RAID arrays.

### Claim 16 (depends on 13)

The computer program product of claim 13, wherein the computer readable program is further configured to cause the processor to remove the one or more cloud based ranks after moving all of the data from the one or more cloud based ranks to the plurality of local RAID arrays.

### Claim 17 (depends on 13)

The computer program product of claim 13, wherein the computer readable program is further configured to cause the processor to convert local data access requests for the one or more virtual local RAID arrays to cloud data access requests according to requirements of an application programming interface (API) of the cloud interface.

### Claim 18 (depends on 13)

The computer program product of claim 13, wherein the computer readable program is further configured:
convert local data access requests for one of the cloud based ranks to cloud data access requests configured for the cloud interface; and
communicate the cloud data access requests to the one or more corresponding cloud storage devices via the cloud interface.

### Claim 19

A computing device comprising:
a network adapter configured to communicatively couple the computing device to one or more cloud storage devices via a network;
a storage medium configured to store data; and
a processor communicatively coupled to the network adapter and to the storage medium, wherein the processor is configured to:
determine a total amount of unused physical storage space for all of a plurality of local ranks;
compare the total amount of unused physical storage space to a first threshold; and
create one or more cloud based ranks in response to determining that the total amount of unused physical storage space is less than the first threshold;
wherein to create each of the one or more cloud based ranks, the processor is configured to:
allocate storage space on one or more cloud storage devices via an application programming interface (API) associated with the one or more cloud storage devices; and
generate a map table which maps the allocated storage space to corresponding virtual local addresses and groups the virtual local addresses to form a corresponding virtual local rank from the allocated storage space on the one or more cloud storage devices, the map table stored on the storage medium;
wherein the processor is further configured to:
determine a subsequent total amount of unused storage space for the plurality of local ranks after creating the one or more cloud based ranks;
determine a difference between the subsequent total amount of unused storage space and a total amount of used storage space on the one or more cloud based ranks; and
in response to determining that the difference is greater than a second threshold, move data from the one or more cloud based ranks to the plurality of local ranks.

### Claim 20 (depends on 19)

The computing device of claim 19, wherein the processor is further configured to:
move, to the one or more cloud based ranks, data stored on the plurality of local ranks prior to creating the one or more cloud based ranks; and
storing new data written after creating the one or more cloud based ranks on the plurality of local ranks.

### Claim 21 (depends on 19)

The computing device of claim 19, wherein the first threshold is different from the second threshold.

### Claim 22 (depends on 19)

The computing device of claim 19, wherein the processor is further configured to remove the one or more cloud based ranks after moving all of the data from the one or more cloud based ranks to the plurality of local ranks.

### Claim 23 (depends on 19)

The computing device of claim 19, wherein the processor is further configured to store, on the one or more cloud based ranks, new data written after creating the one or more cloud based ranks.
