WO2022196112A1 - Storage system, data processing method, and data processing program - Google Patents

Storage system, data processing method, and data processing program Download PDF

Info

Publication number
WO2022196112A1
WO2022196112A1 PCT/JP2022/002645 JP2022002645W WO2022196112A1 WO 2022196112 A1 WO2022196112 A1 WO 2022196112A1 JP 2022002645 W JP2022002645 W JP 2022002645W WO 2022196112 A1 WO2022196112 A1 WO 2022196112A1
Authority
WO
WIPO (PCT)
Prior art keywords
update
storage
node
server
processing
Prior art date
Application number
PCT/JP2022/002645
Other languages
French (fr)
Japanese (ja)
Inventor
豊 大石
理貴 近藤
優子 宇野
美咲 大塚
Original Assignee
富士フイルム株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 富士フイルム株式会社 filed Critical 富士フイルム株式会社
Priority to JP2023506820A priority Critical patent/JPWO2022196112A1/ja
Publication of WO2022196112A1 publication Critical patent/WO2022196112A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Definitions

  • the technology disclosed relates to a storage system, a data processing method, and a data processing program.
  • Japanese Unexamined Patent Application Publication No. 2015-88109 describes a plurality of storage nodes each storing the same data, and a backup node connected to the plurality of storage nodes and storing backup data that is a copy of the data stored in the storage nodes.
  • the storage node backs up the object. It is described to send to the node.
  • Japanese Patent Application Laid-Open No. 2012-528402 discloses that in a set of computers capable of redundantly storing object sets, when an update object is identified in the object set, neighbors in the neighbor set that do not store the update object are identified. It describes determining a swarm node and sending an update object to swarm nodes that contain neighbors.
  • the storage system in order to reduce the risk of data loss and service outage in the event of a failure, multiple storage nodes are placed in different geographical locations, and the same storage nodes are installed at each location. Data is stored with redundancy. In such a storage system, it is required to maintain consistency of data stored among a plurality of storage nodes arranged at each site. For example, it is undesirable for data saved in a certain storage node to be saved in another storage node.
  • a data transfer method in such a storage system a method of duplicating data to be saved transmitted from a user terminal and transferring the duplicated data to a plurality of storage nodes can be considered.
  • object update processing in an object storage system does not overwrite existing objects, but rather stores the updated objects in the storage node as separate objects from existing objects.
  • a plurality of users update the same object at substantially the same timing.
  • the same object is updated twice in succession.
  • Each storage node manages the object received last among updated objects that are sequentially received as the latest object.
  • the order in which updated objects are received may differ among a plurality of storage nodes due to factors such as the degree of network congestion.
  • what is managed as the latest object will differ between storage nodes.
  • inconsistencies arise in stored objects among a plurality of storage nodes that should store the same objects.
  • the disclosed technique has been made in view of the above points, and ensures the consistency of stored objects even when object update processing continues in a plurality of storage nodes that should store the same objects. for the purpose.
  • a storage system includes a plurality of storage nodes each having at least one processor and storage device.
  • Each processor of a plurality of storage nodes receives the same object from each other, and when it receives an update object which is an update of an existing object stored in the storage device of its own node, updates the object based on the update object. implement.
  • the processor of at least one storage node among the plurality of storage nodes is updated so that the update processing is consistent with the other storage nodes. Retry the process.
  • the processor of at least one storage node among the plurality of storage nodes may transmit update information indicating the results of update processing in its own node to other storage nodes.
  • the processors of the other storage nodes that have received the update information determine whether or not an inconsistency has occurred in the update processing in their own node based on the update information, and determine that an inconsistency has occurred in the update processing. If so, the update process may be performed again so as to match the update information.
  • a processor of at least one storage node among a plurality of storage nodes issues an instruction to re-execute update processing when the result of update processing in another storage node is different from the result of update processing in its own node. It may be sent to a storage node. Processors of other storage nodes that have received the instruction may perform the update process again.
  • Multiple storage nodes may be located in different geographical locations.
  • a data processing method is a data processing method in a storage system that includes a plurality of storage nodes each having at least one processor and a storage device, in which the same object is received from each other and stored in the storage device of the node itself.
  • the processor provided in each of the plurality of storage systems executes the update processing of the object based on the update object, and exchanges with other storage nodes.
  • a processor provided in at least one storage system among a plurality of storage systems performs processing for re-executing update processing so that update processing is consistent with other storage nodes when inconsistency occurs in update processing. to execute.
  • the data processing program When the data processing program according to the disclosed technique receives the same object as each other and receives an update object that is an update of an existing object stored in the storage device of its own node, it updates the object based on the update object. At least the storage node is provided with a process of re-executing the update process so that the update process is consistent with the other storage nodes when an inconsistency occurs in the update process with the other storage nodes. It is a program executed by one processor.
  • FIG. 1 is a diagram showing an example of a configuration of a storage system according to an embodiment of technology disclosed herein; FIG. It is a figure which shows an example of the hardware configuration of the server based on embodiment of the disclosed technology.
  • FIG. 2 is a diagram showing an example of an object transfer form in a storage system according to an embodiment of technology disclosed herein;
  • FIG. 4 is a diagram illustrating an example of object update processing according to an embodiment of the disclosed technology;
  • 1 is a functional block diagram of a server acting as a master, according to an embodiment of the disclosed technology;
  • FIG. 1 is a functional block diagram of a server functioning as a slave, according to an embodiment of the disclosed technology;
  • FIG. 4 is a flow chart showing an example of the flow of processing performed by executing a data processing program according to an embodiment of technology disclosed herein;
  • FIG. 4 is a diagram illustrating an example of processing for resolving inconsistencies in update processing according to an embodiment of the disclosed technology;
  • FIG. 4 is a functional block diagram of a server functioning as a master, according to another embodiment of the disclosed technology;
  • FIG. 4 is a functional block diagram of a server functioning as a slave according to another embodiment of the disclosed technology;
  • 7 is a flow chart showing an example of the flow of processing performed by executing a data processing program according to another embodiment of technology disclosed herein;
  • FIG. 1 is a diagram showing an example of the configuration of a storage system 1 according to an embodiment of technology disclosed herein.
  • the storage system 1 constitutes an object storage system that handles data in units of objects.
  • An object includes a data body and metadata about the data body.
  • the storage system 1 includes an information processing device 10 and servers 20A and 20B.
  • the storage system 1 is connected via a network 40 to user terminals 50A and 50B.
  • the user terminals 50A and 50B are computers used by users who use the storage system 1, respectively.
  • the storage system 1 saves the object requested to be saved by the user terminal 50A or 50B. Further, when receiving an object read request from the user terminal 50A or 50B, the storage system 1 reads the requested object and transmits it to the user terminal 50A or 50B.
  • the information processing device 10 functions as a wrapper that mediates data transmission between the servers 20A and 20B and the user terminals 50A and 50B. As shown in FIG. 1, the information processing apparatus 10 duplicates an object to be saved transmitted from the user terminal 50A or 50B, and transmits (transfers) the same data to the servers 20A and 20B.
  • the servers 20A and 20B each constitute a storage node, and are located at different geographical locations.
  • An object requested to be stored by the user terminal 50A or 50B is duplicated by the information processing apparatus 10, and the same object is redundantly stored in both the servers 20A and 20B.
  • the storage system 1 may include three or more servers (storage nodes) that store the same object.
  • Object update processing in the storage system 1 does not overwrite and save an existing object, but an object after update (hereinafter referred to as an updated object) is transferred to the storage node as an object separate from the existing object (hereinafter referred to as an existing object). Saved. That is, the updated object is saved on both servers 20A and 20B along with the existing object.
  • An existing object is an object already stored in the storage system 1, and an updated object is an object to which the same object key as the existing object is given and for which a storage request is made after the existing object.
  • FIG. 2 is a diagram showing an example of the hardware configuration of the servers 20A and 20B.
  • Servers 20A and 20B have the same hardware configuration as each other.
  • the servers 20A and 20B each include a CPU (Central Processing Unit) 201, a memory 202 and a storage device 203 as temporary storage areas.
  • Servers 20A and 20B also include a network interface 204 and an external interface 205 that are connected to the network.
  • CPU 201 , memory 202 , storage device 203 , network interface 204 and external interface 205 are connected to bus 206 .
  • the storage device 203 is realized by a non-volatile storage medium such as an HDD (Hard Disk Drive), SSD (Solid State Drive), or flash memory.
  • a data processing program 210 is stored in the storage device 203 .
  • the CPU 201 reads the data processing program 210 from the storage device 203, develops it in the memory 202, and executes it. Note that the CPU 201 is an example of a processor in technology disclosed herein.
  • the object update process in the storage system 1 does not overwrite the existing object, but stores the updated object in the storage node as a different object from the existing object.
  • the user of the user terminal 50A and the user of the user terminal 50B update the same existing object at substantially the same timing.
  • the same existing object is updated twice in succession.
  • an existing object (Obj_0) is stored in the storage device 203 of each of the servers 20A and 20B.
  • a case is exemplified in which the update object (Obj_2) is transmitted from the user terminal 50B at approximately the same timing.
  • the servers 20A and 20B each successively perform update processing by the update object (Obj_1) and update processing by the update object (Obj_2).
  • the storage device 203 of each of the servers 20A and 20B stores the existing object (Obj_0) and the updated objects (Obj_1) and (Obj_2).
  • the last received update object is managed as the latest object.
  • the order in which the update objects are received may differ between the server 20A and the server 20B due to factors such as the degree of network congestion. In this case, what is managed as the latest object will differ between servers. In other words, inconsistencies arise in stored objects among a plurality of storage nodes that should store the same objects.
  • the update process is performed by the update object (Obj_1) in the server 20A
  • the update process is performed by the update object (Obj_2)
  • the update process is performed by the update object (Obj_2) in the server 20B.
  • the update process is performed by the update object (Obj_1).
  • the server 20A manages the update object (Obj_2) as the latest object
  • the server 20B manages the update object (Obj_1) as the latest object. That is, the state shown in FIG. 4 is a state in which inconsistency has occurred in update processing between the server 20A and the server 20B.
  • the latest managed object When a user requests to read an object, the latest managed object will be sent to the user terminal. Therefore, when there is an inconsistency as shown in FIG. 4, when a read request is made to the server 20A and when a read request is made to the server 20B, the user terminal is sent as a response to the read request. An event such as the transmitted object being different occurs.
  • the server 20A and the server 20B perform processing for maintaining consistency in update processing.
  • either server 20A or server 20B functions as a master, and the other functions as a slave.
  • server 20A functions as a master
  • server 20B functions as a slave.
  • FIG. 5A is a functional block diagram showing an example of the functional configuration of server 20A that functions as a master.
  • a server 20A functioning as a master includes a receiver 21 , an update processor 22 and a transmitter 23 .
  • the server 20A By executing the data processing program 210 by the CPU 201 of the server 20A, the server 20A functions as a master and functions as the receiving section 21, the update processing section 22 and the transmitting section .
  • FIG. 5B is a block diagram showing an example of the functional configuration of the server 20B functioning as a slave.
  • the server 20B functioning as a slave includes a receiving section 25, an update processing section 26 and a reprocessing section 27.
  • FIG. By executing the data processing program 210 by the CPU 201 of the server 20B, the server 20B functions as a slave and functions as the receiving section 25, the update processing section 26, and the reprocessing section 27.
  • FIG. The details of each functional block described above will be described below.
  • the information processing device 10 duplicates the update object transmitted from the user terminal 50A or 50B, and transmits (transfers) the same update object to the server 20A and server 20B.
  • the receiving unit 21 of the server 20A and the receiving unit 25 of the server 20B each receive the update object transmitted from the information processing device 10 .
  • the update processing unit 22 of the server 20A and the update processing unit 26 of the server 20B perform object update processing based on the update objects received by the receiving unit 21 and the receiving unit 25, respectively. That is, the update processing units 22 and 26 store the update object in the storage device 203 of their own node, and manage the update object as the latest object.
  • the storage devices 203 of the servers 20A and 20B store existing objects and updated objects with the same object keys as the existing objects.
  • an object key assigned to the object to be read is specified.
  • the server 20A or 20B that has received the read request reads from the storage device 203 the object managed as the latest object among the objects assigned the object key specified in the read request, and transmits it to the user terminal.
  • the transmission unit 23 of the server 20A functioning as a master transmits update information indicating the result of update processing in the update processing unit 22 of its own node to the server 20B functioning as a slave.
  • the update information may be, for example, identification information of an object managed as the latest object in the server 20A.
  • Object identification information is information for uniquely identifying an object in the storage system 1, such as a UUID (Universally Unique Identifier).
  • the reprocessing unit 27 of the server 20B functioning as a slave receives the update information transmitted from the server 20A functioning as a master, based on the update information, the reprocessing unit 27 detects a mismatch between the server 20A and the server 20A regarding the update process in its own node. Determine whether or not it has occurred. For example, if the object managed as the latest object in its own node is different from the object managed as the latest object in the server 20A indicated by the update information, the reprocessing unit 27 determines that the update process is inconsistent. may be determined to have occurred. When the reprocessing unit 27 determines that the update processing is inconsistent, the reprocessing unit 27 performs the update processing again so as to match the update result in the server 20A indicated by the update information. For example, the reprocessing unit 27 manages the same object as the latest object managed in the server 20A as the latest object in its own node.
  • FIG. 6 is a flow chart showing an example of the flow of processing performed by the CPUs 201 of the servers 20A and 20B executing the data processing program 210. As shown in FIG. The data processing program 210 is executed, for example, when an update object is transmitted from the information processing apparatus 10 .
  • step S1 the receiving unit 21 of the server 20A and the receiving unit 25 of the server 20B each receive the update object transmitted from the information processing device 10.
  • step S2 the update processing unit 22 of the server 20A and the update processing unit 26 of the server 20B perform object update processing based on the update object received in step S1. That is, the update processing units 22 and 26 store the update object in the storage device 203 of their own node, and manage the update object as the latest object.
  • step S3 the CPUs 201 of the servers 20A and 20B respectively determine whether their own nodes are masters or slaves. It is assumed that management information indicating a server functioning as a master and a server functioning as a slave is created by an administrator of the storage system 1, and this management information is stored in the storage device 203 of each server. Here, it is assumed in the management information that the server 20A functions as a master and the server 20B functions as a slave. The CPU 201 of the server 20A determines that its own node is the master based on the management information. The CPU 201 of the server 20B determines that its own node is the slave based on the management information.
  • step S4 the transmission unit 23 of the server 20A functioning as a master transmits update information indicating the result of the update processing in its own node to the server 20B functioning as a slave.
  • step S5 the reprocessing unit 27 of the server 20B functioning as a slave determines whether update information has been received.
  • the reprocessing unit 27 determines in step S6 based on the update information whether or not there is an inconsistency with the server 20A regarding the update processing in its own node.
  • the reprocessing unit 27 determines that the update processing is inconsistent, the reprocessing unit 27 performs the update processing again so as to match the update result in the server 20A indicated by the update information in step S7.
  • the reprocessing unit 27 manages the same object as the latest object managed in the server 20A as the latest object in its own node.
  • the transmitting unit 23 of the server 20A transmits to the server 20B update information indicating that the object managed as the latest object in its own node is the update object (Obj_2).
  • the reprocessing unit 27 of the server 20B determines that there is an inconsistency with the server 20A regarding the update process in its own node.
  • the reprocessing unit 27 performs the update process again so as to match the update result in the server 20A.
  • the object managed as the latest object in the server 20B becomes the same updated object (Obj_2) as the server 20A, and the inconsistency is resolved. be done.
  • each of the plurality of storage nodes receives the same object as each other, and receives an update object that is an update of an existing object stored in the storage device of the node itself. If so, the object update process is performed based on the update object.
  • At least one storage node among a plurality of storage nodes performs update processing so that update processing is consistent with other storage nodes when inconsistency occurs in update processing with other storage nodes. Do it again. More specifically, when at least one storage node among the plurality of storage nodes performs update processing in its own node, it transmits update information indicating the result of the update processing in its own node to other storage nodes. Other storage nodes that have received the update information determine whether or not there is an inconsistency in the update processing of their own node based on the update information. Then, update processing is performed again so as to match the update information.
  • the storage system 1 for example, if different update objects are sent from a plurality of user terminals at substantially the same timing, there is a risk that inconsistency will occur in update processing in each storage node. However, if an inconsistency occurs in the update process, the update process is performed again so that the update process is consistent between the storage nodes, and the inconsistency is resolved. That is, according to the storage system 1 according to the present embodiment, it is possible to ensure the consistency of stored objects even when object update processing continues in a plurality of storage nodes that should store the same objects. becomes.
  • the disclosed technology may be applied to some of the storage nodes included in the storage system 1 to ensure consistency of objects between the part of the storage nodes.
  • the information processing device 10 exists independently, but the user terminal 50 may also serve as the information processing device 10 . That is, the function as a wrapper may be implemented in the user terminal 50 .
  • FIG. 8A is a functional block diagram showing an example of a functional configuration of a server 20A functioning as a master according to the second embodiment of technology disclosed herein.
  • a server 20A functioning as a master includes a receiving section 21, an update processing section 22 and an instruction section .
  • the server 20A By executing the data processing program 210 by the CPU 201 of the server 20A, the server 20A functions as a master and functions as the receiving section 21, the update processing section 22 and the instruction section .
  • FIG. 8B is a block diagram showing an example of a functional configuration of a server 20B functioning as a slave according to the second embodiment of the disclosed technology.
  • the server 20 ⁇ /b>B functioning as a slave includes a receiver 25 , an update processor 26 , a transmitter 29 and a reprocessor 27 .
  • the server 20B By executing the data processing program 210 by the CPU 201 of the server 20B, the server 20B functions as a slave and functions as the receiving section 25, the update processing section 26, the transmitting section 29, and the reprocessing section 27.
  • FIG. The details of each functional block described above will be described below. Note that the functions of the receiving units 21 and 25 and the update processing units 22 and 26 are the same as those of the first embodiment described above, so description thereof will be omitted.
  • the transmission unit 29 of the server 20B transmits update information indicating the result of update processing in the update processing unit 26 of its own node to the server 20A.
  • the update information may be, for example, identification information of an object managed as the latest object in the server 20B.
  • the instruction unit 28 of the server 20A determines whether or not there is an inconsistency with the server 20B regarding the update processing in its own node based on the update information. . For example, if the object managed as the latest object in its own node is different from the object managed as the latest object in the server 20B indicated by the update information, the instruction unit 28 determines that there is an inconsistency in the update process. It can be determined that this has occurred. When the instruction unit 28 determines that the update process is inconsistent, the instruction unit 28 transmits to the server 20B a reprocessing instruction indicating that the update process should be performed again.
  • the reprocessing unit 27 of the server 20B When the reprocessing unit 27 of the server 20B receives the reprocessing instruction transmitted from the server 20A, it performs the update processing again.
  • the reprocessing unit 27 performs, for example, a process of changing an object managed as the latest object in its own node.
  • the transmission unit 29 transmits update information indicating the result of the update process again to the server 20A.
  • the instruction unit 28 of the server 20A determines whether or not there is any inconsistency with the server 20B regarding the update processing in its own node. If it is determined that there is, a reprocessing instruction is transmitted to the server 20B. The processing in the reprocessing unit 27, the transmission unit 29, and the instruction unit 28 is repeated until the update processing is consistent between the servers 20A and 20B.
  • FIG. 9 is a flow chart showing an example of the flow of processing executed by the CPUs 201 of the servers 20A and 20B executing the data processing program 210. As shown in FIG. The data processing program 210 is executed, for example, when an update object is transmitted from the information processing apparatus 10 .
  • step S11 the receiving unit 21 of the server 20A and the receiving unit 25 of the server 20B each receive the update object transmitted from the information processing device 10.
  • step S12 the update processing unit 22 of the server 20A and the update processing unit 26 of the server 20B perform object update processing based on the update object received in step S11. That is, the update processing units 22 and 26 store the update object in the storage device 203 of their own node, and manage the update object as the latest object.
  • step S13 the CPUs 201 of the servers 20A and 20B respectively determine whether their own nodes are masters or slaves. It is assumed that management information indicating a server functioning as a master and a server functioning as a slave is created by an administrator of the storage system 1, and this management information is stored in the storage device 203 of each server. Here, it is assumed in the management information that the server 20A functions as a master and the server 20B functions as a slave. The CPU 201 of the server 20A determines that its own node is the master based on the management information. The CPU 201 of the server 20B determines that its own node is the slave based on the management information.
  • step S14 the transmission unit 29 of the server 20B functioning as a slave transmits update information indicating the result of the update processing in its own node to the server 20A functioning as a master.
  • step S15 the instruction unit 28 of the server 20A functioning as a master determines whether update information has been received. Upon determining that the update information has been received, the instruction unit 28 determines in step S16 based on the update information whether or not there is an inconsistency with the server 20B regarding the update processing in the own node. When the instruction unit 28 determines that there is an inconsistency in the update processing, in step S17, the instruction unit 28 transmits to the server 20B a reprocessing instruction indicating that the update processing should be performed again. After that, the process is returned to step S15. On the other hand, if the instruction unit 28 determines that there is no inconsistency in the update processing, it terminates this routine. In the server 20A, the processes of steps S15, S16 and S17 are repeated until it is determined that there is no inconsistency in the update process among the servers.
  • step S18 the reprocessing unit 27 of the server 20B determines whether or not a reprocessing instruction has been received.
  • the reprocessing unit 27 determines that it has received the reprocessing instruction, it performs the update processing again in step S19.
  • the reprocessing unit 27 performs, for example, a process of changing an object managed as the latest object in its own node. After that, the process is returned to step S14.
  • the reprocessing unit 27 terminates this routine.
  • the processes of steps S14, S18 and S19 are repeatedly performed until a reprocessing instruction is not received within a predetermined period.
  • the storage system as in the first embodiment, in a plurality of storage nodes that should store the same object, even if object update processing continues, the consistency of the stored object is ensured. can be secured.
  • the various processors include, in addition to the CPU, which is a general-purpose processor that executes software (programs) and functions as various processing units, a processor such as an FPGA whose circuit configuration can be changed after manufacture.
  • Programmable Logic Device PLD
  • ASIC Application Specific Integrated Circuit
  • One processing unit may be composed of one of these various processors, or a combination of two or more processors of the same type or different types (for example, a combination of multiple FPGAs, a combination of a CPU and an FPGA). combination). Also, a plurality of processing units may be configured by one processor.
  • a single processor is configured by combining one or more CPUs and software.
  • a processor functions as multiple processing units.
  • SoC System on Chip
  • the various processing units are configured using one or more of the above various processors as a hardware structure.
  • an electric circuit combining circuit elements such as semiconductor elements can be used.
  • the data processing program 210 has been pre-stored (installed) in the storage device 203, but the present invention is not limited to this.
  • the data processing program 210 is provided in a recording medium such as a CD-ROM (Compact Disc Read Only Memory), a DVD-ROM (Digital Versatile Disc Read Only Memory), and a USB (Universal Serial Bus) memory. good too.
  • the data processing program 210 may be downloaded from an external device via a network.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

