WO2015107675A1 - ストレージ装置および制御方法 - Google Patents

ストレージ装置および制御方法 Download PDF

Info

Publication number
WO2015107675A1
WO2015107675A1 PCT/JP2014/050793 JP2014050793W WO2015107675A1 WO 2015107675 A1 WO2015107675 A1 WO 2015107675A1 JP 2014050793 W JP2014050793 W JP 2014050793W WO 2015107675 A1 WO2015107675 A1 WO 2015107675A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
storage device
chunk data
target chunk
backup
Prior art date
Application number
PCT/JP2014/050793
Other languages
English (en)
French (fr)
Inventor
賢 野村
光雄 早坂
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/050793 priority Critical patent/WO2015107675A1/ja
Publication of WO2015107675A1 publication Critical patent/WO2015107675A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore

Definitions

  • the present invention relates to a technique for confirming the consistency of data held in a storage device.
  • a technique called data scrub is known as a technique for ensuring the consistency of two data held for redundancy (Patent Document 1).
  • RAID Redundant Arrays of Inexpensive (Independent) Disks
  • Patent Document 1 Even if the technique of Patent Document 1 is simply applied to a storage device having a specific function, there is a problem that erroneous detection occurs, and thus data consistency may not be confirmed correctly.
  • the specific function is, for example, to perform I / O (Input / Output) processing with zero copy for the purpose of high performance (specifically, for example, the I / O target data is copied to the memory by the processor) It is not a DMA (Direct Memory Access) function.
  • I / O Input / Output
  • DMA Direct Memory Access
  • an object of the present invention is to enable correct confirmation of data consistency even in a storage apparatus having a specific function.
  • a storage apparatus includes a first storage unit having two or more first areas, a second storage unit having two or more second areas, and a controller.
  • the controller reads the first target chunk data from a certain first area of the two or more first areas, and the second to the second area corresponding to the certain first area of the two or more second areas. Read the target chunk data.
  • a controller performs inconsistency determination which is determination of whether the 1st object chunk data and the 2nd object chunk data have the right correspondence.
  • the controller may determine a determination criterion for inconsistency determination in accordance with configuration information that is information relating to the configuration of the storage apparatus, and may execute inconsistency determination in accordance with the determined determination criterion.
  • FIG. 2 shows a configuration example of a storage apparatus according to the first embodiment.
  • 3 shows a flowchart of consistency check processing according to Embodiment 1.
  • 3 shows a flowchart of chunk confirmation processing according to Embodiment 1.
  • 3 shows a configuration example of a storage system according to a second embodiment.
  • 10 shows a configuration example of a backup information table according to the second embodiment.
  • 10 shows a sequence chart of overall storage system processing according to Embodiment 2.
  • FIG. 10 shows the status transition of backup data according to Embodiment 2.
  • FIG. 10 is a flowchart of consistency check processing according to the second embodiment.
  • 10 shows a configuration example of a user interface for restoration according to Embodiment 2.
  • 10 illustrates a configuration example of a cluster system according to a third embodiment.
  • 10 shows a configuration example of a backup information table according to the third embodiment. 10 shows a flowchart of consistency check processing according to a third embodiment. 10 illustrates a configuration example of a virtual machine system according to a fourth embodiment. 10 shows a configuration example of a virtual machine information table according to Embodiment 4. 10 shows a flowchart of falsification detection processing according to a fourth embodiment.
  • processing may be described with “program” as the subject, but the program performs processing defined by being executed by the processor using the memory and the communication port (communication control device). Therefore, the processor may be the subject in the description of the processing. Further, the processing disclosed with the program as the subject may be processing performed by a device such as a storage controller or storage device or a computer.
  • the processor may typically be a microprocessor (for example, a CPU (Central Processing Unit)), and may include dedicated hardware that performs part of the processing in addition to the microprocessor.
  • the program may be installed in the computer by a program distribution server or a computer-readable storage medium.
  • FIG. 1 shows a configuration example of a storage apparatus according to the first embodiment.
  • the storage apparatus 10-1 includes a first storage device 14, a second storage device 15, and a storage controller connected to the first storage device 14 and controlling data I / O to the first and second storage devices 14 and 15.
  • the storage controller includes a CPU 12 and a main memory 13.
  • the CPU 12 and the main memory 13 are connected by a bus (not shown) that can transmit data in both directions.
  • the storage apparatus 10-1 implements various functions by the CPU 12 reading and executing computer programs from the memory 13. The same applies to the other embodiments.
  • the main memory 13 and the first storage device 14 are connected by a first bus (not shown).
  • the main memory 13 and the second storage device 15 are connected by a second bus (not shown).
  • the first bus and the second bus comply with a standard such as SATA or PCIe, for example. Further, DMA transfer is performed between the main memory 13 and the first storage device 14. Similarly, DMA transfer is performed between the main memory 13 and the second storage device 15.
  • the first data 31 is stored in the first storage device 14 and the second data 32 corresponding to the first data 31 is stored in the second storage device 15.
  • the first data 31 and the second data 32 are the same.
  • the second data 32 is parity data or hash data calculated from the first data 31. Etc.
  • the first storage unit may be configured by one first storage device 14 or a plurality of first storage devices 14, and similarly, the second storage unit is configured by one first storage device 14. It may be composed of two storage devices 15 or a plurality of second storage devices 15.
  • the storage areas of the first storage device 14 and the second storage device 15 are managed by being divided into a plurality of chunk areas. Chunk numbers are assigned to each of the plurality of chunk areas in order from the top, number 1, number 2,..., Number n. That is, the first data 31 is divided into a plurality of chunk areas and stored in the first storage device 14. The chunk area of the first storage device 14 is referred to as a first chunk area, and the data stored in the first chunk area is referred to as first chunk data 41. Similarly, the second data 32 is divided into a plurality of chunk areas and stored in the second storage device 15. The chunk area of the second storage device 15 is referred to as a second chunk area, and the data stored in the second chunk area is referred to as second chunk data 42.
  • the first chunk data 41 stored in the nth first chunk area of the first storage device 14 and the second chunk data stored in the nth second chunk area of the second storage device 15 are stored.
  • 42 has a corresponding relationship. That is, the consistency between the first data 31 and the second data 32 can be confirmed by sequentially comparing the first chunk data 41 and the second chunk data 42 stored in the chunk area having the same chunk number. .
  • the main memory 13 holds a scrubber program 20-1, a consistency check program 21, an application program 25, and a software RAID program 23.
  • a buffer area 24, a configuration information area 25, and a page cache area 26 are secured.
  • the application program 25 executes a process of writing data to the first storage device 14 as necessary.
  • the application program 25 once writes data to the page cache area 26 in this write process.
  • the software RAID program 23 writes the data written in the page cache area 26 to the first storage device 14 as the first data 31, and the second data 32 having a correspondence relationship with the first data 31 is stored in the second data 32. Write to the storage device 15. This process is executed in units of chunks as described above. That is, the software RAID program 23 divides the first data 31 into a plurality of data blocks, writes each of the divided plurality of data blocks to the first chunk area of the first storage device 14, and the second data 32. Is divided into a plurality of second data blocks, and each of the divided plurality of data block blocks is written to a second chunk area corresponding to the first chunk area of the second storage device 15.
  • the scrubber program 20-1 is a program for confirming the consistency between the first data 31 and the second data 32.
  • the scrubber program 20-1 is executed asynchronously with the application program 25.
  • the scrubber program 20-1 is executed at a predetermined timing as a background process.
  • the scrubber program 20-1 has the correct correspondence between all the first chunk data 41 constituting the first data 31 and all the second chunk data 42 constituting the corresponding second data 32
  • the first data 31 and the second data 32 are determined to be consistent.
  • the scrubber program 20-1 includes the first chunk data 41 stored in the first chunk area of the first storage device 14 and the second chunk data stored in the second chunk area of the second storage device 15.
  • the consistency check program 21 is a program for determining whether or not the first chunk data 41 and the second chunk data 42 have a correct correspondence relationship.
  • the fact that the first chunk data 41 and the second chunk data 42 have the correct correspondence is referred to as “matching”, and the first chunk data 41 and the second chunk data 42 do not have the correct correspondence. This may be called “inconsistency”.
  • the application program 25 and the software RAID program 23 have the same page cache area. 26 will be shared.
  • the software RAID program 23 DMA-transfers the data block stored in a certain page of the page cache area 26 to the first storage device 14 (t1) and stores it as the first chunk data 41, and then the same
  • the data stored in a certain page is DMA-transferred to the second storage device 15 (t2) and stored as the second chunk data 42.
  • the DMA transfer of the data block related to the first chunk data 41 and the data block related to the second chunk data 42 is executed at different timings (t1 ⁇ t2).
  • the application program 25 rewrites the same page.
  • the software RAID program 23 DMA-transfers the rewritten data block (dirty data) to the second storage device 15 and stores it as the second chunk data 42. That is, the first chunk data 41 stored in the first storage device 14 and the second chunk data 42 stored in the second storage device are in an inconsistent state.
  • this inconsistent state is temporary and will be resolved after a predetermined time. This is because the dirty data after being rewritten by the application program 25 is overwritten on the first storage device 14 and the second storage device 15 at the timing of reflecting the next dirty data to the storage device, and the first chunk data 41 and This is because the second chunk data 42 is obtained.
  • the scrubber program 20-1 and the consistency check program 21 include a function for avoiding such a determination (referred to as “false determination avoidance function”).
  • the configuration information area 27 stores configuration information that is information for the scrubber program 20-1 and the consistency check program 21 to determine whether or not to apply the misjudgment avoidance function.
  • the configuration information includes information indicating whether the timing at which the data block stored in the page cache area 26 is written to the first storage device 14 and the timing at which the data block is written to the second storage device 15 may be different. May be included.
  • the configuration information may include, for example, information that associates an operation mode with a condition to which this operation mode is applied.
  • the conditions to which the operation mode is applied include, for example, a list of storage devices, device drivers, and / or software modules that are targets of the misjudgment avoidance function included in the scrubber program 20-1 and the consistency check program 21. May be.
  • the scrubber program 20-1 may switch to an operation mode in which the misjudgment avoidance function is applied when the software modules included in this list are operating.
  • the configuration information may include information such as the RAID level and the presence / absence of zero copy. For example, when the configuration information includes information indicating that the RAID level is “1” and the zero copy is “present”, the scrubber program 20-1 applies the misjudgment avoidance function to apply the first chunk. It may be determined whether the data 41 and the second chunk data 42 are the same, and if they are the same, it may be determined as “match”. For example, when the configuration information includes information that the RAID level is “5” and the zero copy is “present”, the scrubber program 20-1 applies the misjudgment avoidance function to apply the first chunk. It may be determined whether the parity data calculated from the data 41 and the second chunk data 42 are the same. If they are the same, it may be determined as “match”.
  • the scrubber program 20-1 and the consistency check program 21 may select an appropriate process or optimize the process based on the configuration information.
  • the configuration information may be used not only for applicability of the misjudgment avoidance function but also for switching the overall operations of the scrubber program 20-1 and the consistency check program 21.
  • the first chunk data 41 read from the first storage device 14 is temporarily stored in the buffer area 24. Details will be described later.
  • the scrubber program 20-1 starts a consistency check process at a predetermined timing (for example, every night at 2 am) (step S200).
  • the scrubber program 20-1 confirms the configuration information (step S201). This is because the scrubber program 20-1 determines whether or not the erroneous determination avoidance function should be applied. For example, when it is confirmed in the configuration information that the zero copy is “present” in the configuration information, the scrubber program 20-1 determines that the erroneous determination avoidance function should be applied, and the zero copy is “none”. If confirmed, it is determined that application of the misjudgment avoidance function is unnecessary. Here, it is assumed that it is determined that the erroneous determination avoidance function should be applied. If it is determined that the application of the misjudgment avoidance function is unnecessary, the determination in S105 of FIG. 3 described later is “N”, and even if inconsistency is detected, repeated checks (processing after S107) Is not done.
  • the scrubber program 20-1 sets the first chunk number of the target data for consistency check (step S202).
  • the scrubber program 20-1 executes chunk confirmation processing on the chunk data related to the set chunk number (step S203). Details of the chunk confirmation processing will be described later.
  • step S204: N the scrubber program 20-1 proceeds directly to step S205.
  • step S204 If the determination result of the chunk confirmation process is “inconsistency” (step S204: Y), the scrubber program 20-1 records that inconsistency is detected (step S210), and proceeds to step S205.
  • step S205 the scrubber program 20-1 sets the next chunk number. Then, the scrubber program 20-1 determines whether or not all the chunk data constituting the consistency check target data has been confirmed (step S206). If unconfirmed chunk data still remains (step S206: N), the scrubber program 20-1 returns to step S203. If all chunk data has been confirmed (step S206: Y), the scrubber program 20-1 ends the process.
  • step S100 When the consistency check program 21 is called from the scrubber program 20-1, the chunk check process is started (step S100).
  • the consistency check program 21 reads the first chunk data 41 corresponding to the chunk number from the first storage device 14 (step S101).
  • the consistency check program 21 reads the second chunk data 42 corresponding to the chunk number from the second storage device 15 (step S102).
  • the consistency check program 21 determines whether or not the first chunk data 41 and the second chunk data 42 match (step S103).
  • step S104 When the first chunk data 41 and the second chunk data 42 match (step S103: Y), the consistency check program 21 indicates that the chunk data related to this chunk number is “consistent”. And the process is terminated (step S104).
  • step 103: N whether or not the consistency confirmation program 21 should apply the misjudgment avoidance function according to the judgment of the scrubber program 20-1. Determine. In other words, the determination of the consistency check program 21 follows the determination as to whether or not the scrubber program 20-1 should apply the erroneous determination avoidance function performed in S201 described above.
  • step S105: N When application of the erroneous determination avoidance function is unnecessary (step S105: N), the consistency check program 21 returns to the scrubber program 20-1 that the chunk data related to this chunk number is “inconsistent”, and performs processing. The process ends (step S106).
  • the consistency check program 21 determines whether or not the consistency check for this chunk number is the first time (step S107). For determining whether or not it is the first time, it is conceivable to store the consistency check count of the chunk being executed in a local memory of the CPU, and confirm this. In this case, the number of consistency checks can be counted by resetting the number of checks to “0” in step S100 and adding “1” to the number of checks in the case of “N” in step S110 described later. There is also a method in which each chunk management table is provided on the main memory 13 and the number of consistency checks is counted for each chunk. In this case, the number of consistency checks can be counted even when a plurality of scrubber programs 20-1 are executed in parallel.
  • the consistency confirmation program 21 stores the first chunk data 41 read in step S101 in the buffer area 24 (step S108).
  • the consistency check program 21 may store the hash value of the first chunk data 41 in the buffer area 24 instead of the first chunk data 41 itself.
  • the consistency check program 21 waits for a predetermined time or more, and then returns to step S101.
  • the predetermined time is the time until the dirty data stored in the page cache area 26 is written to the first storage device 14 and the second storage device 15.
  • the consistency check program 21 waits for a period of time or longer when the dirty data is written, or waits until the dirty data is written using a mechanism such as a semaphore.
  • step S107: N the consistency check program 21 reads the first chunk data 41 stored in the buffer area 24 in step S108 and the chunk area having the same chunk number again in step S101.
  • the first chunk data 41 is compared, and it is determined whether or not these two chunk data match (step S110). That is, it is determined whether or not the chunk area having the chunk number has been rewritten by the application program 25.
  • step S110: Y If the two chunk data match (step S110: Y), the consistency check program 21 returns to the scrubber program 20-1 that the chunk data related to this chunk number is “inconsistent”, and ends the processing. (Step S106).
  • the reason is that the two chunk data match each other, even though the chunk area of the chunk number has not been rewritten by the application program 25, the first chunk data 41 and the second chunk data 42 are inconsistent (step This is because this mismatch is not a mismatch due to a misjudgment (that is, a true mismatch).
  • step S111 determines whether or not the number of mismatches is a predetermined number or more. This determination is performed based on the number of consistency checks stored in the local memory, as described in the explanation of step S105. When the number of consistency checks is less than a predetermined threshold (step S111: N), the consistency confirmation program 21 proceeds to the above step S108.
  • step S111: Y If the number of mismatches is equal to or greater than the threshold (step S111: Y), the consistency check program 21 returns to the scrubber program 20-1 that the chunk data associated with this chunk number is “consistent”, and ends the processing. (Step S104). This is because if the number of mismatches is equal to or greater than the threshold value, there is a possibility that the application program 25 continuously updates the chunk area related to this chunk number. In this case, the chunk confirmation process falls into an infinite loop. It is because there is a possibility that it will end. If the number of mismatches is equal to or greater than the threshold value, the consistency check program 21 retains the chunk data related to the chunk number in a predetermined memory area and completes the consistency check of all chunk data. The consistency check may be performed again on the retained chunk data.
  • the temporary inconsistency state cannot be resolved. That is, the temporary inconsistency state is also determined to be inconsistency in the consistency check process after restart.
  • the scrubber program 20-1 determines whether or not the inconsistency has occurred due to an abnormal stop. If the inconsistency has occurred due to an abnormal stop, the scrubber program 20-1 assumes that the inconsistent state has occurred temporarily. May be. Specifically, even in the case where it is determined in step S111 in FIG. 3 that the temporary inconsistency is described above, provisional processing such as matching the second chunk data 42 with the first chunk data 41 is performed. You may judge.
  • the misjudgment avoidance function can be switched appropriately according to the characteristics of the storage configuration.
  • the inconsistency generated between the first chunk data 41 and the second chunk data 42 is a temporary inconsistency. It is possible to properly determine whether there was a true inconsistency or not. Therefore, according to the present embodiment, data consistency can be correctly confirmed in a storage apparatus in which a temporary inconsistency state may occur.
  • Example 2 describes processing related to guaranteeing consistency of backup data.
  • the same reference numerals are given to elements already described in the above-described embodiment, and the description thereof is omitted.
  • FIG. 4 shows a configuration example of the storage system according to the second embodiment.
  • the storage system includes a low-reliability storage device 10-2 and a high-reliability storage device 90, and these storage devices are connected by a predetermined communication network 99 capable of transmitting and receiving data.
  • the low-reliability storage device 10-2 is, for example, a storage device in which performance is given priority over reliability.
  • the high-reliability storage device 90 is a storage device with higher reliability than the low-reliability storage device 10-2.
  • the configuration of the low-reliability storage device 10-2 is the same as the configuration of the storage device 10-1 shown in the first embodiment, and a description thereof will be omitted here.
  • the main memory 13 holds a scrubber program 20-2, a backup program 45, a restore program 46, and a backup information management table 21.
  • the backup program 45 is a program for generating backup data of data held in the first storage device 14 and the second storage device 15. For example, the backup program 45 creates a snapshot of the first storage device 14 and the second storage device 15, generates first backup data from the first storage device 14, and generates second backup data from the second storage device 15. Generate. Then, the backup program 45 stores the first backup data and the second backup data in the highly reliable storage device 90. The backup program 45 may generate one backup data from both the first storage device 15 and the second storage device 16 and store the one backup data in the highly reliable storage device 90.
  • a part of the data may be damaged during the generation of the backup data, or a part of the data held in the first storage device 14 or the second storage device 15 to be backed up may be damaged. possible.
  • the low-reliability storage device 10-2 does not have a function of detecting such data corruption. Therefore, when the low-reliability storage device 10-2 generates partially damaged backup data, the damaged backup data is stored in the high-reliability storage device 90 as it is.
  • the restore program 46 is a program for obtaining backup data (for example, a set of first backup data and second backup data) from the high-reliability storage device 90 and restoring it to the low-reliability storage device 10-2.
  • backup data for example, a set of first backup data and second backup data
  • the restore program 46 normally knows the existence of the damage until the backup data is acquired and the restoration is executed. Can not.
  • the scrubber program 20-2 performs consistency check on the data of the first storage device 14 and the second storage device 15 that are the targets of the backup after the generation of the backup data is completed, and the result of the consistency check Are stored in the high-reliability storage device 90 together with the backup data.
  • the backup data whose consistency is guaranteed represents data generated from data that is not damaged in the first storage device 14 and the second storage device 15. In other words, it can be said that backup data whose consistency is guaranteed is unlikely to contain corruption. Therefore, the restore program 46 can know the possibility that the backup data contains damage by referring to the result of the consistency check corresponding to the backup data.
  • the backup information table 100 includes information relating to backup data generated by the backup program 45 (referred to as “backup information”) as a record. Details of the backup information table 100 will be described later.
  • the high-reliability storage device 90 includes a storage controller including a CPU 92 and a main memory 93, and an interface device such as an HBA (Host Bus Adapter) 94. Connected).
  • a storage controller including a CPU 92 and a main memory 93
  • an interface device such as an HBA (Host Bus Adapter) 94. Connected).
  • HBA Hyper Bus Adapter
  • An external storage device 97 is connected to the HBA 94. Since the high-reliability storage device 90 is configured by highly reliable dedicated hardware such as the HBA 94 and the external storage device 97 as described above, the reliability of holding data is high.
  • the main memory 93 of the high-reliability storage device 90 may hold the same information as the backup information table 100 held by the low-reliability storage device 10-2.
  • This backup information table 100 may also be held in the external storage device 97 so that it is not lost even when the power is turned off.
  • the backup information table 100 may be held only by the high-reliability storage device 90 or may be held only by the low-reliability storage device 10-2.
  • the backup information table 100 is held in the first storage device 14 of the low-reliability storage apparatus 10-2, since the reliability is low, it is necessary to consider the possibility that the data of the backup information table 100 itself is damaged. is there.
  • the backup information table 100 is held in both the low-reliability storage device 10-2 and the high-reliability storage device 90, and the backup information table 100 held in the high-reliability storage device 90 is used as a main, and the low-reliability storage device
  • the backup information table 100 held in 10-2 may be used as a cache.
  • the backup information table 100 has backup information, which is information related to backup data, as a record.
  • the backup information includes a backup version item 101, a date / time item 102, a snapshot version item 103, and a status item 104.
  • the backup version item 101 stores the version number of the backup data.
  • the date / time item 102 stores the creation date / time of backup data and the date / time when the status of the backup information was last updated. Thereby, the records in the backup information table 100 can be rearranged in order from the newest date.
  • the snapshot version item 103 stores the version number of the snapshot included in the backup data.
  • the stamp shot version item 103 may store version numbers of a plurality of snapshots.
  • the status item 104 stores status information that is information indicating the state of the backup data.
  • the scrubber program 20-2 registers the backup information with the status “initial (600)” in the backup information table 100.
  • “initial” backup information already exists, the scrubber program 20-2 adds a new snapshot version to the snapshot version of the backup information.
  • the scrubber program 20-2 changes the status of the backup information corresponding to this backup to “in backup (601)”.
  • the scrubber program 20-2 changes the status of the backup information corresponding to this backup to “backup completed (602)”.
  • the scrubber program 20-2 sets the status of the backup information corresponding to this backup data to “confirmation failure (604)”. change.
  • the scrubber program 20-2 changes the status of the backup information corresponding to the backup data used for the restoration to “confirmation successful (603)” when the consistency confirmation of the storage device after the restoration is successful.
  • the scrubber program 20-2 changes the status of the backup information corresponding to the backup data used for this restoration to “data corruption (605)”.
  • the “confirmation failure (604)” includes the possibility that inconsistency has occurred in the first storage device 14 or the second storage device 15 after the backup is completed. It does not represent what you are doing. In other words, even backup data of “confirmation failure” may not be damaged. Whether or not the backup data of “confirmation failure (604)” is damaged becomes clear when the result of consistency confirmation after restoration is found. If the status of “data corruption (605)” cannot be confirmed, the status of “data corruption (605)” may be omitted.
  • the backup program 45 of the low-reliability storage device 10-2 creates a snapshot (step S400). At this time, the backup program 45 may notify the high-reliability storage apparatus 90 that a snapshot has been created. Receiving this notification, the high-reliability storage apparatus 90 registers the backup information corresponding to this snapshot in the backup information table 100 held by itself.
  • the backup program 45 generates backup data and stores the backup data including the snapshot in the high-reliability storage device 90 (step S401). At this time, the low-reliability storage device 10-2 and the high-reliability storage device 90 change the status of the backup information table 100 to “backup in progress (601)” and “backup complete ( 602) ”.
  • the scrubber program 20-2 of the low-reliability storage apparatus 10-2 executes consistency confirmation processing for the first storage device 14 and the second storage device 15 after the backup is completed (step 402).
  • the low-reliability storage device 10-2 combines the confirmation at the data block level of the storage device by the scrubber program 20, and at least one of confirmation at the file system level and confirmation at the application level by the OS. Consistency checks may be performed. Then, the low-reliability storage apparatus 10-2 may determine that there is consistency when no inconsistency is detected in any of these consistency checks.
  • the scrubber program 20-2 of the low-reliability storage apparatus 10-2 determines that the storage device corresponding to the backup data is consistent, the status item 104 of the backup information table 100 of the high-reliability storage apparatus 90 indicates “Successful confirmation”. Is stored (step S403).
  • the scrubber program 20-2 of the low-reliability storage apparatus 10-2 determines that the storage device corresponding to the backup data is inconsistent, the status item 104 of the backup information table 100 of the high-reliability storage apparatus 90 displays “confirmation failure”. Is stored (steps S410 to S413).
  • the low-reliability storage apparatus 10-2 may perform the following restore process when determining that the storage device is not consistent.
  • the restore program 46 of the low reliability storage device 10-2 acquires the backup information table 100 held by the high reliability storage device 90 (step S414).
  • the restore program 46 of the low-reliability storage apparatus 10-2 refers to the backup information registered in the acquired backup information table 100 and selects backup data (step S415). For example, the restore program 46 selects backup data that is less likely to contain corruption whose status is “successful confirmation”.
  • the restore program 46 of the low-reliability storage device 10-2 acquires the selected backup data from the high-reliability storage device 90, and executes a restore process (steps S416 to S417).
  • the scrubber program 20-2 of the low-reliability storage apparatus 10-2 performs consistency check for the storage device (step S418).
  • the scrubber program 20-2 changes the status of the backup information corresponding to the backup data used for restoration in the backup information table 100 of the high-reliability storage apparatus 90 to “confirmation successful” (step S419). ).
  • the scrubber program 20-2 stores the first storage device 14 and the second storage device 15 after the restoration. By checking the consistency of the backup data, it can be determined whether or not the backup data is damaged.
  • Consistency confirmation may be performed by combining confirmation at the level of the first storage device with at least one of confirmation at the file system level by the OS and confirmation at the application level as described above.
  • the scrubber program 20-2 in the low-reliability storage apparatus 10-2 confirms the consistency of all chunk data in the storage device, similarly to steps S202 to S206 in FIG. 2 (steps S701 to S705).
  • the scrubber program 20-2 does not detect any inconsistency for all chunk data in the storage device, the status of the backup information for which consistency check has not been completed in the backup information table 100 is “successful confirmation (603)”. And change the date and time. If the current process is a consistency check after restoration (step S418 in FIG. 7), the scrubber program 20-2 sets the status of the backup information corresponding to the backup data used for the restoration to “successful confirmation (603)”. Change (step S706).
  • the scrubber program 20-2 transmits and stores the changed backup information table 100 to the high-reliability storage device 90 (step S707), and ends the processing (step S708).
  • the scrubber program 20-2 may transmit and save only the difference data from the previous transmission in the high-reliability storage apparatus 90 for the backup information table 100.
  • the scrubber program 20-2 determines whether the chunk area related to the chunk number in which the inconsistency is detected is a user area where user data is stored, or whether system data is stored. It is determined whether it is a system area (step S709).
  • the low-reliability storage apparatus 10-2 previously divides the storage area of the first storage device 14 into the system area and the remaining 80% from the top, into the system area and the remaining 80% according to this classification. A determination may be made. Further, the low-reliability storage device 10-2 holds layout information that is information related to the storage area classification, and the determination in step S709 may be performed according to the layout information.
  • step S709 system
  • the restore program 46 of the low-reliability storage apparatus 10-2 backs up the system area previously stored in the high-reliability storage apparatus 90.
  • the system area is restored using the data (step S715), and the process ends (step S716).
  • the restore program 46 may automatically perform restoration by selecting backup data whose status is “successful confirmation” and whose backup date is the latest.
  • the scrubber program 20-2 of the low-reliability storage apparatus 10-2 indicates the status of backup information for which consistency check has not been completed in the backup information table 100. Is changed to “confirmation failure (604)” (step S710). The scrubber program 20-2 also updates the date and time. If the current process is a consistency check after restoration (step S418 in FIG. 7), the scrubber program 20-2 sets the status of the backup information corresponding to the backup data used for restoration to “data corruption (605)”. Change to As described above, if inconsistency is detected in the user area, the system user selects the backup data whose status is other than “confirmation failure” or “data corruption” and the backup date and time is the latest. The user may be inquired whether or not to execute restoration.
  • the scrubber program 20-2 of the low-reliability storage apparatus 10-2 transmits and stores the backup information table 100 to the high-reliability storage apparatus 906 (step S711).
  • the restore program 46 of the low-reliability storage device 10-2 selects backup data to be used for restoration from the backup information table 100 (step S712). Then, the restore program 46 restores the user area using the backup data (step S713) and ends the process (step S714).
  • the system area can be automatically restored with backup data that has a very low possibility of being damaged (for example, the status is “confirmation successful”). Further, when an inconsistency is detected in the user area, the user area can be restored with backup data with a low possibility of corruption (for example, status other than “confirmation failure” or “data corruption”).
  • the restore program 46 of the low-reliability storage device 10-2 generates a UI 800 for selecting backup data used for restoration.
  • the UI 800 may be generated by a program that operates on the low-reliability storage apparatus 10-2, or information that is generated by a program that operates on another apparatus and is input to the UI 800 through the other apparatus via a communication network. It may be transmitted to the low-reliability storage device 10-2.
  • the UI 800 has an operation selection area 801 and a backup selection area 902.
  • the operation selection area 801 has a UI for selecting whether backup data used for restoration is selected automatically or manually.
  • the low-reliability storage apparatus 10-2 selects backup data used for restoration according to a predetermined policy. For example, the low-reliability storage apparatus 10-2 automatically selects backup data whose status is “confirmation successful” and whose backup date is the latest. Further, when “manual” is selected in the operation selection area 801, the backup selection area 802 becomes active.
  • the backup selection area 802 has a UI for manually selecting backup data used for restoration.
  • the backup selection area has a selection box 804, a table 803, and an execution button 805.
  • backup information corresponding to selectable backup data is displayed.
  • the update date and time, the backup version, the snapshot version, and the status corresponding to the items of the backup information table 100 may be displayed.
  • the user selects backup information used for restoration by turning on the selection box 804.
  • the user can select the backup information with the latest backup date and time, although the consistency check has not been completed, or select any past backup information whose status is “confirmation successful (603)”. .
  • backup data having a status of “data corruption (605)” may not be displayed in the table 803.
  • the restoration may be started using the backup information selected in the selection box 804.
  • the status relating to the consistency check of the backup data stored in the high-reliability storage device 90 can be confirmed from the low-reliability storage device 10-2.
  • This status is an effective index when selecting backup data used for restoration.
  • FIG. 10 shows a configuration example of the cluster system according to the third embodiment.
  • the cluster system includes a plurality of low-reliability nodes 10-3, and these low-reliability nodes 10-3 can transmit and receive data to and from each other through a predetermined communication network 80.
  • the configuration of the low-reliability node 10-3 is the same as the configuration of the storage apparatus 10-1 shown in the first embodiment, and thus description thereof is omitted here.
  • the main memory 13 holds a scrubber program 20-3, a backup program 45, a restore program 46, and a backup information table 200.
  • a buffer area 24, a configuration information area 27, and a page cache area 26 may be secured in the main memory 13.
  • the backup information table 200 manages backup information, which is information related to backup data, as a record.
  • the backup information includes a backup version item 201, a date and time item 202, a snapshot version item 203, a status item 204, a node name item 205, and an error count item 206.
  • Items 201 to 204 are the same as the items 100 to 104 of the backup information table 100 shown in FIG.
  • the node name item 206 stores a node name that is information for identifying the low-reliability node 10-3 in which the backup data is stored. Therefore, even if the backup information table 200 is the same backup data, the backup information corresponding to the backup data stored in another node is held as another record.
  • the number of errors (also referred to as the number of failures) that occurred in the node where the backup data is stored is stored.
  • the number of errors includes, for example, the number of times the OS has retried I / O due to a hardware malfunction that occurred during I / O processing, and the S.H. M.M. A. R. T.A. (Self-Monitoring, Analysis and Reporting Technology)
  • the number of errors reported by a failure early detection function such as a function may be added up.
  • the number of errors may be a number weighted based on the importance of the error factor.
  • the number of errors may be another index indicating the reliability of the node. Therefore, it can be said that a node with a large number of errors is less reliable than a node with a small number of errors.
  • the scrubber program 20-3 in the low-reliability node 10-3 confirms the consistency of all chunk data in the storage device in the same manner as steps S202 to S206 in FIG. 2 (steps S901 to S905).
  • the scrubber program 20-3 does not detect any inconsistency in all chunk data in the storage device, the status of the backup information for which the consistency check in the backup information table 200 has not been completed is “confirmed successfully (603)”. And the date and time are updated (step S906).
  • the scrubber program 20-3 transmits and saves this backup information table 100 to all nodes holding this backup data (step S907), and ends the processing (step S920).
  • step S903 when inconsistency is detected in step S903 (step S903: Y), the scrubber program 20-3 transmits information indicating that inconsistency is detected to all the nodes holding the backup data, and Save (step S909). For example, the status of the backup information held by each node is changed to “confirmation failure” and the date and time are updated.
  • the scrubber program 20-3 temporarily removes its own node from the cluster system (step S910). Then, the scrubber program 20-3 refers to the backup information of the own node and determines whether or not the number of errors of the own node exceeds the threshold value (step S911).
  • step S911 If the number of errors exceeds the threshold (step S911: Y), the scrubber program 20-3 outputs an error (step S915) and ends (step S920).
  • the restore program 46 selects the backup data for restoration (step S912).
  • the restore program 46 may select backup data held in the node with the smallest number of errors.
  • the restore program 46 may select the node with the smallest number of errors, or may select any node belonging to the upper X% with the smallest number of errors among all the nodes.
  • the restore program 46 executes restore using the selected backup data (step S913).
  • the scrubber program 20-3 joins its own node to the cluster again after the restoration is completed (step S914), and ends the process (step S920).
  • a plurality of the same backup data can be created in a plurality of low-reliability nodes 10-3, and the backup data held in a relatively reliable node can be used for restoration. Therefore, even when the cluster system is configured by the low-reliability node 10-3, backup data that is unlikely to contain damage can be used for restoration.
  • FIG. 13 shows a configuration example of a virtual machine system according to the fourth embodiment.
  • the virtual machines 10-4 and 53 are machines (for example, virtual computers or storage devices) logically configured by the hypervisor 50 that is a program that operates on the physical machine (for example, physical computers or storage devices) 2. is there.
  • the virtual machine 10-4 has, as logical resources, data I / Os for the first storage device 14-4, the second storage device 15-4, and the first and second storage devices 14-4 and 15-4. And a controller for controlling O.
  • the controller includes a CPU 12-4 and a main memory 13-4.
  • the main memory 13-4 holds a scrubber program 20-4 and a virtual machine information table 300. Further, a virtual buffer area, a configuration information area, and a page cache area may be secured in the main memory 13-4.
  • the hypervisor 50 has a function of mediating physical resources and logical resources, and can operate a plurality of virtual machines.
  • the physical machine 2 can move the virtual machine onto another physical machine.
  • a virtual machine operating on the hypervisor 50 of the physical machine 2 can be moved to the hypervisor of another physical machine.
  • the first storage device 14-4 and the second storage device 15-4 are virtually realized by using a predetermined area of the physical storage device 52 that the physical machine 2 has. Therefore, the physical machine 2 can move the first storage device 14-4 and the second storage device 15-4 to another virtual machine or refer to it from another virtual machine.
  • each virtual machine provides a virtual storage device using a protocol that can be shared with other virtual machines (for example, iSCSI (Internet Small Computer System Interface)).
  • a protocol for example, iSCSI (Internet Small Computer System Interface)
  • the virtual machine 10-4 The virtual storage device 54 of another virtual machine 53 can be referred to.
  • the scrubber program 20-4 of the virtual machine 10-4 can check the consistency of the storage device 54 and the storage device 55 of the other virtual machine 53.
  • the virtual storage device 54 storing the second data in the other virtual machine 53 is moved under the management of the virtual machine 10-4 (storage device 14-4) and left in the virtual machine 53. It can also be used for falsification inspection of the first data stored in the virtual storage device 55.
  • the virtual machine 10-4 is stored in the second data stored in the virtual storage device 14-4 moved under its management and in the virtual storage device 55 of the other virtual machine 53. Consistency confirmation may be performed with respect to the first data, and if inconsistency is detected, it may be determined that the first data may be falsified.
  • the virtual machine information table 300 includes virtual machine information, which is information about the virtual machine, as a record.
  • the virtual machine information includes a virtual machine name item 301, a first storage device ID item 302, a second storage device ID item 303, an operation status item 304, an RW mode item 305, and the number of examinations. It has an item 306 and a warning count item 307.
  • the virtual machine name item 301 stores a virtual machine name that is information for specifying a virtual machine.
  • an ID for identifying a virtual first storage device in which the first data is stored is stored.
  • an ID for specifying a virtual second storage device in which the second data is stored is stored.
  • the operation status item 304 stores an operation status that is information indicating the operation status of the virtual machine. For example, if the virtual machine is operating, the operating status is “ON”, and if the virtual machine is stopped, the operating status is “OFF”.
  • the RW mode In the item 305 of the RW mode, information on the RW mode indicating whether the virtual machine corresponding to the virtual machine information is in a read / write mode (R / W) or a read-only mode (RO). Is stored.
  • the inspection number field 306 stores the number of inspections, which is information indicating the number of times the falsification inspection has been executed.
  • the number of warnings 307 stores the number of warnings, which is information indicating the number of warnings that have occurred in the virtual machine corresponding to the virtual machine information.
  • the scrubber program 20-4 refers to the virtual machine information table 300 and identifies a virtual machine in the read-only mode. Data held in a read-only mode virtual machine is not changed unless an unexpected means such as unauthorized access is used. Therefore, the scrubber program 20-4 can perform falsification inspection on the data held in the read-only virtual machine using the consistency check means.
  • the scrubber program 20-4 of the virtual machine 10-4 refers to the virtual machine information table 300, and the operation status is “ON”, the RW mode is “RO”, and the number of inspections is “0 (uninspected)”.
  • One virtual machine 53 is selected as a target virtual machine (step S1001).
  • the scrubber program 20-4 of the virtual machine 10-4 refers to the first storage device ID item 302 and the second storage device ID item 303 of the virtual machine information, and the first storage device corresponding to those IDs and The second storage devices are identified and connected to those virtual storage devices (step S1002).
  • the scrubber program 20-4 confirms the consistency of all chunk data for the connected first storage device and second storage device as in steps S202 to S206 of FIG. 2 (steps S1003 to S1007). .
  • step S1005 When inconsistency (that is, falsification) is detected in step S1005 (step S1005: Y), the scrubber program 20-4 records that falsification has been detected (step S1010). For example, the scrubber program 20-4 adds the number of warnings included in the virtual machine information or outputs to the log that tampering has been detected.
  • the scrubber program 20-4 notifies the target virtual machine that tampering has been detected (step S1011).
  • the scrubber program 20-4 records that the inspection is completed and that no falsification has been detected (step S1020). For example, the scrubber program 20-4 adds the number of inspections included in the virtual machine information, or outputs to the log that no falsification has been detected.
  • the scrubber program 20-4 releases the connection to the first storage device and the second storage device connected in step S1002 (step S1010).
  • the scrubber program 20-4 determines whether or not there are other virtual machines to be inspected (step S1022). When the virtual machine to be inspected remains (step S1022: Y), the scrubber program 20-4 returns to step S1001 and executes the next tampering inspection. If there is no virtual machine to be inspected (step S1022: N), the scrubber program 20-4 ends the process (step S1023).
  • step S1001 the scrubber program 20-4 selects one target virtual machine having the operation status “ON”, the RW mode “R / W”, and the number of inspections “0 times (uninspected)”.
  • step S1007 data consistency may be confirmed in the same manner as in other embodiments.
  • the scrubber program 20-4 changes the RW mode of the virtual machine information of the target virtual machine from “R / W” to “RO”, and the first virtual machine and the target virtual machine Either one of the second storage devices may be left, the other storage device may be moved under its own management, and falsification detection processing may be performed on the storage device left in the target virtual machine.
  • one virtual machine can check the consistency of storage devices of other virtual machines. Also, one virtual machine can check the consistency of storage devices of a plurality of other virtual machines. In addition, according to the present embodiment, one virtual machine moves to the other virtual machine by moving one of the first storage device and the second storage device of the other virtual machine under its management. It is possible to detect tampering of the stored storage device. That is, one virtual machine can guarantee the originality of the storage device in another virtual machine.
  • a change to apply the misjudgment avoidance function in changing the judgment criteria may be performed by other than the storage device.
  • a management computer or a host computer connected to the storage device may perform this.
  • Inconsistency determination may be performed by the management computer or the host computer.
  • the storage apparatus may transmit the read data to a management computer or the like, and the management computer may perform inconsistency determination.
  • the fourth embodiment has been described using a virtual machine operating in a virtual environment, the processing according to the fourth embodiment is not necessarily limited to a virtual machine, and may be realized using a physical storage device. .

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 ストレージ装置の有するコントローラは、或る第1領域から第1対象チャンクデータをリードし、或る第1領域に対応した第2領域から第2対象チャンクデータをリードし、第1対象チャンクデータと第2対象チャンクデータとが正しい対応関係にあるか否かの判定である不整合判定を実行するにあたり、ストレージ装置の構成に関する情報である構成情報に従って不整合判定の判定基準を決定し、その決定された判定基準に従って不整合判定を実行する。

