IP Library Granted Patent US 9,886,443
Granted Patent B1
US 9,886,443 · App. 14/570,307 · Granted Feb 6, 2018

Distributed NFS metadata server

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,886,443
App. No.
14/570,307
Filed
Dec 15, 2014
Granted
Feb 6, 2018
Kind
B1
Examiner
JAMI, HARES
Art Unit
2162
USPC
707/813
Abstract

An architecture for implementing a distributed metadata system in a virtualization environment comprising a plurality of servers, wherein each server may access and operate upon the entirety of the metadata in the virtualization environment. In response to a request received at a server to operate upon the metadata, existing metadata associated with the request is read by the server. The server performs one or more updates based upon the retrieved metadata, and attempts to update the corresponding stored metadata. In some embodiments, attempting to update the stored metadata comprises reading the metadata again and comparing it to the originally retrieved metadata, and performing the update only if the newly retrieved metadata matches the originally retrieved metadata.

Claims (59)

1. A computer-implemented method for operating upon distributed metadata in a distributed file system environment, comprising:

maintaining a plurality of servers in a distributed file system environment, wherein the distributed file system comprises data correlating to metadata distributed across the plurality of servers;

receiving, at a server of the plurality of servers, a request to perform an operation on metadata stored in a metadata repository of the distributed file system environment;

reading, by the server, the metadata from the metadata repository associated with the received request;

attempting, by the server, to update the metadata at the metadata repository corresponding to the metadata read from the metadata repository, based at least in part upon the received request, wherein attempting to update the metadata at the metadata repository comprises:

retrieving the metadata from the metadata repository,

comparing newly retrieved metadata to originally retrieved metadata, and

updating the metadata at the metadata repository only if the newly retrieved metadata matches the originally retrieved metadata; and

in response to an unsuccessful attempt to update the metadata at the metadata repository, executing a garbage collection at a later time to remove metadata entities that lack a valid parent metadata entity by detecting inconsistencies between a reference count of metadata corresponding to a file and an actual number of other metadata entities that reference the file.

2. The method of claim 1 , wherein the distributed file system is implemented as part of a virtualization environment.

3. The method of claim 2 , wherein the virtualization environment comprises a cluster of one or more servers, and wherein the request may be received and processed by any server of the one or more servers.

4. The method of claim 1 , wherein the request comprises a request to create a new file.

5. The method of claim 1 , wherein the retrieved metadata corresponds to a parent directory of a metadata entity to be modified by the operation.

6. The method of claim 1 , wherein the request comprises a request to move a file from a source directory to a destination directory, and wherein the retrieved metadata corresponds to metadata for the source directory and the destination directory.

7. The method of claim 1 , wherein retrieved metadata corresponds to at least a first and a second metadata entity, and attempting to update the metadata at the metadata repository comprises attempting to update the first metadata entity with a proposed modification prior to attempting to update the second metadata entity.

8. The method of claim 7 , further comprising applying the proposed modification to the first metadata entity in response to a successful update of the second metadata entity.

9. The method of claim 7 , wherein the proposed modification is used to roll back or roll forward the operation in response to an unsuccessful attempt to update the second metadata entity.

10. The method of claim 1 , wherein attempting to update the metadata at the metadata repository does not comprise obtaining a lock on the metadata.

11. The method of claim 1 , wherein in response to an unsuccessful attempt to update the metadata at the metadata repository, re-attempting to update the metadata at the metadata repository at a later time.

12. A system for operating upon distributed metadata in a distributed file system environment, comprising:

a computer processor to execute a set of program code instructions; and

a memory to hold the program code instructions, in which the program code instructions comprises program code to perform,

maintaining a plurality of servers in a distributed file system environment, wherein the distributed file system comprises data correlating to metadata distributed across the plurality of servers;

receiving, at a server of the plurality of servers, a request to perform an operation on metadata stored in a metadata repository of the distributed file system environment;

reading, by the server, the metadata from the metadata repository associated with the received request;

attempting, by the server, to update the metadata at the metadata repository corresponding to the metadata read from the metadata repository, based at least in part upon the received request, wherein attempting to update the metadata at the metadata repository comprises:

retrieving the metadata from the metadata repository,

comparing newly retrieved metadata to originally retrieved metadata, and

updating the metadata at the metadata repository only if the newly retrieved metadata matches the originally retrieved metadata; and

in response to an unsuccessful attempt to update the metadata at the metadata repository, executing a garbage collection at a later time to remove metadata entities that lack a valid parent metadata entity by detecting inconsistencies between a reference count of metadata corresponding to a file and an actual number of other metadata entities that reference the file.

13. The system of claim 12 , wherein the distributed file system is implemented as part of a virtualization environment.

