Abstract:
A device for aggregating flash modules includes a switch to connect to a plurality of servers and a midplane to connect to a plurality of flash modules. The switch and midplane are connected such that the switch can route data traffic to any of the plurality of flash modules, and the plurality of servers can connect to the plurality of flash modules transparently, as if a flash module was directly installed into a server.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention is directed generally toward computer storage, and more particularly toward solid-state computer storage in a multi-server environment. 
       BACKGROUND OF THE INVENTION 
       [0002]    NAND flash used in storage is finding substantial use in enterprise and servers as high performance cache of large storage pools of data that reside on disk and as primary storage for performance applications. 
         [0003]    The current physical market for NAND flash devices in servers has become bi-modal. On one hand, NAND flash devices are used as disk replacements (often for caching) in existing style infrastructure. This has benefits in field replacement, but performance is limited because it is either tied to one server only, or is in a storage area network storage array at the far end of a small bandwidth, high latency interconnect like Fiber Channel. On the other hand, PCIe flash cards are being installed directly in servers. This gives high bandwidth, low latency performance, but if the server fails, the data is stranded. If the card fails it is very difficult to service. The flash cannot be re-allocated to other servers either. It is physically tied to the server it is plugged into. 
         [0004]    Consequently, it would be advantageous if an apparatus existed that is suitable for making multiple NAND flash devices accessible to multiple servers but with the performance of direct PCIe attached NAND flash storage. 
       SUMMARY OF THE INVENTION 
       [0005]    Accordingly, the present invention is directed to a novel method and apparatus for making multiple NAND flash devices accessible to multiple servers. 
         [0006]    One embodiment of the present invention is a system comprising two or more servers connected to a switch, and the switch. The Switch may be connected to a midplane or cabling. The midplane or cabling is connected to a plurality of NAND flash devices such that each server may access any of the NAND flash devices through the switch and midplane or cabling. 
         [0007]    Another embodiment of the present invention is a system comprising two or more servers connected to a switch or expander, the switch connected to a midplane, and the midplane connected to a plurality of NAND flash devices. In the event of a server failure, the switch and midplane are configured to route traffic from one or more NAND flash devices away from the failed server. In the event of an NAND flash device failure, the switch and midplane are configured to route traffic from a server away from the failed NAND flash device. 
         [0008]    It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention claimed. The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate an embodiment of the invention and together with the general description, serve to explain the principles. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    The numerous objects and advantages of the present invention may be better understood by those skilled in the art by reference to the accompanying figures in which: 
           [0010]      FIG. 1  shows a block diagram of a system having a switch and a midplane for connecting two or more servers to a plurality of NAND flash devices; 
           [0011]      FIG. 2  shows a block diagram of a system having a switch and a midplane where the switch may be configured to reroute data traffic in the event of a failure, migration of resources or application hibernation; and 
           [0012]      FIG. 3  shows a flowchart of a method for re-routing traffic in the event of a server failure or an active reconfiguration of resources. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0013]    Reference will now be made in detail to the subject matter disclosed, which is illustrated in the accompanying drawings. The scope of the invention is limited only by the claims; numerous alternatives, modifications and equivalents are encompassed. For the purpose of clarity, technical material that is known in the technical fields related to the embodiments has not been described in detail to avoid unnecessarily obscuring the description. 
         [0014]    referring to  FIG. 1 , a block diagram of a system  100  having a switching device  106  and a midplane  108  for connecting two or more servers  102 ,  104  to a plurality of NAND flash devices  110 ,  112  is shown. In the context of the present invention, ‘switching device’ should be understood to include any device suitable for routing data traffic in a network, including network switches and expanders, and particularly SAS switches and SAS expanders. NAND flash devices  110 ,  112  are routinely connected directly to servers  102 ,  104  such that a single server  102 ,  104  may communicate with a NAND flash device  110 ,  112  to the exclusion of any other server  102 ,  104 . Such connections provide high bandwidth and low latency between the server  102 ,  104  and the NAND flash device  110 ,  112 . However, where a NAND flash device  110 ,  112  is directly connected to a server  102 ,  104 , any information contained in the NAND flash device  110 ,  112  may become inaccessible in the event the server  102 ,  104  fails. Likewise, in the event the NAND flash device  110 ,  112  fails, the server may not have access to another NAND flash device  110 ,  112  to perform similar functions; and the failed NAND flash device  110 ,  112  may be difficult to access and service. 
         [0015]    According to one embodiment of the present invention, each server  102 ,  104  in the system  100  may be connected to a switching device  106 . The switching device  106  may include a low-latency crossbar infrastructure such that data traffic between any port and any other port is extremely low-latency. The switching device  106  may route data traffic between the servers  102 ,  104  and a midplane  108 . The midplane  108  may be connected to a plurality of NAND flash devices  110 ,  112 . Each server  102 ,  104  may be configured to connect to one or more of the NAND flash devices  110 ,  112  through the switching device  106  and midplane  108  as if the one or more NAND flash devices  110 ,  112  were connected to the server  102 ,  104  directly. One skilled in the art may appreciate that the midplane  108  may comprise cabling connecting the switching device  106  to each of the NAND flash device  110 ,  112 . The switching device  106  may be configured to route data traffic from a server  102 ,  104  to a NAND flash device  110 ,  112  and from an NAND flash device  110 ,  112  to a server  102 ,  104  as if the server  102 ,  104  and NAND flash device  110 ,  112  were directly connected. One or more of the servers  102 ,  104  may comprise virtual machines or multiple virtual machines per physical machine. 
         [0016]    In some applications, it may be desirable to “hibernate” a virtual machine. For example, some “overnight” applications run at close of business each day for six to eight hours but stop running when normal business resumes. Such overnight applications may produce a “hot” dataset that requires additional processing, but such processing may only continue during the next overnight period. Rebuilding the hot dataset may require hours of processing time. It would be more efficient to “park” the hot dataset and the virtual machine image during normal business hours. Where there are more NAND flash devices  110 ,  112  connected to the midplane  108  than currently allocated to servers  102 ,  104 , such NAND flash devices  110 ,  112  may be allocated to hibernate a virtual machine image and/or park a hot dataset. 
         [0017]    Furthermore, virtual machines are often used package a machine image so that the image is independent of the physical machine the image is running on. In some embodiments a NAND flash device  110 ,  112  may store a virtual machine for migration from one device (such as a server  102 ,  104 ) to another device. In this embodiment, the virtual machine functioning as a device independent container may be stored on a NAND flash device  110 ,  112  by the server  102 ,  104  currently executing the virtual machine, and the NAND flash device  110 ,  112  may be transferred via the switching device  106  to a different server  102 ,  104 . 
         [0018]    Each server  102 ,  104  may include a PCIe to interconnect adaptor to allow each server  102 ,  104  to connect to the switching device  106  through a PCIe port. The switching device  106  may be an SAS switch. The switching device  106  may also include a plurality of SAS/SATA ports attached to the midplane  108  with each port mapped to a SAS/SATA connector on the midplane  108 . The midplane  108  may be configured to hold a plurality of PCIe flash cards, and connect each PCIe flash card to the switching device  106  through a single SAS/SATA port. 
         [0019]    In this embodiment, each server  102 ,  104  may function as though the NAND flash device  110 ,  112  where directly connected to the server, with substantially the same latency and bandwidth. However, the switching device  106  may re-allocate NAND flash devices  110 ,  112  from one server  102 ,  104  to another in the event a server  102 ,  104  fails or in the event the configuration of a virtual machine changes. A person skilled in the art may appreciate that the embodiment described herein may be scalable depending on the capacity of the switching device  106 . Furthermore, even though the NAND flash devices  110 ,  112  may function as though they are directly connected to a server  102 ,  104 , serviceability may be enhanced because the NAND flash devices  110 ,  112  are removed from the hostile environment of the server  102 ,  104 . Furthermore, various operational parameters may be optimized; for example, the temperature may be maintained to improve electron mobility. The potential for catastrophic system  100  failure is also minimized because component failures may be segregated by the switching device  106 . 
         [0020]    Referring to  FIG. 2 , a block diagram of a system having a switching device  106  and a midplane  108  where the switching device  106  may be configured to reroute data traffic in the event of a failure, migration of resources or application hibernation is shown. The switching device  106  may include a processor  200 . The processor  200  may be configured to identify a failed server and de-allocate and NAND flash devices  110 ,  112  associated with that failed server. The processor  200  may then re-allocate the NAND flash devices  110 ,  112  to a different, functional server also connected to the switching device  106  so that data on the NAND flash devices  110 ,  112  may continue to be available. Alternatively, a remote system (not shown) may de-allocate and re-allocate NAND flash devices  110 ,  112 , facilitated by the processor  200 . 
         [0021]    Alternatively, in the event a first NAND flash device  110  fails, the processor  200  may be configured to identify and de-allocate the failed first NAND flash device  110  from an associated server and allocate a second functional NAND flash device  112  to that server. 
         [0022]    Referring to  FIG. 3 , a flowchart of a method for re-routing traffic in the event of a server failure is shown. An apparatus including a switch and a midplane may detect  300  the failure of a server connected to the switch. The Apparatus may be an automated monitoring agent executing on a processor in a server center. The failed server may be connected to the switch through a PCIe port and a PCIe to SAS adapter. The apparatus may identify  302  one or more NAND flash devices connected to the midplane, associated with the failed server. The NAND flash devices may be PCIe flash modules. The apparatus may disassociate  304  the one or more NAND flash devices from the failed server and associates  306  the one or more NAND flash devices with a functional server by updating pertinent routing information related to the one or more NAND flash devices and servers. The apparatus may then route  308  data traffic to or from the one or more NAND flash devices and the functional server. 
         [0023]    It is believed that the present invention and many of its attendant advantages will be understood by the foregoing description, and it will be apparent that various changes may be made in the form, construction, and arrangement of the components thereof without departing from the scope and spirit of the invention or without sacrificing all of its material advantages. The form herein before described being merely an explanatory embodiment thereof, it is the intention of the following claims to encompass and include such changes.