GLOBAL SNAPSHOT UTILIZATION

A method for remote snapshot restoration is provided. The method may include receiving a snapshot restore request; determining if the received snapshot restore request satisfies a three-way connection requirement by determining if the received snapshot restore request satisfies host-device-device connection information, wherein the host-device-device connection information comprises host information, source storage device information, destination storage device information, application-volume path information, and volume-volume path information; and for the received snapshot restore requesting satisfying the three-way connection requirement, performing snapshot restoration and data copying.

BACKGROUND

Field

The present disclosure is generally directed to a method and a system for remote snapshot restoration.

Related Art

Snapshot utilization is a process that allows an application operator to restore an old volume data from snapshot and use the restored volume data.FIG.1illustrates an example conventional storage system. Storage devices contain volumes and associated snapshots. As illustrated inFIG.1, storage device10contains volume V1 and a snapshot V1_01 associated with V1. A snapshot V1_01 is an old version of volume V1 data, with V1_01 created at a timestamp prior to V1's creation. As illustrated inFIG.1, snapshot utilization enables application operators to restore the old data as a new volume V1′ from snapshot V1_01.

Snapshot utilization is useful to recover data from data corruption in case of application software bug, malware infection, fraud operations, etc. An application operator can select a snapshot which was created before data corruption occurred, restore the snapshot as a new volume, reconfigure application to use the new volume, and restart application to recover from data corruption.

The snapshot technology allows snapshot creation and restoration only on the same device. As illustrated inFIG.1, volume V1 and snapshot V1_01 are inside the same storage device10. Snapshot utilization is also limited to the same device10, therefore restored data V1′ can only be created in the same device10. Thus, rendering data restoration of data in a different storage device, such as storage device20, impossible.

In the current storage systems, storage devices have different performance profiles and different costs depending on their locations. For example, storage device10may be a high-performance and high-cost model located inside an on-premise data center. On the other hand, storage device20may be a low-performance and low-cost model located inside a public cloud.

In spite of the feasibility of current snapshot technology, it is desirable to restore snapshot data in storage device/location that is different from a location of original volume and snapshot. The choice of a low-cost storage device for performance of snapshot restoration can lower the total cost for applications. In addition, it would be useful to meet an application operator's needs for application testing or data analysis using prior data versions.

In the related art, a method for volume migration across storage device using multipath software is disclosed. During the migration process of a volume, volume data is scattered in both of the source volume and the destination volume. Some data portions used by the application may be in the source volume or may be in the destination volume. Application access to both the source volume and the destination volume must be maintained. However, network connection cannot be guaranteed between application and these volumes. As such, network failure becomes an issue.

In the related art, a method for volume copying across storage device is disclosed. During the snapshot utilization process, the application must wait for data copying to be completed before the application can be started. The wait time may be an hour or more, depending on volume size. At the same time, copying of all possible volume snapshots to possible destinations, whether the copied volume snapshot is used by the application or not, may incur significant total cost increase in storage consumption by storing unused copies across multiple storage devices.

SUMMARY

Aspects of the present disclosure involve an innovative method for remote snapshot restoration. The method may include receiving a snapshot restore request; determining if the received snapshot restore request satisfies a three-way connection requirement by determining if the received snapshot restore request satisfies host-device-device connection information, wherein the host-device-device connection information comprises host information, source storage device information, destination storage device information, application-volume path information, and volume-volume path information; and for the received snapshot restore requesting satisfying the three-way connection requirement, performing snapshot restoration and data copying.

Aspects of the present disclosure involve an innovative non-transitory computer readable medium, storing instructions for remote snapshot restoration. The instructions may include receiving a snapshot restore request; determining if the received snapshot restore request satisfies a three-way connection requirement by determining if the received snapshot restore request satisfies host-device-device connection information, wherein the host-device-device connection information comprises host information, source storage device information, destination storage device information, application-volume path information, and volume-volume path information; and for the received snapshot restore requesting satisfying the three-way connection requirement, performing snapshot restoration and data copying.

Aspects of the present disclosure involve an innovative server system for remote snapshot restoration. The method may include receiving a snapshot restore request; determining if the received snapshot restore request satisfies a three-way connection requirement by determining if the received snapshot restore request satisfies host-device-device connection information, wherein the host-device-device connection information comprises host information, source storage device information, destination storage device information, application-volume path information, and volume-volume path information; and for the received snapshot restore requesting satisfying the three-way connection requirement, performing snapshot restoration and data copying.

Aspects of the present disclosure involve an innovative system for remote snapshot restoration. The system may include means for receiving a snapshot restore request; means for determining if the received snapshot restore request satisfies a three-way connection requirement by determining if the received snapshot restore request satisfies host-device-device connection information, wherein the host-device-device connection information comprises host information, source storage device information, destination storage device information, application-volume path information, and volume-volume path information; and for the received snapshot restore requesting satisfying the three-way connection requirement and means for performing snapshot restoration and data copying.