Description

ストレージ装置および制御方法
 本発明は、ストレージ装置に保持されているデータの一貫性を確認する技術に関する。
 冗長化のために保持された二つのデータの一貫性を保証する技術として、データスクラブと呼ばれる技術が知られている(特許文献1)。
 例えば、RAID((RAIDは「Redundant Arrays of Inexpensive (Independent) Disks)」の略)1によって二つのデータが保持されている場合、この二つのデータが完全に一致することが確認されたならば、この二つのデータの一貫性は保証される。例えば、RAID5によってデータとパリティデータが保持されている場合、データから算出されるパリティデータと保持されているパリティデータとが完全に一致することが確認されたならば、この二つのデータの一貫性は保証される。
US2010/0005374
 しかし、特定の機能を有するストレージ装置に単純に特許文献1の技術を適用しても、誤検出が発生し、故に、正しくデータの一貫性が確認できないことがあるという課題がある。特定の機能とは、例えば、高性能化を目的としてI/O(Input/Output)処理をゼロコピーで行う(具体的には、例えば、I/O対象のデータをプロセッサによりメモリにコピーするのではなくDMA(Direct Memory Access)により転送する)機能である。
 そこで、本発明の目的は、特定の機能を有するストレージ装置においても、正しくデータの一貫性を確認できるようにすることにある。
 本発明の一実施例に係るストレージ装置は、2以上の第1領域を有する第1記憶部と、2以上の第2領域を有する第2記憶部と、コントローラとを備える。コントローラは、2以上の第1領域のうちの或る第1領域から第1対象チャンクデータをリードし、2以上の第2領域のうちの或る第1領域に対応した第2領域から第2対象チャンクデータをリードする。そして、コントローラは、第1対象チャンクデータと第2対象チャンクデータとが正しい対応関係にあるか否かの判定である不整合判定を実行する。コントローラは、ストレージ装置の構成に関する情報である構成情報に従って不整合判定の判定基準を決定し、その決定した判定基準に従って不整合判定を実行してもよい。
 特定の機能を有するストレージ装置において、データの一貫性を確認することができる。
