SCALABLE DATA ACCESS SYSTEM AND METHODS OF ELIMINATING CONTROLLER BOTTLENECKS
A data access system has host computers having front-end controllers nFE_SAN connected via a bus or network interconnect to back-end storage controllers nBE_SAN, and physical disk drives connected via network interconnect to the nBE_SANs to provide a distributed, high performance, policy based or dynamically reconfigurable, centrally managed, data storage acceleration system. The hardware and software architectural solutions eliminate BE_SAN controller bottlenecks and improve performance and scalability. In an embodiment, the nBE_SAN (BE_SAN) firmware recognize controller overload conditions, informs Distributed Resource Manager (DRM), and, based on the DRM provided optimal topology information, delegates part of its workload to additional controllers. The nFE_SAN firmware and additional hardware using functionally independent and redundant CPUs and memory that mitigate single points of failure and accelerates write performance. The nFE_SAN and FE_SAN controllers facilitate Converged I/O Interface by simultaneously supporting storage I/O and network traffic.
1 . A method of writing write data to at least one storage device in a multiple computer system comprising:
generating, using a first host computer, a first write request;
passing the first write request to a first front-end storage controller (nFE_SAN) of the first host computer;
generating, using a second host computer, a second write request;
passing the second write request to a second nFE_SAN of the second host computer;
copying a first write data to a memory of the first nFE_SAN;
copying the first write data to a memory of an nFE_SAN selected from a third nFE_SAN and the second nFE_SAN;
generating a first write lock request and transmitting the first write lock request from the first nFE_SAN to a back-end storage controller (nBE_SAN);
transmitting a first write lock grant from the nBE_SAN to the first nFE_SAN;
upon completing copying the first write data to the memory of the first nFE_SAN and the memory of the nFE_SAN selected from the third nFE_SAN and the second nFE_SAN, and receiving the first write lock grant from the nBE_SAN, the first nFE_SAN providing a write complete signal to the first host computer;
copying the first write data to the nBE_SAN;
writing, by the nBE_SAN, the first write data to the at least one storage device;
where the second write lock request is transmitted to the nBE_SAN after the first write lock request is transmitted to the nBE_SAN and before the first nFE_SAN provides the first write complete signal to the first host computer; and
after the first write data is copied to the nBE_SAN, providing a second write lock grant to the second nFE_SAN.
2 . The method of claim 1 where the first and second host computer are different.
3 . The method of claim 2 where a memory in which the first write data is stored and selected from the memory of the first nFE_SAN and the memory of the nBE_SAN comprises a nonvolatile or flash memory.
4 . The method of claim 2 wherein the first write complete signal is provided to the first computer before the copying of the write data from the nFE_SAN to the nBE_SAN completes.
5 . The method of claim 4 where a memory in which the first write data is stored and selected from the memory of the first nFE_SAN and the memory of the nBE_SAN comprises a nonvolatile or flash memory.
6 . A system comprising:
at least one storage device,
at least one back-end storage controller (nBE_SAN) comprising cache memory, the nBE_SAN coupled to the at least one storage device,
at least a first host computer and a second host computer,
the first host computer coupled directly to at least a first nFE_SAN and the second host computer coupled directly to at least a second nFE_SAN, each nFE_SAN comprising cache memory, and
the first nFE_SAN and the second nFE_SAN coupled to the at least one nBE_SAN by at least one storage area network;
the first nFE_SAN configured to, upon receiving a write request from the first host computer:
generate a first write lock request and transmit the first write lock request from the first nFE_SAN to the back-end storage controller (nBE_SAN);
a first write data into the cache memory of the first nFE_SAN,
pass the first write data to the cache memory of an nFE_SAN selected from the second nFE_SAN and a third nFE_SAN also coupled by the storage area network to the nBE_SAN,
pass the first write data to the cache memory of the nBE_SAN,
upon completing receiving the first write data into the memory of the first nFE_SAN, and passing the first write data to at least one of cache memory of the second nFE_SAN, third nFE_SAN, and nBE_SAN, and receiving a first write lock grant from the nBE_SAN, provide a write complete signal to the first host computer; and
where the nBE_SAN is configured to write the first write data to the at least one storage device after sending the first write lock grant to the first nFE_SAN.
7 . The system of claim 6 wherein the nBE_SAN is further configured to, upon receipt of a second write lock request from the second nFE_SAN after the first write lock request is transmitted to the nBE_SAN and before the first nFE_SAN provides the first write complete signal to the first host computer; and
after the first write data is copied to the nBE_SAN, return a second write lock grant to the second nFE_SAN.
8 . The system of claim 7 where the first and second host computer are different.
9 . The system of claim 8 wherein the first write complete signal may be provided by the first nFE_SAN to the first computer upon completion of copying the first write data to the cache memory of the second or third nFE_SAN but before the copying of the write data from the nFE_SAN to the cache memory of the nBE_SAN completes.
10 . The system of claim 9 where a cache memory of the first nFE_SAN comprises a nonvolatile or flash memory.
11 . The system of claim 9 where, upon failure of the nBE_SAN before nBE_SAN writes the first write data to the at least one storage device, the nFE_SANs are configured to pass the first write data to a second nBE_SAN for writing to the at least one storage device.