Object storage system using multi-level hash function to determine storage addresses

CN110321331BActive Publication Date: 2026-10-16INTEL CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201910149912.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-03-29
Filing Date
2019-02-28
Publication Date
2026-10-16
Estimated Expiration
2039-02-28

Smart Images

  • Figure CN110321331B_ABST
    Figure CN110321331B_ABST
Patent Text Reader

Abstract

The invention relates to an object storage system that determines storage addresses using a multi-level hash function. A method performed by a first hardware element in a hierarchical hardware element arrangement in an object storage system is described. The method includes performing a hash on a name of an object of the object storage system. The name is part of a request associated with the object. The result of the hash is to identify a second hardware element directly below the first hardware element in the hierarchical arrangement. The request is to be sent to the second hardware element to cause the request to progress forward to be serviced by the object storage system for it.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The field of this invention generally relates to computational science, and more specifically to object storage systems that utilize multi-level hash functions to determine memory addresses. Background Technology

[0002] As cloud computing and high-performance data centers gradually emerge as the infrastructure environment for modern computing, innovations are taking place in large-scale data storage. One particularly emerging storage approach, called object storage, is characterized by highly generic input namespaces, easily operable distributed storage nodes, and correspondingly large storage capacities. However, when attempting to physically construct the hardware and / or software required to implement a practical object storage system, problems in practical implementation can be observed, thus providing opportunities for innovative improvements. Attached Figure Description

[0003] A better understanding of the invention can be obtained from the following detailed description taken in conjunction with the accompanying drawings, in which: Figure 1 This illustrates a prior art object storage system; Figure 2 An improved object storage system is shown; Figure 3 This illustrates a method performed by an improved object storage system; Figure 4 The computing system is shown. Detailed Implementation

[0004] The problem with object storage systems lies in the movement of data objects caused by adding or removing storage nodes from the system. Here, for example... Figure 1 As observed, the object storage system 100 is typically implemented with multiple storage nodes 101, which are communicatively coupled to a network 102. Each storage node contains one or more storage devices with associated storage locations and corresponding storage location addresses.