実施例1に係るストレージ装置の構成例を示す。 実施例1に係る一貫性確認処理のフローチャートを示す。 実施例1に係るチャンク確認処理のフローチャートを示す。 実施例2に係るストレージシステムの構成例を示す。 実施例2に係るバックアップ情報テーブルの構成例を示す。 実施例2に係るストレージシステム全体処理のシーケンスチャートを示す。 実施例2に係るバックアップデータのステータスの遷移を示す。 実施例2に係る一貫性確認処理のフローチャートを示す。 実施例2に係るリストア用のユーザインタフェースの構成例を示す。 実施例3に係るクラスタシステムの構成例を示す。 実施例3に係るバックアップ情報テーブルの構成例を示す。 実施例3に係る一貫性確認処理のフローチャートを示す。 実施例4に係る仮想マシンシステムの構成例を示す。 実施例4に係る仮想マシン情報テーブルの構成例を示す。 実施例4に係る改竄検出処理のフローチャートを示す。
 以下、一実施例を説明する。以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
 また、以下の説明では「プログラム」を主語として処理の説明を行う場合があるが、プログラムは、プロセッサによって実行されることで定められた処理をメモリおよび通信ポート(通信制御デバイス)を用いながら行うため、その処理の説明ではプロセッサが主語とされてもよい。また、プログラムを主語として開示された処理は、ストレージコントローラ又はストレージ装置等の装置又は計算機が行う処理としてもよい。また、プロセッサは、典型的にはマイクロプロセッサ(例えばCPU(Central Processing Unit))でよく、マイクロプロセッサに加えて、処理の一部を行う専用ハードウェアを含んでもよい。また、プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって計算機にインストールされてもよい。
 図1は、実施例1に係るストレージ装置の構成例を示す。
 ストレージ装置10-1は、第1記憶デバイス14と、第2記憶デバイス15と、それらに接続され第1及び第2記憶デバイス14及び15に対するデータのI/Oを制御するストレージコントローラとを備える。ストレージコントローラは、CPU12と、メインメモリ13とを含む。CPU12とメインメモリ13とは、双方向にデータ伝送可能なバス(不図示)で接続されている。ストレージ装置10-1は、CPU12がメモリ13からコンピュータプログラムをリードして実行することにより、各種機能を実現する。他の実施例についても同様である。
 メインメモリ13と、第1記憶デバイス14とは、第1バス(不図示)で接続されている。メインメモリ13と、第2記憶デバイス15とは、第2バス(不図示)で接続されている。第1バスおよび第2バスは、例えば、SATAまたはPCIeなどの規格に準拠する。また、メインメモリ13と、第1記憶デバイス14との間では、DMA転送が行われる。同様に、メインメモリ13と、第2記憶デバイス15との間でも、DMA転送が行われる。
 第1記憶デバイス14には、第1データ31が格納されており、第2記憶デバイス15には、第1データ31と対応関係にある第2データ32が格納されているとする。例えば、第1記憶デバイス14と第2記憶デバイス15とがRAID1の構成である場合、第1データ31と第2データ32とは同じである。また、例えば、第1記憶デバイス14と第2記憶デバイス15とがRAID5の構成のRAIDグループに含まれる記憶デバイスである場合、第2データ32は第1データ31から算出されたパリティデータ又はハッシュデータなどである。
 ストレージ装置10-1は第1記憶部が、1つの第1記憶デバイス14で構成されても複数の第1記憶デバイス14で構成されてもよく、同様に、第2記憶部が、1つの第2記憶デバイス15で構成されても複数の第2記憶デバイス15で構成されてもよい。
 第1記憶デバイス14および第2記憶デバイス15の記憶領域は、複数のチャンク領域に分割されて管理される。複数のチャンク領域のそれぞれには、先頭から順番に1番、2番、…、n番とチャンク番号が付与される。すなわち、第1データ31は、第1記憶デバイス14において、複数のチャンク領域に分割されて格納される。この第1記憶デバイス14のチャンク領域を第1チャンク領域といい、第1チャンク領域に格納されたデータを第1チャンクデータ41という。同様に、第2データ32は、第2記憶デバイス15において、複数のチャンク領域に分割されて格納される。この第2記憶デバイス15のチャンク領域を第2チャンク領域といい、第2チャンク領域に格納されたデータを第2チャンクデータ42という。
 この場合、第1記憶デバイス14のn番の第1チャンク領域に格納されている第1チャンクデータ41と、第2記憶デバイス15のn番の第2チャンク領域に格納されている第2チャンクデータ42とが対応関係を有する。すなわち、同じチャンク番号のチャンク領域に格納されている第1チャンクデータ41と第2チャンクデータ42とを順次比較することにより、第1データ31と第2データ32の一貫性を確認することができる。
 メインメモリ13には、スクラバプログラム20-1と、整合性確認プログラム21と、アプリケーションプログラム25と、ソフトウェアRAIDプログラム23とが保持される。また、メインメモリ13には、バッファ領域24と、構成情報領域25と、ページキャッシュ領域26とが確保される。
 アプリケーションプログラム25は、必要に応じて第1記憶デバイス14にデータをライトする処理を実行する。アプリケーションプログラム25は、このライト処理において、いったんページキャッシュ領域26にデータをライトする。
 ソフトウェアRAIDプログラム23は、このページキャッシュ領域26にライトされたデータを、第1データ31として第1記憶デバイス14へライトすると共に、その第1データ31と対応関係を有する第2データ32を第2記憶デバイス15へライトする。この処理は、上述のようにチャンクの単位で実行される。すなわち、ソフトウェアRAIDプログラム23は、第1データ31を複数のデータブロックに分割し、その分割した複数のデータブロックの各々を第1記憶デバイス14の第1チャンク領域へライトすると共に、第2データ32を複数の第2データブロックに分割し、その分割した複数のデータブロックブロックの各々を、第2記憶デバイス15の第1チャンク領域と対応関係を有する第2チャンク領域へライトする。
 スクラバプログラム20-1は、第1データ31と第2データ32の一貫性を確認するためのプログラムである。スクラバプログラム20-1は、アプリケーションプログラム25とは非同期に実行される。例えば、スクラバプログラム20-1は、バックグラウンドプロセスとして、所定のタイミングで実行される。スクラバプログラム20-1は、第1データ31を構成する全ての第1チャンクデータ41と、対応する第2データ32を構成する全ての第2チャンクデータ42とが正しい対応関係を有している場合、第1データ31と第2データ32は一貫性が保証される判定する。例えば、スクラバプログラム20-1は、第1記憶デバイス14の第1チャンク領域に格納されている第1チャンクデータ41と、第2記憶デバイス15の第2チャンク領域に格納されている第2チャンクデータ42とを、チャンク番号の順番に順次比較していき、全ての第1チャンクデータ41と、対応する全ての第2チャンクデータ42とが正しい対応関係を有しているか否かを判定する。また、整合性確認プログラム21は、第1チャンクデータ41と第2チャンクデータ42とが正しい対応関係を有しているか否かを判定するためのプログラムである。第1チャンクデータ41と第2チャンクデータ42とが正しい対応関係を有していることを「整合」といい、第1チャンクデータ41と第2チャンクデータ42とが正しい対応関係を有していないことを「不整合」といってもよい。
 ここで、ソフトウェアRAIDプログラム23の実装において、性能向上を目的として、メインメモリ13におけるライトデータのコピーを発生させないゼロコピーを採用した場合、アプリケーションプログラム25とソフトウェアRAIDプログラム23とが、同じページキャッシュ領域26を共有することになる。
 この場合、アプリケーションプログラム25が、UNIX(登録商標)における「mmap」に相当するコマンドなどを用いて、ページキャッシュ領域26の或るページを任意のタイミングで直接的に書き換えてしまう可能性がある。
 一方、ソフトウェアRAIDプログラム23は、ページキャッシュ領域26の或るページに格納されているデータブロックを第1記憶デバイス14へDMA転送(t1)して第1チャンクデータ41として格納し、次に、同じ或るページに格納されているデータを第2記憶デバイス15へDMA転送(t2)して第2チャンクデータ42として格納する。この第1チャンクデータ41に係るデータブロックと、第2チャンクデータ42に係るデータブロックのDMA転送は、異なるタイミング(t1≠t2)で実行される。
 したがって、ページキャッシュ領域26の或るページに格納されているデータブロックが、第1記憶デバイス14へDMA転送され第1チャンクデータ41として格納された後に、アプリケーションプログラム25が同じページを書き換えてしまうと、ソフトウェアRAIDプログラム23は、その書き換えられた後のデータブロック(ダーティデータ)を、第2記憶デバイス15へDMA転送し第2チャンクデータ42として格納してしまう。つまり、第1記憶デバイス14に格納されている第1チャンクデータ41と、第2記憶デバイスに格納されている第2チャンクデータ42とが不整合の状態になってしまう。
 一方でこの不整合状態は一時的なものであり、所定時間経過後、解消される。なぜならば、次回のダーティデータを記憶デバイスへ反映するタイミングで、アプリケーションプログラム25によって書き換えられた後のダーティデータが、第1記憶デバイス14および第2記憶デバイス15に上書きされ、第1チャンクデータ41及び第2チャンクデータ42となるからである。
 しかし、この不整合状態が解消されるまでの間に、この第1チャンクデータ41と第2チャンクデータ42とを比較してしまうと、これは一時的な不整合状態であり、後に整合状態に解消され得るにも関わらず、不整合と判定されてしまう。すなわち、これは一時的な不整合状態であるにも関わらず、第1データ31と第2データ32は一貫性を保証できないと判定されてしまう。
 本実施例におけるスクラバプログラム20-1および整合性確認プログラム21には、このような判定を回避する機能(「誤判定回避機能」という)が含まれる。
 構成情報領域27には、スクラバプログラム20-1及び整合性確認プログラム21が誤判定回避機能を適用すべきか否かを判定するための情報である構成情報が格納される。構成情報には、ページキャッシュ領域26に格納されているデータブロックが、第1記憶デバイス14へライトされるタイミングと、第2記憶デバイス15へライトされるタイミングとが異なり得るか否かを表す情報が含まれてよい。構成情報には、例えば、動作モードと、この動作モードが適用される条件とを対応付ける情報が含まれてもよい。動作モードが適用される条件には、例えば、スクラバプログラム20-1及び整合性確認プログラム21に含まれる誤判定回避機能の対象となるストレージ装置、デバイスドライバ及び/又はソフトウェアモジュールなどのリストが含まれてもよい。スクラバプログラム20-1は、このリストに含まれるソフトウェアモジュールが動作している場合、誤判定回避機能を適用する動作モードに切り替えてもよい。構成情報には、RAIDレベルやゼロコピーの有無などの情報が含まれてもよい。例えば、構成情報に、RAIDレベルが「1」、ゼロコピーが「有」である旨の情報が含まれている場合、スクラバプログラム20-1は、誤判定回避機能を適用して、第1チャンクデータ41と第2チャンクデータ42とが同一であるか否かを判定し、同一である場合に「整合」と判定してもよい。例えば、構成情報に、RAIDレベルが「5」、ゼロコピーが「有」である旨の情報が含まれている場合、スクラバプログラム20-1は、誤判定回避機能を適用して、第1チャンクデータ41から算出されたパリティデータと、第2チャンクデータ42とが同一であるか否かを判定し、同一である場合に「整合」と判定してもよい。
 スクラバプログラム20-1及び整合性確認プログラム21は、構成情報に基づいて、適切な処理を選択したり、処理を最適化したりしてもよい。構成情報は、誤判定回避機能の適用可否だけでなく、スクラバプログラム20-1及び整合性確認プログラム21の全体の動作を切り替えるために用いられてもよい。
 バッファ領域24には、第1記憶デバイス14からリードした第1チャンクデータ41が一時的に格納される。詳細については後述する。
 次に、図2のフローチャートを参照しながら、本実施例に係る一貫性確認処理について説明する。
 スクラバプログラム20-1は、所定のタイミング(例えば、毎晩午前2時など)で、一貫性確認処理を開始する(ステップS200)。
 スクラバプログラム20-1は、構成情報を確認する(ステップS201)。スクラバプログラム20-1が、誤判定回避機能を適用すべきか否かを判定するためである。例えば、スクラバプログラム20-1は、構成情報において、ゼロコピーが「有」であることが確認された場合、誤判定回避機能を適用すべきと判定し、ゼロコピーが「無」であることが確認された場合、誤判定回避機能の適用は不要と判定する。ここでは、誤判定回避機能を適用すべきと判定されたとする。なお、誤判定回避機能の適用は不要と判定された場合、後述する図3のS105の判定が「N」となり、不整合が検出されたときであっても繰り返しのチェック(S107以降の処理)は行われない。
 スクラバプログラム20-1は、一貫性確認の対象データの先頭のチャンク番号をセットする(ステップS202)。
 スクラバプログラム20-1は、セットされているチャンク番号に係るチャンクデータについて、チャンク確認処理を実行する(ステップS203)。チャンク確認処理の詳細については後述する。
 チャンク確認処理の判定結果が「整合」の場合(ステップS204:N)、スクラバプログラム20-1は、そのままステップS205へ進む。
 チャンク確認処理の判定結果が「不整合」の場合(ステップS204:Y)、スクラバプログラム20-1は、不整合を検出したことを記録し(ステップS210)、ステップS205へ進む。
 ステップS205においてスクラバプログラム20-1は、次のチャンク番号をセットする。そして、スクラバプログラム20-1は、一貫性確認の対象データを構成する全てのチャンクデータについて確認したか否かを判定する(ステップS206)。まだ未確認のチャンクデータが残っている場合(ステップS206:N)、スクラバプログラム20-1は、ステップS203へ戻る。全てのチャンクデータについて確認済みの場合(ステップS206:Y)、スクラバプログラム20-1は、処理を終了する。
 次に、図3のフローチャートを参照しながら、本実施例に係るチャンク確認処理について説明する。このチャンク確認処理は、図2のステップS203の処理に該当する。
 整合性確認プログラム21は、スクラバプログラム20-1から呼び出されると、チャンク確認処理を開始する(ステップS100)。
 整合性確認プログラム21は、第1記憶デバイス14から、チャンク番号に対応する第1チャンクデータ41をリードする(ステップS101)。整合性確認プログラム21は、第2記憶デバイス15から、チャンク番号に対応する第2チャンクデータ42をリードする(ステップS102)。
 整合性確認プログラム21は、第1チャンクデータ41と第2チャンクデータ42とが整合するか否か判定する(ステップS103)。
 第1チャンクデータ41と第2チャンクデータ42とが整合する場合(ステップS103:Y)、整合性確認プログラム21は、このチャンク番号に係るチャンクデータは「整合」である旨をスクラバプログラム20-1へ返し、処理を終了する(ステップS104)。
 第1チャンクデータ41と第2チャンクデータ42とが不整合の場合(ステップ103:N)、整合性確認プログラム21は、スクラバプログラム20-1の判定に従って、誤判定回避機能を適用すべきか否かを判定する。つまり、この整合性確認プログラム21の判定は、スクラバプログラム20-1が上述のS201で行った誤判定回避機能を適用するべきか否かの判定に従う。
 誤判定回避機能の適用が不要の場合(ステップS105:N)、整合性確認プログラム21は、このチャンク番号に係るチャンクデータは「不整合」である旨をスクラバプログラム20-1へ返し、処理を終了する(ステップS106)。
 誤判定回避機能の適用が必要な場合(ステップS105:Y)、整合性確認プログラム21は、このチャンク番号に対する整合性チェックが初回であるか否かを判定する(ステップS107)。初回か否かの判定は、CPUのローカルメモリなどに、実行中のチャンクの整合性チェック回数を記憶しておき、これを確認する方法が考えられる。この場合、ステップS100でチェック回数「0」にリセットし、後述するステップS110で「N」の場合にチェック回数を「1」加えることで、整合性チェック回数をカウント可能である。また、メインメモリ13上に各チャンク管理テーブルを設け、チャンク毎に整合性チェック回数をカウントする方法もある。この場合、複数のスクラバプログラム20-1が並行して実行されても整合性チェック回数をカウントすることができる。
 このチャンク番号に対する整合性チェックが初回である場合(ステップS107:Y)、整合性確認プログラム21は、ステップS101でリードした第1チャンクデータ41をバッファ領域24に格納する(ステップS108)。なお、整合性確認プログラム21は、第1チャンクデータ41そのものに代えて、第1チャンクデータ41のハッシュ値をバッファ領域24に格納してもよい。
 そして、整合性確認プログラム21は、所定時間以上待機した後、ステップS101へ戻る。所定時間とは、ページキャッシュ領域26に格納されているダーティデータが第1記憶デバイス14及び第2記憶デバイス15へライトされるまでの時間である。例えば、整合性確認プログラム21は、ダーディデータがライトされる周期時間以上待機したり、セマフォなどの仕組みを用いてダーティデータがライトされるまで待機したりする。
 整合性確認プログラム21は、二回目以降のステップS107において(ステップS107:N)、ステップS108においてバッファ領域24に格納した第1チャンクデータ41と、ステップS101において再度同じチャンク番号のチャンク領域からリードした第1チャンクデータ41とを比較し、これら二つのチャンクデータが一致するか否かを判定する(ステップS110)。すなわち、そのチャンク番号のチャンク領域がアプリケーションプログラム25によって書き換えられたか否かを判定する。
 二つのチャンクデータが一致する場合(ステップS110:Y)、整合性確認プログラム21は、このチャンク番号に係るチャンクデータは「不整合」である旨をスクラバプログラム20-1へ返し、処理を終了する(ステップS106)。なぜなら、二つのチャンクデータが一致するということは、そのチャンク番号のチャンク領域はアプリケーションプログラム25によって書き換えられていないにも関わらず、第1チャンクデータ41と第2チャンクデータ42とは不整合(ステップS103)であるため、この不整合は誤判定による不整合ではない(つまり、真の不整合である)からである。
 二つのチャンクデータが不一致の場合(ステップS110:N)、整合性確認プログラム21は、この不一致の回数が所定回数以上であるか否かを判定する(ステップS111)。この判定は、ステップS105の説明で述べたように、ローカルメモリに記憶された整合性チェック回数に基づいて行う。この整合性チェック回数があらかじめ定められた閾値未満である場合(ステップS111:N)、整合性確認プログラム21は、上記のステップS108へ進む。
 この不一致の回数が閾値以上である場合(ステップS111:Y)、整合性確認プログラム21は、このチャンク番号に係るチャンクデータは「整合」である旨をスクラバプログラム20-1へ返し、処理を終了する(ステップS104)。なぜなら、不一致の回数が閾値以上であるということは、アプリケーションプログラム25が連続的にこのチャンク番号に係るチャンク領域を更新している可能性があり、この場合、チャンク確認処理が無限ループに陥ってしまう可能性があるからである。なお、この不一致の回数が閾値以上である場合、整合性確認プログラム21は、このチャンク番号に係るチャンクデータを所定のメモリ領域に保持しておき、全てのチャンクデータの整合性チェックが完了した後、再度この保持しておいたチャンクデータについて整合性チェックを行ってもよい。
 なお、一時的な不整合状態の間に電源断などによる異常停止が発生した場合、その一時的な不整合状態が解消されないという問題がある。すなわち、一時的な不整合状態も、再起動後の一貫性確認処理において不整合と判定されてしまう。
 この問題は、例えば、ソフトウェアRAIDプログラム23側で、チャンクデータの実際のライトを行なう前に、ライト先のチャンク番号を不揮発性メモリに記録しておくことにより解消できる。この場合、スクラバプログラム20-1は、不整合が異常停止によって発生したものであるか否かを判定し、異常停止によって発生したものである場合は、一時的な不整合状態であったとして処理してもよい。具体的には、図3のステップS111で、上記の一時的な不整合と判定される場合についても、第2チャンクデータ42を第1チャンクデータ41に一致させるなどの仮処理を行ない、整合と判定してもよい。
 本実施例によれば、ストレージ構成の特性に合わせて、誤判定回避機能の適用及び不適用が適切に切り替えられる。また、本実施例によれば、一時的な不整合状態が発生し得るストレージ装置において、第1チャンクデータ41と第2チャンクデータ42との間に発生した不整合が、一時的な不整合であったのか、それとも真の不整合であったのかを適切に切り分けることができる。よって、本実施例によれば、一時的な不整合状態が発生し得るストレージ装置において、正しくデータの一貫性を確認することができる。
 実施例2では、バックアップデータの一貫性保証に関する処理について説明する。以下、上述の実施例において説明済みの要素については同じ符号を付し、説明を省略する。
 図4は、実施例2に係るストレージシステムの構成例を示す。
 ストレージシステムは、低信頼ストレージ装置10-2と、高信頼ストレージ装置90とを備え、これらのストレージ装置は、データ送受信可能な所定の通信ネットワーク99で接続されている。低信頼ストレージ装置10-2は、例えば、信頼性よりも性能が優先されたストレージ装置である。高信頼ストレージ装置90は、低信頼ストレージ装置10-2と比較して、信頼性の高いストレージ装置である。
 低信頼ストレージ装置10-2の構成は、実施例1に示したストレージ装置10-1と同様の構成であるので、ここでの説明を省略する、
 メインメモリ13には、スクラバプログラム20-2と、バックアッププログラム45と、リストアプログラム46と、バックアップ情報管理テーブル21とが保持される。
 バックアッププログラム45は、第1記憶デバイス14および第2記憶デバイス15に保持されているデータのバックアップデータを生成するためのプログラムである。例えば、バックアッププログラム45は、第1記憶デバイス14および第2記憶デバイス15のスナップショットを作成し、第1記憶デバイス14から第1バックアップデータを生成し、第2記憶デバイス15から第2バックアップデータを生成する。そして、バックアッププログラム45は、第1バックアップデータと第2バックアップデータとを高信頼ストレージ装置90に保存する。バックアッププログラム45は、第1記憶デバイス15および第2記憶デバイス16の両方から一つのバックアップデータを生成し、その一つのバックアップデータを高信頼ストレージ装置90に保存してもよい。
 しかし、バックアップデータの生成中にデータの一部が破損することや、バックアップの対象である第1記憶デバイス14又は第2記憶デバイス15に保持されているデータの一部が破損していることもあり得る。低信頼ストレージ装置10-2は、このようなデータの破損を検出する機能を有していないことも多い。したがって、低信頼ストレージ装置10-2が一部破損したバックアップデータを生成した場合、高信頼ストレージ装置90にそのまま破損したバックアップデータが保存されてしまう。
 リストアプログラム46は、高信頼ストレージ装置90からバックアップデータ(例えば、第1バックアップデータと第2バックアップデータのセット)を取得して低信頼ストレージ装置10-2にリストアするためのプログラムである。ここで、上述のように、バックアップデータの一部が破損していたとしても、通常、リストアプログラム46は、バックアップデータを取得してリストアを実行してみるまで、その破損の存在を知ることができない。
 そこで、スクラバプログラム20-2は、バックアップデータの生成完了後、そのバックアップの対象となった第1記憶デバイス14及び第2記憶デバイス15のデータついて一貫性確認を実行し、その一貫性確認の結果をバックアップデータと共に高信頼ストレージ装置90に保存する。一貫性の保証されているバックアップデータは、第1記憶デバイス14及び第2記憶デバイス15において破損のないデータから生成されたものであることを表す。つまり、一貫性の保証されているバックアップデータは、破損が含まれている可能性が低いともいえる。したがって、リストアプログラム46は、バックアップデータに対応する一貫性確認の結果を参照することにより、このバックアップデータに破損が含まれている可能性を知ることができる。
 バックアップ情報テーブル100は、バックアッププログラム45によって生成されたバックアップデータに関する情報(「バックアップ情報」という)をレコードとして有する。バックアップ情報テーブル100の詳細については後述する。
 高信頼ストレージ装置90は、CPU92、メインメモリ93とを含んだストレージコントローラと、HBA(Host Bus Adapter)94のようなインターフェイスデバイスとを備え、これらの要素は双方向にデータ伝送可能なバス(不図示)で接続されている。
 HBA94には、外部ストレージ装置97が接続される。高信頼ストレージ装置90は、このようにHBA94や外部ストレージ装置97など、信頼性の高い専用のハードウェアによって構成されているため、データを保持することに関する信頼性が高い。
 高信頼ストレージ装置90のメインメモリ93には、低信頼ストレージ装置10-2の保持するバックアップ情報テーブル100と同じものが保持されてもよい。このバックアップ情報テーブル100は、電源を切っても失われないように、外部ストレージ装置97にも保持されてよい。バックアップ情報テーブル100は、高信頼ストレージ装置90のみで保持されてもよいし、低信頼ストレージ装置10-2のみで保持されてもよい。ただし、低信頼ストレージ装置10-2の第1記憶デバイス14にバックアップ情報テーブル100を保持する場合、信頼性が低いので、バックアップ情報テーブル100のデータ自体が破損している可能性も考慮する必要がある。したがって、バックアップ情報テーブル100は、低信頼ストレージ装置10-2と高信頼ストレージ装置90の両方に保持され、高信頼ストレージ装置90に保持されるバックアップ情報テーブル100がメインとして利用され、低信頼ストレージ装置10-2に保持されるバックアップ情報テーブル100がキャッシュとして利用されてもよい。
 次に、図5を参照しながら、本実施例に係るバックアップ情報テーブル100について説明する。
 バックアップ情報テーブル100は、バックアップデータに関する情報であるバックアップ情報をレコードとして有する。
 バックアップ情報は、バックアップバージョンの項目101と、日時の項目102と、スナップショットバージョンの項目103と、ステータスの項目104とを有する。
 バックアップバージョンの項目101には、バックアップデータのバージョン番号が格納される。
 日時の項目102には、バックアップデータの作成日時およびそのバックアップ情報のステータスが最後に更新された日時などが格納される。これにより、バックアップ情報テーブル100内のレコードを日時の新しいものから順番に並び替えることができる。
 スナップショットバージョンの項目103には、バックアップデータに含まれるスナップショットのバージョン番号が格納される。スタンプショットバージョンの項目103には、複数のスナップショットのバージョン番号が格納されてもよい。
 ステータスの項目104には、バックアップデータの状態を示す情報であるステータス情報が格納される。
 次に、図6の状態遷移図を参照しながら、バックアップ情報に含まれるステータス情報について説明する。
 スクラバプログラム20-2は、新たにスナップショットが作成されると、バックアップ情報テーブル100に、ステータスを「初期(600)」としたバックアップ情報を登録する。既に「初期」のバックアップ情報が存在する場合、スクラバプログラム20-2は、そのバックアップ情報のスナップショットバージョンに、新たなスナップショットのバージョンを追記する。
 スクラバプログラム20-2は、バックアップが開始されると、このバックアップに対応するバックアップ情報のステータスを「バックアップ中(601)」に変更する。
 スクラバプログラム20-2は、バックアップが完了すると、このバックアップに対応するバックアップ情報のステータスを「バックアップ完了(602)」に変更する。
 スクラバプログラム20-2は、バックアップデータに対応する記憶デバイスの一貫性確認に成功した場合、このバックアップデータに対応するバックアップ情報のステータスを「確認成功(603)」に変更する。
 スクラバプログラム20-2は、バックアップデータに対応する記憶デバイスの一貫性確認に失敗した場合(不整合が存在した場合)、このバックアップデータに対応するバックアップ情報のステータスを「確認失敗(604)」に変更する。
 スクラバプログラム20-2は、リストア後の記憶デバイスの一貫性確認に成功した場合、このリストアに用いられたバックアップデータに対応するバックアップ情報のステータスを「確認成功(603)」に変更する。
 スクラバプログラム20-2は、リストア後の記憶デバイスの一貫性確認に失敗した場合、このリストアに用いられたバックアップデータに対応するバックアップ情報のステータスを「データ破損(605)」に変更する。
 「確認失敗(604)」は、「データ破損(605)」と異なり、バックアップ完了後に第1記憶デバイス14又は第2記憶デバイス15に不整合が発生した可能性も含むため、必ずしもバックアプデータが破損していることを表すわけではない。つまり、「確認失敗」のバックアップデータであっても、破損していないこともある。「確認失敗(604)」のバックアップデータが破損しているか否かが明らかになるのは、リストア後の一貫性確認の結果が判明したときである。なお、「データ破損(605)」のステータスを確認できないような構成である場合、「データ破損(605)」のステータスは省略されてもよい。
 次に、図7のシーケンスチャートを参照しながら、ストレージシステムの動作の一例を説明する。
 低信頼ストレージ装置10-2のバックアッププログラム45は、スナップショットを作成する(ステップS400)。このとき、バックアッププログラム45はスナップショットを作成した旨を高信頼ストレージ装置90に通知してもよい。高信頼ストレージ装置90は、この通知を受けて、自分の保持するバックアップ情報テーブル100にこのスナップショットに対応するバックアップ情報を登録する。
 バックアッププログラム45は、バックアップデータを生成し、スナップショットを含めたバックアップデータを高信頼ストレージ装置90に保存する(ステップS401)。このとき、低信頼ストレージ装置10-2および高信頼ストレージ装置90は、バックアップの作成開始および作成完了に対応するように、バックアップ情報テーブル100のステータスを「バックアップ中(601)」および「バックアップ完了(602)」に変更してもよい。
 低信頼ストレージ装置10-2のスクラバプログラム20-2は、バックアップ完了後に、第1記憶デバイス14及び第2記憶デバイス15に対して一貫性確認処理を実行する(ステップ402)。ここで、低信頼ストレージ装置10-2は、スクラバプログラム20による記憶デバイスのデータブロックのレベルにおける確認と、OSによるファイルシステムのレベルにおける確認及びアプリケーションのレベルにおける確認のうちの少なくとも一方とを組み合わせて、一貫性確認を行ってもよい。そして、低信頼ストレージ装置10-2は、これらの一貫性確認の何れにおいても不整合が検出されなかった場合に、一貫性有りと判定してもよい。
 低信頼ストレージ装置10-2のスクラバプログラム20-2は、バックアップデータに対応する記憶デバイスについて一貫性有りと判定した場合、高信頼ストレージ装置90のバックアップ情報テーブル100のステータスの項目104に「確認成功」を保存する(ステップS403)。
 低信頼ストレージ装置10-2のスクラバプログラム20-2は、バックアップデータに対応する記憶デバイスついて一貫性無しと判定した場合、高信頼ストレージ装置90のバックアップ情報テーブル100のステータスの項目104に「確認失敗」を保存する(ステップS410~S413)。
 低信頼ストレージ装置10-2は、記憶デバイスについて一貫性無しと判定した場合、以下のリストア処理を行ってもよい。
 低信頼ストレージ装置10-2のリストアプログラム46は、高信頼ストレージ装置90の保持するバックアップ情報テーブル100を取得する(ステップS414)。
 低信頼ストレージ装置10-2のリストアプログラム46は、その取得したバックアップ情報テーブル100に登録されているバックアップ情報を参照し、バックアップデータを選択する(ステップS415)。例えば、リストアプログラム46は、ステータスが「確認成功」である破損の含まれている可能性の少ないバックアップデータを選択する。
 そして、低信頼ストレージ装置10-2のリストアプログラム46は、その選択したバックアップデータを高信頼ストレージ装置90から取得し、リストア処理を実行する(ステップS416~S417)。
 リストア後、低信頼ストレージ装置10-2のスクラバプログラム20-2は、記憶デバイスについて一貫性確認を実行する(ステップS418)。一貫性有りと判定した場合、スクラバプログラム20-2は、高信頼ストレージ装置90のバックアップ情報テーブル100におけるリストアに用いたバックアップデータに対応するバックアップ情報のステータスを「確認成功」に変更する(ステップS419)。
 バックアップデータに第1バックアップデータおよびその第1バックアップデータの冗長データである第2バックアップデータが含まれている場合、スクラバプログラム20-2は、リストア後の第1記憶デバイス14及び第2記憶デバイス15の一貫性を確認することにより、バックアップデータが破損していたか否かを判定できる。
 バックアップデータに第1バックアップデータの冗長データである第2バックアップデータが含まれていない場合(例えば、バックアップデータに第1バックアップデータしか含まれていない場合)は、その第1バックアップデータがリストアされた第1記憶デバイスのレベルにおける確認と、上述で述べたようにOSによるファイルシステムのレベルにおける確認及びアプリケーションのレベルにおける確認のうちの少なくとも一方とを組み合わせて、一貫性確認を行ってもよい。
 次に、図8のフローチャートを参照しながら、本実施例に係る一貫性確認処理について説明する。
 低信頼ストレージ装置10-2におけるスクラバプログラム20-2は、図2のステップS202~S206と同様に、記憶デバイスにおける全てのチャンクデータについて整合性を確認する(ステップS701~S705)。
 スクラバプログラム20-2は、記憶デバイスにおける全てのチャンクデータについて不整合を検出しなかった場合、バックアップ情報テーブル100において一貫性確認が完了していないバックアップ情報について、ステータスを「確認成功(603)」に変更し、日時を更新する。今回の処理がリストア後の一貫性確認である場合(図7のステップS418)、スクラバプログラム20-2は、リストアに用いたバックアップデータに対応するバックアップ情報のステータスを「確認成功(603)」に変更する(ステップS706)。
 そして、スクラバプログラム20-2は、この変更したバックアップ情報テーブル100を高信頼ストレージ装置90に送信及び保存し(ステップS707)、処理を終了する(ステップS708)。ここで、スクラバプログラム20-2は、バックアップ情報テーブル100について、前回の送信からの差分のみのデータを高信頼ストレージ装置90に送信及び保存してもよい。
 一方、ステップS703において不整合を検出した場合、スクラバプログラム20-2は、不整合を検出したチャンク番号に係るチャンク領域が、ユーザデータの格納されるユーザ領域であるか、それともシステムデータの格納されるシステム領域であるかを判定する(ステップS709)。例えば、低信頼ストレージ装置10-2は、予め第1記憶デバイス14の記憶領域を、先頭から20%をシステム領域、残りの80%をユーザ領域に区分しておき、この区分に従って、ステップS709の判定を行ってもよい。また、低信頼ストレージ装置10-2は、この記憶領域の区分に関する情報であるレイアウト情報を保持しており、レイアウト情報に従ってステップS709の判定を行っても良い。
 不整合の検出されたチャンク領域がシステム領域である場合(ステップS709:システム)、低信頼ストレージ装置10-2のリストアプログラム46は、予め高信頼ストレージ装置90に保存しておいたシステム領域のバックアップデータを用いて、このシステム領域をリストアし(ステップS715)、終了する(ステップS716)。リストアプログラム46は、システム領域に不整合が検出された場合、ステータスが「確認成功」であってバックアップの日時が最新であるバックアップデータを選択して自動的にリストアを実行してもよい。
 不整合の検出されたチャンク領域がユーザ領域である場合、低信頼ストレージ装置10-2のスクラバプログラム20-2は、バックアップ情報テーブル100の中で、一貫性確認が完了していないバックアップ情報のステータスを「確認失敗(604)」に変更する(ステップS710)。また、スクラバプログラム20-2は、日時も更新する。なお、スクラバプログラム20-2は、今回の処理がリストア後の一貫性確認である場合(図7のステップS418)、リストアに用いたバックアップデータに対応するバックアップ情報のステータスを「データ破損(605)」に変更する。なお、上述と同様に、ユーザ領域に不整合が検出された場合、ステータスが「確認失敗」又は「データ破損」以外であってバックアップの日時が最新であるバックアップデータを選択し、システムの利用者であるユーザにリストアを実行するか否かを問い合わせてもよい。
 低信頼ストレージ装置10-2のスクラバプログラム20-2は、バックアップ情報テーブル100を高信頼ストレージ装置906に送信及び保存する(ステップS711)。
 低信頼ストレージ装置10-2のリストアプログラム46は、バックアップ情報テーブル100の中からリストアに用いるバックアップデータを選択する(ステップS712)。そして、リストアプログラム46は、そのバックアップデータを用いてユーザ領域をリストアし(ステップS713)、処理を終了する(ステップS714)。
 以上の処理により、システム領域で不整合が検出された場合に、破損の可能性の極めて少ない(例えば、ステータスが「確認成功」の)バックアップデータによってシステム領域を自動的にリストアすることができる。また、ユーザ領域で不整合が検出された場合に、破損の可能性の少ない(例えば、ステータスが「確認失敗」又は「データ破損」以外の)バックアップデータによってユーザ領域をリストアすることができる。
 次に、図9を参照しながら、リストア用のUI(User Interface)について説明する。
 低信頼ストレージ装置10-2のリストアプログラム46は、リストアに用いるバックアップデータを選択するためのUI800を生成する。UI800は、低信頼ストレージ装置10-2で動作するプログラムによって生成されてもよいし、他の装置で動作するプログラムによって生成され、他の装置を通じてUI800に入力された情報が、通信ネットワークを介して低信頼ストレージ装置10-2に送信されてもよい。
 UI800は、動作選択領域801と、バックアップ選択領域902とを有する。動作選択領域801は、リストアに用いるバックアップデータの選択を自動及び手動の何れで行うのかを選択するためのUIを有する。動作選択領域801において「自動」が選択された場合、低信頼ストレージ装置10-2は、所定のポリシーに従って、リストアに用いるバックアップデータを選択する。例えば、低信頼ストレージ装置10-2は、ステータスが「確認成功」であってバックアップの日時が最新であるバックアップデータを自動的に選択する。また、動作選択領域801において「手動」が選択された場合、バックアップ選択領域802がアクティブとなる。
 バックアップ選択領域802は、リストアに用いるバックアップデータを手動で選択するためのUIを有する。バックアップ選択領域は、選択ボックス804と、テーブル803と、実行ボタン805とを有する。
 テーブル803には、選択可能なバックアップデータに対応するバックアップ情報が表示される。テーブル803には、例えば、バックアップ情報テーブル100の項目に対応する、更新の日時と、バックアップバージョンと、スナップショットバージョンと、ステータスとが表示されてよい。
 ユーザは、選択ボックス804をオンにすることにより、リストアに用いるバックアップ情報を選択する。ユーザは、一貫性確認は完了していないもののバックアップの日時が最新のバックアップ情報を選択したり、ステータスが「確認成功(603)」の過去の何れかのバックアップ情報を選択したりすることができる。なお、ステータスが「データ破損(605)」のバックアップデータは、テーブル803に表示されないとしてもよい。ユーザが実行ボタン805を押下すると、選択ボックス804で選択されたバックアップ情報を用いてリストアが開始されてもよい。
 本実施例によれば、高信頼ストレージ装置90に保存されたバックアップデータの一貫性確認に関するステータスを低信頼ストレージ装置10-2から確認できる。このステータスは、リストアに用いるバックアップデータを選択する際の有効な指標となる。
 実施例3では、実施例2に示したバックアップデータの一貫性保証に関する処理を、複数の低信頼ノード10-3が結合して構成されているクラスタシステムに適用する場合について説明する。以下、上述の実施例において説明済みの要素については同じ符号を付し、説明を省略する。
 図10は、実施例3に係るクラスタシステムの構成例を示す。
 クラスタシステムは、複数の低信頼ノード10-3によって構成されており、これらの低信頼ノード10-3は所定の通信ネットワーク80を通じて相互にデータ送受信可能である。
 低信頼ノード10-3の構成は、実施例1に示したストレージ装置10-1と同様の構成であるので、ここでの説明を省略する。
 メインメモリ13には、スクラバプログラム20-3と、バックアッププログラム45と、リストアプログラム46と、バックアップ情報テーブル200とが保持される。また、メインメモリ13には、バッファ領域24と、構成情報領域27と、ページキャッシュ領域26とが確保されてもよい。
 次に、図11を参照しながら、本実施例に係るバックアップ情報テーブル200について説明する。
 バックアップ情報テーブル200は、バックアップデータに関する情報であるバックアップ情報をレコードとして管理する。
 バックアップ情報は、バックアップバージョンの項目201と、日時の項目202と、スナップショットバージョンの項目203と、ステータスの項目204と、ノード名の項目205と、エラー数の項目206とを有する。
 項目201~204は、図5に示したバックアップ情報テーブル100の項目100~104と同様であるので、個々での説明を省略する。
 ノード名の項目206には、バックアップデータが保存されている低信頼ノード10-3を識別するための情報であるノード名が格納される。したがって、バックアップ情報テーブル200は、同じバックアップデータであっても、別のノードに保存されたバックアップデータに対応するバックアップ情報は、別のレコードとして保持する。
 エラー数の項目206には、バックアップデータが保存されているノードで発生したエラー数(障害発生数ともいう)が格納される。エラー数は、例えば、OSがI/O処理中に生じたハードウェア不調によってI/Oをリトライした回数と、HDDのS.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)機能のような障害の早期発見機能によって報告されたエラーの回数などを合算した数であってよい。エラー数は、エラーの要因の重要度に基づいて重み付けされた数であってもよい。エラー数は、ノードの信頼性を表している他の指標であってもよい。したがって、エラー数の多いノードは、エラー数の少ないノードと比較して、信頼性が低いともいえる。
 次に、図12を参照しながら、本実施例に係る一貫性確認処理について説明する。
 低信頼ノード10-3におけるスクラバプログラム20-3は、図2のステップS202~S206と同様に、記憶デバイスにおける全てのチャンクデータについて整合性を確認する(ステップS901~S905)。
 スクラバプログラム20-3は、記憶デバイスにおける全てのチャンクデータについて不整合を検出しなかった場合、バックアップ情報テーブル200における一貫性確認が完了していないバックアップ情報について、ステータスを「確認成功(603)」に変更し、日時を更新する(ステップS906)。
 そして、スクラバプログラム20-3は、このバックアップ情報テーブル100を、このバックアップデータを保持する全てのノードに対して送信及び保存し(ステップS907)、処理を終了する(ステップS920)
 一方、ステップS903において不整合を検出した場合(ステップS903:Y)、スクラバプログラム20-3は、このバックアップデータを保持する全てのノードに対して、不整合が検出された旨の情報を送信及び保存する(ステップS909)。例えば、各ノードが保持するバックアップ情報のステータスを「確認失敗」に変更すると共に、日時を更新する。
 そして、スクラバプログラム20-3は、自ノードをクラスタシステムからいったん離脱させる(ステップS910)。そして、スクラバプログラム20-3は、自ノードのバックアップ情報を参照し、自ノードのエラー数が閾値を超えているか否かを判定する(ステップS911)。
 エラー数が閾値を超えている場合(ステップS911:Y)、スクラバプログラム20-3は、エラーを出力し(ステップS915)、終了する(ステップS920)。
 自ノードのエラー数が閾値以下である場合(ステップS911:N)、リストアプログラム46は、リストア用のバックアップデータを選択する(ステップS912)。ここで、複数のノードに同じ条件のバックアップデータが存在する場合、リストアプログラム46は、エラー数の最も少ないノードに保持されているバックアップデータを選択してもよい。リストアプログラム46は、最もエラー数の少ないノードを選択してももよいし、全てのノードのうちエラー数の少ない上位X%に属するいずれかのノードを選択してもよい。
 リストアプログラム46は、その選択したバックアップデータを用いてリストアを実行する(ステップS913)。
 スクラバプログラム20-3は、リストア完了後、自ノードを再びクラスタに参加させ(ステップS914)、処理を終了する(ステップS920)。
 本実施例によれば、複数の低信頼ノード10-3に複数の同じバックアップデータを作成しておき、信頼性の比較的高いノードに保持されているバックアップデータをリストアに用いることができる。よって、クラスタシステムが低信頼ノード10-3によって構成されている場合であっても、破損の含まれている可能性の低いバックアップデータをリストアに用いることができる。
 本実施例では、仮想化環境上で動作する仮想マシンにおいて、一貫性確認処理を実行する場合について説明する。また、データの改竄検出および原本性の保証に応用する場合についても説明する。
 図13は、実施例4に係る仮想マシンシステムの構成例を示す。
 仮想マシン10-4、53は、物理マシン(例えば物理的な計算機又はストレージ装置)2で動作するプログラムであるハイパバイザ50により、論理的に構成されるマシン(例えば仮想的な計算機又はストレージ装置)である。
 仮想マシン10-4は、論理的なリソースとして、第1記憶デバイス14-4と、第2記憶デバイス15-4と、第1及び第2記憶デバイス14-4及び15-4に対するデータのI/Oを制御するコントローラとを備える。コントローラは、CPU12-4と、メインメモリ13-4とを含む。
 メインメモリ13-4には、スクラバプログラム20-4と、仮想マシン情報テーブル300とが保持される。また、メインメモリ13-4には、仮想的なバッファ領域と、構成情報領域と、ページキャッシュ領域とが確保されてもよい。
 ハイパバイザ50は、物理的なリソースと論理的なリソースとを仲介する機能を有しており、複数の仮想マシンを動作させることができる。
 物理マシン2は、仮想マシンを別の物理マシン上に移動させることができる。例えば、物理マシン2のハイパバイザ50上で動作する仮想マシンを、別の物理マシンのハイパバイザ上に移動させることができる。
 第1記憶デバイス14-4および第2記憶デバイス15-4は、物理マシン2が有する物理的な記憶デバイス52の所定の領域を用いて仮想的に実現される。したがって、物理マシン2は、第1記憶デバイス14-4および第2記憶デバイス15-4を、他の仮想マシンに移動させたり、他の仮想マシンから参照させたりすることができる。
 例えば、各仮想マシンは、他の仮想マシンと共有可能なプロトコル(例えば、iSCSI(Internet Small Computer System Interface))を用いて仮想的な記憶デバイスを提供する、この場合、仮想マシン10-4は、他の仮想マシン53の仮想的な記憶デバイス54を参照することができる。
 したがって、仮想マシン10-4のスクラバプログラム20-4は、他の仮想マシン53の記憶デバイス54および記憶デバイス55の一貫性確認を行うことができる。
 さらに、他の仮想マシン53における第2データが格納されている仮想的な記憶デバイス54を仮想マシン10-4の管理下(記憶デバイス14-4)に移動させておき、仮想マシン53に残した仮想的な記憶デバイス55に格納されている第1データの改竄検査に用いることもできる。例えば、仮想マシン10-4は、自分の管理下に移動させた仮想的な記憶デバイス14-4に格納されている第2データと、他の仮想マシン53の仮想的な記憶デバイス55に格納されている第1データとについて一貫性確認を行い、不整合が検知された場合、第1データが改竄されたおそれがあると判定してもよい。
 次に、図14を参照しながら、仮想マシン情報テーブル300について説明する。
 仮想マシン情報テーブル300は、仮想マシンに関する情報である仮想マシン情報をレコードとして有する。
 仮想マシン情報は、仮想マシン名の項目301と、第1記憶デバイスIDの項目302と、第2記憶デバイスIDの項目303と、稼働ステータスの項目304と、RWモードの項目305と、検査回数の項目306と、警告回数の項目307とを有する。
 仮想マシン名の項目301には、仮想マシンを特定するための情報である仮想マシン名が格納される。
 第1記憶デバイスIDの項目302には、第1データが格納されている仮想的な第1記憶デバイスを識別するためのIDが格納される。
 第2記憶デバイスIDの項目303には、第2データが格納されている仮想的な第2記憶デバイスを特定するためのIDが格納される。
 稼働ステータスの項目304には、仮想マシンの稼動状況を示す情報である稼働ステータスが格納される。例えば、仮想マシンが稼働中であれば、稼働ステータスは「ON」となり、仮想マシンが停止中であれば、稼働ステータスは「OFF」となる。
 RWモードの項目305には、この仮想マシン情報に対応する仮想マシンがリード及びライトが可能なモード(R/W)であるか、リードオンリーモード(RO)であるかなどを示すRWモードの情報が格納される。
 検査回数の項目306には、改竄検査を実行した回数を示す情報である検査回数が格納される。
 警告回数の項目307には、仮想マシン情報に対応する仮想マシンにおいて発生した警告の回数を示す情報である警告回数が格納される。
 スクラバプログラム20-4は、仮想マシン情報テーブル300を参照し、リードオンリーモードの仮想マシンを特定する。リードオンリーモードの仮想マシンに保持されているデータは、不正アクセスなどの想定外の手段を用いない限り変更されない。したがって、スクラバプログラム20-4は、リードオンリーモードの仮想マシンに保持されているデータについて、一貫性確認の手段を用いて改竄検査を行なうことができる。
 次に、図15を参照しながら、本実施例に係る改竄検査処理について説明する。
 仮想マシン10-4のスクラバプログラム20-4は、仮想マシン情報テーブル300を参照して、稼働ステータスが「ON」、RWモードが「RO」、検査回数が「0回(未検査)」の1つの仮想マシン53を対象仮想マシンとして選択する(ステップS1001)。
 仮想マシン10-4のスクラバプログラム20-4は、仮想マシン情報の第1記憶デバイスIDの項目302および第2記憶デバイスIDの項目303を参照して、それらのIDに対応する第1記憶デバイスおよび第2記憶デバイスを特定し、それらの仮想的な記憶デバイスに接続する(ステップS1002)。
 スクラバプログラム20-4は、その接続した第1記憶デバイスおよび第2記憶デバイスに対して、図2のステップS202~S206と同様に、全てのチャンクデータの整合性を確認する(ステップS1003~S1007)。
 ステップS1005において、不整合(つまり改竄)が検出された場合(ステップS1005:Y)、スクラバプログラム20-4は、改竄が検出された旨を記録する(ステップS1010)。例えば、スクラバプログラム20-4は、仮想マシン情報に含まれる警告回数を加算したり、改竄が検出された旨をログに出力したりする。
 そして、スクラバプログラム20-4は、対象仮想マシンに対して、改竄を検出した旨を通知する(ステップS1011)。
 全てのチャンクデータにおいて不整合が検出されなかった場合、スクラバプログラム20-4は、検査を完了した旨及び改竄が検出されなかった旨を記録する(ステップS1020)。例えば、スクラバプログラム20-4は、仮想マシン情報に含まれる検査回数を加算したり、改竄が検出されなかった旨をログに出力したりする。
 スクラバプログラム20-4は、ステップS1002で接続した第1記憶デバイス及び第2記憶デバイスへの接続を解除する(ステップS1010)。
 そして、スクラバプログラム20-4は、他に検査対象の仮想マシンが残っているか否かを判定する(ステップS1022)。検査対象の仮想マシンが残っている場合(ステップS1022:Y)、スクラバプログラム20-4は、ステップS1001へ戻り、次の改竄検査を実行する。検査対象の仮想マシンが残っていない場合(ステップS1022:N)、スクラバプログラム20-4は、処理を終了する(ステップS1023)。
 なお、ステップS1001において、スクラバプログラム20-4は、稼働ステータス「ON」、RWモード「R/W」及び検査回数「0回(未検査)」の対象仮想マシンを1つ選択し、ステップS1003~S1007において他の実施例と同様にデータの一貫性確認を行なってもよい。そして、一貫性が保証された後、スクラバプログラム20-4は、対象仮想マシンの仮想マシン情報のRWモードを「R/W」から「RO」に変更し、対象仮想マシンに第1記憶デバイス及び第2記憶デバイスの何れか一方を残し、他方の記憶デバイスを自分の管理下に移動させ、対象仮想マシンに残された記憶デバイスについて改竄検出処理を行ってもよい。
 本実施例によれば、一の仮想マシンが、他の仮想マシンの記憶デバイスの一貫性を確認することができる。また、一の仮想マシンが、複数の他の仮想マシンの記憶デバイスの一貫性を確認することができる。また、本実施例によれば、一の仮想マシンが、他の仮想マシンの第1記憶デバイス及び第2記憶デバイスの何れか一方を自分の管理下に移動させることにより、他の仮想マシンに残された記憶デバイスの改竄を検出することができる。すなわち、一の仮想マシンが、他の仮想マシンにおける記憶デバイスの原本性を保証することができる。
 上述した本発明の実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
 例えば、判定基準の変更において誤判定回避機能を適用するように変更することは、ストレージ装置以外が行ってもよい。例えば、ストレージ装置に接続されている管理計算機やホスト計算機などが行ってもよい。また、不整合判定をその管理計算機やホスト計算機で行ってもよい。例えば、ストレージ装置は、リードしたデータを管理計算機等に送信し、その管理計算機が不整合判定を行ってもよい。
 例えば、実施例4では仮想化環境上で動作する仮想マシンを用いて説明したが、実施例4に係る処理は、必ずしも仮想マシンに限られず、物理的なストレージ装置を用いて実現されてもよい。
 20-1、20-2、20-3、20-4:スクラバプログラム 21:整合性確認プログラム
 

