WO2015045122A1 - ストレージ装置、ストレージシステム、およびデータ管理方法 - Google Patents

ストレージ装置、ストレージシステム、およびデータ管理方法 Download PDF

Info

Publication number
WO2015045122A1
WO2015045122A1 PCT/JP2013/076366 JP2013076366W WO2015045122A1 WO 2015045122 A1 WO2015045122 A1 WO 2015045122A1 JP 2013076366 W JP2013076366 W JP 2013076366W WO 2015045122 A1 WO2015045122 A1 WO 2015045122A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
data element
redundant code
old
storage device
Prior art date
Application number
PCT/JP2013/076366
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/JP2013/076366 priority Critical patent/WO2015045122A1/ja
Priority to US14/373,918 priority patent/US9256490B2/en
Publication of WO2015045122A1 publication Critical patent/WO2015045122A1/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/085Error detection or correction by redundancy in data representation, e.g. by using checking codes using codes with inherent redundancy, e.g. n-out-of-m codes
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Definitions

  • the present invention relates to a technology for protecting data in a storage system.
  • a storage system adopting RAID includes a RAID group composed of a plurality of storage devices (for example, hard disk drives (HDD)).
  • the storage area of the RAID group is composed of a plurality of sub storage area columns “stripe columns” formed across a plurality of storage devices.
  • stripe one sub storage area of each storage device constituting the stripe column.
  • RAID levels There are several levels of RAID (hereinafter referred to as “RAID levels”).
  • the write target data specified by the host computer is divided into data of a predetermined size (hereinafter referred to as “data units” for convenience), and each data unit is divided into a plurality of data elements. Are written in a plurality of stripes.
  • redundant information called “parity” (hereinafter, “redundant code”) is generated for one data unit, and the redundant code is also written in the stripe.
  • RAID 6 can also withstand double failures.
  • two (two types) redundant codes are generated for each stripe column (see Non-Patent Document 1). These two redundant codes can cope with a double failure.
  • Patent Document 1 discloses that a data error is detected by comparing two parities according to RAID6.
  • the storage control microprograms tend to become more complex due to the evolution of storage device architecture, higher functionality, and multi-functionality of native flash. For this reason, the causes and types of failures are diversifying. That is, there is an increased risk of data destruction (silent data corruption) in which no error is detected.
  • Patent Document 1 when the new and old first parities are different from each other and the old and new second parities are different from each other, it is determined that the data segment is broken. However, even when both the first parity and the second parity are broken, a state occurs in which the old and new first parities are different from each other and the old and new second parities are different from each other. In that case, originally, the first parity and the second parity should be corrected, but in Patent Document 1, an incorrect correction is added to the data segment.
  • An object of the present invention is to provide a technique for improving the accuracy of specifying and repairing a damaged portion of data to which a redundant code is added.
  • a storage apparatus is a storage apparatus having a control unit that manages data stored in a plurality of storage devices by being divided into a plurality of data elements, and for data including a plurality of data elements
  • a plurality of old redundant codes generated in advance by a plurality of different calculation methods are stored in the storage device as redundant codes for the data, and the control unit excludes a first data element included in the data
  • a first restoration operation first data element obtained by restoring the first data element using another data element of the data and a new redundant code according to the first operation method of the data; the other data element; and a second of the data If the first data element of the second restoration operation restored from the first data element matches the new redundant code according to the operation method, the first data element is determined to be incorrect.
  • the first data element in the storage device determined to be erroneous by the specifying unit is corrected to the first restoration calculation first data element or the second restoration calculation second data element. And a repairing part.
  • FIG. 2 is a diagram for explaining a configuration example different from that of FIG.
  • FIG. 2 is a hardware block diagram which shows the structural example of the computer system different from FIG.
  • FIG. 3 is a diagram showing a table 500 for managing a physical disk device 34.
  • FIG. It is a figure which shows the example of a table which manages a RAID group number. It is a figure for demonstrating a failure generation case (when redundancy is 2). It is a figure for demonstrating a failure generation case (when redundancy is 3). It is a flowchart which shows an error detection process.
  • FIG. 2 is a diagram for explaining a configuration example different from that of FIG.
  • FIG. is a hardware block diagram which shows the structural example of the computer system different from FIG.
  • It is a figure which shows the structural example of the software program run in the storage apparatus 30 of this embodiment.
  • 3 is a diagram showing a table 500 for managing a physical disk device 34.
  • FIG. It is a figure which shows the example of
  • FIG. 10 is a flowchart showing processing that is started when the new and old parities are all different in the processing of FIG. 9.
  • FIG. It is a flowchart which shows the process which produces
  • FIG. It is a figure which shows the mode of the storage of the data to a physical device. It is a figure which shows the mode of the storage of the data to a physical device. It is a figure which shows the mode of the storage of the data to a physical device.
  • the information of the present invention will be described by the expression “table”.
  • the information does not necessarily have to be expressed by the data structure of the table, “list”, “DB (database)”, It may be expressed by a data structure such as “queue” or the like. Therefore, “table”, “list”, “DB”, “queue”, and the like can be simply referred to as “information” in order to indicate that they do not depend on the data structure.
  • the expressions “identification information”, “identifier”, “name”, “name”, “ID” can be used, and these can be replaced with each other. It is.
  • program is the subject, but the program is executed by the processor and performs processing determined using the memory and the communication port (communication control device). It may be explained. Further, the processing disclosed with the program as the subject may be processing performed by a computer such as a management server or an information processing apparatus. Part or all of the program may be realized by dedicated hardware, or may be modularized. Various programs may be installed in each computer by a program distribution server or a storage medium.
  • FIG. 1 is a hardware block diagram showing a configuration example of a computer system according to this embodiment.
  • the computer system 1 has at least one host computer 10 (general-purpose large computer, server, etc.), at least one management device (management computer) 20, and at least one storage device 30 to which these are connected. Yes.
  • the storage device 30 can also be called a storage system or a storage subsystem.
  • the host computer 10 accesses a logical storage resource of the storage device 30.
  • the management device 20 manages the configuration of the storage area of the storage device 30.
  • the storage device 30 stores data in a storage area set in the physical disk device 34.
  • a plurality of host computers 10 may be provided.
  • the host computer 10 includes, for example, an input device, an output device, a CPU (Central Processing Unit), a memory, a disk adapter, a network adapter, and a disk drive.
  • a CPU Central Processing Unit
  • the input device is a means for receiving input from an administrator or the like who operates the host computer 10 and includes, for example, a keyboard and a mouse.
  • the output device is means for displaying the status of the host computer 10 and setting items, and is configured by, for example, a display device or a printer.
  • a CPU controller, processor
  • the memory is composed of, for example, a RAM (Random Access Memory) and stores programs, data, and the like.
  • the disk adapter is connected to the storage apparatus 30 via the storage area network 121, and transmits / receives data to / from the storage apparatus 30.
  • the storage area network 121 implements data transfer by a protocol suitable for data transfer (for example, Fiber Channel).
  • the storage device 30 may be directly connected to the adapter.
  • the network adapter transmits / receives data to / from the management apparatus 20 or the storage apparatus 30 via the network 108 that is a management network.
  • the network 108 is configured by, for example, a local area network (LAN) or Ethernet (registered trademark).
  • the disk drive is composed of a hard disk device, for example, and stores data and programs.
  • the management apparatus 20 includes, for example, an input device, an output device, a CPU, a memory, a network adapter, and a disk drive.
  • the input device is a means for receiving input from an administrator or the like who operates the management apparatus 20, and is configured by a keyboard, for example.
  • the output device is a means for displaying the state of the management device 20 and setting items, and is constituted by a display device, for example.
  • the CPU reads the management program stored in the disk drive into the memory, and executes management processing for the storage device 30 based on the program.
  • the memory is composed of, for example, a RAM and stores programs, data, and the like.
  • the network adapter transmits / receives data to / from the host computer 10 or the storage device 30 via the network 108.
  • the disk drive is composed of a hard disk device, for example, and stores data and programs.
  • the storage device 30 includes a controller 31, at least one cache memory 32, at least one shared memory 33, and a physical disk device 34. It is assumed that the hardware configuration inside the controller 31 is redundant.
  • the controller 31 controls the storage of data in the storage area configured in the physical disk device 34.
  • the cache memory 32 temporarily stores data read from and written to the physical disk device 34.
  • the shared memory 33 stores configuration information of the controller 31 and the physical disk device 34.
  • the physical disk device 34 is composed of a plurality of disk devices.
  • the disk device (storage device) is configured by, for example, a hard disk drive, and mainly stores user data.
  • the storage device may be a drive composed of a semiconductor memory such as a flash memory.
  • the disk device forms a group based on the RAID configuration.
  • the controller 31 includes at least a processor 360.
  • the controller 31 further includes a host adapter 310, a network adapter 320, a nonvolatile memory 330, a memory 350, a storage adapter 370, and a shared memory adapter 380. ing.
  • the host adapter 310 transmits / receives data to / from the host computer 10 via the storage area network 121.
  • the network adapter 320 transmits / receives data (management information) necessary for system management to / from the host computer 10 or the management apparatus 20 via the network 108.
  • the non-volatile memory 330 is configured by a hard disk or flash memory, and stores programs, configuration information, and the like that operate on the controller 31.
  • the memory 350 is composed of, for example, a RAM and stores programs, data, and the like.
  • the processor 360 reads a program stored in the non-volatile memory 330 into the memory 350 and executes a process defined in the program.
  • the storage adapter 370 transmits / receives data to / from the physical disk device 34 and the cache memory 32.
  • the shared memory adapter 380 transmits / receives data to / from the shared memory 33.
  • Another network adapter 390 may be provided to connect the external storage device 40 to the storage device 30 via the second network.
  • a storage area network (SAN) can be used as the second network.
  • the storage device 40 may be the same as the storage device 30 or an optical disk library.
  • the storage device 40 is not directly connected to the host computer 10 via a network, and is accessed via the storage device 30.
  • the storage device 40 is connected to the management device 20 via the network 108.
  • FIG. 2 is a diagram for explaining a configuration example different from that of FIG. 1 of the storage apparatus 30.
  • FIG. 2 shows only the portions necessary to explain the difference between the storage apparatus 30 of this example and the storage apparatus 30 of FIG.
  • a parity generator 380 is provided on the drive device side.
  • the parity generation unit 380 generates a redundant code (hereinafter also referred to as “parity”) for restoring data that cannot be read due to the failure when a failure occurs in the physical device (hard disk).
  • the parity generation unit 380 is a hardware circuit for generating parity, but may be a function incorporated in a computer program.
  • the parity generation unit 380 performs, for example, exclusive OR of a plurality of data elements constituting the data unit (or, after multiplying a plurality of data elements constituting the data unit by a predetermined coefficient, each data To generate parity).
  • FIG. 3 is a hardware block diagram showing a configuration example of a computer system different from FIG.
  • the computer system includes a storage device 30, command issuing devices 101A and 101B that use the storage device 30, and a management device 20 that manages the storage device 30 and the command issuing devices 101A and 101B.
  • a plurality of storage devices 30 may be provided.
  • the storage device 30 can also be called a storage device, a storage subsystem, or a unified storage system.
  • the command issuing devices 101A and 101B are computers that use the storage device 30.
  • One command issuing device 101A is a computer that issues a block command for accessing a logical storage resource of the storage device 30.
  • the other command issuing device 101B is a computer that issues a file command to the storage device 30.
  • the command issuing device 101A is a block command issuing device, and includes a block interface FC (FibreChannel), iSCSI (Internet Small Computer System Interface), or the like.
  • the command issuing device 101A communicates with the HBAs 35A and 35B of the storage device 30 via the communication network CN1.
  • the command issuing device 101B is a file command issuing device, and includes a file interface NFS (Network File System) or CIFS (Common Internet File System).
  • NFS Network File System
  • CIFS Common Internet File System
  • the command issuing device 101B communicates with the NICs 36A and 36B included in the storage device 30 via the communication network CN2.
  • the management device 20 manages the configuration of the storage area of the storage device 30.
  • the storage device 30 is configured as a unified storage system that can simultaneously process both block commands and file commands, and includes a plurality of clusters 50A and 50B. Each cluster 50A, 50B has a controller board 41A, 41B, respectively.
  • the subscript “A” or “B” indicates the cluster to which the member belongs. If the cluster to which the affiliation belongs is not particularly distinguished, take a subscript for explanation.
  • the storage device 30 stores data in a storage area set in the physical disk device 34.
  • the storage device 30 includes a CPU 31 as a control processor (controller), a memory (cache memory) 32, a disk interface 33, an HBA 35 as an FC interface (HBA target, also referred to as a host adapter), and a LAN interface.
  • a NIC 36, a management interface 37, and the like are provided.
  • the CPU 31, the memory 32, the HBA 35, the NIC 36, and the disk interface 33 are connected to each other via a bus 38.
  • the bus 38 is, for example, PCIe, but the bus 38 may be configured from a switch.
  • the CPU 31 is an arithmetic processing unit that executes various programs and program modules stored in the memory 32.
  • the CPU 31 controls data input / output and the like to a logical storage area configured using the physical disk device 34.
  • the memory 32 is a so-called internal storage device, and includes a nonvolatile memory and a volatile memory.
  • the non-volatile memory stores a program that operates on the CPU 31, configuration information, and the like.
  • the volatile memory temporarily stores the calculation processing result.
  • the disk interface 33 is in charge of data transmission / reception between the physical disk device 34 and the memory 32 or the like.
  • the physical disk device 34 is the same as in FIG.
  • a logical volume which is a logical storage area can be generated by grouping storage areas of one or more physical disk devices 34 and cutting out the storage areas from the grouped storage areas with a fixed length or variable length.
  • the logical volume mainly stores user data. Note that all or part of the program executed by the CPU 31 may be stored in the physical disk device 34.
  • the physical disk device 34 forms a group based on a RAID configuration (for example, RAID 5 or RAID 6).
  • HBA host-side interface
  • NIC host-side interface
  • the HBA 35 is connected to the command issuing device 101A via the network CN1, and has a plurality of communication ports.
  • the HBA 35 exchanges commands and data with the command issuing device 101A.
  • the network CN1 is, for example, FC or Ethernet (registered trademark).
  • the NIC 36 is connected to the command issuing device 101B via the network CN2, and has a plurality of communication ports.
  • the NIC 36 exchanges commands and data with the command issuing device 101B by using a protocol such as NFS or CIFS, for example.
  • the network CN2 is configured as a LAN, for example.
  • the command issuing devices 101A and 101B are connected to the management device 20 via the management network CN3.
  • the command issuing devices 101A and 101B send and receive data (management information) necessary for system management to and from the management device 20.
  • the storage device 30 includes a management interface 37 configured like a LAN, for example.
  • the management interface 37 is connected to the CPU 31.
  • the CPU 31 can report information related to the failure to the management device 20 via the management interface 37.
  • the storage apparatus 30 includes a plurality of clusters 50A and 50B in order to increase availability.
  • controller boards 41A and 41B for controlling the clusters 50A and 50B are provided.
  • One controller board 41A controls one cluster 50A and can also be referred to as a first controller board.
  • the other controller board 41B controls the other cluster 50B and can also be called a second controller board.
  • the CPU 31A in one controller board 41A and the CPU 31B in the other controller board 41B are connected via a connection unit 42 so that bidirectional communication is possible.
  • the connection unit 42 is configured as, for example, a dedicated line bus or a switch.
  • One CPU 31A can access the other CPU 31B via the connection unit 42.
  • the other CPU 31 ⁇ / b> A can access one CPU 31 ⁇ / b> A via the connection unit 42.
  • Cluster 50A and cluster 50B form a cluster configuration to increase availability.
  • FIG. 4 is a diagram illustrating a configuration example of a software program executed by the storage apparatus 30 according to the present embodiment.
  • the software program includes program modules such as a data generation / comparison module 401, an error detection processing module 402, an error data identification processing module 403, and an abnormal data repair module 404.
  • the disk device management table 500 and the group management table 600 are referred to by a software program.
  • the processor 360 of FIG. 1 or the CPU 31 of FIG. 3 loads the program stored in the storage area in the physical disk device 34 into the memory 350 or the memory 32 and executes it.
  • the memory 32 may include a plurality of types of memories.
  • a processor and a memory may be configured in the flash memory board, and the program may be stored in the flash memory board for processing.
  • Hardware such as a dedicated circuit may be provided in the storage device 30 to store the program and perform processing in the circuit.
  • the program may be stored in hardware such as a memory in the host computer 10 and the command issuing device 101, a memory board as described above, or a dedicated circuit. At this time, the parity calculation program may be stored in the same location.
  • FIG. 5 is a diagram illustrating a table 500 for managing the physical disk device 34.
  • the physical disk device 34 includes a disk drive unit 501 that is a mechanism for controlling the drive of the disk device.
  • the mechanism for controlling is, for example, a control circuit.
  • the device number is a number 502 for identifying a disk device.
  • the physical disk device 34 may be managed by a serial number.
  • a state 504 of the physical disk device 34 is shown. For example, it is “normal” when operating normally, “reserved” when waiting as a spare disk, and “failure” when repairing due to failure.
  • FIG. 6 is a diagram showing an example of a table for managing RAID group numbers.
  • a RAID group number 601 and a RAID level 602 are included.
  • a RAID group is a single disk device grouped into a RAID.
  • a plurality of logical devices used by the host computer 10 are configured from one RAID group.
  • FIG. 7 is a diagram for explaining a failure occurrence case.
  • FIG. 7A shows a case where the redundancy is 2.
  • a method having two parities that are one of the redundancy levels will be described as an example.
  • the data elements constituting the data unit (hereinafter also simply referred to as “data”) show two cases, but the same applies to two or more cases.
  • 210A shows a case where two pieces of data are normal and one of the parities has a failure in one stripe unit.
  • 210A may have a failure in one parity, such as 211A, or a failure in the other parity, such as 212A.
  • Which parity is a failure is not related to the essence of the present invention, and the number of parity failures is important, so the patterns of 211A and 212A are aggregated to 210A.
  • 220A indicates that only one data has a failure.
  • 230A to 250A are double fault cases.
  • 230A is a case where both of the parities are faulty
  • 240A is a case where there is one fault each of data and parity
  • 250A is a case where both the data are faulty.
  • FIG. 7B shows a case where the redundancy is 3. This is almost the same as when the redundancy is 2.
  • 210B indicates a case where three pieces of data are normal and a failure occurs in one of the parities.
  • 210B There are three types of 210B, such as 211B, 212B, and 213B, where one of the parities is a failure. Which parity is a failure is irrelevant to the essence of the invention, and it is important how many parity failures exist, so the patterns of 211B, 212B, and 213B are aggregated to 210B.
  • the storage device 30 includes a controller 31 and manages data stored in a plurality of physical devices 34 (storage devices) by being divided into a plurality of data elements.
  • a plurality of redundant codes generated in advance by a plurality of different calculation methods are stored in the physical disk device 34 as redundant codes (parity) for the data.
  • the error detection processing module 402 shown in FIG. 4 calculates a new redundant code (new redundant code) from the data stored in the physical disk device 34 by a plurality of calculation methods.
  • the plurality of calculation methods here include a first calculation method and a second calculation method which will be described later.
  • the error detection processing module 402 determines that neither the data nor the old redundant code is incorrect if the old redundant code matches the new redundant code corresponding to the old redundant code in all the operation methods. Further, the error detection processing module 402 determines that the data is incorrect if the old redundant code and the new redundant code corresponding to the old redundant code do not match in all calculation methods.
  • the error detection processing module 402 determines that the old redundant code is incorrect if the old redundant code and the new redundant code corresponding to the old redundant code do not match in some arithmetic methods. Thereby, in this embodiment, not only when the data is damaged, but also when the redundant code is damaged, the damaged part can be specified.
  • the error data identification processing module 403 restores the first data element using other data elements excluding the first data element included in the data and the new redundant code according to the first calculation method of the data, and first restores the first data element. It is set as the calculation first data element. Similarly, the error data identification processing module 403 restores the first data element using the other data elements excluding the first data element and the new redundant code according to the data second computation method, and performs the second restoration computation. Let it be the first data element. Then, the error data identification processing module 403 determines that the first data element is incorrect when the first restoration calculation first data element and the second restoration calculation first data element match.
  • the abnormal data restoration module 404 uses the first restoration operation first data element or the second restoration operation second as the first data element in the physical disk device 34 determined to be erroneous by the error data identification processing module 403. Modify to data element.
  • the removed data elements are restored with the remaining data elements from which arbitrary data elements have been removed from the data and the respective redundant codes by a plurality of calculation methods, and the same data elements by a plurality of calculation methods
  • the value of is restored, it is determined that the removed data element is incorrect and is corrected to the value of the restored data element. Can be improved.
  • the error detection processing module 402 determines that the old redundant code is incorrect, the error detection processing module 402 corrects the redundant code in the physical disk device 34 to the corresponding new redundant code. According to this, when the redundant code is damaged, it can be repaired.
  • the error data identification processing module 403 searches for an erroneous data element while changing the number of data elements to be excluded as the first data element in a range from 1 to (the number of redundant codes ⁇ 1). .
  • the data elements to be excluded may be gradually increased from one. According to this, it is possible to identify and repair the damage of up to (the number of redundant codes minus 1) data elements.
  • the error detection processing module 402 executes processing in response thereto. According to this, since the damage is detected and repaired when an event that has a relatively high possibility of causing the damage of data or the like occurs, the damage can be detected and repaired efficiently.
  • This processing is performed sequentially for each LU, for example, in the order of addresses, for example, in stripe units within the LU.
  • the data and parity are read (staging) from the disk device to the cache memory and processed.
  • staging is performed even when data in stripe units is clean and stored in the cache memory.
  • FIG. 8 is a flowchart showing the error detection process.
  • Parity P1 is a parity calculated by a calculation formula for parity P1
  • parity P2 is a parity calculated by a calculation formula for parity P2 different from that for parity P1. In this way, all the parities P1 to Pm are generated.
  • the parity calculation formula is a predetermined calculation formula using, for example, EOR. These are set as new parities P1 to Pm (S10).
  • the new parity may be referred to as a new P
  • the old parity may be referred to as an old P.
  • the parity part is read from the disk device, and the old P is determined, and it is determined whether the new Px and the old Px are equal (S11). All Ps are compared, and if none of the values of the new Px and the old Px are equal and if they are all different, the process proceeds to S13. If there is even one equal combination, the process proceeds to S14 (S12).
  • FIG. 9 is a flowchart showing processing that is started when the new and old parity are all different in the processing of FIG.
  • the error location can be specified.
  • the redundancy is 2
  • an error location in the case of a single failure can be specified, and an error location cannot be specified for a double failure or more.
  • FIG. 10 is a flowchart showing a process of generating data from existing parity and comparing the data.
  • x indicates the number of data in the stripe
  • x is a counter indicating that the x-th data is generated from other data and parity and checked.
  • C is a redundancy counter, which counts up on the flowchart side of FIG. 9 and receives the value as an input value for processing.
  • Dx is generated from data other than data Dx and parity (S214). Dx is generated by two methods, and newly generated data is Dx ′ and Dx ′′.
  • Dx ′ and Dx ′′ are equal (S216), the process ends in response to the presence of the same (S218). If Dx ′ and Dx ′′ are not equal and there is another parity combination (S220), the process returns to the process of newly generating Dx ′ and Dx ′′ using the parity (to S212).
  • step S216 in FIG. 10 If the same data is found in step S216 in FIG. 10, the process returns to S22 in FIG. 9 and then proceeds to the abnormal data repair process in S23.
  • FIG. 11 is a flowchart showing abnormal data repair processing.
  • Dx ′ is equal to Dx ′′ and Dx is abnormal data
  • the value of Dx is updated to the value of D ′ (or D ′′) (S230).
  • new parity is generated again from the new data. If the old parity is different from the new parity, the old parity is updated to the new parity value.
  • FIG. 12 is a diagram showing a state of data restoration when the redundancy is 2.
  • Data D1 is generated in two ways. One is new data D1 ′ generated from data D2 to D6 other than D1 and the first parity P (old), and the other is data D2 to D6 other than D1 and the second parity Q ( New data D1 ′′ generated from (old).
  • the new data D1 ′ and the new data D1 ′′ are equal, it is possible to determine that the data D2 to D6, the first parity P, and the second parity Q are correct. Therefore, it can be determined that the excluded D1 is error data.
  • the new data D1 ′ and the new data D1 ′′ are not equal, it is found that there is error data in the data D2 to D6, the first parity P, and the second parity Q. . In this case, it cannot be determined whether the data D1 is correct or abnormal.
  • new data D2 ′ and new data D2 ′′ are created and compared. The same process is performed up to the data D6, and if the two new data are never equal, the process proceeds to S24. If two new data are found to be equal, the process proceeds to S23 at that time.
  • FIGS. 13A to 13C are diagrams showing how data is stored in a physical device.
  • a RAID group 341 is configured by five physical disk devices 34.
  • the stripe is composed of D1, D2, D3, P, and Q.
  • the data D1, D2, D3 and the parities P, Q in one stripe exist in the same RAID group 341, and the availability is improved by storing them in different physical disks.
  • FIG. 13B there are eight physical disk devices, and data D1, D2, and D3 stored in three of the physical disk devices and parity P and Q stored in the two physical disk devices are the same. This is data and parity in units of data. They belong to the same stripe, and there are three physical disk devices that are empty without storing data or parity.
  • FIG. 13C shows an example in which a virtual pool space is configured by 16 physical disk devices 34, and a 6D + 2P RAID group is configured in the virtual pool space.
  • the data elements and parity in the same data unit are the same numbers after “_”, such as D1_1, D2_1, D3_1, D4_1, D5_1, D6_1, P_1, and Q_1. That is, it belongs to the same stripe column.
  • two stripe data elements of the same stripe column stored in the failed physical disk device 34 include a data element D2_2, a data element D3_2, a data element D4_4, and a data element D5_4.
  • a parcel including warning data is referred to as a warning parcel.
  • warning data that cannot be restored if another physical disk device 34 fails is restored with priority.
  • the data element D3-2 and the data element D5_4 shown in the figure are restored preferentially on another physical disk device 34.
  • the warning parcel can be restored at high speed, so that the probability that the data element in the same stripe column as the data element D2_2 can be restored appropriately is increased.
  • This probability has a characteristic that the higher the number of drives that distribute the stripe rows, the higher the probability.
  • As a method for storing data in the physical disk device 34 there is such a storage method.
  • ⁇ Startup timing> The error detection process and the error data identification process are activated in units of LU, and there are various variations as activation timings including the following.
  • the processing may be executed in synchronization with the occurrence of I / O.
  • (2) Remote activation Error detection processing and error data identification processing are executed at the timing when the user instructs execution from the management device or terminal.
  • the process may be executed in accordance with an instruction from a management apparatus or terminal connected to the storage apparatus via the network. Further, the process may be executed in accordance with an instruction received from another storage apparatus.
  • the error detection processing and the error data identification processing may be set not to be performed at the start timing of either (1), (3) or both.
  • an LU that does not want to increase the load due to background processing may be set so that error detection processing and error data identification processing are not performed at the start timing of either (1) or (3).
  • the host computer 10 when an error is found in the error detection process described above, the fact is reported to the host computer 10.
  • the host computer 10 higher than the storage apparatus 30 can be controlled so that an error is detected and I / O is not issued to a location in the middle of performing error data identification and restoration processing.
  • the storage apparatus 30 finds the above-described error and receives I / O for the target location while performing error data identification and restoration processing, the storage apparatus 30 does not perform the I / O processing. You may report to the host computer 10 that I / O was not performed.
  • silent data corruption can be found, an error part can be identified, and abnormal data can be automatically restored. For example, if it takes a long time for the data to be read after it has been written, the silent data corruption that occurred during that time can be restored so that the correct data can be read at the time of reading. Is particularly effective.
  • NIC 360 ... Processor, 37 ... Management interface, 370 ... Storage adapter, 38 ... Bus, 380 ... Utility generation unit, 380 ... Shared memory adapter, 390 ... Network adapter, 40 ... Storage device, 401 ... Data generation / comparison module, 402 ... Error detection processing module, 403 ... Error data identification processing module, 404 ... Abnormal data restoration module, 41A ... Controller board, 41B ... Controller board, 42 ... Connection unit, 500 ... Disk device management table, 501 ... Disk drive unit

Landscapes

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

Abstract

 複数のデータ要素に分割して複数の記憶装置に格納されるデータを管理する制御部を有するストレージ装置は、複数のデータ要素を含むデータに対して、複数の異なる演算方法で予め生成された複数の旧冗長コードが、データに対する冗長コードとして記憶装置に格納されており、制御部が、データに含まれる第1データ要素を除いたデータの他のデータ要素とデータの第1演算方法による新冗長コードとで第1データ要素を復元した第1復元演算第1データ要素と、他のデータ要素とデータの第2演算方法による新冗長コードとで第1データ要素を復元した第2復元演算第1データ要素と、が一致したら、第1データ要素が誤っていると判断する特定部と、特定部にて誤っていると判定された記憶装置内の第1データ要素を、第1復元演算第1データ要素または第2復元演算第2データ要素に修正する修復部と、を有している。

Description

ストレージ装置、ストレージシステム、およびデータ管理方法
 本発明は、ストレージシステムにおけるデータを保護する技術に関する。
 Erasure Codingなどの2つ以上の冗長度を持つ、高冗長度かつ容量効率の高いデータ冗長化方式が普及し始めている。具体的には、RAID(Redundant Arrays of Independent (or Inexpensive) Disks)、Microsoft Azure、Facebook等それぞれで採用されている冗長化方式が挙げられる。
 RAIDが採用されているストレージシステムには、複数の記憶装置(例えば、ハードディスクドライブ(HDD))で構成されたRAIDグループが備えられている。RAIDグループの記憶領域は、複数の記憶装置に跨って形成される複数のサブ記憶領域列「ストライプ列」で構成されている。以下、ストライプ列を構成する各記憶装置の一つのサブ記憶領域を、「ストライプ」と呼ぶ。
 RAIDには、いくつかのレベル(以下、「RAIDレベル」という)がある。
 例えば、RAID5では、ホストコンピュータから指定されたライト対象のデータは、所定サイズのデータ(以下、便宜上「データ単位」と言う)に分割されて、各データ単位が複数のデータ要素に分割され、複数のデータ要素がそれぞれ複数のストライプに書き込まれる。
 また、RAID5では、一つのデータ単位に対して、“パリティ”と呼ばれる冗長な情報(以下、「冗長コード」)を生成し、その冗長コードもストライプに書き込んでおく。記憶装置に障害が発生し、データ単位を構成するデータ要素の正しい値が読み出せなくなったとき、パリティを利用して、そのデータ要素をリストアする。
 また、RAID6は二重障害にも耐えられる。RAID6では、一つのストライプ列ごとに2つの(2種類の)冗長コードが生成される(非特許文献1参照)。この2つの冗長コードにより二重障害に対処可能となっている。特許文献1には、RAID6により、2つのパリティを比較することによって、データエラーを検出することが開示されている。
特開2010-33287号公報
 ストレージ装置のアーキテクチャの進化や高機能化、及びネイティブフラッシュの多機能化により、ストレージ制御マイクロプログラムが複雑化する傾向にある。このため、障害の起こる原因や障害の種類も多様化している。すなわち、エラーが検出されないデータ破壊(サイレントデータコラプション)が発生するリスクが増大している。
 一例として、データそのものの破損ではなく、ドライブ内部のデータの格納場所のマッピングテーブル内のアドレスが破損しているために、正しいデータへアクセスできない、というものがある。他の例として、上述したダイナミックスペアリングやコレクションコピーによりデータ格納位置を変更したにもかかわらず、アドレスの破損によって古いデータ格納位置をアクセスしてしまい、一部だけ過去のデータに戻ってしまう現象も起こりかねない。しかしながら、データそのものの破損でなく、アドレスの破損のような場合、従来の一般的な単純なチェックコードによるチェックでは、エラーとして検出されない場合がある。
 また、特許文献1では、新旧の第一パリティが互いに異なり、かつ新旧の第二パリティが互いに異なる場合、データセグメントが壊れていると判断される。しかし、第一パリディと第二パリティの両方が壊れていた場合にも、新旧の第一パリティが互いに異なり、かつ新旧の第二パリティが互いに異なるという状態が起こる。その場合、本来であれば、第一パリティおよび第二パリティを修正すべきであるが、特許文献1では、データセグメントに誤った修正を加えてしまう。
 本発明の目的は、冗長コードを付加したデータの破損部位特定および修復の確度を向上する技術を提供する。
 本発明の一態様によるストレージ装置は、複数のデータ要素に分割して複数の記憶装置に格納されるデータを管理する制御部を有するストレージ装置であって、複数のデータ要素を含むデータに対して、複数の異なる演算方法で予め生成された複数の旧冗長コードが、前記データに対する冗長コードとして前記記憶装置に格納されており、前記制御部が、前記データに含まれる第1データ要素を除いた前記データの他のデータ要素と前記データの第1演算方法による新冗長コードとで前記第1データ要素を復元した第1復元演算第1データ要素と、前記他のデータ要素と前記データの第2演算方法による新冗長コードとで前記第1データ要素を復元した第2復元演算第1データ要素と、が一致したら、前記第1データ要素が誤っていると判断する特定部と、前記特定部にて誤っていると判定された前記記憶装置内の前記第1データ要素を、前記第1復元演算第1データ要素または前記第2復元演算第2データ要素に修正する修復部と、を有している。
 本発明によれば、冗長コードを付加したデータの破損部位の特定および修復の確度を向上することができる。
本実施形態に係わる計算機システムの構成例を示すハードウェアブロック図である。 ストレージ装置30の図1とは異なる構成例を説明するための図である。 図1とは異なる計算機システムの構成例を示すハードウェアブロック図である。 本実施形態のストレージ装置30にて実行されるソフトウェアプログラムの構成例を示す図である。 物理ディスクデバイス34を管理するためのテーブル500を示す図である。 RAIDグループ番号を管理するテーブル例を示す図である。 障害発生ケース(冗長度が2の場合)を説明するための図である。 障害発生ケース(冗長度が3の場合)を説明するための図である。 エラー検出処理を示すフローチャートである。 図9の処理において、新旧パリティが全て異なるという結果であった場合に起動する処理を示すフローチャートである。 データを既存パリティから生成して比較する処理を示すフローチャートである。 異常データ修復処理を示すフローチャートである。 冗長度が2の場合のデータ修復の様子を示す図である。 物理デバイスへのデータの格納の様子を示す図である。 物理デバイスへのデータの格納の様子を示す図である。 物理デバイスへのデータの格納の様子を示す図である。
 本発明の実施形態について図面を参照して説明する。
 ただし、本実施形態は、本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。また、各図において共通の構成については、同一の参照番号が付されている。
 また、以後の説明では「テーブル」という表現にて本発明の情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、「リスト」、「DB(データベース)」、「キュー」等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等については、単に「情報」と呼ぶこともできる。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
 以後の説明では「プログラム」を主語として説明する場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
 図1は、本実施形態に係わる計算機システムの構成例を示すハードウェアブロック図である。計算機システム1は、少なくとも1つのホスト計算機10(汎用大型コンピュータやサーバなど)と、少なくとも1つの管理装置(管理計算機)20と、これらが接続される少なくとも1つのストレージ装置30と、を有している。なお、ストレージ装置30は、ストレージシステム、あるいはストレージサブシステムと言うこともできる。
 ホスト計算機10は、ストレージ装置30の論理的な記憶資源にアクセスする。管理装置20は、ストレージ装置30の記憶領域の構成を管理する。ストレージ装置30は、物理ディスクデバイス34に設定された記憶領域にデータを格納する。ホスト計算機10は複数台でもよい。
 ホスト計算機10は、例えば、入力デバイス、出力デバイス、CPU(Central Processing Unit)、メモリ、ディスクアダプタ、ネットワークアダプタ、及び、ディスクドライブを備える。
 入力デバイスは、ホスト計算機10を操作する管理者等から入力を受け付ける手段であり、例えば、キーボードやマウス等で構成される。出力デバイスは、ホスト計算機10の状態や設定項目を表示する手段であり、例えばディスプレイ装置やプリンタ等で構成される。CPU(コントローラ、プロセッサ)は、ディスクドライブに格納されているプログラムをメモリに読み込んで、そのプログラムに規定された処理を実行する。メモリは、例えば、RAM(Random Access Memory)等で構成され、プログラムやデータ等を格納する。
 ディスクアダプタは、ストレージ装置30とストレージエリアネットワーク121を介して接続し、ストレージ装置30にデータを送受信する。ストレージエリアネットワーク121は、データ転送に適したプロトコル(例えば、Fibre Channel)によって、データ転送を実現する。ストレージ装置30のアダプタと直結でもよい。
 ネットワークアダプタは、管理装置20又はストレージ装置30と管理ネットワークであるネットワーク108を介してデータを送受信する。ネットワーク108は、例えば、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)で構成される。ディスクドライブは、例えばハードディスク装置で構成され、データやプログラムを格納する。
 管理装置20は、例えば、入力デバイス、出力デバイス、CPU、メモリ、ネットワークアダプタ、及び、ディスクドライブを有する。
 入力デバイスは、管理装置20を操作する管理者等の入力を受け付ける手段で、例えばキーボードで構成される。出力デバイスは、管理装置20の状態や設定項目を表示する手段で、例えば、ディスプレイ装置で構成される。
 CPUは、ディスクドライブに格納されている管理プログラムをメモリに読み込んで、そのプログラムに基づいて、ストレージ装置30に対する管理処理を実行する。メモリは、例えばRAM等で構成され、プログラムやデータ等を格納する。
 ネットワークアダプタは、ホスト計算機10又はストレージ装置30とネットワーク108を介してデータを送受信する。ディスクドライブは、例えばハードディスク装置で構成され、データやプログラムを格納する。
 ストレージ装置30は、コントローラ31、少なくとも1つのキャッシュメモリ32、少なくとも1つの共有メモリ33、及び、物理ディスクデバイス34を有する。コントローラ31内部のハードウェア構成は冗長化されているものとする。
 コントローラ31は、物理ディスクデバイス34に構成された記憶領域へのデータの格納を制御する。キャッシュメモリ32は、物理ディスクデバイス34に読み書きされるデータを一時的に格納する。共有メモリ33は、コントローラ31や物理ディスクデバイス34の構成情報を格納する。
 物理ディスクデバイス34は、複数のディスク装置によって構成される。ディスク装置(記憶デバイス)は、例えばハードディスクドライブで構成され、主としてユーザデータを格納する。記憶デバイスとしては、フラッシュメモリなどの半導体メモリからなるドライブでもよい。ディスク装置は、RAID構成に基づいてグループを構成する。
 コントローラ31は、少なくとも、プロセッサ360を有するものであり、この実施形態では、さらに、ホストアダプタ310、ネットワークアダプタ320、不揮発性メモリ330、メモリ350、ストレージアダプタ370、及び、共有メモリアダプタ380を有している。
 ホストアダプタ310は、ストレージエリアネットワーク121を介してホスト計算機10との間でデータを送受信する。ネットワークアダプタ320は、ネットワーク108を介してホスト計算機10、又は、管理装置20との間でシステム管理上必要なデータ(管理情報)を送受信する。
 不揮発性メモリ330は、ハードディスクやフラッシュメモリで構成され、コントローラ31で動作するプログラムや構成情報等を格納する。
 メモリ350は、例えばRAM等で構成され、プログラムやデータ等を格納する。プロセッサ360は、不揮発性メモリ330に格納されているプログラムをメモリ350に読み込んで、そのプログラムに規定された処理を実行する。
 ストレージアダプタ370は、物理ディスクデバイス34、及び、キャッシュメモリ32との間でデータを送受信する。共有メモリアダプタ380は、共有メモリ33との間でデータを送受信する。
 ネットワークアダプタ320の他のネットワークアダプタ390を設け、第2のネットワークを介してストレージ装置30に外部のストレージ装置40を接続してもよい。第2のネットワークは例えばストレージエリアネットワーク(SAN)を用いることができる。ストレージ装置40は、ストレージ装置30と同等又は光ディスクライブラリなどでもよい。ストレージ装置40はホスト計算機10とはネットワークで直接接続しておらず、ストレージ装置30を介してアクセスする。ストレージ装置40は、ネットワーク108により管理装置20と接続されている。
 図2は、ストレージ装置30の図1とは異なる構成例を説明するための図である。図2には、本例のストレージ装置30と図1のストレージ装置30との違いを説明するのに必要な部分だけが示されている。
 この例では、プロセッサとメモリを単位としたアダプタ(パッケージ)を、ホスト計算機側のものと、ディスク装置側のものと2種類設ける。ドライブ装置側のものには、パリティ生成部380がある。パリティ生成部380は、物理デバイス(ハードディスク)に障害が発生した際にその障害により読み出せなくなったデータをリストアするための冗長コード(以下「パリティ」ともいう)を生成する。
 本実施形態では、パリティ生成部380は、パリティを生成するためのハードウェア回路であるが、コンピュータプログラムに組み込まれた機能であっても良い。パリティ生成部380は、例えば、データ単位を構成する複数のデータ要素の排他的論理和をとることによって(或いは、データ単位を構成する複数のデータ要素に所定の係数を掛けた後でそれぞれのデータの排他的論理和をとることによって)、パリティを生成する。
 図3は、図1とは異なる計算機システムの構成例を示すハードウェアブロック図である。
 この例では、計算機システムは、ストレージ装置30と、ストレージ装置30を利用するコマンド発行装置101A、101Bと、ストレージ装置30およびコマンド発行装置101A、101Bを管理する管理装置20とを含む。ストレージ装置30は複数設けられてもよい。なお、ストレージ装置30は、ストレージ装置、ストレージサブシステム、ユニファイドストレージシステムと呼ぶこともできる。
 コマンド発行装置101A、101Bは、ストレージ装置30を利用する計算機である。一方のコマンド発行装置101Aは、ストレージ装置30の有する論理的な記憶資源にアクセスするためのブロックコマンドを発行する計算機である。他方のコマンド発行装置101Bは、ストレージ装置30に対してファイルコマンドを発行する計算機である。
 コマンド発行装置101Aは、ブロックコマンド発行装置であり、ブロックインターフェースであるFC(FibreChannel)またはiSCSI(internet Small Computer System Interface)等を備えている。コマンド発行装置101Aは、通信ネットワークCN1を介して、ストレージ装置30の有するHBA35A、35Bと通信する。
 コマンド発行装置101Bは、ファイルコマンド発行装置であり、ファイルインターフェースであるNFS(Network File System)またはCIFS(Common Internet File System)等を備えている。コマンド発行装置101Bは、通信ネットワークCN2を介して、ストレージ装置30の有するNIC36A、36Bと通信する。
 管理装置20は、ストレージ装置30の記憶領域の構成を管理する。
 ストレージ装置30は、ブロックコマンドおよびファイルコマンドのいずれも同時に処理可能なユニファイドストレージシステムとして構成されており、複数のクラスタ50A、50Bを備える。各クラスタ50A、50Bは、それぞれコントローラボード41A、41Bを有する。ストレージ装置30の構成において、添え字の「A」または「B」は、所属先のクラスタを示す。所属先のクラスタを特に区別しない場合、添え字を取って説明する。
 ストレージ装置30は、物理ディスクデバイス34に設定された記憶領域にデータを格納する。ストレージ装置30は、その内部に、制御プロセッサ(コントローラ)であるCPU31、メモリ(キャッシュメモリ)32、ディスクインターフェース33、FCインターフェースであるHBA35(HBAターゲットであり、ホストアダプタとも言う)、LANインターフェースであるNIC36、管理用インターフェース37等を備えている。
 CPU31、メモリ32、HBA35、NIC36およびディスクインターフェース33は、相互にバス38を介して接続されている。バス38は、例えばPCIeであるが、スイッチからバス38を構成してもよい。
 CPU31は、メモリ32に格納されている各種プログラムおよびプログラムモジュールを実行する演算処理装置である。CPU31は、物理ディスクデバイス34を用いて構成される論理的記憶領域へのデータ入出力等を制御する。
 メモリ32は、いわゆる内部記憶装置であり、不揮発性メモリおよび揮発性メモリを含んでいる。不揮発性メモリは、CPU31で動作するプログラムおよび構成情報等を格納する。揮発性メモリは、演算処理結果を一時的に格納する。
 ディスクインターフェース33は、物理ディスクデバイス34とメモリ32等との間のデータ送受信を担当する。
 物理ディスクデバイス34は、図1と同様である。
 一つまたは複数の物理ディスクデバイス34の有する記憶領域をグループ化し、そのグループ化された記憶領域から固定長または可変長で記憶領域を切り出すことで、論理的記憶領域である論理ボリュームを生成できる。その論理ボリュームには、主としてユーザデータが記憶される。なお、CPU31が実行するプログラムの全部または一部を、物理ディスクデバイス34内に格納してもよい。
 物理ディスクデバイス34は、RAID構成(例えばRAID5やRAID6)に基づいてグループを構成する。
 本実施例のストレージ装置30は、いわゆるユニファイドストレージシステムとして構成されているため、ブロックコマンドを処理するためのホスト側インターフェース(HBA)35と、ファイルコマンドを処理するためのホスト側インターフェース(NIC)36の両方を備えている。
 HBA35は、ネットワークCN1を介してコマンド発行装置101Aに接続されており、複数の通信ポートを有する。HBA35は、コマンド発行装置101Aとの間でコマンドおよびデータを授受する。ネットワークCN1は、例えばFC、イーサネット(登録商標)等である。
 NIC36は、ネットワークCN2を介してコマンド発行装置101Bに接続されており、複数の通信ポートを有する。NIC36は、例えばNFSまたはCIFS等のプロトコルによって、コマンド発行装置101Bとの間でコマンドおよびデータを授受する。ネットワークCN2は、例えばLAN等のように構成される。
 コマンド発行装置101A、101Bは、管理ネットワークCN3を介して、管理装置20に接続されている。コマンド発行装置101A、101Bは、管理装置20との間で、システム管理上必要なデータ(管理情報)を送受信する。
 ストレージ装置30は、例えばLANのように構成される管理用インターフェース37を備える。管理用インターフェース37は、CPU31と接続される。CPU31は、ストレージ装置30内のCPU31以外の部位において障害が起こった場合、その障害に関する情報を、管理用インターフェース37を介して、管理装置20へ報告することができる。
 ストレージ装置30は、可用性を高めるために、複数のクラスタ50A、50Bを備える。
 ストレージ装置30内には、クラスタ50A、50Bを制御するためのコントローラボード41A、41Bが設けられている。一方のコントローラボード41Aは、一方のクラスタ50Aを制御するもので、第1コントローラボードと呼ぶこともできる。他方のコントローラボード41Bは、他方のクラスタ50Bを制御するもので、第2コントローラボードと呼ぶこともできる。
 一方のコントローラボード41A内のCPU31Aと他方のコントローラボード41B内のCPU31Bとは、接続部42を介して双方向通信可能に接続されている。接続部42は、例えば、専用線のバス、またはスイッチ等として構成される。
 ここでは、CPU間を直接通信する専用パスとする。
 一方のCPU31Aは、接続部42を介して他方のCPU31Bにアクセスすることができる。同様に、他方のCPU31Aは、接続部42を介して一方のCPU31Aにアクセスすることができる。
 クラスタ50Aとクラスタ50Bは、可用性を高めるためにクラスタ構成を組む。
 図4は、本実施形態のストレージ装置30にて実行されるソフトウェアプログラムの構成例を示す図である。本例では、ソフトウェアプログラムには、データ生成・比較モジュール401、エラー検出処理モジュール402、エラーデータ特定処理モジュール403、および異常データ修復モジュール404といったプログラムモジュールが含まれている。ディスクデバイス管理テーブル500およびグループ管理テーブル600はソフトウェアプログラムによって参照される。
 ストレージ装置30の電源が投入されると、図1のプロセッサ360または図3のCPU31が物理ディスクデバイス34内の記憶領域に格納されたプログラムをメモリ350またはメモリ32内にロードし、実行する。
 バリエーションとして、メモリ32が複数種類のメモリから成る場合もある。例えばフラッシュメモリボードがある。前記フラッシュメモリボード内には、プロセッサ、メモリが構成され、前記プログラムをフラッシュメモリボード内に格納して処理を行ってもよい。ストレージ装置30内に専用の回路などのハードウェアを設けて前記プログラムを格納し回路内で処理をしてもよい。
 バリエーションとして、ホスト計算機10及びコマンド発行装置101内のメモリまたは前述のようなメモリボード、専用の回路などのハードウェアに前記プログラムを格納してもよい。
 その際、パリティ演算のプログラムも同じ場所に格納してもよい。
 図5は、物理ディスクデバイス34を管理するためのテーブル500を示す図である。物理ディスクデバイス34は、ディスクデバイスの駆動を制御する機構であるディスクドライブユニット501からなる。制御する機構とは例えば制御回路である。デバイス番号は、ディスクデバイスを識別するための番号502である。物理ディスクデバイス34が有する使用量の記憶容量(記載無し)や、物理ディスクデバイス34が属するRAIDグループ番号503である。501と502の組み合わせではなく、物理ディスクデバイス34を通し番号で管理してもよい。物理ディスクデバイス34の状態を504に示す。例えば、正常に稼働している場合は「正常」、予備ディスクとして待機中の場合は「予備」、障害により、修復中である場合などは「故障」などとなる。
 図6は、RAIDグループ番号を管理するテーブル例を示す図である。RAIDグループ番号601、RAIDレベル602を含む。RAIDグループは、単体のディスクデバイスをグループ化しRAID化したものである。1つのRAIDグループからホスト計算機10が使用する論理デバイスを複数構成する。
 図7は、障害発生ケースを説明するための図である。
 図7Aは、冗長度が2の場合である。冗長度の一つであるパリティを2つ持つ方式を例として説明する。データ単位を構成するデータ要素(以下単に「データ」ともいう)は2つのケースを示すが、2つ以上の場合も同じである。
 障害発生ケースとして全パターンを200Aに示す。図中の「○」(丸印)は正常を示し、「×」(バツ印)は障害を示す。例えば210Aでは、1つのストライプ単位のうち、データ2つは正常、パリティのうち1つに障害が発生している場合を示す。210Aは、211Aのように、一方のパリティが障害である場合と、212Aのように、もう一方のパリティの障害である場合がある。どちらのパリティが障害であるかは、本発明の本質には関係が無く、パリティの障害がいくつあったか、が重要であるため、211Aと212Aのパターンを集約して210Aとする。220Aは、データ1つのみ障害が有ったことを示す。
 230A~250Aは2重障害のケースである。230Aはパリティが2つとも障害の場合、240Aはデータとパリティそれぞれ1つずつ障害がある場合、250Aはデータが2つとも障害のケースである。
 図7Bは、冗長度が3の場合である。前述の冗長度が2の場合とほぼ同様となる。
 例えば210Bでは、データ3つは正常、パリティのうち1つに障害が発生している場合を示す。210Bは、211B、212B、213Bのように、パリティのうちどこか1つのパリティが障害となっている場合の3通りがある。どのパリティが障害であるかは、発明の本質には関係が無く、パリティの障害がいくつあったか、が重要であるため、211B、212B、213Bのパターンを集約して210Bとする。
 冗長度がnの場合においても、同様に障害状況を整理することができる。
