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.