This storage system includes a plurality of storage nodes each comprising at least one processor and a storage device. The processors of the plurality of storage nodes receive objects that are identical to each other. Upon receiving an update object which is an update of an existing object stored in the storage device of an own node, each of the processors performs an updating process on the object on the basis of the update object. A processor of at least one storage node of the plurality of storage nodes performs, when an inconsistency has occurred with respect to another storage node in the updating process, the updating process again so as to bring consistency with respect to the other storage node in the updating process.

Description

ストレージシステム、データ処理方法、及びデータ処理プログラムStorage system, data processing method, and data processing program
 開示の技術は、ストレージシステム、データ処理方法、及びデータ処理プログラムに関する。 The technology disclosed relates to a storage system, a data processing method, and a data processing program.
 複数のストレージのノードに同一のデータを、冗長性を持たせて保存する技術として、以下の技術が知られている。例えば特開2015-88109号公報には、それぞれが同一のデータを格納する複数のストレージノードと、複数のストレージノードと接続され、ストレージノードが格納するデータの複製であるバックアップデータを格納するバックアップノードと、を有するストレージシステムにおいて、ストレージノードは、自装置が格納する複製対象のデータの更新時点が当該データに対応するバックアップデータの更新時点に比して新しい場合、ストレージノードは、当該オブジェクトをバックアップノードに送信することが記載されている。 The following technologies are known as technologies for saving the same data in multiple storage nodes with redundancy. For example, Japanese Unexamined Patent Application Publication No. 2015-88109 describes a plurality of storage nodes each storing the same data, and a backup node connected to the plurality of storage nodes and storing backup data that is a copy of the data stored in the storage nodes. In a storage system having and, when the update time point of data to be replicated stored in the storage node is newer than the update time point of the backup data corresponding to the data, the storage node backs up the object. It is described to send to the node.
 特表2012-528402号公報には、オブジェクトセットを冗長的に記憶することができる一組のコンピュータにおいて、オブジェクトセット内に更新オブジェクトを識別すると、更新オブジェクトを記憶していない近隣者セット内の近隣者を決定し、近隣者を含むスウォームノードに更新オブジェクトを送信することが記載されている。 Japanese Patent Application Laid-Open No. 2012-528402 discloses that in a set of computers capable of redundantly storing object sets, when an update object is identified in the object set, neighbors in the neighbor set that do not store the update object are identified. It describes determining a swarm node and sending an update object to swarm nodes that contain neighbors.
 ストレージシステムにおいては、障害発生時におけるデータの消失及びサービス停止のリスクを低減するために、複数のストレージノードを互いに異なる地理的位置に配置し、各拠点に配置された複数のストレージノードに同一のデータを、冗長性を持たせて保存することが行われる。このようなストレージシステムにおいては、各拠点に配置された複数のストレージノード相互間において保存されるデータの整合性を保つことが要求される。例えば、あるストレージノードに保存されたデータが、他のストレージノードには保存されていないといった状況が発生することは好ましくない。このようなストレージシステムにおけるデータの転送方法として、ユーザ端末から送信された保存対象のデータを複製し、複製されたデータを複数のストレージノードにそれぞれ転送する方法が考えられる。 In the storage system, in order to reduce the risk of data loss and service outage in the event of a failure, multiple storage nodes are placed in different geographical locations, and the same storage nodes are installed at each location. Data is stored with redundancy. In such a storage system, it is required to maintain consistency of data stored among a plurality of storage nodes arranged at each site. For example, it is undesirable for data saved in a certain storage node to be saved in another storage node. As a data transfer method in such a storage system, a method of duplicating data to be saved transmitted from a user terminal and transferring the duplicated data to a plurality of storage nodes can be considered.
 一方、データをオブジェクト単位で扱うオブジェクトストレージシステムにおけるオブジェクトの更新処理は、既存のオブジェクトの上書き保存ではなく、更新後のオブジェクトが既存のオブジェクトとは別のオブジェクトとしてストレージノードに保存される。ここで、複数のユーザが同一のオブジェクトに対する更新を、略同じタイミングで行った場合を想定する。この場合、各拠点に配置された複数のストレージノードの各々において、同一のオブジェクトに対して2回の更新処理が連続して行われることとなる。各ストレージノードにおいては、順次受信する更新されたオブジェクトのうち、最後に受信したオブジェクトを最新のオブジェクトとして管理する。複数のストレージノード間では、ネットワークの輻輳の度合い等に起因して、更新されたオブジェクトの受信順が異なることがある。この場合、最新のオブジェクトとして管理されるものが、ストレージノード間で異なることとなる。すなわち、互いに同じオブジェクトを保存すべき複数のストレージノード間において、保存されるオブジェクトに不整合が生じる結果となる。 On the other hand, object update processing in an object storage system that handles data on an object-by-object basis does not overwrite existing objects, but rather stores the updated objects in the storage node as separate objects from existing objects. Here, it is assumed that a plurality of users update the same object at substantially the same timing. In this case, in each of the plurality of storage nodes arranged at each site, the same object is updated twice in succession. Each storage node manages the object received last among updated objects that are sequentially received as the latest object. The order in which updated objects are received may differ among a plurality of storage nodes due to factors such as the degree of network congestion. In this case, what is managed as the latest object will differ between storage nodes. In other words, inconsistencies arise in stored objects among a plurality of storage nodes that should store the same objects.
 開示の技術は、上記した点に鑑みてなされたものであり、互いに同じオブジェクトを保存すべき複数のストレージノードにおいて、オブジェクトの更新処理が連続する場合でも、保存されるオブジェクトの整合性を確保することを目的とする。 The disclosed technique has been made in view of the above points, and ensures the consistency of stored objects even when object update processing continues in a plurality of storage nodes that should store the same objects. for the purpose.
 開示の技術に係るストレージシステムは、各々が少なくとも1つのプロセッサ及び記憶装置を備えた複数のストレージノードを含む。複数のストレージノードの各々のプロセッサは、互いに同じオブジェクトを受信し、自ノードの記憶装置に保存された既存のオブジェクトの更新である更新オブジェクトを受信した場合、更新オブジェクトに基づいてオブジェクトの更新処理を実施する。複数のストレージノードのうちの少なくとも1つのストレージノードのプロセッサは、他のストレージノードとの間で更新処理に不整合が発生した場合、他のストレージノードとの間で更新処理が整合するように更新処理を再度実施する。 A storage system according to the disclosed technology includes a plurality of storage nodes each having at least one processor and storage device. Each processor of a plurality of storage nodes receives the same object from each other, and when it receives an update object which is an update of an existing object stored in the storage device of its own node, updates the object based on the update object. implement. When inconsistency occurs in update processing with other storage nodes, the processor of at least one storage node among the plurality of storage nodes is updated so that the update processing is consistent with the other storage nodes. Retry the process.
 複数のストレージノードのうちの少なくとも1つのストレージノードのプロセッサは、自ノードにおいて更新処理を実施した場合、自ノードにおける更新処理の結果を示す更新情報を他のストレージノードに送信してもよい。更新情報を受信した他のストレージノードのプロセッサは、更新情報に基づいて、自ノードにおける更新処理について不整合が発生しているか否かを判定し、更新処理に不整合が発生していると判定した場合に、更新情報に整合するように更新処理を再度実施してもよい。 When the processor of at least one storage node among the plurality of storage nodes has performed update processing in its own node, it may transmit update information indicating the results of update processing in its own node to other storage nodes. The processors of the other storage nodes that have received the update information determine whether or not an inconsistency has occurred in the update processing in their own node based on the update information, and determine that an inconsistency has occurred in the update processing. If so, the update process may be performed again so as to match the update information.
 複数のストレージノードのうちの少なくとも1つのストレージノードのプロセッサは、他のストレージノードにおける更新処理の結果が、自ノードにおける更新処理の結果と異なる場合に、更新処理を再度実施すべき指示を他のストレージノードに送信してもよい。指示を受信した他のストレージノードのプロセッサは、更新処理を再度実施してもよい。 A processor of at least one storage node among a plurality of storage nodes issues an instruction to re-execute update processing when the result of update processing in another storage node is different from the result of update processing in its own node. It may be sent to a storage node. Processors of other storage nodes that have received the instruction may perform the update process again.
 複数のストレージノードは、互いに異なる地理的位置に配置されていてもよい。 Multiple storage nodes may be located in different geographical locations.
 開示の技術に係るデータ処理方法は、各々が少なくとも1つのプロセッサ及び記憶装置を備えた複数のストレージノードを含むストレージシステムにおけるデータ処理方法であって、互いに同じオブジェクトを受信し、自ノードの記憶装置に保存された既存のオブジェクトの更新である更新オブジェクトを受信した場合、更新オブジェクトに基づいてオブジェクトの更新処理を、複数のストレージシステムの各々が備えるプロセッサが実行し、他のストレージノードとの間で更新処理に不整合が発生した場合、他のストレージノードとの間で更新処理が整合するように更新処理を再度実施する処理を、複数のストレージシステムのうちの少なくとも1つのストレージシステムが備えるプロセッサが実行する、というものである。 A data processing method according to technology disclosed herein is a data processing method in a storage system that includes a plurality of storage nodes each having at least one processor and a storage device, in which the same object is received from each other and stored in the storage device of the node itself. When an update object that is an update of an existing object stored in the storage node is received, the processor provided in each of the plurality of storage systems executes the update processing of the object based on the update object, and exchanges with other storage nodes. A processor provided in at least one storage system among a plurality of storage systems performs processing for re-executing update processing so that update processing is consistent with other storage nodes when inconsistency occurs in update processing. to execute.
 開示の技術に係るデータ処理プログラムは、互いに同じオブジェクトを受信し、自ノードの記憶装置に保存された既存のオブジェクトの更新である更新オブジェクトを受信した場合、更新オブジェクトに基づいてオブジェクトの更新処理を実施し、他のストレージノードとの間で更新処理に不整合が発生した場合、他のストレージノードとの間で更新処理が整合するように更新処理を再度実施する処理を、ストレージノードが備える少なくとも1つのプロセッサが実行するプログラムである。 When the data processing program according to the disclosed technique receives the same object as each other and receives an update object that is an update of an existing object stored in the storage device of its own node, it updates the object based on the update object. At least the storage node is provided with a process of re-executing the update process so that the update process is consistent with the other storage nodes when an inconsistency occurs in the update process with the other storage nodes. It is a program executed by one processor.
 開示の技術によれば、互いに同じオブジェクトを保存すべき複数のストレージノードにおいて、オブジェクトの更新処理が連続する場合でも、保存されるオブジェクトの整合性を確保することが可能となる。 According to the disclosed technology, it is possible to ensure the consistency of stored objects even when object update processing continues in a plurality of storage nodes that should store the same objects.
開示の技術の実施形態に係るストレージシステムの構成の一例を示す図である。1 is a diagram showing an example of a configuration of a storage system according to an embodiment of technology disclosed herein; FIG. 開示の技術の実施形態に係るサーバのハードウェア構成の一例を示す図である。It is a figure which shows an example of the hardware configuration of the server based on embodiment of the disclosed technology. 開示の技術の実施形態に係るストレージシステムにおけるオブジェクトの転送形態の一例を示す図である。FIG. 2 is a diagram showing an example of an object transfer form in a storage system according to an embodiment of technology disclosed herein; 開示の技術の実施形態に係るオブジェクトの更新処理の一例を示す図である。FIG. 4 is a diagram illustrating an example of object update processing according to an embodiment of the disclosed technology; 開示の技術の実施形態に係る、マスターとして機能するサーバの機能ブロック図である。1 is a functional block diagram of a server acting as a master, according to an embodiment of the disclosed technology; FIG. 開示の技術の実施形態に係る、スレーブとして機能するサーバの機能ブロック図である。1 is a functional block diagram of a server functioning as a slave, according to an embodiment of the disclosed technology; FIG. 開示の技術の実施形態に係るデータ処理プログラムが実行されることよって実施される処理の流れの一例を示すフローチャートである。4 is a flow chart showing an example of the flow of processing performed by executing a data processing program according to an embodiment of technology disclosed herein; 開示の技術の実施形態に係る、更新処理の不整合を解消する処理の一例を示す図である。FIG. 4 is a diagram illustrating an example of processing for resolving inconsistencies in update processing according to an embodiment of the disclosed technology; 開示の技術の他の実施形態に係る、マスターとして機能するサーバの機能ブロック図である。FIG. 4 is a functional block diagram of a server functioning as a master, according to another embodiment of the disclosed technology; 開示の技術の他の実施形態に係る、スレーブとして機能するサーバの機能ブロック図である。FIG. 4 is a functional block diagram of a server functioning as a slave according to another embodiment of the disclosed technology; 開示の技術の他の実施形態に係るデータ処理プログラムが実行されることよって実施される処理の流れの一例を示すフローチャートである。7 is a flow chart showing an example of the flow of processing performed by executing a data processing program according to another embodiment of technology disclosed herein;
 以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一または等価な構成要素及び部分には同一の参照符号を付与し、重複する説明は適宜省略する。 An example of an embodiment of the disclosed technology will be described below with reference to the drawings. In each drawing, the same or equivalent constituent elements and parts are given the same reference numerals, and overlapping descriptions are omitted as appropriate.