<概要>
 まず、本実施形態によるストレージ装置30のコントローラ31の機能構成および動作の概要について説明する。ここでは図1および図4を参照し、図4に示したプログラムモジュールを主語として動作を説明する。この概要説明の後に本実施形態の詳細な説明について述べる。その詳細な説明により本実施形態の構成および動作がより良く理解されるであろう。
 図1を参照すると、ストレージ装置30はコントローラ31を備えており、複数のデータ要素に分割して複数の物理デバイス34(記憶装置)に格納されるデータを管理する。
 複数のデータ要素を含むデータに対して、複数の異なる演算方法で予め生成された複数の冗長コード(旧冗長コード)が、データに対する冗長コード(パリティ)として物理ディスクデバイス34に格納されている。
 図4に示した、エラー検出処理モジュール402は、物理ディスクデバイス34に格納されたデータから複数の演算方法で新たな冗長コード(新冗長コード)を算出する。ここでいう複数の演算方法には、後述する第1演算方法と第2演算方法が含まれる。エラー検出処理モジュール402は、全ての演算方法で旧冗長コードとその旧冗長コードに対応する新冗長コードとが一致であれば、データおよび旧冗長コードのいずれも誤っていないと判定する。また、エラー検出処理モジュール402は、全ての演算方法で旧冗長コードとその旧冗長コードに対応する新冗長コードとが不一致であれば、データが誤っていると判定する。また、エラー検出処理モジュール402は、一部の演算方法で旧冗長コードとその旧冗長コードに対応する新冗長コードとが不一致であれば、その旧冗長コードが誤っていると判定する。これにより、本実施形態では、データが破損している場合だけでなく、冗長コードが破損している場合にも破損箇所を特定することができる。
 エラーデータ特定処理モジュール403は、データに含まれる第1データ要素を除いた他のデータ要素と、データの第1演算方法による新冗長コードとで第1データ要素を復元し、それを第1復元演算第1データ要素とする。また、エラーデータ特定処理モジュール403は、同じく第1データ要素を除いた他のデータ要素と、データの第2演算方法による新冗長コードとで第1データ要素を復元し、それを第2復元演算第1データ要素とする。そして、エラーデータ特定処理モジュール403は、第1復元演算第1データ要素と第2復元演算第1データ要素とが一致したら、第1データ要素が誤っていると判断する。
 異常データ修復モジュール404は、エラーデータ特定処理モジュール403にて誤っていると判定された、物理ディスクデバイス34内の第1データ要素を、第1復元演算第1データ要素または第2復元演算第2データ要素に修正する。
 本実施形態によれば、データから任意のデータ要素を除去した残りのデータ要素と、複数の演算方法によるそれぞれの冗長コードとで、除去したデータ要素を復元し、複数の演算方法で同じデータ要素の値が復元される場合に、その除去したデータ要素が誤っていると判断し、その復元されたデータ要素の値に修正するので、冗長コードを付加したデータの破損部位の特定および修復の確度を向上することができる。
 また、エラー検出処理モジュール402は、旧冗長コードが誤っていると判定したら、物理ディスクデバイス34内の冗長コードを、対応する新冗長コードに修正する。これによれば、冗長コードが破損している場合に、それを修復することができる。
 また、エラーデータ特定処理モジュール403は、第1データ要素として除外するデータ要素の個数を1個から(冗長コードの個数-1)個までの範囲で変更しながら、誤っているデータ要素を探索する。例えば、除外するデータ要素を1個から徐々に増やして行けばよい。これによれば、(冗長コードの個数-1)個までのデータ要素の破損を特定し、修復することができる。
 また、エラー検出処理モジュール402は、物理ディスクデバイス34間のデータ移動が発生すると、それに応じて処理を実行する。これによれば、データ等の破損が発生する可能性が比較的高い事象が起こったときに、破損の検出および修復を行うので、効率よく破損の検出および修復を行うことができる。
 以下、本実施形態の詳細について説明する。
