EP3547102B1 - Object storage system with multi-level hashing function for storage address determination - Google Patents
Object storage system with multi-level hashing function for storage address determination Download PDFInfo
- Publication number
- EP3547102B1 EP3547102B1 EP19159540.4A EP19159540A EP3547102B1 EP 3547102 B1 EP3547102 B1 EP 3547102B1 EP 19159540 A EP19159540 A EP 19159540A EP 3547102 B1 EP3547102 B1 EP 3547102B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- hardware element
- node
- directly beneath
- request
- nodal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims description 176
- 230000008859 change Effects 0.000 claims description 37
- 238000000034 method Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 15
- 230000006855 networking Effects 0.000 claims description 9
- 239000004065 semiconductor Substances 0.000 claims 6
- 230000006870 function Effects 0.000 description 40
- 238000013507 mapping Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 10
- 101100014158 Caenorhabditis elegans rack-1 gene Proteins 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Definitions
- the field of invention pertains generally to the computing sciences, and, more specifically, to an object storage system with multi-level hashing function for storage address determination.
- object storage is characterized by a highly versatile input namespace, ease of operation with distributed storage nodes and corresponding large scale storage capacity.
- US 2017/149878 discloses implementations for assigning weights to backend servers such that rendezvous hashing may distribute a load among the backend servers based on the weights of the backend servers.
- the implementations may ensure consistency, distribution, and weighting are achieved on a traffic load balancing server while load balancing the backend servers.
- an issue with object storage systems is the movement of data objects as a consequence of storage nodes being added or deleted from the system.
- an object storage system 100 is typically implemented with a number of storage nodes 101 that are communicatively coupled to a network 102.
- Each storage node contains one or mass storage devices having associated storage locations and corresponding storage location addresses.
- the system When a client submits an object for storage in the system 100, the system performs a hashing operation upon the name given to the object by the client (e.g., a directory file path for the object, a unique identifier assigned to the object, etc.).
- the output of the hashing operation essentially generates address of the storage location in the system where the object is to be stored.
- Each of the storage nodes in the system 101 is assigned a different range of object storage location addresses. If a new storage node is added to the system or deleted from the system, the per storage node object address location assignments change which requires the movement of some objects from their present storage node to a new storage node.
- Fig. 2 shows an improved object storage system design 200.
- the architecture of the system takes the form of a nodal tree in which each higher level node of the tree subsumes the lower level nodes beneath it to form respective non-overlapping and standalone branches of further nodal trees under the nodal tree.
- the lowest level 204 of the tree corresponds to leaf nodes having the actual storage media devices (e.g., flash drives, hard disk drives, etc.).
- each nodal level is preceded with a dedicated hashing function for that nodal level that identifies a particular node at the nodal level to which a particular object, based on its name, is to be mapped.
- FIG. 2 shows an object storage system 200 with only three nodal levels 201, 202, 203 (and therefore three hashing functions 211, 212, 213 that precede them).
- additional nodal levels and corresponding hashing functions can be added to the three-level system of Fig. 2 .
- the first hashing function 211 determines to which of the highest level nodes 201 the object is to be mapped and the object is sent over a network 204 to that node.
- Each of the highest level nodes 201 includes an instance of a second hashing function 212.
- the result identifies a node at the next lower level 202 that the object maps to and the object is sent over a network to that node.
- the next lower level node also includes an instance of a third hashing function 213.
- the result identifies a node at the lowest, leaf node level 203 that the object maps to.
- the object is sent to that leaf node and is stored therein.
- each of the hashing algorithms 211, 212, 213 are weighted to have some bias, or will otherwise assign objects to immediately lower nodes in a purposely imbalanced way, if the structure of the object storage system beneath the hashing function is likewise biased or imbalanced. For example, if a first immediately lower node has more storage capacity beneath it and/or more I/O bandwidth than a second immediately lower node, the hashing function that feeds the first and second nodes will be structured to map more objects to the first node than the second node.
- each hashing function 211, 212, 213 is presented with some description of the storage system structure directly beneath it.
- the description essentially describes, e.g., the total storage capacity, bandwidth capacity, media type, processor speed, etc. at and/or beneath each node that it maps objects to.
- the description may be automatically calculated from child node descriptions.
- an administrator or administration function can override automatic description settings to meet various service level agreements.
- the storage capacity of a higher level node corresponds to the combined storage capacity of the leaf nodes beneath it.
- the storage capacity of Rack_1 corresponds to the combined storage capacity of storage server nodes SS_1_1 through SS_1_N.
- the description of the performance capability of one or more of the nodes directly beneath a hashing level can also be referred to, in various embodiments, as a "weight factor”.
- each hashing level 211, 212, 213 receives one or more weight values describing the capability of the storage system nodes directly beneath it so that it can weigh or bias object storage location assignments in response to any imbalances in the capabilities of the nodes directly beneath it if such imbalances exist.
- seed values may be assigned to each node in the hierarchical tree of the object storage system. Seed values are randomized numbers that are used for the hashing calculations. In various embodiments, the aforementioned one or more weight factors are presented as input value(s) to a random number generator at a particular node. The random number generator then generates a seed value for the node's hashing function. In this manner, each node in the tree generates a seed value and then uses the seed value to perform hashes with the object name of each request received by the node to determine a next lower node that the request is to be directed to.
- the seed value generated at each node therefore includes some randomness owing to its being generated from a random number generator (if all lower nodes are equal, requests should be mapped randomly to the lower nodes).
- the weights therefore provide some bias to the randomness of the seed values that causes the hashing function to favor one node (e.g., having more storage capacity) over another node (e.g., having less storage capacity) when determining which lower node a request it to be mapped to.
- weight factors may be sent to a centralized location (e.g., that maintains an understanding of the object storage system's hierarchical tree) having a random generator that calculates seed values for multiple nodes of the system. The centralized location may then send the appropriate seed values to the different nodes for incorporation by their respective hashing functions.
- execution of any particular one of the hashing algorithms with its corresponding object name, input weight factor(s) and seed value generates a ranking of all the nodes directly beneath the hashing level.
- the hashing algorithm picks the highest ranked node as the node to which the object should be mapped (i.e., the object's assigned storage location falls within the range of location addresses assigned to the selected node).
- each nodal level corresponds to a different element of hardware in the overall object storage solution.
- the highest nodal level 201 in the exemplary system of Fig. 2 corresponds to a rack of storage servers.
- a rack is typically implemented as one or more cabinets having shelf space or otherwise retrofitted to safely stack electronic equipment.
- the rack may stack storage servers, which, e.g., are servers that emphasize storage by, e.g., having most/all of the higher bandwitdh I/O interfaces of the server computer coupled to non volatile mass storage devices (e.g., a solid state drives (e.g., flash SDD) and/or hard disk drives).
- non volatile mass storage devices e.g., a solid state drives (e.g., flash SDD) and/or hard disk drives).
- each of the immediately lower level nodes 202 directly beneath a particular rack/node correspond to the different storage servers that are stacked in the rack.
- each leaf node beneath a particular storage server node in Fig. 2 corresponds to a particular non volatile mass storage device that is integrated with the particular server node (e.g., its coupled to one of the server's high bandwidth I/O interfaces).
- higher level nodes may be added above the highest level nodes.
- a nodal level may be added between the storage server level and the mass storage device level to group those mass storage devices that are coupled to a same I/O interface of a particular storage server.
- the architecture may include the introduction of an object storage hashing function in various types of hardware resources for the purpose of mapping an object to a particular lower level hardware resource, where, the hardware resource is more of a component of the storage hardware infrastructure itself than a centralized object mapping function for the object storage system (whose purpose is to determine global object mappings that definitively define object storage locations from a single hashing operation).
- the new approach of Fig. 2 can be viewed as taking a centralized object mapping function as described above with respect to Fig. 1 and not only distributing it, but distributing down through multiple, lower hierarchical levels of the storage hardware itself (e.g., a local area network gateway, a network gateway that is integrated into a rack, a storage server, an interface to a storage server I/O interface, etc.).
- the storage hardware e.g., a local area network gateway, a network gateway that is integrated into a rack, a storage server, an interface to a storage server I/O interface, etc.
- the distribution of the hashing function activity needed to fully resolve a final storage location for a particular object through different levels of the storage hardware helps insulate the overall storage system from object re-location after the addition or removal of a storage capacity.
- a single global hashing function is apt to have names of objects resolve to different storage locations in a more disruptive way in response to the addition/removal of a storage node than an object storage system constructed according to the hashing structure of Fig. 2 .
- the object storage system of Fig. 2 which implements the overall hashing activity as a sequence of hashing processes that "thread" from higher hardware levels to lower hardware levels, may exhibit even less physical object transportation disturbance than a consistent hashing algorithm, at least for lower level nodal changes, because the hashing structure is better able to account for the fact that much of the system remains unchanged when only a smaller (lower level) region of the system has changed.
- a new mass storage device is added/deleted to/from storage server SS_1_1, note that the storage capacity of the remaining storage servers across level 202 remain unchanged. Therefore, ideally, many if not all mapping changes that result from the change in storage capacity may be kept within storage server SS_1_1. In a sense, a small change at a lower node does not "ripple up" (or hardly ripples up) to the higher level hashing functions, which, in turn, result in minimal changes to the mappings of the nodes that little/no nodal relationship in the system.
- the weight values provided to the lowest hashing level 213 that resides directly above where the change occurred may see much more significant change (the addition/removal of the storage device to/from server SS_1_1 noticeably changes the server's total storage capacity).
- the addition/removal of the storage device to/from server SS_1_1 noticeably changes the server's total storage capacity.
- the only weight value that is allowed to change is the weight value for storage server SS_1_1 - all other weight values in the system are deliberately kept fixed. By preventing all other weight values from changing, all hashing instances other than the hashing instance of server SS_1_1 will not modify any of their object mappings.
- the weight factor associated with said node in response to a change in storage capacity in a node, the weight factor associated with said node is changed, and the weight factors associated with the remaining nodes in the object storage system are configured to remain unchanged.
- weight values may be kept fixed in response to a capacity change unless some 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 (the larger system is permitted to adapt to the change).
- weight value changes are permitted to expand outward from the point of disturbance depending on the magnitude of a storage capacity change. For example, if the storage capacity of server SS_1_1 changes by less than 20%, then, only the weight values of server SS_1_1's hashing function instance are permitted to change. This keeps object relocation within server SS_1_1. By contrast, if the storage capacity of server SS_1_1 changes between 20% and 40%, then, the weight values for Rack_1's and server SS_1_1's hashing instances are permitted to be changed (but weight values for all other hashing instances remain fixed). This keeps object relocation within the servers SS_1_1 through SS_1_N of Rack_1.
- the weight values for the highest level hashing instance 211, Rack_1's hashing instance and server SS_1_1's hashing instance are permitted to be changed in response.
- The may result in rack to rack object movements, but the weight change for hashing function 211 will be much less than the weight change for Rack_1's hashing instance or server SS_1_1's hashing instance.
- weight values fixed in response to a storage capacity change may be particularly useful if the storage capacity change is not only small but temporary.
- An example is when a mass storage device is being maintained. In this case, the mass storage device may only be temporarily off-line (it can reliably keep its data but cannot process any read or write requests during the maintenance procedure).
- no weight values are changed in the mass storage device's server or elsewhere in the storage system.
- any read or write requests that are received by the off-line device's server that map to the off-line device are temporarily queued in free (unused) storage capacity of one or more working mass storage devices in the same server as the temporarily off line mass storage device.
- the read or write requests that have been queued in the server's free storage space are then "replayed" to the mass storage device so that it can service them (it receives the stream of requests that it "missed” while being maintained).
- rendezvous hashing algorithms are able to accept weights as described above in order to provide some deliberate imbalance in the hashing output.
- each of the hashing algorithms 211, 212, 213 of Fig. 2 are implemented as a rendezvous hashing algorithm.
- the weight values indicate the existence of each immediately lower node and some capacity and/or performance metric for each such immediately lower node.
- the object storage system may include a centralized or distributed management function implemented on at least one computing system that is communicatively coupled to the storage servers 202 and maintains awareness of their storage capacity levels, changes to their storage capacity levels, their I/O bandwidth capabilities, changes to their bandwidth capabilities, etc. From this awareness the management function crafts the weight values for each hashing level and provides them to the hashing level when appropriate (e.g., in response to a capacity change). The management function may also maintain, e.g., percentage capacity changes and corresponding percentage capacity change thresholds that trigger the sending of a new set of weight values to a hashing function.
- Each hashing function instance may be implemented with dedicated hardware logic circuitry, programmable logic circuitry (e.g., field programmable gate array (FPGA), programmable logic array (PLA), programmable logic device (PLD), etc.) or logic circuitry that executes some form of program code (e.g., a general purpose processor (embedded or otherwise), a special purpose processor (e.g., a digital signal processor (DSP), etc.) or any combination of these.
- programmable logic circuitry e.g., field programmable gate array (FPGA), programmable logic array (PLA), programmable logic device (PLD), etc.
- logic circuitry that executes some form of program code
- a general purpose processor embedded or otherwise
- DSP digital signal processor
- Such circuitry may be located in any of a number of different hardware systems/components of an object storage system such as: 1) a network gateway, networking switch and/or networking router; 2) a storage server; 3) a proxy server or server that acts as a gateway to the object storage system; 4) an I/O interface of a storage server to which multiple mass storage devices attach, etc.
- any of the storage server and proxy server may be implemented with a computing system.
- elements of networking equipment may resemble or otherwise include basic components of a computing system.
- networking equipment typically includes a management control function that includes one or more CPU cores and memory to keep the program code and data that are executed by the CPU cores.
- the hashing function may be implemented by any of dedicated logic circuitry, programmable logic circuitry, or program code execution or any combination of these within any of a computing system or networking system.
- the networking equipment may include any of switching logic circuitry and/or routing logic circuitry and ingress/egress ports. A request is received at an ingress port and processed by the switching/routing logic circuitry in accordance with the hash result to direct the request to an appropriate egress port through which the correct next lower level node can be reached.
- the object operations include PUT operations (in which new objects are entered into the system and are directed to available storage capacity); GET operations (that operate as read operations in which a read request is directed to the correct storage location to retrieve an object); MODIFY operations (that operate as write operations in which a write request containing new data to be written over an existing object that is stored in the system is directed to the correct storage location of the object); and, DELETE operations (in which 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 permit the object to be overwritten).
- PUT operations in which new objects are entered into the system and are directed to available storage capacity
- GET operations that operate as read operations in which a read request is directed to the correct storage location to retrieve an object
- MODIFY operations that operate as write operations in which a write request containing new data to be written over an existing object that is stored in the system is directed to the correct storage location of the object
- DELETE operations in which a command to delete an object is directed to the correct storage location
- a request is directed to the appropriate storage location of an object where the propagation of the request through the system is performed consistently with the multi-level hashing sequence described above (e.g., the request includes the object's name which is hashed at multiple levels of the infrastructure hardware).
- the different requests have different items attached the request.
- a new object is appended to the request.
- no object data need be appended to the request.
- a MODIFY new data for an object (or a new version of the object) is appended to the request.
- no object data need be appended to the request.
- nodes may be purely logical and have no hardware characterization about them. In this case, such logical nodes incorporate the weights of the nodes beneath them but do not add to them. In a sense, the weight factors beneath the logical node passes through the logical node to a higher level node.
- administrators may set weight factors that are different than what the analysis of lower nodes would otherwise present, and/or, prevent weigh factors from changing even though there has been a change to the lower nodes.
- Fig. 3 shows a method described above.
- the method includes performing 301 a first hash on a name of an object with a first hardware element of an object storage system, the name of the object being part of a request that is associated with the object, a result of the first hash identifying a second hardware element directly beneath the first hardware element in a hierarchical arrangement of hardware elements in the object storage system.
- the method also includes sending 302 the request to the second hardware element.
- the method also includes performing 303 a second hash on the name of the object with the second hardware element, a result of the second hash identifying a third hardware element directly beneath the second hardware element in the hierarchical arrangement.
- the method also includes sending 304 the request to the third hardware element to advance the request toward being serviced by the object storage system.
- FIG. 4 provides an exemplary depiction of a computing system 400 (e.g., a smartphone, a tablet computer, a laptop computer, a desktop computer, a server computer, etc.).
- the basic computing system 400 may include a central processing unit 401 (which may include, e.g., a plurality of general purpose processing cores 415_1 through 415_X) and a main memory controller 417 disposed on a multi-core processor or applications processor, system memory 402, a display 403 (e.g., touchscreen, flat-panel), a local wired point-to-point link (e.g., USB) interface 404, various network I/O functions 405 (such as an Ethernet interface and/or cellular modem subsystem), 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 through 409_Y, one or more cameras
- An applications processor or multi-core processor 450 may include one or more general purpose processing cores 415 within its CPU 401, one or more graphical processing units 416, a memory management function 417 (e.g., a memory controller) and an I/O control function 418.
- the general purpose processing cores 415 typically execute the operating system and application software of the computing system.
- the graphics processing unit 416 typically executes graphics intensive functions to, e.g., generate graphics information that is presented on the display 403.
- the memory control function 417 interfaces with the system memory 402 to write/read data to/from system memory 402. Assuming you will add details on persistent memory (e.g. 3DXPoint memory).
- the power management control unit 412 generally controls the power consumption of the system 400.
- Each of the touchscreen display 403, the communication interfaces 404-407, the GPS interface 408, the sensors 409, the camera(s) 410, and the speaker/microphone codec 413, 414 all can be viewed as various forms of I/O (input and/or output) relative to the overall computing system including, where appropriate, an integrated peripheral device as well (e.g., the one or more cameras 410).
- I/O components may be integrated on the applications processor/multi-core processor 450 or may be located off the die or outside the package of the applications processor/multi-core processor 450.
- the computing system also includes non-volatile storage 420 which may be the mass storage component of the system.
- the processor 450 may also include embedded NVRAM as described above to improve overall operation of various monitoring programs that execute on one or more of the CPU cores 415.
- Embodiments of the invention may include various processes as set forth above.
- the processes may be embodied in machine-executable instructions.
- the instructions can be used to cause a general-purpose or special-purpose processor to perform certain processes.
- these processes may be performed by specific/custom hardware components that contain hardwired logic circuitry or programmable logic circuitry (e.g., field programmable gate array (FPGA), programmable logic device (PLD)) for performing the processes, or by any combination of programmed computer components and custom hardware components.
- FPGA field programmable gate array
- PLD programmable logic device
- Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions.
- the machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, FLASH memory, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions.
- the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
- a remote computer e.g., a server
- a requesting computer e.g., a client
- a communication link e.g., a modem or network connection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- The field of invention pertains generally to the computing sciences, and, more specifically, to an object storage system with multi-level hashing function for storage address determination.
- With the emergence of cloud computing and high performance data centers as an infrastructure environment for modern day computing, innovations are being made in large scale data storage. One particular emerging storage approach, referred to as object storage, is characterized by a highly versatile input namespace, ease of operation with distributed storage nodes and corresponding large scale storage capacity. When attempting to physically build the hardware and/or software needed to implement an actual, working object storage system, however, issues of practical implementation may be observed resulting in an opportunity for practical innovation improvements.
-
US 2016/188591 discloses systems and methods for Key-Value-Tuple-encoded (KVT-encoded) object storage. -
US 2017/149878 discloses implementations for assigning weights to backend servers such that rendezvous hashing may distribute a load among the backend servers based on the weights of the backend servers. The implementations may ensure consistency, distribution, and weighting are achieved on a traffic load balancing server while load balancing the backend servers. - The invention is defined by the appended independent claims. Advantageous, optional features of the invention are then set out in the appended dependent claims.
- A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which:
-
Fig. 1 shows a prior art object storage system; -
Fig. 2 shows an improved object storages system; -
Fig. 3 shows a method performed by the improved object storage system; -
Fig. 4 shows a computing system. - An issue with object storage systems is the movement of data objects as a consequence of storage nodes being added or deleted from the system. Here, as observed in
Fig. 1 , anobject storage system 100 is typically implemented with a number ofstorage nodes 101 that are communicatively coupled to anetwork 102. Each storage node contains one or mass storage devices having associated storage locations and corresponding storage location addresses. - When a client submits an object for storage in the
system 100, the system performs a hashing operation upon the name given to the object by the client (e.g., a directory file path for the object, a unique identifier assigned to the object, etc.). The output of the hashing operation essentially generates address of the storage location in the system where the object is to be stored. Each of the storage nodes in thesystem 101 is assigned a different range of object storage location addresses. If a new storage node is added to the system or deleted from the system, the per storage node object address location assignments change which requires the movement of some objects from their present storage node to a new storage node. -
Fig. 2 shows an improved objectstorage system design 200. According to the object storage system design ofFig. 2 , the architecture of the system takes the form of a nodal tree in which each higher level node of the tree subsumes the lower level nodes beneath it to form respective non-overlapping and standalone branches of further nodal trees under the nodal tree. Thelowest level 204 of the tree corresponds to leaf nodes having the actual storage media devices (e.g., flash drives, hard disk drives, etc.). Additionally, each nodal level is preceded with a dedicated hashing function for that nodal level that identifies a particular node at the nodal level to which a particular object, based on its name, is to be mapped. For simplicityFig. 2 shows anobject storage system 200 with only threenodal levels functions Fig. 2 . - Referring to
Fig. 2 , when a new object is to be stored in the system, thefirst hashing function 211 determines to which of thehighest level nodes 201 the object is to be mapped and the object is sent over anetwork 204 to that node. Each of thehighest level nodes 201 includes an instance of asecond hashing function 212. The particular highest level node that the object mapped to computes a second hash on the object name with thesecond hashing function 212. The result identifies a node at the nextlower level 202 that the object maps to and the object is sent over a network to that node. The next lower level node also includes an instance of athird hashing function 213. The particular next lower level node that the object mapped to computes a third hash on the object name. The result identifies a node at the lowest,leaf node level 203 that the object maps to. The object is sent to that leaf node and is stored therein. - Additionally, each of the
hashing algorithms - Here, each hashing
function - In the case of higher level hashing algorithms that map objects to higher level nodes, the storage capacity of a higher level node corresponds to the combined storage capacity of the leaf nodes beneath it. Thus, for instance, the storage capacity of Rack_1 corresponds to the combined storage capacity of storage server nodes SS_1_1 through SS_1_N. The description of the performance capability of one or more of the nodes directly beneath a hashing level can also be referred to, in various embodiments, as a "weight factor". Hence, each
hashing level - In further embodiments, seed values may be assigned to each node in the hierarchical tree of the object storage system. Seed values are randomized numbers that are used for the hashing calculations. In various embodiments, the aforementioned one or more weight factors are presented as input value(s) to a random number generator at a particular node. The random number generator then generates a seed value for the node's hashing function. In this manner, each node in the tree generates a seed value and then uses the seed value to perform hashes with the object name of each request received by the node to determine a next lower node that the request is to be directed to.
- The seed value generated at each node therefore includes some randomness owing to its being generated from a random number generator (if all lower nodes are equal, requests should be mapped randomly to the lower nodes). The weights therefore provide some bias to the randomness of the seed values that causes the hashing function to favor one node (e.g., having more storage capacity) over another node (e.g., having less storage capacity) when determining which lower node a request it to be mapped to. In alternate embodiments, weight factors may be sent to a centralized location (e.g., that maintains an understanding of the object storage system's hierarchical tree) having a random generator that calculates seed values for multiple nodes of the system. The centralized location may then send the appropriate seed values to the different nodes for incorporation by their respective hashing functions.
- In an embodiment, execution of any particular one of the hashing algorithms with its corresponding object name, input weight factor(s) and seed value generates a ranking of all the nodes directly beneath the hashing level. The hashing algorithm then picks the highest ranked node as the node to which the object should be mapped (i.e., the object's assigned storage location falls within the range of location addresses assigned to the selected node).
- In various embodiments, each nodal level corresponds to a different element of hardware in the overall object storage solution. The highest
nodal level 201 in the exemplary system ofFig. 2 corresponds to a rack of storage servers. Here, as is known in the art, a rack is typically implemented as one or more cabinets having shelf space or otherwise retrofitted to safely stack electronic equipment. In the case of an object storage system, the rack may stack storage servers, which, e.g., are servers that emphasize storage by, e.g., having most/all of the higher bandwitdh I/O interfaces of the server computer coupled to non volatile mass storage devices (e.g., a solid state drives (e.g., flash SDD) and/or hard disk drives). - In the exemplary system of
Fig. 2 , with thehighest level nodes 201 corresponding to a different rack, then, each of the immediatelylower level nodes 202 directly beneath a particular rack/node correspond to the different storage servers that are stacked in the rack. In turn, each leaf node beneath a particular storage server node inFig. 2 corresponds to a particular non volatile mass storage device that is integrated with the particular server node (e.g., its coupled to one of the server's high bandwidth I/O interfaces). From this example, as the object storage system expands in scale and/or more granularized hardware boundaries are desired per nodal level, higher level nodes may be added above the highest level nodes. - For example, in the case of expansion, if the set of racks and corresponding equipment observed in
Fig. 2 correspond to the set of equipment within a first data center, and then the system is expanded to include more data centers, higher level nodes can be added to those observed inFig. 2 such that each added higher level node corresponds to a different data center. - In the case of more granularized hardware boundaries, for example, even if the equipment observed in
Fig. 2 corresponds to the equipment within a same data center, different groups of racks may be coupled to different local area networks within the data center. As such, higher level nodes may be added where each added higher level node corresponds to the gateway to a specific local area network and the racks/nodes beneath each added higher level node correspond to the racks that are coupled to the local area network that is represented by the higher level node. Additional nodes may also be added below the rack level to introduce more finely granularized hardware boundaries within a rack. For example, a nodal level may be added between the storage server level and the mass storage device level to group those mass storage devices that are coupled to a same I/O interface of a particular storage server. - Regardless, note that the architecture may include the introduction of an object storage hashing function in various types of hardware resources for the purpose of mapping an object to a particular lower level hardware resource, where, the hardware resource is more of a component of the storage hardware infrastructure itself than a centralized object mapping function for the object storage system (whose purpose is to determine global object mappings that definitively define object storage locations from a single hashing operation).
- That is, to some extent, the new approach of
Fig. 2 can be viewed as taking a centralized object mapping function as described above with respect toFig. 1 and not only distributing it, but distributing down through multiple, lower hierarchical levels of the storage hardware itself (e.g., a local area network gateway, a network gateway that is integrated into a rack, a storage server, an interface to a storage server I/O interface, etc.). - The distribution of the hashing function activity needed to fully resolve a final storage location for a particular object through different levels of the storage hardware helps insulate the overall storage system from object re-location after the addition or removal of a storage capacity. Here, a single global hashing function is apt to have names of objects resolve to different storage locations in a more disruptive way in response to the addition/removal of a storage node than an object storage system constructed according to the hashing structure of
Fig. 2 . - Qualitatively describing the mathematical behavior, if a single hashing function is solely responsible for determining the storage locations of all objects in the system, a single change to the storage capacity of the system (even a small one) may cause large numbers of object names to suddenly map to physically distant new locations (e.g., to a new local network, to a different rack, etc.). To suppress this particular effect, object storage systems have traditionally been implemented with consistent hashing algorithms which mathematically have reduced numbers of mapping changes in response to storage capacity change than other hashing functions. Conceivably, however, the resulting relocations may still require significant physical transportation of objects across the system.
- However, the object storage system of
Fig. 2 , which implements the overall hashing activity as a sequence of hashing processes that "thread" from higher hardware levels to lower hardware levels, may exhibit even less physical object transportation disturbance than a consistent hashing algorithm, at least for lower level nodal changes, because the hashing structure is better able to account for the fact that much of the system remains unchanged when only a smaller (lower level) region of the system has changed. - That is, referring to
Fig. 2 , if a new mass storage device is added/deleted to/from storage server SS_1_1, note that the storage capacity of the remaining storage servers acrosslevel 202 remain unchanged. Therefore, ideally, many if not all mapping changes that result from the change in storage capacity may be kept within storage server SS_1_1. In a sense, a small change at a lower node does not "ripple up" (or hardly ripples up) to the higher level hashing functions, which, in turn, result in minimal changes to the mappings of the nodes that little/no nodal relationship in the system. - In practice this is represented by little if any change to the weight factors that are applied to the higher level hashing functions in response to the change. Here, if only a single mass storage device is added/deleted to/from storage server SS_1_1, the total storage capacity of rack Rack_1 would hardly change which, in turn, would result in only the slightest of changes, if any, to the weight values that are provided to the highest
level hashing function 211. That is, e.g., the change to the percentage of the overall object storage's capacity that Rack_1 represents is almost negligible, and, therefore, the weight values that are provided to thehighest hashing level 211 would suffer almost negligible change in response. As such, the mapping determinations made at thehighest hashing level 211 would hardly experience any change at all. - Contra-wise, the weight values provided to the
lowest hashing level 213 that resides directly above where the change occurred (the hashing function of server SS_1_1) may see much more significant change (the addition/removal of the storage device to/from server SS_1_1 noticeably changes the server's total storage capacity). As such, there may be more substantial mapping change and corresponding object movement within server SS_1_1 and even less change (but perhaps still noticeable change) within the other servers that are part of Rack_1. That is, object mapping changes are kept more local to the point of the addition/removal disturbance. - In furtherance of this property, it is designed to forcibly prevent weight value changes for hashing instances that are not local to a disturbance. For example, referring to the prior example where server SS_1_1 has a mass storage device added or removed, in an embodiment, the only weight value that is allowed to change is the weight value for storage server SS_1_1 - all other weight values in the system are deliberately kept fixed. By preventing all other weight values from changing, all hashing instances other than the hashing instance of server SS_1_1 will not modify any of their object mappings.
- As such, nearly the entire system does not realize any object mapping changes and corresponding object movements in response to the capacity change. Instead, all the mapping changes and corresponding movements that result from the storage capacity change are forcibly confined within server SS_1_1. So according to the invention, in response to a change in storage capacity in a node, the weight factor associated with said node is changed, and the weight factors associated with the remaining nodes in the object storage system are configured to remain unchanged. Here, for instance, weight values may be kept fixed in response to a capacity change unless some 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 (the larger system is permitted to adapt to the change).
- According to one approach, weight value changes are permitted to expand outward from the point of disturbance depending on the magnitude of a storage capacity change. For example, if the storage capacity of server SS_1_1 changes by less than 20%, then, only the weight values of server SS_1_1's hashing function instance are permitted to change. This keeps object relocation within server SS_1_1. By contrast, if the storage capacity of server SS_1_1 changes between 20% and 40%, then, the weight values for Rack_1's and server SS_1_1's hashing instances are permitted to be changed (but weight values for all other hashing instances remain fixed). This keeps object relocation within the servers SS_1_1 through SS_1_N of Rack_1. Further still, if the storage capacity of server SS_1_1 changes by more than 40% then, the weight values for the highest
level hashing instance 211, Rack_1's hashing instance and server SS_1_1's hashing instance are permitted to be changed in response. The may result in rack to rack object movements, but the weight change for hashingfunction 211 will be much less than the weight change for Rack_1's hashing instance or server SS_1_1's hashing instance. - Keeping weight values fixed in response to a storage capacity change may be particularly useful if the storage capacity change is not only small but temporary. An example is when a mass storage device is being maintained. In this case, the mass storage device may only be temporarily off-line (it can reliably keep its data but cannot process any read or write requests during the maintenance procedure). According to one embodiment, when a mass storage device is being maintained and is temporarily off-line, no weight values are changed in the mass storage device's server or elsewhere in the storage system.
- Here, any read or write requests that are received by the off-line device's server that map to the off-line device are temporarily queued in free (unused) storage capacity of one or more working mass storage devices in the same server as the temporarily off line mass storage device. When maintenance is complete, the read or write requests that have been queued in the server's free storage space are then "replayed" to the mass storage device so that it can service them (it receives the stream of requests that it "missed" while being maintained).
- With respect to the specific type of hashing algorithm, rendezvous hashing algorithms are able to accept weights as described above in order to provide some deliberate imbalance in the hashing output. Thus, in various embodiments, each of the
hashing algorithms Fig. 2 are implemented as a rendezvous hashing algorithm. In various embodiments, the weight values indicate the existence of each immediately lower node and some capacity and/or performance metric for each such immediately lower node. - Here, although not depicted in
Fig. 2 for illustrative convenience, the object storage system may include a centralized or distributed management function implemented on at least one computing system that is communicatively coupled to thestorage servers 202 and maintains awareness of their storage capacity levels, changes to their storage capacity levels, their I/O bandwidth capabilities, changes to their bandwidth capabilities, etc. From this awareness the management function crafts the weight values for each hashing level and provides them to the hashing level when appropriate (e.g., in response to a capacity change). The management function may also maintain, e.g., percentage capacity changes and corresponding percentage capacity change thresholds that trigger the sending of a new set of weight values to a hashing function. - Each hashing function instance may be implemented with dedicated hardware logic circuitry, programmable logic circuitry (e.g., field programmable gate array (FPGA), programmable logic array (PLA), programmable logic device (PLD), etc.) or logic circuitry that executes some form of program code (e.g., a general purpose processor (embedded or otherwise), a special purpose processor (e.g., a digital signal processor (DSP), etc.) or any combination of these. Such circuitry may be located in any of a number of different hardware systems/components of an object storage system such as: 1) a network gateway, networking switch and/or networking router; 2) a storage server; 3) a proxy server or server that acts as a gateway to the object storage system; 4) an I/O interface of a storage server to which multiple mass storage devices attach, etc.
- Any of the storage server and proxy server may be implemented with a computing system. Moreover, elements of networking equipment (gateway/switch/router) may resemble or otherwise include basic components of a computing system. For example, networking equipment typically includes a management control function that includes one or more CPU cores and memory to keep the program code and data that are executed by the CPU cores. Regardless, as described above, the hashing function may be implemented by any of dedicated logic circuitry, programmable logic circuitry, or program code execution or any combination of these within any of a computing system or networking system. The networking equipment may include any of switching logic circuitry and/or routing logic circuitry and ingress/egress ports. A request is received at an ingress port and processed by the switching/routing logic circuitry in accordance with the hash result to direct the request to an appropriate egress port through which the correct next lower level node can be reached.
- Note that the above discussion has essentially focused on a process for determining the storage location of an object based on its name. Generally the object operations include PUT operations (in which new objects are entered into the system and are directed to available storage capacity); GET operations (that operate as read operations in which a read request is directed to the correct storage location to retrieve an object); MODIFY operations (that operate as write operations in which a write request containing new data to be written over an existing object that is stored in the system is directed to the correct storage location of the object); and, DELETE operations (in which 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 permit the object to be overwritten).
- For each of these operations, in various embodiments, a request is directed to the appropriate storage location of an object where the propagation of the request through the system is performed consistently with the multi-level hashing sequence described above (e.g., the request includes the object's name which is hashed at multiple levels of the infrastructure hardware). The different requests, however, have different items attached the request. Specifically, in the case of a PUT, a new object is appended to the request. In the case of a GET no object data need be appended to the request. In the case of a MODIFY, new data for an object (or a new version of the object) is appended to the request. In the case of a DELETE operation, no object data need be appended to the request.
- Although embodiments above have indicated that all nodes have hardware associated with them, in various embodiments nodes may be purely logical and have no hardware characterization about them. In this case, such logical nodes incorporate the weights of the nodes beneath them but do not add to them. In a sense, the weight factors beneath the logical node passes through the logical node to a higher level node.
- In various embodiments, to effect some higher level purpose, administrators may set weight factors that are different than what the analysis of lower nodes would otherwise present, and/or, prevent weigh factors from changing even though there has been a change to the lower nodes.
-
Fig. 3 shows a method described above. The method includes performing 301 a first hash on a name of an object with a first hardware element of an object storage system, the name of the object being part of a request that is associated with the object, a result of the first hash identifying a second hardware element directly beneath the first hardware element in a hierarchical arrangement of hardware elements in the object storage system. The method also includes sending 302 the request to the second hardware element. The method also includes performing 303 a second hash on the name of the object with the second hardware element, a result of the second hash identifying a third hardware element directly beneath the second hardware element in the hierarchical arrangement. The method also includes sending 304 the request to the third hardware element to advance the request toward being serviced by the object storage system. -
FIG. 4 provides an exemplary depiction of a computing system 400 (e.g., a smartphone, a tablet computer, a laptop computer, a desktop computer, a server computer, etc.). As observed inFIG. 4 , thebasic computing system 400 may include a central processing unit 401 (which may include, e.g., a plurality of general purpose processing cores 415_1 through 415_X) and amain memory controller 417 disposed on a multi-core processor or applications processor,system memory 402, a display 403 (e.g., touchscreen, flat-panel), a local wired point-to-point link (e.g., USB)interface 404, various network I/O functions 405 (such as an Ethernet interface and/or cellular modem subsystem), a wireless local area network (e.g., WiFi)interface 406, a wireless point-to-point link (e.g., Bluetooth)interface 407 and a GlobalPositioning System interface 408, various sensors 409_1 through 409_Y, one or more cameras 410, abattery 411, a powermanagement control unit 412, a speaker andmicrophone 413 and an audio coder/decoder 414. - An applications processor or
multi-core processor 450 may include one or more generalpurpose processing cores 415 within itsCPU 401, one or moregraphical processing units 416, a memory management function 417 (e.g., a memory controller) and an I/O control function 418. The generalpurpose processing cores 415 typically execute the operating system and application software of the computing system. Thegraphics processing unit 416 typically executes graphics intensive functions to, e.g., generate graphics information that is presented on thedisplay 403. Thememory control function 417 interfaces with thesystem memory 402 to write/read data to/fromsystem memory 402. Assuming you will add details on persistent memory (e.g. 3DXPoint memory).The powermanagement control unit 412 generally controls the power consumption of thesystem 400. - Each of the
touchscreen display 403, the communication interfaces 404-407, theGPS interface 408, thesensors 409, the camera(s) 410, and the speaker/microphone codec multi-core processor 450 or may be located off the die or outside the package of the applications processor/multi-core processor 450. The computing system also includes non-volatile storage 420 which may be the mass storage component of the system. - The
processor 450 may also include embedded NVRAM as described above to improve overall operation of various monitoring programs that execute on one or more of theCPU cores 415. - Embodiments of the invention may include various processes as set forth above. The processes may be embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor to perform certain processes. Alternatively, these processes may be performed by specific/custom hardware components that contain hardwired logic circuitry or programmable logic circuitry (e.g., field programmable gate array (FPGA), programmable logic device (PLD)) for performing the processes, or by any combination of programmed computer components and custom hardware components.
- Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, FLASH memory, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions. For example, the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
Claims (15)
- A method performed by an object storage system comprising a hierarchical arrangement of multiple hardware elements arranged in the form of a nodal tree, in which respective higher level nodes of the nodal tree are configured to subsume lower level leaf nodes directly beneath the respective higher level nodes to form respective non-overlapping and standalone branches of further nodal trees under the nodal tree, and each node at a nodal level of the nodal tree is preceded with a dedicated hashing function configured to receive one or more weight factors that describe performance characteristics of lower level leaf nodes directly beneath said node, and the storage capacity of a higher level node corresponds to the combined storage capacity of lower level leaf nodes directly beneath said higher level node, the method comprising:receiving, at a first hardware element in the hierarchical arrangement, a request that is associated with an object, the first hardware element configured as a gateway of the object storage system, wherein the request is configured to include the name of the object;performing (301), by the first hardware element, a first hashing function on the name of the object to generate a first hash, which identifies a second hardware element directly beneath the first hardware element in the hierarchical arrangement, wherein the first hash incorporates one or more weight factors that describe performance characteristics of hardware elements directly beneath the first hardware element;sending (302), by the first hardware element, the request to the second hardware element;performing (303), by the second hardware element, a second hashing function on the name of the object to generate a second hash, which identifies a third hardware element directly beneath the second hardware element in the hierarchical arrangement, wherein the second hash incorporates one or more weight factors that describe performance characteristics of hardware elements directly beneath the second hardware element; andsending (304), by the second hardware element, the request to the third hardware element to advance the request towards being serviced by the object storage system,wherein in response to a change in storage capacity in a node, the weight factor associated with said node is changed, and the weight factors associated with the remaining nodes in the object storage system are configured to remain unchanged.
- An object storage system (200) configured with a hierarchical arrangement of multiple hardware elements arranged in the form of a nodal tree, in which respective higher level nodes of the nodal tree are configured to subsume lower level leaf nodes directly beneath the respective higher level nodes to form respective non-overlapping and standalone branches of further nodal trees under the nodal tree, and each node at a nodal level of the nodal tree is preceded with a dedicated hashing function configured to receive one or more weight factors that describe performance characteristics of lower level leaf nodes directly beneath said node, and the storage capacity of a higher level node corresponds to the combined storage capacity of lower level leaf nodes directly beneath said higher level node, the system comprising:a first hardware element configured with a first semiconductor chip comprising logic circuitry to receive a request that is associated with an object, and to perform a first hashing function on the name of the object to generate a first hash, which identifies a second hardware element directly beneath the first hardware element in the hierarchical arrangement, wherein the first hash incorporates one or more weight factors that describe performance characteristics of hardware elements directly beneath the first hardware element, the request to be sent to the second hardware element, wherein the first hardware element is configured as a gateway of the object storage system; and wherein the request is configured to include the name of the object;the second hardware element configured with a second semiconductor chip comprising logic circuitry to perform, based on the request, a second hashing function on the name of the object to generate a second hash, which identifies a third hardware element directly beneath the second hardware element in the hierarchical arrangement, wherein the second hash incorporates one or more weight factors that describe performance characteristics of hardware elements directly beneath the second hardware element, the request to be further sent to the third hardware element; andthe third hardware element configured to advance the request towards being serviced by the object storage system,wherein in response to a change in storage capacity in a node, the weight factor associated with said node is changed, and the weight factors associated with the remaining nodes in the object storage system are configured to remain unchanged.
- The system of claim 2, wherein the third hardware element is a mass storage device configured to store the object.
- The system of claim 2, wherein one of the second hardware element and the third hardware element is a storage server comprising having multiple mass storage devices.
- The system of claim 2, wherein the logic circuitry of each of the first semiconductor chip and the second semiconductor chip is any combination of:dedicated hardwired logic circuitry;programmable logic circuitry;logic circuitry to execute program code.
- The system of claim 5, wherein each hardware element is any of:a proxy server;a networking switch;a rack gateway;a storage server;an I/O interface through which multiple mass storage devices are to be coupled.
- The system of claim 6, wherein each hardware element is functionally integrated into the object storage system.
- An apparatus of an object storage system (200) comprising a hierarchical arrangement of multiple hardware elements arranged in the form of a nodal tree, in which respective higher level nodes of the nodal tree are configured to subsume lower level leaf nodes directly beneath the respective higher level nodes to form respective non-overlapping and standalone branches of further nodal trees under the nodal tree, and each node at a nodal level of the nodal tree is preceded with a dedicated hashing function configured to receive one or more weight factors that describe performance characteristics of lower level leaf nodes directly beneath said node, and the storage capacity of a higher level node corresponds to the combined storage capacity of lower level leaf nodes directly beneath said higher level node, the apparatus being a first hardware element, the apparatus comprising:a semiconductor chip comprising logic circuitry to receive a request that is associated with an object, wherein the request is configured to include the name of the object, and to perform a hashing function on the name of the object to generate a hash, which identifies a second hardware element directly beneath the first hardware element in the hierarchical arrangement, the request to be sent to the second hardware element to advance the request towards being serviced by the object storage system, the hash incorporating one or more weight factors that describe performance characteristics of hardware elements directly beneath the first hardware element in the hierarchical arrangement,wherein in response to a change in storage capacity in a node, the weight factor associated with said node is changed, and the weight factors associated with the remaining nodes in the object storage system are configured to remain unchanged; and wherein the first hardware element is configured as a gateway of the object storage system.
- The apparatus of claim 8, wherein the logic circuitry is any combination of:dedicated hardwired logic circuitry;programmable logic circuitry;logic circuitry to execute program code.
- The apparatus of claim 8, wherein the semiconductor chip is integrated into the apparatus.
- The apparatus of claim 9, wherein the apparatus is any of:a proxy server;a networking switch;a rack gateway;a storage server;an I/O interface through which multiple mass storage devices are to be coupled.
- The apparatus of claim 11, wherein the apparatus is functionally integrated into the object storage system.
- The apparatus of claim 8, wherein one of the hardware elements is a networking gateway for a rack of storage servers.
- A computing system containing the apparatus of any of claims 8 through 13.
- A method performed by a first hardware element of an object storage system (200) comprising a hierarchical arrangement of multiple hardware elements arranged in the form of a nodal tree, in which respective higher level nodes of the nodal tree are configured to subsume lower level leaf nodes directly beneath the respective higher level nodes to form respective non-overlapping and standalone branches of further nodal trees under the nodal tree, and each node at a nodal level of the nodal tree is preceded with a dedicated hashing function configured to receive one or more weight factors that describe performance characteristics of lower level leaf nodes directly beneath said node, and the storage capacity of a higher level node corresponds to the combined storage capacity of lower level leaf nodes directly beneath said higher level node, comprising:receiving a request that is associated with an object, wherein the request is configured to include the name of the object;performing a hashing function on the name of the object to generate a first hash, which identifies a second hardware element directly beneath the first hardware element in the hierarchical arrangement, the request to be sent to the second hardware element to advance the request towards being serviced by the object storage system, the first hash incorporating one or more weight factors that describe performance characteristics of hardware elements directly beneath the first hardware element in the hierarchical arrangement,wherein in response to a change in storage capacity in a node, the weight factor associated with said node is changed, and the weight factors associated with the remaining nodes in the object storage system are configured to remain unchanged; and wherein the first hardware element is configured as a gateway of the object storage system.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/940,961 US10990532B2 (en) | 2018-03-29 | 2018-03-29 | Object storage system with multi-level hashing function for storage address determination |
Publications (2)
Publication Number | Publication Date |
---|---|
EP3547102A1 EP3547102A1 (en) | 2019-10-02 |
EP3547102B1 true EP3547102B1 (en) | 2023-10-18 |
Family
ID=65229692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP19159540.4A Active EP3547102B1 (en) | 2018-03-29 | 2019-02-26 | Object storage system with multi-level hashing function for storage address determination |
Country Status (5)
Country | Link |
---|---|
US (1) | US10990532B2 (en) |
EP (1) | EP3547102B1 (en) |
JP (1) | JP7234479B2 (en) |
KR (1) | KR20190114743A (en) |
CN (1) | CN110321331A (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112997161A (en) | 2018-06-18 | 2021-06-18 | Flc技术集团股份有限公司 | Method and apparatus for using storage system as main memory |
US11048758B1 (en) | 2020-01-31 | 2021-06-29 | Morgan Stanley Services Group Inc. | Multi-level low-latency hashing scheme |
US11636059B2 (en) | 2020-03-31 | 2023-04-25 | Samsung Electronics Co., Ltd. | Scaling performance in a storage server with storage devices |
WO2022051554A1 (en) * | 2020-09-03 | 2022-03-10 | FLC Technology Group, Inc. | Hash function with pre-scrambler |
US11755373B2 (en) * | 2020-10-07 | 2023-09-12 | Oracle International Corporation | Computation and storage of object identity hash values |
US11972117B2 (en) * | 2021-07-19 | 2024-04-30 | EMC IP Holding Company LLC | Selecting surviving storage node based on environmental conditions |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170149878A1 (en) * | 2014-09-24 | 2017-05-25 | Juniper Networks, Inc. | Weighted rendezvous hashing |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4767057B2 (en) | 2006-03-27 | 2011-09-07 | 富士通株式会社 | Hash value generation program, storage management program, determination program, and data change verification device |
CN101425958A (en) * | 2007-10-29 | 2009-05-06 | 华为技术有限公司 | Request answering method, apparatus and system in P2P overlapping network |
EP2377294B1 (en) | 2008-12-18 | 2017-05-17 | Scality, SA | Multipurpose storage system based upon a distributed hashing mechanism with transactional support and failover capability |
JP6040612B2 (en) | 2012-07-24 | 2016-12-07 | 富士通株式会社 | Storage device, information processing device, information processing system, access control method, and access control program |
US20160191508A1 (en) * | 2014-12-31 | 2016-06-30 | Nexenta Systems, Inc. | Methods and Systems for Block Sharding of Objects Stored in Distributed Storage System |
JP2016126561A (en) | 2015-01-05 | 2016-07-11 | 富士通株式会社 | Storage control device, storage device, and program |
JP6572775B2 (en) | 2016-01-07 | 2019-09-11 | 富士通株式会社 | Control device, storage device, data management program, and data management method |
JP6708948B2 (en) | 2016-01-21 | 2020-06-10 | 日本電気株式会社 | Block storage |
-
2018
- 2018-03-29 US US15/940,961 patent/US10990532B2/en active Active
-
2019
- 2019-02-13 JP JP2019023832A patent/JP7234479B2/en active Active
- 2019-02-25 KR KR1020190021985A patent/KR20190114743A/en not_active Application Discontinuation
- 2019-02-26 EP EP19159540.4A patent/EP3547102B1/en active Active
- 2019-02-28 CN CN201910149912.8A patent/CN110321331A/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170149878A1 (en) * | 2014-09-24 | 2017-05-25 | Juniper Networks, Inc. | Weighted rendezvous hashing |
Also Published As
Publication number | Publication date |
---|---|
EP3547102A1 (en) | 2019-10-02 |
JP7234479B2 (en) | 2023-03-08 |
US20190042440A1 (en) | 2019-02-07 |
KR20190114743A (en) | 2019-10-10 |
CN110321331A (en) | 2019-10-11 |
JP2019204489A (en) | 2019-11-28 |
US10990532B2 (en) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3547102B1 (en) | Object storage system with multi-level hashing function for storage address determination | |
US10805406B2 (en) | Zone redundant computing services using multiple local services in distributed computing systems | |
US10733029B2 (en) | Movement of services across clusters | |
EP3334123B1 (en) | Content distribution method and system | |
US9948705B2 (en) | Load balanced network file accesses | |
CN107087031B (en) | Storage resource load balancing method and device | |
US9454444B1 (en) | Using location tracking of cluster nodes to avoid single points of failure | |
US8352953B2 (en) | Dynamically provisioning virtual machines | |
CN109597567B (en) | Data processing method and device | |
US10356150B1 (en) | Automated repartitioning of streaming data | |
US20220329651A1 (en) | Apparatus for container orchestration in geographically distributed multi-cloud environment and method using the same | |
CN104679594B (en) | A kind of middleware distributed computing method | |
US10908940B1 (en) | Dynamically managed virtual server system | |
JP6097235B2 (en) | Load distribution system, load distribution apparatus, and load distribution method | |
WO2022105048A1 (en) | Distributed shared file system and data processing method thereof | |
CN107105013B (en) | File processing method, server, terminal and system | |
WO2001041362A2 (en) | Load balance apparatus and method | |
US20230267015A1 (en) | Resource scheduling method and apparatus, electronic device and computer readable storage medium | |
CN113014611B (en) | Load balancing method and related equipment | |
JP2016051446A (en) | Calculator system, calculator, and load dispersing method and program | |
CN113676511A (en) | Cloud storage method, system, equipment and storage medium | |
CN106790610B (en) | Cloud system message distribution method, device and system | |
US20160014203A1 (en) | Storage fabric address based data block retrieval | |
CN214202379U (en) | Distributed shared file system | |
KR20170081977A (en) | Distributed file system and method for creating files effectively |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN PUBLISHED |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
17P | Request for examination filed |
Effective date: 20200327 |
|
RBV | Designated contracting states (corrected) |
Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
17Q | First examination report despatched |
Effective date: 20210511 |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: GRANT OF PATENT IS INTENDED |
|
INTG | Intention to grant announced |
Effective date: 20230509 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE PATENT HAS BEEN GRANTED |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602019039449 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
P01 | Opt-out of the competence of the unified patent court (upc) registered |
Effective date: 20231012 |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: FP |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20231207 Year of fee payment: 6 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: NL Payment date: 20231215 Year of fee payment: 6 |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG9D |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 1623033 Country of ref document: AT Kind code of ref document: T Effective date: 20231018 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20240119 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20240218 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20240218 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20240119 Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20240118 Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20240219 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: DE Payment date: 20231128 Year of fee payment: 6 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: RS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20240118 Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602019039449 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SM Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
26N | No opposition filed |
Effective date: 20240719 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20240226 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20240229 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20231018 |