[0005] When a client submits an object for storage in system 100, the system performs a hash operation on the name of the object given by the client (e.g., the object's directory file path, a unique identifier assigned to the object, etc.). The output of the hash operation essentially generates the address of the storage location in the system where the object will be stored. Each storage node 101 in the system is assigned a different range of object storage location addresses. If a new storage node is added to the system or a node is deleted from the system, the object address location assignment for each storage node changes, which requires moving some objects from their current storage node to the new storage node.

[0006] Figure 2An improved object storage system design 200 is shown. According to... Figure 2 The object storage system is designed with a node tree architecture, where each higher-level node incorporates lower-level nodes below it. The lowest level 204 of the tree corresponds to the leaf node with the actual storage medium device (e.g., flash drive, hard disk drive, etc.). Additionally, each node level is preceded by a dedicated hash function for that node level, which identifies the specific node at that level to which a particular object is mapped based on its name. For simplicity, Figure 2 An object storage system 200 with only three node levels 201, 202, 203 (and therefore three hash functions 211, 212, 213 preceding them) is shown. However, the reader will understand that additional node levels and corresponding hash functions can be added. Figure 2 In the three-level system.

[0007] refer to Figure 2 When a new object needs to be stored in the system, the first hash function 211 determines which of the top-level nodes 201 to map the object to, and sends the object to that node via network 204. Each node in the top-level nodes 201 includes an instance of the second hash function 212. The specific top-level node to which the object is mapped computes a second hash on the object name using the second hash function 212. This result identifies the node at the next lower level 202 to which the object is mapped, and the object is sent to that node via network. The next lower level node also includes an instance of the third hash function 213. The specific next lower level node to which the object is mapped computes a third hash on the object name. This result identifies the node at the lowest leaf node level 203 to which the object is mapped. The object is sent to that leaf node and stored therein.

[0008] Additionally, each of hash algorithms 211, 212, and 213 is weighted to have some bias, or each of hash algorithms 211, 212, and 213 will additionally assign objects to the immediately following lower node in an intentionally biased manner if the structure of the object storage system below that hash function is also biased or weighted. For example, if the first immediately following lower node has more storage capacity and / or more I / O bandwidth below it than the second immediately following lower node, the hash functions supplied to the first and second nodes will be constructed to map more objects to the first node compared to the second node.

[0009] Here, each hash function 211, 212, 213 is presented with some description of the storage system architecture directly below it. This description essentially describes, for example, total storage capacity, bandwidth capacity, media type, processor speed, etc., at and / or below each node to which it maps objects. This description may be automatically calculated based on the child node descriptions. In another embodiment, a supervisor or oversight function can override this automatic description setting to meet various service level agreements.

[0010] In the case of a higher-level hashing algorithm that maps objects to higher-level nodes, the storage capacity of the higher-level node corresponds to the combined storage capacity of the leaf nodes below it. Thus, for example, the storage capacity of Rack_1 corresponds to the combined storage capacity of storage server nodes SS_1_1 to SS_1_N. In various embodiments, the description of the performance capabilities of one or more nodes directly below the hash level may also be referred to as a "weighting factor." Therefore, each hash level 211, 212, 213 receives one or more weight values ​​that describe the capabilities of the storage system nodes directly below it, allowing it to weight or bias the allocation of object storage locations in response to any bias in the capabilities of the nodes directly below it, if such a bias exists.

[0011] In another embodiment, a seed value can be assigned to each node in the hierarchical tree of the object storage system. The seed value is a randomized number used for hash calculation. In various embodiments, one or more of the aforementioned weighting factors are presented as input values ​​to one or more random number generators at a particular node. The random number generator then generates a seed value for the node's hash function. In this way, each node in the tree generates a seed value and then uses the seed value to perform a hash operation on the object name of each request received by that node to determine the next lower node to which the request should be directed.

[0012] Therefore, the seed value generated at each node includes a degree of randomness because it is generated from a random number generator (if all lower nodes are equal, then requests should be randomly mapped to lower nodes). Thus, the weights provide some bias to the randomness of the seed value, causing the hash function to favor one node (e.g., a node with less storage capacity) over another (e.g., a node with more storage capacity) when determining which lower node it should map a request to. In an alternative embodiment, the weighting factors can be sent to a centralized location (e.g., a location that holds an understanding of the hierarchical tree of the object storage system) that has a random generator for calculating seed values ​​for multiple nodes in the system. This centralized location can then send appropriate seed values ​​to different nodes for their respective hash functions to merge.

[0013] In this embodiment, any specific hash algorithm is executed using the corresponding object name, one or more input weighting factors, and a seed value to generate a ranking of all nodes directly below that hash level. The hash algorithm then selects the highest-ranked node as the node to which the object should be mapped (i.e., the object's allocated storage location falls within the range of the location addresses assigned to the selected node).

[0014] In various embodiments, each node level corresponds to a different hardware element in the overall object storage solution. Figure 2 The highest node level 201 in the exemplary system corresponds to a storage server rack. Here, as is known in the art, a rack is typically implemented as one or more cabinets with shelving space or otherwise modified to securely stack electronic devices. In the case of an object storage system, the rack may stack storage servers, which are servers that enhance storage by, for example, coupling most / all of the server computer's high-bandwidth I / O interfaces to non-volatile mass storage devices (e.g., solid-state drives (e.g., flash SDDs) and / or hard disk drives).

[0015] exist Figure 2 In the exemplary system, where the highest-level node 201 corresponds to a different rack, each of the immediately following lower-level nodes 202 directly below a particular rack / node corresponds to a different storage server stacked within the rack. Furthermore, Figure 2 Each leaf node below a specific storage server node corresponds to a specific non-volatile mass storage device integrated with that specific server node (e.g., one of its high-bandwidth I / O interfaces coupled to the server). From this example, as the object storage system scales and / or more granular hardware boundaries are required at each node level, higher-level nodes can be added above the highest-level node.

[0016] For example, in the case of expansion, if Figure 2 The rack groups and corresponding equipment observed correspond to equipment groups within the first data center, and as the system is then expanded to include more data centers, more advanced nodes can be added. Figure 2 The nodes observed in the data center indicate that each additional, more advanced node corresponds to a different data center.

[0017] For example, in the case of more granular hardware boundaries, even Figure 2The devices observed correspond to devices within the same data center, and different rack groups can also be coupled to different local area networks (LANs) within that data center. This allows for the addition of higher-level nodes, where each added higher-level node corresponds to a gateway to a specific LAN, and the racks / nodes below each added higher-level node correspond to racks coupled to the LAN represented by that higher-level node. Additional nodes can also be added below the rack level to introduce finer-grained hardware boundaries within the rack. For example, a node level can be added between the storage server level and the mass storage device level to group mass storage devices that share the same I / O interface and are coupled to a specific storage server.

[0018] In any case, note that this architecture may include the introduction of object storage hash functions in various types of hardware resources to map objects to specific lower-level hardware resources, where the hardware resources are more of a component of the storage hardware infrastructure itself than a centralized object mapping function of the object storage system (whose purpose is to determine a global object mapping that explicitly defines the object storage location from a single hash operation).

[0019] In other words, to some extent Figure 2 The new method can be seen as adopting the approach described above. Figure 1 The description describes a centralized object mapping function, but it not only distributes the objects to the storage hardware, but also distributes them downwards through multiple lower hierarchical levels of the storage hardware itself (e.g., LAN gateways, network gateways integrated into the rack, storage servers, interfaces to storage server I / O interfaces, etc.).

[0020] Distributing the hash function activity required to fully resolve the final storage location of a specific object across different levels of storage hardware helps to protect the entire storage system from object relocation after adding or removing storage capacity. Here, in accordance with... Figure 2 Compared to object storage systems constructed using hash structures, a single global hash function can more easily resolve object names to different storage locations in a more destructive way in response to the addition / removal of storage nodes.

[0021] Qualitatively describing this mathematical behavior, if a single hash function were solely responsible for determining the storage location of all objects in the system, a single change to the system's storage capacity (even a small one) could cause a large number of object names to suddenly map to physically distant new locations (e.g., to a new local network, to a different rack, etc.). To mitigate this particular effect, object storage systems have traditionally been implemented using consistent hashing algorithms that, in response to changes in storage capacity, mathematically require fewer mapping changes than other hash functions. However, it is conceivable that the resulting relocations might still require significant physical movement of objects throughout the system.

[0022] However, Figure 2 Object storage systems—which implement overall hashing activity as a series of hashing processes “threaded” from higher hardware levels to lower hardware levels—can exhibit even less physical object moving interference than consistent hashing algorithms, at least for changes to lower-level nodes. This is because the hash structure is better able to take into account the fact that most of the system remains unchanged when only a small (lower-level) area of ​​the system changes.

[0023] In other words, reference Figure 2 If a new large-capacity storage device is added to / removed from storage server SS_1_1, it should be noted that the storage capacity of the remaining storage servers in level 202 remains unchanged. Therefore, ideally, many (if not all) mapping changes resulting from this storage capacity change can be kept within storage server SS_1_1. In a sense, small changes to lower-level nodes will not "ripple" (or barely ripple) to higher-level hash functions, which in turn results in minimal changes to node mappings—that is, almost no / no changes to node relationships in the system.

[0024] In practice, this is represented by a negligible change (if any) in the weighting factors applied to the higher-level hash function in response to the change. Here, if only a single large-capacity storage device is added to / removed from storage server SS_1_!, the total storage capacity of rack Rack_1 remains almost unchanged, which in turn results in only a slight change (if any) in the weight values ​​provided to the highest-level hash function 211. That is, for example, the change in the percentage of total object storage capacity represented by Rack_1 is negligible, and therefore, the weight values ​​provided to the highest hash level 211 in response will undergo a negligible change. Thus, the mapping determination at the highest hash level 211 undergoes almost no change.

[0025] Conversely, the weight value provided to the lowest hash level 213, which is directly above the point of change (the hash function of server SS_1_1), shows a more significant change (adding / removing storage devices to / from server SS_1_1 significantly alters the server's total storage capacity). Thus, there may be more substantial mapping changes and corresponding object movements within server SS_1_1, and even fewer changes (but still likely significant) within other servers part of Rack_1. In other words, object mapping changes are kept more confined to the point of addition / removal of disturbances.

[0026] To facilitate this property, other embodiments can be designed to enforce the prevention of changes to weight values ​​for hash instances that are not interfering with local operations. For example, referencing the previous example where a large-capacity storage device was added to or removed from server SS_1_1, in this embodiment, the only weight value allowed to change is the weight value used for storage server SS_1_1—intentionally keeping all other weight values ​​in the system fixed. By preventing all other weight values ​​from changing, all hash instances other than the hash instance of server SS_1_1 will not modify anything in their object mappings.

[0027] In this way, almost the entire system does not respond to capacity changes by implementing any object mapping changes or corresponding object movements. Instead, all mapping changes and corresponding movements resulting from storage capacity changes are forcibly confined to server SS_1_1. Here, for example, weight values ​​can remain fixed in response to capacity changes unless a certain threshold amount of capacity change is experienced in a particular node. For example, if the storage capacity of server SS_1_1 changes by 10% or more, then other weight values ​​outside of server SS_1_1 are allowed to change (allowing the larger system to adapt to the change).

[0028] According to one method, permitted weight value changes expand outwards from the point of disturbance, depending on the magnitude of the storage capacity change. For example, if the storage capacity change of server SS_1_1 is less than 20%, then only the weight values ​​of the hash function instances of server SS_1_1 are permitted to change. This keeps object relocation within server SS_1_1. Conversely, if the storage capacity change of server SS_1_1 is between 20% and 40%, then changes are permitted for the weight values ​​of the hash instances used for Rack_1 and server SS_1_1 (but the weight values ​​of all other hash instances remain fixed). This keeps object relocation within server SS_1_1 to SS_1_N of Rack_1. Further still, if the storage capacity change of server SS_1_1 exceeds 40%, then in response, changes are permitted for the weight values ​​of the highest-level hash instance 211, the hash instances of Rack_1, and the hash instances of server SS_1_1. This may result in rack-to-rack object movement, but the weight change of hash function 211 will be much smaller than the weight change of the hash instance of Rack_1 or the hash instance of server SS_1_1.

[0029] If the change in storage capacity is not only small but also temporary, it can be particularly useful to keep the weight values ​​fixed in response to the change in storage capacity. An example is when a large-capacity storage device is undergoing maintenance. In this case, the large-capacity storage device may only be temporarily offline (during the maintenance process, it can reliably retain its data but cannot handle any read or write requests). According to one embodiment, when the large-capacity storage device is being maintained and temporarily offline, no weight values ​​of the large-capacity storage device on the server or elsewhere in the storage system are changed.

[0030] Here, any read or write requests received by the server of an offline device and mapped to that offline device are temporarily queued in the idle (unused) storage capacity of one or more working mass storage devices on the same server as the temporarily offline mass storage device. When maintenance is complete, the read or write requests queued in the server's idle storage space are then "replayed" to the mass storage device, allowing it to service the requests (the mass storage device receives the request stream it "missed" while being maintained).

[0031] For certain types of hash algorithms, rendezvous hashing algorithms can accept the weights described above to provide some intentional bias in the hash output. Therefore, in various embodiments, Figure 2 Each of the hash algorithms 211, 212, and 213 is implemented as a convergence hash algorithm. In various embodiments, the weight value indicates the presence of each immediately following lower node and some capacity and / or performance metric for each such immediately following lower node.

[0032] Here, although not in order to illustrate the point Figure 2 As described, however, the object storage system may include centralized or distributed management functions implemented on at least one computing system communicatively coupled to the storage server 202 and maintaining awareness of its storage capacity level, changes to its storage capacity level, its I / O bandwidth capabilities, changes to its bandwidth capabilities, and so on. Based on this awareness, the management functions carefully design weight values ​​for each hash level and provide them to the hash levels as appropriate (e.g., in response to capacity changes). The management functions may also maintain, for example, a capacity change percentage and a corresponding capacity change percentage threshold, which triggers the sending of a new set of weight values ​​to the hash function.

[0033] Each hash function instance can be implemented using dedicated hardware logic circuitry, programmable logic circuitry (e.g., field-programmable gate arrays (FPGAs), programmable logic arrays (PLAs), programmable logic devices (PLDs), etc.), or logic circuitry that executes some form of program code (e.g., general-purpose processors (embedded or otherwise), dedicated processors (e.g., digital signal processors (DSPs), etc.), or any combination thereof. Such circuitry can reside in any of the many different hardware systems / components of the object storage system, such as: 1) network gateways, network switches, and / or network routers; 2) storage servers; 3) proxy servers or servers acting as gateways to the object storage system; 4) I / O interfaces of storage servers to which multiple mass storage devices are attached, etc.

[0034] Any of the storage server and proxy server components can be implemented using a computing system. Furthermore, the elements of a networking device (gateway / switch / router) can resemble or otherwise incorporate basic components of a computing system. For example, a networking device typically includes management and control functions, which include one or more CPU cores and memory for storing program code and data executed by said CPU cores. In any case, as described above, the hash function can be implemented using any of the following: dedicated logic circuitry, programmable logic circuitry, or program code execution, or any combination of these components within any system of the computing or networking system. A networking device can include any of the switching and / or routing logic circuitry and ingress / egress ports. A request is received at the ingress port, and the switching / routing logic circuitry processes the request based on the hash result to direct the request to the appropriate egress port, through which the correct next lower-level node can be reached.

[0035] Note that the above discussion focuses primarily on the process of determining the storage location of an object based on its name. Typically, object operations include: PUT (input) operations (where a new object is input into the system and directed to available storage capacity); GET (retrieve) operations (performed as a read operation, where a read request is directed to the correct storage location to retrieve the object); MODIFY (modify) operations (performed as a write operation, where a write request for new data to be written to an existing object stored in the system is directed to the correct storage location of that object); and DELETE (delete) operations (where a command to delete an object is directed to the correct storage location so that the storage hardware can be instructed to delete the object or allow it to be overwritten).

