Dynamic data relocation using cloud based ranks

An example method for dynamic data relocation using cloud based ranks comprises monitoring accesses to data stored on a plurality of local ranks of an enterprise storage system; identifying data which has not been accessed for a predetermined amount of time based on the monitored accesses; and moving the data which has not been accessed for the predetermined amount of time to one or more cloud based ranks of the enterprise storage system, wherein each cloud based rank comprises storage space on one or more cloud storage devices, the storage space on the one or more cloud storage devices mapped to corresponding virtual local addresses that are grouped as a virtual local rank.

BACKGROUND

Storage networks, such as storage area networks (SANs), are used to interconnect different types of data storage systems with different types of servers (also referred to herein as “host systems”). Some servers involve various hardware such as data storage media, storage controllers, memories, and the accompanying power systems, cooling systems, etc.

Storage controllers control access to data storage media and memories in response to read and write requests. The storage controllers may direct the data in accordance with data storage devices such as RAID (redundant array of independent disks), JBOD (just a bunch of disks), and other redundancy and security levels. As an example, an IBM® ESS (Enterprise Storage Server) such as a DS8000 series has redundant clusters of computer entities, cache, non-volatile storage, etc.

SUMMARY

Aspects of the disclosure may include a computer implemented method, computer program product, computing device, and system for dynamic data relocation using cloud based ranks. An example method comprises monitoring accesses to data stored on a plurality of local ranks of an enterprise storage system; identifying data which has not been accessed for a predetermined amount of time based on the monitored accesses; and moving the data which has not been accessed for the predetermined amount of time to one or more cloud based ranks of the enterprise storage system, wherein each cloud based rank comprises storage space on one or more cloud storage devices, the storage space on the one or more cloud storage devices mapped to corresponding virtual local addresses that are grouped as a virtual local rank.

DETAILED DESCRIPTION

As used herein, the phrases “at least one”, “one or more,” and “and/or” are open-ended expressions that are both conjunctive and disjunctive in operation. For example, each of the expressions “at least one of A, B and C”, “at least one of A, B, or C”, “one or more of A, B, and C”, “one or more of A, B, or C” and “A, B, and/or C” means A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B and C together. Additionally, the term “a” or “an” entity refers to one or more of that entity. As such, the terms “a” (or “an”), “one or more” and “at least one” can be used interchangeably herein. It is also to be noted that the terms “comprising,” “including,” and “having” can be used interchangeably. The term “automatic” and variations thereof, as used herein, refers to any process or operation done without material human input when the process or operation is performed. Human input is deemed to be material if such input directs or controls how or when the process or operation is performed. A process which uses human input is still deemed automatic if the input does not direct or control how or when the process is executed.

The terms “determine”, “calculate” and “compute,” and variations thereof, as used herein, are used interchangeably and include any type of methodology, process, mathematical operation or technique. Hereinafter, “in communication” or “communicatively coupled” shall mean any electrical connection, whether wireless or wired, that allows two or more systems, components, modules, devices, etc. to exchange data, signals, or other information using any protocol or format. Furthermore, two components that are communicatively coupled need not be directly coupled to one another, but can also be coupled together via other intermediate components or devices.

FIG. 1is a high-level block diagram depicting one embodiment of an example network architecture100. The network architecture100is presented only by way of example and not limitation. Indeed, the systems and methods disclosed herein may be applicable to a wide variety of different network architectures in addition to the network architecture100shown inFIG. 1.

As shown, the network architecture100includes one or more clients or client computers102-1. . .102-N, where N is the total number of client computers, and one or more hosts106-1. . .106-M, where M is the total number of hosts (also referred to herein as “server computers”106, “host systems”106, or “host devices”106). It is to be understood that although five clients102are shown inFIG. 1, other numbers of clients102can be used in other embodiments. For example, in some embodiments only one client102is implemented. In other embodiments, more than five or fewer than 5 clients102are used. Similarly, it is to be understood that although four hosts106are shown inFIG. 1, any suitable number of hosts106can be used. For example, in some embodiments, only a single host106is used. In other embodiments, more than four or fewer than four storage hosts106can be used.