Claims (15)

  1.  2以上の第1領域を有する第1記憶部と、
     2以上の第2領域を有する第2記憶部と、
     前記2以上の第1領域のうちの或る第1領域から第1対象チャンクデータをリードし、前記2以上の第2領域のうちの前記或る第1領域に対応した第2領域から第2対象チャンクデータをリードし、前記第1対象チャンクデータと、前記第2対象チャンクデータとが正しい対応関係にあるか否かの判定である不整合判定を実行するコントローラと
    を備え、
     前記コントローラは、ストレージ装置の構成に関する情報である構成情報を保持しており、
     前記コントローラは、前記構成情報に従って、前記不整合判定の判定基準を決定し、
     前記不整合判定は、前記決定された判定基準に従い実行される、
    ストレージ装置。
     
  2.  前記構成情報が、前記第1対象チャンクデータに対応するデータブロックが前記或る第1領域にライトされるタイミングと、前記第2対象チャンクデータに対応するデータブロックが前記対応した第2領域にライトされるタイミングとが異なり得る構成を表しており、且つ、前記コントローラが、前記第1対象チャンクデータと前記第2対象チャンクデータとが正しい対応関係にないと前記不整合判定において初めて検出した場合、前記コントローラは、
      前記初めての検出から前記或る第1領域が更新されるタイミングに基づく待機時間の待機後に再び前記或る第1領域から前記第1対象チャンクデータをリードしその再びリードされた第1対象チャンクデータと前記初めての検出に関わる前記第1対象チャンクデータとが一致するか否かに基づいて前記不整合判定の判定基準を変更する
    請求項1に記載のストレージ装置。
     
  3.  前記コントローラは、
      前記不整合判定を行う判定基準を変更した場合であって、前記再びリードされた第1対象チャンクデータと、前記初めての検出に関わる前記第1対象チャンクデータとが一致する場合、前記第1対象チャンクデータと前記第2対象チャンクデータとは正しい対応関係にないと前記不整合判定において判定する
    請求項2に記載のストレージ装置。
     
  4.  前記コントローラは、
      前記不整合判定を行う判定基準を変更した場合であって、前記再びリードされた第1対象チャンクデータと、前記初めての検出に関わる前記第1対象チャンクデータとが不一致の場合、
      前記待機時間の待機後に前記或る第1領域から第1対象チャンクデータをリードし、この今回リードした第1対象チャンクデータと前回にリードされた第1対象チャンクデータとが一致するか否かの判定を繰り返し実行しても一致しないならば、前記不整合判定において正しい対応関係にあると判定する
    請求項3に記載のストレージ装置。
     
  5.  他のストレージ装置に接続されており、
     前記第1記憶部には、前記或る第1領域を含む複数の第1領域にそれぞれ格納されている複数の第1対象チャンクデータから構成される第1データが格納されており、前記第2記憶部には、前記複数の第1領域にそれぞれ対応した複数の第2領域にそれぞれ格納されている複数の第2対象チャンクデータから構成される第2データが格納されており、
     前記コントローラは、
      前記第1データおよび前記第2データのセットを前記他のストレージ装置にバックアップデータとして保存し、
      前記第1データを構成する複数の第1対象チャンクデータと、前記第2データを構成する複数の第2対象チャンクデータとについて前記不整合判定を実行し、何れかのチャンクデータが正しい対応関係にない場合、前記バックアップデータに一貫性の確認に失敗した旨を表す情報を対応付けて前記他のストレージ装置に保存する
    請求項1に記載のストレージ装置。
     
  6.  前記コントローラは、
      前記複数の第1対象チャンクデータと、前記複数の第2対象チャンクデータとについて前記不整合判定を実行し、何れのチャンクデータも正しい対応関係にある場合、前記バックアップデータに一貫性の確認に成功した旨を表す情報を対応付けて前記他のストレージ装置に保存し、
      前記バックアップデータに関する前記不整合判定を実行していない場合、前記バックアップデータに一貫性の確認が未実行である旨を表す情報を対応付けて前記他のストレージ装置に保存する
    請求項5に記載のストレージ装置。
     
  7.  前記コントローラは、
      前記不整合判定において、前記何れかのチャンクデータが正しい対応関係にない場合、前記他のストレージ装置に保存されているバックアップデータのうち、一貫性の確認に成功した旨を表す情報が対応付けられているバックアップデータを用いて前記第1記憶部および前記第2記憶部にデータをリストアする
    請求項6に記載のストレージ装置。
     
  8.  前記コントローラは、
      前記正しい対応関係にないチャンクデータを格納している第1領域が、ストレージ装置を制御するデータの格納される領域である場合、前記一貫性の確認に成功した旨を表す情報が対応付けられているバックアップデータを用いて前記第1記憶部および前記第2記憶部にデータをリストアする
    請求項7に記載のストレージ装置。
     
  9.  前記コントローラは、前記他のストレージ装置からデータのリストアに用いるバックアップデータを選択するためのユーザインタフェースであって、前記ユーザインタフェースに、一貫性の確認に成功又は失敗した旨を表す情報が対応付けられているバックアップデータを識別可能な態様で表示する
    請求項5に記載のストレージ装置。
     
  10.  複数の他のストレージ装置に接続されており、
     前記コントローラは、
      他のストレージ装置毎に前記他のストレージ装置で発生した障害の数を示す障害発生数を管理し、
      前記バックアップデータにそのバックアップデータが一貫性の確認に成功したか否かを表す情報を対応付けて前記複数の他のストレージ装置に保存し、
      前記複数の他のストレージ装置のうち前記障害発生数が比較的少ない他のストレージ装置に保存されており且つ一貫性の確認に成功した旨を表す情報が対応付けられているバックアップデータを、前記第1記憶部および前記第2記憶部のデータのリストアに用いる
    請求項5に記載のストレージ装置。
     
  11.  複数の他のストレージ装置に接続されており、
     前記コントローラは、
      他のストレージ装置毎に前記他のストレージ装置の有する前記第1記憶部および前記第2記憶部への書き込みの可否を示す情報を管理し、
      前記他のストレージ装置において前記第1記憶部への書き込みが不可である場合、前記他のストレージ装置の有する前記第2記憶部を、前記他のストレージ装置に代って前記コントローラが管理し、
      前記第1記憶部のデータと前記第2記憶部のデータとに対する前記不整合判定の結果に基づいて、前記第1記憶部のデータに対する改竄の有無を検出する
    請求項1に記載のストレージ装置。
     
  12.  2以上の第1領域を有する第1記憶部と2以上の第2領域を有する第2記憶部とを備えるストレージ装置の制御方法であって、前記ストレージ装置の有するコントローラが、
     前記ストレージ装置の構成に関する情報である構成情報を参照し、
     第1記憶部が有する2以上の第1領域のうちの或る第1領域から第1対象チャンクデータをリードし、第2記憶部が有する2以上の第2領域のうちの前記或る第1領域に対応した第2領域から第2対象チャンクデータをリードし、前記第1対象チャンクデータと、前記第2対象チャンクデータとが正しい対応関係にあるか否かの判定である不整合判定の判定基準を、前記構成情報に従って決定する
    制御方法。
     
  13.  前記構成情報が、前記第1対象チャンクデータに対応するデータブロックが前記或る第1領域にライトされるタイミングと、前記第2対象チャンクデータに対応するデータブロックが前記対応した第2領域にライトされるタイミングとが異なり得る構成を表しており、且つ、前記第1対象チャンクデータと前記第2対象チャンクデータとが正しい対応関係にないと前記不整合判定において初めて検出された場合、前記初めての検出から前記或る第1領域が更新されるタイミングに基づく待機時間の待機後に再び前記或る第1領域から前記第1対象チャンクデータをリードしその再びリードされた第1対象チャンクデータと前記初めての検出に関わる前記第1対象チャンクデータとが一致するか否かに基づいて前記不整合判定の判定基準を変更する、
    請求項12に記載の制御方法。
     
  14.  前記不整合判定を行う判定基準を変更した場合、前記再びリードされた第1対象チャンクデータと、前記初めての検出に関わる前記第1対象チャンクデータとが一致する場合、前記第1対象チャンクデータと前記第2対象チャンクデータとは正しい対応関係にないと前記不整合判定において判定される
    請求項13に記載の制御方法。
     
  15.  前記ストレージ装置が他のストレージ装置に接続されており、
     前記第1記憶部には、前記或る第1領域を含む複数の第1領域にそれぞれ格納されている複数の第1対象チャンクデータから構成される第1データが格納されており、前記第2記憶部には、前記複数の第1領域にそれぞれ対応した複数の第2領域にそれぞれ格納されている複数の第2対象チャンクデータから構成される第2データが格納されており、
     前記ストレージ装置の有する前記コントローラが、
      前記第1データおよび前記第2データのセットを前記他のストレージ装置にバックアップデータとして保存し、
      前記第1データを構成する複数の第1対象チャンクデータと、前記第2データを構成する複数の第2対象チャンクデータとについて前記不整合判定を実行し、何れかのチャンクデータが正しい対応関係にない場合、前記バックアップデータに一貫性の確認に失敗した旨を表す情報を対応付けて前記他のストレージ装置に保存する
    請求項12に記載の制御方法。

     
