File array storage architecture having file system distributed across a data processing platform
First Claim
Patent Images
1. A distributed storage architecture system comprising:
- an interface;
a client file system executing on a host computer coupled to the interface, the host computer having a host central processing unit (CPU) connected to a host memory, the client file system one of interacting with the host memory to resolve an input/output (I/O) transaction request at the host computer and transmitting the I/O request over the interface;
a server file system executing on an adapter coupled to the interface, the server file system receiving the I/O request from the interface and servicing the I/O request asynchronously to execution of the host computer, the adapter having a CPU coupled to an adapter memory and a non-volatile random access memory (NVRAM) coupled to the adapter CPU, and wherein the server file system services the I/O request by interacting with the adapter memory to one of retrieve and store data specified by the I/O request;
an I/O subsystem executing on the adapter;
storage devices coupled to channels of the adapter; and
the server file system further including a NVRAM manager executed by the adapter CPU, the NVRAM manager interacting with the cache manager to share the NVRAM as a cache for user data and metadata.
8 Assignments
0 Petitions
Accused Products
Abstract
A file away storage architecture comprises a file system that is distributed across a data processing platform consisting of a host computer coupled to an adapter over a high-speed, low latency interface and an input/output subsystem that is located entirely on the adapter. The distributed nature of the architecture enables implementation of the file system in accordance with a modified client-server computing model; that is, the architecture includes a client file system executing on the host computer and a server file system executing on the adapter.
-
Citations
24 Claims
-
1. A distributed storage architecture system comprising:
- an interface;
a client file system executing on a host computer coupled to the interface, the host computer having a host central processing unit (CPU) connected to a host memory, the client file system one of interacting with the host memory to resolve an input/output (I/O) transaction request at the host computer and transmitting the I/O request over the interface;
a server file system executing on an adapter coupled to the interface, the server file system receiving the I/O request from the interface and servicing the I/O request asynchronously to execution of the host computer, the adapter having a CPU coupled to an adapter memory and a non-volatile random access memory (NVRAM) coupled to the adapter CPU, and wherein the server file system services the I/O request by interacting with the adapter memory to one of retrieve and store data specified by the I/O request;
an I/O subsystem executing on the adapter;
storage devices coupled to channels of the adapter; and
the server file system further including a NVRAM manager executed by the adapter CPU, the NVRAM manager interacting with the cache manager to share the NVRAM as a cache for user data and metadata. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
- an interface;
-
11. A distributed storage architecture system comprising:
-
an interface;
a client file system executing on a host computer coupled to the interface, the host computer having a host central processing unit (CPU) connected to a host memory, the client file system one of interacting with the host memory to resolve an input/output (I/O) transaction request at the host computer and transmitting the I/O request over the interface;
a server file system executing on an adapter coupled to the interface, the server file system receiving the I/O request from the interface and servicing the I/O request asynchronously to execution of the host computer, the adapter having a CPU coupled to an adapter memory, and wherein the server file system services the I/O request by interacting with the adapter memory to one of retrieve and store data specified by the I/O request;
an I/O subsystem executing on the adapter;
storage devices coupled to channels of the adapter; and
wherein the I/O subsystem further comprises a hardware abstraction layer that manipulates port interface circuitry coupling the adapter to the disks. - View Dependent Claims (12)
-
-
13. A method for efficiently resolving an input/output (I/O) request within a distributed storage architecture system executing on a host computer coupled to an adapter, the method comprising the steps of:
-
issuing the I/O request, the I/O request comprising a read request, from an application program to a client file system of the distributed storage architecture system;
determining whether data associated with the I/O request is present in a host cache of the host computer and, if so, servicing the I/O request at the host cache with the client file system;
if the data associated with the I/O request is not present in the host cache, forwarding the I/O request from the client file system to a server file system of the distributed storage architecture system;
examining an adapter cache of the adapter to determine if the data associated with the I/O request is present in the adapter cache and, if so, servicing the I/O request at the adapter cache with the server file system; and
if the data associated with the read request is present in the adapter cache;
invoking a direct memory access (DMA) engine of the adapter to transfer the data directly to the host cache, and notifying the client file system that the read request has been serviced.
-
-
14. A method for efficiently resolving an input/output (I/O) request within a distributed storage architecture system executing on a host computer coupled to an adapter, the method comprising the steps of:
-
issuing the I/O request, the I/O request comprising a read request, from an application program to a client file system of the distributed storage architecture system;
determining whether data associated with the I/O request is present in a host cache of the host computer and, if so, servicing the I/O request at the host cache with the client file system;
if the data associated with the I/O request is not present in the host cache, forwarding the I/O request from the client file system to a server file system of the distributed storage architecture system;
examining an adapter cache of the adapter to determine if the data associated with the I/O request is present in the adapter cache and, if so, servicing the I/O request at the adapter cache with the server file system; and
if the data associated with the read request is not present in the adapter cache;
forwarding the read request from the server file system to an I/O subsystem of the distributed storage architecture system;
retrieving the data associated with the read request from a disk coupled to the adapter, and loading the data associated with the read request into the adapter cache. - View Dependent Claims (15)
invoking a direct memory access (DMA) engine of the adapter to transfer the data directly from the adapter cache to the host cache; and
notifying the client file system that the read request has been serviced.
-
-
16. A method for efficiently resolving an input/output (I/O) request within a distributed storage architecture system executing on a host computer coupled to an adapter, the method comprising the steps of:
-
issuing the I/O request, the I/O request comprising a read request, from an application program to a client file system of the distributed storage architecture system, determining whether data associated with the I/O request is present in a host cache of the host computer and, if so, servicing the I/O request at the host cache with the client file system;
if the data associated with the I/O request is not present in the host cache, forwarding the I/O request from the client file system to a server file system of the distributed storage architecture system;
examining an adapter cache of the adapter to determine if the data associated with the I/O request is present in the adapter cache and, if so, servicing the I/O request at the adapter cache with the server file system; and if the data associated with the read request is not present in the adapter cache;
determining whether the read request is one of a plurality of sequential read requests;
if so, instructing an I/O subsystem of the distributed storage architecture system to retrieve the data associated with the read request along with additional data;
retrieving the data associated with the read request along with the additional data from at least one disk coupled to the adapter, and loading the data and additional data into the adapter cache. - View Dependent Claims (17, 18, 19, 20)
invoking a direct memory access (DMA) engine of the adapter to transfer the data and additional data directly from the adapter cache to the host cache; and
notifying the client file system that the read request has been serviced.
-
-
18. The method of claim 17 further comprising the steps of:
-
issuing a subsequent read request from the application program to the client file system;
determining whether data associated with the subsequent read request is present in the host cache and, if not, determining whether the subsequent read request is one of a plurality of sequential read requests;
if so, requesting the data associated with the subsequent read request along with at least a portion of the additional data from the client file system to a server file system; and
examining the adapter cache to determine if the data and the at least portion of the additional data is present in the adapter cache and, if so, servicing the requested data at the adapter cache with the server file system.
-
-
19. The method of claim 18 further comprising the steps of:
-
invoking a direct memory access (DMA) engine of the adapter to transfer the data and the at least portion of the additional data directly from the adapter cache to the host cache; and
noting the client file system that the read request has been serviced.
-
-
20. The method of claim 19 further comprising the steps of:
-
issuing a write request and associated data from the application program to the client file system;
forwarding the write request and associated data from the client file system to the server file system;
determining that the adapter cache contains useful information and disabling the adapter cache;
passing the write request and associated data from the server file system directly to the I/O subsystem; and
storing the data associated with the write request on the at least one disk.
-
-
21. A method for efficiently resolving an input/output (I/O) request within a distributed storage architecture system executing on a host computer coupled to an adapter, the method comprising the steps of:
-
issuing the I/O request, the I/O request comprising a read request, from an application program to a client file system of the distributed storage architecture system;
determining whether data associated with the I/O request is present in a host cache of the host computer and, if so, servicing the I/O request at the host cache with the client file system, if the data associated with the I/O request is not present in the host cache, forwarding the I/O request from the client file system to a server file system of the distributed storage architecture system;
examining an adapter cache of the adapter to determine if the data associated with the I/O request is present in the adapter cache and, if so, servicing the I/O request at the adapter cache with the server file system; and
wherein the step of determining comprises the step of calling a cache manager to establish a cache map.
-
-
22. A method for efficiently resolving an input/output (I/O) request within a distributed storage architecture system executing on a host computer coupled to an adapter, the method comprising the steps of:
-
issuing the I/O request, the I/O request comprising a read request, from an application program to a client file system of the distributed storage architecture system;
determining whether data associated with the I/O request is present in a host cache of the host computer and, if so, servicing the I/O request at the host cache with the client file system;
if the data associated with the I/O request is not present in the host cache, forwarding the I/O request from the client file system to a server file system of the distributed storage architecture system;
examining an adapter cache of the adapter to determine if the data associated with the I/O request is present in the adapter cache and, if so, servicing the I/O request at the adapter cache with the server file system; and
wherein the step of examining comprises the step of flushing overlapping data in the cache to disk along with data associated with the write request in accordance with a bypass operation.
-
-
23. A method for efficiently resolving an input/output (I/O) request within a distributed storage architecture system executing on a host computer coupled to an adapter, the method comprising the steps of:
-
issuing the I/O request from an application program to a client file system of the distributed storage architecture system;
determining whether data associated with the I/O request is present in a host cache of the host computer and, if so, servicing the I/O request at the host cache with the client file system; if the data associated with the I/O request is not present in the host cache, forwarding the I/O request from the client file system to a server file system of the distributed storage architecture system;
examining an adapter cache of the adapter to determine if the data associated with the I/O request is present in the adapter cache and, if so, servicing the I/O request at the adapter cache with the server file system; and
if the write request is a stable write request, copying the data associated with the request to non-volatile random access memory.
-
-
24. A method for efficiently resolving an input/output (I/O) request within a distributed storage architecture system executing on a host computer coupled to an adapters the method comprising the steps of:
-
issuing the I/O request from an application program to a client file system of the distributed storage architecture system;
determining whether data associated with the I/O request is present in a host cache of the host computer and, if so, servicing the I/O request at the host cache with the client file system; if the data associated with the I/O request is not present in the host cache, forwarding the I/O request from the client file system to a server file system of the distributed storage architecture system;
examining an adapter cache of the adapter to determine if the data associated with the I/O request is present in the adapter cache and, if so, servicing the I/O request at the adapter cache with the server file system; and
if the write request is an unstable write request, copying the data associated with the request to the adapter cache.
-
Specification