# US 8,751,878 B1 · Automatic failover during online data migration

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

- Number: US 8,751,878 B1
- Document ID: US8751878B1
- Status: Granted
- Kind: B1
- Application number: 13/192,947
- Filed: 2011-07-28
- Granted: 2014-06-10
- Earliest claimed: 2010-03-30
- Assignees: EMC Corporation
- Applicants: Arieh Don; Ian Wigmore; Michael Specht; Steven Goldberg; Vaishali Kochavara
- Inventors: Arieh Don; Ian Wigmore; Michael Specht; Steven Goldberg; Vaishali Kochavara
- Web page: https://patentgrep.com/patent/US8751878B1

## CPC

- G06F 11/07: Responding to the occurrence of a fault, e.g. fault tolerance
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G06F 11/0709: {in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems}
- G06F 11/0757: {by exceeding a time limit, i.e. time-out, e.g. watchdogs}
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A technique automatically handles a failure during online data migration from a source array to a target array. While a host initially accesses data from the source array using multipath I/O software, the technique involves (i) transitioning the source array to a passive mode, and the target array to an active mode, and (ii) beginning a data transfer operation which transfers data from the source array to the target array. The technique further involves modifying the data on both the target array and the source array in response to modification commands sent to the target array from the host while the data transfer operation is ongoing. The technique further involves automatically failing back to providing access to the data from the source array in response to an event in which the target array loses communication with the source array for a predefined amount of time.

## Claims

### Claim 1

A method of migrating data from a source array to a target array, the method comprising:
configuring (i) the target array to perform host input/output (I/O) operations in place of the source array and (ii) the source and target arrays to perform a failover procedure in response to a timeout event, the failover procedure involving performance of further host I/O operations by the source array in place of the target array upon occurrence of the timeout event;
initiating a data migration process in which data is copied from the source array to the target array; and
while the data is copied from the source array to the target array during the data migration process, exchanging heartbeat signals between the source array and the target array to prevent occurrence of the timeout event.

### Claim 2 (depends on 1)

A method as in claim 1 wherein exchanging the heartbeat signals between the source array and the target array includes:
resetting a timeout counter of the source array in response to receipt of a data access instruction from the target array.

### Claim 3 (depends on 2)

A method as in claim 2 wherein resetting the timeout counter of the source array in response to receipt of the data access instruction from the target array includes:
conveying, as the data access instruction, a small computer system interface (SCSI) command from the target array to the source array, the SCSI command directing the source array to perform a data access operation in addition to resetting the timeout counter of the source array.

### Claim 4 (depends on 1)

A method as in claim 1 wherein exchanging the heartbeat signals between the source array and the target array includes:
resetting a timeout counter of the target array in response to receipt of a data access reply from the source array.

### Claim 5 (depends on 4)

A method as in claim 4 wherein resetting the timeout counter of the target array in response to receipt of the data access reply from the source array includes:
conveying, as the data access reply, a small computer system interface (SCSI) reply message from the source array to the target array, the SCSI reply message providing status of a SCSI operation performed by the source array in addition to resetting the timeout counter of the target array.

### Claim 6 (depends on 1)

A method as in claim 1, further comprising:
disabling the source and target arrays from performing the failover procedure in response to detection of completion of the data migration process.

### Claim 7 (depends on 6)

A method as in claim 6 wherein disabling the source and target arrays from performing the failover procedure in response to detection of completion of the data migration process includes:
updating a copied track counter of the target array in response to completion of copy operations in which tracks of the source array are copied to the target array;
identifying when the copied track counter indicates that all tracks of the source array are copied to the target array; and
after the copied track counter indicates that all tracks of the source array are copied to the target array, preventing the source and target arrays from performing the failover procedure.

### Claim 8 (depends on 6)

A method as in claim 6, further comprising:
after the source and target arrays are disabled from performing the failover procedure, encountering conditions of the timeout event and refraining from performing the failover procedure even after the conditions of the timeout event are encountered.

### Claim 9

A computer program product having a non-transitory computer readable medium storing a set of instruction for migrating data from a source array to a target array, the set of instructions, when performed by a computerized device, causing the computerized device to:
configure (i) the target array to perform host input/output (I/O) operations in place of the source array and (ii) the source and target arrays to perform a failover procedure in response to a timeout event, the failover procedure involving performance of further host I/O operations by the source array in place of the target array upon occurrence of the timeout event;
initiate a data migration process in which data is copied from the source array to the target array; and
while the data is copied from the source array to the target array during the data migration process, exchange heartbeat signals between the source array and the target array to prevent occurrence of the timeout event.

### Claim 10 (depends on 9)

A computer program product as in claim 9 wherein exchanging the heartbeat signals between the source array and the target array includes:
resetting a timeout counter of the source array in response to receipt of a data access instruction from the target array.

### Claim 11 (depends on 10)

A computer program product as in claim 10 wherein resetting the timeout counter of the source array in response to receipt of the data access instruction from the target array includes:
conveying, as the data access instruction, a small computer system interface (SCSI) command from the target array to the source array, the SCSI command directing the source array to perform a data access operation in addition to resetting the timeout counter of the source array.

### Claim 12 (depends on 9)

A computer program product as in claim 9 wherein exchanging the heartbeat signals between the source array and the target array includes:
resetting a timeout counter of the target array in response to receipt of a data access reply from the source array.

### Claim 13 (depends on 12)

A computer program product as in claim 12 wherein resetting the timeout counter of the target array in response to receipt of the data access reply from the source array includes:
conveying, as the data access reply, a small computer system interface (SCSI) reply message from the source array to the target array, the SCSI reply message providing status of a SCSI operation performed by the source array in addition to resetting the timeout counter of the target array.

### Claim 14 (depends on 9)

A computer program product as in claim 9 wherein the set of instructions, when performed by the computerized device, further cause the computerized device to:
disable the source and target arrays from performing the failover procedure in response to detection of completion of the data migration process.

### Claim 15 (depends on 14)

A computer program product as in claim 14 wherein disabling the source and target arrays from performing the failover procedure in response to detection of completion of the data migration process includes:
updating a copied track counter of the target array in response to completion of copy operations in which tracks of the source array are copied to the target array;
identifying when the copied track counter indicates that all tracks of the source array are copied to the target array; and
after the copied track counter indicates that all tracks of the source array are copied to the target array, preventing the source and target arrays from performing the failover procedure.

### Claim 16 (depends on 14)

A method as in claim 14 wherein the set of instructions, when performed by the computerized device, further cause the computerized device to:
after the source and target arrays are disabled from performing the failover procedure and conditions of the timeout event are encountered, refrain from performing the failover procedure even after the conditions of the timeout event are encountered.

### Claim 17

An electronic apparatus, comprising:
an interface;
a storage subsystem which forms a target array; and
control circuitry coupled to the interface, the control circuitry being constructed and arranged to:
configure (i) the target array to perform host input/output (I/O) operations in place of a source array and (ii) the source and target arrays to perform a failover procedure in response to a timeout event, the failover procedure involving performance of further host I/O operations by the source array in place of the target array upon occurrence of the timeout event,
initiate a data migration process in which data is copied from the source array to the target array through the interface, and
while the data is copied from the source array to the target array during the data migration process, direct an exchange of heartbeat signals between the source array and the target array to prevent occurrence of the timeout event.

### Claim 18 (depends on 17)

An electronic apparatus as in claim 17 wherein the control circuitry, when directing the exchange of the heartbeat signals between the source array and the target array, is constructed and arranged to:
reset a timeout counter of the source array in response to receipt of a data access instruction from the target array.

### Claim 19 (depends on 17)

An electronic apparatus as in claim 17 wherein the control circuitry, when directing the exchange of the heartbeat signals between the source array and the target array, is constructed and arranged to:
reset a timeout counter of the target array in response to receipt of a data access reply from the source array.

### Claim 20 (depends on 17)

An electronic apparatus as in claim 17 wherein the control circuitry is further constructed and arranged to:
disable the source and target arrays from performing the failover procedure in response to detection of completion of the data migration process.