PCT/JP2014/050793 2014-01-17 2014-01-17 ストレージ装置および制御方法 WO2015107675A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/050793 WO2015107675A1 (ja) 2014-01-17 2014-01-17 ストレージ装置および制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/050793 WO2015107675A1 (ja) 2014-01-17 2014-01-17 ストレージ装置および制御方法

Publications (1)

Publication Number Publication Date
WO2015107675A1 true WO2015107675A1 (ja) 2015-07-23

Family

ID=53542593

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/050793 WO2015107675A1 (ja) 2014-01-17 2014-01-17 ストレージ装置および制御方法

Country Status (1)

Country Link
WO (1) WO2015107675A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017158666A1 (ja) * 2016-03-14 2017-09-21 株式会社日立製作所 計算機システム、計算機システムのエラー処理方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075743A (ja) * 1999-09-06 2001-03-23 Alps Electric Co Ltd ディスクアレイ制御装置
JP2003167689A (ja) * 2001-11-30 2003-06-13 Toshiba Corp ディスクアレイ装置及び同装置におけるパリティ処理方法
JP2004185416A (ja) * 2002-12-04 2004-07-02 Nec Corp データ転送装置
JP2007317028A (ja) * 2006-05-26 2007-12-06 Ns Solutions Corp 情報処理装置、データベース管理システム、情報処理装置の制御方法及びプログラム
JP2008117395A (ja) * 2006-10-31 2008-05-22 Hewlett-Packard Development Co Lp フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正
JP2009076075A (ja) * 2007-09-24 2009-04-09 Internatl Business Mach Corp <Ibm> データ格納方法、データ・ストレージ・システムおよびプログラム(ストレージ・システムにおけるデータ完全性の検証)(著作権および商標登録表示本特許文書の開示の一部は、著作権保護を受ける内容を含む。本所有権者は、特許文書または特許開示書のいずれか一つによるファクシミリ複写物には、複写物が特許商標庁の特許ファイルまたは記録として世に出現している限り異論はないが、他の場合に全ての著作権は完全に留保する。)(本明細書で参照するある種のマークについては、出願人またはその譲受人と提携しまたは提携しない第三者の、慣習法上の、または登録された商標である可能性がある。これらのマークを使用するのは、例示によって実施可能な開示を提供するためであり、そのようなマークに関連するもののみに本発明の範囲を制限するように解釈されるべきではない。)
JP2010198263A (ja) * 2009-02-25 2010-09-09 Fujitsu Ltd データ診断装置、データ診断方法及びデータ診断プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075743A (ja) * 1999-09-06 2001-03-23 Alps Electric Co Ltd ディスクアレイ制御装置
JP2003167689A (ja) * 2001-11-30 2003-06-13 Toshiba Corp ディスクアレイ装置及び同装置におけるパリティ処理方法
JP2004185416A (ja) * 2002-12-04 2004-07-02 Nec Corp データ転送装置
JP2007317028A (ja) * 2006-05-26 2007-12-06 Ns Solutions Corp 情報処理装置、データベース管理システム、情報処理装置の制御方法及びプログラム
JP2008117395A (ja) * 2006-10-31 2008-05-22 Hewlett-Packard Development Co Lp フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正
JP2009076075A (ja) * 2007-09-24 2009-04-09 Internatl Business Mach Corp <Ibm> データ格納方法、データ・ストレージ・システムおよびプログラム(ストレージ・システムにおけるデータ完全性の検証)(著作権および商標登録表示本特許文書の開示の一部は、著作権保護を受ける内容を含む。本所有権者は、特許文書または特許開示書のいずれか一つによるファクシミリ複写物には、複写物が特許商標庁の特許ファイルまたは記録として世に出現している限り異論はないが、他の場合に全ての著作権は完全に留保する。)(本明細書で参照するある種のマークについては、出願人またはその譲受人と提携しまたは提携しない第三者の、慣習法上の、または登録された商標である可能性がある。これらのマークを使用するのは、例示によって実施可能な開示を提供するためであり、そのようなマークに関連するもののみに本発明の範囲を制限するように解釈されるべきではない。)
JP2010198263A (ja) * 2009-02-25 2010-09-09 Fujitsu Ltd データ診断装置、データ診断方法及びデータ診断プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017158666A1 (ja) * 2016-03-14 2017-09-21 株式会社日立製作所 計算機システム、計算機システムのエラー処理方法

