WO2017145375A1 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
WO2017145375A1
WO2017145375A1 PCT/JP2016/055873 JP2016055873W WO2017145375A1 WO 2017145375 A1 WO2017145375 A1 WO 2017145375A1 JP 2016055873 W JP2016055873 W JP 2016055873W WO 2017145375 A1 WO2017145375 A1 WO 2017145375A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
storage node
storage
node
data block
Prior art date
Application number
PCT/JP2016/055873
Other languages
English (en)
French (fr)
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 PCT/JP2016/055873 priority Critical patent/WO2017145375A1/ja
Priority to US15/777,782 priority patent/US10394484B2/en
Priority to JP2018501544A priority patent/JP6653370B2/ja
Publication of WO2017145375A1 publication Critical patent/WO2017145375A1/ja

Links

Images

Classifications

    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • 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
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity

Definitions

  • the present invention relates to a storage system.
  • the amount of data that should be handled by the IT system is rapidly increasing, and a storage system that can cope with it has been demanded.
  • a storage system there is a distributed storage system technology in which a plurality of storage devices (including servers) are connected via a network to create a storage pool, and then distribute and process and store data. This provides scalable capacity and performance.
  • a conventional distributed storage system distributes write data received from a host to multiple storage nodes. Therefore, when the application program reads data from the distributed storage system, it is necessary to transfer the data blocks constituting the data between the plurality of storage nodes via the network. Therefore, the throughput of the network becomes a bottleneck, and the access latency to the data may increase as compared with the case where the network is not passed.
  • a typical example of the present invention is a storage system including a plurality of storage nodes connected via a network, and includes a first storage node, a second storage node, and a third storage node.
  • One storage node receives the write data of the object, the first storage node generates a plurality of distributed arrangement write data blocks from the write data, and generates a first redundant data block from the plurality of distributed arrangement write data blocks
  • the first storage node transmits each of the plurality of distributed arrangement write data blocks and the first redundant data block to different storage nodes, and the different storage nodes are the second storage node and the third storage And the first redundant data block
  • the second storage node selects a plurality of distributed arrangement write data blocks from the held distributed arrangement write data blocks, and the plurality of selected distributions.
  • the relocation destination storage node of the arrangement write data block is different, the arrangement destination of the second redundant data block generated from the plurality of selected distributed arrangement write data blocks is the third storage node, and the second storage node Generates the second redundant data block from the selected plurality of distributed arrangement write data blocks, and the second storage node converts each of the selected plurality of distributed arrangement write data blocks to the relocation destination storage node. Further, the second redundant data block is relocated to the relocation destination By arranging the storage nodes other than storage nodes, the write data of the object to the first storage node receives it is relocated to one of the plurality storage nodes.
  • the outline of Example 1 is shown.
  • the outline of Example 1 is shown.
  • the hardware structural example of a distributed storage system is shown. 1 shows an outline of a software configuration of a distributed storage system.
  • the structural example of a metadata management table is shown.
  • the structural example of a distributed data management table is shown.
  • the structural example of metadata structure T used in Example 3 is shown. 14 shows a configuration example of a copy holding node management table used in the fourth embodiment.
  • summary of the data storage process by one storage node is shown.
  • summary of a rearrangement process is shown.
  • the ladder chart of the outline of data read processing is shown.
  • summary of Example 2 is shown.
  • summary of Example 2 is shown.
  • Example 4 shows an outline of data copy processing accompanying application program / virtual machine assignment.
  • XX table various types of information may be described using the expression “XX table”, but the various types of information may be expressed using a data structure other than a table. In order to show that it does not depend on the data structure, the “XX table” can be called “XX information”.
  • the process may be described using the program as the subject, but the program is defined by being executed by the hardware itself or a processor (for example, MP (Micro Processor)) included in the hardware. Since the processing is appropriately performed using a storage resource (for example, a memory) and / or a communication interface device (for example, a port), the subject of the processing may be hardware or a processor.
  • the program source may be, for example, a program distribution server or a storage medium.
  • the storage node includes one or more storage devices that store data.
  • a storage area provided by one or more storage devices is referred to as a media area.
  • the storage device is, for example, a hard disk drive (HDD), a solid state drive (SSD), a RAID composed of a plurality of drives, or the like.
  • FIG. 1A and 1B show an outline of the present embodiment.
  • the distributed storage system includes a plurality of storage nodes (also simply referred to as nodes) connected via a network, and some of the storage nodes 20_0 to 20_3 are shown.
  • FIG. 1A shows an example of distributed arrangement processing of received data by the distributed storage system.
  • FIG. 1B shows an example of a rearrangement process for distributed data.
  • the distributed storage system manages data for each object that is logically organized data. Access to data occurs for each object. Examples of objects include normal files, archive files, backup files, objects for storing directory information, objects for managing free blocks, virtual volumes, and volume files for virtual machines. An object can also be part of a file or part of a volume.
  • the distributed arrangement process distributes the write data (which may include dummy data) of each object and redundant data generated from the write data to a plurality of storage nodes.
  • data of one or more objects distributed and arranged in a plurality of storage nodes is moved to a storage node (referred to as a local node) associated with each object.
  • the number of local nodes of one object is one or more.
  • redundant data is further generated from data of different local nodes stored in one storage node, and the storage node is different from the one storage node and is allocated to a storage node different from those local nodes. To do.
  • high reliability of the distributed storage system is achieved by the distributed arrangement processing of write data (host data) accompanied by redundant data and the rearrangement processing of write data (host data) to the local node accompanied by redundant data. High performance can be realized.
  • the distributed storage system receives write data A, B, and C from one or a plurality of hosts.
  • Write data A, B, and C are write data for A, B, and C objects (not shown), respectively.
  • the storage node that has received the write data performs data block division processing and redundant data block generation processing on the received write data.
  • the write data is divided, and a host data block (distributed arrangement write data block) having a specified division size is generated.
  • the division size is defined for each object.
  • the generated host data block may include a dummy data block.
  • redundant data blocks are generated using host data blocks by erasure coding.
  • the redundant configuration shown in FIGS. 1A and 1B includes only one redundant data block, but the number of host data blocks and redundant data blocks depends on the design.
  • host data blocks a0, a1, a2 and redundant data block Pa012 are generated from write data A.
  • host data blocks b0, b1, b2 and a redundant data block Pb012 are generated.
  • host data blocks c0, c1, c2 and a redundant data block Pc012 are generated.
  • the host data block and redundant data block generated from the same received data constitute a stripe.
  • a stripe is composed of a plurality of host data blocks and one or a plurality of redundant data blocks generated from the plurality of host data blocks.
  • the number of host data blocks and redundant data blocks depends on the design of the redundant configuration in the system. To do.
  • the host data block is generated according to, for example, an offset (intra-object address) within the object.
  • an offset intra-object address
  • the division position of the light data is calculated from the offset within the object and a specified size (division size).
  • the offset in the received data may be used to divide the received data into data blocks of a prescribed size from the beginning.
  • a host data block that is an integer multiple of the specified number depending on the redundant configuration of objects is generated from the received data.
  • the prescribed number of A, B, and C objects is 3, which matches the number of host data blocks in the redundant stripe.
  • host data blocks and redundant data blocks generated from the same received data are distributed in different storage nodes.
  • the storage node temporarily stores the data block in the cache and then stores it in the storage device.
  • the storage device is an SSD, HDD, non-volatile memory, or RAID configured with these devices, and the cache may be omitted.
  • the storage node stores data in the managed storage device, and the managed storage device is accessed without going through other storage nodes.
  • the storage device is accessed directly from the controller or connected via a switch, for example.
  • the host data blocks of received data A, B, and C are distributed and stored in storage nodes 20_0, 20_1, and 20_2. Host data blocks of the same received data are arranged in the storage nodes 20_0, 20_1, and 20_2 in order from the top. Redundant data blocks of received data A, B, and C are stored in the storage node 20_3.
  • FIG. 1A shows an example with only one redundant data block. In a configuration in which a plurality of redundant data blocks are generated, a storage node for storing each redundant data block is prepared.
  • the storage nodes 20_0 to 20_3 already store the reception data E, F, and G of the E, F, and G objects.
  • the host data blocks e0 to e2 and the redundant data block Pe012 are data blocks of the reception data E.
  • the host data blocks f0 to f2 and the redundant data block Pf012 are data blocks of the reception data F.
  • the host data blocks g0 to g2 and the redundant data block Pg012 are data blocks of the reception data G.
  • the method of distributing the host data blocks and redundant data blocks in the storage nodes 20_0 to 20_3 is the same as the received data A, B, and C.
  • a set of storage nodes for storing data blocks of objects is set in advance.
  • a set of a plurality of storage nodes that store host data blocks and one or a plurality of storage nodes that store redundant data blocks (also referred to as parity data blocks) is defined.
  • the sets of storage nodes of A to E objects are the same, and are composed of storage nodes 20_0 to 20_3.
  • a storage node (also referred to as a data node) that stores a host data block is allocated to a set of an object ID and an offset of the host data block.
  • the offset is an offset within the object or received data.
  • a node that stores redundant data blocks (referred to as a parity node) is, for example, fixed to an object. That is, the parity node is assigned only to the object ID and does not depend on the data offset (address).
  • a parity node to be stored is defined according to the type of redundant data block.
  • the parity nodes of the A to E objects are the storage node 20_3.
  • a parity node may be assigned to a set of an object ID and an offset in the object or received data.
  • the redundant data block is generated from a plurality of host data blocks to which the same parity node is assigned in the object. For example, a plurality of storage nodes are assigned to an object, and a parity node for the host data block is selected from them according to the offset of the host data block.
  • the set of distributed placement destination nodes of the data block may be specified using other algorithms. For example, by using a consistent hash algorithm such as CRUSH (Controlled Replication Under Scalable Hashing) or a distributed hash table, a set of distributed allocation destination nodes of data blocks including host data and redundant data is obtained from the object ID and the number of nodes. May be specified. By determining the distributed placement destination node from the object ID by any algorithm, the distributed placement destination node can be determined easily and appropriately.
  • CRUSH Controlled Replication Under Scalable Hashing
  • FIG. 1B shows an example of rearrangement processing of host data blocks (which may include dummy data) that are distributed.
  • host data blocks which may include dummy data
  • One or a plurality of local nodes are assigned to one object.
  • Host data blocks in which objects are distributed are stored in corresponding local nodes after rearrangement.
  • the local node of the host data block is associated with a set of object ID and offset.
  • parity nodes are assigned to one object.
  • the parity node stores redundant data newly generated in the rearrangement process. Newly generated redundant data blocks are generated from host data blocks that are stored in different local nodes and to which a common parity node is assigned. Each redundant data block is generated from a host data block stored in one storage node.
  • the parity node is assigned only to the object ID, for example, and does not depend on the data offset (address), and the parity node in the distributed arrangement process and the parity node in the rearrangement process are the same.
  • each parity node may be assigned to a set of an object ID and an offset in the object or received data.
  • the set of parity nodes in the rearrangement and the set of parity nodes in the distributed arrangement are the same or different.
  • one node configuration is associated in advance with an object group composed of a plurality of objects, and the rearrangement process is executed between data of objects having the same node configuration in the distributed arrangement process.
  • the rearrangement process is executed between data of objects having the same node configuration in the distributed arrangement process.
  • Node data for storing host data (which may include dummy data) or redundant data in the distributed arrangement processing is executed between data of objects that are common to each other.
  • the rearrangement process may be executed between data of objects having different node configurations in the distributed arrangement process.
  • the A to E objects have the same node configuration in the distributed arrangement, and the rearrangement process is executed between them.
  • new redundant data blocks are generated from the host data blocks of three objects with different local nodes.
  • the storage node 20_0 is a local node for the write data A and the write data E.
  • the storage node 20_1 is a local node for the write data B and the write data F.
  • the storage node 20_2 is a local node for the write data C and the write data G.
  • one parity node is assigned to each object, which is common to the A to E objects.
  • the storage node 20_3 stores redundant data blocks that are newly generated in data relocation. Each redundant data block is generated from host data blocks stored in different storage nodes after rearrangement.
  • a redundant data block Pabc0 is generated from the host data blocks a0, b0, and c0.
  • a redundant data block Pabc1 is generated from the host data blocks a1, b1, and c1.
  • a redundant data block Pabc2 is generated from the host data blocks a2, b2, and c2.
  • a redundant data block Pefg0 is generated from the host data blocks e0, f0, and g0.
  • a redundant data block Pefg1 is generated from the host data blocks e1, f1, and g1.
  • a redundant data block Pefg2 is generated from the host data blocks e2, f2, and g2.
  • the host data block of the A object can generate redundant data together with the host data block of any two objects other than the E object
  • the host data block of the B object can be the host of any two objects other than the F object. Redundant data may be generated along with the data block.
  • a combination of offsets of the host data block for generating the redundant data block is not limited and is arbitrary.
  • the size of the host data block is the same.
  • the sizes (partition sizes) of the host data blocks of different objects may be different.
  • the division size of a certain object may be an integer multiple of the division size of another object.
  • the redundant data PABC is composed of redundant data blocks Pabc0, Pabc1, and Pabc2.
  • the redundant data PEFG is composed of redundant data blocks Pefg0, Pefg1, and Pefg2.
  • each storage node When each storage node holds a host data block that can be relocated, it starts relocating the host data block. When the storage node holds host data blocks of the same number of parity nodes and different local nodes as required for redundant data generation, the storage node can execute the relocation processing.
  • the condition for starting the rearrangement process may include that the amount of data to be rearranged has reached a specified value.
  • the condition for starting the rearrangement process may be that two stripes of host data have been stored in one storage node.
  • each storage node generates redundant data from the host data block to be relocated.
  • the storage node 20_0 generates a redundant data block Pabc0 from the host data blocks a0, b0, and c0, and generates a redundant data block Pefg0 from the host data blocks e0, f0, and g0.
  • the storage node 20_1 generates a redundant data block Pabc1 from the host data blocks a1, b1, and c1, and generates a redundant data block Pefg1 from the host data blocks e1, f1, and g1.
  • the storage node 20_2 generates a redundant data block Pabc2 from the host data blocks a2, b2, and c2, and generates a redundant data block Pefg2 from the host data blocks e2, f2, and g2.
  • one storage node selects a combination of A, B, and C objects and a combination of E, F, and G objects, and another one storage node selects a combination of A, F, and C objects and E, B, and A combination of G objects may be selected.
  • the storage nodes 20_0 to 20_2 collectively transmit the generated redundant data blocks to the storage node 20_3, and further transmit the host data blocks of the same local node to the local node. This reduces the number of data communications on the network.
  • the storage node 20_0 includes the redundant data blocks Pabc0 and Pefg0 in one communication data unit and transmits them to the storage node 20_3. Also, the storage node 20_0 includes the host data blocks b0 and f0 in one communication data unit and transmits them to the storage node 20_1, and includes the host data blocks c0 and g0 in one data unit and transmits to the storage node 20_2. To do.
  • the local node updates the corresponding object held by the received host data block.
  • the storage nodes delete host data blocks that are no longer needed because redundancy is secured after transmission to other storage nodes in the rearrangement process. For example, after the host data block is rearranged and the redundant data block generated for the rearrangement from the host data block is stored in the parity node, the old data of the host data block is deleted.
  • the parity node receives redundant data from another storage node, and then deletes redundant data blocks that are no longer needed because redundancy is ensured.
  • the storage node 20_3 deletes the redundant data blocks Pa012, Pb012, Pc012, Pe012, Pf012, and Pg012. For example, after all the host data blocks are rearranged by the redundant data block generation element and new redundant data blocks of all the host data blocks are stored, the redundant data block is deleted.
  • the relocation process can achieve local read and improve performance without transferring data blocks in the network between storage nodes when an application (host) needs object data.
  • FIG. 2 shows a hardware configuration example of the distributed storage system.
  • the distributed storage system includes a plurality of storage nodes 20_0 to 20_N and a management system 50.
  • the storage nodes 20_0 to 20_N are connected to each other via the internal network 102 and further connected to the management system 50.
  • the storage nodes 20_0 to 20_N are connected to one or a plurality of hosts 10 (only one host is illustrated) via the data network 100.
  • One host 10 is, for example, a server computer, a branch file storage device, a PC, a smartphone, or the like.
  • Management system 50 is composed of one or a plurality of computers.
  • the management system 50 includes, for example, a server computer and a terminal that accesses the server computer via a network.
  • the administrator manages and controls the storage nodes 20_0 to 20_N via the display device and the input device of the terminal.
  • the internal network 102 and the data network 100 are, for example, a WAN (Wide Area Network), a LAN (Local Area Network), the Internet, a SAN (Storage Area Network), a public line, or a dedicated line.
  • the internal network 102 and the data network 100 may be the same network.
  • Storage node can have a general-purpose computer configuration.
  • the storage node 20_0 includes a memory 21, an auxiliary storage device 22, a processor 24, an interface (I / F) 26 with a data network, and an I / F 28 between the auxiliary storage device 22 and other devices.
  • the memory 21, the processor 24, the I / F 26, and the I / F 28 are connected to the bus 29.
  • Both the memory 21 and the auxiliary storage device 22 are storage devices managed by the processor 24.
  • the auxiliary storage device 22 may be a direct access storage or may be accessed via a switch device. Other storage nodes may have a similar configuration.
  • the data stored in the memory 21 is typically data transferred via the network 100 or 102 or data loaded from the auxiliary storage device 22.
  • the auxiliary storage device 22 is composed of, for example, one or more HDDs, SSDs, or RAIDs. In addition to storing the rearranged object or redundant data, the auxiliary storage device 22 also provides an area for temporarily storing the object and control information before the rearrangement process ends.
  • the memory 21 is used not only for storing information read from the auxiliary storage device 22 but also as a cache memory for temporarily storing data received from the host 10.
  • the memory 21 is further used as a work memory for the processor 24.
  • a volatile memory such as a DRAM or a non-volatile memory such as Flash Memory is used.
  • the memory 21 can read and write data faster than the auxiliary storage device 22.
  • the auxiliary storage device 22 may be omitted.
  • the processor 24 operates in accordance with programs, calculation parameters, etc. stored in the memory 21.
  • the processor 24 operates as a specific functional unit by operating according to a program.
  • the processor 24 operates in accordance with a data division / reconstruction program 220 described later, thereby functioning as a data division / reconstruction unit. The same applies to other programs.
  • FIG. 3 shows an outline of the software configuration of the distributed storage system.
  • the storage nodes 20_0 to 20_N have the same software configuration.
  • the memory 21 stores a data division / reconstruction program 220, a redundant data generation / loss data recovery program 221, a metadata information distribution management program 222, and a metadata management table T20. These are loaded from the auxiliary storage device 22, for example.
  • the metadata management table T20 indicates storage destination storage nodes of the host data block of the received data of the object and one or more redundant data blocks thereof. These are included in the node configuration information of the object. Instead of the metadata management table T20, the metadata information distribution management program 222 may generate information necessary for determining the storage destination of each data block by calculation based on CRUSH or the like.
  • the metadata management table T20 of the storage nodes 20_0 to 20_N manages information in a distributed manner according to the object ID.
  • the metadata information distribution management program 222 calculates one storage node ID from the object ID and obtains the node configuration information for the object ID from the storage node in order to obtain the node configuration information of the object that has received the data. To do. Distributed management reduces storage resources required to hold metadata information.
  • the metadata management table T20 of each storage node may store all object information.
  • the metadata information distribution management program 222 may obtain the node configuration information for the object ID by calculation without using the metadata management table T20.
  • the host 10 transmits the object write data to the distributed storage system via the network 100.
  • the storage node 20_0 receives write data.
  • the metadata information distribution management program 222 acquires information corresponding to the object ID of the received data from the metadata management table T20 stored in any storage node.
  • the storage node 20_0 determines a plurality of storage nodes that store the received data and the redundant data from the object ID, offset, and metadata of the received data.
  • the node configuration information associated with the object ID indicates a plurality of storage node IDs that store object data (host data) and redundant data.
  • a storage node that stores a host data block is associated with a set of an object ID and an offset of the host data block.
  • the storage node that stores the redundant data block is associated with only the object ID or a set of the object ID and the offset of the host data block.
  • One storage node is defined to store a host data block of multiple objects or a redundant data block of multiple objects.
  • the data division / reconstruction program 220 generates a host data block of a prescribed size from the received data. If necessary, dummy data is added.
  • the redundant data generation / loss data recovery program 221 generates redundant data from the generated host data block.
  • the data division / reconstruction program 220 distributes the generated data blocks to the determined plurality of storage nodes via the network 102. Along with the host data block, address information including the object ID and offset is transferred. The storage node that has received the data block transferred in the distributed arrangement returns a response, and further stores the received data in the auxiliary storage device 22. Thereafter, the data division / reconstruction program 220 that has received data from the host 10 returns a completion response to the host 10 via the network 100.
  • the metadata information distribution management program 222 updates the management information of the corresponding object.
  • the management information includes information of a metadata management table T22 and a distributed data management table T40 described later.
  • the metadata information distribution management program 222 notifies the update information to the storage node that holds the management information of the object, and the metadata information distribution management program 222 of the storage node that received the notification updates the table (including creation). To do.
  • the metadata information distribution management program 222 determines that the distributed data necessary for starting the rearrangement process is stored, the metadata information distribution management program 222 starts the rearrangement process.
  • the metadata information distribution management program 222 performs the rearrangement processing after the host data blocks having the same number of parity nodes, different local nodes, and the number necessary for redundant data generation (the number satisfying the specified conditions) are stored. Execute. Redundant data is generated from multiple host data blocks of one or more objects.
  • the start of the rearrangement process may be a condition that the amount of data to be rearranged reaches a specified amount as described above.
  • the rearrangement process may be performed only between objects having the same configuration nodes in the distributed arrangement as in the example of FIG. 1B.
  • the metadata information distribution management program 222 determines one or a plurality of objects to be rearranged, and determines the information on the determined objects as storage nodes associated with the objects, specifically, distributed host data or distribution of the objects. The metadata information distribution management program 222 of the storage node storing the redundant data and the local node of the object is notified.
  • a storage node that stores distributed host data or distributed redundant data of an object is a configuration node of the object in a distributed arrangement, and is included in the metadata management table T20.
  • the redundant data generation / loss data recovery program 221 In each storage node that performs relocation processing, the redundant data generation / loss data recovery program 221 generates redundant data for relocation from the host data block held in the own node.
  • the data division / reconstruction program 220 collects host data blocks or redundant data blocks to be rearranged for each storage node and transfers them to each storage node through a single connection.
  • the data division / reconfiguration program 220 updates the object of the auxiliary storage device 22 with the host data received from another storage node (local node) or stores redundant data in the auxiliary storage device 22 (parity node).
  • the data division / reconstruction program 220 of each storage node related to the relocation mutually confirms that the data transfer (data relocation) between all the related storage nodes of the object selected for relocation has been completed. If confirmed by notification, the management information of each object subjected to the rearrangement process is updated via the metadata information distribution management program 222. The data division / reconstruction program 220 deletes the distributed arrangement data that is no longer necessary for the data rearrangement.
  • the mutual notification method between distributed storages is as follows. (1) When a certain node completes the rearrangement process, a completion notification is transmitted to each related node. (2) For example, a main node (for example, a parity node) that performs rearrangement state management is determined, and the main node manages the state. For example, when a certain node completes the rearrangement process, the completion notification is sent to the main node. When the main node receives completion notifications from all the nodes related to the rearrangement, it notifies the old data deletion command to each node.
  • a main node for example, a parity node
  • This configuration enables reallocation of data while maintaining reliability and improves performance by local read.
  • the metadata information distribution management program 222 and the data division / reconfiguration program 220 may perform a rebalancing process in accordance with the deletion / addition of a storage node.
  • FIG. 4A and 4B show examples of management information in the distributed storage system.
  • FIG. 4A shows a configuration example of the metadata management table T20.
  • the metadata management table T20 includes an object ID column C2, a priority column C4, a configuration node column C6, a rearrangement processing status column C7, and a division size column C8.
  • the object ID column C2 stores the object ID of the object managed by the table.
  • information on only a part of the objects stored by the system is stored in one metadata management table T20.
  • the priority column C4 indicates the priority corresponding to the object ID (column C2). The priority is set in advance by the user via the management system 50, for example.
  • the configuration node column C6 includes information on each storage node that stores host data or redundant data in the distributed processing of the object identified by the object ID (column C2), and information on each storage node that stores the object or redundant data after rearrangement. Indicates. If the parity node depends on the offset, that information is also shown.
  • the rearrangement processing state column C7 indicates the rearrangement processing state of the object identified by the object ID (column C2).
  • the state is either not yet being relocated or completed.
  • the state “not yet” indicates a state where rearrangement is not performed.
  • the state “during rearrangement” indicates that a rearrangement process is currently in progress.
  • the state “completed” indicates a state where the rearrangement process is completed.
  • the rearrangement processing state may be managed using a bitmap.
  • the division size column C8 indicates a division size when the object identified by the object ID (column C2) is divided and distributed to a plurality of storage nodes. That is, it indicates the size of the host data block in the distributed processing. A size of 0 indicates no division.
  • the divided size of the object is a value selected from a plurality of specified values, it may be managed using a bitmap.
  • FIG. 4B shows a configuration example of the distributed data management table T40.
  • the distributed data management table T40 is created for each object being rearranged, and, for example, the storage node in charge of the object is held together with the metadata management table T20.
  • the distributed data management table T40 holds management information of data being rearranged in the object.
  • the distributed data management table T40 has a range (LBA) column C22, a configuration node column C24, and a division size column C26.
  • the range (LBA) column C22 indicates an address range (LBA) in the object of the data being rearranged.
  • the configuration node column C24 indicates the storage node that stores the data being relocated.
  • the division size column C26 indicates the division size (host data block size) of the data being rearranged.
  • FIG. 5A and 5B show examples of management information in the distributed storage system.
  • FIG. 5A shows a configuration example of the metadata structure T27 used in the third embodiment.
  • FIG. 5B shows a configuration example of the copy holding node management table T28 used in the fourth embodiment. Details of the metadata structure T27 and the copy holding node management table T28 will be described in the corresponding embodiment.
  • FIG. 6 shows a flowchart of an outline of data storage processing by one storage node.
  • the storage node stores the data received from the host 10 distributed among a plurality of nodes.
  • the storage node that has received the data from the host 10 determines a storage destination node for the received data (S11).
  • the metadata information distribution management program 222 specifies a storage node that stores management information including the metadata management table T20 of the object from the object ID of the received data.
  • the metadata information distribution management program 222 acquires information on the constituent nodes and information on the division size in the distributed processing from the identified storage node.
  • the metadata information distribution management program 222 determines a storage node for storing host data and redundant data from the acquired information.
  • the metadata information distribution management program 222 may calculate the configuration node from the object ID of the received data based on an algorithm such as CRUSH.
  • the metadata information distribution management program 222 sets the relocation processing state of the object of the received data to “completed”. Set to “not yet”. The metadata information distribution management program 222 notifies the determination result of the rearrangement processing state to the storage node holding the management information of the object.
  • the division size is large, there is often a single read access within the division size, and relocation for local reads is not necessary. System load is reduced by omitting relocation processing. It may be determined that the rearrangement process is necessary regardless of the division size.
  • the data division / reconstruction program 220 divides the received data according to the division size of the object, and generates a plurality of host data blocks (S12).
  • the data division / reconstruction program 220 generates dummy data blocks by adding dummy data as necessary, or adds dummy data blocks.
  • the number of generated host data blocks is an integral multiple of the number of data nodes in the redundant configuration.
  • the redundant data generation / loss data recovery program 221 generates redundant data (S13).
  • the redundant data generation / loss data recovery program 221 selects a specified number of host data blocks in the order of addresses, and generates a specified number (1 or more) of redundant data blocks therefrom. Redundant data blocks are generated from host data blocks stored in different storage nodes.
  • the data division / reconstruction program 220 distributes the host data block or the redundant data block to each of the storage destination nodes that are the configuration nodes of the object (S14). Specifically, the data division / reconstruction program 220 transmits a data block to each corresponding storage node, and the destination data division / reconstruction program 220 stores the received data in the auxiliary storage device 22. Return completion to the source storage node.
  • the metadata information distribution management program 222 of the storage node that has received the data from the host 10 updates (creates) the distributed data management table T40. Including). Specifically, the metadata information distribution management program 222 transmits the address information of the newly generated host data block and the information of the storage destination node to the storage node that manages the distributed data management table T40 of the object. The transmission destination metadata information distribution management program 222 updates the distribution data management table T40 of the object in accordance with the received information.
  • FIG. 7 shows a flowchart of the outline of the rearrangement process.
  • FIG. 7 shows the processing of one storage node.
  • the metadata information distribution management program 222 determines object candidates for data rearrangement (S21). For example, the metadata information distribution management program 222 selects all the objects of the host data block held by the storage node.
  • the metadata information distribution management program 222 determines whether or not there is a data set (host data block) necessary for data relocation of each selected object (S22).
  • Host data blocks required for relocation depend on the redundant configuration and preset conditions.
  • the host data block necessary for the rearrangement is a host data block that can generate redundant data and has a predetermined amount or more. The data amount condition may not be set.
  • the data host block necessary for generating redundant data is a set of host data blocks of the same parity node and different relocation destination nodes, and the number satisfies the number of redundant data nodes.
  • a set of objects for generating redundant data may be set in advance, and objects for generating redundant data may be limited to objects having the same node configuration in a distributed arrangement. For example, in the example of FIG. 1B, redundant data may be generated within a set of A, B, C, E, F, and G objects.
  • step S22 If there is no host data block necessary for relocation of any object (S22: NO), the metadata information distribution management program 222 waits for the host data blocks necessary for relocation to be prepared. Return to step S21. When the host data block for executing the rearrangement of any object is held (S22: YES), the flow proceeds to step S23A.
  • the metadata information distribution management program 222 calculates the number N of relocations executed in the current processing flow for each object (S23).
  • One rearrangement for one object is one stripe rearrangement, in which redundant data is generated from the host data block and stored in a plurality of local nodes and one or more parity nodes.
  • the number of times the object rearrangement is executed is the maximum number of times that the host data is transmitted from the storage node to one local node of the object.
  • the metadata information distribution management program 222 determines the number of transmissions of the host data of each object according to a preset condition with reference to status information such as the amount of transmission data and / or the current processing load.
  • the metadata information distribution management program 222 may determine whether any number N has reached a specified number (is greater than or equal to the specified number).
  • the specified number is a value larger than 1 and may be 2.
  • the distributed storage system may sequentially validate the target data for the rearrangement process after transmitting all the target data before rearrangement.
  • the metadata information distribution management program 222 transmits an instruction to validate the block along with the transmission of the host data block, and the local node follows the instruction.
  • the metadata information distribution management program 222 changes the rearrangement state of the object to be rearranged to “rearranged” in the metadata management table T20.
  • the notification is made from the node that has decided to execute the relocation to the management storage node that holds the management information of the relocation target object.
  • the metadata information distribution management program 222 determines whether or not the relocation count N of each relocation target object is greater than 0 (S24). If the number N of all objects is 0 (S34: NO), the flow proceeds to step S33. If the number N of any object is greater than 1, the flow proceeds to step S25.
  • the redundant data generation / loss data recovery program 221 creates redundant data from host data blocks of the same or different objects that are stored in the storage node and satisfy the requirements for redundant data generation (S25).
  • a redundant code block is generated from a prescribed number of host data blocks in which the generated parity data is stored in the same parity node and the local nodes stored after the rearrangement are different. It may be limited to a set of host data blocks of the same configuration node in a distributed arrangement, and redundant data may be generated only between predetermined objects.
  • the data division / reconstruction program 220 determines transmission data for each destination node (S26), and transmits the data collectively to each destination node (S27). As described above, the amount of data to be collected may be determined according to the data size and processing load. Object data (host data) is transmitted to the local node, and redundant data is transmitted to the parity node. The storage node that has received the data stores the received data in the temporary area (S28). The temporary area may be on the memory 21 or a temporary storage area on the auxiliary storage device 22.
  • the data division / reconfiguration program 220 completes the related storage node, specifically, the configuration node (metadata) of each object that executed the rearrangement. (Indicated in the management table T20).
  • the data division / reconfiguration program 220 confirms that all the storage nodes related to the rearrangement have received the rearranged data by the notification from all the storage nodes related to the rearrangement (S29), and is rearranged.
  • the old data is deleted (S30). Thereby, the redundancy of data in the rearrangement process is maintained.
  • the mutual notification method between the distributed storages is as described above.
  • the data division / reconstruction program 220 stores the data stored in the temporary area in the area of the auxiliary storage device 22 (S31).
  • the host data is stored at the storage location of the old data. This step is not necessary when the temporary area is continuously used.
  • the data division / reconstruction program 220 updates the distributed data management table T40 of each object that has been rearranged.
  • the metadata information distribution management program 222 notifies the information of the rearranged data to the management storage node that holds the distributed data management table T40 of the object, and the metadata information distribution management program 222 of the management storage node receives
  • the data storage position information of the distributed data management table T40 of the object is updated according to the data (S32).
  • the distributed data management table T40 from which all entries have been deleted is deleted. Thereafter, the sequence returns to S23.
  • step S24 the metadata information distribution management program 222 manages the storage node that manages the distributed data management table T40 of each object that has been relocated. Notifies the end of the rearrangement.
  • the metadata information distribution management program 222 of the node in charge of management receives notification of completion of rearrangement from all the related nodes, it updates the information in the metadata management table T20 of the object (S33).
  • the value of the rearrangement processing status column C7 is updated to “Done”.
  • the mutual notification method between the distributed storages is as described above.
  • object data is reconstructed from the host data block, and data protection by redundant data is performed between different objects.
  • FIG. 8 shows a ladder chart of the outline of the data read process.
  • the metadata information distribution management program 222 of the host 10 or the receiving node that has received the read request determines the object ID from the read request, and determines the management node that holds the management information of the object.
  • the receiving node transfers the designated object and address of the read request to the management node, and inquires about the storage destination information of the designated address (S40).
  • the management node refers to the distributed data management table T40 of the specified object and, if present, the metadata management table T20, and identifies the storage node storing the data at the specified address.
  • the management node returns the specified storage node information to the receiving node (S42).
  • the receiving node requests data transfer to the designated storage node by designating the object ID and address (S44, S45).
  • the storage node that has received the data transfer request returns the requested data to the receiving node (S45, S47).
  • the receiving node responds to the host 10 with data for the read request, and the read process is completed. Since data is stored in a specific local node by relocation processing, the number of transfers between nodes and the amount of transfer data at the time of a read request are reduced, and data read performance can be improved.
  • the metadata information distribution management program 222 determines a node that stores data after the recovery processing of the node where the failure has occurred. Thereafter, the data division / reconstruction program 220 performs data acquisition and data recovery in cooperation with the redundant data generation / loss data recovery program 221, and stores the recovered data in the determined storage destination node. Thereafter, the metadata information distribution management program 222 updates the storage destination node information and ends the failure recovery processing.
  • Embodiment 2 reduces the overhead associated with the rearrangement process by selecting an object to which the data rearrangement process is applied. In the following, differences from the first embodiment will be mainly described.
  • FIG. 9A and 9B show an outline of the present example.
  • the objects for which data reconstruction processing is performed are limited.
  • B, E, and G objects are selected as targets for rearrangement processing.
  • the host data blocks of A, C, and F objects are not relocated.
  • FIG. 10 shows a detailed flowchart of step S21 in the flowchart of FIG. 7 in the present embodiment.
  • step S21 a candidate object to be rearranged is selected.
  • the metadata information distribution management program 222 refers to the priority column C4 and the rearrangement processing state column C7 of the metadata management table T20, the rearrangement processing state is “not yet”, and the priority is The highest object is selected (S51).
  • Other selection criteria by priority may be used. For example, an object whose priority has reached a specified level may be selected.
  • the metadata information distribution management program 222 selects an object whose relocation processing state is “not yet” and whose access frequency exceeds a specified value (S52).
  • the access frequency of an object is managed by, for example, a storage node that holds management information of the object. Other selection criteria depending on access frequency may be used. For example, an object having the highest access frequency may be selected.
  • the access frequency range is not a whole object but a limited range in the object, only data in an address range with a high access frequency may be selected as a relocation candidate.
  • An object including the range is a rearrangement candidate object.
  • the distributed storage system performs the following procedure. (1) The rearrangement processing state of the metadata management table T20 of the corresponding object is set during rearrangement. (2) A target data relocation process is executed. The distributed data management table T40 is created and updated. (3) Even after the rearrangement is completed, the rearrangement state of the metadata management table T20 is not changed and is maintained.
  • the arrangement method differs only for a part of the object, it can be managed by the distributed data management table T40.
  • This process is particularly effective when the size of the object is very large and only a part of the data portion needs to be rearranged.
  • the overhead associated with the rearrangement process is reduced by selecting the object to which the data rearrangement process is applied or the data in the object. Further, by selecting a candidate object to be relocated based on the priority or access frequency of data, it is possible to efficiently perform the relocation process and improve performance.
  • the storage node has a write-once function for adding write data (update data) without deleting old data and managing data update using metadata.
  • the distributed storage system improves the write performance by generating redundant data by full stripe and performing distributed arrangement (full stripe write).
  • FIG. 11 shows an outline of this embodiment. Normally, when a partial update occurs in a redundant stripe, it is necessary to update the old and new data and the related parity for the part where the update has occurred. As a result, network communication between storage nodes occurs each time a data block is transferred, and the write performance is degraded.
  • the distributed storage system of this embodiment When the distributed storage system of this embodiment receives write data, it assumes that the other data constituting the stripe is 0 data (an example of dummy data) and performs full stripe write.
  • the received data 151 of the A object includes an a0 ** update data block 130 and an a2 * update data block 132. If the received data 151 is less than the number of nodes at the distribution destination, a 0 data block 131 is assumed, and a Pa012 ** redundant data block 133 is generated from the data blocks 130, 131, and 132.
  • the 0 data block used to generate redundant data is not transferred to the responsible storage node, but is notified only that 0 data has been newly written to the responsible storage node.
  • the storage node 20_0 does not transfer the 0 data block 131 to the storage node 20_1, but notifies that the 0 data has been written to the address.
  • the responsible storage node 20_1 updates only the metadata of the address.
  • the 0 data in this process is data that is temporarily used for filling a hole for realizing a full stripe write.
  • Each storage node does not actually store 0 data in the storage area, but uses a bit flag or the like to manage that it is a temporary 0 area in the metadata for managing the user data position.
  • Data consistency is maintained by storage node log write.
  • the log write additionally writes update data and update metadata.
  • the update point at which additional writing is performed is called a checkpoint.
  • the log write stores update data of some or all checkpoints selected from past checkpoints as a snapshot. As a result, snapshots of the update data are automatically and continuously generated. When a new checkpoint is set, the log write increments a checkpoint number that identifies the checkpoint.
  • Log write when updating data, does not overwrite the update data on the data on the storage medium corresponding to the update location of the data, and writes the update data to another area on the storage medium area. Thereby, the data of the arbitrary checkpoint can be restored.
  • the distributed storage system sends the storage node 20_0 to 20_3 to the a0 update data block 110, the a1 update data block 111, the a2 update data block 112, and the Pa012 redundant data block. 113 are distributed.
  • a0 * update data block 120 and a1 * update data block 121 which are update data of a0 data block 110 and a1 data block 111, are written from the host.
  • the distributed storage system assumes that the 0 data block 122 has been written, and creates a Pa012 * redundant data block 123 from the data blocks 120, 121, 122.
  • the distributed storage system stores the data blocks 120, 121, and 123 in the storage nodes 20_0, 20_1, and 20_3.
  • the distributed storage system assumes that 0 data block 122 has been written to storage node 20_2.
  • a0 ** update data block 130 and a2 * update data block 132 are written from the host.
  • the distributed storage system assumes that 0 data block 131 has been written, and creates Pa012 ** redundant data block 133 from data blocks 130, 131, 132.
  • the distributed storage system stores the data blocks 130, 132, and 133 in the storage nodes 20_0, 20_2, and 20_3.
  • the distributed storage system assumes that 0 data block 131 has been written to the storage node 20_1.
  • the distributed storage system asynchronously regenerates redundant data from the latest data (a0 ** data block 130, a1 * data block 121, a2 * data block 132).
  • the number X of checkpoints for performing this asynchronous processing is 2 from the previous checkpoint in which redundant data was generated from the latest data.
  • Checkpoint N-2 is a checkpoint in which redundant data is generated from the latest latest data. Therefore, checkpoints N-1 and N are targets for generating redundant data.
  • the storage node 20_1 in order to update Pa012 ** of the storage node 20_3 with the a1 * data block at the checkpoint N-1, the storage node 20_1 transfers the copy 141 of the a1 * data block to the storage node 20_3.
  • the Pa012 *** redundant data block 153 is redundant data generated from the a1 * data block 141 and the Pa012 ** redundant data block 133.
  • the distributed storage system generates the Pa012 *** redundant data block 153, writes it in the auxiliary storage device 22, and deletes unnecessary data regarding the checkpoints N-1 and N. With the above procedure, redundant data of the latest data can be regenerated while maintaining reliability. Note that the distributed storage system executes the same process as the A object for the C object.
  • the distributed storage system of this embodiment when the update data is distributed and arranged, the data that is insufficient to form the stripe is assumed to be 0 data, and the full stripe write is performed. Thereafter, the distributed storage system generates redundant data of the latest data in asynchronous processing, thereby reducing data communication between storage nodes accompanying the update of redundant data and improving performance.
  • FIG. 12 shows an outline of the software configuration of the distributed storage system in this embodiment.
  • the difference from the first embodiment and the second embodiment is an additional writing program 225.
  • the additional writing program 225 performs additional writing when writing data to the storage device.
  • the metadata structure T27 for additional writing in FIG. 5A is metadata for managing the data additional writing destination address in the additional writing program 225.
  • the additional write metadata structure T27 is prepared and held for each storage node.
  • the metadata structure for additional writing T27 has a checkpoint number column C46, a flag column C47, and an address column C48.
  • the checkpoint number column C46 stores a checkpoint number when data is written.
  • the flag column C47 stores a bitmap indicating whether the area is a zero area, a sparse area, temporary writing, or the like.
  • the zero area is an area where the data is zero, and the data may not actually be written as zero data.
  • the sparse area is an area where no data is written.
  • the temporary writing area is as described above.
  • the address column C48 stores an address where data is written.
  • the flag column C47 indicates a temporary write flag and a zero area flag.
  • the address column C48 holds an address before temporary writing by zero padding.
  • the temporary write and zero area flag is a bit flag for determining whether or not it is the latest data at the time of asynchronous write processing, and zero data is not actually written. Therefore, the address column C48 holds an address before temporary writing by zero padding and maintains data consistency.
  • the additional writing program 225 determines whether or not temporary 0 data is necessary to generate redundant data, and adds 0 data if necessary. To generate redundant data. In the data block distribution and arrangement step S14, the additional write program 225 notifies the storage node assigned to the temporary 0 data area of the 0 data information.
  • FIG. 13 is a flowchart showing an outline of redundant data regeneration processing using the latest data performed asynchronously.
  • the write-once program 225 of each storage node that holds the host data block determines that the difference between the current checkpoint (CP) number and the CP number for which redundant data generation has been completed between the latest data at that time is the asynchronous process. It is determined whether the number of checkpoints X to be implemented has been reached (S71).
  • X is a tuning parameter, and is preset from the management system 50, for example. As X is larger, the number of times asynchronous processing runs is reduced and the system load is reduced. On the other hand, the period during which the system holds temporary zero padding information becomes longer. X may be dynamically changed so that the redundant data regeneration process is performed when the system load or the network load is light. When the redundant data regeneration process is executed immediately, the value of X is set to 0.
  • step S71 If the determination result in step S71 is NO, the additional write program 225 does not execute asynchronous processing. When the determination result of step S71 is YES, the additional writing program 225 proceeds to step S72.
  • the parity node write-once program 225 selects one stripe (checkpoint) from among a plurality of checkpoints holding the stripe in the temporarily written state, and determines the checkpoint number (S72). The determined stripe is notified to the related data node. For example, the write-once program 225 selects a stripe column that minimizes data movement between nodes for the update to the latest redundant data. In this example, the stripe holding the most recent data block in the stripe is selected. This minimizes network data transfer associated with redundant data update.
  • the additional writing program 225 for some data nodes generates intermediate redundant data (S74). This step is performed by data nodes that do not contain the latest host data block in the selected stripe.
  • the additional write program 225 selects a data block for updating redundant data from host data blocks at different checkpoints.
  • the write-once program 225 selects the latest host data block and the host data block in the selected stripe. If the host data block in the selected stripe is 0 data, only the latest data block is selected.
  • the redundant data generation / loss data recovery program 221 generates intermediate redundant data from the selected host data block (S74). If the host data block in the selected stripe is 0 data, the intermediate redundant data is the latest host data block.
  • the data division / reconstruction program 220 transfers the intermediate redundant data to the parity node (S75).
  • the data redundancy / reconstruction program 220 cooperates with the redundant data generation / loss data recovery program 221 and the redundancy of the stripe determined in step S72.
  • New redundant data is generated from the data (S76).
  • each additional write program 225 in the stripe deletes the old host data that is no longer necessary (S77).
  • Each additional write program 225 of the stripe updates the latest inter-data redundant data generation CP number with the current CP number in the additional write metadata structure T27 and completes the process.
  • each storage node performs update data write-once processing.
  • each storage node selects the latest data when generating redundant data between related host data blocks. Since the update of redundant data is also completed by the rearrangement process, the redundant data regeneration process using the latest data shown in FIG. 13 is also completed.
  • an application program (application) or a virtual machine (VM) is arranged in an object rearrangement destination storage node or a storage node that holds copy data of an object, and when it is not assigned to these nodes
  • VM virtual machine
  • Storage nodes that execute applications / VMs can be dynamically allocated.
  • the application / VM may be assigned to a node that holds data, or may be assigned to other nodes.
  • FIG. 14 shows a system configuration diagram when assigning applications / VMs.
  • each storage node holds a resource management (allocation / release) program 225, a copy release program 228, and a copy holding node management table T28.
  • the application / VM acquires the divided data distributed to the plurality of storage nodes via the internal network 102, and acquires the original object or a part thereof. Reconfigure. This means keeping a copy of the original object or part of it.
  • an application / VM allocation destination node for example, a local node of data used by the application / VM is selected.
  • the distributed data rearrangement process uses the existence of a reconfigured object by the application / VM.
  • steps S26 to S31 in FIG. 7 data movement for rearrangement is performed except for data reconfigured by the application / VM.
  • the reconfigured data is managed by the copy holding node management table. That is, when creating a copy of data, the information of the copy holding node is registered in the copy holding node management table, and the copy holding node management table is referred to and used when performing the relocation processing. Thereby, the network communication data amount between nodes accompanying a rearrangement process is reduced. If copy data already exists, an application / VM is assigned to the copy data holding node, and the performance is improved by not moving the data.
  • FIG. 5B shows a copy holding node management table T28.
  • the copy holding node management table T28 is created for each object that holds a copy. For example, the storage node in charge of the object holds it together with the metadata management table T20.
  • the copy holding node management table T28 holds a copy holding node for each data block in the object.
  • the copy holding node management table T28 has a range (LBA) column C42 and a copy destination configuration node column C44.
  • the range (LBA) column C42 indicates the address range (LBA) of the data block copied to another node.
  • the copy destination configuration node column C44 indicates a storage node that holds a copy of the data block.
  • the distributed storage system refers to the copy holding node management table T28 when allocating the application / VM, preferentially allocates the application / VM to the storage node where the copy exists, and improves the performance by local read.
  • a case where an application / VM is assigned to a storage node for which no copy exists can be considered. For example, this is a case where resources such as CPU and memory of a node that holds data and a copy thereof are few.
  • data is copied from the data holding node to the node to which the application / VM is assigned according to the access of the application / VM.
  • data copy range address
  • data copy is performed. This speeds up data copying.
  • data of an object having a high priority may be copied with priority.
  • FIG. 15 shows a flowchart of an outline of data copy processing accompanying application / VM allocation.
  • the resource management (allocation / release) program 225 of the plurality of storage nodes cooperates to determine an allocation node (S61). The highest priority in selecting the allocation node is the local node. When it is determined that the allocation to the local node is inappropriate, another storage node is selected.
  • the other storage nodes to be selected are storage nodes with sufficient resources.
  • the resource is, for example, a CPU, a memory, and / or a communication interface, and the selection is based on a comparison result between their utilization rate and a threshold value.
  • the allocation request includes information on an object referred to by the application / VM.
  • the resource management (allocation / release) program 225 of the node that has received the application / VM allocation request uses the copy holding node management table T28 to determine whether the application / VM allocation destination node is a data holding node including a copy. Confirm (S62). If the confirmation result in step S62 is YES, the resource management (allocation / release) program 225 allocates the application / VM to the copy holding node (S64) and ends the process.
  • step S62 If the confirmation result in step S62 is NO, the resource management (allocation / release) program 225 allocates the application / VM to the new node (S63), refers to the metadata management table T20, and copies between objects that require copy processing. Is determined (S65).
  • the copy release program 228 determines the data copy range for each data block that needs to be copied in consideration of the resource usage status between the copy holding nodes and / or the network load (S66). For example, the ratio of each storage node is determined from the CPU usage rate, memory usage, and / or network load of each storage node. According to this ratio, the data copy range (copy data amount) of each storage node is determined.
  • the copy release program 228 performs data copy processing (S67).
  • the copy release program 228 adds a new node to the object ID in the copy holding node management table T28 and completes the process.
  • the copy release program 228 deletes copy data using an algorithm such as LRU. At this time, the node ID is deleted from the copy holding node management table T28, and when all the copies are lost, the entry of the object ID is deleted first, and then the data is deleted.
  • the allocation of the application / VM is allocated to the node that has performed the rearrangement process or the storage node that holds the copy data, and if the allocation is not performed to the storage node, the data copy is performed. Execute after determining the data copy range from the copy holding node. Furthermore, by considering the priority for each object, it is possible to avoid a decrease in performance of an object having a high priority.
  • the data copy is taken into consideration, and the data movement at the time of the high-reliability data relocation of the copy data is stopped, thereby avoiding the network load at the time of high-reliability data relocation.
  • the read performance of the application / VM is improved.
  • the present invention is not limited to the above-described embodiments, and includes various modifications.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • each of the above-described configurations, functions, processing units, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, or an SSD, or a recording medium such as an IC card or an SD card.
  • the control lines and information lines are those that are considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. In practice, it may be considered that almost all the components are connected to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