<ベリファイ方式>
 本実施形態におけるエラー検出とエラーデータ特定処理を説明する。
 本処理は、例えば、LU毎に、LU内のストライプ単位に、例えばアドレス順などで順次処理をする。
 処理対象となるデータがクリーン(物理ディスク装置へ最新データが格納されていて、格納されたデータと同じデータがキャッシュに格納されている状態)であった場合、チェックせずに次のストライプへ処理対象を移動する。また、処理対象となるデータがダーティ(最新データが物理ディスク装置へ格納されていなくキャッシュメモリ上に格納されている状態)であった場合は、そもそもデータ自体が異なるため、本処理は意味が無いので、処理対象を移動する。
 ストライプ単位のデータのうち、一部がキャッシュメモリに格納されていない場合は、ディスク装置からキャッシュメモリにデータとパリティを読み出し(ステージング)、処理を行う。
 また、別の方法では、物理ディスクデバイス装置が故障しているかどうかを検出するため、ストライプ単位のデータがクリーンでキャッシュメモリに格納されていてもステージングして処理を行う。
<エラー検出処理>
 図8は、エラー検出処理を示すフローチャートである。
 1つのストライプ単位のチェック処理である。
 冗長度m、データ数nとする。データをDと示し、パリティをPと示す。
 現在の全データDx(x=1~n)からパリティを算出する。パリティP1は、パリティP1用の計算式で算出したパリティであり、パリティP2は、パリティP1用とは異なるパリティP2用の計算式で算出したパリティである。このようにして、全てのパリティP1~Pmを生成する。パリティ計算式とは、例えば、EORなどを用いた所定の計算式である。これを新パリティP1~Pmとする(S10)。以下、新パリティを新P、旧パリティを旧Pと呼ぶことがある。
 ディスク装置からパリティ部分を読み出し、旧Pとし、新Pxと旧Pxが等しいか否かを判定する(S11)。全Pを比較し、新Pxと旧Pxの値が等しいものがなく、全て異なった場合は、S13へ進み、一つでも等しい組み合わせが有った場合は、S14へ進む(S12)。
 S14で新旧パリティPが等しいものが1つでも見つかった場合は、データD全てが正しく、それ以外の旧パリティが異常値であると判断し、新旧のパリティが一致しなかった箇所の旧パリティを新パリティの値によって上書きすることにより更新する(S15)。これでエラー修正処理を終了する。このとき、ユーザまたは本処理の指示元に「エラー箇所は修正完了」を報告してもよい。
 S14で新旧パリティが全て等しい場合、エラー箇所がないため、処理を終了する。このときユーザまたは本処理の指示元に「エラー箇所は無し」を報告してもよい。
 S12で全ての新旧パリティが異なる場合、データ内に異常がある可能性が高いと判断し、エラーデータを特定するための「エラーデータ特定処理」へ進む(S13)。