Each of the client computers102can be implemented as a desktop computer, portable computer, laptop or notebook computer, netbook, tablet computer, pocket computer, smart phone, or any other suitable type of electronic device. Similarly, each of the hosts106can be implemented using any suitable host computer or server. Such servers can include, but are not limited to, IBM System Z® and IBM System I® servers, as well as UNIX servers, Microsoft Windows servers, and Linux platforms.

The client computers102are communicatively coupled to hosts106via a network104. The network104may include, for example, a local-area-network (LAN), a wide-area-network (WAN), the Internet, an intranet, or the like. In general, the client computers102initiate communication sessions, whereas the server computers106wait for requests from the client computers102. In certain embodiments, the computers102and/or servers106may connect to one or more internal or external direct-attached storage systems112(e.g., arrays of hard-disk drives, solid-state drives, tape drives, etc.). These computers102,106and direct-attached storage systems112may communicate using protocols such as ATA, SATA, SCSI, SAS, Fibre Channel, or the like.

The network architecture100may, in certain embodiments, include a storage network108behind the servers106, such as a storage-area-network (SAN)108or a LAN108(e.g., when using network-attached storage). In the example shown inFIG. 1, the network108connects the servers106to one or more storage sub-systems110. Although only one storage sub-system110is shown for purposes of illustration, it is to be understood that more than one storage sub-system110can be used in other embodiments. The storage sub-system110manages connections to arrays of storage devices116. The arrays of storage devices116can include arrays of hard-disk drives and/or solid-state drives. In addition, in the example shown inFIG. 1, the storage sub-system110is configured to connect to and create storage arrays from cloud storage such that the cloud storage appears as a local storage array which enables advanced data management features, as described in more detail below.

In addition, in conventional systems data cold data (e.g. data which is not accessed frequently) can be placed on relatively slower storage media (e.g. spinning disks) with data accessed more frequently located on faster media (e.g. solid state disks). As the data categorized as cold data grows and ages, conventional systems leave the cold data alone until more disk space is needed and then additional storage space is added which can be an expensive and time intensive process. If the amount of cold data then subsequently decreases, there is more storage space than what is needed. By enabling the creation of cloud based ranks which appear as local ranks to the enterprise storage system, the embodiments described herein enable more efficient dynamic relocation of data, as described in more detail below. In particular, an additional category of data based on data accesses is created. This additional category is defined to include data which has not been accessed for an extended period of time. This new category of data can then be moved or relocated to the cloud based ranks, as described in more detail below. Thus, new ranks (i.e. cloud based ranks) are created as needed and can be deleted when not needed which saves space for relatively faster local ranks, while still enabling the advanced management features not typically available for remote storage.

To access a storage sub-system110, a host system106may communicate over physical connections from one or more ports on the host106to one or more ports on the storage sub-system110. A connection may be through a switch, fabric, direct connection, or the like. In certain embodiments, the servers106and storage sub-systems110may communicate using a networking standard such as Fibre Channel (FC) or iSCSI.

FIG. 2is a high-level block diagram of one embodiment of a storage system200. Storage system200includes one or more arrays of storage drives (e.g., hard-disk drives and/or solid-state drives). As shown, the storage system200includes a storage sub-system210, a plurality of switches220, and a plurality of storage drives216such as hard disk drives and/or solid-state drives (such as flash-memory-based drives). The storage sub-system210may enable one or more hosts (e.g., open system and/or mainframe servers) to access data in the plurality of storage drives216.

In some embodiments, the storage sub-system210includes one or more storage controllers222. In the example shown inFIG. 2, the storage sub-system includes storage controller222aand storage controller222b. Although only two storage controllers226are shown herein for purposes of explanation, it is to be understood that more than two storage controllers can be used in other embodiments. The storage sub-system210inFIG. 2also includes host adapters224a,224band device adapters226a,226bto connect the storage sub-system210to host devices and storage drives204, respectively. Multiple storage controllers222a,222bprovide redundancy to help ensure that data is available to connected hosts. Thus, when one storage controller (e.g. storage controller222a) fails, the other storage controller (e.g.222b) can pick up the I/O load of the failed storage controller to ensure that I/O is able to continue between the hosts and the storage drives204. This process can be referred to as a “failover.”

Each storage controller222can include respective one or more processors228and memory230. The memory230can include volatile memory (e.g., RAM) as well as non-volatile memory (e.g., ROM, EPROM, EEPROM, flash memory, etc.). The volatile and non-volatile memory can store software modules that run on the processor(s)228and are used to access data in the storage drives204. The storage controllers222can host at least one instance of these software modules. These software modules can manage all read and write requests to logical volumes in the storage drives204.