第1ストレージノードは、ライトデータから複数の分散配置ライトデータブロックを生成し、複数の分散配置ライトデータブロックから第1冗長データブロックを生成する。一つの分散配置ライトデータブロックは第2データブロックに配置され、第1冗長データブロックは第3ストレージノードに配置される。第2ストレージノードは、保持している分散配置ライトデータブロックから選択された複数の分散配置ライトデータブロックから、第2冗長データブロックを生成する。第2ストレージノードは、選択された複数の分散配置ライトデータブロックそれぞれを再配置先ストレージノードに再配置し、第2冗長データブロックを再配置先ストレージノード以外のストレージノードに配置する。

Description

ストレージシステム
 本発明は、ストレージシステムに関する。
 ITシステムで取り扱うべきデータ量が急激に増大しており、それに対応可能なストレージシステムが求められている。そのようなストレージシステムとして、複数のストレージ装置(サーバを含む)をネットワークで接続してストレージプールを作成し、分散してデータを処理し格納する、分散型ストレージシステム技術が存在する。これにより、スケーラブルな容量と性能を提供する。
 分散ストレージシステムの例は、例えば、米国特許7546342号に開示されている。具体的には、要約に記載されるように、以下の構成が開示されている。Webサイトに関連付けられる各ファイルの相対的重要度を計算する。この相対的重要度を用い、サーバ・アレイ、ピア・ツー・ピア・ネットワークなどの、コンピュータ・クラスタ内の複数デバイスに分配されるコンテンツの複数の部分集合を計算する。この部分集合は、1つまたは複数のファイルの一部分を含むパケットにイレージャコーディング方式を使用して作成された符号化メッセージを含むことができる。ファイル取得時、一定数のはっきりと識別可能な符号化メッセージがこの方式に基づいてデバイスから取得される。ファイルはこのメッセージを使用して再作成される。