Similar Documents

Publication Publication Date Title
US11163472B2 (en) Method and system for managing storage system
DK3179359T3 (en) PROCEDURE FOR SENDING DATA, PROCEDURE FOR RECEIVING DATA AND STORAGE UNIT
US9690651B2 (en) Controlling a redundant array of independent disks (RAID) that includes a read only flash data storage device
US7975171B2 (en) Automated file recovery based on subsystem error detection results
US8589726B2 (en) System and method for uncovering data errors
US8839026B2 (en) Automatic disk power-cycle
JP2009104420A (ja) 記憶制御装置及び記憶装置の障害検出方法
JP2016057795A (ja) ストレージ制御装置,ストレージシステム及びストレージ制御プログラム
US9342420B2 (en) Communication of conditions at a primary storage controller to a host
CN107133132B (zh) 数据发送方法、数据接收方法和存储设备
WO2019210844A1 (zh) 存储设备异常检测方法及装置、分布式存储系统
US9256490B2 (en) Storage apparatus, storage system, and data management method
KR102437777B1 (ko) 데이터의 사일런트 커럽션을 감지하는 시스템들 및 그것의 동작 방법들
WO2015107675A1 (ja) ストレージ装置および制御方法
US11080136B2 (en) Dropped write error detection
JP6556980B2 (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
KR20160062683A (ko) 이종 스토리지를 구비하는 컴퓨팅 시스템 및 그것의 동작 방법
US11467736B1 (en) Dropped write detection and correction
JP6279780B1 (ja) 分散ストレージの非同期リモートレプリケーションシステムおよび分散ストレージの非同期リモートレプリケーション方法
WO2017037878A1 (ja) ストレージシステム及び検証方法
WO2015132946A1 (ja) ストレージシステム及びストレージシステムの制御方法
JP2017173979A (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: 14879031

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14879031

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP