# US 12,007,943 B2 · Virtual machine object version control

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

- Number: US 12,007,943 B2
- Document ID: US12007943B2
- Status: Granted
- Kind: B2
- Application number: 16/679,113
- Filed: 2019-11-08
- Published: 2020-03-05
- Granted: 2024-06-11
- Earliest claimed: 2016-03-03
- Assignees: Nutanix, Inc.
- Applicants: Nutanix, Inc.
- Inventors: Parthasarathy Ramachandran; Karthik Chandrasekaran
- Web page: https://patentgrep.com/patent/US12007943B2

## CPC

- G06F 16/128: {Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion (error detection or correction of the data by redundancy in operations or in hardware G06F11/14, G06F11/16)}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1469: {Backup restoration techniques}
- G06F 2009/45575: {Starting, stopping, suspending or resuming virtual machine instances}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2201/815: Virtual
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for indexing virtual machine version snapshots in a virtualization environment commences upon receiving a request (e.g., from an administrator or agent) to initiate a virtual machine version snapshot operation on a subject virtual machine. Processes within or controlled by the subject virtual machine are requested to temporarily suspend transactions and file I/O. When the processes that have been requested to temporarily suspend transactions and file I/O acknowledge quiescence, the method continues by generating a virtual machine version snapshot data structure. An entry in an index is formed from the virtual machine version snapshot data structure. Multiple instances of virtual machine version snapshot data structures can be stored in the index, and the index can be queried to determine the state that a virtual machine had at any of the snapshotted moments in time.

## Claims

### Claim 1

A method, comprising:
identifying virtual machines that access a file in a virtual machine volume;
sending a quiesce command to the virtual machines to place the virtual machines into a quiesced state;
waiting for acknowledgement of the quiesce command from the virtual machines that access the file, wherein the acknowledgement indicates that an acknowledging virtual machine is quiesced and write requests to at least the file are suspended for the acknowledging virtual machine while the acknowledging virtual machine is in the quiesced state;
storing, after receiving acknowledgement of the quiesce command from the virtual machines that access the file, a snapshot of the virtual machine volume, wherein the snapshot of the virtual machine volume corresponds to the file in the virtual machine volume;
storing a virtual machine attribute value of a virtual machine of the virtual machines in the quiesced state, wherein the virtual machine attribute value represents a state of a computing resource of the virtual machine, and the virtual machine attribute value is stored separately from the snapshot of the virtual machine volume;
storing an association between the virtual machine attribute value and the snapshot; and
releasing the virtual machines from the quiesced state after storing the snapshot and the virtual machine attribute value.

### Claim 2 (depends on 1)

The method of claim 1, wherein the virtual machine attribute value and the snapshot is stored in persistent storage.

### Claim 3 (depends on 1)

The method of claim 1, wherein the virtual machine attribute value is requested from a hypervisor.

### Claim 4 (depends on 1)

The method of claim 1, wherein the virtual machine attribute value comprises at least one of, an allocated memory descriptor or a file descriptor.

### Claim 5 (depends on 1)

The method of claim 1, wherein the virtual machine attribute value comprises at least one of, memory contents based on an allocated memory descriptor, or file contents based on a file descriptor.

### Claim 6 (depends on 1)

The method of claim 1, further comprising processing a query pertaining to the virtual machine attribute value.

### Claim 7 (depends on 1)

The method of claim 1, further comprising forming a hash table from at least a portion of the virtual machine attribute value and the snapshot.

### Claim 8 (depends on 1)

The method of claim 1, further comprising processing a query pertaining to the virtual machine attribute value and the snapshot by accessing a hash table.

### Claim 9 (depends on 1)

The method of claim 1, wherein the virtual machine attribute value comprises at least one, paging register entry, list of open files, or state variable.

### Claim 10

A non-transitory computer readable medium having stored thereon a sequence of instructions which, when executed by a processor performs a set of acts comprising:
identifying virtual machines that access a file in a virtual machine volume;
sending a quiesce command to the virtual machines to place the virtual machines into a quiesced state;
waiting for acknowledgement of the quiesce command from the virtual machines that access the file, wherein the acknowledgement indicates that an acknowledging virtual machine is quiesced and write requests to at least the file are suspended for the acknowledging virtual machine while the acknowledging virtual machine is in the quiesced state;
storing, after receiving acknowledgement of the quiesce command from the virtual machines that access the file, a snapshot of the virtual machine volume, wherein the snapshot of the virtual machine volume corresponds to the file in the virtual machine volume;
storing a virtual machine attribute value of a virtual machine of the virtual machines in the quiesced state, wherein the virtual machine attribute value represents a state of a computing resource of the quiesced virtual machine, and the virtual machine attribute value is stored separately from the snapshot of the virtual machine volume;
storing an association between the virtual machine attribute value and the snapshot; and
releasing the virtual machines from the quiesced state after storing the snapshot and the virtual machine attribute value.

