# US 10,481,895 B2 · Virtualized file server rolling upgrade

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

- Number: US 10,481,895 B2
- Document ID: US10481895B2
- Status: Granted
- Kind: B2
- Application number: 15/422,258
- Filed: 2017-02-01
- Published: 2017-08-17
- Granted: 2019-11-19
- Earliest claimed: 2016-02-12
- Assignees: Nutanix, Inc.
- Applicants: Nutanix, Inc.
- Inventors: Kalpesh Ashok Bafna; Aroosh Sohi; Alexander Michael Bunch
- Web page: https://patentgrep.com/patent/US10481895B2

## CPC

- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 3/065: {Replication mechanisms}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 9/4406: {Loading of operating system}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/0712: {in a virtual computing platform, e.g. logically partitioned systems}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1464: {for networked environments}
- G06F 11/1484: {involving virtual machines}
- G06F 11/2025: {using centralised failover control functionality}
- G06F 11/2033: {switching over of hardware resources}
- G06F 11/2035: {without idle spare hardware}
- G06F 11/2046: {where the redundant components share persistent storage (G06F11/2043 takes precedence)}
- G06F 11/2058: {using more than 2 mirrored copies}
- G06F 11/2069: {Management of state, configuration or failover}
- G06F 16/176: Support for shared access to files; File sharing support
- G06F 16/1727: {Details of free space management performed by the file system (saving storage space on storage systems G06F3/0608; management of blocks in storage devices G06F3/064)}
- G06F 16/1774: {Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files}
- G06F 16/183: {Provision of network file services by network file servers, e.g. by using NFS, CIFS (network file access protocols H04L67/1097)}
- G06F 16/1844: {Management specifically adapted to replicated file systems}
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 21/53: by executing in a restricted environment, e.g. sandbox or secure virtual machine
- G06F 21/56: Computer malware detection or handling, e.g. anti-virus arrangements
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F 21/78: to assure secure storage of data (address-based protection against unauthorised use of memory G06F12/14; record carriers for use with machines and with at least a part designed to carry digital markings G06K19/00)
- H04L 41/06: Management of faults, events, alarms or notifications
- H04L 41/082: the condition being updates or upgrades of network functionality
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2009/45587: {Isolation or security of virtual machine instances}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F 2201/80: Database-specific techniques
- G06F 2201/815: Virtual
- G06F 2201/825: the problem or solution involving locking
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F 2201/87: Monitoring of transactions
- G06F 2221/034: Test or assess a computer or a system
- G06F 2221/2101: Auditing as a secondary aspect
- G06F 2221/2141: Access rights, e.g. capability lists, access control lists, access tables, access matrices
- G06F 2221/2145: Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
- H04L 41/0859: by keeping history of different configuration generations or by rolling back to previous configuration versions
- H04L 41/5009: Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

In one embodiment, a system for managing a virtualization environment includes a set of host machines, each of which includes a hypervisor, virtual machines, and a virtual machine controller, one or more virtual disks comprising a plurality of storage devices and accessible by the virtual machine controllers, and a deployment system configured to receive a request to upgrade a virtualized file server on a plurality of host machines from a first program code version to a second program code version, and, for each host machine, request an upgrade token. When the host machine acquires the upgrade token, the deployment system is configured to generate a snapshot of a code image associated with the second program code version, and provide the snapshot to the host machine via the virtual disk. The virtual machine controller located on the host machine stores the snapshot on a storage device associated with the host machine.

## Claims

### Claim 1

A system comprising:
a virtualized file server (VFS) comprising a plurality of user virtual machines (VMs), the virtualized file server configured to provide file services to additional virtual machines hosted by one or more host machines;
a deployment server configured to upgrade the VFS from a first code version to a second code version by performing actions comprising:
generating a snapshot of a code image associated with the second program code version;
providing the snapshot to a selected user VM of the one or more user VMs when the selected user VM has acquired an upgrade token, the upgrade token configured for association with a single one of the user VMs at a time;
detaching an existing code image from the selected user VM, wherein the selected user VM is located on a host machine;
attaching the snapshot to the selected user VM; and
causing the selected user VM to boot from the snapshot.

### Claim 2 (depends on 1)

