# US 10,481,894 B2 · Virtualized file server 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,894 B2
- Document ID: US10481894B2
- Status: Granted
- Kind: B2
- Application number: 15/422,249
- 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; Luong Ngo; Kavitha Pasikanti; Venkata Vamsi Krishna Kothuri; Mausumi Ranasingh
- Web page: https://patentgrep.com/patent/US10481894B2

## 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, the one or more virtual disks being accessible by the virtual machine controllers, where the virtual machine controllers conduct I/O transactions with the virtual disks, and an upgrade 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, for each host machine, 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 first storage device associated with the host machine.

## Claims

### Claim 1

A system comprising:
a virtualized file server (VFS) comprising a plurality of file server virtual machines (FSVMs), the virtualized file server configured to provide file services to additional virtual machines hosted by one or more host machines; and
an upgrade system configured to:
receive a request to upgrade the virtualized file server from a first program code version to a second program code version;
generate a snapshot of a code image associated with the second program code version, wherein the code image comprises a boot disk image; and
provide the snapshot to at least a selected host machine of the host machines via a_virtual disk to cause a virtual machine controller located on the selected host machine to store the snapshot on a first storage device associated with the selected host machine, wherein the snapshot comprises metadata identifying a location of the code image on the first storage device.

### Claim 2 (depends on 1)

The system of claim 1, wherein the metadata identifies locations of blocks of the code image on the first storage device.

### Claim 3 (depends on 1)

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

### Claim 4 (depends on 1)

The system of claim 1, wherein the upgrade system is further configured to detach an existing code image from a user virtual machine (VM) located on the selected host machine.

### Claim 5 (depends on 4)

The system of claim 4, wherein the upgrade system is further configured to attach the snapshot to the user VM.

### Claim 6 (depends on 5)

The system of claim 5, wherein the upgrade system is further configured to cause the user VM to boot from the snapshot.

### Claim 7

A system comprising:
a virtualized file server (VFS) comprising a plurality of file server virtual machines (FSVMs), the virtualized file server configured to provide file services to additional virtual machines hosted by one or more host machines; and
an upgrade system configured to:
receive a request to upgrade the virtualized file server from a first program code version to a second program code version,
generate a snapshot of a code image associated with the second program code version, wherein the code image comprises a boot disk image, wherein the code image is stored on a second storage device associated with a server host machine, and
provide the snapshot to at least a selected host machine of the host machines via a virtual disk to cause a virtual machine controller located on the selected host machine to store the snapshot on a first storage device associated with the selected host machine, wherein the snapshot comprises metadata identifying a location of the code image on the second storage device and information associating the selected host machine with the server host machine.

### Claim 8

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 file server virtual machines (FSVMs) 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, wherein the code image comprises a boot disk image; and
providing the snapshot to at least a selected one of the host machines via a virtual disk, to cause a virtual machine controller located on the selected host machine to store the snapshot on a first storage device associated with the selected host machine, wherein the snapshot comprises metadata identifying a location of the code image on the first storage device.

### Claim 9 (depends on 8)

The media of claim 8, wherein the metadata identifies locations of blocks of the code image on the first storage device.

### Claim 10 (depends on 8)

The media of claim 8, wherein the operations further comprise detaching an existing code image from a user virtual machine (VM) located on the selected host machine.

### Claim 11 (depends on 10)

The media of claim 10, wherein the operations further comprise attaching the snapshot to the user VM.

### Claim 12 (depends on 11)

The media of claim 11, wherein the operations further comprise causing the user VM to boot from the snapshot.

### Claim 13 (depends on 9)

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

### Claim 14

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 file server virtual machines (FSVMs) 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, wherein the code image comprises a boot disk image, wherein the code image is stored on a second storage device associated with a server host machine, and
providing the snapshot to at least a selected one of the host machines via a virtual disk, to cause a virtual machine controller located on the selected host machine to store the snapshot on a first storage device associated with the selected host machine, wherein the snapshot comprises metadata identifying a location of the code image on the second storage device.

### Claim 15

A method comprising:
receiving a request to upgrade a virtualized file server comprising a plurality of file server virtual machines (FSVMs) 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, wherein the code image comprises a boot disk image; and
providing the snapshot to at least a selected one of a selected one of the host machines via a virtual disk, to cause a virtual machine controller located on the selected host machine to store the snapshot on a first storage device associated with the selected host machine, wherein the snapshot comprises metadata identifying a location of the code image on the first storage device.

### Claim 16 (depends on 15)

The method of claim 15, wherein the metadata identifies locations of blocks of the code image on the first storage device.

### Claim 17 (depends on 16)

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

### Claim 18 (depends on 15)

The method of claim 15 further comprising detaching an existing code image from a user virtual machine located on the selected host machine.

### Claim 19 (depends on 18)

The method of claim 18 further comprising:
attaching the snapshot to the user VM; and
causing the user VM to boot from the snapshot.

### Claim 20

A method comprising:
receiving a request to upgrade a virtualized file server comprising a plurality of file server virtual machines (FSVMs) 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, wherein the code image comprises a boot disk image, wherein the code image is stored on a second storage device associated with a server host machine; and
providing the snapshot to at least a selected one of a selected one of the host machines via a virtual disk, to cause a virtual machine controller located on the selected host machine to store the snapshot on a first storage device associated with the selected host machine, wherein the snapshot comprises metadata identifying a location of the code image on the second storage device.

### Claim 21

A method comprising:
receiving a request to upgrade a virtualized file server comprising a plurality of file server virtual machines (FSVMs) 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, wherein the code image comprises a boot disk image; and
providing the snapshot to at least a selected one of a selected one of the host machines via a virtual disk, to cause a virtual machine controller located on the selected host machine to store the snapshot on a first storage device associated with the selected host machine, wherein the snapshot comprises metadata comprising location information associating the selected host machine with a server host machine, wherein the location information includes an identity of an FSVM providing access to a second storage device and a path name of the code image on the second storage device.
