# US 2021/0240522 A1 · Prioritizing migration of data associated with a stateful application based on data access patterns

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

- Number: US 2021/0240522 A1
- Document ID: US20210240522A1
- Status: Published application
- Kind: A1
- Application number: 16/779,352
- Filed: 2020-01-31
- Published: 2021-08-05
- Earliest claimed: 2020-01-31
- Assignees: Hewlett Packard EnterpriseDevelopment LP
- Applicants: Hewlett Packard EnterpriseDevelopment LP
- Inventors: Jyoti Ranjan; Abhishek Kumar; Ajay Kumar Bajaj
- Web page: https://patentgrep.com/patent/US20210240522A1

## CPC

- G06F 9/4856: {resumption being on a different machine, e.g. task migration, virtual machine migration (G06F9/5088 takes precedence)}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Example implementations relate to migration of a stateful application from a source computing environment to a destination virtualized computing environment by prioritizing migration of data of the application based on a priority map created based on data usage patterns. An instance of the application is installed within the destination environment. The priority map includes priorities for chunks of the data based on historical data access patterns. The data is migrated from a source volume of the source environment to a destination volume of the destination environment on a chunk-by-chunk basis by performing a background data migration process based on the priority map. Usage of the application concurrent with the data migration process is facilitated by abstracting a location of data being operated upon by the application by maintaining migration status for the chunks. The priority map is periodically updated based on observed data access patterns post application migration.

## Claims

### Claim 1

A computer-implemented method of migrating a stateful application from a first computing environment to a target virtualized environment, the method comprising:
installing an instance of the stateful application within the target virtualized environment;
initializing a priority map for source data associated with the stateful application by establishing a priority for each chunk of a plurality of chunks of the source data by analyzing historical data access patterns associated with the source data;
migrating the source data from a source data volume associated with the first computing environment to a target data volume associated with the target virtualized environment on a chunk-by-chunk basis by performing a background data migration process based on the priority map;
facilitating usage of the stateful application during the background data migration process by abstracting a current location of a particular chunk of the plurality of chunks that is being operated upon by the stateful application including maintaining for each chunk of the plurality of chunks information regarding a migration status of the chunk; and
during usage of the stateful application and performance of the background data migration process, updating the priority map to reflect a change in observed data access patterns from the historical data access patterns.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein said abstracting a current location of a particular chunk comprises presenting a dummy volume to the stateful application as a block device.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the dummy volume comprises a zero-sized storage volume.

### Claim 4 (depends on 2)

The computer-implemented method of claim 2, further comprising:
receiving, by a device driver associated with the dummy volume, from the stateful application a read operation associated with the particular chunk;
requesting, by the device driver, data associated with the particular chunk from a data mitigation manager responsible for performing the background data migration process and said updating the prior;
determining, by the data mitigation manager, based on the information regarding the migration status of the particular chunk whether migration of the particular chunk has been completed, is in process, or has not been completed;
when the migration of the particular chunk is determined to have been completed, providing the device driver with the data by retrieving it from the target data volume;
when the migration of the particular chunk is determined to be in process, responsive to completion of the migration of the particular chunk, returning the data to the device driver; and
when the migration of the particular chunk is determined not to have been completed:
initiating migration of the particular chunk by raising the priority of the particular chunk in the priority map; and
responsive to completion of the migration of the particular chunk, returning the data to the device driver.

### Claim 5 (depends on 2)

The computer-implemented method of claim 2, further comprising responsive to completion of the background data migration process, redirecting the stateful application from the dummy volume to the target data volume.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein the plurality of chunks have a chunk size and wherein the method further comprises:
receiving information indicative of attributes of the stateful application; and
determining the chunk size based on the attributes.

### Claim 7 (depends on 4)

The computer-implemented method of claim 4, wherein any difference between storage protocols implemented by the source data volume and the target data volume are handled by the data migration process by reading the data from the source data volume using a first storage protocol implemented by the source data volume and writing the data to the target data volume using a second storage protocol implemented by the target data volume.

### Claim 8

A non-transitory machine readable medium storing instructions executable by a processing resource of a computer system, the non-transitory machine readable medium comprising instructions to:
install an instance of the stateful application within the target virtualized environment;
initialize a priority map for source data associated with the stateful application by establishing a priority for each chunk of a plurality of chunks of the source data by analyzing historical data access patterns associated with the source data;
migrate the source data from a source data volume associated with the first computing environment to a target data volume associated with the target virtualized environment on a chunk-by-chunk basis by performing a background data migration process based on the priority map;
facilitate usage of the stateful application concurrent with the background data migration process by abstracting a current location of a particular chunk of the plurality of chunks that is being operated upon by the stateful application including maintaining for each chunk of the plurality of chunks information regarding a migration status of the chunk; and
periodically update the priority map based on observed data access patterns associated with the usage of the stateful application.