The system of claim 1, wherein when the snapshot has been attached to the selected user VM, the deployment server is further configured to release the upgrade token acquired by the selected user VM.

### Claim 3 (depends on 1)

The system of claim 1, wherein the snapshot comprises metadata identifying one or more locations of blocks of the code image on a first storage device associated with the host machine.

### Claim 4 (depends on 1)

The system of claim 1,
wherein the snapshot comprises metadata identifying a location of at least one block of the a code image on a second storage device associated with a server host machine.

### Claim 5

One or more computer-readable non-transitory storage media, the media encoded with instructions for performing operations comprising:
receiving a request to upgrade a virtualized file server, the virtualized file server comprising a plurality of user virtual machines (VMs) configured to provide file services to additional virtual machines hosted by one or more host machines, from a first program code version to a second program code version;
generating a snapshot of a code image associated with the second program code version;
providing the snapshot to a selected user VM of the multiple user VMs when the selected user VM has acquired an upgrade token, the upgrade token configuration for association with a single one of the user VMs at a time;
detaching an existing code image from the selected user VM, wherein the user VM is located on a host machine;
attaching the snapshot to the selected user VM; and
causing the selected user VM to boot from the snapshot.

### Claim 6 (depends on 5)

The media of claim 5, wherein the operations further comprise, when the snapshot has been attached to the user VM on the host machine, releasing the upgrade token acquired by the selected user VM.

### Claim 7 (depends on 5)

The media of claim 5, wherein the snapshot comprises metadata identifying one or more locations of blocks of the code image on a first storage device associated with the host machine.

### Claim 8 (depends on 5)

The media of claim 5,
wherein the snapshot comprises metadata identifying a location of at least one block of a code image on a second storage device associated with a server host machine.

### Claim 9

A method comprising:
receiving a request to upgrade a virtualized file server, the virtualized file server comprising a plurality of user virtual machines (VMs) configured to provide file services to additional virtual machines hosted by one or more host machines, from a first program code version to a second program code version;
generating a snapshot of a code image associated with the second program code version; and
providing the snapshot to a selected user VM of the plurality of user VMs when the selected user VM has acquired an upgrade token, the upgrade token configuration for association with a single one of the user VM at a time;
detaching an existing code image from the selected user VM, wherein the selected user VM is located on a host machine; and
attaching the snapshot to the selected user VM; and
causing the selected user VM to boot from the snapshot.

### Claim 10 (depends on 9)

The method of claim 9, further comprising:
when the snapshot has been attached to the selected user VM on the host machine, releasing the upgrade token acquired by the selected user VM.

### Claim 11 (depends on 9)

The method of claim 9, wherein the snapshot comprises metadata identifying one or more locations of blocks of the code image on a first storage device associated with the host machine.

### Claim 12 (depends on 9)

The system method of claim 9,
wherein the snapshot comprises metadata identifying a location of at least one block of a code image on a second storage device associated with a server host machine.

### Claim 13

A system comprising:
a virtualized file server (VFS) comprising a plurality of user virtual machines (VMs), the VFS configured to provide file services to additional virtual machines hosted by one or more host machines;
a deployment server configured to upgrade one or more user VMs of the VFS from a first code version to a second code version by performing actions comprising:
generating a snapshot of a code image associated with the second program code version;
providing the snapshot to a selected user VM of the one or more user VMs when the selected user VM has acquired an upgrade token, the upgrade token configured for association with a single one of the user VMs at a time,
wherein during at least a portion of detaching an existing code image from the selected user VM located on a host machine and attaching the snapshot to the selected user VM, a storage device and IP address of the host machine are replaced by a storage device and IP address of another host machine.

### Claim 14

A method comprising:
receiving a request to upgrade a virtualized file server (VFS) comprising a plurality of user virtual machines (VMs), the VFS configured to provide file services to additional virtual machines hosted by one or more host machines, from a first program code version to a second program code version;
generating a snapshot of a code image associated with the second program code version; and
providing the snapshot to a selected user VM of the multiple user VMs when the selected user VM has acquired an upgrade token, the upgrade token configuration for association with a single one of the user VM at a time;
wherein during at least a portion of detaching an existing code image and attaching the snapshot to the selected user VM on a host machine, a storage device and IP address of the host machine are replaced by a storage device and IP address of another host machine.