[0036] For each of these operations, in various embodiments, the request is directed to the appropriate storage location of the object, wherein the propagation of the request through the system is performed in accordance with the multi-level hash sequence described above (e.g., the request includes the name of the object, which is hashed at multiple levels of the infrastructure hardware). However, different requests have different items attached to the request. Specifically, in the case of a PUT operation, a new object is attached to the request. In the case of a GET operation, no object data needs to be attached to the request. In the case of a MODIFY operation, new data for the object (or a new version of the object) is attached to the request. In the case of a DELETE operation, no object data needs to be attached to the request.

[0037] While the embodiments above have indicated that all nodes have associated hardware, in various embodiments, nodes may be purely logical nodes without any hardware representation of them. In this case, such logical nodes incorporate the weights of the nodes below them, but do not add to them. In a sense, the weight factors below a logical node are passed down to higher-level nodes through that logical node.

[0038] In various embodiments, to achieve some higher-level objectives, regulators may set weight factors that would otherwise be presented in the analysis of lower nodes, and / or prevent changes to weight factors, even if changes to lower nodes already exist.

[0039] Figure 3 The method described above is illustrated. The method includes performing a first hash (301) on the name of an object, which is part of a request associated with the object, using a first hardware element of the object storage system. The result of the first hash identifies a second hardware element directly below the first hardware element in a hierarchical arrangement of hardware elements in the object storage system. The method further includes sending the request (302) to the second hardware element. The method also includes performing a second hash (303) on the name of the object using the second hardware element. The result of the second hash identifies a third hardware element directly below the second hardware element in the hierarchical arrangement. The method further includes sending the request (304) to the third hardware element to advance the request for service by the object storage system.

[0040] Figure 4 An exemplary description of a computing system 400 (e.g., a smartphone, tablet computer, laptop computer, desktop computer, server computer, etc.) is provided. Figure 4As observed, the basic computing system 400 may include a central processing unit 401 (which may include, for example, multiple general-purpose processing cores 415_1 to 415_X) and a main memory controller 417 arranged on an application processor or multi-core processor, system memory 402, a display 403 (e.g., a touch screen display, a flat panel display), a local wired point-to-point link (e.g., USB) interface 404, various network I / O functions 405 (such as Ethernet interfaces and / or cellular modem subsystems), a wireless local area network (e.g., WiFi) interface 406, a wireless point-to-point link (e.g., Bluetooth) interface 407 and a global positioning system interface 408, various sensors 409_1 to 409_N, one or more cameras 410, a battery 411, a power management control unit 412, speakers and microphones 413, and an audio encoder / decoder 414.

[0041] The application processor or multi-core processor 450 may include one or more general-purpose processing cores 415 (within its CPU 401), one or more graphics processing units 416, memory management functions 417 (e.g., a memory controller), and I / O control functions 418. The general-purpose processing cores 415 typically execute the operating system and application software of the computing system. The graphics processing units 416 typically perform graphics-intensive functions to generate, for example, graphical information to be displayed on the display 403. The memory control functions 417 interface with the system memory 402 to write / read data to / from the system memory 402. (Assume you will add details regarding persistent memory, such as 3DXPoint memory.) The power management control unit 412 typically controls the power consumption of the system 400.

[0042] Each of the touchscreen display 403, communication interfaces 404-407, GPS interface 408, sensor 409, one or more cameras 410, and speaker / microphone codecs 413, 414 can be considered as various forms of I / O (input and / or output) relative to the overall computing system, which may also include integrated peripherals (e.g., one or more cameras 410) where appropriate. Depending on the implementation, individual components of these I / O components may be integrated on the application processor / multi-core processor 450, or may be located outside the package or die of the application processor / multi-core processor 450. The computing system also includes non-volatile memory 420, which may be a high-capacity storage component of the system.

[0043] The processor 450 may also include embedded NVRAM as described above to improve the overall operation of various monitoring programs executed on one or more of the CPU cores 415.

[0044] Embodiments of the present invention may include the various processes described above. These processes may be implemented in machine-executable instructions. These instructions may be used to cause a general-purpose or special-purpose processor to perform certain processes. Alternatively, these processes may be executed by specialized / custom hardware components containing hardwired logic circuitry or programmable logic circuitry (e.g., field-programmable gate arrays (FPGAs), programmable logic devices (PLDs)) for performing the processes, or by any combination of programmed computer components and custom hardware components.

[0045] Elements of the invention can also be provided as machine-readable media for storing machine-executable instructions. Machine-readable media can include, but are not limited to, floppy disks, optical disks, CD-ROMs and magneto-optical disks, flash memory, ROM, RAM, EPROM, EEPROM, magnetic cards or optical cards, propagation media, or other types of media / machine-readable media suitable for storing electronic instructions. For example, the invention can be downloaded as a computer program, which can be transmitted as a data signal embodied in a carrier wave or other propagation medium from a remote computer (e.g., a server) to a requesting computer (e.g., a client) via a communication link (e.g., a modem or network connection).

[0046] The invention has been described in the foregoing specification with reference to specific exemplary embodiments thereof. However, it will be apparent that various modifications and alterations can be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. Therefore, the specification and drawings should be viewed in an illustrative rather than restrictive sense.

[0047] The following examples relate to other embodiments.

[0048] In a first aspect, a first embodiment provides a method comprising: performing a first hash on the name of an object using a first hardware element of an object storage system, the name of the object being part of a request associated with the object, the result of the first hash identifying a second hardware element directly below the first hardware element in a hierarchical arrangement of hardware elements in the object storage system; sending the request to the second hardware element; performing a second hash on the name of the object using the second hardware element, the result of the second hash identifying a third hardware element directly below the second hardware element in the hierarchical arrangement; and sending the request to the third hardware element to advance the request for service by the object storage system.

[0049] The second embodiment relates to the method described in the first embodiment, and further includes storing the object in a third hardware element, which is a mass storage device.

[0050] The third embodiment relates to the method described in the first embodiment, wherein one of the second and third hardware components is a storage server including multiple high-capacity storage devices.

[0051] The fourth embodiment relates to the method described in the first embodiment, wherein one of the hardware components is a network gateway for a storage server rack.

[0052] The fifth embodiment relates to the method described in the first embodiment, wherein the first hash incorporates first weight information, which describes the hierarchical arrangement of the structure directly below the first hardware element.

[0053] The sixth embodiment relates to the method described in the fifth embodiment, wherein the first hash incorporates second weight information, which describes the hierarchical arrangement of the structure directly below the second hardware element.

[0054] The seventh embodiment relates to the method described in the sixth embodiment, and further includes: modifying first and second weight information to reflect changes in the object storage system under a second hardware element, wherein the change in the first weight information is less than the change in the second weight information.

[0055] The eighth embodiment relates to the method of the first embodiment, wherein the third hardware element is a mass storage device to service the request therein, and the method further includes: queuing a request directed to the mass storage device in unused storage capacity of the object storage system in response to the mass storage device temporarily entering an offline state; and replaying the request to the mass storage device after the mass storage device returns to an online state.

[0056] The ninth embodiment relates to the method described in the eighth embodiment, wherein the unused storage capacity is part of the same storage server for which the mass storage device is a part.

[0057] The tenth embodiment relates to the method of the ninth embodiment, wherein the weight values ​​provided to the first and second hashes are not changed in response to the mass storage device entering an offline state.

[0058] In a second aspect, an eleventh embodiment provides an apparatus comprising: a semiconductor chip including logic circuitry for performing a hash on the name of an object in an object storage system, the hash being performed by a first hardware element in a hierarchical hardware element arrangement in the object storage system, the name being part of a request associated with the object, the result of the hash being to identify a second hardware element directly below the first hardware element in the hierarchical arrangement, the request being sent to the second hardware element to advance the request for service by the object storage system, the hash incorporating one or more weighting factors describing the performance characteristics of the hardware element below the first hardware element in the hierarchical hardware element arrangement.

[0059] The twelfth embodiment relates to the apparatus described in the eleventh embodiment, wherein the logic circuit is any combination of the following: dedicated hardwired logic circuit; programmable logic circuit; logic circuit for executing program code.

[0060] The thirteenth embodiment relates to the apparatus described in the eleventh embodiment, wherein the semiconductor chip is integrated into an object storage system hardware element.

[0061] The fourteenth embodiment relates to the apparatus described in the twelfth embodiment, wherein the object storage system hardware components are any of the following: a proxy server; a network switch; a rack gateway; a storage server; and an I / O interface through which multiple high-capacity storage devices are coupled.

[0062] The fifteenth embodiment relates to the apparatus described in the fourteenth embodiment, wherein the object storage system hardware components are functionally integrated into the object storage system.

[0063] In a third aspect, a sixteenth embodiment provides a machine-readable storage medium containing program code that, when processed by a processor of a first hardware element in a hierarchical hardware element arrangement in an object storage system, causes the processor to implement a method comprising the steps of: performing a hash on the name of an object in the object storage system, the name being part of a request associated with the object, the result of the hash being used to identify a second hardware element directly below the first hardware element in the hierarchical arrangement, and the request being sent to the second hardware element to advance the request for service by the object storage system.

[0064] The seventeenth embodiment relates to the machine-readable medium described in the sixteenth embodiment, wherein the hash incorporates weight information that describes the hierarchical arrangement directly below the first hardware element.

[0065] The eighteenth embodiment relates to the machine-readable medium of the seventeenth embodiment, and further includes modifying the weight information to reflect changes in the object storage system below the second hardware element.

[0066] The nineteenth embodiment relates to the machine-readable medium described in the seventeenth embodiment, wherein the weight information remains fixed if the change below the first element in the hierarchy does not exceed a threshold.

[0067] The twentieth embodiment relates to the machine-readable medium described in the sixteenth embodiment, wherein the first hardware element is any of the following: a computing system; a networking system.

[0068] In a fourth aspect, a twenty-first embodiment provides a method comprising: determining weight factors for leaf nodes in a hierarchical node arrangement of an object storage system, the leaf nodes corresponding to storage devices, the weight factors describing the performance characteristics of the storage devices; determining weight factors for intermediate nodes above the leaf nodes in the hierarchical node arrangement of the object storage system, the weight factors for the intermediate nodes incorporating the performance characteristics of each lower node in the node arrangement of the object storage system; and mapping objects for storage in the object storage system by hashing the names of the objects, the hashing being performed using hash functions located at deeper levels of the hierarchical node arrangement of the object storage system, the hash functions incorporating certain weight factors among the weight factors describing the performance characteristics of each lower node in the node arrangement of the object storage system.

Claims

1. A method comprising: A first hash is performed on the name of an object using a first hardware element of the object storage system. The name of the object is part of a request associated with the object. The result of the first hash explicitly identifies a second hardware element directly below the first hardware element in a hierarchical arrangement of hardware elements in the object storage system. The second hardware element is a unique hardware element identified by the result of the first hash. The hierarchical arrangement of hardware elements includes a plurality of hardware elements directly below the first hardware element. Send the request to the second hardware component; and A second hash is performed on the name of the object using a second hardware element, the result of which identifies a third hardware element directly below the second hardware element in the hierarchical arrangement; and The request is sent to a third hardware component to advance the request so that it can be serviced by the object storage system.

2. The method according to claim 1 further includes storing the object in a third hardware element, wherein the third hardware element is a mass storage device.

3. The method according to claim 1, wherein, One of the second and third hardware components is a storage server that includes multiple high-capacity storage devices.

4. The method according to claim 1, wherein, One of the hardware components is a network gateway for the storage server rack.

5. The method according to claim 1, wherein, The first hash incorporates first weight information, which describes the hierarchical arrangement of the structure directly below the first hardware element.

6. The method according to claim 5, wherein, The first hash incorporates the second weight information, which describes the hierarchical arrangement of the structure directly below the second hardware element.

7. The method according to claim 6, further comprising: The first and second weight information are modified to reflect changes in the object storage system below the second hardware element, wherein the change in the first weight information is less than the change in the second weight information.

8. The method according to claim 1, wherein, The third hardware component is a high-capacity storage device in which the request is serviced, and the method further includes: In response to the mass storage device temporarily going offline, requests directed to the mass storage device are queued in the unused storage capacity of the object storage system; and After the mass storage device returns to online status, the request is replayed on the mass storage device.

9. The method according to claim 8, wherein, The unused storage capacity is part of the same storage server to which the large-capacity storage device is a component.

10. The method according to claim 9, wherein, The weight values ​​provided to the first and second hashes do not change in response to the mass storage device entering an offline state.

11. An apparatus comprising: A semiconductor chip includes logic circuitry that performs a hash on the name of an object in an object storage system. The hash is performed by a first hardware element in a hierarchical arrangement of hardware elements in the object storage system. The name is part of a request associated with the object. The result of the hash explicitly identifies a second hardware element directly below the first hardware element in the hierarchical arrangement. The second hardware element is a unique hardware element represented by the hash result. The hierarchical arrangement of hardware elements includes multiple hardware elements directly below the first hardware element. The request is sent to the second hardware element to advance the request for service by the object storage system. The hash incorporates one or more weighting factors that describe the performance characteristics of the hardware elements below the first hardware element in the hierarchical arrangement.

12. The apparatus according to claim 11, wherein, The logic circuit is any combination of the following: Dedicated hardwired logic circuit; Programmable logic circuits; The logic circuit that executes the program code.

13. The apparatus according to claim 11, wherein, The semiconductor chip is integrated into the object storage system hardware components.