In particular, each storage controller222is communicatively coupled to the storage drives204via a respective device adapter226. Each device adapter226is configured to manage Input/Output (I/O) accesses (also referred to herein as data access requests or access requests) to the storage drives216. For example, the device adapters226logically organize the storage drives216and determine where to store data on the storage drives216. The storage drives216(also referred to as disk drive modules (DDM)) can include groups of different types of drives having different performance characteristics. For example, the storage drives216can include a combination of (relatively) slow ‘nearline’ disks (e.g. 7,200 revolutions per minute (RPM) rotational speed), SAS disk drives (e.g. 10 k or 15 k RPM) and relatively fast solid state drives (SSD).

The device adapters226are coupled to the storage drives216via switches220. Each of the switches220can be fiber switches coupling the storage drives216to the device adapters via fiber optic connections. The device adapters226logically group the storage drives216into array sites234. For purposes of illustration, a single array site234comprised of storage drives216is depicted inFIG. 2. However, it is to be understood that more than one array site comprised of storage drives216can be included in other embodiments. The array site234can be formatted as a Redundant Array of Independent Disks (RAID) array234. It is to be understood that any type of RAID array (e.g. RAID 0, RAID 5, RAID 10, etc.) can be used. Each RAID array is also referred to as a rank. Each rank is divided into a number of equally sized partitions referred to as extents. The size of each extent can vary based on the implementation. For example, the size of each extent can depend, at least in part, on the extent storage type. The extent storage type (e.g. Fixed Block (FB) or count key data (CKD)) is dependent on the type of host coupled to the storage sub-system (e.g. open-systems host or mainframe server). The extents are then grouped to make up logical volumes.

The storage sub-system210can enable various management features and functions, such as, but not limited to, full disk encryption, non-volatile storage (NVS) algorithms (e.g. thresholding, stage, destage), storage pool striping (rotate extents), dynamic volume expansion, dynamic data relocation, intelligent write caching, and adaptive multi-stream prefetching. One example of a storage system210having an architecture similar to that illustrated inFIG. 2is the IBM DS8000™ series enterprise storage system. The DS8000™ is a high-performance, high-capacity storage sub-system providing disk and solid-state storage that is designed to support continuous operations. Nevertheless, the embodiments disclosed herein are not limited to the IBM DS8000™ series enterprise storage system, but can be implemented in any comparable or analogous storage system or group of storage systems, regardless of the manufacturer, product name, or components or component names associated with the system. Thus, the IBM DS8000™ is presented only by way of example and is not intended to be limiting.

Additionally, in the embodiment shown inFIG. 2, each of the device adapters226includes a respective network port232, such as an Ethernet port, which communicatively couples the device adapter226to cloud storage devices214via a network, such as the internet. In the example shown inFIG. 2, each device adapter226further includes a respective relocation module232which is configured to allocate and group cloud storage devices214into virtual RAID arrays, such that the cloud storage devices214appear to the storage controllers2226as a local RAID array or rank. In this way, the features and functions of the storage controllers226that are available for local ranks, such as RAID array234, are also available for the cloud rank214.

As described in more detail below with respect toFIGS. 3 and 4, the relocation module232is configured to convert between storage controller commands and/or I/O accesses and cloud interface commands and/or I/O accesses. It is to be noted that although a relocation module232is included in the device adapters226in this example, the relocation module232can be included in storage controllers222in other embodiments. In particular, in some embodiments, each storage controller222includes a respective relocation module that does the conversion for commands to the respective device adapter226.

Thus, the embodiments described herein enable advantages over conventional cloud storage systems. For example, conventional cloud storage systems typically enable relatively basic functionality, such as remote archiving, backup, and retrieval. However, such conventional systems are unable to perform advanced management functions on the data stored in the cloud, such as the management functions mentioned above (e.g. NVS algorithms such as thresholding, stage, and destage). Thus, through the use of the relocation module232, discussed in more detail below, the embodiments described herein enable the performance of advanced management features on data stored on cloud storage devices which is not available for conventional cloud storage systems. In particular, through the use of the relocation module232, the storage controllers222and device adapters226are able to access and utilize the virtual RAID arrays or ranks comprised of cloud storage as if the virtual RAID arrays were local drives coupled to the device adapters226rather than as remote storage. In this way, the same management features/functionality available for local drives, such as those mentioned above, are available for the remote cloud storage without modifying the underlying code and/or hardware associated with implementing those management features.