Aspects of the present disclosure involve an innovative method for remote snapshot restoration. The method may include receiving a snapshot restore request from host cluster view; transferring the snapshot restore request to a global snapshot utilization module; determining, at the global snapshot utilization module, if the received snapshot restore request satisfies a three-way connection requirement; for the received snapshot restore requesting satisfying the three-way connection requirement, performing snapshot restoration by creating volume associated with the snapshot restore request as source volume in a first storage device; concurrently executing data copying from the source volume to a destination volume in a second storage device while enabling an application to access data stored in the source volume and the destination volume; triggering application deployment operation to enable an application to be deployed in a host cluster management module associated with the second storage device; and deleting the source volume when data copying from the source volume to a destination volume is completed.

Aspects of the present disclosure involve an innovative non-transitory computer readable medium, storing instructions for remote snapshot restoration. The instructions may include receiving a snapshot restore request from host cluster view; transferring the snapshot restore request to a global snapshot utilization module; determining, at the global snapshot utilization module, if the received snapshot restore request satisfies a three-way connection requirement; for the received snapshot restore requesting satisfying the three-way connection requirement, performing snapshot restoration by creating volume associated with the snapshot restore request as source volume in a first storage device; concurrently executing data copying from the source volume to a destination volume in a second storage device while enabling an application to access data stored in the source volume and the destination volume; triggering application deployment operation to enable an application to be deployed in a host cluster management module associated with the second storage device; and deleting the source volume when data copying from the source volume to a destination volume is completed.

Aspects of the present disclosure involve an innovative server system for remote snapshot restoration. The method may include receiving a snapshot restore request from host cluster view; transferring the snapshot restore request to a global snapshot utilization module; determining, at the global snapshot utilization module, if the received snapshot restore request satisfies a three-way connection requirement; for the received snapshot restore requesting satisfying the three-way connection requirement, performing snapshot restoration by creating volume associated with the snapshot restore request as source volume in a first storage device; concurrently executing data copying from the source volume to a destination volume in a second storage device while enabling an application to access data stored in the source volume and the destination volume; triggering application deployment operation to enable an application to be deployed in a host cluster management module associated with the second storage device; and deleting the source volume when data copying from the source volume to a destination volume is completed.

Aspects of the present disclosure involve an innovative system for remote snapshot restoration. The system may include means for receiving a snapshot restore request from host cluster view; transferring the snapshot restore request to a global snapshot utilization module; means for determining, at the global snapshot utilization module, if the received snapshot restore request satisfies a three-way connection requirement; for the received snapshot restore requesting satisfying the three-way connection requirement, means for performing snapshot restoration by creating volume associated with the snapshot restore request as source volume in a first storage device; means for concurrently executing data copying from the source volume to a destination volume in a second storage device while enabling an application to access data stored in the source volume and the destination volume; triggering application deployment operation to enable an application to be deployed in a host cluster management module associated with the second storage device; and means for deleting the source volume when data copying from the source volume to a destination volume is completed.

DETAILED DESCRIPTION

Example implementations disclose the utilization of a remote snapshot utilization module that can select one or more hosts and two or more storage devices in which concurrent execution is guaranteed to run successfully. It can also command the selected host and the storage devices remotely to execute both the data copying and application access concurrently (concurrent execution).

Concurrent execution in remote snapshot utilization enables application to start using a volume as soon as it is restored from a snapshot, and the application no longer needs to wait until data copying finishes, so it is possible to eliminate wait time associated with the start of application. In addition, there is no need to proactively copy any data required for the remote snapshot restoration. Therefore, it can minimize storage consumption and reduce total cost incurred for storage infrastructure.

The initiation flow guarantees network connectivity among host and storage devices. This way, network failure in the remote snapshot restoration can be avoided. Example implementations can show wait time calculated from throughput or other factors. Example implementations also disclose a method to inform cluster management, such as Kubernetes, of usable snapshots and select appropriate destination storage device to restore the snapshots on behalf of cluster management.

FIG.2illustrates an example system implementing remote snapshot restoration utilization, in accordance with an example implementation. Control of volume206, snapshot207, volumes208aand208b, and application209is needed to accomplish concurrent execution and the required initiation flow. The system100may include computing device201a, host202, storage devices203aand203b, computing network204, storage area network205, management network210, database211, and computing devices212and213. More than a single host202may be involved in the system100. These components can form part of a single data center or can be distributed across multiple data centers.

Computing network204connects host202with storage devices203aand203b. Storage area network205connects storage devices203aand203b, and is used specifically as volume-to-volume (vol-vol) path in data copying which will be described in more detail below. Management network210connects computing device201a, host202, storage devices203aand203b, database211, and computing devices212and213in the system100, and allows communication among all components required for initiation flow.