14. The apparatus according to claim 12, wherein, The object storage system hardware component is any of the following: Proxy server; Network switch; Rack gateway; Storage server; The I / O interface is used to couple multiple high-capacity storage devices.

15. The apparatus according to claim 14, wherein, The object storage system hardware components are functionally integrated into the object storage system.

16. A method comprising: Determine the weighting factors for leaf nodes in a hierarchical node layout for an object storage system, where each leaf node corresponds to a storage device and the weighting factors describe the performance characteristics of the storage device. A weighting factor is determined for intermediate nodes above the leaf nodes in the hierarchical node arrangement of the object storage system, and the weighting factor for the intermediate nodes incorporates the performance characteristics of each lower node in the hierarchical node arrangement of the object storage system. as well as Objects are mapped for storage in the object storage system by hashing their names. This hashing utilizes hash functions located at deeper levels of the hierarchical node arrangement of the object storage system. Each hash function incorporates certain weighting factors that describe the performance characteristics of lower nodes in the node arrangement of the object storage system. Each result of the hash function explicitly identifies only a single hardware element at the next deeper level in the hierarchical node arrangement of the object storage system, and multiple hardware elements exist directly below the next deeper level in the hierarchical node arrangement of the object storage system.

17. A machine-readable medium having instructions stored thereon, which, when executed, cause a computing device to perform the method according to any one of claims 1-10 and 16.

18. An apparatus comprising: A component for performing a first hash on the name of an object using a first hardware element of an object storage system, the name of which is part of a request associated with the object, the result of the first hash explicitly identifying a second hardware element directly below the first hardware element in a hierarchical arrangement of hardware elements in the object storage system, the second hardware element being a unique hardware element identified by the result of the first hash, and wherein the hierarchical arrangement of hardware elements includes a plurality of hardware elements directly below the first hardware element. A component for sending the request to a second hardware element; and A component for performing a second hash on the name of the object using a second hardware element, the result of which identifies a third hardware element directly below the second hardware element in the hierarchical arrangement; and A component for sending the request to a third hardware element to advance the request so that it can be serviced by the object storage system.

19. The apparatus of claim 18, further comprising a component for storing the object in a third hardware element, the third hardware element being a mass storage device.

20. The apparatus according to claim 18, wherein, One of the second and third hardware components is a storage server that includes multiple high-capacity storage devices.

21. The apparatus according to claim 18, wherein, One of the hardware components is a network gateway for the storage server rack.

22. The apparatus according to claim 18, wherein, The first hash incorporates first weight information, which describes the hierarchical arrangement of the structure directly below the first hardware element.

23. The apparatus according to claim 22, wherein, The first hash incorporates the second weight information, which describes the hierarchical arrangement of the structure directly below the second hardware element.

24. The apparatus of claim 23, further comprising: A component for modifying first and second weight information to reflect changes in the object storage system below a second hardware element, wherein the change in the first weight information is less than the change in the second weight information.

25. The apparatus according to claim 18, wherein, The third hardware component is a high-capacity storage device in which the request is serviced, and the device further includes: Components for queuing requests directed to the mass storage device in the unused storage capacity of the object storage system in response to the mass storage device temporarily going offline; and Components for replaying the request to the mass storage device after the mass storage device returns to an online state.

26. The apparatus according to claim 25, wherein, The unused storage capacity is part of the same storage server to which the large-capacity storage device is a component.

27. The apparatus according to claim 26, wherein, The weight values ​​provided to the first and second hashes do not change in response to the mass storage device entering an offline state.

28. An apparatus comprising: A component for determining weighting factors for leaf nodes in a hierarchical node layout for an object storage system, the leaf nodes corresponding to storage devices, the weighting factors describing the performance characteristics of the storage devices; A component for determining a weighting factor for an intermediate node above a leaf node in a hierarchical node arrangement of the object storage system, wherein the weighting factor for the intermediate node incorporates the performance characteristics of each lower node in the hierarchical node arrangement of the object storage system. as well as The method is used to map objects for storage in the object storage system by hashing their names. The hashing is performed using hash functions located at deeper levels of the hierarchical node arrangement of the object storage system. Each hash function incorporates certain weighting factors that describe the performance characteristics of lower nodes in the node arrangement of the object storage system. Each result of the hash function explicitly identifies only a single hardware element at the next deeper level in the hierarchical node arrangement of the object storage system. Furthermore, multiple hardware elements exist directly below the next deeper level in the hierarchical node arrangement of the object storage system.

Citation Information

Patent Citations

  • Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory

    CN104246764A

  • Distributed storage system and method of realizing hard affinity of resource

    CN105991705A