14. The system of claim 13 , wherein the virtualization environment comprises a cluster of one or more servers, and wherein the request may be received and processed by any server of the one or more servers.

15. The system of claim 12 , wherein the request comprises a request to create a new file.

16. The system of claim 12 , wherein the retrieved metadata corresponds to a parent directory of a metadata entity to be modified by the operation.

17. The system of claim 12 , wherein the request comprises a request to move a file from a source directory to a destination directory, and wherein the retrieved metadata corresponds to metadata for the source directory and the destination directory.

18. The system of claim 12 , wherein retrieved metadata corresponds to at least a first and a second metadata entity, and attempting to update the metadata at the metadata repository comprises attempting to update the first metadata entity with a proposed modification prior to attempting to update the second metadata entity.

19. The system of claim 18 , wherein the proposed modification is applied to the first metadata entity in response to a successful update of the second metadata entity.

20. The system of claim 18 , wherein the proposed modification is used to roll back or roll forward the operation in response to an unsuccessful attempt to update the second metadata entity.

21. The system of claim 12 , wherein attempting to update the metadata at the metadata repository does not comprise obtaining a lock on the metadata.

22. The system of claim 12 , wherein in response to an unsuccessful attempt to update the metadata at the metadata repository, re-attempting to update the metadata at the metadata repository at a later time.

23. A computer program product embodied in a non-transitory computer readable medium, the computer readable medium having stored thereon a sequence of instructions which, when executed by a processor causes the processor to execute a process for operating upon distributed metadata in a distributed file system environment, comprising:

maintaining a plurality of servers in a distributed file system environment, wherein the distributed file system comprises data correlating to metadata distributed across the plurality of servers;

receiving, at a server of the plurality of servers, a request to perform an operation on metadata stored in a metadata repository of the distributed file system environment;

reading, by the server, the metadata from the metadata repository associated with the received request;

attempting, by the server, to update the metadata at the metadata repository corresponding to the metadata read from the metadata repository, based at least in part upon the received request, wherein attempting to update the metadata at the metadata repository comprises:

retrieving the metadata from the metadata repository,

comparing newly retrieved metadata to originally retrieved metadata, and

updating the metadata at the metadata repository only if the newly retrieved metadata matches the originally retrieved metadata; and

in response to an unsuccessful attempt to update the metadata at the metadata repository, executing a garbage collection at a later time to remove metadata entities that lack a valid parent metadata entity by detecting inconsistencies between a reference count of metadata corresponding to a file and an actual number of other metadata entities that reference the file.

24. The computer program product of claim 23 , wherein the distributed file system is implemented as part of a virtualization environment.

25. The computer program product of claim 24 , wherein the virtualization environment comprises a cluster of one or more servers, and wherein the request may be received and processed by any server of the one or more servers.

26. The computer program product of claim 23 , wherein the request comprises a request to create a new file.

27. The computer program product of claim 23 , wherein the retrieved metadata corresponds to a parent directory of a metadata entity to be modified by the operation.

28. The computer program product of claim 23 , wherein the request comprises a request to move a file from a source directory to a destination directory, and wherein the retrieved metadata corresponds to metadata for the source directory and the destination directory.

29. The computer program product of claim 23 , wherein retrieved metadata corresponds to at least a first and a second metadata entity, and attempting to update the metadata at the metadata repository comprises attempting to update the first metadata entity with a proposed modification prior to attempting to update the second metadata entity.

30. The computer program product of claim 29 , wherein the proposed modification is applied to the first metadata entity in response to a successful update of the second metadata entity.

31. The computer program product of claim 29 , wherein the proposed modification is used to roll back or roll forward the operation in response to an unsuccessful attempt to update the second metadata entity.

32. The computer program product of claim 23 , wherein attempting to update the metadata at the metadata repository does not comprise obtaining a lock on the metadata.

33. The computer program product of claim 23 , wherein in response to an unsuccessful attempt to update the metadata at the metadata repository, re-attempting to update the metadata at the metadata repository at a later time.

Assignments (4)
SECURITY INTEREST Recorded Feb 13, 2025
From: NUTANIX, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070206/0463 →
RELEASE OF SECURITY INTEREST Recorded Sep 28, 2016
From: GOLDMAN SACHS SPECIALTY LENDING GROUP, L.P., AS AGENT
To: NUTANIX, INC.
Reel/Frame 040168/0586 →
SECURITY INTEREST Recorded Apr 15, 2016
From: NUTANIX, INC.
To: GOLDMAN SACHS SPECIALTY LENDING GROUP, L.P., AS AGENT
Reel/Frame 038440/0712 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2015
From: GUPTA, KARAN; KONKA, PAVAN KUMAR; KAUFMANN, ALEXANDER J.
To: NUTANIX, INC.
Reel/Frame 036918/0646 →