### Claim 9 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein the current location of the particular chunk is abstracted by presenting a dummy volume to the stateful application as a block device.

### Claim 10 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the dummy volume comprises a zero-sized storage volume.

### Claim 11 (depends on 9)

The non-transitory machine readable medium of claim 9, further comprising instructions to:
receive, by a device driver associated with the dummy volume, from the stateful application a read operation associated with the particular chunk;
request, by the device driver, data associated with the particular chunk from a data mitigation manager responsible for performing the background data migration process and said updating the prior;
determine, by the data mitigation manager, based on the information regarding the migration status of the particular chunk whether migration of the particular chunk has been completed, is in process, or has not been completed;
when the migration of the particular chunk is determined to have been completed, provide the device driver with the data by retrieving it from the target data volume;
when the migration of the particular chunk is determined to be in process, responsive to completion of the migration of the particular chunk, return the data to the device driver; and
when the migration of the particular chunk is determined not to have been completed:
initiate migration of the particular chunk by raising the priority of the particular chunk in the priority map; and
responsive to completion of the migration of the particular chunk, return the data to the device driver.

### Claim 12 (depends on 9)

The non-transitory machine readable medium of claim 9, further comprising instructions to responsive to completion of the background data migration process, redirect the stateful application from the dummy volume to the target data volume.

### Claim 13 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein the plurality of chunks have a chunk size and wherein the non-transitory machine readable medium further comprises instructions to:
receive information indicative of attributes of the stateful application; and
determine the chunk size based on the attributes.

### Claim 14 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein any difference between storage protocols implemented by the source data volume and the target data volume are handled by the data migration process by reading the data from the source data volume using a first storage protocol implemented by the source data volume and writing the data to the target data volume using a second storage protocol implemented by the target data volume.

### Claim 15

A system comprising:
a processing resource; and
a non-transitory computer-readable medium, coupled to the processing resource, having stored therein instructions that when executed by the processing resource cause the processing resource to:
install an instance of the stateful application within the target virtualized environment;
initialize a priority map for source data associated with the stateful application by establishing a priority for each chunk of a plurality of chunks of the source data by analyzing historical data access patterns associated with the source data;
migrate the source data from a source data volume associated with the first computing environment to a target data volume associated with the target virtualized environment on a chunk-by-chunk basis by performing a background data migration process based on the priority map;
facilitate usage of the stateful application concurrent with the background data migration process by abstracting a current location of a particular chunk of the plurality of chunks that is being operated upon by the stateful application including maintaining for each chunk of the plurality of chunks information regarding a migration status of the chunk; and
periodically update the priority map based on observed data access patterns associated with the usage of the stateful application.

### Claim 16 (depends on 15)

The system of claim 15, wherein the current location of the particular chunk is abstracted by presenting a dummy volume to the stateful application as a block device.

### Claim 17 (depends on 16)

The system of claim 16, wherein the dummy volume comprises a zero-sized storage volume.

### Claim 18 (depends on 16)

The system of claim 16, wherein the instructions further cause the processing resource to:
receive, by a device driver associated with the dummy volume, from the stateful application a read operation associated with the particular chunk;
request, by the device driver, data associated with the particular chunk from a data mitigation manager responsible for performing the background data migration process and said updating the prior;
determine, by the data mitigation manager, based on the information regarding the migration status of the particular chunk whether migration of the particular chunk has been completed, is in process, or has not been completed;
when the migration of the particular chunk is determined to have been completed, provide the device driver with the data by retrieving it from the target data volume;
when the migration of the particular chunk is determined to be in process, responsive to completion of the migration of the particular chunk, return the data to the device driver; and
when the migration of the particular chunk is determined not to have been completed:
initiate migration of the particular chunk by raising the priority of the particular chunk in the priority map; and
responsive to completion of the migration of the particular chunk, return the data to the device driver.

### Claim 19 (depends on 16)

The system of claim 16, wherein the instructions further cause the processing resource to responsive to completion of the background data migration process, redirect the stateful application from the dummy volume to the target data volume.

### Claim 20 (depends on 15)

The system of claim 15, wherein the plurality of chunks have a chunk size and wherein the instructions further cause the processing resource to:
receive information indicative of attributes of the stateful application; and
determine the chunk size based on the attributes.