米国特許第7546342号
 従来の分散ストレージシステムは、ホストから受信したライトデータを、複数ストレージノードに分散させる。従って、アプリケーションプログラムが、分散ストレージシステムからデータを読み出すとき、そのデータを構成するデータブロックを複数のストレージノードの間において、ネットワークを介して転送する必要がある。よって、ネットワークのスループットがボトルネックとなって、データへのアクセスレイテンシが、ネットワークを介さない場合よりも増加する場合がある。
 上記課題を解決するために、例えば特許請求項の範囲に記載の構成を採用する。
 本発明の代表的な一例は、ネットワークを介して接続された複数ストレージノード、を含むストレージシステムであって、第1ストレージノードと、第2ストレージノードと、第3ストレージノードと、を含み前記第1ストレージノードは、オブジェクトのライトデータを受信し、前記第1ストレージノードは、前記ライトデータから複数の分散配置ライトデータブロックを生成し、前記複数の分散配置ライトデータブロックから第1冗長データブロックを生成し、前記第1ストレージノードは、前記複数の分散配置ライトデータブロックそれぞれと前記第1冗長データブロックとを異なるストレージノードに送信し、前記異なるストレージノードは前記第2ストレージノードと前記第3ストレージノードとを含み、前記第1冗長データブロックの配置先は前記第3ストレージノードであり、前記第2ストレージノードは、保持している分散配置ライトデータブロックから、複数の分散配置ライトデータブロックを選択し、前記選択された複数の分散配置ライトデータブロックの再配置先ストレージノードが異なり、前記選択された複数の分散配置ライトデータブロックから生成される第2冗長データブロックの配置先が前記第3ストレージノードであり、前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックから前記第2冗長データブロックを生成し、前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックそれぞれを前記再配置先ストレージノードに再配置し、さらに、前記第2冗長データブロックを前記再配置先ストレージノード以外のストレージノードに配置 することで、前記第1ストレージノードが受信した前記オブジェクトの前記ライトデータが前記複数ストレージノードの何れかに再配置される。
 本発明によれば、ストレージシステムにおいて、高い信頼性と高い性能を両立することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
