Claims
- 1. An apparatus comprising:
a scalable network attached storage system, the network attached storage system comprising:
one or more termination nodes; one or more file server nodes for maintaining file systems respectively; one or more disk controller nodes for accessing storage disks respectively; and a switching fabric coupling the one or more termination node, file server nodes, and disk controller nodes, wherein the one or more termination nodes, file server nodes and disk controller nodes can be added or deleted to the scalable network attached storage system as needed.
- 2. The apparatus of claim 1, further comprising a load balancer configured to be coupled to the termination nodes, the load balancer configured to balance the load of connections among the one or more termination nodes.
- 3. The apparatus of claim 2, wherein the load balancer balances the load of connections among the one or more termination nodes based on one or more of the following metrics: the number of connections per termination node; utilization of the termination nodes; memory utilization; or a combination thereof.
- 4. The apparatus of claim 2, wherein the load balancer is further configured to maintain a current list of the termination nodes as they may be added or deleted from the scalable network attached storage system.
- 5. The apparatus of claim 2, wherein the load balancer is further configured to forward all requests associated with a connection to the same termination node as the requests are received.
- 6. The apparatus of claim 1, wherein each of the one or more termination nodes is configured to terminate requests as they are received.
- 7. The apparatus of claim 6, wherein the requests are either TCP or UDP running on IP.
- 8. The apparatus of claim 6, wherein the termination nodes are further configured to determine if any received requests are NFS or CIFS.
- 9. The apparatus of claim 8, wherein the termination nodes are further configured to terminate XDR and RPC for NFS requests.
- 10. The apparatus of claim 6, wherein the one or more termination nodes are configured to extract the file handle from any request it receives respectively.
- 11. The apparatus of claim 10, wherein the one or more termination nodes are configured to send the request to a selected one of the file server nodes based on the extracted file handle.
- 12. The apparatus of claim 11, wherein the one or more termination nodes are configured to send the request to the selected one of the file server nodes in a common format regardless if the request was NFS or CIFS.
- 13. The apparatus of claim 6, wherein the one or more termination nodes are configured to send the request to a selected file server node based on the type of file defined by the request.
- 14. The apparatus of claim 1, wherein the one or more termination nodes are configured to detect failures of the one or more file server nodes.
- 15. The apparatus of claim 1, wherein the one or more file server nodes are each configured to retrieve files through the one or more disk controller nodes as necessary to service any received requests.
- 16. The apparatus of claim 1, wherein the one or more file server nodes are each configured to terminate any requests received from the termination nodes and the disk controller nodes.
- 17. The apparatus of claim 1, wherein each of the one or more file server nodes maintains a federated file system that does not keep track of the files accessed by the other file server nodes.
- 18. The apparatus of claim 1, wherein the file systems maintained by each of the one or more server nodes services a different name space range respectively.
- 19. The apparatus of claim 18, wherein the different name space ranges serviced by the one or more server nodes is allocated dynamically.
- 20. The apparatus of claim 19, wherein the name space allocated to each of the one or more server nodes is dynamically propagated to the one or more termination nodes.
- 21. The apparatus of claim 1, wherein each of the file server nodes is capable of locking a file when accessing that file.
- 22. The apparatus of claim 21, wherein the file is locked when being read, when being written, or both.
- 23. The apparatus of claim 1, wherein the one or more file server nodes are each further configured to maintain a cache of recently accessed files that can be served without accessing the storage disks respectively.
- 24. The apparatus of claim 23, wherein the files in the caches are replaced using a replacement algorithm, the replacement algorithm being one of the following: last recently used, or first in first out.
- 25. The apparatus of claim 1, wherein the one or more file server nodes are optimized for handling certain types of specific requests.
- 26. The apparatus of claim 1, wherein the storage disks are arranged in one or more redundant arrays of independent disks.
- 27. The apparatus of claim 1, wherein each of the disk controller nodes performs one or more of the following functions: file mirroring for backup purposes, file relocation, terminate requests received from the one or more file server nodes, virtualization of disk space, monitor the storage disks for failure and replacement, and act as a data block server.
- 28. The apparatus of claim 1, wherein the switching fabric comprises the following types of switches: Ethernet switches, Fibre Channel switches, or a combination thereof.
- 29. The apparatus of claim 1, further comprising a storage array network coupled between the one or more disk controller nodes and the storage disks.
- 30. The apparatus of claim 1, one or more of the termination nodes and the file server nodes are implemented in one or more CPUs the switching fabric is at least partially implemented using an inter and/or an intra CPU communication mechanism.
- 31. A method comprising:
receiving a connection request from a client; selecting a termination node among the plurality of termination nodes to establish a connection with the client in response to the connection request based on a predetermined metric; terminating at the selected termination node a command request received from the client during the connection by extracting a file handle defined by the command request; forwarding the command request to a selected file server node among a plurality of file server nodes; interpreting the command request at the selected file server node and accessing an appropriate disk controller node among a plurality of disk controller nodes; and accessing disk storage through the appropriate disk controller node and serving the accessed data to the client.
- 32. The method of claim 31, wherein the predetermined metric comprises one of the following: the load among the plurality of termination nodes, CPU utilization, memory utilization, or a combination thereof.
- 33. The method of claim 32, wherein the forwarding of the command request to a selected file server node based on the file handle extracted from the command request.
- 34. The method of claim 32, wherein the forwarding of the command request to a selected file server node based on the type of file defined by the command request.
- 35. The method of claim 31, further comprising scaling the number of termination nodes, file server nodes, and disk controller nodes as needed to meet user demands.
RELATED APPLICATIONS
[0001] The present invention is related to U.S. Application Ser. No. ______ (attorney docket number ANDIP023) entitled “Apparatus and Method for A High Availability Data Network Using Replicated Delivery” by Thomas Edsall et. al. and U.S. application Ser. No. ______ (attorney docket number ANDIP018) entitled “Apparatus and Method for a Lightweight, Reliable Packet-Based Protocol” by Gai Silvano et. al., both filed on the same day and assigned to the same assignee as the present invention, and incorporated herein by reference for all purposes.