Storage system, data writing method, data reading method and program
By generating data and parity fragments and distributing them across nodes with varying read speeds, the storage system optimizes data retrieval time in systems with mixed read speeds, ensuring rapid data access.
Patent Information
- Application Number
- JP2024010935
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-01-29
- Publication Date
- 2025-08-08
AI Technical Summary
When multiple data items for generating data to be read are stored in a storage system and the data read speed differs depending on the storage location, it is desirable to minimize the time required for data retrieval.
A storage system generates data fragments and parity fragments capable of restoring the target data with redundancy, writing these fragments to storage nodes with varying read speeds, where critical fragments are stored in fast nodes and others in slower nodes, optimizing data retrieval.
This approach reduces the time required to read data by leveraging faster nodes for critical fragments, ensuring quick data retrieval even when read speeds vary across storage locations.
Smart Images

Figure 2025116486000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to a storage system, a data writing method, a data reading method, and a program. [Background technology]
[0002] In some cases, a plurality of data items for generating data to be read are stored in a storage system. For example, Patent Document 1 describes that divided data items and parity items are transferred to a plurality of storage devices for storing data and storage devices for storing parity items. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Publication No. 8-123628 Summary of the Invention [Problem to be solved by the invention]
[0004] When multiple data for generating the data to be read are stored in a storage system and the data read speed differs depending on the storage location of the data, it is preferable that the time required to read the data to be read be as short as possible.
[0005] An example of an object of the present invention is to provide a storage system, a data writing method, a data reading method, and a program that can solve the above-mentioned problems. [Means for solving the problem]
[0006] According to a first aspect of the present invention, a storage system comprises a fragment generation means for generating a number of fragments from target data to be written, the number being either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data, in a number that is capable of restoring the target data and that also has redundancy; and a write processing means for writing each of the multiple fragments, which is a combination that can restore at least the target data, to a storage node in a group with a relatively fast data read speed, and for writing the remaining fragments to a storage node in a group with a relatively slow data read speed.
[0007] According to a second aspect of the present invention, a storage system comprises a read processing means for reading multiple data from a storage in which, among the data generated from the target data to be read, at least each data combination that can restore the target data is stored in a storage node of a group having a relatively fast data read speed, and the remaining data is stored in a storage node of a group having a relatively slow data read speed, and a target data restoration means for restoring the target data from the combination of data when it is determined that reading of the data combination that can restore the target data to be read has been completed.
[0008] According to a third aspect of the present invention, a data writing method includes a computer generating, from target data to be written, a number of fragments that are either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data, that are capable of restoring the target data and that also have redundancy, and writing each of the plurality of fragments, which is a combination that can restore at least the target data, to a storage node in a group with a relatively fast data read speed, and writing the remaining fragments to a storage node in a group with a relatively slow data read speed.
[0009] According to a fourth aspect of the present invention, a data reading method includes a computer reading a plurality of data from a storage in which, of the data generated from the target data to be read, at least each data combination that can restore the target data is stored in a storage node of a group having a relatively fast data reading speed, and the remaining data is stored in a storage node of a group having a relatively slow data reading speed, and when it is determined that reading of the data combination that can restore the target data to be read has been completed, restoring the target data from the combination of the data.
[0010] According to a fifth aspect of the present invention, a program causes a computer to generate a number of fragments from target data to be written, the fragments being either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data, in a number that is capable of restoring the target data and that also has redundancy; and writes, of the multiple fragments, a combination of fragments that can restore at least the target data to a storage node in a group with a relatively fast data read speed, and writes the remaining fragments to a storage node in a group with a relatively slow data read speed.
[0011] According to a sixth aspect of the present invention, a program causes a computer to read a plurality of data from a storage in which, of the data generated from the target data to be read, at least each data combination that can restore the target data is stored in a storage node of a group with a relatively fast data read speed, and the remaining data is stored in a storage node of a group with a relatively slow data read speed, and when it is determined that reading of the data combination that can restore the target data to be read has been completed, restore the target data from the combination of that data. [Effects of the Invention]
[0012] According to the present invention, when multiple data for generating the data to be read are stored in a storage system and the data read speed differs depending on the storage location of the data, it is expected that the time required to read the data to be read will be relatively short. [Brief explanation of the drawings]
[0013] [Figure 1] FIG. 1 is a diagram illustrating an example of a configuration of an information processing system according to at least one embodiment. [Figure 2] FIG. 1 illustrates an example of the configuration of a storage system according to at least one embodiment. [Figure 3] 10A and 10B are diagrams illustrating an example of input and output of data from each unit of a storage system when a control unit according to at least one embodiment writes target data to a storage unit. [Figure 4] FIG. 10 is a diagram illustrating a first example of input and output of data to and from each unit of a storage system when a control unit according to at least one embodiment reads target data from a storage unit. [Figure 5] FIG. 10 is a diagram illustrating a second example of input and output of data to and from each unit of a storage system when a control unit according to at least one embodiment reads target data from a storage unit. [Figure 6] FIG. 10 is a diagram illustrating an example of a procedure for a process in which a storage system according to at least one embodiment writes target data to a storage unit. [Figure 7] FIG. 10 is a diagram illustrating an example of a procedure for a storage system according to at least one embodiment to read target data from a storage unit. [Figure 8] FIG. 10 is a diagram illustrating another example of the procedure of the process in which the storage system according to at least one embodiment writes target data to the storage unit 12. [Figure 9] FIG. 10 is a diagram illustrating another example of the configuration of a storage system according to at least one embodiment. [Figure 10]FIG. 10 is a diagram illustrating yet another example of the configuration of a storage system according to at least one embodiment. [Figure 11] FIG. 1 is a diagram illustrating an example of a processing procedure in a data writing method according to at least one embodiment. [Figure 12] FIG. 1 is a diagram illustrating an example of a processing procedure in a data reading method according to at least one embodiment. [Figure 13] FIG. 1 illustrates an example configuration of a computer according to at least one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0014] The following describes embodiments of the present invention, but the following embodiments do not limit the scope of the invention as claimed. Furthermore, not all of the combinations of features described in the embodiments are necessarily essential to the solution of the invention.
[0015] First Embodiment 1 is a diagram showing an example of the configuration of an information processing system according to at least one embodiment. In the configuration shown in FIG. 1, the information processing system 1 includes a storage system 10 and a client device 20. The storage system 10 stores data. The storage system 10 may be configured as a single device, or may be configured as a combination of multiple devices.
[0016] The client device 20 requests the storage system 10 to store and read data. For example, the client device 20 may send data write requests and data read requests to the storage system 10 using a known file transfer protocol. The client device 20 may be configured using a computer such as a personal computer (PC).
[0017] The information processing system 1 may be configured as a cloud system or a LAN (Local Area Network) system, and the storage system 10 may be a system that provides storage functions on a network. Alternatively, the storage system 10 may be a storage system dedicated to the client device 20.
[0018] Fig. 2 is a diagram showing an example of the configuration of storage system 10. In the configuration shown in Fig. 2, storage system 10 includes a communication unit 11, a memory unit 12, and a control unit 13. The memory unit 12 includes a first memory unit 121 and a second memory unit 122. The control unit 13 includes a fragment generation unit 131, a write processing unit 134, a read processing unit 135, and a target data restoration unit 136. The fragment generation unit 131 includes a data division processing unit 132 and an encoding processing unit 133. The target data restoration unit 136 includes a decoding processing unit 137 and a data combination processing unit 138.
[0019] The communication unit 11 communicates with other devices under the control of the control unit 13. In particular, the communication unit 11 receives data write requests and data read requests from the client device 20. In addition, the communication unit 11 transmits the requested data to the requesting client device 20 as a response to the data read request from the client device 20.
[0020] The memory unit 12 stores data and reads out the stored data under the control of the control unit 13. In the memory unit 12, the first memory unit 121 and the second memory unit 122 have different data read speeds. The first memory unit 121 has a faster data read speed than the second memory unit 122.
[0021] For example, the storage unit 12 may be configured using a plurality of storage devices with different data read speeds. If these plurality of storage devices are classified into a group with relatively fast data read speeds and a group with relatively slow data read speeds, the storage devices in the group with relatively fast data read speeds may constitute the first storage unit 121, and the storage devices in the group with relatively slow data read speeds may constitute the second storage unit 122. For example, the first storage unit 121 may be configured by a storage device based on an SSD (Solid State Drive), and the second storage unit 122 may be configured by a storage device based on an HDD (Hard Disk Drive). The storage device that constitutes the storage unit 12 is an example of a storage.
[0022] The control unit 13 controls each unit of the storage system 10 to perform various processes. The control unit 13 may be configured using a computer. In this case, the functions of the control unit 13 may be executed by a CPU (Central Processing Unit) provided in the computer reading and executing a program. Furthermore, the functions of the communication unit 11 may be executed using the communication function of the computer.
[0023] The fragment generation unit 131 generates a data fragment and a parity fragment from the data to be written. Fragment generation unit 131 is an example of fragment generation means.
[0024] Data that is to be written to the storage system 10 and data that is to be read from the storage system 10 are also referred to as target data. Data to be written (that is, data to be written to the storage system 10) is also referred to as data to be written. Data for which a data write request has been made by the client device 20 is an example of data to be written.
[0025] Data to be read (that is, data to be read from the storage system 10) is also referred to as data to be read. Data for which a data read request has been made by the client device 20 corresponds to an example of data to be read. In this way, the same target data is also referred to as write target data when writing, and as read target data when reading.
[0026] The data fragments referred to here are pieces of data obtained by dividing the target data (data to be written). The parity fragment here refers to data used to restore at least a portion of the target data. For example, the parity fragment may be parity data for error correction for the target data or a data fragment. Data fragments and parity fragments are also collectively referred to as fragments.
[0027] The process of generating parity fragments from target data by fragment generation unit 131 can be considered as data encoding. Data encoding here refers to converting data according to certain conversion rules. In the following, an example will be described in which fragment generating unit 131 generates data, such as parity data in erasure coding, from which part of the target data can be restored by using the data fragment alone. However, the data fragments generated by the fragment generation unit 131 are not limited to specific ones, and can be various data from which the target data or a portion thereof can be restored. For example, the fragment generation unit 131 may generate, as a data fragment, a bit string for error correction for a portion of the target data. In this case, if corruption occurs in the data, the storage system 10 may perform error correction on the corrupted portion of the target data using the error correction bit string to restore the original data.
[0028] Fragment generation unit 131 generates a number of fragments that allows the target data to be restored and that also has redundancy. The following describes an example in which the fragment generation unit 131 divides the target data (data to be written) into m pieces, generates data fragments for each of the m pieces of divided data, and generates n parity fragments. Here, m is an integer greater than or equal to 2, and n is an integer greater than or equal to 1.
[0029] For example, the fragment generation unit 131 may generate data fragments and parity fragments using an erasure coding technique, so that even if a failure occurs in reading up to n data fragments out of m data fragments when reading data, the target data can be restored.
[0030] The m data fragments generated by fragment generation unit 131 are examples of data fragments that can restore the target data and have no redundancy. Also, the n parity fragments generated by fragment generation unit 131 can be considered as redundant data with respect to restoring the target data from the fragments.
[0031] However, the multiple fragments generated by fragment generation unit 131 are not limited to specific ones, and can be a variety of multiple pieces of data that can restore the target data and have redundancy regarding the generation of the target data. For example, fragment generation unit 131 may divide the target data into m pieces to generate m data fragments, and then replicate (mirror) these m data fragments to generate a total of 2m data fragments. In this case, the m data fragments obtained by dividing the target data into m pieces can be treated as a combination of fragments from which the target data can be restored, and the replicated data fragments can be treated as the remaining fragments.
[0032] Here, restoring the target data from the fragment means generating the target data that is the source of the fragment. For example, the target data can be restored by dividing the target data into m pieces and combining the m data fragments generated in the same order as when the data was divided.
[0033] The data division processing unit 132 generates the above-mentioned data fragments. The encoding unit 133 generates the parity fragment described above.
[0034] The write processing unit 134 writes the fragment to the storage unit 12 . Specifically, write processing unit 134 writes each of the multiple fragments generated by fragment generation unit 131, at least the combination of fragments from which the target data can be restored, to a storage node in a group with a relatively fast data read speed. Also, write processing unit 134 writes the remaining fragments (fragments other than the fragments written to storage nodes in the group with a relatively fast data read speed) to a storage node in a group with a relatively slow data read speed. Here, the storage nodes in a certain group are the storage nodes included in that group. The write processing unit 134 is an example of a write processing means.
[0035] The storage node here refers to a group of parts of the memory unit 12 as seen from the control unit 13. The write processing unit 134 selects one of the storage nodes of the memory unit 12 and writes data to the selected storage node.
[0036] In particular, the storage nodes are divided into groups of storage nodes with relatively fast data read speeds and storage nodes with relatively slow data read speeds. The first memory unit 121 corresponds to the group with relatively fast data read speeds, and the storage nodes of the group with relatively fast data read speeds are included in the first memory unit 121. The second memory unit 122 corresponds to the group with relatively slow data read speeds, and the storage nodes of the group with relatively slow data read speeds are included in the second memory unit 122.
[0037] The write processing unit 134 selects either a storage node in a group having a relatively fast data read speed (storage node in the first memory unit 121) or a storage node in a group having a relatively slow data read speed (storage node in the second memory unit 122), and writes data to the selected storage node.
[0038] For example, consider a case where the data division processing unit 132 divides the target data into m pieces to generate m data fragments without redundancy, and the encoding processing unit 133 generates n parity fragments. In this case, the write processing unit 134 may write the m data fragments to storage nodes in a group with a relatively fast data read speed, and write the n parity fragments to storage nodes in a group with a relatively slow data read speed.
[0039] When the storage system 10 restores target data (read target data) in accordance with a data read request from the client device 20, the read processing unit 135 reads a plurality of fragments from the memory unit 12. At this time, the fragments read from the memory unit 12 by the read processing unit 135 correspond to an example of data necessary to generate the target data. The read processing unit 135 corresponds to an example of a read processing means.
[0040] Specifically, the read processing unit 135 starts reading all fragments generated from the target data. For example, the read processing unit 135 references metadata stored in each storage node and selects multiple storage nodes that store fragments generated from the target data. The read processing unit 135 then reads the fragments generated from the target data from each of the selected multiple storage nodes. The read processing unit 135 may be configured to execute the process of reading fragments from each of the multiple storage nodes in parallel.
[0041] Then, when it is determined that reading of the combination of fragments from which the target data can be restored has been completed, the read processing unit 135 ends reading of all fragments generated from the target data. The following describes an example in which the determination as to whether or not reading of the combination of fragments from which the target data can be restored has been completed is performed by the read processing unit 135. However, the functional unit that determines whether or not reading of the combination of fragments from which the target data can be restored has been completed is not limited to the read processing unit 135. For example, the target data restoration unit 136 may determine whether or not reading of the combination of fragments from which the target data can be restored has been completed.
[0042] When it is determined that the reading of the combinations of fragments from which the target data can be restored has been completed, the target data restoration unit 136 generates the target data using the combinations of fragments. The target data restoration unit 136 corresponds to an example of a read target data generation means.
[0043] When the read processing unit 135 reads a parity fragment, the decoding processing unit 137 restores the target data portion from the parity fragment. The decoding processing unit 137 performs decoding, which corresponds to the inverse conversion of the data encoding performed by the encoding processing unit 133, to restore the target data portion from the parity fragment. The decoding processing unit 137 may restore data fragments from parity fragments, or may restore data corresponding to multiple data fragments from parity fragments.
[0044] The data combination processor 138 combines multiple data fragments to restore the target data. For example, the data combination processor 138 combines m data fragments generated by dividing the target data into m pieces in the same order as the data was divided, thereby restoring the target data. The data fragments used by the data combining processor 138 to restore the target data may include the data fragments restored from the parity fragments by the decoding processor 137.
[0045] 3 is a diagram showing an example of data input / output of each unit of storage system 10 when control unit 13 writes target data to memory unit 12. FIG. 3 shows an example in which control unit 13 writes fragments generated from the target data to memory unit 12, rather than writing the target data directly to memory unit 12. Writing a fragment of the target data to memory unit 12 in this way is also referred to as writing the target data to memory unit 12. The fragment of the target data referred to here is a fragment generated from the target data.
[0046] In the example of FIG. 3, the communication unit 11 receives a data write request from the client device 20, and outputs the target data (write target data) included in the received data write request to the data division processing unit 132. The data division processing unit 132 divides the target data into nine pieces to generate nine data fragments. In the example of Fig. 3, the number of pieces into which the target data is divided, m = 9. The data division processing unit 132 outputs the nine generated data fragments to the encoding processing unit 133.
[0047] The encoding processing unit 133 generates three parity fragments based on the nine data fragments acquired from the data division processing unit 132. In the example of Fig. 3, the number of parity fragments generated by the encoding processing unit 133 is n = 3. The encoding processing unit 133 outputs the nine data fragments acquired from the data division processing unit 132 and the three generated parity fragments to the write processing unit 134.
[0048] The write processing unit 134 writes the nine data fragments and three parity fragments acquired from the encoding processing unit 133 to the storage unit 12. The write processing unit 134 refers to the node group information and determines, for each fragment (each data fragment and each parity fragment), the storage node to which the fragment should be written. The write processing unit 134 then writes each fragment to the determined storage node.
[0049] Here, in the node group information, the storage nodes of the storage unit 12 are classified into group #0 and group #1. Group #0 is a group of storage nodes with a relatively fast data read speed. Group #1 is a group of storage nodes with a relatively slow data read speed. A group of storage nodes is also called a node group.
[0050] The write processing unit 134 writes data fragments to storage nodes in group #0 and writes parity fragments to storage nodes in group #1. 3 shows an example in which the data division processing unit 132 divides the target data into nine fragments, which is the number of storage nodes in group #0, to generate nine data fragments. Also, FIG. 3 shows an example in which the encoding processing unit 133 generates three parity fragments, which is the number of storage nodes in group #1. The write processing unit 134 writes the nine data fragments to the nine storage nodes in group #0 in a one-to-one relationship. Also, the write processing unit 134 writes the three parity fragments to the three storage nodes in group #1 in a one-to-one relationship.
[0051] The storage node of group #0 is also referred to as storage node 310. When distinguishing between the nine storage nodes of group #0, they are also referred to as storage node 311, storage node 312, . . . , storage node 319. The storage node in group #1 is also referred to as storage node 320. When distinguishing between the three storage nodes in group #2, they are also referred to as storage node 321, storage node 322, and storage node 323. The fragments stored in a storage node are also referred to as the fragments of that storage node.
[0052] However, the number (m) of pieces into which the data division processing unit 132 divides the target data is not limited to the same number as the number of storage nodes in group #0. For example, the data division processing unit 132 may divide the target data into a number of pieces that is less than the number of storage nodes in group #0, and generate a data fragment for each piece of data obtained by division.
[0053] In this case, the write processing unit 134 may select m storage nodes from among the storage nodes in group #0 and write m data fragments to the selected m storage nodes in a one-to-one correspondence. In this case, the write processing unit 134 may write the parity fragment to a storage node in group #0 other than the storage node to which the data fragment was written. Alternatively, the write processing unit 134 may write all of the parity fragments to the storage nodes in group #1.
[0054] Furthermore, the number (n) of parity fragments generated by the encoding processing unit 133 is not limited to the same number as the number of storage nodes in group #1. For example, the encoding processing unit 133 may generate parity fragments in a number less than the number of storage nodes in group #1. In this case, the write processing unit 134 may select n storage nodes from among the storage nodes in group #1 and write n parity fragments to the selected n storage nodes in a one-to-one relationship.
[0055] 3, each storage node stores its own metadata, which is data indicating information about the storage node, such as information indicating the data stored in the storage node.
[0056] 4 is a diagram showing a first example of input and output of data to and from each unit of the storage system 10 when the control unit 13 reads target data from the memory unit 12. FIG. 4 shows an example in which no failure occurs when reading a fragment from the memory unit 12. 4, control unit 13 does not read the target data itself from storage unit 12, but reads multiple fragments generated from the target data from storage unit 12 and restores the target data from the read fragments. Reading fragments from storage unit 12 and restoring the target data in this way is also referred to as reading the target data from storage unit 12.
[0057] Fig. 4 shows an example in which the communication unit 11 receives, from the client device 20, a read request for the target data that the control unit 13 wrote to the storage unit 12 in the example of Fig. 3. The read processing unit 135 reads a fragment of the target data (read target data) from the storage unit 12 in response to the data read request.
[0058] In particular, the read processing unit 135 starts reading all fragments of the target data (all fragments generated from the target data). The read processing unit 135 completes reading each data fragment stored in the storage nodes of group #0 before completing reading each parity fragment stored in the storage nodes of group #1.
[0059] As a result, the read processing unit 135 has acquired all nine data fragments, and none of the three parity fragments have arrived yet. The nine data fragments are an example of a data combination from which the target data can be restored. When the read processing unit 135 reads all or some of the fragments of the target data sequentially, it may refer to the node group information and give priority to reading fragments written to storage nodes in group #0.
[0060] The read processing unit 135 outputs the nine acquired data fragments to the decoding processing unit 137. The decoding processing unit 137 outputs the nine data fragments acquired from the read processing unit 135 to the data combining processing unit 138. In the example of Fig. 4, the decoding processing unit 137 does not receive a parity fragment from the read processing unit 135. Therefore, the decoding processing unit 137 does not decode the parity fragment.
[0061] The data combining unit 138 combines the nine data fragments acquired from the decoding unit 137 to restore the target data. The data combining unit 138 then outputs the restored target data to the communication unit 11. The communication unit 11 transmits the target data acquired from the data combination processing unit 138 to the requesting client device 20 in response to the data read request from the client device 20.
[0062] 5 is a diagram showing a second example of data input / output to and from each unit of the storage system 10 when the control unit 13 reads target data from the memory unit 12. FIG. 5 shows an example in which a failure occurs when reading a fragment from the memory unit 12. As in the case of FIG. 4, in the example of FIG. 5, control unit 13 reads out from storage unit 12 a plurality of fragments generated from the target data, and restores the target data from the read fragments.
[0063] 4, Fig. 5 also shows an example in which communication unit 11 receives from client device 20 a read request for the target data that control unit 13 wrote to storage unit 12 in the example of Fig. 3. In response to the data read request, read processing unit 135 reads fragments of the target data (read target data) from storage unit 12. In particular, read processing unit 135 starts reading all fragments of the target data (all fragments generated from the target data).
[0064] Unlike the case of Fig. 4, in the example of Fig. 5, a failure occurs in reading the data fragment from storage node 318. Due to this failure, in the example of Fig. 5, read processing unit 135 completes reading the parity fragment from storage node 322 before completing reading the data fragment from storage node 318.
[0065] As a result, the read processing unit 135 has acquired eight data fragments from storage nodes 311 to 317 and 319, and one parity fragment from storage node 322. Meanwhile, one data fragment from storage node 318 and two parity fragments from storage nodes 321 and 323 have not yet arrived at the read processing unit 135.
[0066] Here, the parity fragment of storage node 322 is assumed to be a parity fragment from which the data fragment of storage node 318 can be restored. The combination of eight data fragments from storage nodes 311 to 317 and 319 and one parity fragment from storage node 322 is an example of a combination of fragments from which the target data can be restored. The read processing unit 135 outputs the acquired eight data fragments and one parity fragment to the decoding processing unit 137.
[0067] The decoding processing unit 137 restores the data fragments by decrypting the parity fragments acquired from the read processing unit 135. Specifically, the decoding processing unit 137 decrypts the parity fragments of the storage node 322 to restore the data fragments of the storage node 318.
[0068] As a result, decoding processing unit 137 obtains nine data fragments generated by dividing the target data into nine parts. Decoding processing unit 137 outputs the obtained nine data fragments to data combination processing unit 138. The data combining unit 138 combines the nine data fragments acquired from the decoding unit 137 to restore the target data. The data combining unit 138 then outputs the restored target data to the communication unit 11. The communication unit 11 transmits the target data acquired from the data combination processing unit 138 to the requesting client device 20 in response to the data read request from the client device 20.
[0069] FIG. 6 is a diagram showing an example of a procedure for the storage system 10 to write target data to the storage unit 12. In FIG. In the process of FIG. 6, the control unit 13 acquires target data (data to be written) from the data write request received by the communication unit 11 from the client device 20 (step S11). Then, the data division processing unit 132 divides the target data to generate data fragments (step S12). Furthermore, the encoding processing unit 133 generates a parity fragment from the target data (step S13).
[0070] The write processing unit 134 writes the data fragments generated by the data division processing unit 132 and the parity fragments generated by the encoding processing unit 133 to the storage unit 12 (step S14). In particular, the write processing unit 134 writes each of the multiple fragments, at least a combination of which the target data can be restored, to a storage node in a group of storage nodes in the storage unit 12 that has a relatively fast data read speed. The write processing unit 134 also writes the remaining fragments to a storage node in a group of storage nodes that has a relatively slow data read speed. As described above, the term "fragment" here collectively refers to data fragments and parity fragments. After step S14, the storage system 10 ends the processing of FIG.
[0071] FIG. 7 is a diagram showing an example of a procedure for the storage system 10 to read target data from the storage unit 12. In FIG. In the processing of FIG. 7, in response to a data read request from the client device 20, the read processing unit 135 starts reading all fragments generated from the target data from the storage unit 12 (step S21).
[0072] Then, the read processing unit 135 performs the data read processing started in step S21 (step S22). For example, in step S22, the read processing unit 135 performs the read processing of each data for a certain period of time, and the read processing unit 135 does not necessarily complete the reading of the data in one execution of the processing of step S22.
[0073] Next, the read processing unit 135 determines whether or not a combination of fragments from which the target data can be restored has been acquired (step S23). If the read processing unit 135 determines that a combination of fragments that can restore the target data has not been acquired (step S23: NO), the process returns to step S22. In this case, the read processing unit 135 continues the data read process in step S22.
[0074] On the other hand, if it is determined that a combination of fragments from which the target data can be restored has been acquired (step S23: YES), the read processing unit 135 ends all data read processing started in step S21 (step S24). Then, the target data restoration unit 136 restores the target data from the combination of fragments acquired by the read processing unit 135 (step S25).
[0075] Specifically, if the fragments acquired by the read processing unit 135 include a parity fragment, the decoding processing unit 137 decodes the parity fragment to restore the data fragment and the parity fragment. The target data restoration unit 136 acquires m data fragments generated by dividing the target data into m pieces using the data fragments acquired from the read processing unit 135, or using the data fragments acquired from the read processing unit 135 plus the data fragments restored by the decoding processing unit 137. Then, the data combination processor 138 arranges and combines the m data fragments in the order in which they were divided, to restore the target data.
[0076] The communication unit 11 returns the target data restored by the target data restoration unit 136 to the requesting client device 20 in response to the data read request from the client device 20 (step S26). After step S26, the storage system 10 ends the processing of FIG.
[0077] In addition, if the proportion of slow storage devices among the storage devices that make up the memory unit 12 is high, it may be possible that the storage system 10 will not be able to write to the storage nodes of group #0 a combination of fragments that can restore all of the data for which it receives a data write request.
[0078] In this case, whether or not read speedup is required may be set for each target data. Then, the write processing unit 134 may distribute and write multiple fragments generated from target data for which read speedup is set to be required to the storage nodes of group #0 and the storage nodes of group #1. On the other hand, for target data for which read speedup is set to be unnecessary, the write processing unit 134 may write all of the multiple fragments generated from that target data to the storage nodes of group #1.
[0079] FIG. 8 is a diagram showing another example of the procedure of the process in which the storage system 10 writes target data to the storage unit 12. In FIG. Steps S31 to S33 in FIG. 8 are the same as steps S11 to S13 in FIG.
[0080] After step S33, the write processing unit 134 determines whether or not it is set that the speed of reading the target data needs to be increased (step S34). If it is determined that the setting indicates that the read speed of the target data needs to be increased (step S34: YES), the write processing unit 134 distributes and writes the data fragments generated by the data division processing unit 132 and the parity fragments generated by the encoding processing unit 133 to the storage nodes of group #0 and the storage nodes of group #1 (step S35). Step S35 is the same as step S14 in FIG. 6. After step S35, the storage system 10 ends the processing of FIG.
[0081] On the other hand, if it is determined in step S34 that the setting does not require faster reading of the target data (step S34: NO), the write processing unit 134 writes all of the data fragments generated by the data division processing unit 132 and the parity fragments generated by the encoding processing unit 133 to the storage nodes of group #1 (step S36). After step S36, the storage system 10 ends the processing of FIG.
[0082] As described above, fragment generator 131 generates fragments from target data (data to be written) in a number sufficient to restore the target data and to provide redundancy. The fragments are either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data. The write processing unit 134 writes each of the multiple fragments, at least a combination of which can restore the target data, to a storage node in a group with a relatively fast data read speed, and writes the remaining fragments to a storage node in a group with a relatively slow data read speed.
[0083] According to storage system 10, when multiple data for generating the data to be read are stored in the storage system and the data read speed differs depending on the data storage location, each fragment of a combination that can restore the target data is written to a storage node in a group with a relatively fast data read speed, and therefore it is expected that the time required to read the data to be read will be relatively short.
[0084] For example, according to storage system 10, when high-performance storage nodes and low-performance storage nodes are mixed due to the addition of storage devices, it is expected that the target data can be obtained relatively quickly by using fragments read from the high-performance storage nodes.
[0085] Furthermore, the fragment generator 131 generates a plurality of data fragments that can restore the target data and that do not have redundancy, and one or more parity fragments. The write processing unit 134 writes all data fragments to storage nodes in a group with a relatively fast data read speed, and writes all parity fragments to storage nodes in a group with a relatively slow data read speed.
[0086] According to the storage system 10, when data is read, if no failure occurs in reading the data fragments, the read data fragments can be combined to restore the target data, and there is no need to decrypt the parity fragments. According to storage system 10, all data fragments used to restore the target data can be read from storage nodes in a group with a relatively fast data reading speed, and if no problem occurs in reading the data fragments, there is no need to decrypt the parity fragments, so it is expected that the target data can be obtained relatively quickly.
[0087] In addition, whether or not the read speed needs to be increased is set for each target data. The write processing unit 134 writes multiple fragments generated from target data that is set to require faster read speeds to storage nodes in a group with relatively fast data read speeds and storage nodes in a group with relatively slow data read speeds, and writes all multiple fragments generated from target data that is set to not require faster read speeds to storage nodes in a group with relatively slow data read speeds.
[0088] According to the storage system 10, when it is not possible to speed up the reading of all target data, it is expected that the reading of target data that requires a faster reading speed can be speeded up.
[0089] Furthermore, the read processing unit 135 reads a plurality of fragments from the storage unit 12 . When it is determined that reading of the combinations of fragments from which the target data can be restored has been completed, the target data restoration unit 136 restores the target data from these combinations of fragments.
[0090] With storage system 10, it is expected that all fragments included in a combination of fragments from which the target data can be restored can be read from a storage node in a group with a relatively fast data read speed. Furthermore, with storage system 10, if a combination of fragments from which the target data can be restored can be obtained, the target data can be restored without having to wait for data to be read from a storage node in a group with a relatively slow data read speed. In this respect, storage system 10 is particularly expected to be able to obtain the target data relatively quickly.
[0091] In addition, the reading processing unit 135 starts reading all fragments generated from the target data, and when it determines that reading of the combination of fragments that can restore the target data has been completed, it ends reading of all fragments generated from the target data.
[0092] According to storage system 10, if a combination of fragments that can restore the target data can be obtained, the target data can be restored without having to wait for data to be read from a storage node in a group with a relatively slow data read speed. In this respect, storage system 10 is particularly expected to be able to obtain the target data relatively quickly. Furthermore, according to the storage system 10, once a combination of fragments that can restore the target data has been obtained, reading of other data can be discontinued, and in this respect the load of reading data is small.
[0093] Second Embodiment 9 is a diagram showing another example of the configuration of a storage system according to at least one embodiment. In the configuration shown in FIG. 9, a storage system 610 includes a fragment generation unit 611 and a write processing unit 612.
[0094] In this configuration, the fragment generation unit 611 generates a number of fragments from the target data to be written, which are either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data, in a number that is capable of restoring the target data and also has redundancy. The write processing unit 612 writes each of the multiple fragments, at least a combination of which can restore the target data, to a storage node in a group with a relatively fast data read speed, and writes the remaining fragments to a storage node in a group with a relatively slow data read speed. Fragment generation unit 611 is an example of a fragment generation means, and write processing unit 612 is an example of a write processing means.
[0095] According to storage system 610, when multiple data for generating the data to be read are stored in the storage system and the data read speed differs depending on the data storage location, each fragment of the combination that can restore the target data is written to a storage node in a group with a relatively fast data read speed, and therefore it is expected that the time required to read the data to be read will be relatively short.
[0096] For example, with storage system 610, when high-performance storage nodes and low-performance storage nodes are mixed due to the addition of storage devices, it is expected that the target data can be obtained relatively quickly by using fragments read from the high-performance storage nodes.
[0097] Third Embodiment 10 is a diagram illustrating yet another example of the configuration of a storage system according to at least one embodiment. In the configuration illustrated in FIG. 10, a storage system 620 includes a read processing unit 621 and a target data recovery unit 622.
[0098] In this configuration, the read processing unit 621 reads multiple data from a storage in which, of the data generated from the target data to be read, at least each data combination that can restore the target data is stored in a storage node of a group with a relatively fast data read speed, and the remaining data is stored in a storage node of a group with a relatively slow data read speed. When it is determined that reading of a combination of data that can restore the target data to be read has been completed, the target data restoration unit 622 restores the target data from that combination of data. The read processing unit 621 is an example of a read processing means, and the target data restoration unit 622 is an example of a target data restoration means.
[0099] According to storage system 620, it is expected that all data included in a data combination that can restore the target data can be read from a storage node in a group with a relatively fast data read speed. Then, according to storage system 620, if a data combination that can restore the target data can be obtained, the target data can be restored without having to wait for data to be read from a storage node in a group with a relatively slow data read speed. In this respect, storage system 620 is particularly expected to be able to obtain the target data relatively quickly.
[0100] <Fourth embodiment> 11 is a diagram illustrating an example of a processing procedure in a data writing method according to at least one embodiment. The data writing method illustrated in FIG. 11 includes generating a fragment (step S611) and writing the fragment (step S612).
[0101] In generating fragments (step S611), the computer generates a number of fragments, which is a collective term for data fragments, which are data obtained by dividing the target data to be written, and parity fragments, which are data used to restore at least a portion of the target data, from the target data to be written, in a number that is capable of restoring the target data and also has redundancy.
[0102] In writing the fragments (step S612), the computer writes each of the multiple fragments, at least a combination of which can restore the target data, to a storage node in a group with a relatively fast data read speed, and writes the remaining fragments to a storage node in a group with a relatively slow data read speed.
[0103] According to the data writing method shown in Figure 11, when multiple data for generating the data to be read are stored in a storage system and the data read speed varies depending on the data storage location, each fragment of a combination that can restore the target data is written to a storage node in a group with a relatively fast data read speed, and it is expected that the time required to read the data to be read will be relatively short.
[0104] For example, according to the data writing method shown in FIG. 11, when high-performance storage nodes and low-performance storage nodes are mixed due to the addition of storage devices, it is expected that the target data can be obtained relatively quickly by using fragments read from the high-performance storage nodes.
[0105] Fifth Embodiment 12 is a diagram illustrating an example of a processing procedure in a data reading method according to at least one embodiment. The data reading method illustrated in FIG. 12 includes reading data (step S621) and restoring the data to be read (step S622).
[0106] In reading data (step S621), the computer reads multiple data from a storage in which, of the data generated from the target data to be read, at least each data combination that can restore the target data is stored in a storage node of a group with a relatively fast data read speed, and the remaining data is stored in a storage node of a group with a relatively slow data read speed. In restoring the data to be read (step S622), if the computer determines that reading of a combination of data that can restore the target data to be read has been completed, the computer restores the target data from that combination of data.
[0107] According to the data reading method shown in Fig. 12, it is expected that all data included in a data combination that can restore the target data can be read from a storage node in a group with a relatively fast data read speed. According to the data reading method shown in Fig. 12, if a data combination that can restore the target data can be obtained, the target data can be restored without having to wait for data to be read from a storage node in a group with a relatively slow data read speed. In particular, according to the data reading method shown in Fig. 12, it is expected that the target data can be obtained relatively quickly.
[0108] FIG. 13 is a diagram illustrating an example of a computer configuration according to at least one embodiment. In the configuration shown in FIG. 13, a computer 700 includes a CPU 710, a main memory device 720, an auxiliary memory device 730, an interface 740, and a non-volatile recording medium 750.
[0109] One or more of the above storage systems 10, 610, and 620, or a part thereof, may be implemented in a computer 700. In this case, the operation of each of the above-described processing units is stored in the auxiliary storage device 730 in the form of a program. The CPU 710 reads the program from the auxiliary storage device 730, loads it into the main storage device 720, and executes the above-described processing in accordance with the program. The CPU 710 also allocates storage areas in the main storage device 720 corresponding to each of the above-described storage units in accordance with the program. Communication between each device and other devices is performed by an interface 740 having a communication function and performing communication under the control of the CPU 710. The interface 740 also has a port for a nonvolatile storage medium 750, and reads information from the nonvolatile storage medium 750 and writes information to the nonvolatile storage medium 750.
[0110] When the storage system 10 is implemented in a computer 700, the operation of the control unit 13 and each of its units is stored in the form of a program in the auxiliary storage device 730. The CPU 710 reads the program from the auxiliary storage device 730, loads it into the main storage device 720, and executes the above-mentioned processing in accordance with the program.
[0111] Furthermore, the CPU 710 allocates a storage area in the main memory device 720 for the control unit 13 to perform processing in accordance with the program. The functions of the storage unit 12 are performed by, for example, the auxiliary memory device 730. Communication with other devices via the communication unit 11 is performed by the interface 740, which has a communication function and operates under the control of the CPU 710. Interaction between the storage system 10 and a user is performed by the interface 740, which has an input device and an output device, presenting information to the user via the output device under the control of the CPU 710 and accepting user operations via the input device.
[0112] When the storage system 610 is implemented in a computer 700, the operations of the fragment generation unit 611 and the write processing unit 612 are stored in the form of a program in the auxiliary storage device 730. The CPU 710 reads the program from the auxiliary storage device 730, loads it into the main storage device 720, and executes the above-mentioned processing in accordance with the program.
[0113] Furthermore, the CPU 710 allocates a storage area in the main memory device 720 for the storage system 610 to perform processing in accordance with a program. The function of the storage system 610 to store target data is performed by, for example, the auxiliary memory device 730. Communication between the storage system 610 and other devices is performed by an interface 740 having a communication function and operating under the control of the CPU 710. Interaction between the storage system 610 and a user is performed by the interface 740 having an input device and an output device, presenting information to the user via the output device under the control of the CPU 710 and accepting user operations via the input device.
[0114] When the storage system 620 is implemented in the computer 700, the operations of the read processing unit 621 and the target data restoration unit 622 are stored in the form of a program in the auxiliary storage device 730. The CPU 710 reads the program from the auxiliary storage device 730, loads it into the main storage device 720, and executes the above-mentioned processing in accordance with the program.
[0115] Furthermore, the CPU 710, in accordance with the program, allocates a storage area in the main memory device 720 for the storage system 620 to perform processing. The function of the storage system 620 to store target data is performed by, for example, the auxiliary memory device 730. Communication between the storage system 620 and other devices is performed by an interface 740 having a communication function and operating under the control of the CPU 710. Interaction between the storage system 620 and a user is performed by the interface 740 having an input device and an output device, presenting information to the user via the output device under the control of the CPU 710 and accepting user operations via the input device.
[0116] One or more of the above-described programs may be recorded on nonvolatile recording medium 750. In this case, interface 740 may read the programs from nonvolatile recording medium 750. CPU 710 may then directly execute the programs read by interface 740, or may temporarily store the programs in main storage device 720 or auxiliary storage device 730 and then execute them.
[0117] It is also possible to record a program for executing all or part of the processing performed by storage systems 10, 610, and 620 on a computer-readable recording medium, and have the computer system read and execute the program to perform the processing of each part. Note that the term "computer system" here includes the OS (Operating System) and hardware such as peripheral devices. Furthermore, "computer-readable recording media" refers to portable media such as flexible disks, optical magnetic disks, ROMs (Read Only Memory), and CD-ROMs (Compact Disc Read Only Memory), as well as storage devices such as hard disks built into computer systems. The program may be one that realizes part of the aforementioned functions, or may be one that can realize the aforementioned functions in combination with a program already stored in the computer system.
[0118] Although an embodiment of the present invention has been described above in detail with reference to the drawings, the specific configuration is not limited to this embodiment, and includes designs within the scope of the gist of the present invention.
[0119] A part or all of the above-described embodiments can be described as, but not limited to, the following supplementary notes.
[0120] (Appendix 1) a fragment generation means for generating, from target data to be written, data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data, in a number sufficient to restore the target data and to provide redundancy; a write processing means for writing, among the plurality of fragments, each of the combinations of fragments from which at least the target data can be restored to a storage node in a group having a relatively fast data read speed, and for writing the remaining fragments to a storage node in a group having a relatively slow data read speed; A storage system comprising:
[0121] (Appendix 2) the fragment generation means generates a plurality of data fragments that can restore the target data and that do not have redundancy, and one or more parity fragments; the write processing means writes all of the data fragments to a storage node in a group having a relatively fast data read speed, and writes all of the parity fragments to a storage node in a group having a relatively slow data read speed; 2. The storage system of claim 1.
[0122] (Appendix 3) The need for faster read speed is set for each target data, the write processing means writes a plurality of fragments generated from target data set to require faster read speeds to storage nodes in a group with relatively fast data read speeds and storage nodes in a group with relatively slow data read speeds, and writes all of a plurality of fragments generated from target data set to require no faster read speeds to storage nodes in a group with relatively slow data read speeds; 10. The storage system of claim 1 or 2.
[0123] (Appendix 4) a read processing means for reading a plurality of fragments from the storage; a target data restoration means for restoring the target data from the combination of fragments when it is determined that reading of the combination of fragments from which the target data to be read can be restored has been completed; 4. The storage system according to claim 1, further comprising:
[0124] (Appendix 5) the read processing means starts reading all fragments generated from the target data, and when it is determined that reading of a combination of fragments that can restore the target data has been completed, ends reading of all fragments generated from the target data. 5. The storage system of claim 4.
[0125] (Appendix 6) a read processing means for reading a plurality of data from a storage in which, among data generated from the target data to be read, at least each data combination capable of restoring the target data is stored in a storage node of a group having a relatively fast data read speed, and the remaining data is stored in a storage node of a group having a relatively slow data read speed; a target data restoration means for restoring the target data from a combination of data when it is determined that reading of the combination of data from which the target data to be read can be restored has been completed; A storage system comprising:
[0126] (Appendix 7) the read processing means starts reading all data generated from the target data, and when it is determined that reading of a combination of data that can restore the target data has been completed, ends reading of all data generated from the target data. 7. The storage system of claim 6.
[0127] (Appendix 8) The computer generating, from the target data to be written, a number of fragments that are either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data, such that the number of fragments is sufficient to restore the target data and that still has redundancy; writing, among the plurality of fragments, at least each of the combinations of fragments from which the target data can be restored to a storage node in a group having a relatively fast data read speed, and writing the remaining fragments to a storage node in a group having a relatively slow data read speed; A data writing method comprising:
[0128] (Appendix 9) generating the fragments includes generating a plurality of data fragments that can restore the target data and that do not have redundancy, and one or more parity fragments; In writing the fragments to the storage nodes, all of the data fragments are written to storage nodes in a group having a relatively fast data read speed, and all of the parity fragments are written to storage nodes in a group having a relatively slow data read speed. 9. A data writing method as described in Appendix 8.
[0129] (Appendix 10) The need for faster read speed is set for each target data, When writing the fragments to the storage nodes, a plurality of fragments generated from target data that is set to require faster read speeds are written to storage nodes in a group with relatively fast data read speeds and storage nodes in a group with relatively slow data read speeds, and a plurality of fragments generated from target data that is set to not require faster read speeds are all written to storage nodes in a group with relatively slow data read speeds. 10. The data writing method according to claim 8 or 9.
[0130] (Appendix 11) The computer reading a plurality of data from a storage in which, among data generated from the target data to be read, at least each data combination capable of restoring the target data is stored in a storage node of a group having a relatively fast data read speed, and the remaining data is stored in a storage node of a group having a relatively slow data read speed; When it is determined that reading of a combination of data that can restore the target data to be read has been completed, the target data is restored from the combination of data. A data reading method comprising:
[0131] (Appendix 12) In reading the plurality of data, reading of all data generated from the target data is started, and when it is determined that reading of a combination of data that can restore the target data is completed, reading of all data generated from the target data is terminated. 12. The data reading method according to claim 11.
[0132] (Appendix 13) On the computer, generating, from the target data to be written, a number of fragments that are either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a part of the target data, such that the number of fragments is sufficient to restore the target data and that still has redundancy; writing, among the plurality of fragments, at least a combination of fragments from which the target data can be restored to a storage node in a group having a relatively fast data read speed, and writing the remaining fragments to a storage node in a group having a relatively slow data read speed; A program that performs the following.
[0133] (Appendix 14) generating the fragments includes generating a plurality of data fragments that can restore the target data and that do not have redundancy, and one or more parity fragments; In writing the fragments to the storage nodes, all of the data fragments are written to storage nodes in a group having a relatively fast data read speed, and all of the parity fragments are written to storage nodes in a group having a relatively slow data read speed. 13. The program described in Appendix 13.
[0134] (Appendix 15) The need for faster read speed is set for each target data, When writing the fragments to the storage nodes, a plurality of fragments generated from target data that is set to require faster read speeds are distributed and written to storage nodes in a group with relatively fast data read speeds and storage nodes in a group with relatively slow data read speeds, and a plurality of fragments generated from target data that is set to not require faster read speeds are all written to storage nodes in a group with relatively slow data read speeds. 15. The program of claim 13 or 14.
[0135] (Appendix 16) On the computer, reading a plurality of data from a storage in which, among data generated from the target data to be read, at least each data combination capable of restoring the target data is stored in a storage node of a group having a relatively fast data read speed, and the remaining data is stored in a storage node of a group having a relatively slow data read speed; When it is determined that reading of a combination of data from which the target data to be read can be restored has been completed, restoring the target data from the combination of data; A program that performs the following.
[0136] (Appendix 17) In reading the plurality of data, reading of all data generated from the target data is started, and when it is determined that reading of a combination of data that can restore the target data is completed, reading of all data generated from the target data is terminated. 16. The program described in Appendix 16. [Explanation of symbols]
[0137] 1. Information Processing Systems 10, 610, 620 storage systems 11 Communications Department 12 Storage section 13 Control Unit 20 Client Device 121 First memory section 122 Second memory section 131, 611 Fragment generation unit 132 Data division processing unit 133 Encoding processing unit 134, 612 Write processing section 135, 621 Readout processing section 136, 622 Target data recovery section 137 Decryption processing unit 138 Data connection processing unit
Claims
1. a fragment generation means for generating, from target data to be written, data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data, in a number sufficient to restore the target data and to provide redundancy; a write processing means for writing, among the plurality of fragments, each of the combinations of fragments from which at least the target data can be restored to a storage node in a group having a relatively fast data read speed, and for writing the remaining fragments to a storage node in a group having a relatively slow data read speed; A storage system comprising:
2. the fragment generation means generates a plurality of data fragments that can restore the target data and that do not have redundancy, and one or more parity fragments; the write processing means writes all of the data fragments to a storage node in a group having a relatively fast data read speed, and writes all of the parity fragments to a storage node in a group having a relatively slow data read speed; The storage system according to claim 1 .
3. The need for faster read speed is set for each target data, the write processing means writes a plurality of fragments generated from target data set to require faster read speeds to storage nodes in a group with relatively fast data read speeds and storage nodes in a group with relatively slow data read speeds, and writes all of a plurality of fragments generated from target data set to require no faster read speeds to storage nodes in a group with relatively slow data read speeds; 3. The storage system according to claim 1.
4. a read processing means for reading a plurality of fragments from the storage; a target data restoration means for restoring the target data from the combination of fragments when it is determined that reading of the combination of fragments from which the target data to be read can be restored has been completed; The storage system according to claim 1 , comprising:
5. the read processing means starts reading all fragments generated from the target data, and when it is determined that reading of a combination of fragments that can restore the target data has been completed, ends reading of all fragments generated from the target data. The storage system according to claim 4 .
6. a read processing means for reading a plurality of data from a storage in which, among data generated from the target data to be read, at least each data combination capable of restoring the target data is stored in a storage node of a group having a relatively fast data read speed, and the remaining data is stored in a storage node of a group having a relatively slow data read speed; a target data restoration means for restoring the target data from a combination of data when it is determined that reading of the combination of data from which the target data to be read can be restored has been completed; A storage system comprising:
7. The computer generating, from the target data to be written, a number of fragments that are either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a portion of the target data, such that the number of fragments is sufficient to restore the target data and that still has redundancy; writing, among the plurality of fragments, at least each of the combinations of fragments from which the target data can be restored to a storage node in a group having a relatively fast data read speed, and writing the remaining fragments to a storage node in a group having a relatively slow data read speed; A data writing method comprising:
8. The computer reading a plurality of data from a storage in which, among data generated from the target data to be read, at least each data combination capable of restoring the target data is stored in a storage node of a group having a relatively fast data read speed, and the remaining data is stored in a storage node of a group having a relatively slow data read speed; When it is determined that reading of a combination of data that can restore the target data to be read has been completed, the target data is restored from the combination of data. A data reading method comprising:
9. On the computer, generating, from the target data to be written, a number of fragments that are either data fragments, which are data obtained by dividing the target data, or parity fragments, which are data used to restore at least a part of the target data, such that the number of fragments is sufficient to restore the target data and that still has redundancy; writing, among the plurality of fragments, at least a combination of fragments from which the target data can be restored to a storage node in a group having a relatively fast data read speed, and writing the remaining fragments to a storage node in a group having a relatively slow data read speed; A program that performs the following.
10. On the computer, reading a plurality of data from a storage in which, among data generated from the target data to be read, at least each data combination capable of restoring the target data is stored in a storage node of a group having a relatively fast data read speed, and the remaining data is stored in a storage node of a group having a relatively slow data read speed; When it is determined that reading of a combination of data from which the target data to be read can be restored has been completed, restoring the target data from the combination of data; A program that performs the following.
Citation Information
Patent Citations
Disk array device
JP1996123628A