[第1の実施形態]
 図1は、開示の技術の実施形態に係るストレージシステム1の構成の一例を示す図である。ストレージシステム1は、データをオブジェクト単位で扱うオブジェクトストレージシステムを構成するものである。オブジェクトは、データ本体と、データ本体に関するメタデータとを含んで構成される。ストレージシステム1は、情報処理装置10及びサーバ20A及び20Bを含んで構成されている。ストレージシステム1は、ネットワーク40を介してユーザ端末50A及び50Bに接続されている。ユーザ端末50A及び50Bは、それぞれストレージシステム1を利用するユーザによって使用されるコンピュータである。ストレージシステム1は、ユーザ端末50A又は50Bから保存要求があったオブジェクトを保存する。また、ストレージシステム1は、ユーザ端末50A又は50Bからオブジェクトの読み出し要求があった場合、要求されたオブジェクトを読み出してユーザ端末50A又は50Bに送信する。
[First Embodiment]
FIG. 1 is a diagram showing an example of the configuration of a storage system 1 according to an embodiment of technology disclosed herein. The storage system 1 constitutes an object storage system that handles data in units of objects. An object includes a data body and metadata about the data body. The storage system 1 includes an information processing device 10 and servers 20A and 20B. The storage system 1 is connected via a network 40 to user terminals 50A and 50B. The user terminals 50A and 50B are computers used by users who use the storage system 1, respectively. The storage system 1 saves the object requested to be saved by the user terminal 50A or 50B. Further, when receiving an object read request from the user terminal 50A or 50B, the storage system 1 reads the requested object and transmits it to the user terminal 50A or 50B.
 情報処理装置10は、サーバ20A及び20Bとユーザ端末50A及び50Bとの間のデータ送信を仲介するラッパーとしての機能を有する。図1に示すように、情報処理装置10は、ユーザ端末50A又は50Bから送信された保存対象のオブジェクトを複製し、同一のデータをサーバ20A及び20Bにそれぞれ送信(転送)する。 The information processing device 10 functions as a wrapper that mediates data transmission between the servers 20A and 20B and the user terminals 50A and 50B. As shown in FIG. 1, the information processing apparatus 10 duplicates an object to be saved transmitted from the user terminal 50A or 50B, and transmits (transfers) the same data to the servers 20A and 20B.
 サーバ20A及び20Bは、それぞれ、ストレージノードを構成するものであり、互いに異なる地理的位置に配置されている。ユーザ端末50A又は50Bから保存要求があったオブジェクトは、情報処理装置10によって複製され、同一のオブジェクトが、冗長性を有してサーバ20A及び20Bの双方に保存される。このように、各拠点に配置された複数のストレージノードに同一のオブジェクトを、冗長性を持たせて保存することで、一部のストレージノードに障害が発生した場合でも、オブジェクトの消失及びサービスの停止を回避することができる。なお、ストレージシステム1は、同一のオブジェクトが保存される3台以上のサーバ(ストレージノード)を備えていてもよい。 The servers 20A and 20B each constitute a storage node, and are located at different geographical locations. An object requested to be stored by the user terminal 50A or 50B is duplicated by the information processing apparatus 10, and the same object is redundantly stored in both the servers 20A and 20B. In this way, by storing the same object redundantly in multiple storage nodes located at each site, even if some storage nodes fail, the object will be lost and the service will be interrupted. Stopping can be avoided. Note that the storage system 1 may include three or more servers (storage nodes) that store the same object.
 ストレージシステム1におけるオブジェクトの更新処理は、既存のオブジェクトの上書き保存ではなく、更新後のオブジェクト(以下、更新オブジェクトという)が既存のオブジェクト(以下、既存オブジェクトという)とは別のオブジェクトとしてストレージノードに保存される。すなわち、更新オブジェクトが、既存オブジェクトとともにサーバ20A及び20Bの双方に保存される。既存オブジェクトは、ストレージシステム1に既に保存されているオブジェクトであり、更新オブジェクトは、既存オブジェクトと同じオブジェクトキーが付与されたオブジェクトであって、既存オブジェクトよりも後に保存要求がなされたオブジェクトである。 Object update processing in the storage system 1 does not overwrite and save an existing object, but an object after update (hereinafter referred to as an updated object) is transferred to the storage node as an object separate from the existing object (hereinafter referred to as an existing object). Saved. That is, the updated object is saved on both servers 20A and 20B along with the existing object. An existing object is an object already stored in the storage system 1, and an updated object is an object to which the same object key as the existing object is given and for which a storage request is made after the existing object.
 図2は、サーバ20A及び20Bのハードウェア構成の一例を示す図である。サーバ20A及び20Bは、互いに同じハードウェア構成を有する。サーバ20A及び20Bは、それぞれ、CPU(Central Processing Unit)201、一時記憶領域としてのメモリ202及び記憶装置203を含む。また、サーバ20A及び20Bは、ネットワークに接続されるネットワークインターフェース204及び外部インターフェース205を含む。CPU201、メモリ202、記憶装置203、ネットワークインターフェース204、及び外部インターフェース205はバス206に接続される。 FIG. 2 is a diagram showing an example of the hardware configuration of the servers 20A and 20B. Servers 20A and 20B have the same hardware configuration as each other. The servers 20A and 20B each include a CPU (Central Processing Unit) 201, a memory 202 and a storage device 203 as temporary storage areas. Servers 20A and 20B also include a network interface 204 and an external interface 205 that are connected to the network. CPU 201 , memory 202 , storage device 203 , network interface 204 and external interface 205 are connected to bus 206 .
 記憶装置203は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はフラッシュメモリ等の不揮発性の記憶媒体によって実現される。記憶装置203には、データ処理プログラム210が記憶される。CPU201は、データ処理プログラム210を記憶装置203から読み出し、メモリ202に展開し、実行する。なお、CPU201は、開示の技術におけるプロセッサの一例である。 The storage device 203 is realized by a non-volatile storage medium such as an HDD (Hard Disk Drive), SSD (Solid State Drive), or flash memory. A data processing program 210 is stored in the storage device 203 . The CPU 201 reads the data processing program 210 from the storage device 203, develops it in the memory 202, and executes it. Note that the CPU 201 is an example of a processor in technology disclosed herein.
 上記したように、ストレージシステム1におけるオブジェクトの更新処理は、既存オブジェクトの上書き保存ではなく、更新オブジェクトが既存オブジェクトとは別のオブジェクトとしてストレージノードに保存される。ここで、ユーザ端末50Aのユーザと、ユーザ端末50Bのユーザとが同一の既存オブジェクトに対する更新を、略同じタイミングで行った場合を想定する。この場合、各拠点に配置されたサーバ20A及び20Bの各々において、同一の既存オブジェクトに対して2回の更新処理が連続して行われることとなる。 As described above, the object update process in the storage system 1 does not overwrite the existing object, but stores the updated object in the storage node as a different object from the existing object. Here, it is assumed that the user of the user terminal 50A and the user of the user terminal 50B update the same existing object at substantially the same timing. In this case, in each of the servers 20A and 20B located at each base, the same existing object is updated twice in succession.
 図3には、サーバ20A及び20Bの各々の記憶装置203に既存オブジェクト(Obj_0)が保存されており、この既存オブジェクト(Obj_0)に対する更新を行うために、ユーザ端末50Aから更新オブジェクト(Obj_1)が送信され、これと略同じタイミングで、ユーザ端末50Bから更新オブジェクト(Obj_2)が送信された場合が例示されている。サーバ20A及び20Bは、それぞれ、更新オブジェクト(Obj_1)による更新処理と、更新オブジェクト(Obj_2)による更新処理を連続して行う。なお、サーバ20A及び20Bの各々の記憶装置203には、既存オブジェクト(Obj_0)及び更新オブジェクト(Obj_1)、(Obj_2)が、保存される。 In FIG. 3, an existing object (Obj_0) is stored in the storage device 203 of each of the servers 20A and 20B. A case is exemplified in which the update object (Obj_2) is transmitted from the user terminal 50B at approximately the same timing. The servers 20A and 20B each successively perform update processing by the update object (Obj_1) and update processing by the update object (Obj_2). The storage device 203 of each of the servers 20A and 20B stores the existing object (Obj_0) and the updated objects (Obj_1) and (Obj_2).
 サーバ20A及び20Bにおいては、順次受信する更新オブジェクト(Obj_1)、(Obj_2)のうち、最後に受信した更新オブジェクトを最新のオブジェクトとして管理される。サーバ20Aとサーバ20Bとの間では、ネットワークの輻輳の度合い等に起因して、更新オブジェクトの受信順が異なることがある。この場合、最新のオブジェクトとして管理されるものが、サーバ間で異なることとなる。すなわち、互いに同じオブジェクトを保存すべき複数のストレージノード間において、保存されるオブジェクトに不整合が生じる結果となる。 In the servers 20A and 20B, among the sequentially received update objects (Obj_1) and (Obj_2), the last received update object is managed as the latest object. The order in which the update objects are received may differ between the server 20A and the server 20B due to factors such as the degree of network congestion. In this case, what is managed as the latest object will differ between servers. In other words, inconsistencies arise in stored objects among a plurality of storage nodes that should store the same objects.
 図4には、サーバ20Aにおいて、更新オブジェクト(Obj_1)によって更新処理が行われた後に、更新オブジェクト(Obj_2)によって更新処理が行われ、サーバ20Bにおいて、更新オブジェクト(Obj_2)によって更新処理が行われた後に、更新オブジェクト(Obj_1)によって更新処理が行われた場合が例示されている。この場合、サーバ20Aにおいては、更新オブジェクト(Obj_2)が最新のオブジェクトとして管理され、サーバ20Bにおいては、更新オブジェクト(Obj_1)が最新のオブジェクトとして管理される。すなわち、図4に示す状態は、サーバ20Aとサーバ20Bとの間で更新処理に不整合が生じている状態である。 In FIG. 4, after the update process is performed by the update object (Obj_1) in the server 20A, the update process is performed by the update object (Obj_2), and the update process is performed by the update object (Obj_2) in the server 20B. After that, the update process is performed by the update object (Obj_1). In this case, the server 20A manages the update object (Obj_2) as the latest object, and the server 20B manages the update object (Obj_1) as the latest object. That is, the state shown in FIG. 4 is a state in which inconsistency has occurred in update processing between the server 20A and the server 20B.
 ユーザからオブジェクトの読み出し要求があった場合、最新のオブジェクトとして管理されるものが、ユーザ端末に送信されることとなる。従って、図4に示されるような不整合が生じている場合、サーバ20Aに対して読み出し要求を行う場合と、サーバ20Bに対して読み出し要求を行う場合とで、読み出し要求に対する応答としてユーザ端末に送信されるオブジェクトが異なる、といった事象が発生する。 When a user requests to read an object, the latest managed object will be sent to the user terminal. Therefore, when there is an inconsistency as shown in FIG. 4, when a read request is made to the server 20A and when a read request is made to the server 20B, the user terminal is sent as a response to the read request. An event such as the transmitted object being different occurs.
 サーバ20A及びサーバ20Bは、データ処理プログラム210を実行することにより、更新処理の整合性を保つための処理を行う。この処理においては、サーバ20Aとサーバ20Bのいずれか一方がマスターとして機能し、他方がスレーブとして機能する。以下の説明においては、サーバ20Aがマスターとして機能し、サーバ20Bがスレーブとして機能する場合を例に説明する。 By executing the data processing program 210, the server 20A and the server 20B perform processing for maintaining consistency in update processing. In this process, either server 20A or server 20B functions as a master, and the other functions as a slave. In the following description, an example will be described in which the server 20A functions as a master and the server 20B functions as a slave.
 図5Aは、マスターとして機能するサーバ20Aの機能的な構成の一例を示す機能ブロック図である。マスターとして機能するサーバ20Aは、受信部21、更新処理部22及び送信部23を含む。サーバ20AのCPU201がデータ処理プログラム210を実行することにより、サーバ20Aは、マスターとして機能し、受信部21、更新処理部22及び送信部23として機能する。 FIG. 5A is a functional block diagram showing an example of the functional configuration of server 20A that functions as a master. A server 20A functioning as a master includes a receiver 21 , an update processor 22 and a transmitter 23 . By executing the data processing program 210 by the CPU 201 of the server 20A, the server 20A functions as a master and functions as the receiving section 21, the update processing section 22 and the transmitting section .
 図5Bは、スレーブとして機能するサーバ20Bの機能的な構成の一例を示すブロック図である。スレーブとして機能するサーバ20Bは、受信部25、更新処理部26及び再処理部27を含む。サーバ20BのCPU201がデータ処理プログラム210を実行することにより、サーバ20Bは、スレーブとして機能し、受信部25、更新処理部26及び再処理部27として機能する。以下において、上記した各機能ブロックの詳細について説明する。 FIG. 5B is a block diagram showing an example of the functional configuration of the server 20B functioning as a slave. The server 20B functioning as a slave includes a receiving section 25, an update processing section 26 and a reprocessing section 27. FIG. By executing the data processing program 210 by the CPU 201 of the server 20B, the server 20B functions as a slave and functions as the receiving section 25, the update processing section 26, and the reprocessing section 27. FIG. The details of each functional block described above will be described below.
 情報処理装置10は、ユーザ端末50A又は50Bから送信された更新オブジェクトを複製し、同一の更新オブジェクトをサーバ20A及びサーバ20Bにそれぞれ送信(転送)する。サーバ20Aの受信部21及びサーバ20Bの受信部25は、それぞれ、情報処理装置10から送信された更新オブジェクトを受信する。 The information processing device 10 duplicates the update object transmitted from the user terminal 50A or 50B, and transmits (transfers) the same update object to the server 20A and server 20B. The receiving unit 21 of the server 20A and the receiving unit 25 of the server 20B each receive the update object transmitted from the information processing device 10 .
 サーバ20Aの更新処理部22及びサーバ20Bの更新処理部26は、それぞれ受信部21及び受信部25が受信した更新オブジェクトに基づいてオブジェクトの更新処理を行う。すなわち、更新処理部22及び26は、更新オブジェクトを自ノードの記憶装置203に保存するとともに、その更新オブジェクトを最新のオブジェクトとして管理する。 The update processing unit 22 of the server 20A and the update processing unit 26 of the server 20B perform object update processing based on the update objects received by the receiving unit 21 and the receiving unit 25, respectively. That is, the update processing units 22 and 26 store the update object in the storage device 203 of their own node, and manage the update object as the latest object.
 サーバ20A及び20Bの記憶装置203には、既存オブジェクト及び既存オブジェクトと同じオブジェクトキーが付与された更新オブジェクトが保存される。ユーザがストレージシステム1に対してオブジェクトの読み出し要求を行う場合、読み出し対象のオブジェクトに付与されたオブジェクトキーが指定される。読み出し要求を受信したサーバ20A又は20Bは、当該読み出し要求において指定されたオブジェクトキーが付与されたオブジェクトのうち、最新のオブジェクトとして管理しているものを記憶装置203から読み出してユーザ端末に送信する。 The storage devices 203 of the servers 20A and 20B store existing objects and updated objects with the same object keys as the existing objects. When a user makes an object read request to the storage system 1, an object key assigned to the object to be read is specified. The server 20A or 20B that has received the read request reads from the storage device 203 the object managed as the latest object among the objects assigned the object key specified in the read request, and transmits it to the user terminal.
 マスターとして機能するサーバ20Aの送信部23は、自ノードの更新処理部22における更新処理の結果を示す更新情報を、スレーブとして機能するサーバ20Bに送信する。更新情報は、例えば、サーバ20Aにおいて最新のオブジェクトとして管理しているオブジェクトの識別情報であってもよい。オブジェクトの識別情報は、UUID(Universally Unique Identifier)等のストレージシステム1においてオブジェクトを一意に識別するための情報である。 The transmission unit 23 of the server 20A functioning as a master transmits update information indicating the result of update processing in the update processing unit 22 of its own node to the server 20B functioning as a slave. The update information may be, for example, identification information of an object managed as the latest object in the server 20A. Object identification information is information for uniquely identifying an object in the storage system 1, such as a UUID (Universally Unique Identifier).
 スレーブとして機能するサーバ20Bの再処理部27は、マスターとして機能するサーバ20Aから送信された更新情報を受信すると、更新情報に基づいて、自ノードにおける更新処理についてサーバ20Aとの間で不整合が発生しているか否かを判定する。再処理部27は、例えば、自ノードにおいて最新のオブジェクトとして管理しているものが、更新情報によって示される、サーバ20Aにおいて最新のオブジェクトとして管理しているものとは異なる場合、更新処理に不整合が発生していると判定してもよい。再処理部27は、更新処理に不整合が発生していると判定した場合に、更新情報によって示されるサーバ20Aにおける更新結果と整合するように更新処理を再度実施する。例えば、再処理部27は、サーバ20Aにおいて最新のオブジェクトとして管理しているオブジェクトと同じオブジェクトを自ノードにおける最新のオブジェクトとして管理する。 When the reprocessing unit 27 of the server 20B functioning as a slave receives the update information transmitted from the server 20A functioning as a master, based on the update information, the reprocessing unit 27 detects a mismatch between the server 20A and the server 20A regarding the update process in its own node. Determine whether or not it has occurred. For example, if the object managed as the latest object in its own node is different from the object managed as the latest object in the server 20A indicated by the update information, the reprocessing unit 27 determines that the update process is inconsistent. may be determined to have occurred. When the reprocessing unit 27 determines that the update processing is inconsistent, the reprocessing unit 27 performs the update processing again so as to match the update result in the server 20A indicated by the update information. For example, the reprocessing unit 27 manages the same object as the latest object managed in the server 20A as the latest object in its own node.
 以下に、サーバ20A及びサーバ20Bの作用について説明する。図6は、サーバ20A及びサーバ20BのCPU201が、データ処理プログラム210を実行することによって実施される処理の流れの一例を示すフローチャートである。データ処理プログラム210は、例えば、情報処理装置10から更新オブジェクトが送信された場合に実行される。 The actions of the server 20A and the server 20B will be described below. FIG. 6 is a flow chart showing an example of the flow of processing performed by the CPUs 201 of the servers 20A and 20B executing the data processing program 210. As shown in FIG. The data processing program 210 is executed, for example, when an update object is transmitted from the information processing apparatus 10 .
 ステップS1において、サーバ20Aの受信部21及びサーバ20Bの受信部25は、それぞれ、情報処理装置10から送信された更新オブジェクトを受信する。 In step S1, the receiving unit 21 of the server 20A and the receiving unit 25 of the server 20B each receive the update object transmitted from the information processing device 10.
 ステップS2において、サーバ20Aの更新処理部22及びサーバ20Bの更新処理部26は、ステップS1において受信した更新オブジェクトに基づいて、オブジェクトの更新処理を行う。すなわち、更新処理部22及び26は、更新オブジェクトを自ノードの記憶装置203に保存するとともに、その更新オブジェクトを最新のオブジェクトとして管理する。 In step S2, the update processing unit 22 of the server 20A and the update processing unit 26 of the server 20B perform object update processing based on the update object received in step S1. That is, the update processing units 22 and 26 store the update object in the storage device 203 of their own node, and manage the update object as the latest object.
 ステップS3において、サーバ20A及びサーバ20BのCPU201は、それぞれ、自ノードがマスターであるかスレーブであるかを判定する。マスターとして機能するサーバ及びスレーブとして機能するサーバを示す管理情報は、ストレージシステム1の管理者によって作成され、この管理情報が各サーバの記憶装置203に格納されているものとする。ここでは、サーバ20Aがマスターとして機能し、サーバ20Bがスレーブとして機能することが管理情報において定められているものとする。サーバ20AのCPU201は、管理情報に基づいて自ノードがマスターであると判定する。サーバ20BのCPU201は、管理情報に基づいて自ノードがスレーブであると判定する。 In step S3, the CPUs 201 of the servers 20A and 20B respectively determine whether their own nodes are masters or slaves. It is assumed that management information indicating a server functioning as a master and a server functioning as a slave is created by an administrator of the storage system 1, and this management information is stored in the storage device 203 of each server. Here, it is assumed in the management information that the server 20A functions as a master and the server 20B functions as a slave. The CPU 201 of the server 20A determines that its own node is the master based on the management information. The CPU 201 of the server 20B determines that its own node is the slave based on the management information.
 ステップS4において、マスターとして機能するサーバ20Aの送信部23は、自ノードにおける更新処理の結果を示す更新情報を、スレーブとして機能するサーバ20Bに送信する。 In step S4, the transmission unit 23 of the server 20A functioning as a master transmits update information indicating the result of the update processing in its own node to the server 20B functioning as a slave.
 ステップS5において、スレーブとして機能するサーバ20Bの再処理部27は、更新情報を受信したか否かを判定する。再処理部27は、更新情報を受信したと判定すると、ステップS6において、更新情報に基づいて、自ノードにおける更新処理についてサーバ20Aとの間で不整合が発生しているか否かを判定する。再処理部27は、更新処理に不整合が発生していると判定すると、ステップS7において更新情報によって示されるサーバ20Aにおける更新結果と整合するように更新処理を再度実施する。例えば、再処理部27は、サーバ20Aにおいて最新のオブジェクトとして管理しているオブジェクトと同じオブジェクトを自ノードにおける最新のオブジェクトとして管理する。 In step S5, the reprocessing unit 27 of the server 20B functioning as a slave determines whether update information has been received. When determining that the update information has been received, the reprocessing unit 27 determines in step S6 based on the update information whether or not there is an inconsistency with the server 20A regarding the update processing in its own node. When the reprocessing unit 27 determines that the update processing is inconsistent, the reprocessing unit 27 performs the update processing again so as to match the update result in the server 20A indicated by the update information in step S7. For example, the reprocessing unit 27 manages the same object as the latest object managed in the server 20A as the latest object in its own node.
 ここで、サーバ20A及び20Bにおける更新処理において、図4に例示する不整合が生じている場合を想定する。すなわち、サーバ20Aにおいて最新のオブジェクトとして管理されているオブジェクトが更新オブジェクト(Obj_2)であり、サーバ20Bにおいて最新のオブジェクトとして管理されているオブジェクトが更新オブジェクト(Obj_1)であるものとする。この場合、サーバ20Aの送信部23は、自ノードにおいて、最新のオブジェクトとして管理しているオブジェクトが、更新オブジェクト(Obj_2)であることを示す更新情報をサーバ20Bに送信する。サーバ20Bの再処理部27は、更新情報に基づいて、自ノードにおける更新処理についてサーバ20Aとの間で不整合が発生していると判定する。再処理部27は、サーバ20Aにおける更新結果と整合するように更新処理を再度実施する。サーバ20Bにおいて再度の更新処理が実施されることで、図7に示すように、サーバ20Bにおいて、最新のオブジェクトとして管理されるものが、サーバ20Aと同じ更新オブジェクト(Obj_2)となり、不整合が解消される。 Here, it is assumed that inconsistencies exemplified in FIG. 4 occur in the update processing in the servers 20A and 20B. That is, the object managed as the latest object in the server 20A is the update object (Obj_2), and the object managed as the latest object in the server 20B is the update object (Obj_1). In this case, the transmitting unit 23 of the server 20A transmits to the server 20B update information indicating that the object managed as the latest object in its own node is the update object (Obj_2). Based on the update information, the reprocessing unit 27 of the server 20B determines that there is an inconsistency with the server 20A regarding the update process in its own node. The reprocessing unit 27 performs the update process again so as to match the update result in the server 20A. By executing the update process again in the server 20B, as shown in FIG. 7, the object managed as the latest object in the server 20B becomes the same updated object (Obj_2) as the server 20A, and the inconsistency is resolved. be done.
 以上のように、本実施形態に係るストレージシステム1において、複数のストレージノードの各々は、互いに同じオブジェクトを受信し、自ノードの記憶装置に保存された既存のオブジェクトの更新である更新オブジェクトを受信した場合、更新オブジェクトに基づいてオブジェクトの更新処理を実施する。複数のストレージノードのうちの少なくとも1つのストレージノードは、他のストレージノードとの間で更新処理に不整合が発生した場合、他のストレージノードとの間で更新処理が整合するように更新処理を再度実施する。より具体的には、複数のストレージノードのうちの少なくとも1つのストレージノードは、自ノードにおいて更新処理を実施した場合、自ノードにおける更新処理の結果を示す更新情報を他のストレージノードに送信する。更新情報を受信した他のストレージノードは、更新情報に基づいて、自ノードにおける更新処理について不整合が発生しているか否かを判定し、更新処理に不整合が発生していると判定した場合に、更新情報に整合するように更新処理を再度実施する。 As described above, in the storage system 1 according to this embodiment, each of the plurality of storage nodes receives the same object as each other, and receives an update object that is an update of an existing object stored in the storage device of the node itself. If so, the object update process is performed based on the update object. At least one storage node among a plurality of storage nodes performs update processing so that update processing is consistent with other storage nodes when inconsistency occurs in update processing with other storage nodes. Do it again. More specifically, when at least one storage node among the plurality of storage nodes performs update processing in its own node, it transmits update information indicating the result of the update processing in its own node to other storage nodes. Other storage nodes that have received the update information determine whether or not there is an inconsistency in the update processing of their own node based on the update information. Then, update processing is performed again so as to match the update information.
 本実施形態に係るストレージシステム1によれば、例えば、複数のユーザ端末から互いに異なる更新オブジェクトが略同じタイミングで送信された場合、各ストレージノードにおける更新処理に不整合が生じるおそれがある。しかしながら、更新処理に不整合が生じた場合には、ストレージノード間で更新処理が整合するように更新処理が再度実施され、不整合が解消される。すなわち、本実施形態に係るストレージシステム1によれば、互いに同じオブジェクトを保存すべき複数のストレージノードにおいて、オブジェクトの更新処理が連続する場合でも、保存されるオブジェクトの整合性を確保することが可能となる。 According to the storage system 1 according to the present embodiment, for example, if different update objects are sent from a plurality of user terminals at substantially the same timing, there is a risk that inconsistency will occur in update processing in each storage node. However, if an inconsistency occurs in the update process, the update process is performed again so that the update process is consistent between the storage nodes, and the inconsistency is resolved. That is, according to the storage system 1 according to the present embodiment, it is possible to ensure the consistency of stored objects even when object update processing continues in a plurality of storage nodes that should store the same objects. becomes.
 なお、ストレージシステム1が備えるストレージノードの一部について開示の技術を適用して、当該一部のストレージノード間におけるオブジェクトの整合性を確保するようにしてもよい。 It should be noted that the disclosed technology may be applied to some of the storage nodes included in the storage system 1 to ensure consistency of objects between the part of the storage nodes.
 また、本実施形態において、情報処理装置10が独立して存在する場合を例示したが、ユーザ端末50が情報処理装置10を兼ねる構成とすることも可能である。すなわち、ユーザ端末50にラッパーとしての機能が実装されていてもよい。 Also, in the present embodiment, the information processing device 10 exists independently, but the user terminal 50 may also serve as the information processing device 10 . That is, the function as a wrapper may be implemented in the user terminal 50 .
