A
server is embedded directly into a storage subsystem. When moving between the storage subsystem domain and the
server domain, data
copying is minimized.
Data management functionality written for traditional servers is implemented within a stand-alone storage subsystem, generally without
software changes to the ported subsystems. The hardware executing the storage subsystem and
server subsystem can be implemented in a way that provides reduced latency, compared to traditional architectures, when communicating between the storage subsystem and the server subsystem. When using a plurality of clustered controllers, traditional load-balancing
software can be used to provide
scalability of server functions. One end-result is a storage
system that provides a wide range of
data management functionality, that supports a heterogeneous collection of clients, that can be quickly customized for specific applications, that easily leverages existing
third party software, and that provides optimal performance.