Method and apparatus for implementing high-performance, scaleable data processing and storage systems
Abstract
A data system architecture is described that allows multiple processing and storage resources to be connected to multiple clients so as 1) to distribute the clients' workload efficiently across the available resources; and 2) to enable scaleable expansion, both in terms of the number of clients and in the number of resources. The major features of the architecture are separate, modular, client and resource elements that can be added independently, a high-performance cross-bar data switch interconnecting these various elements, separate serial communication paths for controlling the cross-bar switch settings, separate communication paths for passing control information among the various elements and a resource utilization methodology that enables clients to distribute processing or storage tasks across all available resources, thereby eliminating “hot spots” resulting from uneven utilization of those resources.
Claims
exact text as granted — not AI-modified1 . Apparatus for providing high-performance, scalable data storage services from a plurality of storage devices to a client in response to data storage requests, each data storage request including a data object identifier that identifies a data object to be stored, the apparatus comprising:
a plurality of storage interface modules, each of which stores data directed to logical addresses into physical locations in each of the storage devices; and a host interface module that receives data storage requests and, in response to each storage request and based on relative activities of the storage interface modules, dynamically selects logical addresses to which a data object identified by that request is stored, so that data storage activity will be dynamically distributed across the plurality of storage devices.
2 . The apparatus of claim 1 wherein each of the storage interface modules comprises a mechanism that generates preallocation logical addresses which identify unused space in the plurality of storage devices.
3 . The apparatus of claim 2 wherein each of the storage interface modules comprises a communication module that transmits preallocation logical addresses to the host interface module.
4 . The apparatus of claim 3 wherein the host interface module comprises a selection mechanism that, in response to each data storage request selects, from preallocation logical addresses transmitted to the host interface module, logical addresses to which a data object identified by that request is stored.
5 . The apparatus of claim 1 wherein the host interface module comprises a local memory containing logical addresses identifying a storage location of each stored data object
6 . The apparatus of claim 5 further comprising a metadata module having a metadata memory containing logical addresses identifying a storage location of each stored data object.
7 . The apparatus of claim 6 wherein the host interface module comprises a communication module that, after logical addresses to which a data object identified by a data storage request is stored have been selected, sends the selected logical addresses to the metadata module in order to update the metadata memory in the metadata module to represent a current storage location of that data object.
8 . The apparatus of claim 7 wherein the host interface module, in response to a data retrieval request received from the client and including a data object identifier, accesses the local memory in order to determine a current storage location of that data object.
9 . The apparatus of claim 8 wherein the host interface module comprises a mechanism that accesses the metadata memory when a current storage location of that data object cannot be determined from the local memory.
10 . The apparatus of claim 1 further comprising a mechanism operable on initialization of the apparatus and upon the topology of the storage devices for mapping logical addresses to physical locations in each of the storage devices.
11 . A method for providing high-performance, scalable data storage services from a plurality of storage devices to a client in response to data storage requests, each data storage request including a data object identifier that identifies a data object to be stored, the method comprising:
(a) providing a plurality of storage interface modules, each of which stores data directed to logical addresses into physical locations in each of the storage devices; and (b) providing a host interface module that receives data storage requests and, in response to each storage request and based on relative activities of the storage interface modules, dynamically selects logical addresses to which a data object identified by that request is stored, so that data storage activity will be dynamically distributed across the plurality of storage devices.
12 . The method of claim 11 wherein step (a) comprises, in each storage interface module, generating preallocation logical addresses which identify unused space in the plurality of storage devices.
13 . The method of claim 12 wherein step (a) comprises in each storage interface module transmitting preallocation logical addresses to the host interface module.
14 . The method of claim 13 wherein step (b) comprises, in response to each data storage request, selecting, from preallocation logical addresses transmitted to the host interface module, logical addresses to which a data object identified by that request is stored.
15 . The method of claim 11 further comprising providing the host interface module with a local memory containing logical addresses identifying a storage location of each stored data object.
16 . The method of claim 15 further comprising providing a metadata module having a metadata memory containing logical addresses identifying a storage location of each stored data object.
17 . The method of claim 16 wherein step (b) comprises, after logical addresses to which a data object identified by a data storage request is stored have been selected, sending the selected logical addresses to the metadata module in order to update the metadata memory in the metadata module to represent a current storage location of that data object.
18 . The method of claim 17 further comprising, in response to a data retrieval request received from the client and including a data object identifier, accessing the local memory in order to determine a current storage location of that data object.
19 . The method of claim 18 further comprising accessing the metadata memory when a current storage location of that data object cannot be determined from the local memory.
20 . The method of claim 11 further comprising, upon initialization of the storage interface modules, mapping logical addresses to physical locations in each of the storage devices based on the topology of the storage devices.
21 . Apparatus for providing high-performance, scalable data storage services from a plurality of disks to a client in response to data storage requests, each data storage request including a data object identifier that identifies a data object to be stored, the apparatus comprising:
a plurality of storage interface modules, each of which stores data directed to logical addresses into physical locations in each of the disks; and a host interface module that receives data storage requests and, in response to each storage request and based on relative activities of the storage interface modules, dynamically selects logical addresses to which a data object identified by that request is stored, so that data storage activity will be dynamically distributed across the plurality of disks.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.