Furthermore, by creating virtual RAID arrays that appear as local storage to the storage sub-system210, the embodiments described herein provide a solution to a problem of efficient data relocation. In particular, the relocation module232is configured to monitor data accesses to data on the plurality of storage devices of one or more RAID arrays (e.g. array234) in the storage system. Based on the monitored accesses, the relocation module232can identify a plurality of categories of data. For example, in some embodiments, the relocation module232identifies a hot data category, a cold data category and an extremely cold data category. The hot data category corresponds to data which has data accesses within a first time period. The cold data category corresponds to data which has not had a data access within the first time period, but has had a data access within a second time period that is longer or greater than the first time period. The extremely cold data category corresponds to data which not had a data access within the first or second time periods. In other words, data in the extremely cold data category has not had a data access for more than the second time period. As described in more detail below, the relocation module232is configured to move data in the extremely cold category to one or more of the cloud based ranks. Thus, the relocation module232can be configured to create the cloud based ranks if space is not available on an existing cloud based rank of the storage system200.

FIG. 3is a block diagram of one embodiment of an example computing device300which can be implemented as a device adapter, such as device adapters226or a storage controller, such as storage controllers222. For purposes of explanation, computing device300is described herein with respect to a device adapter. In the example shown inFIG. 3, the device adapter300includes a memory325, storage335, an interconnect (e.g., BUS)340, one or more processors305(also referred to as CPU305herein), an I/O device interface350, and a network adapter or port315.

Each CPU305retrieves and executes programming instructions stored in the memory325and/or storage335. The interconnect340is used to move data, such as programming instructions, between the CPU305, I/O device interface350, storage335, network adapter315, and memory325. The interconnect340can be implemented using one or more busses. The CPUs305can be a single CPU, multiple CPUs, or a single CPU having multiple processing cores in various embodiments. In some embodiments, a processor305can be a digital signal processor (DSP). Memory325is generally included to be representative of a random access memory (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), or Flash). The storage335is generally included to be representative of a non-volatile memory, such as a hard disk drive, solid state device (SSD), removable memory cards, optical storage, or flash memory devices.

In some embodiments, the memory325stores relocation instructions301and the storage335stores map table307. However, in various embodiments, the relocation instructions301and the map table307are stored partially in memory325and partially in storage335, or they are stored entirely in memory325or entirely in storage335.

When executed by the CPU305, the relocation instructions301cause the CPU305to utilize the map table307to implement the relocation module discussed above with respect toFIG. 2. It is to be noted that although the relocation instructions301and map table307are depicted as being stored in and executed/utilized by a device adapter300, in other embodiments the relocation instructions301and map table307can be stored on and executed/utilized by a storage controller such as storage controller222aand/or storage controller222bshown inFIG. 2. The relocation instructions301cause the CPU305to allocate space on cloud storage devices, such as cloud storage devices214depicted inFIG. 2. The space can be allocated statically or on demand as need arises. For example, the space can be allocated a priori or at run time. Furthermore, the cloud storage ranks can be created with different storage capacity.

The relocation instructions301further cause the CPU305to group the allocated storage into one or more virtual ranks and to store a mapping between the cloud storage devices and the one or more virtual ranks in the map table307. In particular, the relocation instructions301cause the CPU305to generate the map table307which maps the allocated storage space to corresponding virtual local addresses and groups the virtual local addresses to create one or more virtual local ranks or RAID arrays. In this way, the virtual ranks of cloud storage appear as local direct attached ranks to a storage controller communicatively coupled to the device adapter300via the I/O device interfaces350. The I/O device interfaces350also communicatively couple the device adapter300to local ranks of storage devices, such as solid state drives and nearline drives (e.g. storage drives216discussed above). For example, the I/O device interfaces350can include fiber optic ports. As used herein, a local rank is a rank or RAID array comprised of storage devices that are directly connected to the device adapter300without an intervening wide area network, such as the internet.

When an I/O access (e.g. a read or write request) is received, the relocation instructions301cause the CPU305to determine if the request is directed to data stored on a virtual rank of cloud storage. When the request is directed to data stored on a virtual rank of cloud storage, the relocation instructions301convert the I/O access (also referred to herein as a data access request or access request) for transmission to the cloud storage device via a cloud interface. For example, the relocation instructions301can convert the I/O access using commands, format, device address, etc. used by the cloud interface to access the cloud storage devices. As used herein, the terms I/O access, read/write access, and data access can be used interchangeably. Exemplary cloud interfaces can include, but are not limited to, the IBM® Cloud Manager or the Amazon® Simple Storage Service (Amazon S3) interface. Thus, as discussed above, the relocation instructions301transparently makes cloud storage available to a storage controller similar to other local storage devices.

In addition, the relocation instructions301cause the CPU305to dynamically relocate data which is not accessed frequently to improve efficiency of the storage system. In particular, the relocation instructions301cause the CPU305to dynamically relocate data to cloud based ranks that have not been accessed for more than a predetermined amount of time. For example, the relocation instructions301can be configured to cause the CPU305to perform the dynamic relocation described in more detail with respect toFIG. 4.

In addition, the relocation instructions301are configured, in some embodiments to cause the CPU305to assign a service level to the cloud based ranks. In some such embodiments, there are three levels of service. However, in other embodiments providing multiple levels of service, two or more than 3 levels of service can be provided. In this example, three levels of service are utilized and the selection of the level of service is based on the compressibility of the data being mirrored, a respective input/output data rate for the virtual local ranks, and a service level agreement. For example, if a service level agreement indicates a low quality of service, the I/O data rate for the virtual local rank is below a threshold, and the data being accessed is compressible, then a first level of service is selected. A low quality of service can be any quality of service below a pre-defined threshold level of service. The first level of service is the lowest level of service from the three options in this example. For example, it can include higher latencies and lower throughput than the other two levels of service. If the service level agreement indicates a low quality of service, the I/O data rate for the virtual local rank is below a threshold, and the data is not compressible, then the second level of service is selected. The second level of service has greater throughput and/or less latency than the first level of service. The last or third level of service is used for all other data (e.g. the SLA indicates a level of service above the pre-defined threshold and/or the I/O data rate is above a threshold). The third level of service has greater throughput and/or less latency than both the first and second levels of service.

By providing differing levels of service, the device adapter300is able to leverage the virtual ranks of cloud storage to provide greater flexibility in meeting the customer needs for data storage and access. It is to be noted that although the example first, second, and third levels are described as differing in latency and throughput, other factors can be used to differentiate the levels of service. For example, in some embodiments, the three levels of service have the same latency and throughput, but differ in cost and redundancy level.

FIG. 4is a flow chart depicting one embodiment of a method400of dynamic data relocation. The method400can be implemented by a device adapter, such as device adapters226, or a storage controller, such as storage controllers222. For example, the method400can be implemented by a CPU, such as CPU305in computing device300, executing instructions, such as relocation instructions301. It is to be understood that the order of actions in example method400is provided for purposes of explanation and that the method can be performed in a different order in other embodiments. Similarly, it is to be understood that some actions can be omitted or additional actions can be included in other embodiments.

At block402, accesses to data stored on a plurality of local ranks of an enterprise storage system is monitored. For example, device adapter and/or storage controller can be configured to count the number of accesses to data as well as track the time at which the data accesses occur. At block404, data which has not been accessed for more than a predetermined amount of time. In some embodiments, the predetermined amount of time is a specified number of weeks. In other embodiments, the predetermined amount of time is a specified number of days. In other embodiments, other amounts of time are used.

In some embodiments, the data stored on the plurality of local ranks or RAID arrays is categorized into a plurality of categories based on the monitored data accesses. For example, in some such embodiments, three categories of data are used, as discussed above. In other embodiments, 4 or more categories are used. Each of the categories can be defined by the frequency of data accesses. For example, in some embodiments, the most frequently accessed (or hot data) is data which is accessed within a first, shortest time period. Similarly, data which is not accessed within the first, shortest time period, but is accessed within a second time period longer than the first time period is categorized into a second category (e.g. cold data). Thus, differing time periods can define the different categories of data. In other embodiments, the number of accesses which occur within a given amount of time can be used to define the different categories. Regardless of the manner of defining the different categories, identifying the data which has not been accessed for the predetermined amount of time involves identifying the data which is least frequently accessed. For example, if multiple time periods are used to define a plurality of categories, the predetermined amount of time used at block404is the longest period of time.

At block406, the data which has not been accessed within the predetermined amount of time is moved to one or more cloud based ranks of the enterprise storage system. Each cloud based rank comprises storage space on one or more cloud storage devices. The storage space on the one or more cloud storage devices is mapped to corresponding virtual local addresses that are grouped as a virtual local rank, as discussed above.

Moving the data to a cloud based rank can include creating the cloud based rank. For example, in response to determining that a cloud based rank is not available that has sufficient space for the data identified at block404(e.g. the existing cloud based ranks do not have enough space or no cloud based ranks currently exist), the device adapter or storage controller can create one or more new cloud based ranks. Creating one or more new cloud based ranks includes allocating storage space on one or more corresponding cloud storage devices via a cloud interface. A cloud interface is an interface configured to enable access to the cloud storage devices. For example, the cloud interface can be implemented as an application programming interface (API). Example cloud interfaces are discussed above. Allocating the cloud storage can include requesting via the cloud interface a specified amount of storage. This storage space can be requested statically before needed or dynamically as storage space is needed. Additionally, as used herein, cloud storage devices are storage devices accessed via a wide area network, such as the internet, as opposed to a local area network or direct communication link.

Creating the new cloud based ranks further includes mapping the allocated storage space to corresponding virtual local addresses. For example, in some embodiments, the device adapter or storage controller assigns the allocated storage space to corresponding virtual local addresses. As used herein, a virtual local address is a memory address which appears as an address of a storage device coupled to the device adapter via a local connection. A local connection refers to a connection that is not over a wide area network or remote network, such as the internet.

Creating the new cloud based ranks further includes grouping the virtual local addresses as virtual local ranks. For example, the device adapter or storage controller is configured to group or arrange the virtual local addresses so that they appear to be directly connected to the device adapter as a local RAID array of storage devices.

Furthermore, in some embodiments, moving the data identified at block404includes waiting to move the data until a predetermined condition is met. For example, in some such embodiments, moving the data identified at block404includes determining the size of the data identified at block404and moving the data in response to determining that the size of the data exceeds a predetermined size threshold. For example, the size threshold can be set to 1 gigabyte, 10 gigabytes, or 100 gigabytes, etc., in some embodiments. In other embodiments, the size is determined as a function of extent sizes on the one or more local RAID arrays.

In other embodiments, the device adapter or storage controller are configured to wait to move the data identified at block404based on the amount of available space on the one or more local RAID arrays. For example, in some such embodiments, moving the data identified at block404includes determining the amount of available space remaining on the plurality of local ranks and comparing the amount of available space to a predetermined available space threshold. Once the available space on the plurality of local ranks drops below the threshold, the device adapter or storage controller directs moving the data to the cloud based ranks.

At block408, it is determined if a data access request for at least part of the data on the cloud based ranks has been received. A data access request for data on the cloud based ranks includes an access request directed to the corresponding virtual local addresses for at least part of the data moved, at block406, to the cloud based ranks. The device adapter or storage controller is configured to convert the access request to a cloud data access request configured for an application programming interface (API) corresponding to the one or more cloud storage devices of the one or more cloud based ranks.

If a data access request has not been received for at least part of the data moved to the cloud based ranks, the method400loops at block408until a data access request is received. If a data access request is received for at least part of the data moved to the cloud based ranks, then the requested data is relocated to one or more storage drives of one or more local RAID arrays, at block410.

At block412, it is determined if data still remains on the cloud based ranks. If data still remains on each of the cloud based ranks, then method400loops to block408. If data does not remain on one or more of the cloud based ranks, then the corresponding cloud based ranks which do not have any more data stored thereon are deleted at block414. Deleting the cloud based ranks includes deallocating the storage space and deleting corresponding entries in the map table. In this way, the cloud based ranks can be dynamically created and deleted as storage space is needed.

As stated above, the order of actions in example method400is provided for purposes of explanation and method400can be performed in a different order and/or some actions can be omitted or additional actions can be included in other embodiments. Similarly, it is to be understood that some actions can be omitted or additional actions can be included in other embodiments. For example, in some embodiments, blocks412and414are omitted. In such embodiments, the cloud based ranks are not deleted even if no more data remains on one or more of the cloud based ranks after relocating data to one or more of the local RAID arrays. Additionally, it is to be understood that acts do not need to be performed serially. For example, the monitoring and identifying described in blocks402and404can occur at the same time or overlap with the other acts described in method400.

EXAMPLE EMBODIMENTS

Example 1 includes a computer-implemented method for dynamic data relocation. The method comprises monitoring accesses to data stored on a plurality of local ranks of an enterprise storage system; identifying data which has not been accessed for a predetermined amount of time based on the monitored accesses; and moving the data which has not been accessed for the predetermined amount of time to one or more cloud based ranks of the enterprise storage system, wherein each cloud based rank comprises storage space on one or more cloud storage devices, the storage space on the one or more cloud storage devices mapped to corresponding virtual local addresses that are grouped as a virtual local rank.

Example 2 includes the computer-implemented method of example 1, further comprising, in response to an access request directed to the corresponding virtual local addresses for at least part of the moved data, converting the access request to a cloud data access request configured for an application programming interface (API) corresponding to the one or more cloud storage devices of the one or more cloud based ranks; and relocating the at least part of the moved data from the one or more cloud based ranks to at least one of the plurality of local ranks.

Example 3 includes the computer-implemented method of example 2, further comprising determining that all of the moved data has been relocated to at least one of the plurality of local ranks; and deleting the one or more cloud based ranks.

Example 4 includes the computer-implemented method of any of examples 1-3, wherein the predetermined amount of time comprises one of a predetermined number of weeks or a predetermined number of days.

Example 5 includes the computer-implemented method of any of examples 1-4, wherein moving the data comprises, in response to determining that a cloud based rank having sufficient storage space is not available, creating one or more new cloud based ranks. Creating each of the one or more new 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.

Example 6 includes the computer-implemented method of any of examples 1-5, wherein moving the data comprises moving the data which has not been accessed for the predetermined amount of time to the one or more cloud based ranks in response to determining that the size of the data which has not been accessed for the predetermined amount of time exceeds a predetermined size threshold.

Example 7 includes the computer-implemented method of any of examples 1-5, wherein moving the data comprises moving the data which has not been accessed for the predetermined amount of time to the one or more cloud based ranks in response to determining that available space on the plurality of local ranks is less than a predetermined available space threshold.

Example 8 includes a storage system. The storage system comprises 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. 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. One of the device adapter and the storage controller is further configured implement a data relocation module. The data relocation module is configured to monitor accesses to data stored on a plurality of local redundant array of independent disks (RAID) arrays of an enterprise storage system; identify data which has not been accessed for a predetermined amount of time based on the monitored accesses; and move the data which has not been accessed for the predetermined amount of time to one or more cloud based RAID arrays of the enterprise storage system, wherein each cloud based RAID array comprises storage space on one or more cloud storage devices, the storage space on the one or more cloud storage devices mapped to corresponding virtual local addresses that are grouped as a virtual local RAID array.

Example 9 includes the storage system of example 8, wherein the relocation module is further configured to, in response to an access request directed to the corresponding virtual local addresses for at least part of the moved data, relocate the at least part of the moved data from the one or more cloud based ranks to at least one of the plurality of local ranks.

Example 10 includes the storage system of example 9, wherein the relocation module is further configured to delete the one or more cloud based ranks in response to determining that all of the moved data has been relocated to at least one of the plurality of local ranks.

Example 11 includes the storage system of any of examples 8-10, wherein the relocation module is configured to move the data by creating one or more new cloud based ranks in response to determining that a cloud based rank having sufficient storage space is not available. The relocation module is configured to create each of the one or more new cloud based ranks by 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.

Example 12 includes the storage system of any of examples 8-11, wherein the relocation module is configured to move the data which has not been accessed for the predetermined amount of time to the one or more cloud based ranks in response to determining that the size of the data which has not been accessed for the predetermined amount of time exceeds a predetermined size threshold.

Example 13 includes the storage system of any of examples 8-12, wherein the relocation module is configured to move the data which has not been accessed for the predetermined amount of time to the one or more cloud based ranks in response to determining that available space on the plurality of local ranks is less than a predetermined available space threshold.

