# US 2014/0208012 A1 · Virtual disk replication using log files

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

- Number: US 2014/0208012 A1
- Document ID: US20140208012A1
- Status: Published application
- Kind: A1
- Application number: 14/221,290
- Filed: 2014-03-21
- Published: 2014-07-24
- Earliest claimed: 2011-07-22
- Assignees: Microsoft Corporation
- Applicants: Microsoft Corporation
- Inventors: Sriravi Kotagiri; Rahul Shrikant Newaskar; Palash Kar; Shreesh Rajendra Dubey
- Web page: https://patentgrep.com/patent/US20140208012A1

## CPC

- G06F 3/065: {Replication mechanisms}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F 11/1471: involving logging of persistent data for recovery
- G06F 11/2074: {Asynchronous techniques}
- G06F 2201/815: Virtual
- G06F 2201/855: Details of asynchronous mirroring using a journal to transfer not-yet-mirrored changes
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques involving replication of virtual machines at a target site are described. One representative technique includes an apparatus including a virtual machine configured to provide storage access requests targeting a virtual disk. A storage request processing module is coupled to the virtual machine to receive the storage access requests and update the virtual disk as directed by the storage access requests. A replication management module is coupled to the virtual machine to receive the storage access requests in parallel with the storage request processing module, and to store information associated with the storage access requests in a log file(s). The log file may be transferred to a destination as a recovery replica of at least a portion of the virtual disk.

## Claims

### Claim at position 1

1-20. (canceled)

### Claim 21

Computer-readable media having computer-executable instructions stored thereon, wherein the computer-executable instructions, in response to execution, cause a virtual machine host device to perform operations, the operations comprising:
queuing write requests of a primary virtual machine into a first queue;
queuing the write requests issued by the primary virtual machine into a second queue;
updating a virtual disk utilized by the primary virtual machine according to the queued write requests of the first queue;
updating a log file according to the queued write requests of the second queue; and
transferring the log file to facilitate generation of a replicated virtual disk of a target virtual machine.

### Claim 22 (depends on 21)

The computer-readable media of claim 21, wherein the operations further comprise:
requesting that the log file be transferred for use by the recovery virtual machine;
redirecting new write requests to at least one new log file;
writing write requests that were pending prior to the redirection to the at least one new log file;
providing a completion response after the write requests that were pending prior to the redirection are all written to the at least one new log file; and
in response to the completion response, transferring the at least one new log file.

### Claim 23 (depends on 21)

The computer-readable media of claim 21, wherein the operations further comprise:
requesting an application-consistent snapshot of one or more components of the primary virtual machine; and
completing write operations to the virtual disk according to the application-consistent snapshot.

### Claim 24 (depends on 21)

The computer-readable media of claim 21, wherein the computer-executable instructions further cause the log file to be stored in memory as it is being updated.

### Claim 25 (depends on 24)

The computer-readable media of claim 24, wherein the operations further comprise:
transferring the log file from the memory to an address associated with the recovery virtual machine.

### Claim 26 (depends on 24)

The computer-readable media of claim 24, wherein the operations further comprise:
transferring the log file from the memory to a non-volatile storage device in response to an occurrence of a triggering event.

### Claim 27 (depends on 26)

The computer-readable media of claim 26, wherein the triggering event is associated with a threshold size for the log file.

### Claim 28 (depends on 21)

The computer-readable media of claim 21, wherein the operations further comprise:
creating a second log file at a target server in response to a request to migrate the primary virtual machine to the target server;
updating the second log file using duplications of the write requests that are being used to update the log file; and
utilizing the second log file in connection with the target virtual machine at the target server.

### Claim 29

A computing device, comprising:
a memory and a processor that respectively store and execute instructions, including instructions that implement:
a virtual machine that generates a plurality of storage access requests targeted to a virtual disk;
a storage request processing module that receives the plurality of storage access requests and that updates the virtual disk according to the storage access requests;
a replication management module that also receives the storage access requests and that stores information associated with the storage access requests in at least one log file; and
a transfer module that transfers the at least one log file to a destination as a recovery log for at least a portion of the virtual disk.

### Claim 30 (depends on 29)

The computing device of claim 29, wherein:
the storage request processing module comprises:
a virtual disk request queue that queues the received storage access requests; and
a virtual disk request processing module that updates the virtual disk with data associated with the storage access requests queued in the virtual disk request queue; and
the replication management module comprises:
a log request queue that queues the received storage access requests; and
a log file request processing module that updates the at least one log file based on the storage access requests queued in the log request queue.

### Claim 31 (depends on 29)

The computing device of claim 29, wherein the instructions also implement:
a virtual disk parser module that includes both the virtual disk request queue and the log request queue.

### Claim 32 (depends on 29)

The computing device of claim 29, wherein the memory also stores the at least one log file.

### Claim 33 (depends on 32)

The computing device of claim 32, wherein the instructions also implement:
a storage write control module that initiates the transfer of the at least one log file from the memory to a non-volatile storage device in response to an occurrence of a triggering event.

### Claim 34 (depends on 29)

The computing device of claim 29, wherein the at least one log file includes a data structure comprising:
a log file header that includes an address of an end of the at least one log file and a size of metadata blocks of the at least one log file;
a plurality of metadata blocks, each including a metadata header and one or more metadata entries, wherein the metadata header includes a location of a previous metadata block, and each metadata entry includes a location and length of the data associated with each metadata block; and
a plurality of data blocks reflecting the updates to the virtual disk.

### Claim 35

A method of migrating a virtual disk from a source server to a destination server comprising:
queuing write requests of a virtual machine into a first queue while the virtual machine is executing on the source server;
queuing the write requests issued by the virtual machine into a second queue while the virtual machine is executing on the source server;
updating the virtual disk according to the queued write requests of the first queue;
updating a log file according to the queued write requests of the second queue;
transferring the log file to the destination server; and
replicating the virtual disk on the destination server according to the log file.

### Claim 36 (depends on 35)

The method of claim 35, wherein the method further comprises:
requesting that the log file be transferred for use by the recovery virtual machine;
redirecting new write requests to at least one new log file;
writing write requests that were pending prior to the redirection to the at least one new log file;
providing a completion response after the write requests that were pending prior to the redirection are all written to the at least one new log file; and
in response to the completion response, transferring the at least one new log file.

### Claim 37 (depends on 35)

The method of claim 35, wherein the method further comprises:
requesting an application-consistent snapshot of one or more components of the virtual machine; and
completing write operations to the virtual disk according to the application-consistent snapshot.

### Claim 38 (depends on 37)

The method of claim 37, wherein the method further comprises:
transferring the log file from a memory of the source server to a non-volatile storage device in response to an occurrence of a triggering event.

### Claim 39 (depends on 26)

The computer-readable media of claim 26, wherein the triggering event is associated with a threshold size for the log file.

### Claim 40 (depends on 35)

The method of claim 35, wherein the method further comprises:
creating a second log file at the destination server in response to a request to migrate the virtual machine to the destination server;
updating the second log file via duplication of the write requests that are being used to update the log file; and
utilizing the second log file in connection with execution of the virtual machine on the destination server.