[第2の実施形態]
 図8Aは、開示の技術の第2の実施形態に係る、マスターとして機能するサーバ20Aの機能的な構成の一例を示す機能ブロック図である。マスターとして機能するサーバ20Aは、受信部21、更新処理部22及び指示部28を含む。サーバ20AのCPU201がデータ処理プログラム210を実行することにより、サーバ20Aは、マスターとして機能し、受信部21、更新処理部22及び指示部28として機能する。
[Second embodiment]
FIG. 8A is a functional block diagram showing an example of a functional configuration of a server 20A functioning as a master according to the second embodiment of technology disclosed herein. A server 20A functioning as a master includes a receiving section 21, an update processing section 22 and an instruction section . By executing the data processing program 210 by the CPU 201 of the server 20A, the server 20A functions as a master and functions as the receiving section 21, the update processing section 22 and the instruction section .
 図8Bは、開示の技術の第2の実施形態に係る、スレーブとして機能するサーバ20Bの機能的な構成の一例を示すブロック図である。スレーブとして機能するサーバ20Bは、受信部25、更新処理部26、送信部29及び再処理部27を含む。サーバ20BのCPU201がデータ処理プログラム210を実行することにより、サーバ20Bは、スレーブとして機能し、受信部25、更新処理部26、送信部29及び再処理部27として機能する。以下において、上記した各機能ブロックの詳細について説明する。なお、受信部21、25及び更新処理部22、26の機能は、上記した第1の実施形態のものと同じであるため説明は省略する。 FIG. 8B is a block diagram showing an example of a functional configuration of a server 20B functioning as a slave according to the second embodiment of the disclosed technology. The server 20</b>B functioning as a slave includes a receiver 25 , an update processor 26 , a transmitter 29 and a reprocessor 27 . By executing the data processing program 210 by the CPU 201 of the server 20B, the server 20B functions as a slave and functions as the receiving section 25, the update processing section 26, the transmitting section 29, and the reprocessing section 27. FIG. The details of each functional block described above will be described below. Note that the functions of the receiving units 21 and 25 and the update processing units 22 and 26 are the same as those of the first embodiment described above, so description thereof will be omitted.
 サーバ20Bの送信部29は、自ノードの更新処理部26における更新処理の結果を示す更新情報をサーバ20Aに送信する。更新情報は、例えば、サーバ20Bにおいて最新のオブジェクトとして管理しているオブジェクトの識別情報であってもよい。 The transmission unit 29 of the server 20B transmits update information indicating the result of update processing in the update processing unit 26 of its own node to the server 20A. The update information may be, for example, identification information of an object managed as the latest object in the server 20B.
 サーバ20Aの指示部28は、サーバ20Bから送信された更新情報を受信すると、更新情報に基づいて、自ノードにおける更新処理についてサーバ20Bとの間で不整合が発生しているか否かを判定する。指示部28は、例えば、自ノードにおいて最新のオブジェクトとして管理しているものが、更新情報によって示される、サーバ20Bにおいて最新のオブジェクトとして管理しているものとは異なる場合、更新処理に不整合が発生していると判定してもよい。指示部28は、更新処理に不整合が発生していると判定した場合に、更新処理を再度実施すべきことを示す再処理指示をサーバ20Bに送信する。 Upon receiving the update information transmitted from the server 20B, the instruction unit 28 of the server 20A determines whether or not there is an inconsistency with the server 20B regarding the update processing in its own node based on the update information. . For example, if the object managed as the latest object in its own node is different from the object managed as the latest object in the server 20B indicated by the update information, the instruction unit 28 determines that there is an inconsistency in the update process. It can be determined that this has occurred. When the instruction unit 28 determines that the update process is inconsistent, the instruction unit 28 transmits to the server 20B a reprocessing instruction indicating that the update process should be performed again.
 サーバ20Bの再処理部27は、サーバ20Aから送信された再処理指示を受信すると、更新処理を再度実施する。再処理部27は、例えば、自ノードにおいて最新のオブジェクトとして管理しているものを変更する処理を行う。 When the reprocessing unit 27 of the server 20B receives the reprocessing instruction transmitted from the server 20A, it performs the update processing again. The reprocessing unit 27 performs, for example, a process of changing an object managed as the latest object in its own node.
 サーバ20Bにおいて更新処理が再度実施された場合、送信部29は、再度の更新処理の結果を示す更新情報をサーバ20Aに送信する。サーバ20Aの指示部28は、サーバ20Bから送信された更新情報を受信すると、自ノードにおける更新処理についてサーバ20Bとの間で不整合が発生しているか否かを判定し、不整合が発生していると判定した場合、再処理指示をサーバ20Bに送信する。再処理部27、送信部29、指示部28における処理は、サーバ20Aとサーバ20Bとの間で更新処理が整合するまで繰り返し実施される。 When the server 20B performs the update process again, the transmission unit 29 transmits update information indicating the result of the update process again to the server 20A. Upon receiving the update information transmitted from the server 20B, the instruction unit 28 of the server 20A determines whether or not there is any inconsistency with the server 20B regarding the update processing in its own node. If it is determined that there is, a reprocessing instruction is transmitted to the server 20B. The processing in the reprocessing unit 27, the transmission unit 29, and the instruction unit 28 is repeated until the update processing is consistent between the servers 20A and 20B.
 以下に、開示の技術の第2の実施形態に係るサーバ20A及びサーバ20Bの作用について説明する。図9は、サーバ20A及びサーバ20BのCPU201が、データ処理プログラム210を実行することによって実施される処理の流れの一例を示すフローチャートである。データ処理プログラム210は、例えば、情報処理装置10から更新オブジェクトが送信された場合に実行される。 The operation of the server 20A and the server 20B according to the second embodiment of the disclosed technique will be described below. FIG. 9 is a flow chart showing an example of the flow of processing executed by the CPUs 201 of the servers 20A and 20B executing the data processing program 210. As shown in FIG. The data processing program 210 is executed, for example, when an update object is transmitted from the information processing apparatus 10 .
 ステップS11において、サーバ20Aの受信部21及びサーバ20Bの受信部25は、それぞれ、情報処理装置10から送信された更新オブジェクトを受信する。 In step S11, the receiving unit 21 of the server 20A and the receiving unit 25 of the server 20B each receive the update object transmitted from the information processing device 10.
 ステップS12において、サーバ20Aの更新処理部22及びサーバ20Bの更新処理部26は、ステップS11において受信した更新オブジェクトに基づいて、オブジェクトの更新処理を行う。すなわち、更新処理部22及び26は、更新オブジェクトを自ノードの記憶装置203に保存するとともに、その更新オブジェクトを最新のオブジェクトとして管理する。 In step S12, the update processing unit 22 of the server 20A and the update processing unit 26 of the server 20B perform object update processing based on the update object received in step S11. That is, the update processing units 22 and 26 store the update object in the storage device 203 of their own node, and manage the update object as the latest object.
 ステップS13において、サーバ20A及びサーバ20BのCPU201は、それぞれ、自ノードがマスターであるかスレーブであるかを判定する。マスターとして機能するサーバ及びスレーブとして機能するサーバを示す管理情報は、ストレージシステム1の管理者によって作成され、この管理情報が各サーバの記憶装置203に格納されているものとする。ここでは、サーバ20Aがマスターとして機能し、サーバ20Bがスレーブとして機能することが管理情報において定められているものとする。サーバ20AのCPU201は、管理情報に基づいて自ノードがマスターであると判定する。サーバ20BのCPU201は、管理情報に基づいて自ノードがスレーブであると判定する。 In step S13, the CPUs 201 of the servers 20A and 20B respectively determine whether their own nodes are masters or slaves. It is assumed that management information indicating a server functioning as a master and a server functioning as a slave is created by an administrator of the storage system 1, and this management information is stored in the storage device 203 of each server. Here, it is assumed in the management information that the server 20A functions as a master and the server 20B functions as a slave. The CPU 201 of the server 20A determines that its own node is the master based on the management information. The CPU 201 of the server 20B determines that its own node is the slave based on the management information.
 ステップS14において、スレーブとして機能するサーバ20Bの送信部29は、自ノードにおける更新処理の結果を示す更新情報を、マスターとして機能するサーバ20Aに送信する。 In step S14, the transmission unit 29 of the server 20B functioning as a slave transmits update information indicating the result of the update processing in its own node to the server 20A functioning as a master.
 ステップS15において、マスターとして機能するサーバ20Aの指示部28は、更新情報を受信したか否かを判定する。指示部28は、更新情報を受信したと判定すると、ステップS16において、更新情報に基づいて、自ノードにおける更新処理についてサーバ20Bとの間で不整合が発生しているか否かを判定する。指示部28は、更新処理に不整合が発生していると判定すると、ステップS17において、更新処理を再度実施すべきことを示す再処理指示をサーバ20Bに送信する。その後、処理はステップS15に戻される。一方、指示部28は、更新処理に不整合が発生していないと判定した場合、本ルーチンを終了させる。サーバ20Aにおいては、サーバ間で更新処理に不整合していないと判定されるまで、ステップS15、S16及びS17の処理が繰り返し行われる。 In step S15, the instruction unit 28 of the server 20A functioning as a master determines whether update information has been received. Upon determining that the update information has been received, the instruction unit 28 determines in step S16 based on the update information whether or not there is an inconsistency with the server 20B regarding the update processing in the own node. When the instruction unit 28 determines that there is an inconsistency in the update processing, in step S17, the instruction unit 28 transmits to the server 20B a reprocessing instruction indicating that the update processing should be performed again. After that, the process is returned to step S15. On the other hand, if the instruction unit 28 determines that there is no inconsistency in the update processing, it terminates this routine. In the server 20A, the processes of steps S15, S16 and S17 are repeated until it is determined that there is no inconsistency in the update process among the servers.
 ステップS18において、サーバ20Bの再処理部27は、再処理指示を受信したか否かを判定する。再処理部27は、再処理指示を受信したと判定すると、ステップS19において、更新処理を再度実施する。再処理部27は、例えば、自ノードにおいて最新のオブジェクトとして管理しているものを変更する処理を行う。その後、処理はステップS14に戻される。一方、再処理部27は、更新情報の送信後、所定期間内に再処理指示を受信しない場合、本ルーチンを終了させる。サーバ20Bにおいては、所定期間内に再処理指示が受信されない状態となるまでステップS14、S18及びS19の処理が繰り返し行われる。 In step S18, the reprocessing unit 27 of the server 20B determines whether or not a reprocessing instruction has been received. When the reprocessing unit 27 determines that it has received the reprocessing instruction, it performs the update processing again in step S19. The reprocessing unit 27 performs, for example, a process of changing an object managed as the latest object in its own node. After that, the process is returned to step S14. On the other hand, if the reprocessing unit 27 does not receive a reprocessing instruction within a predetermined period of time after transmitting the update information, the reprocessing unit 27 terminates this routine. In the server 20B, the processes of steps S14, S18 and S19 are repeatedly performed until a reprocessing instruction is not received within a predetermined period.
 本実施形態に係るストレージシステムによれば、第1の実施形態と同様、互いに同じオブジェクトを保存すべき複数のストレージノードにおいて、オブジェクトの更新処理が連続する場合でも、保存されるオブジェクトの整合性を確保することができる。 According to the storage system according to the present embodiment, as in the first embodiment, in a plurality of storage nodes that should store the same object, even if object update processing continues, the consistency of the stored object is ensured. can be secured.
 上記の各実施形態において、例えば、受信部21、25、更新処理部22、26、送信部23、29、再処理部27、指示部28といった各種の処理を実行する処理部(processing unit)のハードウェア的な構造としては、次に示す各種のプロセッサ(processor)を用いることができる。上記各種のプロセッサには、前述したように、ソフトウェア(プログラム)を実行して各種の処理部として機能する汎用的なプロセッサであるCPUに加えて、FPGA等の製造後に回路構成を変更可能なプロセッサであるプログラマブルロジックデバイス(Programmable Logic Device:PLD)、ASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が含まれる。 In each of the above embodiments, for example, the receiving units 21 and 25, the update processing units 22 and 26, the transmitting units 23 and 29, the reprocessing unit 27, the instruction unit 28, and the like. As a hardware structure, various processors shown below can be used. As described above, the various processors include, in addition to the CPU, which is a general-purpose processor that executes software (programs) and functions as various processing units, a processor such as an FPGA whose circuit configuration can be changed after manufacture. Programmable Logic Device (PLD), ASIC (Application Specific Integrated Circuit), which is a processor with a circuit configuration specially designed to execute specific processing, such as a dedicated electric circuit.
 1つの処理部は、これらの各種のプロセッサのうちの1つで構成されてもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGAの組み合わせや、CPUとFPGAとの組み合わせ)で構成されてもよい。また、複数の処理部を1つのプロセッサで構成してもよい。 One processing unit may be composed of one of these various processors, or a combination of two or more processors of the same type or different types (for example, a combination of multiple FPGAs, a combination of a CPU and an FPGA). combination). Also, a plurality of processing units may be configured by one processor.
 複数の処理部を1つのプロセッサで構成する例としては、第1に、クライアント及びサーバ等のコンピュータに代表されるように、1つ以上のCPUとソフトウェアの組み合わせで1つのプロセッサを構成し、このプロセッサが複数の処理部として機能する形態がある。第2に、システムオンチップ(System on Chip:SoC)等に代表されるように、複数の処理部を含むシステム全体の機能を1つのIC(Integrated Circuit)チップで実現するプロセッサを使用する形態がある。このように、各種の処理部は、ハードウェア的な構造として、上記各種のプロセッサの1つ以上を用いて構成される。 As an example of configuring a plurality of processing units with a single processor, first, as represented by computers such as clients and servers, a single processor is configured by combining one or more CPUs and software. There is a form in which a processor functions as multiple processing units. Second, as typified by System on Chip (SoC), etc., there is a form of using a processor that realizes the functions of the entire system including multiple processing units with a single IC (Integrated Circuit) chip. be. In this way, the various processing units are configured using one or more of the above various processors as a hardware structure.
 更に、これらの各種のプロセッサのハードウェア的な構造としては、より具体的には、半導体素子などの回路素子を組み合わせた電気回路(circuitry)を用いることができる。 Furthermore, as the hardware structure of these various processors, more specifically, an electric circuit combining circuit elements such as semiconductor elements can be used.
 また、上記実施形態では、データ処理プログラム210が記憶装置203に予め記憶(インストール)されている態様を説明したが、これに限定されない。データ処理プログラム210は、CD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の記録媒体に記録された形態で提供されてもよい。また、データ処理プログラム210は、ネットワークを介して外部装置からダウンロードされる形態としてもよい。 Also, in the above embodiment, the data processing program 210 has been pre-stored (installed) in the storage device 203, but the present invention is not limited to this. The data processing program 210 is provided in a recording medium such as a CD-ROM (Compact Disc Read Only Memory), a DVD-ROM (Digital Versatile Disc Read Only Memory), and a USB (Universal Serial Bus) memory. good too. Also, the data processing program 210 may be downloaded from an external device via a network.
 なお、2021年3月16日に出願された日本国特許出願2021-042932の開示は、その全体が参照により本明細書に取り込まれる。また、本明細書に記載された全ての文献、特許出願および技術規格は、個々の文献、特許出願、および技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。 The disclosure of Japanese Patent Application 2021-042932 filed on March 16, 2021 is incorporated herein by reference in its entirety. In addition, all publications, patent applications and technical standards mentioned herein are to the same extent as if each individual publication, patent application and technical standard were specifically and individually noted to be incorporated by reference. , incorporated herein by reference.

Claims (6)

  1.  各々が少なくとも1つのプロセッサ及び記憶装置を備えた複数のストレージノードを含むストレージシステムであって、
     前記複数のストレージノードの各々のプロセッサは、
     互いに同じオブジェクトを受信し、
     自ノードの記憶装置に保存された既存のオブジェクトの更新である更新オブジェクトを受信した場合、前記更新オブジェクトに基づいてオブジェクトの更新処理を実施し、
     前記複数のストレージノードのうちの少なくとも1つのストレージノードのプロセッサは、他のストレージノードとの間で前記更新処理に不整合が発生した場合、他のストレージノードとの間で前記更新処理が整合するように前記更新処理を再度実施する
     ストレージシステム。
    A storage system comprising a plurality of storage nodes each comprising at least one processor and storage device,
    each processor of the plurality of storage nodes,
    receive the same object as each other,
    When receiving an update object that is an update of an existing object stored in the storage device of the node, updating the object based on the update object,
    The processor of at least one storage node among the plurality of storage nodes makes the update process consistent with the other storage nodes when the update process is inconsistent with the other storage nodes. A storage system that performs the update processing again as described above.
  2.  前記複数のストレージノードのうちの少なくとも1つのストレージノードのプロセッサは、自ノードにおいて更新処理を実施した場合、自ノードにおける更新処理の結果を示す更新情報を他のストレージノードに送信し、
     前記更新情報を受信した他のストレージノードのプロセッサは、前記更新情報に基づいて、自ノードにおける前記更新処理について不整合が発生しているか否かを判定し、前記更新処理に不整合が発生していると判定した場合に、前記更新情報に整合するように前記更新処理を再度実施する
     請求項1に記載のストレージシステム。
    a processor of at least one storage node among the plurality of storage nodes, when performing update processing in the own node, transmits update information indicating a result of the update processing in the own node to other storage nodes;
    The processor of the other storage node that received the update information determines whether or not the update processing in its own node is inconsistent based on the update information. 2. The storage system according to claim 1, wherein when it is determined that the update information is correct, the update processing is performed again so as to match the update information.
  3.  前記複数のストレージノードのうちの少なくとも1つのストレージノードのプロセッサは、他のストレージノードにおける更新処理の結果が、自ノードにおける更新処理の結果と異なる場合に、更新処理を再度実施すべき指示を他のストレージノードに送信し、
     前記指示を受信した他のストレージノードのプロセッサは、前記更新処理を再度実施する
     請求項1に記載のストレージシステム。
    The processor of at least one storage node among the plurality of storage nodes issues an instruction to re-execute update processing when the result of update processing in another storage node is different from the result of update processing in its own node. to the storage node of
    2. The storage system according to claim 1, wherein processors of other storage nodes that have received said instruction perform said update processing again.
  4.  前記複数のストレージノードは、互いに異なる地理的位置に配置されている
     請求項1から請求項3のいずれか1項に記載のストレージシステム。
    4. The storage system according to any one of claims 1 to 3, wherein said plurality of storage nodes are located at different geographical locations.
  5.  各々が少なくとも1つのプロセッサ及び記憶装置を備えた複数のストレージノードを含むストレージシステムにおけるデータ処理方法であって、
     互いに同じオブジェクトを受信し、自ノードの記憶装置に保存された既存のオブジェクトの更新である更新オブジェクトを受信した場合、前記更新オブジェクトに基づいてオブジェクトの更新処理を、前記複数のストレージシステムの各々が備えるプロセッサが実行し、
     他のストレージノードとの間で前記更新処理に不整合が発生した場合、他のストレージノードとの間で前記更新処理が整合するように前記更新処理を再度実施する処理を、前記複数のストレージシステムのうちの少なくとも1つのストレージシステムが備えるプロセッサが実行する
     データ処理方法。
    A data processing method in a storage system comprising a plurality of storage nodes each comprising at least one processor and a storage device, comprising:
    When receiving the same object as each other and receiving an update object that is an update of an existing object stored in a storage device of the self node, each of the plurality of storage systems updates the object based on the update object. A processor comprising
    When inconsistency occurs in the update processing with other storage nodes, the plurality of storage systems perform processing for re-executing the update processing so that the update processing is consistent with the other storage nodes. A data processing method executed by a processor provided in at least one storage system of
  6.  互いに同じオブジェクトを受信し、
     自ノードの記憶装置に保存された既存のオブジェクトの更新である更新オブジェクトを受信した場合、前記更新オブジェクトに基づいてオブジェクトの更新処理を実施し、
     他のストレージノードとの間で前記更新処理に不整合が発生した場合、他のストレージノードとの間で前記更新処理が整合するように前記更新処理を再度実施する
     処理を、ストレージノードが備える少なくとも1つのプロセッサが実行するデータ処理プログラム。
    receive the same object as each other,
    When receiving an update object that is an update of an existing object stored in the storage device of the node, updating the object based on the update object,
    At least the storage node comprises a process of re-executing the update process so that the update process is consistent with the other storage node when an inconsistency occurs in the update process with another storage node. A data processing program executed by a single processor.