User200manages host202and storage devices203aand203b. There can be more than a single user200for work sharing or role separation. Computing device201ashows snapshot restore view241or host cluster view242to user200. Host202contains application209, multi-path configuration251, application-volume configuration (app-vol config)253, and network port254.

Storage devices203aor203b, labeled with respective name, each contains path configuration260, volume-volume configuration (vol-vol config)263, and network port264. As illustrated inFIG.2, storage device203ahas the name S0 which is used as ID in the initiation flow. On the other hand, storage device203bhas the name S1. These names are unique to devices. Path config260contains application-volume path (app-vol path)261and volume-volume path (vol-vol path)262.

Computing device212may include global snapshot utilization230. The global snapshot utilization has essential components for remote snapshot restoration process which is explained inFIGS.3and4. The global snapshot utilization230contains host-device-device decision module231, vol/snapshot discovery module232, storage device check module233, host check module234, host remote config module235, snapshot restoration module236, host control module237, and cluster control module238.

Computing device213is used for host cluster management purpose by user200. Host cluster management is a function to manage multiple hosts202and applications209. Host cluster management270may include application programming interface (API)271which can be used by host cluster view242, snapshot list272, operator273, and network port274.

Concurrent execution of data copy and application access enables quick application start. Concurrent execution starts application access to volume before data copying across storage devices is completed. Upon completion of the data copying process, all application access is forwarded to the destination volume. At which point, the source volume is no longer needed and is automatically deleted.

FIG.3illustrates an example process flow for concurrent execution of a data copying and application access, in accordance with an example implementation. Concurrent execution is performed through a specified host and specified storage devices. Application209in host202reads and writes to a volume208x.

A snapshot restoration process401restores the volume208xfrom volume206and snapshot207in storage device203a. The volume208xis physically located in storage device203aas volume208aat the initial state.

The process then continues with concurrent execution of data copying and initiation of application access. Data copy execution runs in storage devices203aand203b. Following the data copying process, volume208abegins to be copied to volume208bin storage device203b. Communication required for the data copy execution uses the vol-vol path403, connecting storage devices203aand203b. On the other hand, application access is executed from application209to volumes208aand208b. Communication required for application access uses both paths402aand402b.

For concurrent execution, three-way paths among host and storage devices are needed. During concurrent execution, application continues reading and writing to volume208x. Actual data locations of the volume208xare distributed to volumes208aand208b. Therefore, application reads and writes to either of volumes208aand208b. After completion of data copying, application access is kept alive, but has only access to volume208bas all data in volume208xhave already been copied to storage device203b.

Three-way connections require two app-vol paths252aand252bin host202connecting with storage devices203aand203brespectively. Volume208ais connected/communicates through app-vol path252a. These configurations should be set up prior to occurrence of the concurrent execution. Otherwise, one of the processes will fail and the application would not be able to start using the restored volume.

To guarantee that concurrent execution is executed with no network failure, an initiation flow is executed prior to the concurrent execution by host-device-device decision module231and snapshot restoration module236.

FIG.4illustrates an example process flow of remote snapshot utilization, in accordance with an example implementation. At step S01, the initiation of the process flow is triggered by a snapshot restore request from user200through the computing device201a. At S02, the host-device-device decision module231checks the host-device-device connection table220.

The host-device-device decision module231searches the host-device-device connection table220for a combination of host, source device, and destination device where app-vol paths and vol-vol path are ready at step S03. This means that the three-way connection required for concurrent execution can be established among the searched host, the selected source device, and the selected destination device. If a combination exists, then the process proceeds to step S04-0. Otherwise, the process continues to step S04-1.

At step S04-0, a flag named “Restoration type” is set to “Concurrent Execution”. At step S04-1, host-device-device decision module231tries to search for a combination of source device ID and destination device ID where vol-vol path is ready. If a combination exists, then the process continues to S04-2. Otherwise, the process continues to S04-2′, where the initiation flow comes to an end with error returned to original snapshot restore request.

At step S04-2, host check module234commands app-vol config module253to try and establish app-vol paths, and checks if app-vol path is established. Then, host check module234updates the host-device-device connection table220. At step S04-3, a determination is made as to whether set-up or establishment is completed through receipt of a reply that corresponds to successful set-up. If successful, the process continues to S04-0, where the flag “Concurrent Execution” is set to “Copy only”. If unsuccessful, the process continues to S04-4, where the flag “Restoration type” is set to “Copy only”, which means that application using the snapshot could only start after data copying finishes.

At step S05, the host-device-device decision module231checks if the original requester (user) needs to provide confirmation. If confirmation is required, the process proceeds to step S06. Otherwise, the process continues to step S06′. At step S06, the host-device-device decision module231sends back selection result to snapshot restore view241. The result may contain multiple restoration plans. After sending it, the host-device-device decision module231waits for the user's reply which includes a selected restoration plan. In this sequence, the user200uses snapshot restore view241to decide on a restoration plan, which is described in more details below.