実施例1の概略を示す。 実施例1の概略を示す。 分散ストレージシステムのハードウェア構成例を示す。 分散ストレージシステムのソフトウェア構成の概略を示す。 メタデータ管理表の構成例を示す。 分散データ管理表の構成例を示す。 実施例3で用いられるメタデータ構造T構成例を示す。 実施例4で用いられるコピー保持ノード管理表の構成例を示す。 一つのストレージノードによるデータ格納処理の概要のフローチャートを示す。 再配置処理の概要のフローチャートを示す。 データリード処理の概要のラダーチャートを示す。 実施例2の概要を示す。 実施例2の概要を示す。 図7のフローチャートにおけるステップS21の詳細のフローチャートを示す。 実施例3の概要を示す。 分散ストレージシステムのソフトウェア構成の概略を示す。 非同期で実施する最新データによる冗長データ再生成処理の概要のフローチャートを示す。 実施例4において、アプリケーションプログラム/仮想マシンを割り当てる際のシステム構成図を示す。 アプリケーションプログラム/仮想マシンの割当に伴うデータコピー処理の概要のフローチャートを示す。
 幾つかの実施例を、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 以下の説明では、「XXテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために、「XXテーブル」を「XX情報」と呼ぶことができる。
 以下の説明では、プログラムを主語として処理を説明する場合があるが、プログラムは、ハードウェア自体、またはハードウェアが有するプロセッサ(例えば、MP(Micro Processor))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばポート)を用いながら行うため、処理の主語がハードウェア又はプロセッサとされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
 以下において、分散ストレージシステムにおいて、高信頼データ再配置により性能を向上する方式が開示される。ストレージノードは、データを格納する1以上の記憶デバイスを含む。以下において、1以上の記憶デバイスが与える記憶領域をメディア領域と呼ぶ。記憶デバイスは、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、複数ドライブからなるRAID等である。
 図1A及び図1Bは、本実施例の概略を示す。分散ストレージシステムは、ネットワークを介して接続された複数のストレージノード(単にノードとも呼ぶ)を含み、そのうちの一部のストレージノード20_0~20_3が示されている。図1Aは、分散ストレージシステムによる、受信データの分散配置処理の例を示す。図1Bは、分散配置されたデータの再配置処理の例を示す。
 分散ストレージシステムは、データを、論理的にまとまったデータであるオブジェクトごとに管理する。また、データへのアクセスは、オブジェクトごとに発生する。オブジェクトとしては、通常のファイルの他、アーカイブファイル、バックアップファイル、ディレクトリ情報を格納するオブジェクト、空きブロックを管理するオブジェクト、仮想ボリューム、仮想計算機のボリュームファイルがある。オブジェクトは、ファイルの一部やボリュームの一部でもあり得る。
 分散配置処理は、各オブジェクトのライトデータ(ダミーデータを含み得る)及び当該ライトデータから生成した冗長データを、複数のストレージノードに分散して配置する。再配置処理は、複数のストレージノードに分散配置されている1又は複数オブジェクトそれぞれのデータを、オブジェクトそれぞれに関連付けられているストレージノード(ローカルノードと呼ぶ)に移動する。一つのオブジェクトのローカルノードの数は、1以上である。
 再配置処理は、さらに、一つのストレージノードに格納されている異なるローカルノードのデータから冗長データを生成し、当該一つのストレージノードと異なるストレージノードであって、それらローカルノードと異なるストレージノードに配置する。
 このように、冗長データを伴うライトデータ(ホストデータ)の分散配置処理と、冗長データを伴うローカルノードへのライトデータ(ホストデータ)の再配置処理と、によって、分散ストレージシステムの高い信頼性と高い性能とを実現することができる。
 図1Aに示すように、例えば、分散ストレージシステムは、1又は複数のホストから、ライトデータA、B、及びCを受信する。ライトデータA、B、及びCは、それぞれ、不図示のA、B及びCオブジェクトに対するライトデータである。
 ライトデータを受信したストレージノードは、受信したライトデータに対してデータブロック分割処理及び冗長データブロック生成処理を実行する。ライトデータは分割され、規定分割サイズのホストデータブロック(分散配置ライトデータブロック)が生成される。分割サイズは、オブジェクト毎に規定されている。生成されるホストデータブロックはダミーデータブロックを含み得る。
 さらに、冗長データブロックが、イレージャコーディングにより、ホストデータブロックを使用して生成される。図1A及び1Bに示す冗長構成は、一つの冗長データブロックのみを含むが、ホストデータブロック及び冗長データブロックそれぞれの数は、設計に依存する。
 図1Aにおいて、ライトデータAから、ホストデータブロックa0、a1、a2及び冗長データブロックPa012が生成される。ライトデータBから、ホストデータブロックb0、b1、b2及び冗長データブロックPb012が生成される。ライトデータCから、ホストデータブロックc0、c1、c2及び冗長データブロックPc012が生成される。
 同一の受信データから生成されたホストデータブロック及び冗長データブロックは、ストライプを構成する。ストライプは、複数のホストデータブロックと、当該複数のホストデータブロックから生成される1又は複数の冗長データブロックで構成され、ホストデータブロックと冗長データブロックの数は、システムにおける冗長構成の設計に依存する。
 ホストデータブロックは、例えば、オブジェクト内のオフセット(オブジェクト内アドレス)に従って生成される。例えば、ライトデータの分割位置は、オブジェクト内オフセットと規定サイズ(分割サイズ)から計算される。オブジェクト内のオフセットに代えて、受信データ内のオフセットを使用し、受信データの先頭から規定サイズのデータブロックに分割してもよい。
 受信データから、オブジェクトの冗長構成に依存する規定数の整数倍のホストデータブロックが生成される。図1の例において、A、B及びCオブジェクトの規定数は3であり、冗長構成のストライプにおけるホストデータブロック数に一致する。
 図1Aにおいて、同一受信データから生成されたホストデータブロック及び冗長データブロックは、それぞれ異なるストレージノードに分散して配置される。ストレージノードは、データブロックをキャッシュに一旦格納した後、ストレージデバイスに格納する。ストレージデバイスはSSDやHDD、不揮発性メモリ及びそれらのデバイスで構成したRAIDであり、キャッシュは省略してもよい。
 ストレージノードは、管理しているストレージデバイスにデータを格納し、管理されているストレージデバイスは、他のストレージノードを介することなくアクセスされる。ストレージデバイスは、例えば、コントローラから直接アクセスされる又はスイッチを介して接続される。
 図1Aの例において、受信データA、B及びCのホストデータブロックは、ストレージノード20_0、20_1及び20_2に分散して格納される。同一の受信データのホストデータブロックは、先頭から順にストレージノード20_0、20_1及び20_2に配置される。受信データA、B及びCの冗長データブロックは、ストレージノード20_3に格納される。図1Aは、冗長データブロックが1個だけの例を示す。複数の冗長データブロックが生成される構成においては、それぞれの冗長データブロックを格納するためのストレージノードが用意される。
 ストレージノード20_0~20_3は、E、F及びGオブジェクトの受信データE、F及びGを既に格納している。ホストデータブロックe0~e2及び冗長データブロックPe012は、受信データEのデータブロックである。ホストデータブロックf0~f2及び冗長データブロックPf012は、受信データFのデータブロックである。ホストデータブロックg0~g2及び冗長データブロックPg012は、受信データGのデータブロックである。ストレージノード20_0~20_3にホストデータブロック及び冗長データブロックを分散配置する方法は、受信データA、B及びCと同様である。
 オブジェクトのデータブロックを格納するストレージノードの組は、予め設定されている。オブジェクトIDに対して、ホストデータブロックを格納する複数のストレージノードと冗長データブロック(パリティデータブロックとも呼ぶ)を格納する1又は複数のストレージノードとの組が定義されている。図1Aの例において、A~Eオブジェクトのストレージノードの組は同一であり、ストレージノード20_0~20_3で構成されている。
 ホストデータブロックを格納するストレージノード(データノードとも呼ぶ)は、ホストデータブロックのオブジェクトIDとオフセットとの組に対して割り当てられている。オフセットは、オブジェクト内又は受信データ内のオフセットである。
 冗長データブロックを格納するノード(パリティノードと呼ぶ)は、例えば、オブジェクトに対して固定である。つまり、パリティノードは、オブジェクトIDのみに対して割り当てられ、データのオフセット(アドレス)に依存しない。一つのストライプが複数の冗長データブロックを含む場合、複数のパリティノードがオブジェクトIDに対して規定され、冗長データブロックの種類に応じて格納するパリティノードが定義される。図1Aの例において、パリティノードは一つのみであり、オブジェクトIDのみに関連付けられ、オブジェクト内の全てのデータブロック(ストライプ)に共通である。具体的には、A~Eオブジェクトのパリティノードは、ストレージノード20_3である。
 他の例において、パリティノードは、オブジェクトIDとオブジェクト内又は受信データ内のオフセットとの組に対して割り当てられてもよい。冗長データブロックは、オブジェクトにおいて同一のパリティノードが割り当てられている複数のホストデータブロックから生成される。例えば、オブジェクトに対して複数ストレージノードが割り当てられており、ホストデータブロックのオフセットに応じて、それらの中から当該ホストデータブロックのためのパリティノードが選択される。
 データブロックの分散配置先ノードの組は、他のアルゴリズムを利用して指定されていてもよい。例えば、CRUSH(Controlled Replication Under Scalable Hashing)等のコンシステントハッシュアルゴリズムや分散ハッシュテーブルを使用して、オブジェクトIDとノード数とから、ホストデータと冗長データを含むデータブロックの分散配置先ノードの組が指定されてもよい。いずれかのアルゴリズムによってオブジェクトIDから分散配置先ノードを決定することで、容易かつ適切に分散配置先ノードを決定できる。
 図1Bは、分散配置されているホストデータブロック(ダミーデータを含み得る)の再配置処理の例を示す。一つのオブジェクトに対して1又は複数のローカルノードが割り当てられている。オブジェクトの分散配置されているホストデータブロックは、再配置後に、対応するローカルノードに格納される。一つのオブジェクトに対して複数のローカルノードが割り当てられている場合、ホストデータブロックのローカルノードは、オブジェクトID及びオフセットの組に対して関連づけられている。
 一つのオブジェクトに対して1又は複数のパリティノードが割り当てられている。パリティノードは、再配置処理において新たに生成される冗長データを格納する。新たに生成される冗長データブロックは、異なるローカルノードに格納され共通のパリティノードが割り当てられているホストデータブロックから、生成される。各冗長データブロックは、一つのストレージノードに格納されているホストデータブロックから生成される。
 パリティノードは、例えば、オブジェクトIDのみに対して割り当てられており、データのオフセット(アドレス)に依存せず、分散配置処理におけるパリティノードと、再配置処理におけるパリティノードとは、同一である。
 他の例において、複数パリティノードが指定されており、各パリティノードは、オブジェクトIDとオブジェクト内又は受信データ内のオフセットとの組に対して割り当てられてもよい。再配置におけるパリティノードの組と分散配置におけるパリティノードの組は同一又は異なる。
 例えば、一つのノード構成が複数のオブジェクトからなるオブジェクト群と予め関連付けられており、再配置処理は、分散配置処理における同一ノード構成を有するオブジェクトのデータの間で実行される。これにより、効率的なデータ管理が可能となる。分散配置処理におけるホストデータ(ダミーデータを含み得る)又は冗長データを格納するノードがそれぞれ共通であるオブジェクトのデータの間で実行される。再配置処理は、分散配置処理における異なるノード構成を有するオブジェクトのデータの間で実行されてもよい。
 図1Bの例において、A~Eオブジェクトは、分散配置における同一ノード構成を有しており、これらの間で再配置処理が実行される。A~Eオブジェクトにおいて、ローカルノードが異なる三つのオブジェクトのホストデータブロックから、新たな冗長データブロックが生成される。
 図1Bの例においては、各オブジェクトに対して一つのローカルノードが割り当てられている。ストレージノード20_0は、ライトデータA及びライトデータEのローカルノードである。ストレージノード20_1は、ライトデータB及びライトデータFのローカルノードである。ストレージノード20_2は、ライトデータC及びライトデータGのローカルノードである。
 図1Bの例においては、各オブジェクトに対して一つのパリティノードが割り当てらており、A~Eオブジェクトに共通である。ストレージノード20_3は、データ再配置において新たに生成される冗長データブロックを格納する。各冗長データブロックは、再配置後にそれぞれ異なるストレージノードに格納されるホストデータブロックから生成される。
 図1Bにおいて、ホストデータブロックa0、b0、c0から、冗長データブロックPabc0が生成される。ホストデータブロックa1、b1、c1から、冗長データブロックPabc1が生成される。ホストデータブロックa2、b2、c2から、冗長データブロックPabc2が生成される。
 ホストデータブロックe0、f0、g0から、冗長データブロックPefg0が生成される。ホストデータブロックe1、f1、g1から、冗長データブロックPefg1が生成される。ホストデータブロックe2、f2、g2から、冗長データブロックPefg2が生成される。
 ローカルノードが異なれば、冗長データブロックを生成するための任意のオブジェクトの組み合わせが可能である。例えば、Aオブジェクトのホストデータブロックは、Eオブジェクト以外の任意の二つのオブジェクトのホストデータブロックと共に冗長データを生成し得、Bオブジェクトのホストデータブロックは、Fオブジェクト以外の任意の二つのオブジェクトのホストデータブロックと共に冗長データを生成し得る。冗長データブロックを生成するホストデータブロックのオフセットの組み合わせは限定されず、任意である。
 図1Bにおいて、ホストデータブロックのサイズは同一である。冗長データブロックを生成するためのホストデータブロックの組み合わせにおいて、異なるオブジェクトのホストデータブロックのサイズ(分割サイズ)は異なっていてもよい。例えば、あるオブジェクトの分割サイズは、他のオブジェクトの分割サイズの整数倍であってもよい。
 Aオブジェクトの分割サイズが、B及びCオブジェクトの分割サイズのN倍(Nは整数)である場合、Aオブジェクトの一つのホストデータブロックと、BオブジェクトのN個のホストデータブロックと、CオブジェクトのN個のホストデータブロックと、から、一つの冗長データブロックを生成することができる。
 冗長データPABCは、冗長データブロックPabc0、Pabc1、Pabc2で構成されている。冗長データPEFGは、冗長データブロックPefg0、Pefg1、Pefg2で構成されている。
 各ストレージノードは、再配置処理を実行可能なホストデータブロックを保持している場合、ホストデータブロックの再配置を開始する。ストレージノードは、冗長データ生成に必要な数の、パリティノードが同一で、ローカルノードが異なる、ホストデータブロック、を保持している場合、ストレージノードは再配置処理を実行することができる。再配置処理の開始の条件は、再配置対象のデータ量が規定値に達していることを含んでもよい。
 図1Bにおいて、冗長データを生成するためには、ローカルノードがそれぞれ異なる三つのホストデータブロックが必要である。また、一つのストレージノードにおいて、2ストライプのホストデータが格納済みであることが、再配置処理開始の条件であってもよい。
 図1Bにおいて、各ストレージノードは、再配置対象のホストデータブロックから、冗長データを生成する。ストレージノード20_0は、ホストデータブロックa0、b0、c0から冗長データブロックPabc0を生成し、ホストデータブロックe0、f0、g0から冗長データブロックPefg0を生成する。
 ストレージノード20_1は、ホストデータブロックa1、b1、c1から冗長データブロックPabc1を生成し、ホストデータブロックe1、f1、g1から冗長データブロックPefg1を生成する。ストレージノード20_2は、ホストデータブロックa2、b2、c2から冗長データブロックPabc2を生成し、ホストデータブロックe2、f2、g2から冗長データブロックPefg2を生成する。
 上述のように、冗長データを生成するために、他のホストデータブロックの組み合わせも可能である。例えば、一つのストレージノードは、A、B、Cオブジェクトの組み合わせ及びE、F、Gオブジェクトの組み合わせを選択し、他の一つのストレージノードは、A、F、Cオブジェクトの組み合わせ及びE、B、Gオブジェクトの組み合わせを選択してもよい。
 ストレージノード20_0~20_2は、それぞれ、生成した冗長データブロックをまとめて、ストレージノード20_3に送信し、さらに、同一ローカルノードのホストデータブロックをまとめて、当該ローカルノードに送信する。これにより、ネットワーク上のデータ通信回数を低減する。
 例えば、ストレージノード20_0は、冗長データブロックPabc0、Pefg0を一つの通信データユニットに含めて、ストレージノード20_3に送信する。また、ストレージノード20_0は、ホストデータブロックb0、f0を一つの通信データユニットに含めて、ストレージノード20_1に送信し、ホストデータブロックc0、g0を一つのデータユニットに含めて、ストレージノード20_2に送信する。
 ローカルノード(ストレージノード20_0~20_2)は、受信したホストデータブロックによって、保持している対応オブジェクトを更新する。ストレージノード(ストレージノード20_0~20_2)は、再配置処理において他のストレージノードに送信した後に冗長性が確保されて不要になったホストデータブロックを、削除する。例えば、ホストデータブロックが再配置され、さらに、当該ホストデータブロックから再配置のために生成された冗長データブロックがパリティノードに格納された後に、当該ホストデータブロックの旧データは削除される。
 パリティノード(ストレージノード20_3)は、他のストレージノードから冗長データを受信した後、冗長性が確保されて不要になった冗長データブロックを削除する。図1Bの例において、ストレージノード20_3は、冗長データブロックPa012、Pb012、Pc012、Pe012、Pf012、Pg012を削除する。例えば、冗長データブロックの生成要素で全てのホストデータブロックが再配置され、全てのホストデータブロックの新たな冗長データブロックが格納された後、冗長データブロックは削除される。
 再配置処理により、アプリケーション(ホスト)がオブジェクトのデータを必要とした場合に、ストレージノード間でのネットワークにおけるデータブロックの転送無しに、ローカルリードを実現し、性能を向上することができる。
 図2は、分散ストレージシステムのハードウェア構成例を示す。図2の例において、分散ストレージシステムは、複数のストレージノード20_0~20_N及び管理システム50を含む。ストレージノード20_0~20_Nは、インターナルネットワーク102を介して互いに接続され、さらに、管理システム50に接続されている。
 ストレージノード20_0~20_Nの管理を行うために、独立したネットワークを作成してもよい。ストレージノード20_0~20_Nは、データネットワーク100を介して、1又は複数のホスト10(一つのホストのみ例示)に接続されている。一つのホスト10は、例えば、サーバ計算機、支社のファイルストレージ装置、PC又はスマートフォン等である。
 管理システム50は、1又は複数の計算機で構成される。管理システム50は、例えば、サーバ計算機と当該サーバ計算機にネットワークを介してアクセスする端末とを含む。管理者は、端末の表示デバイス及び入力デバイスを介して、ストレージノード20_0~20_Nを管理及び制御する。
 インターナルネットワーク102及びデータネットワーク100は、それぞれ、例えば、WAN(Wide Area Network)、LAN(Local Area Network)、インターネット、SAN(Storage Area Network)、公衆回線、又は専用回線などである。インターナルネットワーク102及びデータネットワーク100は、同一ネットワークでもよい。
 ストレージノードは、汎用的な計算機の構成を有することができる。図2において、ストレージノード20_0は、メモリ21、補助記憶装置22、プロセッサ24、データネットワークとのインタフェース(I/F)26、及び補助記憶装置22との他のデバイスとの間のI/F28を含む。メモリ21、プロセッサ24、I/F26、及びI/F28はバス29に接続されている。メモリ21及び補助記憶装置22は、共にプロセッサ24により管理される記憶装置である。補助記憶装置22は、直接アクセスストレージでもよく、スイッチ装置を介してアクセスされてもよい。他のストレージノードも、同様の構成を有してよい。
 メモリ21に格納されるデータは、典型的には、ネットワーク100若しくは102を介して転送されてきたデータ、又は、補助記憶装置22からロードされたデータである。補助記憶装置22は、例えば、1以上のHDD、SSD又はRAIDで構成されている。補助記憶装置22は、再配置後のオブジェクト又は冗長データを格納する他、再配置処理が終了する前のオブジェクトや制御情報を一時的に格納する領域も提供する。
 メモリ21は、補助記憶装置22から読み出された情報を記憶するために用いられるほか、ホスト10から受信したデータを一時的に格納するキャッシュメモリとして用いられる。メモリ21は、さらに、プロセッサ24のワークメモリとして用いられる。メモリ21には、DRAM等の揮発性メモリまたはFlash Memory等の不揮発性メモリが使用される。メモリ21は、補助記憶装置22よりも高速にデータの読み書きができる。補助記憶装置22は省略されてもよい。
 プロセッサ24は、メモリ21に記憶されているプログラムや演算パラメータ等に従って動作する。プロセッサ24は、プログラムに従って動作することで、特定の機能部として働く。例えば、プロセッサ24は、後述するデータ分割・再構成プログラム220に従って動作することで、データ分割・再構成部として機能する。他のプログラムについても同様である。
 図3は、分散ストレージシステムのソフトウェア構成の概略を示す。図3の例において、ストレージノード20_0~20_Nは、同様のソフトウェア構成を有する。メモリ21は、データ分割・再構成プログラム220、冗長データ生成・損失データ回復プログラム221、メタデータ情報分散管理プログラム222、及びメタデータ管理表T20を格納している。これらは、例えば、補助記憶装置22からロードされている。
 メタデータ管理表T20は、オブジェクトの受信データのホストデータブロック及びそれらの1以上の冗長データブロックそれぞれの、格納先ストレージノードを示す。これらは、オブジェクトのノード構成情報に含まれる。メタデータ管理表T20に代えて、メタデータ情報分散管理プログラム222が、CRUSH等に基づく計算によって、データブロックそれぞれの格納先を決定するために必要な情報を生成してもよい。
 一例において、ストレージノード20_0~20_Nのメタデータ管理表T20は、情報を、オブジェクトIDに従って、分散管理する。例えば、メタデータ情報分散管理プログラム222は、データを受信したオブジェクトのノード構成情報を入手するため、オブジェクトIDから一つのストレージノードIDを計算し、当該ストレージノードから当該オブジェクトIDに対するノード構成情報を入手する。分散管理により、メタデータ情報の保持に必要な記憶リソースを低減する。
 これに代えて、各ストレージノードのメタデータ管理表T20が、全てのオブジェクトの情報を格納していてもよい。メタデータ管理表T20を使用することなく、メタデータ情報分散管理プログラム222が、オブジェクトIDに対するノード構成情報を計算により求めてもよい。
 ホスト10は、分散ストレージシステムへ、ネットワーク100を介して、オブジェクトのライトデータを送信する。例えば、ストレージノード20_0は、ライトデータを受信する。メタデータ情報分散管理プログラム222は、受信データのオブジェクトIDに対応する情報を、いずれかのストレージノードに格納されているメタデータ管理表T20から取得する。
 ストレージノード20_0は、受信データの、オブジェクトID、オフセット及びメタデータから、受信データ及び冗長データを格納する複数のストレージノードを決定する。オブジェクトIDに関連付けられているノード構成情報は、オブジェクトのデータ(ホストデータ)及び冗長データを格納する複数のストレージノードIDを示す。
 上述のように、ホストデータブロックを格納するストレージノードは、オブジェクトIDとホストデータブロックのオフセットとの組と関連づけられている。冗長データブロックを格納するストレージノードは、オブジェクトIDのみ又はオブジェクトIDとホストデータブロックのオフセットとの組と関連づけられている。また、一つのストレージノードが、複数オブジェクトのホストデータブロック又は複数オブジェクトの冗長データブロックを格納するように、定義されている。
 データ分割・再構成プログラム220は、受信データから規定サイズのホストデータブロックを生成する。必要な場合、ダミーデータが追加される。冗長データ生成・損失データ回復プログラム221は、生成したホストデータブロックから、冗長データを生成する。
 データ分割・再構成プログラム220は、決定した複数ストレージノードへ、生成したデータブロックそれぞれを、ネットワーク102を介して分散配置する。ホストデータブロックと共に、そのオブジェクトID及びオフセットを含むアドレス情報が転送される。分散配置において転送されたデータブロックを受信したストレージノードは、応答を返し、さらに、受信したデータを補助記憶装置22へ格納する。その後、ホスト10からデータを受信したデータ分割・再構成プログラム220は、ホスト10へ、ネットワーク100を介して完了応答を返す。
 メタデータ情報分散管理プログラム222は、該当オブジェクトの管理情報を更新する。管理情報は、メタデータ管理表T22及び後述する分散データ管理表T40の情報を含む。メタデータ情報分散管理プログラム222は、該当オブジェクトの管理情報を保持するストレージノードに更新情報を通知し、通知を受けたストレージノードのメタデータ情報分散管理プログラム222が、テーブルを更新(作成を含む)する。
 メタデータ情報分散管理プログラム222は、再配置処理を開始するのに必要な分散配置されたデータが格納されたと判定すると、再配置処理を開始する。メタデータ情報分散管理プログラム222は、冗長データ生成に必要な数(規定条件を満たす数)の、パリティノードが同一で、ローカルノードが異なる、ホストデータブロック、が格納された後、再配置処理を実行する。冗長データは、1又は複数のオブジェクトの複数ホストデータブロックから生成される。
 再配置処理の開始は、上述のように、再配置するデータ量が規定量に達していることも条件であってもよい。再配置処理は、図1Bの例のように、分散配置の構成ノードが全て同一のオブジェクト間においてのみ行ってもよい。
 メタデータ情報分散管理プログラム222は、再配置する1又は複数のオブジェクトを決定し、その決定したオブジェクトの情報を、当該オブジェクトが関連するストレージノード、具体的には、当該オブジェクトの分散ホストデータ又は分散冗長データを格納するストレージノード、及び、当該オブジェクトのローカルノードのメタデータ情報分散管理プログラム222へ通知する。
 オブジェクトの分散ホストデータ又は分散冗長データを格納するストレージノードは、分散配置における当該オブジェクトの構成ノードであり、メタデータ管理表T20に含まれている。
 再配置処理を行う各ストレージノードにおいて、冗長データ生成・損失データ回復プログラム221は、自ノードで保持するホストデータブロックから、再配置用の冗長データを生成する。データ分割・再構成プログラム220は、ストレージノード毎に再配置すべきホストデータブロック又は冗長データブロックをまとめて、一回のコネクションで各ストレージノードへ転送する。
 データ分割・再構成プログラム220は、他のストレージノードから受信したホストデータにより補助記憶装置22のオブジェクトを更新する(ローカルノード)、又は、冗長データを補助記憶装置22に格納する(パリティノード)。
 再配置に関連したストレージノードそれぞれのデータ分割・再構成プログラム220は、再配置のために選択されたオブジェクトの全ての関連ストレージノード間でのデータ転送(データ再配置)が完了したことを相互に通知することで確認すると、メタデータ情報分散管理プログラム222経由で、再配置処理を行ったオブジェクトそれぞれの管理情報を更新する。データ分割・再構成プログラム220は、データ再配置で不要となった分散配置データを消去する。
 分散ストレージ間の相互通知方法は、例えば以下である。(1)ある1ノードが再配置処理を完了したら、その完了通知を関連する各ノードへ送信する。(2)例えば、再配置の状態管理を行うメインノード(例えばパリティノード)を決定し、そのメインノードが状態を管理する。例えば、ある1ノードが再配置処理を完了したら、その完了通知をメインノードへ通知する。メインノードは再配置に関連する全てのノードから完了通知を受信すると、各ノードへ旧データ削除命令を通知する。
 本構成により、信頼性を維持したままデータの再配置を行い、ローカルリードによる性能向上を実現できる。なお、メタデータ情報分散管理プログラム222、データ分割・再構成プログラム220は、ストレージノードの削除・追加に合わせて、リバランス処理を行ってもよい。
 図4A、4Bは、分散ストレージシステムにおける管理情報の例を示す。図4Aは、メタデータ管理表T20の構成例を示す。メタデータ管理表T20は、オブジェクトID欄C2、優先度欄C4、構成ノード欄C6、再配置処理状態欄C7、及び分割サイズ欄C8を有する。
 オブジェクトID欄C2は、当該テーブルが管理しているオブジェクトのオブジェクトIDを格納する。メタデータが分散管理されている場合には、システムが格納するオブジェクトの一部のみの情報が一つのメタデータ管理表T20に格納されている。優先度欄C4は、オブジェクトID(欄C2)に対応した優先度を示す。優先度は、例えば、管理システム50を介して、ユーザにより予め設定される。
 構成ノード欄C6は、オブジェクトID(欄C2)により同定されるオブジェクトの分散処理におけるホストデータ又は冗長データを格納する各ストレージノード、及び、再配置後にオブジェクト又は冗長データを格納する各ストレージノードの情報を示す。パリティノードがオフセットに依存する場合、その情報も示される。
 再配置処理状態欄C7は、オブジェクトID(欄C2)により同定されるオブジェクトの再配置処理状態を示す。状態は、未、再配置中、又は済のいずれかである。状態「未」は、再配置がされていない状態を示す。状態「再配置中」は、現在、再配置処理中であることを示す。状態「済」は、再配置処理が完了した状態を示す。再配置処理状態は、ビットマップを用いて管理されてもよい。
 分割サイズ欄C8は、オブジェクトID(欄C2)により同定されるオブジェクトを、分割し複数のストレージノードへ分散配置する際の分割サイズを示す。つまり、分散処理におけるホストデータブロックのサイズを示す。サイズ0は、分割しないことを示す。オブジェクトの分割サイズが複数の規定値から選択された値である場合、ビットマップを用いて管理しても良い。
 図4Bは、分散データ管理表T40の構成例を示す。分散データ管理表T40は、再配置処理中のオブジェクト毎に作成され、例えば、オブジェクトの担当ストレージノードが、メタデータ管理表T20と共に保持する。分散データ管理表T40は、オブジェクト内の再配置中のデータの管理情報を保持する。
 分散データ管理表T40は、範囲(LBA)欄C22、構成ノード欄C24、分割サイズ欄C26を有する。範囲(LBA)欄C22は、再配置中データのオブジェクトにおけるアドレス範囲(LBA)を示す。構成ノード欄C24は、再配置中データを格納しているストレージノードを示す。分割サイズ欄C26は、再配置中データの分割サイズ(ホストデータブロックサイズ)を示す。
 図5A及び5Bは、分散ストレージシステムにおける管理情報の例を示す。図5Aは、実施例3で用いられるメタデータ構造T27の構成例を示す。図5Bは、実施例4で用いられるコピー保持ノード管理表T28の構成例を示す。メタデータ構造T27及びコピー保持ノード管理表T28の詳細は、対応する実施例において説明する。
 図6は、一つのストレージノードによるデータ格納処理の概要のフローチャートを示す。ストレージノードは、ホスト10から受信したデータを、複数ノードに分散して格納する。ホスト10からデータを受信したストレージノードは、受信したデータの格納先ノードを決定する(S11)。
 具体的には、メタデータ情報分散管理プログラム222は、受信したデータのオブジェクトIDから、当該オブジェクトのメタデータ管理表T20を含む管理情報を格納するストレージノードを特定する。メタデータ情報分散管理プログラム222は、特定したストレージノードから、分散処理における構成ノードの情報と、分割サイズの情報を取得する。
 メタデータ情報分散管理プログラム222は、取得した情報から、ホストデータと冗長データを格納するストレージノードを決定する。メタデータ情報分散管理プログラム222は、受信データのオブジェクトIDから、CRUSH等のアルゴリズムに基づき構成ノードを算出してもよい。
 分割サイズが規定値より大きく、再配置処理が不要である場合、メタデータ情報分散管理プログラム222は、受信したデータのオブジェクトの再配置処理状態を「済み」と設定し、そうではない場合には「未」と設定する。メタデータ情報分散管理プログラム222は、当該オブジェクトの管理情報を保持するストレージノードに、再配置処理状態の判定結果を通知する。分割サイズが大きい場合、一回のリードアクセスが分割サイズ内のデータあることが多く、ローカルリードのための再配置不要である。再配置処理省略により、システム負荷を低減する。なお、分割サイズに拠らず再配置処理が必要であると判定してもよい。
 データ分割・再構成プログラム220は、受信データを、当該オブジェクトの分割サイズに従って分割し、複数ホストデータブロックを生成する(S12)。データ分割・再構成プログラム220は、必要に応じてダミーデータを追加してデータブロックを生成し、又は、ダミーデータブロックを追加する。生成されるホストデータブロックの数は、冗長構成におけるデータノード数の整数倍である。
 次に、冗長データ生成・損失データ回復プログラム221は、冗長データを生成する(S13)。冗長データ生成・損失データ回復プログラム221は、アドレス順で規定数のホストデータブロックを選択し、それらから、規定数(1以上)の冗長データブロックを生成する。冗長データブロックは異なるストレージノード格納されるホストデータブロックから生成される。
 データ分割・再構成プログラム220は、当該オブジェクトの構成ノードである、格納先ノードのそれぞれに、ホストデータブロック又は冗長データブロックを分散配置する(S14)。具体的には、データ分割・再構成プログラム220は、対応するストレージノードそれぞれに、データブロックを送信し、送信先のデータ分割・再構成プログラム220は、受信データを補助記憶装置22に格納した後、完了を送信元ストレージノードに返す。
 さらに、受信データのオブジェクトの再配置状態が「再配置中」である場合には、ホスト10からデータを受信したストレージノードのメタデータ情報分散管理プログラム222は、分散データ管理表T40を更新(作成を含む)する。具体的には、メタデータ情報分散管理プログラム222は、当該オブジェクトの分散データ管理表T40を管理するストレージノードに、新たに生成したホストデータブロックのアドレス情報と格納先ノードの情報を送信する。送信先のメタデータ情報分散管理プログラム222は、受信した情報に従って、当該オブジェクトの分散データ管理表T40を更新する。
 図7は、再配置処理の概要のフローチャートを示す。図7は、一つのストレージノードの処理を示す。メタデータ情報分散管理プログラム222は、データ再配置を行うオブジェクトの候補を決定する(S21)。たとえば、メタデータ情報分散管理プログラム222は、そのストレージノードが保持しているホストデータブロックの全てのオブジェクトを選択する。
 次に、メタデータ情報分散管理プログラム222は、選択したオブジェクトそれぞれのデータ再配置に必要なデータセット(ホストデータブロック)が存在するか否かを判定する(S22)。再配置に必要なホストデータブロックは、冗長構成及び予め設定された条件に依存する。たとえば、再配置に必要なホストデータブロックは、冗長データを生成可能であって、規定量以上のホストデータブロックである。データ量の条件は設定されていなくてもよい。
 冗長データの生成に必要なデータホストブロックは、同一のパリティノード、異なる再配置先ノードのホストデータブロックの組であって、その数が冗長構成のデータノード数を満たすものである。冗長データを生成するオブジェクトの組は予め設定されていてよく、冗長データを生成するオブジェクトは、分散配置における同一ノード構成のオブジェクトに限定されてもよい。たとえば、図1Bの例において、冗長データは、A、B、C、E、F、Gオブジェクトの組内で生成されてもよい。
 いずれのオブジェクトの再配置のためにも必要なホストデータブロックが存在していない場合(S22:NO)、メタデータ情報分散管理プログラム222は、再配置に必要なホストデータブロックが揃うのを待つため、ステップS21に戻る。いずれかのオブジェクトの再配置を実行するためのホストデータブロックが保持されている場合(S22:YES)、フローはステップS23Aに進む。
 メタデータ情報分散管理プログラム222は、オブジェクト毎に、今回の処理フローで再配置を実行する回数Nを計算する(S23)。一つのオブジェクトについての一回の再配置は、一つのストライプの再配置であり、ホストデータブロックから冗長データを生成し、複数ローカルノード及び1以上のパリティノードに格納する。オブジェクトの再配置を実行する回数は、当該ストレージノードから当該オブジェクトの一つのローカルノードにホストデータを送信する最大回数である。
 上述のように、同一ストレージノードに送信するデータブロックは、まとめて送信することが通信トラヒックの点から好ましい。しかし、1回の再配置処理で対象の全てのデータの再配置をしない方がよい場合がある。例えば、再配置対象データのサイズが大きい場合や、再配置を実施するために割り当てることができる物理リソース(CPU、メモリ、ネットワーク、I/O)が少ない場合である。
 例えば、メタデータ情報分散管理プログラム222は、送信データ量及び/又は現在の処理負荷等の状態情報を参照に、予め設定された条件に従って、各オブジェクトのホストデータの送信回数を決定する。
 例えば、オブジェクトの再配置回数が多い場合、全てのデータの再配置が終わってから再配置後のデータを有効にすると、多くの時間がかかる場合がある。メタデータ情報分散管理プログラム222は、いずれかの回数Nが規定数に達しているか(規定数以上であるか)否か判定してもよい。規定数は1より大きい値であり、2でもよい。回数Nが規定数に達している場合、分散ストレージシステムは、全ての対象データの再配置前に、再配置処理の対象データを送信後に逐次的に有効にしてもよい。例えば、メタデータ情報分散管理プログラム222は、ホストデータブロックの送信と共に、当該ブロックを有効にすることの指示を送信し、ローカルノードはその指示に従う。
 メタデータ情報分散管理プログラム222は、メタデータ管理表T20において、再配置を開始するオブジェクトの再配置状態を「再配置中」へ変更する。再配置対象オブジェクトの管理情報を保持している管理担当ストレージノードに、再配置を実行することを決定したノードから当該通知がなされる。
 メタデータ情報分散管理プログラム222は、再配置対象のオブジェクトそれぞれの再配置回数Nが0より大きい否かを判定する(S24)。全てのオブジェクトの回数Nが0である場合(S34:NO)、フローはステップS33に進む。いずれかのオブジェクトの回数Nが1より大きい場合、フローはステップS25に進む。
 冗長データ生成・損失データ回復プログラム221は、ストレージノードに格納されており、冗長データ生成の要件を満たす同一又は異なるオブジェクトのホストデータブロックから、冗長データを作成する(S25)。
 冗長データ生成の要件は、設計に依存する。例えば、生成される冗長データを格納するパリティノードが同一であり、再配置後に格納されるローカルノードが異なる、規定数のホストデータブロックから冗長コードブロックが生成される。分散配置における同一構成ノードのホストデータブロックの組に限定されてもよく、予め定められたオブジェクト間においてのみ冗長データが生成されてもよい。
 データ分割・再構成プログラム220は、宛先ノード毎に、送信データを決定し(S26)、各宛先ノードにデータをまとめて送信する(S27)。上述のように、まとめられるデータ量はデータサイズや処理負荷に応じて決定されてもよい。オブジェクトデータ(ホストデータ)はローカルノードに送信され、冗長データはパリティノードに送信される。データを受信したストレージノードは、受信データを一時領域に格納する(S28)。一時領域は、メモリ21上でもよく、補助記憶装置22上の一時的な格納領域でもよい。
 データ分割・再構成プログラム220は、生成した冗長データ及びそれを生成したホストデータの再配置が終了すると、関係するストレージノード、具体的には、再配置を実行したオブジェクトそれぞれの構成ノード(メタデータ管理表T20に示されている)に通知する。データ分割・再構成プログラム220は、再配置に関係する全ストレージノードからの通知により、再配置に関係する全ストレージノードが再配置データの受信を完了したこと確認した(S29)後、再配置された旧データを削除する(S30)。これにより、再配置処理におけるデータの冗長性が維持される。分散ストレージ間の相互通知方法は上述の通りである。
 データ分割・再構成プログラム220は、一時領域に格納されているデータを補助記憶装置22の領域に格納する(S31)。ホストデータは、旧データの格納位置に格納される。このステップは、一時領域を継続して利用する場合は不要である。
 データ分割・再構成プログラム220は、再配置を実行した各オブジェクトの分散データ管理表T40を更新する。メタデータ情報分散管理プログラム222は、オブジェクトの分散データ管理表T40を保持する管理担当ストレージノードに、再配置したデータの情報を通知し、管理担当ストレージノードのメタデータ情報分散管理プログラム222が、受信データに従ってオブジェクトの分散データ管理表T40のデータ格納位置情報を更新する(S32)。全てのエントリが削除された分散データ管理表T40は削除される。その後、シーケンスはS23に戻る。
 ステップS24において全てのオブジェクトの再配置回数が0である場合(S24:NO)、メタデータ情報分散管理プログラム222は、再配置を実行したオブジェクトそれぞれの分散データ管理表T40を保持する管理担当ストレージノードに、再配置の終了を通知する。管理担当ノードのメタデータ情報分散管理プログラム222は、全ての関連ノードから再配置の終了通知を受けると、当該オブジェクトのメタデータ管理表T20の情報を更新する(S33)。再配置処理状態欄C7の値が「済」に更新される。分散ストレージ間の相互通知方法は上述の通りである。
 以上の処理から、ホストデータブロックからオブジェクトデータが再構成され、異なるオブジェクト間で、冗長データによるデータ保護がされる。
 図8は、データリード処理の概要のラダーチャートを示す。ホスト10又はリード要求を受信した受信ノードのメタデータ情報分散管理プログラム222は、リード要求からオブジェクトIDを決定し、当該オブジェクトの管理情報を保持する管理担当ノードを決定する。受信ノードは、管理担当ノードへリード要求の指定オブジェクト及びアドレスを転送し、指定アドレスの格納先の情報を問い合わせる(S40)。
 管理担当ノードは、指定オブジェクトの分散データ管理表T40及び存在する場合にはメタデータ管理表T20を参照して、指定アドレスのデータを格納しているストレージノードを特定する。管理担当ノードは、特定したストレージノードの情報を、受信ノードに返す(S42)。
 受信ノードは、指定されたストレージノードに、オブジェクトIDとアドレス指定して、データの転送を要求する(S44、S45)。データ転送要求を受けたストレージノードは、受信ノードに要求されたデータを返す(S45、S47)。受付ノードは、ホスト10へリード要求に対するデータを応答し、リード処理が完了する。データは再配置処理により特定のローカルノードに格納されるため、リード要求時のノード間転送回数及び転送データ量が低減され、データリード性能を向上できる。
 なお、ノード障害が発生した時は以下のように障害回復を行う。メタデータ情報分散管理プログラム222は、障害が起きたノードの回復処理後のデータを格納するノードを決定する。その後、データ分割・再構成プログラム220は、冗長データ生成・損失データ回復プログラム221と連携して、データの取得およびデータの回復を行い、回復後のデータを決定した格納先ノードへ格納する。その後、メタデータ情報分散管理プログラム222は、格納先ノード情報を更新して障害回復処理を終了する。
 実施例2は、データ再配置処理を適用するオブジェクトを選択することにより、再配置処理に伴うオーバヘッドを削減する。以下において、実施例1と異なる部分を主に説明する。
 図9A及び図9Bは、本実施例の概要を示す。本実施例は、データ再構成処理を行うオブジェクトを限定する。図9の例において、B、E、Gオブジェクトが、再配置処理の対象として選択される。A、C、Fオブジェクトのホストデータブロックは再配置されない。
 図10は、本実施例における、図7のフローチャートにおける、ステップS21の詳細のフローチャートを示す。ステップS21は、データ再配置を行うオブジェクトの候補を選択する。図10において、メタデータ情報分散管理プログラム222は、メタデータ管理表T20の優先度欄C4と、再配置処理状態欄C7とを参照し、再配置処理状態が「未」であり、優先度が最も高いオブジェクトを選択する(S51)。優先度による他の選択基準が使用されてもよい。例えば、優先度が規定レベルに達しているオブジェクトが選択されてもよい。
 メタデータ情報分散管理プログラム222は、再配置処理状態が「未」であり、アクセス頻度が規定値を超えるオブジェクトを選択する(S52)。オブジェクトのアクセス頻度は、例えば、当該オブジェクトの管理情報を保持するストレージノードにより管理されている。アクセス頻度による他の選択基準が使用されてもよい。例えば、アクセス頻度が最も高いオブジェクトが選択されてもよい。
 もし、アクセス頻度の高い範囲が、オブジェクト全体でなく、オブジェクト中のある限定された範囲である場合は、アクセス頻度が高いアドレス範囲のデータのみを再配置候補として選択してもよい。なお、当該範囲を含むオブジェクトは、再配置候補のオブジェクトである。分散ストレージシステムは、次の手順を実施する。
 (1)該当オブジェクトのメタデータ管理表T20の再配置処理状態を再配置中に設定する。
 (2)対象データの再配置処理を実行する。分散データ管理表T40を作成、更新する。
 (3)再配置完了後も、メタデータ管理表T20の再配置状態を変更せず、維持する。
 これにより、オブジェクトの一部だけ配置方法が異なる場合も、分散データ管理表T40により管理することができる。本処理は、オブジェクトのサイズが非常に大きく、その一部のデータ部分のみの再配置処理が必要な場合に特に有効である。
 本実施例は、データ再配置処理を適用するオブジェクト又はオブジェクト内データを選択することにより、再配置処理に伴うオーバヘッドを削減する。また、データの優先度又はアクセス頻度に基づいて再配置処理を実施するオブジェクトの候補を選択することにより、効率よく再配置処理を実施し、性能向上を実現できる。
 実施例3において、ストレージノードは、旧データを消去することなく、ライトデータ(更新データ)を追記し、メタデータによりデータ更新を管理する、追記書き機能を有する。分散配置されているデータに対する更新データを受信すると、分散ストレージシステムは、フルストライプによる冗長データの生成及び分散配置(フルストライプライト)を行うことで、書き込み性能を向上する。
 図11は、本実施例の概要を示す。通常、冗長構成のストライプに部分更新が起きた場合、その更新が発生した部分に関する新旧データ及びそれに関連するパリティを更新する必要がある。これにより、ストレージノード間のネットワーク通信がデータブロックを転送する度に発生し、ライト性能が低下する。
 本実施例の分散ストレージシステムは、ライトデータを受信すると、ストライプを構成する他のデータが0データ(ダミーデータの一例)であると仮定し、フルストライプライトを行う。
 図11において、Aオブジェクトの受信データ151は、a0**更新データブロック130及びa2*更新データブロック132からなる。分散先のノード数に受信データ151が満たない場合には、0データブロック131が仮定され、データブロック130、131及び132から、Pa012**冗長データブロック133が生成される。
 冗長データの生成に使用された0データブロックは、担当ストレージノードに転送されず、その担当ストレージノードへ新規に0データがライトされたことのみが通知される。図11において、例えば、ストレージノード20_0は、0データブロック131をストレージノード20_1に転送せず、当該アドレスに対する0データのライトがあったことを通知する。
 担当ストレージノード20_1は、当該アドレスのメタデータのみ更新する。本処理における0データは、フルストライプライトを実現する穴埋めのために、一時的に使用されるデータである。各ストレージノードは、0データを実際に記憶領域に格納せず、ユーザデータ位置を管理するメタデータにおいて、一時的な0領域であることを、ビットフラグ等を用いて、管理する。
 データ一貫性は、ストレージノードのログライトにより維持される。ログライトは、更新データ及び更新メタデータを追記書きする。追記書きする更新時点をチェックポイントと呼ぶ。ログライトは、過去のチェックポイントから選択した一部又は全部のチェックポイントの更新データを、スナップショットとして保存する。これにより、更新データのスナップショットが自動かつ連続的に生成される。新規にチェックポイントを設定する時、ログライトは、チェックポイントを識別するチェックポイント番号をインクリメントする。
 ログライトは、データを更新する時、データの更新箇所に対応する記憶メディア上のデータに更新データを上書きせず、更新データを記憶メディア領域上の別の領域に書き込む。これにより、任意チェックポイントのデータを復元できる。
 図11の例において、AオブジェクトのチェックポイントN-2において、分散ストレージシステムは、ストレージノード20_0~20_3へ、a0更新データブロック110、a1更新データブロック111、a2更新データブロック112、Pa012冗長データブロック113を分散配置する。
 チェックポイントN-1において、a0データブロック110とa1データブロック111の更新データである、a0*更新データブロック120とa1*更新データブロック121がホストから書き込まれる。分散ストレージシステムは、0データブロック122が書き込まれたと仮定し、データブロック120、121、122からPa012*冗長データブロック123を作成する。
 分散ストレージシステムは、データブロック120、121、123を、ストレージノード20_0、20_1、20_3に格納する。分散ストレージシステムは、ストレージノード20_2には0データブロック122が書き込まれたと仮定する。
 チェックポイントNにおいて、a0**更新データブロック130とa2*更新データブロック132がホストから書き込まれる。分散ストレージシステムは、0データブロック131が書き込まれたと仮定し、データブロック130、131、132からPa012**冗長データブロック133を作成する。
 分散ストレージシステムは、データブロック130、132、133を、ストレージノード20_0、20_2、20_3に格納する。分散ストレージシステムは、ストレージノード20_1には0データブロック131が書き込まれたと仮定する。
 その後、分散ストレージシステムは、非同期で、最新データ(a0**データブロック130、a1*データブロック121、a2*データブロック132)から、冗長データを再生成する。ここでは、最新データから冗長データが生成された前回のチェックポイントから、本非同期処理を実施するチェックポイント数Xが2である例を説明する。
 チェックポイントN-2は、前回の最新データから冗長データが生成されたチェックポイントである。したがって、チェックポイントN-1とNが、冗長データを生成する対象である。Aオブジェクトにおいて、チェックポイントN-1のa1*データブロックで、ストレージノード20_3のPa012**を更新するため、ストレージノード20_1は、a1*データブロックのコピー141を、ストレージノード20_3へ転送する。
 Pa012***冗長データブロック153は、a1*データブロック141とPa012**冗長データブロック133から生成された冗長データである。分散ストレージシステムは、Pa012***冗長データブロック153を生成後、補助記憶装置22へ書き込み、チェックポイントN-1とNに関して不要なデータを削除する。以上の手順により、信頼性を維持したまま、最新データの冗長データを再生成できる。なお、分散ストレージシステムは、Cオブジェクトに対しても、Aオブジェクトと同様の処理を実行する。
 このように、本実施例の分散ストレージシステムは、更新データを分散配置する時、ストライプを構成するために不足しているデータを0データと仮定し、フルストライプライトを行う。その後、分散ストレージシステムは、非同期処理において、最新データの冗長データを生成することで、冗長データの更新に伴うストレージノード間のデータ通信を低減し、性能を向上する。
 図12は、本実施例における分散ストレージシステムのソフトウェア構成の概略を示す。実施例1及び実施例2との相違点は、追記書きプログラム225である。追記書きプログラム225は、データを記憶装置へ書き込む時に追記書きを行う。
 ここで、図5Aの追記書き用メタデータ構造T27は、追記書きプログラム225において、データ追記書き込み先アドレスを管理するメタデータである。追記書き用メタデータ構造T27は、ストレージノード毎に用意され、保持される。追記書き用メタデータ構造T27は、チェックポイント番号欄C46、フラグ欄C47、アドレス欄C48を有する。
 チェックポイント番号欄C46は、データが書き込まれた時のチェックポイント番号を格納する。フラグ欄C47は、ゼロ領域か、スパース領域か、一時書き込みか等を示すビットマップを格納する。ゼロ領域は、データがゼロである領域であり、実際にデータはゼロデータを書かなくてもよい。スパース領域は、何もデータが書かれていない領域である。一時書き込み領域は、前述したとおりである。アドレス欄C48は、データが書き込まれたアドレスを格納する。
 例えば、フルストライプライトのために0データを格納した領域に対して、フラグ欄C47は、一時書き込みフラグとゼロ領域フラグを示す。また、アドレス欄C48は、0埋めによる一時書き込み前のアドレスを保持する。一時書き込みかつゼロ領域フラグは、非同期書き込み処理時に、最新のデータかどうかを判定するためのビットフラグであり、実際にゼロデータが書き込まれたわけではない。そのため、アドレス欄C48は、0埋めによる一時書き込み前のアドレスを保持し、データ整合性を維持する。
 以下において、実施例1との相違点を主に説明する。図6の分散配置処理の冗長データ生成ステップS13において、追記書きプログラム225は、冗長データを生成するために、一時的な0データが必要か否かを判定し、必要であれば0データを追加して冗長データを生成する。データブロック分散配置ステップS14において、追記書きプログラム225は、一時的な0データの領域に割り当てられているストレージノードへ、0データの情報を通知する。
 図13は、非同期で実施する最新データによる冗長データ再生成処理の概要を示すフローチャートである。ホストデータブロックを保持する各ストレージノードの追記書きプログラム225は、現在のチェックポイント(CP)番号と当時の最新データ間で冗長データ生成が完了しているCP番号との差が、本非同期処理を実施するチェックポイント数Xに達しているか判定する(S71)。
 Xはチューニングパラメータであり、例えば、管理システム50から予め設定されている。Xが大きければ大きい程、非同期処理が走る回数が減り、システム負荷が減少する。一方、システムが一時的な0埋め情報を保持する期間が、長くなる。システム負荷やネットワーク負荷が軽い時に冗長データ再生成処理が実施されるように、Xは、動的に変更されてもよい。冗長データ再生成処理を即時に実行する場合には、Xの値は0に設定される。
 ステップS71の判定結果がNOの場合、追記書きプログラム225は、非同期処理を実行しない。ステップS71の判定結果がYESの場合、追記書きプログラム225は、ステップS72に進む。
 パリティノードの追記書きプログラム225は、一時書き込み状態のストライプを保持する複数のチェックポイント内で、一つのストライプ(チェックポイント)を選定し、そのチェックポイント番号を決定する(S72)。決定されたストライプは、関連データノードに通知される。例えば、追記書きプログラム225は、最新の冗長データへの更新のためにノード間データ移動が最小になるストライプ列を選択する。本例において、ストライプ内で最も多くの最新データブロックを保持するストライプが選択される。これにより、冗長データ更新に伴うネットワークデータ転送を最小化する。
 一部のデータノードの追記書きプログラム225は、中間冗長データを生成する(S74)。本ステップは、選択されたストライプに最新ホストデータブロックが含まれていないデータノードにより実行される。
 追記書きプログラム225は、異なるチェックポイントのホストデータブロックから、冗長データを更新するためのデータブロックを選択する。追記書きプログラム225は、最新ホストデータブロックと選択されたストライプ内のホストデータブロックとを選択する。選択されたストライプ内のホストデータブロックが0データである場合は、最新データブロックのみ選択される。
 冗長データ生成・損失データ回復プログラム221は、選択されたホストデータブロックから、中間冗長データを生成する(S74)。選択されたストライプ内のホストデータブロックが0データである場合、中間冗長データは、最新のホストデータブロックである。データ分割・再構成プログラム220は、中間冗長データをパリティノードへ転送する(S75)。
 パリティノードにおいて、データ分割・再構成プログラム220は、転送されてきた中間冗長データを受信すると、冗長データ生成・損失データ回復プログラム221と連携して、中間冗長データとステップS72で決定したストライプの冗長データとから、新冗長データを生成する(S76)。ストライプの各追記書きプログラム225は、新冗長データが新規LBAへ書き込まれると、不要となった旧ホストデータを削除する(S77)。ストライプの各追記書きプログラム225は、追記書き用メタデータ構造T27において、最新データ間冗長データ生成CP番号を現在のCP番号で更新し、処理を完了する。
 更に、図13に示す最新データによる冗長データ再生成処理と図7に示す再配置処理を組み合わせることが可能である。例えば、各ストレージノードが更新データの追記書き処理を行うことを前提とする。図7のステップS25において、各ストレージノードは、関係するホストデータブロック間で冗長データを生成する際に、最新データを選択する。再配置処理により冗長データの更新も完了するため、図13に示す最新データによる冗長データ再生成処理も完了する。
 以上のように、本実施例は、更新データを分散配置する時、ストライプを構成する穴あきデータが0埋めデータと仮定して、フルストライプライトを行い、その後、非同期処理において、冗長データに最新更新データを反映する。更に、本処理を、実施例1又は2で示した再配置処理と組み合わせる。これらにより、冗長データの更新に伴うノード間データ通信を低減し、性能を向上する。
 本実施例は、アプリケーションプログラム(アプリ)や仮想マシン(VM)を、オブジェクトの再配置先ストレージノード又はオブジェクトのコピーデータを保持するストレージノードへ配置する例、及び、それらノードへ割り当てられなかった場合に実行されるデータコピー方法を説明する。
 アプリ/VMを実行するストレージノードは、動的に割り当てることが可能である。例えば、アプリ/VMは、データを保持するノードへ割り当ててもいいし、それ以外のノードへ割り当ててもよい。図14は、アプリ/VMを割り当てる際のシステム構成図を示す。実施例1との相違点として、各ストレージノードは、リソース管理(割当・解放)プログラム225、コピー解放プログラム228及びコピー保持ノード管理表T28を保持する。
 再配置処理を行う前にアプリ/VMが配置されると、アプリ/VMは、複数のストレージノードに分散された分割データを、内部ネットワーク102を介して取得し、元のオブジェクトまたはその一部を再構成する。これは、元のオブジェクトまたはその一部のコピーを保持することを意味する。
 そこで、アプリ/VMの割当先ノードは、一例として、アプリ/VMが使用するデータのローカルノードが選択される。分散データの再配置処理は、アプリ/VMによる再構成済みオブジェクトが存在することを利用する。
 図7のステップS26~S31は、再配置のためのデータ移動を、アプリ/VMによる再構成済みデータを除いて実施する。この方法は、再構成済みデータを、コピー保持ノード管理表で管理する。つまり、データのコピーを作成する時に、コピー保持ノード管理表へコピー保持ノードの情報を登録し、再配置処理を実施する時に、コピー保持ノード管理表を参照し、利用する。これにより、再配置処理に伴うノード間ネットワーク通信データ量を削減する。また、コピーデータが既に存在する場合には、そのコピーデータ保持ノードへアプリ/VMを割り当て、データ移動しないことによる性能向上を狙う。
 図5Bは、コピー保持ノード管理表T28を示している。コピー保持ノード管理表T28は、コピーを保持するオブジェクト毎に作成され、例えば、オブジェクトの担当ストレージノードが、メタデータ管理表T20と共に保持する。コピー保持ノード管理表T28は、オブジェクト内のデータブロック単位のコピー保持ノードを保持する。
 コピー保持ノード管理表T28は、範囲(LBA)欄C42、コピー先構成ノード欄C44を有する。範囲(LBA)欄C42は、他ノードへコピーされたデータブロックのアドレス範囲(LBA)を示す。コピー先構成ノード欄C44は、データブロックのコピーを保持するストレージノードを示す。
 分散ストレージシステムは、アプリ/VMを割り当てる際、コピー保持ノード管理表T28を参照し、コピーが存在するストレージノードへ優先的にアプリ/VMを割り当て、ローカルリードによる性能向上を図る。
 コピーが存在しないストレージノードへアプリ/VMを割り当てる場合が考えられる。例えば、データおよびそのコピーを保持するノードの、CPUやメモリ等のリソースが少ない場合である。
 この場合、アプリ/VMを割り当てた後に、データ保持ノードからアプリ/VMを割り当てたノードに、アプリ/VMのアクセスに従って、データをコピーする。このデータコピー方法は、既存のコピーデータを保持するノード毎に異なるデータコピー範囲(アドレス)を決めて、データコピーを行う。これより、データコピーを高速化する。データコピー処理は、優先度の高いオブジェクトのデータを優先してコピーしてもよい。
 図15は、アプリ/VMの割当に伴うデータコピー処理の概要のフローチャートを示す。アプリ/VMのノード割当要求に応じて、複数のストレージノードのリソース管理(割当・解放)プログラム225が、連携して、割当ノードを決定する(S61)。割当ノードの選択の最優先はローカルノードであり、ローカルノードへの割り当てが不適切と判定されると、その他のストレージノードが選択される。
 例えば、ローカルノードのリソースに余裕がない場合、他のストレージを選択する。選択される他のストレージノードは、リソースに余裕があるストレージノードである。リソースは、例えば、CPU、メモリ及び/又は通信インタフェースであり、選択は、それらの利用率と閾値との比較結果に基づく。割当要求は、アプリ/VMが参照するオブジェクトの情報を含む。
 アプリ/VM割当要求を受けたノードのリソース管理(割当・解放)プログラム225は、アプリ/VM割当先ノードが、コピーを含んだデータ保持ノードかどうかを、コピー保持ノード管理表T28を使用して確認する(S62)。ステップS62の確認結果がYESの場合、リソース管理(割当・解放)プログラム225は、コピー保持ノードへ、アプリ/VMを割り当て(S64)、処理を終了する。
 ステップS62の確認結果がNOの場合、リソース管理(割当・解放)プログラム225は、アプリ/VMを新規ノードへ割り当て(S63)、メタデータ管理表T20を参照して、コピー処理が必要なオブジェクト間の優先度を決定する(S65)。
 コピー解放プログラム228が、コピーが必要なデータブロック毎に、コピー保持ノード間のリソース使用状況及び/又はネットワーク負荷を考慮しながら、データコピー範囲を決定する(S66)。例えば、各ストレージノードのCPU使用率、メモリ使用量、及び又はネットワーク負荷から、各ストレージノードの比率を決定する。この比率に従って、各ストレージノードのデータコピー範囲(コピーデータ量)を決定する。
 例えば、三つのデータコピー保持ノードが存在し、それらの間の比率が3:2:1と決定された場合、そのデータコピー範囲(アドレス範囲)は、3:2:1の割合と決定される。その後、コピー解放プログラム228は、データコピー処理を行う(S67)。
 最後に、コピー解放プログラム228が、コピー保持ノード管理表T28において、当該オブジェクトIDに対して新規ノードを追加して、処理を完了する。コピー解放プログラム228は、コピーデータの削除を、LRUなどのアルゴリズムを用いて削除する。この時、コピー保持ノード管理表T28からのノードIDの削除、全てのコピーが無くなればそのオブジェクトIDのエントリの削除を先に行い、その後にデータの削除を行う。
 本実施例によれば、アプリ/VMの割当を、再配置処理を行ったノードまたはコピーデータを保持するストレージノードへ配置し、更に、前記ストレージノードへ割り当てられなかった場合には、データコピーを、コピー保持ノードからデータコピー範囲を決めてから、実施する。更に、オブジェクト毎の優先度を考慮することで、優先度の高いオブジェクトの性能低下を回避する。
 また、データ再配置時に、データコピーを考慮して実施し、コピーデータの高信頼データ再配置時のデータ移動を止めることで、高信頼データ再配置時のネットワーク負荷を回避する。以上により、アプリ/VMのリード性能を向上させる。
 本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示すとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。