<エラーデータ特定処理>
 図9は、図8の処理において、新旧パリティが全て異なるという結果であった場合に起動する処理を示すフローチャートである。
 従って、図9の処理が起動されるということは、データのどこかに異常があるか、データは全て正しいのにもかかわらず、旧パリティが全て壊れている、または、何らかの要因により正しく読めない等の場合である。
 図9のエラーデータ特定処理のフローチャートに従って説明する。
 冗長度カウンタをcとする。c=1というのは、1重エラー、即ち、データの1箇所がエラーである仮定して調査を行うことを意味する。
 ストライプ単位に持つパリティの冗長度より1つ少ない個数までのエラーであれば、エラー箇所を特定できる。本実施形態では一例として冗長度が2なので、1重障害の場合のエラー箇所を特定することができ、2重障害以上はエラー箇所を特定できないということになる。
 変数cに初期値1を代入する(S20)。
 データを既存パリティから生成して比較する処理を行う(S21)。本処理の詳細は後述する。S21により同じデータが見つかった場合(S22)は、異常であるデータを修復する(S23)。本処理の詳細は後述する。S22において、同じデータが見つからなかった場合は、カウンタcを1つ進めて(S24)、cが冗長度を越えていないかチェックをし(S25)、越えていなければS21から同じ処理を繰り返す。S22にてエラーデータが見つからないまま、cが冗長度を越えた場合は(S25でNo)、データ特定できる冗長度を越えていると判断できる。その場合は、従来と同じように、バックアップからデータを復元することを指示する(S26)。
<ステップS21の処理の詳細>
 図10は、データを既存パリティから生成して比較する処理を示すフローチャートである。
 まず、変数xに初期値を代入する(S210)。xはストライプ内のデータの番号を示し、xはx番目のデータを他のデータとパリティから生成して調査することを示すカウンタである。
 cは冗長度カウンタであり、図9のフローチャート側でカウントアップしてその値を入力値として受け取り処理をする。
 全パリティの中からパリティを選択する。例えば、冗長度2の場合におけるc=1の場合は、第一パリティと第二パリティが選択される。また、冗長度3の場合におけるc=1の場合は、第一パリティと第二パリティと第三パリティのうち、どれか2つを選択する。例えば、第一パリティと第二パリティでもよいし、第二パリティと第三パリティでもよい。冗長度3の場合におけるc=2の場合は、第一パリティと第二パリティと第三パリティのうち、2ペアのパリティを選択する。例えば、第一パリティと第二パリティのペアと、第一パリティと第三パリティのペアでもよい。
 データDx以外の他のデータと、パリティからDxを生成する(S214)。Dxは2通りの方法で生成され、新規に生成したデータをDx´とDx´´とする。
 Dx´とDx´´が等しい場合(S216)、同じものがあったことを応答して本処理を終了する(S218)。Dx´とDx´´が等しくない場合、他のパリティの組み合わせが残っていれば(S220)、そのパリティを使って新規にDx´とDx´´を生成する処理に戻る(S212へ)。
 全てのパリティの組み合わせを実施し、選択するパリティが残っていない場合は(S220でNo)、対象とするデータを変えるために、変数xに1を加算する(S222)。1を加算した後のxがデータ数nを越えていなければ処理を繰り返し(S224のYes)、越えていれば、互いに同じ値のデータDx´、Dx´´が見つからなかったことを応答し、処理を終了する(S226)。
 図10のステップS216で同じデータが見つかった場合は、図9のS22に戻った後、S23の異常データ修復処理へ進む。
<ステップS23の処理の詳細>
 図11は、異常データ修復処理を示すフローチャートである。
 Dx´とDx´´が等しく、Dxが異常データであると判断されたため、Dxの値をD´(またはD´´でもよい)の値に更新する(S230)。データ部分が全て更新されたら、新データから新パリティをそれぞれ生成し直す。旧パリティが新パリティと異なるものがあれば、旧パリティを新パリティの値に更新する。
 本処理では、(冗長度-1)個までの異常データは対応できる。異常データそれよりも多い場合、エラー数やエラー箇所が判断できないので、従来のようにバックアップしたものからデータを復元することになる。
 図12は、冗長度が2の場合のデータ修復の様子を示す図である。データD1を2通りの方法で生成する。一つは、D1以外の他のデータD2~D6と第一のパリティP(旧)から生成する新データD1´、もう一つはD1以外の他のデータD2~D6と第二のパリティQ(旧)から生成する新データD1´´である。
 新データD1´と新データD1´´とが等しければ、データD2~D6、及び、第一のパリティP、及び、第二のパリティQは正しいと判断できる。そのため、除外していたD1がエラーデータであると判断できる。一方、新データD1´と新データD1´´とが等しくなければ、データD2~D6、及び、第一のパリティP、及び、第二のパリティQの中に、エラーデータがあることが判明する。この場合、データD1は正しいか異常かは判断できない。
 同様にデータD2についても、新データD2´と新データD2´´を作成して比較する。同様の処理をデータD6までに対して行い、一度も2つの新データが等しいということが無ければ、S24へ進む。2つの新データが等しいものが見つかれば、その時点でS23へ進む。
 図13A~Cは、物理デバイスへのデータの格納の様子を示す図である。
 図13Aでは、5個の物理ディスクデバイス34によってRAIDグループ341が構成されている。ストライプは、D1、D2、D3、P、Qからなる。1つのストライプ内のデータD1、D2、D3及びパリティP、Qは同じRAIDグループ341内に存在し、それぞれを互いに異なる物理ディスクへ格納することにより、可用性の向上が図られている。
 一例として、図13Aに示されているようにデータD1とデータD2が異常となった場合を説明する。RAID6により、冗長度2でパリティPとQがそれぞれ物理デバイスに格納されている。異常となったデータD1、D2を除いた残りの正常なデータD3と2つのパリティP、Qとにより、正常なD1とD2を復元することができる。このときD1とD2をそれぞれ別個の式で算出してもよい。または、データD3とパリティP、Qとから正常なD1を算出し、算出した正常なD1とデータD3とパリティP、Qとから正常なD2を算出してもよい。データの復旧方法は、通常のRAID6におけるデータ復旧方法による。
 図13Bでは、8個の物理ディスクデバイスがあり、そのうちの3個の物理ディスクデバイスに格納されたデータD1、D2、D3と、2個の物理ディスクデバイスに格納されたパリティP、Qとが同一のデータ単位のデータとパリティである。それらが同一のストライプに属し、ストライプ内にはデータもパリティも格納されず空けてある3個の物理ディスクデバイスが存在する。
 図13Cに示すようにデータ要素およびパリティが格納されている状態において、左側の2つの物理ディスクデバイスが故障した場合、RAID6のデータ復旧方法により、必要なデータ要素やパリティを復元することができる。復元されたデータは、空けてある物理ディスクデバイスに格納される。
 図13Cには、16個の物理ディスクデバイス34によって仮想プール空間を構成し、仮想プール空間に6D+2PのRAIDグループを構成した例を示している。ここで、同図において、D1_1、D2_1、D3_1、D4_1、D5_1、D6_1、P_1、Q_1のように、「_」の後の数字が共通するものが、同一のデータ単位におけるデータ要素及びパリティであること、すなわち、同一のストライプ列に属することを示す。
 図13Cに示すようにデータ要素及びパリティが格納されている状態において、左側の2つの物理ディスクデバイス34が故障した場合であっても、RAID6のデータ普及方法により、必要なデータ要素やパリティを復元することができる。しかしながら、更にもう一つの物理ディスクデバイス34が故障してしまうと、復元できなくなってしまう可能性のあるデータ要素及び/又はパリティ(ワーニングデータという)が存在する。具体的には、故障している物理ディスクデバイス34に、同一のストライプ列の2つのストライプデータ要素が格納されている場合、そのストライプ列に属するストライプデータ要素が、このような復元できないストライプデータ要素に該当する。
 同図においては、故障している物理ディスクデバイス34に格納されている同一のストライプ列の2つのストライプデータ要素としては、データ要素D2_2及びデータ要素D3_2と、データ要素D4_4及びデータ要素D5_4とがある。以下、ワーニングデータを含むパーセルをワーニングパーセルという。
 そこで、更に他の物理ディスクデバイス34が故障してしまうと復元できなくなるワーニングデータを優先して復元する。例えば、同図に示すデータ要素D3-2や、データ要素D5_4を、別の物理ディスクデバイス34上に優先して復元する。これにより、さらにもう1つの物理ディスクデバイス34が故障したとしても、ワーニングパーセルを高速に復元が可能となるため、データ要素D2_2と同一のストライプ列のデータ要素を適切に復元できる確率が高くなる。この確率は、ストライプ列を分散させるドライブ数が多ければ多いほど高いという特性を持つ。データを物理ディスクデバイス34に格納する方法として、このような格納方法もある。