At step S06′, the host-device-device decision module231automatically selects a restoration plan having highest priority from among the multiple restoration plans of the result as the selected plan. For example, if the policy for automatic selection is associated with cost reduction, the host-device-device decision module231then selects a restoration plan with the lowest cost from all possible plans. After step S06or step S06′, the module decides on a restoration plan, which is shown inFIG.6.

At step S07, snapshot restoration module236requests snapshot restore on a source device with selected source device ID in restoration plan. Then, the snapshot restoration module236waits for restoration to be completed and receives LUN logical unit number (LUN) from the selected source device, which is used as source LUN.

At step S08, snapshot restoration module236creates a new volume as the destination volume in a destination device with the selected destination device ID. Snapshot restoration module236receives the resulting LUN as destination LUN.

At step S09, snapshot restoration module236prepares for data copying. Specifically, snapshot restoration module236creates copy pair between source volume and destination volume. After that, storage devices203aand203bbegin synchronization of copy pair.

At step S10, if “Restoration type” is “Concurrent Execution”, then the process continues to S10-A. At step S10-A, snapshot restoration module236commands app-vol config module253to start application209. In this step, app-vol config module253configures two app-vol paths252in multi-path config251so that it accesses source LUN and destination LUN. For example, it can use iscsiadm login command using source LUN and destination LUN as parameters. This allows for concurrent execution of data copying and application access.

At step S11, snapshot restoration module236receives an event of synchronization end of the copy pair. Then, the snapshot restoration module236deletes the source volume which is no longer needed by application209.

At step S12, if “Restoration type” is “Copy only”, then the process continues to S12-A, where application209is started after data copying finishes. Through the steps ofFIG.4, initiation flow can achieve selection of restoration plan, preparation of data copying, and concurrent execution of data copying and application access.

FIG.5illustrates example information and tables contained in the database211that are used in the remote snapshot restoration utilization process, in accordance with an example implementation. Snapshot restore request501triggers the initiation flow and received at step S01ofFIG.4. Snapshot restore request501may include information such as, but not limited to, snapshot identifier and application host identifier. Snapshot location table223stores information of the location where snapshots are stored and is created under a snapshot creation process where snapshot creation request is initiated by the user200. In some example implementations, the snapshot creation request may include at least one of target volume information and timestamp information. Snapshot location table223may include information such as, but not limited to, snapshot identifier, storage device location information, and size information. On receiving snapshot restore request501, storage device location information of a specified snapshot identifier can be identified and retrieved. For example, the snapshot identifier “V1_01” is located at storage device S0 based on the snapshot location table223.

Host-device-device connection table220may include connection status information showing the three-way connections and is described in more detail below in association withFIG.7. As mentioned, three-way connection is needed for concurrent execution. To ensure the three-way connection can be established, host-device-device connection table220contains both columns of app-vol paths and vol-vol paths. Host-device-device connection table220contains information such as, but not limited to, host name, source, destination, app-vol paths, and vol-vol path. The host name column stores host name identifiers. Source column stores unique ID values for source storage devices. Destination column stores unique ID values for destination storage devices. App-vol paths store Boolean values such as “Ready” and “Not Ready” to indicate whether app-vol paths can be established among the combination of host-device-device. Similarly, vol-vol path stores Boolean values such as “Ready” and “Not Ready” to indicate whether both storage devices can be connected with the specified vol-vol path.

Host-device-device selection result502is created temporarily by initiation flow. The host-device-device selection result502is created during step S03ofFIG.4This table may include information such as, but not limited to, host name, source device, destination device, and priority column. Each entry in the host-device-device selection result502is associated with a combination of host, source device, and destination device of the host-device-device connection table220. Priority column stores priority levels associated with the combination of host, source, and destination. In some example implementations, the priority levels may be set by the user200. For example, high priority may be assigned with the value 1 (e.g. for concurrent execution), while the value 2 indicates lower priority.

Restoration process table224is used for calculation of the wait time associated with each restoration plan and is manually created by the user200. Restoration process table224may include information such as, but not limited to, restoration process name, wait time, and overhead in copying. Restoration process name stores unique process identifiers associated with the different restoration processes.

Restoration plan503is created at steps S06and S06′ of the initiation flow and sent to snapshot restore view241. Restoration plan503stores information such as, but not limited to, snapshot name, source device, destination device, restoration type, wait time estimation, cost estimation, and performance estimation. Snapshot name, source device, and destination device are populated from the host-device-device selection result502. Restoration type is a value of flag “Restoration type” that is set during steps S04-0to S04-4of the initiation flow illustrated inFIG.4. Wait time estimation is obtained from the wait time associated with restoration process from the restoration process table224. For example, if restoration type is “Concurrent Execution”, wait time is then estimated to be “20 s” as shown in the restoration process table224. In some example implementations, wait time may be calculated using predetermined formula identified in the restoration process table224. For example, if restoration type is “Copy only”, wait time is calculated using the formula “[calc1]”. Calc1 is defined as “[restored volume size (GB)]/[PathBandwidth(Gbps)]*8”. If the snapshot has 100 GB size and the path bandwidth is 5 Gbps, the calculated result becomes 160 s.

Cost estimation and performance estimation can be obtained from the cloud vendor spec sheet. Each instance type used by storage device has various cataloged specification. As illustrated inFIG.5, cost estimation as provided from the spec sheet is 300 USD/month. Similarly, performance value from the spec sheet, such as “1IOPS per GB”, can be used to calculate the value “100IOPS” for performance estimation.

FIG.6illustrates an example display of the snapshot restore view241, in accordance with an example implementation. As illustrated in the initiation flow ofFIG.4, snapshot restore view241is used to retrieve the snapshot restore request from user200, show results from the initiation flow, and retrieve user's confirmation.

Snapshot restore view241contains restore snapshot request plan600for user200to create a snapshot restore request and search results for user200's request. The restore snapshot request plan600may include input areas such as snapshot name601, application host602, confirmation requirement toggle603, and search button604. By accessing the snapshot name601and the application host602, user200can decide which snapshot to restore, and which application host to use for restoring volume access in the restore snapshot request plan600. Through the confirmation requirement toggle603, user200can specify whether user200needs to review search result of possible restoration plans. If the toggle is off, step S05of the initiation flow as illustrated inFIG.4then proceeds to step S06′, where the system automatically selects a highest priority selection as restoration plan. Clicking the search button604allows for restore plan search to be performed based on user selections.

Search results605appears after search button604has been clicked. Search results605may include display areas, including plan selection606. Plan selection606contains one or more plans calculated from the initiation flow. For example, plan selection606as illustrated inFIG.6provides two plans607, plan 1 and plan 2. Each selectable plan607may include selection radio button, location information608, restoration process609, cost estimation610, and performance estimation611. Location information608identifies a destination device for use as destination device of copy pair. Restoration process609identifies the type of restoration process that will be used in the plan. In addition, estimated wait time is also provided as part of restoration process609. “Concurrent execution” type restoration process means that concurrent execution will be utilized. On the other hand, “Copy” type restoration process means that sequential copying will be used, which has a longer wait time when compared to “Concurrent execution”.

Cost estimation610provides user with information on location-dependent cost. For example, plan 1 uses storage device “S1” in Cloud 1 as destination storage device and has an estimated cost of 300 USD/month. Performance estimation611provides user with information on location-dependent performance indicator. For example, destination storage device “S1” bas an expected throughput of 5 Gbps, and performance611of plan 1 shows “5 Gbps”.

Confirmation button612is a button which user200can click should user200accept one of the plans. Confirmation button612becomes clickable when user200selects any of plans by radio button. On submission, the selected plan is sent to the host-device-device decision module231, which corresponds to step S06ofFIG.4.

As illustrated inFIGS.2and5, the host-device-device connection table220is used for location determination and is updated iteratively by a connection table creation flow.FIG.7illustrates an example host-device-device connection table220creation flow, in accordance with an example implementation. The storage device check module233and host check module234run the connection table creation flow repetitively. The flow can be repeated at the same cycle or can be run ad-hoc by some events such as, but not limited to, device addition, device deletion, etc.

At step S701, information is gathered from the vol-vol config263to create the device-device connection table801ofFIG.8.FIG.8illustrates example information tables required for the connection table creation flow, in accordance with an example implementation. Device-device connection table801is generated by step S701ofFIG.7, and may include fields such as, but not limited to, path, source device, destination device, and throughput.

The device-device connection table801can be simplified into temporary table803, which may include fields such as source device, destination device, and vol-vol path. As illustrated inFIG.8, the vol-vol path field is added and values in the field is set to “Ready” by default in the temporary table803.

The host-device connection table802is generated by step S702ofFIG.7, and may include fields such as, but not limited to, host, multipath target devices, etc. At step S702, information is gathered from app-vol config253to create the host-device connection table802. In step S703, the host-device connection table802can be expanded into temporary table804by expanding multipath target devices as source device and destination device. The temporary table804may include fields such as, but not limited to, host, source device, destination device, app-vol paths, etc. As illustrated inFIG.8, the app-vol path field is added and values in the field is set to “Ready” by default. At step S704ofFIG.7, temporary table803and temporary table804are joined using source device and destination device as combination keys to create the host-device-device connection table220. In some example implementation, joining is performed using the OUTER JOIN method of SQL. Any entry that does not have an associated value in the app-vol paths field or the vol-vol path field would have “Not Ready” in place as the associated value. On completion of the preceding steps, the host-device-device connection table220is then generated.

In alternate example implementations, host cluster management tools such as Kubernetes are used to execute remote snapshot utilization on behalf of user request in conjunction with a global snapshot utilization module. Utilization of host cluster management system such as Kubernetes makes user's host/device management operation easier. In order to enable snapshot utilization in host cluster management, snapshot list propagation and snapshot utilization are utilized. Associated flows are described in more details below. Unlike the system shown inFIG.2, a user does not need to use dedicated view such as the snapshot restore view241, as only host cluster management is needed. Operator is added to existing host cluster management to facilitate communications with the global snapshot utilization module.

Host cluster management can deploy application on hosts and allows the application to access a volume pair being restored by concurrent execution without specific storage device interaction. Host cluster management does not need to have information of which snapshots are available, or what type of data copy is ongoing in storage device side. Instead, global snapshot utilization takes care of snapshot listing and the status of data copying.

FIG.9illustrates an example system implementing remote snapshot restoration utilization with cluster management, in accordance with an example implementation. As illustrated inFIG.9, system900may include computing device901, hosts902A and902B, storage devices903a-903c, computing network904, storage area network905, management network910, database911, global snapshot utilization module930, and host cluster management systems970A and970B. The system ofFIG.9shares many of the components of the system inFIG.2. However, user ofFIG.9uses host cluster view942rather than the snapshot restore view241ofFIG.2. Host cluster view942is any client tool of host cluster management system, such as Kubernetes, etc. In some example implementations, the client tool is a CLI tool kubectl.

User can use commands supported by host cluster management system970A or970B using host cluster view942. For example, “kubectl create pve” command is for volume creation in some storage device, and user can specify how the volume is to be created. User can also add parameters such as “snapshotName” so that a volume can be created from snapshot. By so doing, user can request snapshot utilization to host cluster management system970A or970B without specifying which storage device to be used as snapshot restoration destination. The global snapshot utilization930automatically decides which storage device to be used for snapshot utilization.

Host cluster management systems970A and970B execute host/device management operations including application deployment and snapshot utilization. Host cluster management systems970A and970B command these operations to hosts902A and902B on behalf of the user. Host cluster management systems970A and970B connect to hosts902A and902B respectively, and control hosts902A and902B according to user's request501. Each of host cluster management systems970A and970B is capable of controlling multiple hosts at the same time. Operator973in host cluster management systems970A-B monitors incoming user requests and forwards them to the global snapshot utilization module930.

Host902A is controlled by host cluster management system970A, while host902B is controlled by host cluster management system970B. Hosts902A and902B are connected respectively to computing network904A and904B. Storage devices903aand903bare connected to computing network904A, and storage device903cis connected to computing network904B.

Communication2000is transmitted from storage devices903a-cto global snapshot utilization module930, and vice versa, communication2004is transmitted from global snapshot utilization module930to storage devices903a-c. Communications2001and2006are transmitted from global snapshot utilization module930to hosts902A-B. Communications2002and2005are transmitted from global snapshot utilization module930to operator973in host cluster management systems970A-B and vice versa, communication2003is transmitted from operator973to global snapshot utilization module930.

Host cluster management systems970A-B do not have the ability to get list of snapshots from storage devices903a-cbecause host cluster management systems970A-B are not in direct connection with storage devices903a-c. This causes an issue when a snapshot is restored. When user requests volume creation from snapshot, host cluster management systems970A-B cannot accept the request because they cannot check the specified snapshot in the snapshot list.

FIG.10illustrates an example process flow for snapshot list propagation, in accordance with an example implementation. Snapshot list propagation allows host cluster management systems970A-B to accept user request according to snapshot list sent from global snapshot utilization module930.

Vol/snapshot discovery module932of the global snapshot utilization module930triggers the entire flow. The module gets snapshot list using communication2001ofFIG.9from storage devices. To achieve this, global snapshot utilization module930uses management network910to connect to the storage devices. At step S1001, the vol/snapshot discovery module932requests snapshot list API in storage devices and merges all snapshot lists into a single list.

At step S1002, the host-device-device decision module931sends a request to all hosts to try to set up multipath config agent using communication2001. In return, the host-device-device decision module931receives multipath config status as reply. If the status is true, the module updates related record in host-device-device connection table220so that the host's multipath is ready.

At step S1003, host-device-device decision module931recreates host-device-device connection table220with table creation flow in the first implementation.

At step S1004host-device-device decision module931joins snapshot location table223with host-device-device connection table220and creates snapshot-host-device selection result, which is described in more details inFIG.12.

At step S1005, operators973of all hosts receive the snapshot-host-device selection result and update snapshot list according to the selection result. If the selection result has records of the host name, the snapshot list adds the snapshot name into the record. For example, suppose snapshot-host-device selection result has records of “snapshot: V1_01”, “host: H1” and “device: S0”, and the result is received by the operator973in host “H1”. Then, operator973checks the result record including “host: H1”. Since the result is true, the operator973adds snapshot “V1_01” to the snapshot list.

FIG.11illustrates an example process flow of remote snapshot utilization utilizing host cluster management systems, in accordance with an example implementation. Snapshot utilization flow is triggered at step S1101when API971ofFIG.9receives snapshot restore request from host cluster view through communication2006. At step S1102, operator transfers the request to global snapshot utilization using communication2003. Steps S1103-1112of the process flow perform similar functions to steps S02-12ofFIG.4, with differences at steps S1110-A and S1112-A. The difference is that in step S1110-A or S1112-A, “application start” will return to operators who originally initiated this flow. The “application start” message triggers application deployment operation in host cluster management. For example, Kubernetes can start application deployment with registering a new resource “Application deployment request”. According to this change, host cluster management starts application container in a specific host. During this timing, host cluster management can use the host name generated during step S1105.

FIG.12illustrates an example information required for performing snapshot utilization in host cluster management, in accordance with an example implementation. As illustrated inFIG.12, example information may include a snapshot restore request1201, a snapshot-host-device selection result table1202, and an application deployment request1203. The snapshot restore request1201is a trigger event of snapshot utilization at step S1101ofFIG.11. Snapshot-host-device selection result1202is generated during step S1104ofFIG.11. Snapshot-host-device selection result1202may include information such as, but not limited to, snapshot name, host, destination, and associated priority level. Application deployment request1203contains information such as application name and host to be used by the application. The format of application deployment request changes depending on figurations of the host cluster management systems.

Through the present implementation, the host cluster management can forward snapshot restoration request to the global snapshot restoration module and initiate concurrent execution. In addition, through generation of snapshot list from snapshot list propagation, host cluster management can accept snapshot restore request when snapshot name is on the snapshot list.

The foregoing example implementation may have various benefits and advantages. For example, remote snapshot utilization can be executed without any knowledge about hosts, devices and connections. Using concurrent execution in remote snapshot utilization, user's application can start using a volume as soon as it is restored from a snapshot. At the same time, concurrent execution enables application to start before data copy finishes. There is no need to proactively copy any data required for the remote snapshot restoration. Therefore, storage consumption is minimized and total cost paid for storage infrastructure is reduced. Furthermore, the initiation flow guarantees network connectivity among host and storage devices, such that network failure in the remote snapshot restoration can be avoided. Users can start remote snapshot utilization through host cluster management and benefit from quickness and cost reduction of remote snapshot utilization.

FIG.13illustrates an example computing environment with an example computing device suitable for use in some example implementations. Computing device1305in computing environment1300can include one or more processing units, cores, or processor(s)1310, memory1315(e.g., RAM, ROM, and/or the like), internal storage1320(e.g., magnetic, optical, solid-state storage, and/or organic), and/or I/O interface1325, any of which can be coupled on a communication mechanism or bus1330for communicating information or embedded in computing device1305. I/O interface1325is also configured to receive images from cameras or provide images to projectors or displays, depending on the desired implementation.

Computing device1305can be communicatively coupled to input/user interface1335and output device/interface1340. Either one or both of the input/user interface1335and output device/interface1340can be a wired or wireless interface and can be detachable. Input/user interface1335may include any device, component, sensor, or interface, physical or virtual, that can be used to provide input (e.g., buttons, touch-screen interface, keyboard, a pointing/cursor control, microphone, camera, braille, motion sensor, accelerometer, optical reader, and/or the like). Output device/interface1340may include a display, television, monitor, printer, speaker, braille, or the like. In some example implementations, input/user interface1335and output device/interface1340can be embedded with or physically coupled to computing device1305. In other example implementations, other computing devices may function as or provide the functions of input/user interface1335and output device/interface1340for a computing device1305.

Computing device1305can be communicatively coupled (e.g., via I/O interface1325) to external storage1345and network1350for communicating with any number of networked components, devices, and systems, including one or more computing devices of the same or different configuration. Computing device1305or any connected computing device can be functioning as, providing services of, or referred to as, a server, client, thin server, general machine, special-purpose machine, or another label.

Processor(s)1310can execute under any operating system (OS) (not shown), in a native or virtual environment. One or more applications can be deployed that include logic unit1360, application programming interface (API) unit1365, input unit1370, output unit1375, and inter-unit communication mechanism1395for the different units to communicate with each other, with the OS, and with other applications (not shown). The described units and elements can be varied in design, function, configuration, or implementation and are not limited to the descriptions provided. Processor(s)1310can be in the form of hardware processors such as central processing units (CPUs) or in a combination of hardware and software units.

In some example implementations, when information or an execution instruction is received by API unit1365, it may be communicated to one or more other units (e.g., logic unit1360, input unit1370, output unit1375). In some instances, logic unit1360may be configured to control the information flow among the units and direct the services provided by API unit1365, input unit1370, and output unit1375in some example implementations described above. For example, the flow of one or more processes or implementations may be controlled by logic unit1360alone or in conjunction with API unit1365. Input unit1370may be configured to obtain input for the calculations described in the example implementations, and output unit1375may be configured to provide an output based on the calculations described in example implementations.

Processor(s)1310can be configured to receive snapshot restore request as shown inFIG.4. The processor(s)1310may also be configured to determine if the received snapshot restore request satisfies a three-way connection requirement by determining if the received snapshot restore request satisfies host-device-device connection information, wherein the host-device-device connection information comprises host information, source storage device information, destination storage device information, application-volume path information, and volume-volume path information as shown inFIG.4. The processor(s)1310may also be configured to, for the received snapshot restore requesting satisfying the three-way connection requirement, perform snapshot restoration and data copying as shown inFIG.4.

The processor(s)1310may also be configured to access, by the application, only data stored in the destination volume after completion of the data copying as shown inFIG.4. The processor(s)1310may also be configured to determine if user confirmation is required in snapshot restoration plan selection as shown inFIG.4. The processor(s)1310may also be configured to, for determining user confirmation is required in snapshot restoration plan selection, send at least one snapshot restoration plan for user to select as shown inFIG.4.

The processor(s)1310may also be configured to, for determining user confirmation is not required in the snapshot restoration plan selection, perform automatic snapshot restoration plan selection by selecting a snapshot restoration plan having a highest priority from a plurality of snapshot restoration plans or selecting a recommended snapshot restoration plan from the plurality of snapshot restoration plans as shown inFIG.4. The processor(s)1310may also be configured to, for the received snapshot restore request satisfying the three-way connection requirement, set restoration type to concurrent execution as shown inFIG.4.

The processor(s)1310may also be configured to, for the received snapshot restore request not satisfying the three-way connection requirement, search for a combination of source device ID and destination device ID where volume-volume path is ready as shown inFIG.4. The processor(s)1310may also be configured to, for existence of no combination of source device ID and destination device ID where volume-volume path is ready, return an error message to the snapshot restore request as shown inFIG.4. The processor(s)1310may also be configured to, for existence of a combination of source device ID and destination device ID where volume-volume path is ready, attempt to establish application-volume paths as shown inFIG.4. The processor(s)1310may also be configured to, for application-volume paths being successfully established, set restoration type to concurrent execution as shown inFIG.4. The processor(s)1310may also be configured to, for application-volume paths being unestablished, set restoration type to copy only as shown inFIG.4. The processor(s)1310may also be configured to, for restoration type being set to copy only, execute data copying from the source volume to the destination volume and only allow the application access data stored in the destination volume after completion of the data copying as shown inFIG.4.

The processor(s)1310may also be configured to receive snapshot restore request from host cluster view as shown inFIGS.9and11. The processor(s)1310may also be configured to transfer the snapshot restore request to a global snapshot utilization module as shown inFIGS.9and11. The processor(s)1310may also be configured to determine, at the global snapshot utilization module, if the received snapshot restore request satisfies a three-way connection requirement as shown inFIGS.9and11. The processor(s)1310may also be configured to, for the received snapshot restore requesting satisfying the three-way connection requirement, perform snapshot restoration by creating volume associated with the snapshot restore request as source volume in a first storage device as shown inFIGS.9and11. The processor(s)1310may also be configured to concurrently execute data copying from the source volume to a destination volume in a second storage device while enabling an application to access data stored in the source volume and the destination volume as shown inFIGS.9and11. The processor(s)1310may also be configured to trigger application deployment operation to enable an application to be deployed in a host cluster management module associated with the second storage device as shown inFIGS.9and11. The processor(s)1310may also be configured to delete the source volume when data copying from the source volume to a destination volume is completed as shown inFIGS.9and11.

The processor(s)1310may also be configured to access, by the application, only data stored in the destination volume after completion of the data copying as shown inFIG.11. The processor(s)1310may also be configured to, for the received snapshot restore requesting satisfying the three-way connection requirement, set restoration type to concurrent execution as shown inFIG.11.

The processor(s)1310may also be configured to, for the received snapshot restore requesting not satisfying the three-way connection requirement, search for a combination of source device ID and destination device ID where volume-volume path is ready as shown inFIG.11. The processor(s)1310may also be configured to, for existence of no combination of source device ID and destination device ID where volume-volume path is ready, return an error message to the snapshot restore request as shown inFIG.11. The processor(s)1310may also be configured to, for existence of a combination of source device ID and destination device ID where volume-volume path is ready, attempt to establish application-volume paths as shown inFIG.11. The processor(s)1310may also be configured to, for application-volume paths being successfully established, set restoration type to concurrent execution as shown inFIG.11. The processor(s)1310may also be configured to, for application-volume paths being unestablished, set restoration type to copy only as shown inFIG.11. The processor(s)1310may also be configured to, for restoration type being set to copy only, execute the data copying from the source volume to the destination volume and only allow the application access data stored in the destination volume after completion of the data copying as shown inFIG.11.