Claims (13)

  1.  ネットワークを介して接続された複数のストレージノード、を含むストレージシステムであって、
     第1ストレージノードと、第2ストレージノードと、第3ストレージノードと、を含み
     前記第1ストレージノードは、オブジェクトのライトデータを受信し、
     前記第1ストレージノードは、前記ライトデータから複数の分散配置ライトデータブロックを生成し、前記複数の分散配置ライトデータブロックから第1冗長データブロックを生成し、
     前記第1ストレージノードは、前記複数の分散配置ライトデータブロックそれぞれと前記第1冗長データブロックとを異なるストレージノードに送信し、
     前記異なるストレージノードは前記第2ストレージノードと前記第3ストレージノードとを含み、前記第1冗長データブロックの配置先は前記第3ストレージノードであり、
     前記第2ストレージノードは、保持している分散配置ライトデータブロックから、複数の分散配置ライトデータブロックを選択し、前記選択された複数の分散配置ライトデータブロックの再配置先ストレージノードが異なり、
     前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックから第2冗長データブロックを生成し、
     前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックそれぞれを前記再配置先ストレージノードに再配置し、さらに、前記第2冗長データブロックを前記再配置先ストレージノード以外のストレージノードに配置することで、前記第1ストレージノードが受信した前記オブジェクトの前記ライトデータが前記複数のストレージノードの何れか1つに再配置される、ストレージシステム。
  2.  請求項1に記載のストレージシステムであって、
     前記第1ストレージノードは、前記オブジェクトの識別子に基づいて前記異なるストレージノードを決定し、
     前記第2ストレージノードは、前記選択された複数の分散配置ライトデータブロックそれぞれのオブジェクトの識別子に基づいて、前記再配置先ストレージノードと前記第2冗長データブロックを配置する前記ストレージノードとを決定する、ストレージシステム。
  3.  請求項2に記載のストレージシステムであって、
     前記異なるストレージノードは、複数のオブジェクトからなるオブジェクト群と予め関連付けられている、ストレージシステム。
  4.  請求項1に記載のストレージシステムであって、
     分散配置データブロックを保持しているストレージノードは、前記分散配置データブロックが再配置され、前記分散配置データブロックから生成される冗長データブロックが配置された後に、前記分散配置データブロックを削除する、ストレージシステム。
  5.  請求項1に記載のストレージシステムであって、
     前記第2ストレージノードは、同一ストレージノードに送信する複数ライトデータブロックを1回で送信する、ストレージシステム。
  6.  請求項1に記載のストレージシステムであって、
     前記第2ストレージノードは、前記再配置をオブジェクトの予め定められた優先度に基づいて選択した1又は複数のオブジェクトのライトデータブロックについて実行する、ストレージシステム。
  7.  請求項1に記載のストレージシステムであって、
     前記第2ストレージノードは、前記再配置を、オブジェクトのアクセス頻度に基づいて選択した1又は複数のオブジェクトのライトデータブロックについて実行する、ストレージシステム。
  8.  請求項1に記載のストレージシステムであって、
     前記複数のストレージノードは、それぞれ、旧データを消去することなく更新データを追記し、メタデータによりデータ更新を管理し、
     前記第1ストレージノードは、
     前記受信したライトデータの更新データを受信し、
     前記ライトデータを削除することなく、前記更新データから複数の更新ライトデータブロックを生成し、前記複数の更新ライトデータブロックから第3冗長データブロックを生成し、
     前記第3冗長データブロックを前記第3ストレージノードに配置し、
     前記更新ライトデータブロックそれぞれを、前記異なるストレージノードにおける、前記第3ストレージノード以外のストレージノードに配置し、
     前記第3ストレージノードは、前記異なるストレージノードの少なくとも一部から受信した、最新ライトデータを使用して生成された中間冗長データにより、前記第3冗長データブロックを更新し、最新冗長データブロックを生成する、ストレージシステム。
  9.  請求項8に記載のストレージシステムであって、
     前記更新データが、前記受信したライトデータの一部の更新データである場合、
     前記第1ストレージノードは、前記更新データ内のデータからなるデータブロックと、ダミーデータからなるダミーデータブロックと、を含むように、前記複数の更新ライトデータブロックを生成し、
     前記ダミーデータブロックの配置において、前記ダミーデータブロックを配置先ストレージノードに送信することなく前記ダミーデータブロックの通知を行い、
     前記ダミーデータブロックの配置先ストレージノードは、前記ダミーデータブロックを格納することなく管理情報により管理する、ストレージシステム。
  10.  請求項9に記載のストレージシステムであって、
     前記第3冗長データブロックは、複数チェックポイントのストライプにおいて、最も多くの最新データブロックを含むストライプの冗長データブロックである、ストレージシステム。
  11.  請求項8に記載のストレージシステムであって、
     前記第2ストレージノードは、最新データから前記複数の分散配置ライトデータブロックを選択する、ストレージシステム。
  12.  請求項1に記載のストレージシステムであって、
     ホストプログラムを配置するためのストレージノードとして、当該ホストプログラムが使用するオブジェクトの再配置先ストレージノードの優先度は、当該ホストプログラムが使用するオブジェクトを保持しないストレージノードよりも高い、ストレージシステム。
  13.  コードを含む、計算機読み取り可能な非一時的記憶媒体であって、前記コードは、ストレージシステムにおけるプロセッサにより実行されることで、前記ストレージシステムに処理を実行させ、
     前記ストレージシステムは、ネットワークを介して接続された第1ストレージノードと、第2ストレージノードと、第3ストレージノードと、を含み、
     前記処理は、
     前記第1ストレージノードが、オブジェクトのライトデータを受信し、
     前記第1ストレージノードが、前記ライトデータから複数の分散配置ライトデータブロックを生成し、前記複数の分散配置ライトデータブロックから第1冗長データブロックを生成し、
     前記第1ストレージノードが、前記複数の分散配置ライトデータブロックそれぞれと前記第1冗長データブロックとを異なるストレージノードに送信し、
     前記異なるストレージノードは前記第2ストレージノードと前記第3ストレージノードとを含み、前記第1冗長データブロックの配置先は前記第3ストレージノードであり、
     前記第2ストレージノードが、保持している分散配置ライトデータブロックから、複数の分散配置ライトデータブロックを選択し、前記選択された複数の分散配置ライトデータブロックの再配置先ストレージノードが異なり、前記選択された複数の分散配置ライトデータブロックから生成される第2冗長データブロックの配置先が前記第3ストレージノードであり、
     前記第2ストレージノードが、前記選択された複数の分散配置ライトデータブロックから前記第2冗長データブロックを生成し、
     前記第2ストレージノードが、前記選択された複数の分散配置ライトデータブロックそれぞれを前記再配置先ストレージノードに再配置し、さらに、前記第2冗長データブロックを前記再配置先ストレージノード以外のストレージノードに配置することで、前記第1ストレージノードが受信した前記オブジェクトの前記ライトデータが前記複数のストレージノードの何れかに1つ再配置される、記憶媒体。