### Claim 11 (depends on 10)

The computer readable medium of claim 10, wherein the virtual machine attribute value and the snapshot is stored in persistent storage.

### Claim 12 (depends on 10)

The computer readable medium of claim 10, wherein the virtual machine attribute value is requested from a hypervisor.

### Claim 13 (depends on 10)

The computer readable medium of claim 10, wherein the virtual machine attribute value comprises at least one of, an allocated memory descriptor or a file descriptor.

### Claim 14 (depends on 10)

The computer readable medium of claim 10, wherein the virtual machine attribute value comprises at least one of, memory contents based on an allocated memory descriptor, or file contents based on a file descriptor.

### Claim 15 (depends on 10)

The computer readable medium of claim 10, wherein the set of acts further comprise processing a query pertaining to the virtual machine attribute value.

### Claim 16 (depends on 10)

The computer readable medium of claim 10, wherein the set of acts further comprise forming a hash table from at least a portion of the virtual machine attribute value and the snapshot.

### Claim 17 (depends on 10)

The computer readable medium of claim 10, wherein the set of acts further comprise processing a query pertaining to the virtual machine attribute value and the snapshot by accessing a hash table.

### Claim 18 (depends on 10)

The computer readable medium of claim 10, wherein the virtual machine attribute value comprises at least one, paging register entry, list of open files, or state variable.

### Claim 19

A system, comprising:
a storage medium having stored thereon a sequence of instructions; and
a processor that executes the sequence of instructions to cause the processor or processors to perform a set of acts, the set of acts comprising:
identifying virtual machines that access a file in a virtual machine volume;
sending a quiesce command to the virtual machines to place the virtual machines into a quiesced state;
waiting for acknowledgement of the quiesce command from the virtual machines that access the file, wherein the acknowledgement indicates that an acknowledging virtual machine is quiesced and write requests to at least the file are suspended for the acknowledging virtual machine while the acknowledging virtual machine is in the quiesced state;
storing, after receiving acknowledgement of the quiesce command from the virtual machines that access the file, a snapshot of the virtual machine volume, wherein the snapshot of the virtual machine volume corresponds to the file in the virtual machine volume;
storing a virtual machine attribute value of a virtual machine of the virtual machines in the quiesced state, wherein the virtual machine attribute value represents a state of a computing resource of the virtual machine, and the virtual machine attribute value is stored separately from the snapshot of the virtual machine volume;
storing an association between the virtual machine attribute value and the snapshot; and
releasing the virtual machines from the quiesced state after storing the snapshot and the virtual machine attribute value.

### Claim 20 (depends on 19)

The system of claim 19, wherein the virtual machine attribute value and the snapshot is stored in persistent storage.

### Claim 21

A computer readable medium, comprising:
providing a user interface for accessing a data structure comprising a set of a virtual machine attribute values and a snapshot of a virtual machine volume corresponding to a file in the virtual machine volume accessed by a virtual machine, the virtual machine attribute values and the snapshot were stored while the virtual machine was in a quiesced state, and the virtual machine was released from the quiesced state after storing the virtual machine attribute values and the snapshot,
wherein virtual machines identified as having accessed the file in the virtual machine volume were sent a quiesce command, the virtual machine attribute value and the snapshot of the virtual machine volume and are stored after waiting for acknowledgement of the quiesce command from the virtual machines that accessed the file, the acknowledgement indicates that an acknowledging virtual machine is in a quiesced state and write requests to at least the file are suspended for the acknowledging virtual machine while the acknowledging virtual machine is in the quiesced state, the snapshot of the virtual machine volume corresponds to the file in the virtual machine volume, the virtual machine attribute values represent a state of a computing resource of the quiesced virtual machine, the virtual machine attribute values are stored separately from the snapshot of the virtual machine volume, and the data structure further comprises a stored association between a respective virtual machine attribute value and a snapshot of the virtual machine volume; and
performing a lookup operation on an index of the data structure in response to input received from the user interface; and
restoring a previous version of a data object corresponding to the lookup operation.

### Claim 22 (depends on 21)

The computer readable medium of claim 21, wherein the lookup operation corresponds to the virtual machine identified at the user interface.

### Claim 23 (depends on 21)

The computer readable medium of claim 21, wherein the lookup operation corresponds to a plurality of virtual machines.

### Claim 24 (depends on 21)

The computer readable medium of claim 21, wherein the lookup operation corresponds to a date range provided at the user interface.

### Claim 25 (depends on 21)

The computer readable medium of claim 21, wherein the virtual machine attribute value comprises at least one, paging register entry, list of open files, or state variable.

### Claim 26 (depends on 21)

The computer readable medium of claim 21, wherein restoring the previous version of the data object further comprises restoring the state of the virtual machine.