PCT/JP2022/002645 2021-03-16 2022-01-25 Storage system, data processing method, and data processing program WO2022196112A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023506820A JPWO2022196112A1 (en) 2021-03-16 2022-01-25

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021-042932 2021-03-16
JP2021042932 2021-03-16

Publications (1)

Publication Number Publication Date
WO2022196112A1 true WO2022196112A1 (en) 2022-09-22

Family

ID=83320265

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/002645 WO2022196112A1 (en) 2021-03-16 2022-01-25 Storage system, data processing method, and data processing program

Country Status (2)

Country Link
JP (1) JPWO2022196112A1 (en)
WO (1) WO2022196112A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007086972A (en) * 2005-09-21 2007-04-05 Hitachi Ltd Storage system, duplex control method, and program
JP2013041353A (en) * 2011-08-12 2013-02-28 Fujitsu Ltd Information processing device, storage control method, and program
JP2016526720A (en) * 2013-06-19 2016-09-05 エグザブロックス・コーポレーション Data scrubbing in cluster-based storage systems
US20170201581A1 (en) * 2016-01-11 2017-07-13 International Business Machines Corporation Concurrent file and object protocol access using space-efficient cloning
US20180020050A1 (en) * 2016-07-12 2018-01-18 International Business Machines Corporation Replication optimization for object storage environments

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007086972A (en) * 2005-09-21 2007-04-05 Hitachi Ltd Storage system, duplex control method, and program
JP2013041353A (en) * 2011-08-12 2013-02-28 Fujitsu Ltd Information processing device, storage control method, and program
JP2016526720A (en) * 2013-06-19 2016-09-05 エグザブロックス・コーポレーション Data scrubbing in cluster-based storage systems
US20170201581A1 (en) * 2016-01-11 2017-07-13 International Business Machines Corporation Concurrent file and object protocol access using space-efficient cloning
US20180020050A1 (en) * 2016-07-12 2018-01-18 International Business Machines Corporation Replication optimization for object storage environments

Also Published As

Publication number Publication date
JPWO2022196112A1 (en) 2022-09-22

Similar Documents

Publication Publication Date Title
US11620197B2 (en) Recovering error corrected data
EP3155527B1 (en) Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
JP4896438B2 (en) Efficient replica set change in distributed fault tolerant computing systems
ES2881606T3 (en) Geographically distributed file system using coordinated namespace replication
JP6084624B2 (en) Split brain tolerant failover in high availability clusters
EP3452919A1 (en) Splitting and moving ranges in a distributed system
JP4277873B2 (en) Transaction processing apparatus and transaction processing method
US10970256B2 (en) Reconciler for a distributed storage system
KR101527634B1 (en) Method and apparatus for providing sharding service
US10481833B2 (en) Transferring data encoding functions in a distributed storage network
WO2022196112A1 (en) Storage system, data processing method, and data processing program
JP2013206072A (en) Data matching system, data matching method, and data matching program
JP4563412B2 (en) Software replication
US11860828B2 (en) Methods, devices and systems for writer pre-selection in distributed data systems
JP2004334739A (en) Backup method of data, restoration method of backup data, network storage device, and network storage program
WO2022176497A1 (en) Storage system, data processing method, and data processing program
WO2022190681A1 (en) Storage system, data processing method, and data processing program
US11288004B1 (en) Consensus-based authority selection in replicated network-accessible block storage devices
US20240045777A1 (en) Processing of Data Access Requests in a Storage Network
US11269922B2 (en) Database server, database management method, and storage medium
CN117729095A (en) Data management method, storage system and related equipment
WO2020021548A1 (en) Handling failures in distributed data system
JP2019133508A (en) Distributed type configuration management apparatus, distributed type configuration management method and distributed type configuration management program
CN112698935A (en) Data access method, data server and data storage system
JP2003280933A (en) N-multiplexed system for resource management process

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22770874

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2023506820

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 22770874

Country of ref document: EP

Kind code of ref document: A1