PCT/JP2016/055873 2016-02-26 2016-02-26 ストレージシステム WO2017145375A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2016/055873 WO2017145375A1 (ja) 2016-02-26 2016-02-26 ストレージシステム
US15/777,782 US10394484B2 (en) 2016-02-26 2016-02-26 Storage system
JP2018501544A JP6653370B2 (ja) 2016-02-26 2016-02-26 ストレージシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/055873 WO2017145375A1 (ja) 2016-02-26 2016-02-26 ストレージシステム

Publications (1)

Publication Number Publication Date
WO2017145375A1 true WO2017145375A1 (ja) 2017-08-31

Family

ID=59684991

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/055873 WO2017145375A1 (ja) 2016-02-26 2016-02-26 ストレージシステム

Country Status (3)

Country Link
US (1) US10394484B2 (ja)
JP (1) JP6653370B2 (ja)
WO (1) WO2017145375A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021046693A1 (zh) * 2019-09-09 2021-03-18 华为技术有限公司 存储系统中数据处理方法、装置以及存储系统
US11416356B2 (en) 2020-04-22 2022-08-16 Netapp, Inc. Network storage failover systems and associated methods
US11768775B2 (en) * 2021-07-28 2023-09-26 Netapp, Inc. Methods and systems for managing race conditions during usage of a remote storage location cache in a networked storage system
US11537613B1 (en) * 2021-10-29 2022-12-27 Snowflake Inc. Merge small file consolidation
US11593306B1 (en) 2021-10-29 2023-02-28 Snowflake Inc. File defragmentation service

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000215007A (ja) * 1999-01-26 2000-08-04 Nec Corp ディスクアレイ装置
JP2003271317A (ja) * 2002-03-18 2003-09-26 Hitachi Ltd ディスクアレイサブシステム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609176B1 (en) * 1999-12-27 2003-08-19 Kabushiki Kaisha Toshiba Disk control system and data rearrangement method
ATE331360T1 (de) * 2000-09-20 2006-07-15 Yutaka Yasukura Verschlüsselungs- und entschlüsselungsverfahren von elektronischen informationen unter verwendung von zufälligen permutationen
JP2005148854A (ja) * 2003-11-11 2005-06-09 Hitachi Ltd ファイルシステム及びプログラム
JP4146380B2 (ja) * 2004-03-29 2008-09-10 東芝ソリューション株式会社 ストレージシステム、ブロック再配置制御方法及びプログラム
US8019799B1 (en) * 2004-04-12 2011-09-13 Symantec Operating Corporation Computer system operable to automatically reorganize files to avoid fragmentation
US7546342B2 (en) 2004-05-14 2009-06-09 Microsoft Corporation Distributed hosting of web content using partial replication
US8051362B2 (en) * 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
US8825980B2 (en) * 2012-03-21 2014-09-02 International Business Machines Corporation Consideration of adjacent track interference and wide area adjacent track erasure during disk defragmentation
IN2013MU03094A (ja) * 2013-09-27 2015-07-17 Tata Consultancy Services Ltd

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000215007A (ja) * 1999-01-26 2000-08-04 Nec Corp ディスクアレイ装置
JP2003271317A (ja) * 2002-03-18 2003-09-26 Hitachi Ltd ディスクアレイサブシステム