Example 14 includes a computer program product comprising a computer readable storage medium having a computer readable program stored therein. The computer readable program, when executed by a processor, causes the processor to monitor accesses to data stored on a plurality of local redundant array of independent disks (RAID) arrays of an enterprise storage system; identify data which has not been accessed for a predetermined amount of time based on the monitored accesses; and move the data which has not been accessed for the predetermined amount of time to one or more cloud based RAID arrays of the enterprise storage system, wherein each cloud based RAID array comprises storage space on one or more cloud storage devices, the storage space on the one or more cloud storage devices mapped to corresponding virtual local addresses that are grouped as a virtual local RAID array.

Example 15 includes the computer program product of example 14, wherein the computer readable program is further configured to cause the processor to, in response to an access request directed to the corresponding virtual local addresses for at least part of the moved data, convert the access request to a cloud data access request configured for an application programming interface (API) corresponding to the one or more cloud storage devices of the one or more cloud based ranks; and relocate the at least part of the moved data from the one or more cloud based ranks to at least one of the plurality of local ranks.

Example 16 includes the computer program product of example 15, wherein the computer readable program is further configured to cause the processor to delete the one or more cloud based ranks in response to determining that all of the moved data has been relocated to at least one of the plurality of local ranks.

Example 17 includes the computer program product of any of examples 14-16, wherein the computer readable program is further configured to cause the processor to move the data by creating one or more new cloud based ranks in response to determining that a cloud based rank having sufficient storage space is not available. The relocation module is configured to create each of the one or more new cloud based ranks by 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.

Example 18 includes the computer program product of any of examples 14-17, wherein the computer readable program is further configured to cause the processor to move the data which has not been accessed for the predetermined amount of time to the one or more cloud based ranks in response to determining that the size of the data which has not been accessed for the predetermined amount of time exceeds a predetermined size threshold.

Example 19 includes the computer program product of any of examples 14-18, wherein the computer readable program is further configured to cause the processor to move the data which has not been accessed for the predetermined amount of time to the one or more cloud based ranks in response to determining that available space on the plurality of local ranks is less than a predetermined available space threshold.

Example 20 includes a computing device. The computing device comprises 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. The processor is configured to monitor accesses to data stored on a plurality of local ranks of an enterprise storage system; identify data which has not been accessed for a predetermined amount of time based on the monitored accesses; and move the data which has not been accessed for the predetermined amount of time to one or more cloud based ranks of the enterprise storage system, wherein each cloud based rank comprises storage space on one or more cloud storage devices, the storage space on the one or more cloud storage devices mapped to corresponding virtual local addresses that are grouped as a virtual local rank.

Example 21 includes the computing device of example 20, wherein the processor is further configured to, in response to an access request directed to the corresponding virtual local addresses for at least part of the moved data, convert the access request to a cloud data access request configured for an application programming interface (API) corresponding to the one or more cloud storage devices of the one or more cloud based ranks; and relocate the at least part of the moved data from the one or more cloud based ranks to at least one of the plurality of local ranks.

Example 22 includes the computing device of example 21, wherein the processor is further configured to delete the one or more cloud based ranks in response to determining that all of the moved data has been relocated to at least one of the plurality of local ranks.

Example 23 includes the computing device of any of examples 20-22, wherein the processor is further configured to move the data by creating one or more new cloud based ranks in response to determining that a cloud based rank having sufficient storage space is not available. The processor is configured to create each of the one or more new cloud based ranks by allocating storage space on one or more corresponding cloud storage devices via an application programming interface (API) associated with the corresponding one or more cloud storage devices; and generating a map table which maps the allocated storage space to corresponding virtual local addresses and groups the virtual local addresses as a corresponding virtual local rank.

Example 24 includes the computing device of any of examples 20-23, wherein the processor is further configured to move the data which has not been accessed for the predetermined amount of time to the one or more cloud based ranks in response to determining that the size of the data which has not been accessed for the predetermined amount of time exceeds a predetermined size threshold.

Example 25 includes the computing device of any of examples 20-24, wherein the processor is further configured to move the data which has not been accessed for the predetermined amount of time to the one or more cloud based ranks in response to determining that available space on the plurality of local ranks is less than a predetermined available space threshold.