WO2014010077A1 - ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム - Google Patents
ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム Download PDFInfo
- Publication number
- WO2014010077A1 WO2014010077A1 PCT/JP2012/067916 JP2012067916W WO2014010077A1 WO 2014010077 A1 WO2014010077 A1 WO 2014010077A1 JP 2012067916 W JP2012067916 W JP 2012067916W WO 2014010077 A1 WO2014010077 A1 WO 2014010077A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- parity
- stripe
- data block
- value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1061—Parity-single bit-RAID4, i.e. RAID 4 implementations
Definitions
- the present invention relates to a disk array control device, a disk array control method, and a disk array control program.
- RAID 5 volumes There are disk arrays called RAID 5 volumes and RAID 4 volumes.
- RAID5 volume has the advantage that it can realize all of the improvement of fault tolerance, high speed, and large capacity.
- the RAID 5 volume and the RAID 4 volume when data is recorded on the disk, data for parity generation is read from the disk, and parity is calculated (generated) and written to the disk.
- the RAID 5 volume and the RAID 4 volume (hereinafter referred to as a stripe set with parity) have a relatively large overhead during data write (write performance is not high).
- the problem of the disclosed technique is to provide a technique that can reduce the time required to calculate parity in a stripe set with parity.
- a disk array control device according to an aspect of the disclosed technology is provided.
- a status value storage unit capable of storing status values for each of a plurality of data blocks included in each stripe of the stripe set with parity; and Including The controller is When ALL0 data is to be written to a certain data block of the stripe set with parity, the first predetermined value is stored as the status value of the data block in the status value storage unit without writing ALL0 data to the data block.
- the parity for the stripe is calculated by assuming that the data in each data block is ALL0 data without accessing the storage device having each data block.
- a disk array control method includes: A method for operating M ( ⁇ 3) storage devices as a stripe set with parity, Computer For each of a plurality of data blocks included in each stripe of the stripe set with parity, a table capable of storing status values is prepared on the memory, When ALL0 data is to be written to a certain data block of the stripe set with parity, the first predetermined value is stored as the status value of the data block in the table without writing ALL0 data to the data block; When calculating parity to be written to a parity block of a certain stripe of the stripe set with parity, each data block in which the first predetermined value is stored in the table as the status value among data required for the calculation For the above data, the parity relating to the stripe is calculated on the assumption that the data in each data block is ALL0 data without accessing the storage device having each data block.
- a disk array control program according to an aspect of the disclosed technology
- Computer A control unit for operating M ( ⁇ 3) storage devices as a stripe set with parity;
- a status value storage unit capable of storing status values for each of a plurality of data blocks included in each stripe of the stripe set with parity;
- a device comprising: The control unit is When ALL0 data is to be written to a certain data block of the stripe set with parity, the first predetermined value is stored as the status value of the data block in the status value storage unit without writing ALL0 data to the data block.
- the first predetermined value of each data block stored as the status value in the status value storage unit With respect to data, without accessing the storage device having each data block, the data of each data block is operated as a device for calculating parity for the stripes assuming that the data is ALL0 data.
- the disk array control program according to one aspect of the disclosed technology can be recorded and distributed on a computer-readable medium such as a CD-ROM (Compact Disc Read Only Memory) or a flash memory.
- a computer-readable medium such as a CD-ROM (Compact Disc Read Only Memory) or a flash memory.
- FIG. 1 is an explanatory diagram of the configuration and usage of the disk array control device according to the embodiment.
- FIG. 2 is a flowchart of data write processing executed by the controller in the disk array control apparatus according to the embodiment.
- FIG. 3 is a flowchart of data read processing executed by the controller.
- FIG. 4 is a flowchart of data discarding processing executed by the controller.
- FIG. 5 is a flowchart of the rebuild process executed by the controller.
- FIG. 6 is a flowchart of the consistency check process executed by the controller.
- the disk array control device 10 is a device including a controller 11 and a flash memory 15. Further, the disk array control apparatus 10 is connected to one or more (one in FIG. 1) host 60 and a plurality of (three in FIG. 1) hard disk drives 50 (hereinafter also referred to as disks 50). Has been used.
- the flash memory 15 is a rewritable nonvolatile memory in which a part of its storage area is used as a status management table 16 (details will be described later).
- the controller 11 is a RAID (Redundant Arrays of Inexpensive Disks) controller chip that includes a flash memory 12 that stores a control program 13, a processor (not shown) that executes the control program 13, and the like.
- the controller 11 is obtained by replacing the firmware of the existing RAID controller chip with the control program 13, and therefore a description of a specific circuit configuration of the controller 11 is omitted.
- the disk array control device 10 is a device capable of causing a plurality of disks 50 selected by an operator from a plurality of connected disks 50 to function as disk arrays (logical volumes) of various RAID levels. .
- the disk array control apparatus 10 is particularly characterized in the operation contents when a plurality of disks 50 are caused to function as a stripe set with parity (RAID 5 volume or RAID 4 volume). Since the RAID 5 volume is higher in performance than the RAID 4 volume, the operation of the disk array control apparatus 10 will be described below with a focus on the operation contents when a plurality of disks 50 function as RAID 5 volumes. .
- RAID 5 volume (or RAID 4 volume)
- at least three disks 50 are required. Therefore, when the RAID 5 volume is realized / constructed using the disk array control apparatus 10, three or more disks 50 are connected to the disk array control apparatus 10. Thereafter, the operator uses the host 60 (or another computer) to perform an operation for designating at least three disks 50 and instructing the creation of a RAID 5 volume to the disk array control apparatus 10.
- the controller 11 creates the status management table 16 related to the volume on the flash memory 15.
- the status management table 16 is provided for each block (storage area of a predetermined size) of a plurality of disks (three in FIG. 1) for which RAID 5 volume creation is instructed. It is a table which can memorize
- M disks 50 instructed to be RAID5 volume and one disk 50 of them are simply referred to as M disks 50 and disks 50, respectively.
- a block in each disk 50 in which data is stored is referred to as a data block
- a block in each disk 50 in which parity is stored is referred to as a parity block.
- a total of M blocks including M ⁇ 1 data blocks in which parity is calculated from data stored in them and parity blocks in which the calculated parity is stored are referred to as stripes. .
- the situation values stored in the situation management table 16 include three kinds of situation values “0”, “1”, and “P”.
- Status value “1” is information used only as a status value for a data block and indicating that the data block holds valid data.
- the status value “P” is information used only as a status value for the parity block and indicating that the parity block holds valid parity.
- the status value “0” is used as a status value for both the data block and the parity block.
- the data / parity block should originally hold ALL0 data (data in which all bits are “0”). It is information indicating that it is a block.
- the controller 11 When creation of a RAID 5 volume is instructed, the controller 11 creates an empty status management table 16 that can store status values for each block (data / parity block) of M ( ⁇ 3) disks 50. Then, the controller 11 notifies the host 60 of the completion of disk array creation.
- the operator performs a predetermined operation on the host 60.
- the initialization command for instructing the controller 11 (disk array control device 10) from the host 60 to initialize the created RAID 5 volume (disk array). Is sent.
- the controller 11 When the initialization command is received, the controller 11 does not actually initialize each disk 50 (writes ALL0 data to each block in each disk 50), and sets the status value regarding each block on the status management table 16. Initialize to “0”. Then, the controller 11 notifies the host 60 of the completion of initialization and is ready to respond to various commands from the host 60.
- Commands that the controller 11 receives from the host 60 include a write command, a read command, a data discard command, a rebuild command, a consistency check command, and the like.
- the write command received by the controller 11 from the host 60 is a command for requesting writing of data having a write start position coinciding with the head position of a certain block having a size that is an integral multiple of the block size of the RAID5 volume.
- the controller 11 accepts a write command (responds to the received write command) only when all the disks 50 are functioning normally. In other words, even if the RAID 5 volume (M disks 50) can function as a storage, the disk array control device 10 accepts a write command if the redundancy of the RAID 5 volume is lost. There is no device.
- write data refers to data for one block size for which a write request that is a target of data write processing requests writing.
- the attention data block is a data block in which write data is to be written, and the attention stripe is a stripe including the attention data block.
- the controller 11 that has started the data write process for a certain write request first reads out the status value relating to each data block of the target stripe from the status management table 16 (step S101).
- controller 11 writes the write data to the data block of interest (step S102).
- step S103 the controller 11 performs a parity calculation process (step S103) to calculate a parity related to the target stripe (parity to be written to the parity block of the target stripe).
- the controller 11 first starts from each data block other than the target data block whose status value read in the process of step S101 is “1” on each data block. Read all data (data for one block size). When the data necessary for calculating the parity (M ⁇ 2 data other than the write data) is prepared by reading such data, the controller 11 excludes the data from the write data. The logical OR (that is, the parity related to the target stripe) is calculated, and the parity calculation process is terminated.
- the controller 11 uses the ALL0 data for one block size as each deficient data to calculate the parity for the target stripe.
- the data required for calculating the parity (M ⁇ 2 data other than the write data) is not prepared by reading the data as described above. Some of the situation values are “0”. This is a case where there are two data blocks. The specific procedure for updating the status value will be described in sequence. As already described, the status value “0” on the status management table 16 indicates that the data / parity block originally holds the ALL0 data. The information indicates that the block should be. Therefore, by using ALL0 data as the missing data, the parity regarding the target stripe can be calculated.
- the controller 11 that has calculated the parity related to the target stripe using some ALL0 data ends the parity calculation process (step S103).
- the controller 11 that has finished the parity calculation process (calculates the parity using the ALL0 data or not using the ALL0 data) writes the calculated parity into the parity block of the target stripe (step S104).
- the controller 11 updates the status value relating to the data block (target data block) to which information (data / parity) is written this time and the parity block on the status management table 16 to “1” and “P”, respectively.
- Step S105 Note that the process of step S105 is a process in which either one of the situation value values or both situation value values may not change.
- the controller 11 that has finished the process of step S105 ends the data write process (the process of FIG. 2).
- the controller 11 notifies the host 60 that data writing has been completed when the data write process for all the write requests obtained by dividing the received write command is completed, and then receives the received write command. The process for is terminated.
- the read command received by the controller 11 from the host 60 is a command for requesting reading of data having a size that is an integral multiple of the block size of the RAID5 volume and whose read start position matches the start position of a certain block.
- the controller 11 accepts read commands when all of the M disks 50 are functioning normally and when the M ⁇ 1 disks 50 are functioning normally.
- the controller 11 divides the received read command into several read requests for requesting reading of data of one data block. Then, the controller 11 performs the data read process of the procedure shown in FIG. 3 for each read request.
- the read data is data on one data block for which a read request that is a target of data read processing requests read.
- the target data block is a data block in which read data is stored.
- the notice stripe is a stripe including the notice data block
- the read target disk is the disk 50 having the notice data block.
- the controller 11 that has started the data read process for a certain read request first reads the status value for each block (data / parity block) of the target stripe from the status management table 16 (step S201).
- the controller 11 determines whether or not the status value for the data block of interest read from the status management table 16 is “0” (step S202).
- step S202 If the status value regarding the data block of interest is “0” (step S202; YES), the controller 11 stores ALL0 data as response data for the read request being processed without accessing any disk 50. (Step S203). Then, the controller 11 ends this data read process.
- step S202 determines whether or not the read target disk (disk 50 having the data block of interest) is in failure.
- step S204 If the read target disk is not in failure (step S204; NO), the controller 11 reads the read data from the target data block of the read target disk and stores it as response data for the read request being processed (step S205). .
- step S204 If the read target disk is out of order (step S204; YES), the controller 11 generates (recovers) read data from the data in the other M ⁇ 1 disks 50 in step S205. Perform data generation processing. At the time of this data generation process, the controller 11 reads data / parity from each block other than the target data block whose status value read in the process of step S201 is “1”. When the data necessary for generating the read data is obtained by reading the data from each block, the controller 11 generates the read data from the data and ends the data generation process.
- the controller 11 when the data necessary for generating the read data is not prepared in the reading of the data, the controller 11 generates the read data by using the ALL0 data as the missing data. Then, the controller 11 ends the data generation process.
- the controller 11 that has generated the read data by the data generation process having the above contents stores the generated read data as response data to the read request being processed. Then, the controller 11 ends the process of step S206 and the data read process (the process of FIG. 2).
- the controller 11 transmits data connected to the data stored as response data for each read request to the host 60. Then, the controller 11 ends the process for the received read command.
- the data discard command is a command (a command including address range designation information) transmitted by the host 60 in order to instruct the discard of data within a certain address range (“0” clear).
- the controller 11 executes the data discard process according to the procedure shown in FIG.
- the controller 11 that has received the data discard command first selects each data block that includes all areas and each data block that includes some areas within the specified discard range based on information on the status management table 16. Specify (step S301).
- the designated discard range is an address range instructed to discard data by the received data discard command.
- the controller 11 determines whether or not one or more data blocks whose entire area is included in the designated discarding range can be specified (step S302). When one or more data blocks whose entire area is included in the designated discard range can be identified (step S302; YES), the controller 11 does not actually clear “0” for the one or more data blocks. The status value for each of the one or more data blocks on the management table 16 is changed to “0” (step S303).
- step S304 determines whether or not one or more data blocks whose partial areas are included in the designated discarding range have been identified. If a data block whose entire area is included in the designated discard range cannot be identified at all (step S302; NO), the process (determination) of step S304 is performed without performing the process of step S303.
- step S304 When no data block whose partial area is included in the designated discarding range cannot be specified (step S304; NO), the controller 11 ends this data discarding process (the process of FIG. 4). On the other hand, when one or two data blocks whose partial areas are included in the designated discard range can be identified (step S304; YES), the controller 11 sets “0” in the designated discard range of each data block. Clear (step S305). Thereafter, the controller 11 ends this data discarding process.
- the rebuild command is a command transmitted to the controller 11 after replacing a disk 50 with a normal new disk 50 when a certain disk 50 fails.
- the controller 11 executes the rebuild process of the procedure shown in FIG.
- the recovery target block is a certain data / parity block of the new disk 50
- the normal disk 50 is the original disk 50 (the disk that is not the new disk 50). 50).
- the valid data block and the invalid data block are data blocks in the normal disk 50 whose status values on the status management table 16 are “1” and “0”, respectively.
- the controller 11 that has started the rebuilding process upon receiving the rebuilding command first selects the first stripe of the RAID5 volume as the processing target stripe (step S401). Next, the controller 11 reads the status value relating to each block (data / parity block) of the processing target stripe from the status management table 16 (step S402). Then, based on the read status value, the controller 11 determines whether or not a valid data block is included in the processing target stripe (step S403).
- step S403 When a valid data block is included in the processing target stripe (step S403; YES), the controller 11 further determines whether or not the processing target stripe includes an invalid data block based on the read status value. (Step S404).
- the status value regarding a certain data block is “1” (when a certain data block is a valid data block)
- the status value regarding a parity block included in the same stripe as that data block is always “P”. (See FIGS. 2 and 4). Accordingly, when branching to the YES side is performed in step S403, if the parity block of the stripe to be processed exists in the normal disk 50, valid data is also stored in the parity block. Become.
- the controller 11 performs a normal recovery process (step S405) when an invalid data block is not included in the processing target stripe (step S404; NO).
- the normal recovery processing is to read information on the data / parity block related to the processing target stripe from each of the M ⁇ 1 normal disks 50, and for the recovery target block from the read M ⁇ 1 pieces of information. This is a process of generating data / parity and writing the generated data / parity to the recovery target block.
- step S404 if an invalid data block is included in the processing target stripe (step S404; YES), the controller 11 performs a special recovery process with the following content in step S406.
- the controller 11 that has started the special recovery process reads information stored in the valid data block (or parity block) in each normal disk 50 of the stripe to be processed from each normal disk 50. Thereafter, the controller 11 generates data / parity for the recovery target block by using the ALL0 data as each other data necessary for recovering the recovery target data. Then, the controller 11 writes the generated data / parity into the recovery target block, and then ends the special recovery process.
- the controller 11 that has finished the special recovery process or the normal recovery process determines whether or not an unprocessed stripe remains (step S407).
- step S407 If an unprocessed stripe remains (step S407; YES), the controller 11 selects the next stripe as a processing target stripe (step S408), and then restarts the processes after step S402.
- step S403 when the effective data block is not included in the processing target stripe (step S403; NO), the controller 11 performs the determination in step S407 without performing the special recovery process / normal recovery process.
- the effective data block is not included in the processing target stripe when the status value of all the data blocks of the processing target stripe and the status value of the parity block are all “0”, and when all the processing target stripes This is a case where the status value of the data block is “0” and the status value of the parity block is “P” (see FIG. 4). In either of these cases, it is not necessary to recover the information (data / parity) on the recovery target block. Therefore, if the processing target stripe does not include a valid data block (step S403; NO), the controller 11 skips / omits the recovery process (special recovery process or normal recovery process), and an unprocessed stripe remains. It is determined whether or not (step S407).
- the controller 11 ends this rebuilding process when the processing for all stripes is completed (step S407; NO).
- the consistency check command is a command requesting to check whether data in each stripe is consistent. Note that “data in a certain stripe is consistent” means that “the parity calculated from the data on each data block in a certain stripe matches the parity on the parity block in that stripe”. is there.
- the controller 11 executes the consistency check process of the procedure shown in FIG.
- the controller 11 that has received the consistency check command first selects the first stripe as the processing target stripe (step S501). Next, the controller 11 reads the status value relating to each block (data / parity block) of the processing target stripe from the status management table 16 (step S502).
- the controller 11 determines whether or not a valid data block is included in the processing target stripe based on the read status value (step S503).
- the valid data block is a data block whose status value on the status management table 16 is “1”.
- step S503 If a valid data block is included in the processing target stripe (step S503; YES), the controller 11 further adds an invalid data block (status value “0”) to the processing target stripe based on the read status value. It is determined whether or not the data block is included (step S504).
- step S504 If the invalid stripe is not included in the processing target stripe (step S504; NO), the controller 11 performs a normal consistency check process with the following content in step S505.
- the controller 11 that has started the normal consistency check process first reads information (data / parity) on the data block or parity block of the processing target stripe from each disk 50. Thereafter, the controller 11 calculates the parity of the read M ⁇ 1 pieces of data, and checks whether the calculation result matches the parity read from the parity block. Then, the controller 11 stores the check result and ends the normal consistency check process.
- step S504 when an invalid data block is included in the processing target stripe (step S504; YES), the controller 11 performs a special consistency check process with the following contents in step S506.
- the controller 11 that has started the special consistency check process reads information stored in each of all valid data blocks and parity blocks of the stripe to be processed from the disk 50 provided with each block. Thereafter, the controller 11 calculates the parity by using the ALL0 data as the remaining data necessary for calculating the parity regarding the processing target stripe. Then, the controller 11 checks whether or not the generated parity matches the parity read from the parity block of the processing target stripe, stores the check result, and ends the special consistency check processing.
- the controller 11 that has finished the normal / special consistency check process determines whether or not an unprocessed stripe remains (step S507).
- step S507 If an unprocessed stripe remains (step S507; YES), the controller 11 selects the next stripe as a processing target stripe (step S508), and then restarts the processes after step S502.
- step S503 when a valid data block is not included in the processing target stripe (step S503; NO), the controller 11 performs the determination in step S507 without performing the normal / special consistency check processing.
- step S507 When the processing for all the stripes has been completed (step S507; NO), the controller 11 transmits information that summarizes the check results of each normal / special consistency check processing to the host 60 (step S509). Then, the controller 11 ends this consistency check process.
- the disk array control apparatus 10 when calculating the parity related to a certain stripe of the stripe set with parity to be controlled, among the data required for the calculation, for the data of each data block stored in the status management table 16 with “0” as the status value, the parity is assumed that the data of each data block is ALL0 data without accessing the disk 50 having each data block. It has a function to calculate (see FIG. 2).
- the disk array control device 10 is a device in which the number of data read from the disk 50 may be smaller when calculating the parity than the normal disk array control device. If the number of data to be read from the disk 50 is reduced, the labor / time required for calculating the parity is reduced. Therefore, the disk array control device 10 requires more time (parity generation time) than the existing disk array control device ( It can be said that the device has a short average time. Furthermore, if the time required for generating parity is short, the time required for writing data is also short. Therefore, according to the disk array control apparatus 10 according to the present embodiment, it is possible to realize a stripe set with parity having a higher data writing speed than the existing disk array control apparatus.
- the disk array control device 10 has a function (see FIG. 4) for returning the status value relating to the data block to “0” when an instruction to discard the data on a certain data block is given. Therefore, if the disk array control apparatus 10 is used, the status value of the data block is “1” even though the data on the data block is deleted on the file system. Therefore, it can be prevented that the reading of data from the data block is not omitted.
- the disk array control device 10 is also a device with a high average data reading speed when one disk 50 is out of order.
- the disk array control device 10 has a function (see FIGS. 5 and 6) for processing only stripes that actually need processing based on information on the status management table 16 at the time of rebuild / consistency check. . Therefore, according to the disk array control apparatus 10, both rebuilding and consistency checking of a stripe set with parity (such as a RAID 5 volume) can be performed at high speed.
- the disk array control apparatus 10 described above can perform various modifications.
- the disk array control device 10 can be modified into a device that allows a storage device (such as an SSD (Solid State Drive)) other than the hard disk drive 50 to function as a stripe set with parity.
- a storage device such as an SSD (Solid State Drive)
- the control program 13 for a personal computer it is possible to cause the personal computer to perform the same control as that performed by the disk array control apparatus 10.
- the present invention can be used to realize a storage (striped set with parity) for storing various types of information.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
パリティ付きストライプセットにおけるパリティの算出に要する時間を短縮できるディスクアレイ制御装置を提供する。ディスクアレイ制御装置10は、制御対象となっているパリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、"0"が状況値として状況管理テーブル16に記憶されている各データブロックのデータについては、各データブロックを有するディスク50にアクセスすることなく、各データブロックのデータがALL0データであるとしてパリティを算出する。
Description
本発明は、ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラムに関する。
ディスクアレイとして、RAID5ボリュームやRAID4ボリュームと呼ばれているものが存在している。
RAID5ボリュームは、耐障害性の向上と高速化、大容量化のすべてを実現できるという利点を有している。ただし、RAID5ボリューム及びRAID4ボリュームでは、データをディスクに記録する際、パリティ生成のためのデータをディスクから読み出し、パリティを算出(生成)してディスクに書き込む処理が行われる。そのため、RAID5ボリューム及びRAID4ボリューム(以下、パリティ付きストライプセットと表記する)は、データライト時のオーバーヘッドが比較的に大きなもの(書き込み性能が高くないもの)となっている。
開示の技術の課題は、パリティ付きストライプセットにおけるパリティの算出に要する時間を短縮できる技術を提供することにある。
開示の技術の一態様のディスクアレイ制御装置は、
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
を含み、
前記制御部は、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する。
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
を含み、
前記制御部は、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する。
また、開示の技術の一態様のディスクアレイ制御方法は、
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための方法であって、
コンピュータが、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能なテーブルをメモリ上に用意し、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記テーブルに、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプのパリティブロックへ書き込むパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記テーブルに記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する。
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための方法であって、
コンピュータが、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能なテーブルをメモリ上に用意し、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記テーブルに、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプのパリティブロックへ書き込むパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記テーブルに記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する。
また、開示の技術の一態様のディスクアレイ制御プログラムは、
コンピュータを、
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
を含む装置であって、
前記制御部が、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する
装置として動作させる。
コンピュータを、
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
を含む装置であって、
前記制御部が、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する
装置として動作させる。
尚、開示の技術の一態様のディスクアレイ制御プログラムは、CD-ROM(Compact Disc Read Only Memory)、Flashメモリ等のコンピュータ可読媒体に記録して配布することが出来る。
開示の技術によれば、パリティ付きストライプセットにおけるパリティの算出に要する時間を短縮することが出来る。
以下、本発明を実施するための形態について、図面を参照して詳細に説明する。
まず、図1を用いて、本発明の一実施形態に係るディスクアレイ制御装置10の構成及び使用形態を説明する。
図1に示してあるように、本実施形態に係るディスクアレイ制御装置10は、コントローラ11及びFlashメモリ15を備えた装置である。また、ディスクアレイ制御装置10は、1台以上(図1では、1台)のホスト60と複数台(図1では、3台)のハードディスクドライブ50(以下、ディスク50とも表記する)とに接続されて使用される装置となっている。
Flashメモリ15は、その記憶領域の一部が、状況管理テーブル16(詳細は後述)として使用される書き換え可能な不揮発性メモリである。
コントローラ11は、制御プログラム13を記憶したFlashメモリ12、制御プログラム13を実行するプロセッサ(図示略)等を内蔵したRAID(Redundant Arrays of Inexpensive Disks)コントローラチップである。このコントローラ11は、既存のRAIDコントローラチップのファームウェアを制御プログラム13に変えたものであるため、コントローラ11の具体的な回路構成の説明は省略する。
以下、本実施形態に係るディスクアレイ制御装置10の動作を説明する。
ディスクアレイ制御装置10は、接続されている複数台のディスク50の中からオペレータにより選択された複数台のディスク50を、各種RAIDレベルのディスクアレイ(論理ボリューム)として機能させることが出来る装置である。ただし、ディスクアレイ制御装置10は、複数台のディスク50を、パリティ付きストライプセット(RAID5ボリューム又はRAID4ボリューム)として機能させる際の動作内容に特に特徴があるものとなっている。そして、RAID5ボリュームの方がRAID4ボリュームよりも高性能なので、以下では、複数台のディスク50をRAID5ボリュームとして機能させる際の動作内容を中心に、ディスクアレイ制御装置10の動作を説明することにする。
RAID5ボリューム(又はRAID4ボリューム)を実現/構築するためには、少なくとも3台のディスク50が必要である。従って、ディスクアレイ制御装置10を用いてRAID5ボリュームを実現/構築する場合には、ディスクアレイ制御装置10に3台以上のディスク50が接続される。その後、オペレータにより、ホスト60(又は他のコンピュータ)を用いて、ディスクアレイ制御装置10に対して、少なくとも3台のディスク50を指定してRAID5ボリュームの作成を指示する作業が行われる。
RAID5ボリュームの作成が指示されると、コントローラ11は、Flashメモリ15上に、当該ボリュームに関する状況管理テーブル16を作成する。
図1に示してあるように、状況管理テーブル16は、RAID5ボリューム化が指示された複数台(図1では、3台)のディスク50のそれぞれのブロック(所定サイズの記憶領域)毎に、そのブロックについての状況値を記憶可能なテーブルである。
以下、RAID5ボリューム化が指示されたM台のディスク50、それらの中の1台のディスク50ことを、それぞれ、単に、M台のディスク50、ディスク50と表記する。また、各ディスク50の、データが記憶されるブロックのことをデータブロックと表記し、各ディスク50の、パリティが記憶されるブロックのことをパリティブロックと表記する。さらに、それらに記憶されているデータからパリティが算出されるM-1個のデータブロックと、算出されたパリティが記憶されるパリティブロックとからなる総計M個のブロックのことを、ストライプと表記する。
状況管理テーブル16(図1)に記憶される状況値としては、3種の状況値“0”、“1”及び“P”がある。
状況値“1”は、データブロックについての状況値としてのみ使用される、データブロックが有効なデータを保持していることを示す情報である。状況値“P”は、パリティブロックについての状況値としてのみ使用される、パリティブロックが有効なパリティを保持していることを示す情報である。状況値“0”は、データブロック、パリティブロックのいずれについての状況値としても使用される、データ/パリティブロックが、本来、ALL0データ(全ビットが“0”のデータ)を保持しているべきブロックであることを示す情報である。尚、各状況値としては、例えば、「状況値“0”=00b、状況値“1”=01b、状況値“P”=11b」といったように、通常、2ビットのデータが使用される。
RAID5ボリュームの作成が指示された場合、コントローラ11は、M(≧3)台のディスク50の各ブロック(データ/パリティブロック)について状況値を記憶可能な、空の状況管理テーブル16を作成する。そして、コントローラ11は、ディスクアレイの作成完了をホスト60に通知する。
その後、オペレータによりホスト60に対して所定の操作がなされ、その結果として、ホスト60からコントローラ11(ディスクアレイ制御装置10)に、作成したRAID5ボリューム(ディスクアレイ)の初期化を指示する初期化コマンドが送信される。
初期化コマンドを受信した場合、コントローラ11は、各ディスク50を実際に初期化する(各ディスク50内の各ブロックにALL0データを書き込む)ことなく、状況管理テーブル16上の各ブロックに関する状況値を“0”に初期化する。そして、コントローラ11は、初期化の完了をホスト60に通知してから、ホスト60からの各種コマンドに応答できる状態となる。
コントローラ11がホスト60から受信するコマンドには、ライトコマンド、リードコマンド、データ破棄コマンド、リビルドコマンド、一貫性チェックコマンド等がある。
以下、各コマンドに対するコントローラ11の動作を順に説明する。
《ライトコマンドに対するコントローラ11の動作》
コントローラ11がホスト60から受信するライトコマンドは、RAID5ボリュームのブロックサイズの整数倍のサイズの、書き込み開始位置が或るブロックの先頭位置と一致しているデータの書き込みを要求するコマンドである。コントローラ11は、全ディスク50が正常に機能している場合にのみ、ライトコマンドを受け付ける(受信したライトコマンドに応答する)。換言すれば、ディスクアレイ制御装置10は、RAID5ボリューム(M台のディスク50)がストレージとして機能し得る場合であっても、RAID5ボリュームの冗長性が失われている場合には、ライトコマンドを受け付けない装置となっている。
コントローラ11がホスト60から受信するライトコマンドは、RAID5ボリュームのブロックサイズの整数倍のサイズの、書き込み開始位置が或るブロックの先頭位置と一致しているデータの書き込みを要求するコマンドである。コントローラ11は、全ディスク50が正常に機能している場合にのみ、ライトコマンドを受け付ける(受信したライトコマンドに応答する)。換言すれば、ディスクアレイ制御装置10は、RAID5ボリューム(M台のディスク50)がストレージとして機能し得る場合であっても、RAID5ボリュームの冗長性が失われている場合には、ライトコマンドを受け付けない装置となっている。
ライトコマンドを受信した場合、コントローラ11は、受信したライトコマンドを、1データブロックへのデータの書き込みを要求する幾つかのライト要求に分割する。そして、コントローラ11は、各ライト要求について、図2に示した手順のデータライト処理を行う。尚、図2及び図2に関する以下の説明において、ライトデータとは、データライト処理の処理対象となっているライト要求が書き込みを要求している1ブロックサイズ分のデータのことである。また、注目データブロックとは、ライトデータが書き込まれるべきデータブロックのことであり、注目ストライプとは、注目データブロックを含むストライプのことである。
すなわち、或るライト要求に対するデータライト処理を開始したコントローラ11は、まず、状況管理テーブル16から、注目ストライプの各データブロックに関する状況値を読み出す(ステップS101)。
次いで、コントローラ11は、ライトデータを注目データブロックに書き込む(ステップS102)。
その後、コントローラ11は、パリティ算出処理(ステップS103)を行うことにより、注目ストライプに関するパリティ(注目ストライプのパリティブロックに書き込むべきパリティ)を算出する。
具体的には、このパリティ算出処理時、コントローラ11は、まず、ステップS101の処理で読み出した状況値が“1”となっている、注目データブロック以外の各データブロックから、各データブロック上の全データ(1ブロックサイズ分のデータ)を読み出す。そして、コントローラ11は、そのようなデータの読み出しにより、パリティの算出に必要とされるデータ(ライトデータ以外のM-2個のデータ)が揃った場合には、それらのデータとライトデータの排他的論理和(つまり、注目ストライプに関するパリティ)を算出して、パリティ算出処理を終了する。
一方、パリティの算出に必要とされるデータが揃わなかった場合、コントローラ11は、不足している各データとして、1ブロックサイズ分のALL0データを用いて、注目ストライプに関するパリティを算出する。
すなわち、上記のようなデータの読み出しにより、パリティの算出に必要とされるデータ(ライトデータ以外のM-2個のデータ)が揃わないのは、状況値が“0”となっている幾つかのデータブロックが存在している場合である。状況値の具体的な更新手順については順次説明していくが、既に説明したように、状況管理テーブル16上の状況値“0”は、データ/パリティブロックが、本来、ALL0データを保持しているべきブロックであることを示す情報となっている。従って、不足している各データとしてALL0データを用いることにより、注目ストライプに関するパリティが算出できることになる。
幾つかのALL0データを用いて注目ストライプに関するパリティを算出したコントローラ11は、パリティ算出処理(ステップS103)を終了する。
パリティ算出処理を終えた(ALL0データを用いて又はALL0データを用いずにパリティを算出した)コントローラ11は、算出したパリティを、注目ストライプのパリティブロックに書き込む(ステップS104)。次いで、コントローラ11は、状況管理テーブル16上の、今回、情報(データ/パリティ)を書き込んだデータブロック(注目データブロック)、パリティブロックに関する状況値を、それぞれ、“1”、“P”に更新する(ステップS105)。尚、このステップS105の処理は、いずれか一方の状況値の値、又は双方の状況値の値が、変わらない場合もある処理である。
ステップS105の処理を終えたコントローラ11は、このデータライト処理(図2の処理)を終了する。
そして、コントローラ11は、受信したライトコマンドの分割により得られた全ライト要求に対するデータライト処理が完了したときに、ホスト60にデータの書込が完了したことを通知してから、受信したライトコマンドに対する処理を終了する。
《リードコマンドに対するコントローラ11の動作》
コントローラ11がホスト60から受信するリードコマンドは、RAID5ボリュームのブロックサイズの整数倍のサイズの、読み出し開始位置が或るブロックの先頭位置と一致しているデータの読み出しを要求するコマンドである。尚、コントローラ11は、M台のディスク50が全て正常に機能している場合と、M-1台のディスク50が正常に機能している場合とに、リードコマンドを受け付ける。
コントローラ11がホスト60から受信するリードコマンドは、RAID5ボリュームのブロックサイズの整数倍のサイズの、読み出し開始位置が或るブロックの先頭位置と一致しているデータの読み出しを要求するコマンドである。尚、コントローラ11は、M台のディスク50が全て正常に機能している場合と、M-1台のディスク50が正常に機能している場合とに、リードコマンドを受け付ける。
リードコマンドを受信した場合、コントローラ11は、受信したリードコマンドを、1データブロックのデータの読み出しを要求する幾つかのリード要求に分割する。そして、コントローラ11は、各リード要求について、図3に示した手順のデータリード処理を行う。尚、図3及び図3に関する以下の説明において、リードデータとは、データリード処理の処理対象となっているリード要求が読み出しを要求している1データブロック上のデータのことである。注目データブロックとは、リードデータが格納されているデータブロックのことである。また、注目ストライプとは、注目データブロックを含むストライプのことであり、リード対象ディスクとは、注目データブロックを有するディスク50のことである。
図3に示してあるように、或るリード要求に対するデータリード処理を開始したコントローラ11は、まず、状況管理テーブル16から、注目ストライプの各ブロック(データ/パリティブロック)に関する状況値を読み出す(ステップS201)。
そして、コントローラ11は、状況管理テーブル16から読み出した注目データブロックについての状況値が“0”であるか否かを判断する(ステップS202)。
注目データブロックに関する状況値が“0”であった場合(ステップS202;YES)、コントローラ11は、何れのディスク50にもアクセスすることなく、処理中のリード要求に対する応答データとしてALL0データを記憶する(ステップS203)。そして、コントローラ11は、このデータリード処理を終了する。
一方、注目データブロックに関する状況値が“1”であった場合(ステップS202;NO)、コントローラ11は、リード対象ディスク(注目データブロックを有するディスク50)が故障中であるか否かを判断する(ステップS204)。
リード対象ディスクが故障中ではなかった場合(ステップS204;NO)、コントローラ11は、リード対象ディスクの注目データブロックからリードデータを読み出して、処理中のリード要求に対する応答データとして記憶する(ステップS205)。
また、リード対象ディスクが故障中であった場合(ステップS204;YES)、コントローラ11は、ステップS205にて、他のM-1台のディスク50内のデータから、リードデータを生成(復旧)するデータ生成処理を行う。このデータ生成処理時、コントローラ11は、ステップS201の処理で読み出した状況値が“1”となっている、注目データブロック以外の各ブロックから、データ/パリティを読み出す。そして、コントローラ11は、各ブロックからのデータの読み出しによりリードデータを生成するのに必要なデータが揃った場合には、それらのデータからリードデータを生成して、データ生成処理を終了する。
一方、上記データの読み出しでは、リードデータを生成するのに必要なデータが揃わなかった場合、コントローラ11は、不足している各データとしてALL0データを用いてリードデータを生成する。そして、コントローラ11は、データ生成処理を終了する。
上記内容のデータ生成処理によりリードデータを生成したコントローラ11は、生成したリードデータを処理中のリード要求に対する応答データとして記憶する。そして、コントローラ11は、ステップS206の処理及びデータリード処理(図2の処理)を終了する。
コントローラ11は、リードコマンドを分割した全リード要求に対するデータリード処理が完了したときに、各リード要求に対する応答データとして記憶しているデータを繋げたデータをホスト60に送信する。そして、コントローラ11は、受信したリードコマンドに対する処理を終了する。
《データ破棄コマンドに対するコントローラ11の動作》
データ破棄コマンドは、或るアドレス範囲内のデータの破棄(“0”クリア)を指示するためにホスト60が送信するコマンド(アドレス範囲の指定情報を含むコマンド)である。
データ破棄コマンドは、或るアドレス範囲内のデータの破棄(“0”クリア)を指示するためにホスト60が送信するコマンド(アドレス範囲の指定情報を含むコマンド)である。
このデータ破棄コマンドを受信した場合、コントローラ11は、図4に示した手順のデータ破棄処理を実行する。
すなわち、データ破棄コマンドを受信したコントローラ11は、まず、状況管理テーブル16上の情報に基づき、指定破棄範囲に、全領域が含まれる各データブロックと一部の領域が含まれる各データブロックとを特定する(ステップS301)。ここで、指定破棄範囲とは、受信したデータ破棄コマンドにてデータを破棄することが指示されているアドレス範囲のことである。
次いで、コントローラ11は、全領域が指定破棄範囲に含まれる1つ以上のデータブロックを特定できたか否かを判断する(ステップS302)。全領域が指定破棄範囲に含まれる1つ以上のデータブロックを特定できた場合(ステップS302;YES)、コントローラ11は、当該1つ以上のデータブロックを実際に“0”クリアすることなく、状況管理テーブル16上の、当該1つ以上のデータブロックのそれぞれについての状況値を“0”に変更する(ステップS303)。
その後、コントローラ11は、一部の領域が指定破棄範囲に含まれる1つ以上のデータブロックを特定できたか否かを判断する(ステップS304)。尚、全領域が指定破棄範囲に含まれるデータブロックが全く特定できなかった場合(ステップS302;NO)、ステップS303の処理を行うことになく、ステップS304の処理(判断)を行う。
一部の領域が指定破棄範囲に含まれるデータブロックが1つも特定できなかった場合(ステップS304;NO)、コントローラ11は、このデータ破棄処理(図4の処理)を終了する。一方、一部の領域が指定破棄範囲に含まれる1つ又は2つのデータブロックが特定できた場合(ステップS304;YES)、コントローラ11は、各データブロックの指定破棄範囲内の部分を“0”クリアする(ステップS305)。その後、コントローラ11は、このデータ破棄処理を終了する。
《リビルドコマンドに対するコントローラ11の動作》
リビルドコマンドは、或るディスク50が故障した場合に、そのディスク50を正常な新ディスク50に交換してから、コントローラ11に対して送信されるコマンドである。
リビルドコマンドは、或るディスク50が故障した場合に、そのディスク50を正常な新ディスク50に交換してから、コントローラ11に対して送信されるコマンドである。
リビルドコマンドを受信した場合、コントローラ11は、図5に示した手順のリビルド処理を実行する。尚、図5及び以下の説明において、復旧対象ブロックとは、新ディスク50の或るデータ/パリティブロックのことであり、正常ディスク50とは、元からあったディスク50(新ディスク50ではないディスク50)のことである。有効データブロック、無効データブロックとは、それぞれ、状況管理テーブル16上の状況値が“1”、“0”となっている正常ディスク50内のデータブロックのことである。
図5に示してあるように、リビルドコマンドの受信によりこのリビルド処理を開始したコントローラ11は、まず、RAID5ボリュームの最初のストライプを処理対象ストライプとして選択する(ステップS401)。次いで、コントローラ11は、処理対象ストライプの各ブロック(データ/パリティブロック)に関する状況値を状況管理テーブル16から読み出す(ステップS402)。そして、コントローラ11は、読み出した状況値に基づき、処理対象ストライプに有効データブロックが含まれているか否かを判断する(ステップS403)。
処理対象ストライプに有効データブロックが含まれていた場合(ステップS403;YES)、コントローラ11は、読み出してある状況値に基づき、さらに、処理対象ストライプに無効データブロックが含まれているか否かを判断する(ステップS404)。
尚、或るデータブロックに関する状況値が“1”である場合(或るデータブロックが有効データブロックである場合)、常に、そのデータブロックと同じストライプに含まれるパリティブロックに関する状況値は、“P”となっている(図2、図4参照)。従って、ステップS403でYES側への分岐が行われる場合、処理対象ストライプのパリティブロックが正常ディスク50内に存在しているのであれば、当該パリティブロックにも有効なデータが記憶されていることになる。
コントローラ11は、処理対象ストライプに無効データブロックが含まれていなかった場合(ステップS404;NO)、通常復旧処理(ステップS405)を行う。ここで、通常復旧処理とは、M-1台の正常ディスク50のそれぞれから、処理対象ストライプに関するデータ/パリティブロック上の情報を読み出し、読み出したM-1個の情報から、復旧対象ブロック用のデータ/パリティを生成し、生成したデータ/パリティを復旧対象ブロックに書き込む処理のことである。
一方、処理対象ストライプに無効データブロックが含まれていた場合(ステップS404;YES)、コントローラ11は、ステップS406にて、以下の内容の特殊復旧処理を行う。
特殊復旧処理を開始したコントローラ11は、処理対象ストライプの各正常ディスク50内の有効データブロック(又は、パリティブロック)に記憶されている情報を、各正常ディスク50から読み出す。その後、コントローラ11は、復旧対象データを復旧するのに必要とされる他の各データとしてALL0データを使用して、復旧対象ブロック用のデータ/パリティを生成する。そして、コントローラ11は、生成したデータ/パリティを復旧対象ブロックに書き込んでから、特殊復旧処理を終了する。
特殊復旧処理又は通常復旧処理を終えたコントローラ11は、未処理ストライプが残っているか否かを判断する(ステップS407)。
未処理ストライプが残っていた場合(ステップS407;YES)、コントローラ11は、次ストライプを処理対象ストライプとして選択(ステップS408)してから、ステップS402以降の処理を再び開始する。
また、コントローラ11は、処理対象ストライプに有効データブロックが含まれていなかった場合(ステップS403;NO)には、特殊復旧処理/通常復旧処理を行うことなく、ステップS407の判断を行う。
すなわち、処理対象ストライプに有効データブロックが含まれていないのは、処理対象ストライプの全データブロックの状況値とパリティブロックの状況値とが全て“0”である場合、及び、処理対象ストライプの全データブロックの状況値が“0”であり、パリティブロックの状況値が“P”である場合(図4参照)である。そして、これらの場合は、いずれも、復旧対象ブロック上の情報(データ/パリティ)を復旧する必要がない場合である。そのため、コントローラ11は、処理対象ストライプに有効データブロックが含まれていなかった場合(ステップS403;NO)、復旧処理(特殊復旧処理又は通常復旧処理)をスキップ/省略して、未処理ストライプが残っているか否かを判断する(ステップS407)。
そして、コントローラ11は、全てのストライプに対する処理が終わったときに(ステップS407;NO)、このリビルド処理を終了する。
《一貫性チェックコマンドに対するコントローラ11の動作》
一貫性チェックコマンドは、各ストライプ内のデータに一貫性があるか否かをチェックすることを要求するコマンドである。尚、「或るストライプ内のデータに一貫性がある」とは、「或るストライプの各データブロック上のデータから算出したパリティと当該ストライプのパリティブロック上のパリティとが一致する」ということである。
一貫性チェックコマンドは、各ストライプ内のデータに一貫性があるか否かをチェックすることを要求するコマンドである。尚、「或るストライプ内のデータに一貫性がある」とは、「或るストライプの各データブロック上のデータから算出したパリティと当該ストライプのパリティブロック上のパリティとが一致する」ということである。
一貫性チェックコマンドを受信した場合、コントローラ11は、図6に示した手順の一貫性チェック処理を実行する。
すなわち、一貫性チェックコマンドを受信したコントローラ11は、まず、最初のストライプを処理対象ストライプとして選択する(ステップS501)。次いで、コントローラ11は、処理対象ストライプの各ブロック(データ/パリティブロック)に関する状況値を状況管理テーブル16から読み出す(ステップS502)。
その後、コントローラ11は、読み出した状況値に基づき、処理対象ストライプに有効データブロックが含まれているか否かを判断する(ステップS503)。ここで、有効データブロックとは、状況管理テーブル16上の状況値が“1”となっているデータブロックのことである。
処理対象ストライプに有効データブロックが含まれていた場合(ステップS503;YES)、コントローラ11は、読み出してある状況値に基づき、さらに、処理対象ストライプに、無効データブロック(状況値が“0”となっているデータブロック)が含まれているか否かを判断する(ステップS504)。
コントローラ11は、処理対象ストライプに無効データブロックが含まれていなかった場合(ステップS504;NO)、ステップS505にて、以下の内容の通常一貫性チェック処理を行う。
通常一貫性チェック処理を開始したコントローラ11は、まず、各ディスク50から処理対象ストライプのデータブロック又はパリティブロック上の情報(データ/パリティ)を読み出す。その後、コントローラ11は、読み出したM-1個のデータのパリティを算出し、算出結果がパリティブロックから読み出してあるパリティと一致しているか否かをチェックする。そして、コントローラ11は、チェック結果を記憶してから通常一貫性チェック処理を終了する。
一方、処理対象ストライプに無効データブロックが含まれていた場合(ステップS504;YES)、コントローラ11は、ステップS506にて、以下の内容の特殊一貫性チェック処理を行う。
特殊一貫性チェック処理を開始したコントローラ11は、処理対象ストライプの全有効データブロック及びパリティブロックのそれぞれに記憶されている情報を、各ブロックを備えたディスク50から読み出す。その後、コントローラ11は、処理対象ストライプに関するパリティの算出に必要な残りの各データとしてALL0データを使用して、パリティを算出する。そして、コントローラ11は、生成したパリティが、処理対象ストライプのパリティブロックから読み出してあるパリティと一致しているか否かをチェックし、チェック結果を記憶してから特殊一貫性チェック処理を終了する。
通常/特殊一貫性チェック処理(ステップS505又はS506)を終えたコントローラ11は、未処理ストライプが残っているか否かを判断する(ステップS507)。
未処理ストライプが残っていた場合(ステップS507;YES)、コントローラ11は、次ストライプを処理対象ストライプとして選択(ステップS508)してから、ステップS502以降の処理を再び開始する。
また、処理対象ストライプに有効データブロックが含まれていなかった場合(ステップS503;NO)、コントローラ11は、通常/特殊一貫性チェック処理を行うことなく、ステップS507の判断を行う。
コントローラ11は、全ストライプに対する処理が終わった場合(ステップS507;NO)には、各通常/特殊一貫性チェック処理のチェック結果を纏めた情報をホスト60に対して送信する(ステップS509)。そして、コントローラ11は、この一貫性チェック処理を終了する。
以上、説明したように、本実施形態に係るディスクアレイ制御装置10は、制御対象となっているパリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、“0”が状況値として状況管理テーブル16に記憶されている各データブロックのデータについては、各データブロックを有するディスク50にアクセスすることなく、各データブロックのデータがALL0データであるとしてパリティを算出する(図2参照)機能を有している。
すなわち、ディスクアレイ制御装置10は、通常のディスクアレイ制御装置よりもパリティの算出時にディスク50から読み出すデータの数が少ない場合がある装置となっている。そして、ディスク50から読み出すデータの数が減れば、パリティの算出に要する手間/時間が減るのであるから、ディスクアレイ制御装置10は、既存のディスクアレイ制御装置よりも、パリティの生成に要する時間(平均時間)が短い装置となっていると言うことが出来る。さらに、パリティの生成に要する時間が短ければ、データの書き込みに要する時間も短くなる。従って、本実施形態に係るディスクアレイ制御装置10によれば、既存のディスクアレイ制御装置よりも、データの書き込み速度が速いパリティ付きストライプセットを実現できることになる。
また、ディスクアレイ制御装置10は、或るデータブロック上のデータの破棄が指示された場合に、当該データブロックに関する状況値を“0”に戻す機能(図4参照)を有している。従って、本ディスクアレイ制御装置10を用いておけば、或るデータブロック上のデータがファイルシステム上では削除されているのも拘わらず、そのデータブロックの状況値が“1”となっているが故に、当該データブロックからのデータの読み出しが省略されないといったことが生ずるのを抑止できることにもなる。
ディスクアレイ制御装置10は、或るデータブロックからデータを読み出すべきときに、当該データブロックを有するディスク50が故障しており、且つ、当該データブロックと同じストライプの他のデータブロックの中に、状況値“0”が状況管理テーブル16に記憶されているK個のデータブロックがあった場合、K台のディスク50からデータを読み出すことなく、当該データブロックのデータを生成する機能(図3参照)も有している。従って、ディスクアレイ制御装置10は、1台のディスク50が故障している場合におけるデータの平均的な読み出し速度が速い装置となっていることにもなる。
さらに、ディスクアレイ制御装置10は、リビルド/一貫性チェック時に、状況管理テーブル16上の情報に基づき、実際に処理が必要なストライプのみを処理する機能(図5,図6参照)を有してる。従って、ディスクアレイ制御装置10によれば、パリティ付きストライプセット(RAID5ボリューム等)のリビルド、一貫性チェックの双方が高速に行えることにもなる。
《変形形態》
上記したディスクアレイ制御装置10は、各種の変形を行えるものである。例えば、ディスクアレイ制御装置10を、ハードディスクドライブ50ではない記憶装置(SSD(Solid State Drive)等)をパリティ付きストライプセットとして機能させる装置に変形することが出来る。また、制御プログラム13をパーソナルコンピュータ用のものにプログラミングしなおすことにより、ディスクアレイ制御装置10が行っているものと同様の制御をパーソナルコンピュータに行わせることも出来る。
上記したディスクアレイ制御装置10は、各種の変形を行えるものである。例えば、ディスクアレイ制御装置10を、ハードディスクドライブ50ではない記憶装置(SSD(Solid State Drive)等)をパリティ付きストライプセットとして機能させる装置に変形することが出来る。また、制御プログラム13をパーソナルコンピュータ用のものにプログラミングしなおすことにより、ディスクアレイ制御装置10が行っているものと同様の制御をパーソナルコンピュータに行わせることも出来る。
さらに、ディスクアレイ制御装置10から幾つかの機能を取り除いておいても良いことや、ディスク50等の記憶装置に対する具体的な制御手順を上記したものとは異なるものとしておいても良いことなどは、当然のことである。
本発明は、各種情報を記憶するためのストレージ(パリティ付きストライプセット)を実現するために利用することができる。
10 ディスクアレイ制御装置
11 コントローラ
12、15 Flashメモリ
13 制御プログラム
16 状況管理テーブル
50 ハードディスクドライブ
60 ホスト
11 コントローラ
12、15 Flashメモリ
13 制御プログラム
16 状況管理テーブル
50 ハードディスクドライブ
60 ホスト
Claims (15)
- M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
を含み、
前記制御部は、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する
ことを特徴とするディスクアレイ制御装置。 - 前記制御部は、
前記パリティ付きストライプセットの或るデータブロックにデータを書き込むときに、前記状況値記憶部に、当該データブロックの状況値として第2所定値を記憶させ、
前記パリティ付きストライプセットの或るデータブロック上のデータの破棄が指示されたときに、当該データブロックを有する記憶装置にアクセスすることなく、前記状況値記憶部に、当該データブロックの前記状況値として前記第1所定値を記憶させる
ことを特徴とする請求項1に記載のディスクアレイ制御装置。 - 前記制御部は、
或るデータブロックのデータに対する読み出し要求を受信したときに、当該データブロックを有する記憶装置が故障しており、且つ、当該データブロックと同じストライプの他のデータブロックの中に前記第1所定値が前記状況値として前記状況値記憶部に記憶されている幾つかのデータブロックがあった場合、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データがALL0データであるとして前記データブロックのデータの生成し、生成したデータを前記読み出し要求の送信元に返送する
ことを特徴とする請求項1に記載のディスクアレイ制御装置。 - 前記制御部は、
複数のストライプのそれぞれについて、そのストライプのデータに一貫性があるか否かのチェックを実行すべきことが指示された場合に、前記状況値記憶部に記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記チェックを省略する
ことを特徴とする請求項1に記載のディスクアレイ制御装置。 - 前記制御部は、
前記M台の記憶装置の中の1台が新記憶装置に交換されてから前記パリティ付きストライプセットのリビルドが指示された場合、前記状況値記憶部に記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記新記憶装置に対する復旧処理を省略する
ことを特徴とする請求項1に記載のディスクアレイ制御装置。 - M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるためのディスクアレイ制御方法であって、
コンピュータが、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能なテーブルをメモリ上に用意し、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記テーブルに、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプのパリティブロックへ書き込むパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記テーブルに記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する
ことを特徴とするディスクアレイ制御方法。 - 前記コンピュータが、
前記パリティ付きストライプセットの或るデータブロックにデータを書き込むときに、前記テーブルに、当該データブロックの状況値として第2所定値を記憶させ、
前記パリティ付きストライプセットの或るデータブロック上のデータの破棄が指示されたときに、当該データブロックを有する記憶装置にアクセスすることなく、前記テーブルに、当該データブロックの前記状況値として前記第1所定値を記憶させる
ことを特徴とする請求項6に記載のディスクアレイ制御方法。 - 前記コンピュータが、
或るデータブロックのデータに対する読み出し要求を受信したときに、当該データブロックを有する記憶装置が故障しており、且つ、当該データブロックと同じストライプの他のデータブロックの中に前記第1所定値が前記状況値として前記テーブルに記憶されている幾つかのデータブロックがあった場合、前記第1所定値が前記状況値として前記テーブルに記憶されている各データがALL0データであるとして前記データブロックのデータの生成し、生成したデータを前記読み出し要求の送信元に返送する
ことを特徴とする請求項6に記載のディスクアレイ制御方法。 - 前記コンピュータが、
複数のストライプのそれぞれについて、そのストライプのデータに一貫性があるか否かのチェックを実行すべきことが指示された場合に、前記テーブルに記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記チェックを省略する
ことを特徴とする請求項6に記載のディスクアレイ制御方法。 - 前記コンピュータが、
前記M台の記憶装置の中の1台が新記憶装置に交換されてから前記パリティ付きストライプセットのリビルドが指示された場合、前記テーブルに記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記新記憶装置に対する復旧処理を省略する
ことを特徴とする請求項6に記載のディスクアレイ制御方法。 - コンピュータを、
M(≧3)台の記憶装置をパリティ付きストライプセットとして動作させるための制御部と、
前記パリティ付きストライプセットの各ストライプに含まれる複数のデータブロックのそれぞれについて、状況値を記憶可能な状況値記憶部と、
を含む装置であって、
前記制御部が、
前記パリティ付きストライプセットの或るデータブロックにALL0データを書き込むべきときに、当該データブロックにALL0データを書き込むことなく、前記状況値記憶部に、当該データブロックの状況値として第1所定値を記憶させ、
前記パリティ付きストライプセットの或るストライプに関するパリティの算出時に、その算出に必要とされるデータのうち、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データブロックのデータについては、各データブロックを有する記憶装置にアクセスすることなく、各データブロックのデータがALL0データであるとして前記ストライプに関するパリティを算出する
装置として動作させる
ことを特徴とするディスクアレイ制御プログラム。 - 前記制御部は、
前記パリティ付きストライプセットの或るデータブロックにデータを書き込むときに、前記状況値記憶部に、当該データブロックの状況値として第2所定値を記憶させ、
前記パリティ付きストライプセットの或るデータブロック上のデータの破棄が指示されたときに、当該データブロックを有する記憶装置にアクセスすることなく、前記状況値記憶部に、当該データブロックの前記状況値として前記第1所定値を記憶させる
ことを特徴とする請求項11に記載のディスクアレイ制御プログラム。 - 前記制御部は、
或るデータブロックのデータに対する読み出し要求を受信したときに、当該データブロックを有する記憶装置が故障しており、且つ、当該データブロックと同じストライプの他のデータブロックの中に前記第1所定値が前記状況値として前記状況値記憶部に記憶されている幾つかのデータブロックがあった場合、前記第1所定値が前記状況値として前記状況値記憶部に記憶されている各データがALL0データであるとして前記データブロックのデータの生成し、生成したデータを前記読み出し要求の送信元に返送する
ことを特徴とする請求項11に記載のディスクアレイ制御プログラム。 - 前記制御部は、
複数のストライプのそれぞれについて、そのストライプのデータに一貫性があるか否かのチェックを実行すべきことが指示された場合に、前記状況値記憶部に記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記チェックを省略する
ことを特徴とする請求項11に記載のディスクアレイ制御プログラム。 - 前記制御部は、
前記M台の記憶装置の中の1台が新記憶装置に交換されてから前記パリティ付きストライプセットのリビルドが指示された場合、前記状況値記憶部に記憶されている全データブロックの前記状況値が前記第1所定値となっている各ストライプについては、前記新記憶装置に対する復旧処理を省略する
ことを特徴とする請求項11に記載のディスクアレイ制御プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/067916 WO2014010077A1 (ja) | 2012-07-13 | 2012-07-13 | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム |
JP2014524569A JP6052288B2 (ja) | 2012-07-13 | 2012-07-13 | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/067916 WO2014010077A1 (ja) | 2012-07-13 | 2012-07-13 | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014010077A1 true WO2014010077A1 (ja) | 2014-01-16 |
Family
ID=49915579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2012/067916 WO2014010077A1 (ja) | 2012-07-13 | 2012-07-13 | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6052288B2 (ja) |
WO (1) | WO2014010077A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015166958A (ja) * | 2014-03-04 | 2015-09-24 | 日本電気株式会社 | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム |
WO2018131067A1 (ja) * | 2017-01-10 | 2018-07-19 | 株式会社日立製作所 | 記憶ドライブの故障により消失したデータを復元する装置 |
CN112947858A (zh) * | 2021-02-25 | 2021-06-11 | 浪潮电子信息产业股份有限公司 | 一种raid 5校验值的更新方法、装置和介质 |
CN116795295A (zh) * | 2023-08-16 | 2023-09-22 | 苏州浪潮智能科技有限公司 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09330180A (ja) * | 1996-06-10 | 1997-12-22 | Hitachi Ltd | コンピュータシステムのディスクアレイ装置 |
JP2011048553A (ja) * | 2009-08-26 | 2011-03-10 | Nec Corp | ストレージ装置、および同装置における実容量割当て方法、ならびに実容量割当てプログラム |
-
2012
- 2012-07-13 JP JP2014524569A patent/JP6052288B2/ja active Active
- 2012-07-13 WO PCT/JP2012/067916 patent/WO2014010077A1/ja active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09330180A (ja) * | 1996-06-10 | 1997-12-22 | Hitachi Ltd | コンピュータシステムのディスクアレイ装置 |
JP2011048553A (ja) * | 2009-08-26 | 2011-03-10 | Nec Corp | ストレージ装置、および同装置における実容量割当て方法、ならびに実容量割当てプログラム |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015166958A (ja) * | 2014-03-04 | 2015-09-24 | 日本電気株式会社 | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム |
WO2018131067A1 (ja) * | 2017-01-10 | 2018-07-19 | 株式会社日立製作所 | 記憶ドライブの故障により消失したデータを復元する装置 |
JPWO2018131067A1 (ja) * | 2017-01-10 | 2019-06-27 | 株式会社日立製作所 | 記憶ドライブの故障により消失したデータを復元する装置 |
CN112947858A (zh) * | 2021-02-25 | 2021-06-11 | 浪潮电子信息产业股份有限公司 | 一种raid 5校验值的更新方法、装置和介质 |
CN112947858B (zh) * | 2021-02-25 | 2023-04-25 | 浪潮电子信息产业股份有限公司 | 一种raid 5校验值的更新方法、装置和介质 |
CN116795295A (zh) * | 2023-08-16 | 2023-09-22 | 苏州浪潮智能科技有限公司 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
CN116795295B (zh) * | 2023-08-16 | 2023-11-17 | 苏州浪潮智能科技有限公司 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
JP6052288B2 (ja) | 2016-12-27 |
JPWO2014010077A1 (ja) | 2016-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7809979B2 (en) | Storage control apparatus and method | |
US8392752B2 (en) | Selective recovery and aggregation technique for two storage apparatuses of a raid | |
US8799745B2 (en) | Storage control apparatus and error correction method | |
US20050229033A1 (en) | Disk array controller and information processing apparatus | |
JP2010015197A (ja) | ストレージ制御装置、データ復元装置およびストレージシステム | |
US9286174B2 (en) | Disk array having mirror configuration and rebuilding method therefor | |
US10067833B2 (en) | Storage system | |
JP2006139478A (ja) | ディスクアレイシステム | |
JP6052288B2 (ja) | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム | |
JP6206160B2 (ja) | ストレージ制御装置、ストレージ制御プログラム及びストレージ制御方法 | |
WO2014188479A1 (ja) | ストレージ装置及びストレージ装置の制御方法 | |
JP5040331B2 (ja) | 記憶装置、記憶装置の制御方法、及び記憶装置の制御プログラム | |
JP4788492B2 (ja) | ストレージ装置の容量拡張方法、プログラム、およびストレージ装置 | |
JP2005107838A (ja) | ディスクアレイコントローラ及びログ情報記録方法 | |
US10073633B2 (en) | Data storage system and method for a plurality of disk arrays | |
JP2005107839A (ja) | アレイコントローラ及びディスクアレイ再構築方法 | |
US10014983B2 (en) | System, receiving device, and method | |
JP6556980B2 (ja) | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム | |
JP2007115162A (ja) | データの二重保存方法 | |
JP6175771B2 (ja) | ディスクアレイ装置、バッドセクタ修復方法および修復プログラム | |
JP5729043B2 (ja) | ストレージ装置および制御装置 | |
JP2005346212A (ja) | ディスクアレイコントローラおよび情報処理装置 | |
EP2924576A1 (en) | Storage control apparatus, control program, and control method | |
JP2017054303A (ja) | ディスクアレイ装置、ディスクアレイシステム、制御方法、および、制御プログラム | |
JP6805838B2 (ja) | ディスク管理システム、ディスク管理方法、および、ディスク管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12880745 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2014524569 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 12880745 Country of ref document: EP Kind code of ref document: A1 |