# US 12,217,039 B2 · Virtualized file server data sharing

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

- Number: US 12,217,039 B2
- Document ID: US12217039B2
- Status: Granted
- Kind: B2
- Application number: 17/169,137
- Filed: 2021-02-05
- Published: 2021-11-25
- Granted: 2025-02-04
- Earliest claimed: 2016-02-12
- Assignees: Nutanix, Inc.
- Applicants: Nutanix, Inc.
- Inventors: Anil Kumar Gopalapura Venkatesh; Richard James Sharpe; Durga Mahesh Arikatla; Kalpesh Ashok Bafna
- Web page: https://patentgrep.com/patent/US12217039B2

## CPC

- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/065: {Replication 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/201: {between storage system components}
- 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 11/2092: {Techniques of failing over between control units}
- 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/176: Support for shared access to files; File sharing support
- 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 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/3006: {where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems (multiprogramming arrangements G06F9/46; allocation of resources G06F9/50)}
- G06F 11/301: {where the computing system is a virtual computing platform, e.g. logically partitioned systems (virtual machines G06F9/45533; logical partitioning of resources G06F9/5077)}
- G06F 11/3409: {for performance assessment}
- G06F 11/3452: {Performance evaluation by statistical analysis}
- 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, and a first virtualized file server configured to receive a request to access a storage item located at a second virtualized file server, determine that the storage item is designated as being accessible by other virtualized file servers, identify an FSVM of the second virtualized file server at which the storage item is located, and forward the request to the FSVM of the second virtualized file server. The storage item may be designated as being accessible by other virtualized file servers when the storage item is associated with a predetermined tag value indicating that the storage item is shared among virtualized file servers. The predetermined tag value may be stored in a sharding map in association with the storage item.

## Claims

### Claim 1

At least one non-transitory computer readable medium encoded with instructions which, when executed, cause at least one processor to perform operations, the operations comprising:
detecting failure of a first file server virtual machine (FSVM) of a virtualized file server (VFS), the first FSVM hosted on a first computing node of a computing node cluster, the first FSVM configured to receive a first storage access operation sent to a first internet protocol (IP) address to facilitate the first storage access operation between a client and a virtualized file system of the VFS to access a first storage item of a namespace of storage items presented by the first FSVM, the namespace implemented using storage devices of a storage pool distributed across the computing node cluster; and
reassigning the first IP address corresponding to the first FSVM to a second FSVM of the VFS, the second FSVM hosted on a second computing node of the computing node cluster, the second FSVM configured to receive a second storage access operation sent to a second IP address to access a second storage item of the virtualized file system of the VFS, the second storage item being of the namespace of storage items, wherein the reassigning of the first IP address comprises configuring the second FSVM to receive a third storage access operation sent to the first IP address to access the first storage item of the namespace.

### Claim 2 (depends on 1)

The computer readable medium of claim 1, wherein the operations further comprise processing the first storage access operation to determine at least one storage location of the first storage item in the storage pool using a map.

### Claim 3 (depends on 2)

The computer readable medium of claim 2, wherein the reassigning of the first IP address further comprises configuring the second computing node to process the third storage access operation to determine the at least one storage location of the first storage item in the storage pool using the map.

### Claim 4 (depends on 3)

The computer readable medium of claim 3, wherein the reassigning of the first IP address further comprises configuring the second computing node to translate the third storage access operation to a block request at a filesystem hosted on the second computing node, the block request configured to access one or more data blocks of the first storage item at the at least one storage location in the storage pool.

### Claim 5 (depends on 2)

The computer readable medium of claim 2, wherein the operations further comprise translating the first storage access operation to a block request at a filesystem hosted on the first computing node, the block request configured to access one or more data blocks of the first storage item at the at least one storage location in the storage pool.

### Claim 6 (depends on 1)

The computer readable medium of claim 1, wherein the first storage access operation is issued by a user virtual machine running client software hosted on the first computing node.

### Claim 7 (depends on 1)

The computer readable medium of claim 1, wherein the operations further comprise selecting the second FSVM from a plurality of FSVMs hosted on computing nodes of the computing node cluster for reassignment of the first IP address.

### Claim 8 (depends on 7)

The computer readable medium of claim 7, wherein the operations further comprise selecting the second FSVM based on a failover path for the first FSVM identifying the second FSVM.

### Claim 9 (depends on 7)

The computer readable medium of claim 7, wherein the operations further comprise selecting the second FSVM based on a comparison between a number of outstanding or pending requests to the second FSVM and a number of outstanding or pending requests to at least another of the plurality of FSVMs.

### Claim 10 (depends on 2)

The at least one non-transitory computer readable medium of claim 2, wherein the namespace is implemented using storage devices of the storage pool, including at least one local storage device of the first computing node and at least one local storage device of the second computing node.

### Claim 11 (depends on 2)

The at least one non-transitory computer readable medium of claim 2, wherein the second FSVM is further configured to present the namespace of storage items.

### Claim 12 (depends on 2)

The at least one non-transitory computer readable medium of claim 2, wherein the first FSVM is configured to interact with a hypervisor to facilitate the first storage access operation.

### Claim 13 (depends on 1)

The computer readable medium of claim 1, wherein said detecting comprises detecting failure of the first FSVM or a first storage controller, the first FSVM and the first storage controller hosted on the first computing node; and
wherein the second FSVM and a second storage controller are hosted on the second computing node.

### Claim 14

A distributed computing system comprising:
a computing node cluster including a first computing node and a second computing node;
a storage pool including storage devices distributed across the computing node cluster;
a first file server virtual machine (FSVM) of a virtualized file server (VFS), the first FSVM hosted on the first computing node, the first FSVM configured to receive a first storage access operation sent to a first internet protocol (IP) address to facilitate the first storage access operation between a client and a virtualized file system of the VFS to access a first storage item of a namespace of storage items presented by the first FSVM, the namespace implemented using the storage pool;
a second FSVM of the VFS, the second FSVM hosted on the second computing node, the second FSVM configured to receive a second storage access operation sent to a second IP address to access a second storage item of the virtualized file system of the VFS, the second storage item being of the namespace of storage items; and
a health monitoring service running on the first computing node, the health monitoring service configured to reassign, responsive to detection of failure of the first FSVM, the first IP address corresponding to the first FSVM to the second FSVM, wherein the reassigning of the first IP address comprises configuring the second FSVM to receive a third storage access operation sent to the first IP address to access the first storage item of the namespace.

### Claim 15 (depends on 14)

The distributed computing system of claim 14, wherein the first computing node is configured to process the first storage access operation to determine at least one storage location of the first storage item in the storage pool using a map.

### Claim 16 (depends on 15)

The distributed computing system of claim 15, wherein the reassigning of the first IP address comprises configuring the second computing node to process the third storage access operation to determine the at least one storage location of the first storage item in the storage pool using the map.

### Claim 17 (depends on 16)

The distributed computing system of claim 16, wherein the reassigning of the first IP address further comprises configuring the second computing node to translate the third storage access operation to a block request at a filesystem hosted on the second computing node, the block request configured to access one or more data blocks of the first storage item at the at least one storage location in the storage pool.

### Claim 18 (depends on 15)

The distributed computing system of claim 15, wherein the first computing node is further configured to translate the first storage access operation to a block request at a filesystem hosted on the first computing node, the block request configured to access one or more data blocks of the first storage item at the at least one storage location in the storage pool.

### Claim 19 (depends on 15)

The distributed computing system of claim 15, wherein the first storage access operation is issued by a user virtual machine running client software hosted on the first computing node.

### Claim 20 (depends on 15)

The distributed computing system of claim 15, wherein the health monitoring service is further configured to select the second FSVM from a plurality of FSVMs hosted on computing nodes of the computing node cluster for reassignment of the first IP address.

### Claim 21 (depends on 20)

The distributed computing system of claim 20, wherein the second FSVM is selected based on a failover path for the first FSVM identifying the second FSVM.

### Claim 22 (depends on 20)

The distributed computing system of claim 20, wherein the second FSVM is selected based on a comparison between a number of outstanding or pending requests to the second FSVM and a number of outstanding or pending requests to at least another of the plurality of FSVMs.

### Claim 23 (depends on 14)

The distributed computing system of claim 14, wherein the namespace is implemented using storage devices of the storage pool, including at least one local storage device of the first computing node and at least one local storage device of the second computing node.

### Claim 24 (depends on 14)

The distributed computing system of claim 14, wherein the second FSVM is further configured to present the namespace of storage items.

### Claim 25 (depends on 14)

The distributed computing system of claim 14, wherein the first FSVM is configured to interact with a hypervisor to facilitate the first storage access operation.

### Claim 26 (depends on 14)

The distributed computing system of claim 14, further comprising a first storage controller hosted on the first computing node and a second storage controller hosted on the second computing node.

### Claim 27

A method comprising:
detecting failure of a first file server virtual machine (FSVM) of a virtualized file server (VFS), the first FSVM hosted on a first computing node of a computing node cluster, the first FSVM configured to receive a first storage access operation sent to a first internet protocol (IP) address to facilitate the first storage access operation between a client and a virtualized file system of the VFS to access a first storage item of a namespace of storage items presented by the first FSVM, the namespace implemented using storage devices of a storage pool distributed across the computing node cluster; and
reassigning the first IP address to a second FSVM, the second FSVM of the VFS, the second FSVM hosted on a second computing node of the computing node cluster, the second FSVM configured to receive a second storage access operation sent to a second IP address to access a second storage item of the virtualized file system of the VFS, the second storage item being of the namespace of storage items, wherein the reassigning of the first IP address comprises configuring the second FSVM to receive a third storage access operation sent to the first IP address to access the first storage item of the namespace.

### Claim 28 (depends on 27)

The method of claim 27, further comprising processing the first storage access operation to determine at least one storage location of the first storage item in the storage pool using a map.

### Claim 29 (depends on 28)

The method of claim 28, wherein the reassigning of the first IP address comprises configuring the second computing node to process the third storage access operation to determine the at least one storage location of the first storage item in the storage pool using the map.

### Claim 30 (depends on 29)

The method of claim 29, wherein the reassigning of the first IP address further comprises configuring the second computing node to translate the third storage access operation to a block request at a filesystem hosted on the second computing node, the block request configured to access one or more data blocks of the first storage item at the at least one storage location in the storage pool.

### Claim 31 (depends on 28)

The method of claim 28, further comprising translating the first storage access operation to a block request at a filesystem hosted on the first computing node, the block request configured to access one or more data blocks of the first storage item at the at least one storage location in the storage pool.

### Claim 32 (depends on 27)

The method of claim 27, wherein the first storage access operation is received from a user virtual machine running client software hosted on the first computing node.

### Claim 33 (depends on 27)

The method of claim 27, further comprising selecting the second FSVM from a plurality of FSVMs hosted on computing nodes of the computing node cluster for reassignment of the first IP address.

### Claim 34 (depends on 33)

The method of claim 33, further comprising selecting the second FSVM based on a failover path for the first FSVM identifying the second FSVM.

### Claim 35 (depends on 33)

The method of claim 33, further comprising selecting the second FSVM based on a comparison between a number of outstanding or pending requests to the second FSVM and a number of outstanding or pending requests to at least another of the plurality of FSVMs.

### Claim 36 (depends on 27)

The method of claim 27, wherein the namespace is implemented using storage devices of the storage pool, including at least one local storage device of the first computing node and at least one local storage device of the second computing node.

### Claim 37 (depends on 27)

The method of claim 27, wherein the second FSVM is further configured to present the namespace of storage items.

### Claim 38 (depends on 27)

The method of claim 27, wherein the first FSVM is configured to interact with a hypervisor to facilitate the first storage access operation.

### Claim 39 (depends on 27)

The method of claim 27, wherein said detecting comprises detecting failure of the first FSVM or a first storage controller, the first FSVM and the first storage controller hosted on the first computing node; and
wherein the second FSVM and a second storage controller are hosted on the second computing node.