Also Published As

Publication number Publication date
US10394484B2 (en) 2019-08-27
US20180373435A1 (en) 2018-12-27
JP6653370B2 (ja) 2020-02-26
JPWO2017145375A1 (ja) 2018-08-30

Similar Documents

Publication Publication Date Title
US10977124B2 (en) Distributed storage system, data storage method, and software program
US12067256B2 (en) Storage space optimization in a system with varying data redundancy schemes
US6912537B2 (en) Dynamically changeable virtual mapping scheme
US10459638B2 (en) Computer system that generates group information and redundant code based on user data and changes the group information and redundant code based on transmission data, control method for computer system, and recording medium
US6779095B2 (en) Apparatus and method for instant copy of data using pointers to new and original data in a data location
JP4809040B2 (ja) ストレージ装置及びスナップショットのリストア方法
US6804755B2 (en) Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
JP2022504790A (ja) データブロックのイレイジャーコーディングコンテンツ主導分散
JP6653370B2 (ja) ストレージシステム
US20090077327A1 (en) Method and apparatus for enabling a NAS system to utilize thin provisioning
US20170177224A1 (en) Dynamic storage transitions employing tiered range volumes
US11409454B1 (en) Container ownership protocol for independent node flushing
JPWO2018029820A1 (ja) 計算機システム
US10620843B2 (en) Methods for managing distributed snapshot for low latency storage and devices thereof
US11899533B2 (en) Stripe reassembling method in storage system and stripe server
US20180307426A1 (en) Storage apparatus and storage control method
JP6974281B2 (ja) ストレージシステム及びストレージ制御方法
US11809720B2 (en) Techniques for storage management
US20210103400A1 (en) Storage system and data migration method
WO2016013075A1 (ja) ストレージ、計算機およびその制御方法
JP2022020744A (ja) ストレージシステム及びストレージ制御方法
WO2017212515A1 (ja) ストレージシステム、計算機、およびストレージ制御方法
US20240220378A1 (en) Information processing system and information processing method

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2018501544

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

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

Ref document number: 16891532

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 16891532

Country of ref document: EP

Kind code of ref document: A1