Virtual File System Supporting Multi-Tiered Storage
A plurality of computing devices are interconnected via a local area network and comprise circuitry configured to implement a virtual file system comprising one or more instances of a virtual file system front end and one or more instances of a virtual file system back end. Each instance of the virtual file system front end may be configured to receive a file system call from a file system driver residing on the plurality of computing devices, and determine which of the one or more instances of the virtual file system back end is responsible for servicing the file system call. Each instance of the virtual file system back end may be configured to receive a file system call from the one or more instances of the virtual file system front end, and update file system metadata for data affected by the servicing of the file system call.
1 - 30 . (canceled)
31 . A system comprising:
a plurality of computing devices that are interconnected via a local area network, the circuitry of the plurality of computing devices configured to implement a virtual file system comprising one or more instances of a virtual file system front end and one or more instances of a virtual file system back end, wherein:
each of the one or more instances of the virtual file system front end is configured to:
receive a file system call from a virtual file system driver residing on the plurality of computing devices; and
determine which of the one or more instances of the virtual file system back end is responsible for servicing the file system call;
each of the one or more instances of the virtual file system back end is configured to:
receive a file system call from the one or more instances of the virtual file system front end; and
update file system metadata for data affected by the servicing of the file system call; and
the number of instances in the one or more instances of the virtual file system front end and the number of instances in the one or more instances of the virtual file system back end are variable independently of each other.
32 . The system of claim 31 , comprising a first electronically addressed nonvolatile storage device and a second electronically addressed nonvolatile storage device, wherein each instance of the virtual file system back end is configured to:
allocate memory of the first electronically addressed nonvolatile storage device and the second electronically addressed nonvolatile storage device such that data written to the virtual file system is distributed across the first electronically addressed nonvolatile storage device and the second electronically addressed nonvolatile storage device.
33 . The system of claim 32 , comprising a third nonvolatile storage device, wherein:
the first electronically addressed nonvolatile storage device and the second electronically addressed nonvolatile storage device are used for a first tier of storage; and
the third nonvolatile storage device is used for a second tier of storage.
34 . The system of claim 33 , wherein data written to the virtual file system is first stored to the first tier of storage and then migrated to the second tier of storage according to policies of the virtual file system.
35 . The system of claim 31 , wherein the virtual file system driver supports a virtual file system specific protocol, and at least one of the following legacy protocols: network file system protocol (NFS) and server message block (SMB) protocol.
36 . A system comprising:
a plurality of computing devices that reside on a local area network and that comprise a plurality of electronically addressed nonvolatile storage devices, wherein:
circuitry of the plurality of computing devices is configured to implement a virtual file system;
data stored to the virtual file system is distributed across the plurality of electronically addressed nonvolatile storage devices;
any particular quantum of data stored to the virtual file system is associated with an owning node and a storing node;
the owning node is a first one of the computing devices and maintains metadata for the particular quantum of data; and
the storing node is a second one of the computing devices comprising one of the electronically addressed nonvolatile storage devices on which the quantum of data physically resides.
37 . The system of claim 36 , wherein the virtual file system comprises one or more instances of a virtual file system front end, one or more instances of a virtual file system back end, a first instance of a virtual file system memory controller configured to control accesses to a first of the plurality of electronically addressed nonvolatile storage devices, and a second instance of a virtual file system memory controller configured to control accesses to a second of the plurality of electronically addressed nonvolatile storage devices.
38 . The system of claim 37 , wherein each instance of the virtual file system front end is configured to:
receive a file system call from a virtual file system driver residing on the plurality of computing devices;
determine which of the one or more instances of the virtual file system back end is responsible for servicing the file system call; and
send one or more file system calls to the determined one or more instances of the plurality of virtual file system back end.
39 . The system of claim 37 , wherein each instance of the virtual file system back end is configured to:
receive a file system call from the one or more instances of the virtual file system front end; and
allocate memory of the plurality of electronically addressed nonvolatile storage devices to achieve the distribution of the data across the plurality of electronically addressed nonvolatile storage devices.
40 . The system of claim 37 , wherein each instance of the virtual file system back end is configured to:
receive a file system call from the one or more instances of the virtual file system front end; and
update file system metadata for data affected by the servicing of the file system call.
41 . The system of claim 47 , wherein:
each instance of the virtual file system back end is configured to generate resiliency information for data stored to the virtual file system; and
the resiliency information can be used to recover the data in the event of a corruption.
42 . The system of claim 47 , wherein:
the number of instances in the one or more instances of the virtual file system front end is dynamically adjustable based on demand on resources of the plurality of computing devices; and
the number of instances in the one or more instances of the virtual file system back end is dynamically adjustable based on demand on resources of the plurality of computing devices.
43 . The system of claim 47 , wherein:
the number of instances in the one or more instances of the virtual file system front end is dynamically adjustable independent of the number of instances in the one or more instances of the virtual file system back end; and
the number of instances in the one or more instances of the virtual file system back end is dynamically adjustable independent of the number of instances in the one or more instances of the virtual file system front end.
44 . The system of claim 47 , wherein:
a first one or more of the plurality of electronically addressed nonvolatile storage devices are used for a first tier of storage; and
a second one or more of the plurality of electronically addressed nonvolatile storage devices are used for a second tier of storage.
45 . The system of claim 44 , wherein:
the first one or more of the plurality of electronically addressed nonvolatile storage devices are characterized by a first value of a latency metric; and
the second one or more of the plurality of electronically addressed nonvolatile storage devices are characterized by a second value of the latency metric.
46 . The system of claim 44 , wherein:
the first one or more of the plurality of electronically addressed nonvolatile storage devices are characterized by a first value of an endurance metric; and
the second one or more of the plurality of electronically addressed nonvolatile storage devices are characterized by a second value of the endurance metric.
47 . The system of claim 46 , wherein data written to the virtual file system is first stored to the first tier of storage and then migrated to the second tier of storage according to policies of the virtual file system.
48 . The system of claim 36 , comprising one or more mechanically addressed nonvolatile storage device, wherein the data stored to the virtual file system is distributed across the plurality of electronically addressed nonvolatile storage devices and one or more mechanically addressed nonvolatile storage devices.
49 . The system of claim 36 , comprising one or more other nonvolatile storage devices residing on one or more other computing devices coupled to the local area network via the Internet.
50 . The system of claim 49 , wherein:
the plurality of electronically addressed nonvolatile storage devices are used for a first tier of storage; and
the one or more other storage devices are used for a second tier of storage.
51 . The system of claim 50 , wherein data written to the virtual file system is first stored to the first tier of storage and then migrated to the second tier of storage according to policies of the virtual file system.
52 . The system of claim 50 , wherein the second tier of storage is an object-based storage.
53 . The system of claim 50 , wherein the one or more other nonvolatile storage devices comprises one or more mechanically addressed nonvolatile storage devices.
54 . The system of claim 36 , comprising:
a first one or more other nonvolatile storage devices residing on the local area network; and
a second one or more other nonvolatile storage devices residing on one or more other computing devices coupled to the local area network via the Internet, wherein:
the plurality of electronically addressed nonvolatile storage devices are used for a first tier of storage and a second tier of storage;
the first one or more other nonvolatile storage devices residing on the local area network are used for a third tier of storage; and
the second one or more other nonvolatile storage devices residing on one or more other computing devices coupled to the local area network via the Internet are used for a fourth tier of storage.
55 . The system of claim 36 , wherein:
a client application resides on a first one of the plurality of computing devices; and
one or more components of the virtual file system reside on the first one of the plurality of computing devices.
56 . The system of claim 55 , wherein the client application and the one or more components of the virtual file system share resources of a processor of the first one of the plurality of computing devices.
57 . The system of claim 55 , wherein:
the client application is implemented by a main processor chipset of the first one of the plurality of computing devices; and
the one or more components of the virtual file system are implemented by a processor of a network adaptor of the first one of the plurality of computing devices.
58 . The system of claim 53 , wherein file system calls from the client application are handled by a virtual file system front end instance residing on a second one of the plurality of computing devices.
59 . A non-transitory machine readable storage having code stored thereon, wherein:
when the code is executed by a first computing device, the first computing device is configured such that a single processor of the first computing device implements one or more components of a virtual file system and one or more client processes running on the first computing device; and
when the code is executed by a second computing device, the second computing device is configured such that a first processor of the second computing device implements the one or more components of a virtual file system, and a second processor of the second computing device implements one or more client processes running on the second computing device.
50 . The non-transitory machine readable storage of claim 59 , wherein the second processor is a processor of a network adaptor of the second computing device.