<起動タイミング>
 エラー検出処理及びエラーデータ特定処理はLU単位で起動され、その起動タイミングとしては以下に示すものを含む様々なバリエーションがある。
 (1)常時実行モード
 エラー検出処理とエラーデータ特定処理を他の処理と非同期で周期的に実行する。具体的には、予め実行時刻や実行間隔などを決めておき、通常のI/O処理のバックグラウンドで実行することが考えられる。
 また、この周期的に処理を実行するのに加えて、I/Oが発生したときにそれに同期して処理を実行することにしてもよい。
 (2)リモート起動
 ユーザが管理装置や端末から実行を指示したタイミングでエラー検出処理とエラーデータ特定処理を実行する。例えば、ネットワーク経由でストレージ装置に接続された管理装置あるいは端末からの指示で処理を実行すればよい。また、他のストレージ装置から受信した指示に従って処理を実行することにしてもよい。
 (3)ドライブコピー後実行モード
 コレクションコピーあるいはダイナミックスペアリングなどのドライブコピーをすると、一部のデータだけその格納位置が変更される。その際にデータ格納位置情報にエラーが起こると、例えば、その後、新しい格納位置からではなく、古い格納位置からデータを読み出してしまうといったことが起こる可能性がある。このように、ドライブコピー実行後はエラーが起こる可能性が比較的高まっている。そこで、そのタイミングでエラー検出処理とエラーデータ特定処理を実行するとよい。
 また、上述した(1)または(3)の起動タイミングでエラー検出処理とエラーデータ特定処理を実行するか否かを設定することができるようになっていてもよい。それを例えばLU単位に設定できてもよい。例えば、バックグラウンド処理による負荷を上げたくない場合には、(1)、(3)のいずれかあるいは両方の起動タイミングでエラー検出処理とエラーデータ特定処理を実施しないように設定してもよい。また、バックグラウンド処理による負荷を上げたくないLUには、(1)、(3)のいずれかあるいは両方の起動タイミングでエラー検出処理とエラーデータ特定処理を実施しないように設定してもよい。
 また、本実施形態では、上述したエラー検出処理にてエラーが見つかったときに、その旨をホスト計算機10へ報告する。エラーが検出され、エラーデータの特定と復元の処理を行っている途中の箇所に対するI/Oを発行しないように、ストレージ装置30より上位のホスト計算機10にて制御することができる。
 また、ストレージ装置30は、上述したエラーが見つかり、エラーデータの特定と復元の処理を行っている途中に、対象箇所に対するI/Oを受けた場合に、そのI/O処理を行わずに、I/Oが行われなかった旨をホスト計算機10に報告してもよい。
 また、エラー復元中のため発行しなかったI/Oまたはエラー復元中のため実行されなかった旨がストレージ装置30から報告されたI/Oを、それを受け付けた順番にスケジュールして待ち合わせておき、復元が終了した後に、そのスケジュールに従ってI/Oを発行することにしてもよい。その場合、I/Oの待ち合わせは、データの更新状態に影響が発生しない範囲、データ更新の遅延が許容できる範囲で行うことにしてもよい。
 また、上述したように、本実施形態によれば、サイレントデータコラプションを発見し、エラー部位を特定でき、自動的に異常データを復元することが可能となる。例えば、データの書き込みが実施された後、次にそのデータが読み出されるまでの時間が長い場合、その間に発生したサイレントデータコラプションを復元し、読み出し時には正しいデータが読み出されるようにすることができるので、特に有効である。
1…計算機システム、10…ホスト計算機、101A…コマンド発行装置、101B…コマンド発行装置、108…ネットワーク、121…ストレージエリアネットワーク、20…管理装置、30…ストレージ装置、31…CPU(コントローラ)、310…ホストアダプタ、31A…CPU、31B…CPU、32…メモリ(キャッシュメモリ)、320…ネットワークアダプタ、33…ディスクインターフェース、33…共有メモリ、330…不揮発性メモリ、34…物理ディスクデバイス、340…電源制御部、341…RAIDグループ、35、35A、35B…HBA、350…メモリ、36、36A、36B…NIC、360…プロセッサ、37…管理用インターフェース、370…ストレージアダプタ、38…バス、380…パリティ生成部、380…共有メモリアダプタ、390…ネットワークアダプタ、40…ストレージ装置、401…データ生成・比較モジュール、402…エラー検出処理モジュール、403…エラーデータ特定処理モジュール、404…異常データ修復モジュール、41A…コントローラボード、41B…コントローラボード、42…接続部、500…ディスクデバイス管理テーブル、501…ディスクドライブユニット
 

Claims (10)

  1.  複数のデータ要素に分割して複数の記憶装置に格納されるデータを管理する制御部を有するストレージ装置であって、
     複数のデータ要素を含むデータに対して、複数の異なる演算方法で予め生成された複数の旧冗長コードが、前記データに対する冗長コードとして前記記憶装置に格納されており、
     前記制御部が、
     前記データに含まれる第1データ要素を除いた前記データの他のデータ要素と前記データの第1演算方法による新冗長コードとで前記第1データ要素を復元した第1復元演算第1データ要素と、前記他のデータ要素と前記データの第2演算方法による新冗長コードとで前記第1データ要素を復元した第2復元演算第1データ要素と、が一致したら、前記第1データ要素が誤っていると判断する特定部と、
     前記特定部にて誤っていると判定された前記記憶装置内の前記第1データ要素を、前記第1復元演算第1データ要素または前記第2復元演算第2データ要素に修正する修復部と、
    を有する、ストレージ装置。
  2.  前記制御部が、
     前記記憶装置に格納された前記データから前記複数の演算方法で新冗長コードを算出し、全ての演算方法で旧冗長コードと該旧冗長コードに対応する新冗長コードとが一致であれば、前記データおよび前記旧冗長コードのいずれも誤っていないと判定し、前記全ての演算方法で旧冗長コードと該旧冗長コードに対応する新冗長コードとが不一致であれば、前記データが誤っていると判定し、一部の演算方法で旧冗長コードと該旧冗長コードに対応する新冗長コードとが不一致であれば、該旧冗長コードが誤っていると判定する検出部を、更に有し、
     前記特定部は、前記検出部にて前記データが誤っていると判定されると、前記データに含まれるどのデータ要素が誤っているかを特定する、
    請求項1に記載のストレージ装置。
  3.  前記検出部は、前記旧冗長コードが誤っていると判定したら、前記記憶装置内の冗長コードを前記新冗長コードに修正する、
    請求項2に記載のストレージ装置。
  4.  前記特定部は、前記第1データ要素として除外するデータ要素の個数を1個から(冗長コードの個数-1)個までの範囲で変更しながら、誤っているデータ要素を探索する、請求項1に記載のストレージ装置。
  5.  前記検出部は、記憶装置間のデータ移動が発生すると、それに応じて処理を実行する、
    請求項2に記載のストレージ装置。
  6.  前記特定部と前記修復部のいずれか一方または両方は、前記ストレージ装置内のメモリに格納したプログラムをプロセッサが実行することにより実現される、請求項1に記載のストレージ装置。
  7.  前記特定部と前記修復部のいずれか一方または両方は、前記ストレージ装置内のハードウェア回路によって構成されている、請求項1に記載のストレージ装置。
     
  8.  複数のデータ要素に分割して複数の記憶装置にデータが格納され、複数のデータ要素を含むデータに対して、複数の異なる演算方法で予め生成された複数の旧冗長コードが、前記データに対する冗長コードとして前記記憶装置に格納されるストレージ装置と、
     前記ストレージ装置にネットワーク経由で接続される外部装置と、を有し、
     前記外部装置が、
     前記データに含まれる第1データ要素を除いた前記データの他のデータ要素と前記データの第1演算方法による新冗長コードとで前記第1データ要素を復元した第1復元演算第1データ要素と、前記他のデータ要素と前記データの第2演算方法による新冗長コードとで前記第1データ要素を復元した第2復元演算第1データ要素と、が一致したら、前記第1データ要素が誤っていると判断する特定部と、
     前記特定部にて誤っていると判定された前記記憶装置内の前記第1データ要素を、前記第1復元演算第1データ要素または前記第2復元演算第2データ要素に修正する修復部と、を有する、ストレージシステム。
  9.  複数のデータ要素に分割して複数の記憶装置に格納するストレージ装置におけるデータ管理方法であって、
     複数のデータ要素を含むデータに対して、複数の異なる演算方法で予め生成された複数の旧冗長コードが、前記データに対する冗長コードとして前記記憶装置に格納されており、
     前記データに含まれる第1データ要素を除いた前記データの他のデータ要素と前記データの第1演算方法による新冗長コードとで前記第1データ要素を復元した第1復元演算第1データ要素と、前記他のデータ要素と前記データの第2演算方法による新冗長コードとで前記第1データ要素を復元した第2復元演算第1データ要素と、が一致したら、前記第1データ要素が誤っていると判断し、
     誤っていると判定された前記記憶装置内の前記第1データ要素を、前記第1復元演算第1データ要素または前記第2復元演算第2データ要素に修正する、
    データ管理方法。
  10.  前記記憶装置に格納された前記データから前記複数の演算方法で新冗長コードを算出し、
     全ての演算方法で旧冗長コードと該旧冗長コードに対応する新冗長コードとが一致であれば、前記データおよび前記旧冗長コードのいずれも誤っていないと判定し、前記全ての演算方法で旧冗長コードと該旧冗長コードに対応する新冗長コードとが不一致であれば、前記データが誤っていると判定し、一部の演算方法で旧冗長コードと該旧冗長コードに対応する新冗長コードとが不一致であれば、該旧冗長コードが誤っていると判定し、
     前記データが誤っていると判定されると、前記データに含まれるどのデータ要素が誤っているかを特定する、
    請求項9に記載のデータ管理方法。
     
PCT/JP2013/076366 2013-09-27 2013-09-27 ストレージ装置、ストレージシステム、およびデータ管理方法 WO2015045122A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2013/076366 WO2015045122A1 (ja) 2013-09-27 2013-09-27 ストレージ装置、ストレージシステム、およびデータ管理方法
US14/373,918 US9256490B2 (en) 2013-09-27 2013-09-27 Storage apparatus, storage system, and data management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/076366 WO2015045122A1 (ja) 2013-09-27 2013-09-27 ストレージ装置、ストレージシステム、およびデータ管理方法

Publications (1)

Publication Number Publication Date
WO2015045122A1 true WO2015045122A1 (ja) 2015-04-02

Family

ID=52742324

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/076366 WO2015045122A1 (ja) 2013-09-27 2013-09-27 ストレージ装置、ストレージシステム、およびデータ管理方法

Country Status (2)

Country Link
US (1) US9256490B2 (ja)
WO (1) WO2015045122A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10630690B2 (en) * 2014-10-31 2020-04-21 Hewlett Packard Enterprise Development Lp Group zoning and access control over a network
JP6455168B2 (ja) * 2015-01-16 2019-01-23 株式会社デンソー メモリ装置システム
CN111124738B (zh) * 2018-10-31 2023-08-18 伊姆西Ip控股有限责任公司 用于独立冗余磁盘阵列的数据管理方法、设备和计算机程序产品
RU2750645C1 (ru) * 2020-12-30 2021-06-30 Общество с ограниченной ответственностью "Аркод Технологии" Способ хранения данных в избыточном массиве независимых дисков с повышенной отказоустойчивостью
JP2023061253A (ja) * 2021-10-19 2023-05-01 株式会社日立製作所 ストレージシステム、データコピー制御方法、及びデータコピー制御プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09305328A (ja) * 1996-05-13 1997-11-28 Fujitsu Ltd ディスクアレイ装置
JP2008158724A (ja) * 2006-12-22 2008-07-10 Fujitsu Ltd ディスクアレイ装置のステージング方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006079380A (ja) * 2004-09-10 2006-03-23 Hitachi Ltd ディスクアレイ装置
CN102124527A (zh) * 2008-05-16 2011-07-13 弗森-艾奥公司 用于检测和替代失效的数据存储器的装置、系统和方法
JP2010033287A (ja) 2008-07-28 2010-02-12 Hitachi Ltd ストレージサブシステム及びこれを用いたデータ検証方法
US8307258B2 (en) * 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09305328A (ja) * 1996-05-13 1997-11-28 Fujitsu Ltd ディスクアレイ装置
JP2008158724A (ja) * 2006-12-22 2008-07-10 Fujitsu Ltd ディスクアレイ装置のステージング方法

Also Published As

Publication number Publication date
US9256490B2 (en) 2016-02-09
US20150254128A1 (en) 2015-09-10

Similar Documents

Publication Publication Date Title
US10191676B2 (en) Scalable storage protection
US5379417A (en) System and method for ensuring write data integrity in a redundant array data storage system
US7062704B2 (en) Storage array employing scrubbing operations using multiple levels of checksums
CN102483686B (zh) 数据存储系统和用于操作数据存储系统的方法
US7017107B2 (en) Storage array employing scrubbing operations at the disk-controller level
US8839028B1 (en) Managing data availability in storage systems
US8392752B2 (en) Selective recovery and aggregation technique for two storage apparatuses of a raid
JP5768587B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
US9891993B2 (en) Managing raid parity stripe contention
JP5052193B2 (ja) 記憶制御装置および記憶制御方法
US8930750B2 (en) Systems and methods for preventing data loss
JP2010033287A (ja) ストレージサブシステム及びこれを用いたデータ検証方法
US8438429B2 (en) Storage control apparatus and storage control method
US9081697B2 (en) Storage control apparatus and storage control method
US9104604B2 (en) Preventing unrecoverable errors during a disk regeneration in a disk array
WO2015045122A1 (ja) ストレージ装置、ストレージシステム、およびデータ管理方法
US20130198585A1 (en) Method of, and apparatus for, improved data integrity
US10324782B1 (en) Hiccup management in a storage array
US8015437B2 (en) Restoring data to a distributed storage node
US8370688B2 (en) Identifying a storage device as faulty for a first storage volume without identifying the storage device as faulty for a second storage volume
US20170371782A1 (en) Virtual storage
JPH09269871A (ja) ディスクアレイ装置におけるデータ再冗長化方式
JP5891890B2 (ja) ストレージシステム、ストレージ装置およびデータ復元方法
US7480820B2 (en) Disk array apparatus, method for controlling the same, and program
US20140173337A1 (en) Storage apparatus, control method, and control program

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14373918

Country of ref document: US

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

Ref document number: 13894175

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: 13894175

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP