WO2015072028A1 - ストレージ制御装置 - Google Patents

ストレージ制御装置 Download PDF

Info

Publication number
WO2015072028A1
WO2015072028A1 PCT/JP2013/081003 JP2013081003W WO2015072028A1 WO 2015072028 A1 WO2015072028 A1 WO 2015072028A1 JP 2013081003 W JP2013081003 W JP 2013081003W WO 2015072028 A1 WO2015072028 A1 WO 2015072028A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
transfer path
cpu
target
error
Prior art date
Application number
PCT/JP2013/081003
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 US14/377,602 priority Critical patent/US9495235B2/en
Priority to PCT/JP2013/081003 priority patent/WO2015072028A1/ja
Publication of WO2015072028A1 publication Critical patent/WO2015072028A1/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Definitions

  • the present invention relates to a technology for identifying a physical device in which a failure has occurred in a storage system.
  • the storage control device performs data write processing or read processing on the physical storage device in response to a write request or read request transmitted from the host computer.
  • the storage control device may have a data guarantee function in order to ensure the reliability of the storage system.
  • a data guarantee function a technique for generating a guarantee code for detecting a data error of target data, adding a guarantee code to the target data in data transfer, and transferring the data as write data or read data is known.
  • the guarantee code for example, ECC (error collecting code) is known (Patent Document 1).
  • DIF Data Integrity Field
  • T10 which is a storage interface technical committee, is also known as a standard format for guarantee codes.
  • a storage control apparatus is connected to one or more storage devices and one or more host computers, and is connected to one of the one or more host computers.
  • an I / O Input / Output
  • an I / O that performs I / O of I / O target data in accordance with the I / O request with respect to an I / O destination storage device among one or more storage devices Execute the process.
  • the storage control apparatus has a plurality of physical devices included in a plurality of transfer paths connected to one or more host computers.
  • Multiple physical devices are multiple front-end interface devices (FE I / F) connected to one or more host computers and multiple back-end interface devices (BE I / F) connected to one or more storage devices. And one or more memories and one or more processors.
  • Each transfer path is one of a plurality of FE I / Fs, one of a plurality of BE I / Fs, one of one or more memories. At least one memory and at least one of the one or more processors.
  • the I / O target data is transferred through the target transfer path that is the transfer path including the FE I / F that has received the I / O request among the plurality of transfer paths.
  • the processor in the target transfer path generates path information representing the physical device included in the target transfer path, and sends a transfer instruction including the path information to at least one of the FE I / F and BE I / F in the target transfer path. Send to.
  • At least one of the FE I / F and BE I / F on the target transfer path is a code that detects a data error in response to the transfer instruction, and an I / O guarantee code that includes the path information in the transfer instruction. Assign to the target data.
  • the physical device in which the failure has occurred can be easily identified.
  • the structure of the computer system of one Example is shown.
  • An error count table 200 is shown.
  • a threshold table 300 is shown.
  • a failure device table 400 is shown.
  • An example of the DIF format 500 is shown.
  • the DIF format in which the path information 610 is incorporated is shown.
  • An example of route information 610 is shown.
  • the flowchart of a 1st write process is shown.
  • An example of transfer instruction # 1 is shown.
  • An example of transfer instruction # 2 is shown.
  • the flow of write data in the first write process is shown. It is a flowchart of the error detection process at the time of a write process. It is a flowchart of a failure device specific post-process.
  • An example of the displayed fault device list information is shown.
  • transfer instruction # 4 An example of transfer instruction # 5 is shown.
  • the flow of write data in the second write process is shown.
  • the flowchart of a 1st read process is shown.
  • An example of transfer instruction # 7 is shown.
  • An example of transfer instruction # 8 is shown.
  • the flow of read data in the first read process is shown. It is a flowchart of the error detection process by the SAS chip 14 at the time of a read process. 12 is a flowchart of error detection processing by the FC chip 11 during read processing.
  • the flowchart of a 2nd read process is shown.
  • An example of transfer instruction # 10 An example of transfer instruction # 10 is shown.
  • the flow of read data in the second read process is shown.
  • the information is described using an expression such as “aaa table”, but the information may be expressed using a data structure other than a table. Therefore, the “aaa table” or the like may be referred to as “aaa information” to indicate that it does not depend on the data structure.
  • program is used as the subject.
  • description of processing using the program as the subject. May be described with the processor as the subject.
  • part or all of the processing performed by the program may be realized by dedicated hardware.
  • the program may be installed in the computer by a program distribution server or a computer-readable storage medium.
  • FIG. 1 shows the configuration of the computer system of this embodiment.
  • the computer system includes a plurality of host computers (hereinafter simply referred to as hosts) 2 and a storage system 100.
  • the storage system 100 includes a plurality of JBODs (Just a Bunch Of Disks) 3 and a storage control device 1.
  • the plurality of hosts 2 are respectively connected to the storage control device 1 via, for example, a SAN (Storage Area Network).
  • the plurality of JBODs 3 are connected to the storage control device 1.
  • a plurality of JBOD columns are connected to the storage control device 1.
  • the number of hosts 2 and JBODs 3 in the computer system may be one.
  • Each of the plurality of JBODs 3 includes a plurality of drives 31 and a plurality of expanders 32. There may be one drive 31 and expander 32 in each JBOD 3.
  • the JBOD 3 is connected to the storage control device 1 and other JBOD 3 via the expander 32.
  • a drive 31 and an expander 32 are connected inside the JBOD 3.
  • the drive 31 is a physical storage device.
  • the drive 31 is a SAS (Serial Attached Small Computer System Interface) -HDD (Hard Disk Drive), but other physical storage devices, for example, SATA (Serial AdvancedChanging A hard disk drive such as an HDD or a semiconductor storage device such as an SSD (Solid State Drive) may be used.
  • a RAID (Redundant Arrays of Inexpensive Disks) group may be configured by a plurality of drives 31 in one JBOD3 or a plurality of drives 31 in a plurality of JBOD3. Based on one drive 31 or a plurality of drives 31 constituting one RAID group, one or a plurality of LUs (Logical Units) are provided to the host 2.
  • the LU provided to the host 2 may be a virtual LU (for example, an LU according to Thin Provisioning) instead of the LU based on the drive 31.
  • the storage control device 1 is made redundant by two independent storage controllers 10.
  • each storage controller 10 may be referred to as a cluster 10.
  • Each cluster 10 has the same configuration. Therefore, only the configuration of cluster # 1 will be described below.
  • the two clusters 10 may have different configurations.
  • the storage control device 1 is made redundant by the two clusters 10, but is not limited thereto.
  • the storage control device 1 may be made redundant by three or more clusters 10 or may be composed of only one cluster 10.
  • the cluster 10 has a plurality of CPUs (Central Processing Units) 12, a plurality of memories 13, a plurality of FC (Fibre Channel) protocol chips 11, and a plurality of SAS protocol chips 14. Each part of the cluster 10 is connected to each other via a bus.
  • the memory 13 stores a program and data for controlling the storage system 100.
  • the CPU 12 controls the storage system 100 according to a program stored in the memory 13.
  • the FC protocol chip 11 performs communication (front end) with the host 2.
  • the SAS protocol chip 14 is connected to the expander 32 of JBOD3, and performs communication (back-end) with JBOD3.
  • the SAS protocol chip 14 may be referred to as the SAS chip 14.
  • the FC protocol chip 11 may be referred to as the FC chip 11.
  • the FC chip 11 is used as the front-end communication interface and the SAS chip 14 is used as the back-end communication interface.
  • the present invention is not limited to this.
  • the clusters 10 are connected so that they can communicate with each other.
  • CPU # 1A of cluster # 1 is connected to CPU # 2A of cluster # 2
  • CPU # 1B of cluster # 1 is connected to CPU # 2B of cluster # 2.
  • any of the drives 31 can be accessed from both the clusters # 1 and # 2.
  • the drive 31 that can be accessed from the SAS chip # 1A via one or more expanders 32 can also be accessed from the SAS # 2A via another one or more expanders 32.
  • the memory 13 of each cluster 10 may store data including the tables shown in FIGS. 2 to 4, and the data in the memories 13 of the plurality of clusters 10 may be synchronized. For example, when a table is created or updated in the memory 13 of one cluster 10, the same table may be created or updated in the memory 13 of the other cluster 10.
  • FIG. 2 shows an error count table 200.
  • the error count table 200 is a table for managing the error count of each physical device. Specifically, for example, in the error count table 200, when a data error occurs in write data or read data during a write process or a read process, errors of physical devices existing in the data transfer path of those data The number of times is recorded.
  • the error count table 200 is stored in the memory 13 of each cluster 10.
  • the error count table 200 has an entry for each physical device in the storage system 100. Each entry includes a type 201 indicating the type of the physical device, an ID 202 indicating the ID of the physical device, and an error count 203 indicating the number of times the physical device error has occurred.
  • FIG. 3 shows the threshold value table 300.
  • the threshold table 300 is a table for managing the threshold value of the number of errors of each physical device. Specifically, for example, the threshold value table 300 is set with a threshold value for the number of errors, which is a basis for determining the failure of each physical device.
  • the threshold table 300 is stored in the memory 13 of each cluster 10.
  • the threshold table 300 has an entry for each physical device in the storage system 100. Each entry has a type 301 indicating the type of the physical device, an ID 302 indicating the ID of the physical device, and a threshold 303 indicating the threshold of the number of errors of the physical device.
  • FIG. 4 shows the failure device table 400.
  • the fault device table 400 is a table for managing a faulty physical device. Specifically, for example, the failure device table 400 records identification information indicating whether each physical device is a failure device. The failure device table 400 is stored in the memory 13 of each cluster 10. The failure device table 400 has an entry for each physical device in the storage system 100. Each entry has a type 401 indicating the type of the physical device, an ID 402 indicating the ID of the physical device, and an exchange part 403 indicating the name of the physical device.
  • transfer target data such as write data (write target data) or read data (read target data) during data transfer such as write processing or read processing.
  • the transfer target data is block data
  • DIF data as a guarantee code including path information at the time of data transfer is added to the block data.
  • the physical device can be detected from the path information in the DIF data.
  • write data or read data is handled in units of blocks, but the present invention is not limited to this.
  • FIG. 5 shows an example of the DIF format 500.
  • the DIF format 500 is obtained by adding a 8-byte (Byte 512 to 519) DIF code 503 to a 512-byte (Byte 0 to 511) block data 501.
  • the DIF code 503 includes, for example, a 2-byte (Byte 512, 513) DIF CRC (Cyclic Redundancy Check), a 2-byte (Byte 514, 515) Logical Block Application Tag, and a 2-byte (Byte 516, 517) LogicBlog LogicReg. It consists of.
  • DIF CRC is a code for detecting a bit error in data, and stores a CRC calculation result for 512-byte block data 501.
  • the Logical Block Application Tag and the Logical Block Reference Tag can be set to any value by the user.
  • the transfer order of the block data 501 when one or more block data 501 is transferred is stored in the Logical Block Application Tag.
  • route information 610 is stored in a part or all of the Logical Block Reference Tag.
  • FIG. 7 shows an example of the route information 610.
  • the path information 610 is created by the CPU 12 based on a write (read) request and write (read) data during data transfer.
  • the path information 610 is information indicating whether each physical device in the storage control device 1 is included in the transfer path of the transfer target data. Specifically, for example, each bit configuring the path information 610 is associated with a physical device in the storage control apparatus 1, and the bit corresponding to the physical device included in the transfer path is “1”. Bits corresponding to physical devices not included in the transfer path are set to “0”.
  • the CPU 12 may create or update the route information 610 at each stage of data transfer. At this time, the CPU 12 may calculate some physical devices included in the transfer path from the write (read) request, write (read) data, etc. in each stage, or all physical devices included in the transfer path. May be calculated.
  • FIG. 8 shows a flowchart of the first write process.
  • the first write process is a process until write data based on a write request from the host 2 is written to the drive 31 through one of the two clusters 10.
  • the transfer path (data transfer path from the host 2 to the drive 31) in the first write process of this embodiment is FC chip # 1A, CPU # 1A, memory # 1A, CPU # 1B, and Although the transfer path passes through the SAS chip # 1A, the present invention is not limited to this.
  • step S801 the host 2 sends a write request (Write Request) (WR) specifying the LUN (Logical Unit Number) and LBA (Logical Block Address) of the write destination LU to the storage system 100.
  • FC chip # 1A receives the write request.
  • step S802 the FC chip # 1A calculates the transfer destination CPU # 1A based on the write request (WR) from the host 2. Then, the FC chip # 1A transfers a write request to the CPU # 1A. CPU # 1A receives the write request.
  • CPU # 1A creates path information 610 based on the received write request (WR). Specifically, for example, the CPU # 1A calculates the memory # 1A of the storage destination of the write data accompanying the write request from the write request. The CPU # 1A corresponds to the bit value corresponding to the FC chip # 1A that is the transmission source of the write request, the bit value corresponding to itself (CPU # 1A), and the memory # 1A in the path information 610. Each bit value is updated to “1”.
  • step S804 the CPU # 1A creates a data transfer instruction (hereinafter, transfer instruction) # 1, and transmits the transfer instruction # 1 to the FC chip # 1A.
  • the FC chip # 1A receives the transfer instruction # 1.
  • Route information 610 is embedded in the transfer instruction # 1.
  • An example of the transfer instruction # 1 is shown in FIG. 9a.
  • Transfer instruction # 1 is a command for instructing transfer of write data based on the write request received in S802. Specifically, for example, the transfer instruction # 1 stores a write instruction command, a write data transfer source address, a write data transfer destination address, a write data transfer length, and a DIF code 503. A part or all of is added. In the added DIF code 503, the path information 610 created in S803 is embedded.
  • the FC chip # 1A temporarily stores the transfer instruction # 1 in its own memory (not shown).
  • step S805 the FC chip # 1A transmits a data request (Data Request) (DR) of write data to the host 2 in response to the transfer instruction # 1.
  • Host 2 receives the data request.
  • step S806 the host 2 transmits write data (write data # 1) based on the data request (DR) to the FC chip # 1A.
  • the FC chip # 1A receives the write data # 1.
  • Write data # 1 transmitted from the host 2 is data of only the block data 501.
  • step S807 the FC chip # 1A updates the write data.
  • the FC chip # 1A creates write data # 2 from the write data # 1.
  • the write data # 2 is data in which the DIF code 503 is added to the write data # 1 based on the DIF format 500.
  • the DIF code 503 is, for example, the DIF code 503 added to the transfer instruction # 1 received in S804.
  • step S808 the FC chip # 1A transmits write data # 2 to the CPU # 1A based on the calculation result from the write request in S802.
  • CPU # 1A receives write data # 2.
  • step S809 the CPU # 1A stores the write data # 2 in the memory # 1A based on the calculation result from the write request in S802.
  • CPU # 1A updates path information 610 in write data # 2. Specifically, for example, the CPU # 1A updates the value of the bit corresponding to the CPU # 1B to “1” in the path information 610.
  • the CPU # 1A is the CPU 12 that receives a write request and write data from the host 2 via the FC chip 11, and the CPU # 1B sends the write data to the drive 31 via the SAS chip 13. It is defined as a CPU 12 for writing. Therefore, the CPU # 1A updates the value of the bit corresponding to the CPU # 1B of the route information 610 to “1”.
  • the roles of the CPUs # 1A and # 1B may be defined in any way, and one CPU 12 may play all the roles.
  • step S811 CPU # 1A transmits the route information 610 updated in S810 to CPU # 1B.
  • the CPU # 1B receives the route information 610.
  • step S812 the CPU # 1A transfers the write request (WR) received in S802 to the CPU # 1B.
  • CPU # 1B receives the write request.
  • step S813 the CPU # 1B updates the route information 610 received in S811. Specifically, for example, based on the write request, the CPU # 1B calculates the SAS chip # 1A that is the transmission destination of the write data and the physical storage area of the drive 31 that stores the write data. Then, the CPU # 1B updates the value of the bit corresponding to the SAS chip # 1A in the path information 610 to “1”.
  • step S814 CPU # 1B creates transfer instruction # 2, and transmits the transfer instruction # 2 to SAS chip # 1A.
  • the SAS chip # 1A receives the transfer instruction # 2.
  • the transfer instruction # 2 is a command for instructing transfer of write data based on the write request (WR) received in S812.
  • An example of the transfer instruction # 2 is shown in FIG. 9b.
  • a command for instructing write of write data a write data transfer source address, a write data transfer destination address, a write data transfer address
  • the transfer length is stored and a DIF code 503 is added.
  • the route information 610 updated in S813 is embedded in a part of the DIF code 503 of the transfer instruction # 2.
  • the SAS chip # 1A temporarily stores the transfer instruction # 2 in its own memory (not shown).
  • step S815 the SAS chip # 1A transmits a data request DR for write data to the CPU # 1B in response to the transfer instruction # 2.
  • CPU # 1B receives the data request.
  • step S816 the CPU # 1B acquires the write data # 2 from the memory # 1A based on the data request (DR) in S815.
  • step S817 the CPU # 1B transmits the write data # 2 to the SAS chip # 1A that is the transmission source of the data request (DR).
  • the SAS chip # 2 receives the write data # 2.
  • step S818 the SAS chip # 1A checks an error in the block data 501 in the write data # 2 based on the DIF CRC in the received write data # 2. At this time, if an error in the block data 501 is detected, the SAS chip # 1A notifies the CPU # 1A (and / or # 1B) of the error. Note that the error notification may be stored in the memory 13.
  • the SAS chip # 1A updates the write data.
  • the SAS chip # 1A creates write data # 3 from the write data # 2.
  • the write data # 3 is data obtained by updating the DIF code 503 added to the write data # 2.
  • the SAS chip # 1A updates the path information 610 by updating the value of the bit corresponding to itself (SAS chip # 1A) in the path information 610 of the write data # 2 to “1”.
  • step S820 the SAS chip # 1A transmits the write data # 3 to the data storage destination drive 31 (hereinafter, “target drive” in the description of FIG. 8).
  • the target drive 31 receives the write data # 3.
  • step S821 the target drive 31 stores the write data # 3 in its physical storage area.
  • the drive controller (not shown) of the target drive 31 may perform an error check on the block data 501 in the write data # 3 based on the DIF CRC.
  • the DIF code 503 including the DIF CRC is added to the write data received from the host 2 (in this embodiment, the write data of only the block data 501 described as the write data # 1), and the write data and The DIF code 503 added thereto flows through the transfer path in the storage system 1.
  • the path information 610 that is information on the transfer path is embedded in the DIF code 503.
  • the transfer path of the write data is specified from the path information 610 in the DIF code 503.
  • Each physical device included in the transfer path is a candidate for an error cause.
  • the physical device included in the transfer path may include not only the physical device included in the storage control device 1 but also the drive 31. For this reason, the storage control device 1 can detect not only an internal failure but also a failure of the drive 31.
  • the transfer instruction including the path information 610 is created by the CPU 12, and the addition of the DIF code 503 including the path information 610 to the block data 501 and the error check of the block data 501 are performed by front-end or back-end communication.
  • This is performed by the FC chip 11 or the SAS chip 13 as an interface.
  • the FC chip 11 or the SAS chip 13 performs the addition of the DIF code 503 including the path information 610 to the block data and the data error check, so that the load on the CPU 12 can be reduced.
  • the drive 31 stores write data # 3 including the DIF code 503 including the path information 610.
  • Write data # 3 can identify all physical devices included in the transfer path during the first write process. For this reason, when reading the data (write data # 3), it is possible to specify all the physical devices included in the transfer path during the write process.
  • two CPUs 12 in one cluster 10 are used in data transfer based on a write request. Specifically, a CPU # 1A that receives write data from the host 2 via the FC chip # 1A and a CPU # 1B that writes the write data to the drive 31 via the SAS chip # 1A are used.
  • parallel processing can be performed as described above, and rapid processing can be performed.
  • the other CPU 12 can continue the processing, so that redundancy can be maintained and the CPU 12 with the failure can be identified.
  • FIG. 11 is a flowchart of error detection processing during write processing.
  • the error detection process when an error is detected in the block data 501 included in the write data in S818 of the first write process and the fact that the error has been detected is notified to the CPU 12 by the SAS chip 14, the notification destination is notified.
  • the process is executed by the CPU 12 or the CPU 12 requested to process by the CPU 12.
  • This process is a process for detecting a physical device existing in the transfer path of write data having an error in the block data 501.
  • step S1101 the CPU 12 receives an error notification from the SAS chip 13 that detected the error.
  • the SAS chip 13 stores an error notification in the memory 13 (see S818), and the CPU 12 acquires the error notification from the memory 13.
  • the memory 13 in which the error notification is stored may be either the memory # 1A or # 1B.
  • step S1103 the CPU 12 updates the error count table 200. Specifically, for example, the CPU 12 increases the error count 203 in the error count table 200 by one for the error notification source SAS chip 13 and itself (CPU 12).
  • step S1105 the CPU 12 specifies a write request corresponding to the write data in which an error is detected. Specifically, for example, the CPU 12 specifies a write request based on the information included in the error notification acquired in S1101.
  • step S1107 the CPU 12 specifies the memory 13 in which the write data (write data # 2 in the example of FIG. 8) is stored based on the write request specified in S1105. Specifically, for example, the CPU 12 calculates the address of the memory 13 that stores the write data from the write request, and specifies the memory 13 based on the calculation result.
  • step S1113 the CPU 12 acquires the path information 610 of the specified write data from the memory 13. Specifically, for example, the CPU 12 acquires the path information 610 attached to the write data identified in S1105 stored in the memory 13 identified in S1107.
  • step S1115 the CPU 12 updates the error count table 200. Specifically, for example, the CPU 12 sets one error count 203 in the error count table 200 for all the physical devices whose bits are 1 in the path information (path information attached to the write data) 610 acquired in S1113. increase.
  • step S1117 the CPU 12 detects a faulty device. Specifically, for example, the CPU 12 detects the physical device type 201 (301) and ID 202 (302) of which the error count 203 exceeds the threshold based on the threshold table 300 and the error count table 200.
  • step S1119 the CPU 12 determines whether a faulty device is detected in step S1117. If the result of the determination is true (Yes in S1119), the CPU 12 advances the process to step S1120, executes the post-failure device identification process, and ends the process. On the other hand, if the determination result is false (No in S1119), the CPU 12 ends the process.
  • the error count 203 of the error count table 200 is increased for all physical devices existing in the write data transfer path where the data error is detected. Thereby, the number of errors for each physical device can be grasped. Then, based on the error count table 200 and the threshold table 300, a physical device in which the error count 203 exceeds a preset threshold 303 is detected. As a result, it is possible to identify not all the physical devices existing in the transfer path of the write data in which the error is detected but the physical device having a high probability of detecting the error, that is, a physical device that is likely to be a failed device. it can.
  • the faulty device is detected based on the threshold value table 300 and the error count table 200 in S1117, but the present invention is not limited to this.
  • the CPU 12 may calculate an average value or a median value of the number of errors of all the physical devices, and detect a physical device in which the number of errors exceeds the average value or the median value as a faulty device.
  • FIG. 12 is a flowchart of post-failure device identification processing.
  • the failed device identification post-process is executed in S1120 of the error detection process and is a process of isolating the failed device from the storage system 100.
  • the CPU 12 isolates the failed device from the storage system 100. Specifically, the CPU 12 performs control so that a faulty device (a physical device in which a fault is detected in the error detection process) is not included in the transfer path in the subsequent data transfer process. Specifically, for example, the CPU 12 refers to the failure device table 400 and identifies the replacement part 403 from the physical device type 401 and ID 402 detected in the error detection process. Then, by setting the state of the identified physical device (exchange part 403) as a failure, the physical device is not included in the transfer path thereafter. For example, when CPU # 1A becomes a faulty device, CPU # 1A is not included in the transfer path, and CPU # 1B may be responsible for the function of CPU # 1A.
  • a faulty device a physical device in which a fault is detected in the error detection process
  • the CPU 12 notifies the user of the host 2 (or an administrator who uses a management computer (not shown) of the storage system 100) of the failed device.
  • the CPU 12 refers to the failed device table 400, generates information for identifying the failed device in the storage system 100, and transmits the information to be displayed on the host 2 (or a management computer not shown).
  • the information is, for example, a list of devices indicating all physical devices in the storage system 100 and their states.
  • An example of the displayed device list is shown in FIG. According to the device list, the state of FC chip # 2A (FC 2A), which is a faulty device, is “abnormal”.
  • the failed device can be isolated from the storage system 100 and the user can be notified of the failed device.
  • FIG. 17 shows a flowchart of the first read process.
  • the transfer path in the first read process of this embodiment is the FC chip # 1A, CPU # 1A, memory # 1B, CPU # of cluster # 1.
  • the transfer path passes through 1B and SAS chip # 1B, but is not limited thereto.
  • step S1701 the host 2 sends a read request (RR) specifying the LUN and LBA of the read destination LU to the storage system 100.
  • FC chip # 1A receives the read request.
  • step S1702 the FC chip # 1A calculates the transfer destination CPU # 1B based on the received read request. Then, the FC chip # 1A transfers the read request to the CPU # 1B. CPU # 1B receives the read request.
  • CPU # 1B creates path information 610 based on the received read request. Specifically, for example, the CPU # 1 B, from the read request, the read data storage destination drive (hereinafter “target drive” in the description of FIG. 17) 31 and the SAS chip 14 for accessing the target drive 31. And the address of a memory 12 (hereinafter, “target memory” in the description of FIG. 17) that temporarily stores read data read from the target drive 31. Then, the CPU # 1B sets the bit value corresponding to the physical device (that is, the SAS chip # 1B, the CPU # 1B, and the memory # 1B) belonging to the path from the target drive 31 to the target memory 12 in the path information 610. Update to “1” respectively.
  • the physical device that is, the SAS chip # 1B, the CPU # 1B, and the memory # 1B
  • step S1704 the CPU # 1B creates a transfer instruction # 7 and transmits the transfer instruction # 7 to the SAS chip # 1A.
  • the SAS chip # 1A receives the transfer instruction # 7.
  • the transfer instruction # 7 is a command for instructing transfer of read data based on the read request received in S1702.
  • An example of the transfer instruction # 7 is shown in FIG. 18a.
  • the transfer instruction # 7 stores a command for instructing reading, a read data transfer source address, a read data transfer destination address, a read data transfer length, and a DIF code 503. Is added. In part of the added DIF code 503, the route information 610 created in S1703 is embedded.
  • the FC chip # 1A temporarily stores the transfer instruction # 1 in its own memory (not shown).
  • step S1705 the SAS chip # 1B transmits a data request (DR) of read data to the target drive 31 in response to the transfer instruction # 7.
  • the target drive 31 receives the data request.
  • the target drive 31 transmits read data (read data # 1) based on the data request to the SAS chip # 1B.
  • the SAS chip # 1B receives the read data # 1.
  • the read data # 1 is stored in the physical storage area of the target drive 31 with the DIF code 503 in which the path information 610 is embedded added to the block data 501.
  • the read data # 1 information indicating all physical devices included in the transfer path at the time of write processing is stored in the path information 610 (for example, the read data # 1 includes the first data This is the same data as the write data # 3 in the write process No. 1).
  • step S1707 the SAS chip # 1B checks an error in the block data 501 in the read data # 1 based on the DIF CRC in the received read data # 1. If an error in the block data 501 is detected, the SAS chip # 1B notifies the CPU 12 of the error.
  • the CPU 12 that is notified of the error may be any one of the CPUs # 1A and # 1B. Further, the error notification may be stored in the memory 13.
  • the SAS chip # 1B updates the read data # 1.
  • the SAS chip # 1B creates read data # 2 from the read data # 1.
  • the read data # 2 is data obtained by updating the path information 610 of the DIF code 503 added to the read data # 1.
  • the path information 610 in the read data # 2 includes physical devices (SAS chip # 1A, CPU # 1A, memory # 1A, CPU # 1B, and the like included in the path information 610 of the read data # 1.
  • the value of each bit to be set is “1”.
  • step S1709 the SAS chip # 1B transmits the read data # 2 to the CPU # 1B based on the path information 610 included in the read data # 2.
  • CPU # 1B receives read data # 2.
  • step S1710 CPU # 1B stores read data # 2 in memory # 1B based on path information 610 included in read data # 2.
  • CPU # 1B updates route information 610. Specifically, for example, the CPU # 1B updates the value of the bit corresponding to the CPU # 1A to “1” in the path information 610.
  • the CPU # 1B is the CPU 12 that reads the read data from the drive 31 to the memory # 1B via the SAS chip 13, and the CPU # 1A is from the memory # 1B.
  • the CPU 12 reads the read data and transmits it to the host 2 via the FC chip 11. Therefore, the CPU # 1B updates the value of the bit corresponding to the CPU # 1A of the path information 610 to “1”.
  • the roles of the CPUs # 1A and # 1B may be defined in any way, and one CPU 12 may play all the roles.
  • step S1712 CPU # 1B transmits the route information 610 updated in S1711 to CPU # 1A.
  • CPU # 1A receives the route information 610.
  • step S1713 CPU # 1B transfers the read request (RR) received in S1702 to CPU # 1A.
  • CPU # 1A receives the read request.
  • step S1714 CPU # 1A creates transfer instruction # 8 and transmits the transfer instruction # 8 to FC chip # 1A.
  • the FC chip # 1A receives the transfer instruction # 8.
  • the transfer instruction # 8 is a command for instructing transfer of read data based on the read request (RR) received in S1713.
  • An example of the transfer instruction # 8 is shown in FIG.
  • the transfer instruction # 8 does not include the DIF code 503 including the path information 610, and includes only a command instructing reading, the address of the transfer source and transfer destination of the read data, and the transfer length.
  • step S1715 the FC chip # 1A transmits a data request (DR) of read data to the CPU # 1A in response to the transfer instruction # 8.
  • CPU # 1A receives the data request.
  • step S1716 the CPU # 1A acquires the read data # 2 from the memory # 1A based on the data request (DR).
  • step S1717 the CPU # 1A transmits the read data # 2 to the FC chip # 1A that is the transmission source of the data request (DR).
  • the FC chip # 1A receives the read data # 2.
  • step S1718 the FC chip # 1A checks the error of the block data 501 in the read data # 2 based on the DIF CRC in the received read data # 2. At this time, if an error in the block data 501 is detected, the FC chip # 1A notifies the CPU 12 of the error.
  • the CPU 12 that is notified of the error may be any one of the CPUs # 1A and # 1B. Further, the error notification may be stored in the memory 13.
  • step S1719 the FC chip # 1A updates the read data.
  • the FC chip # 1A creates the read data # 3 from the read data # 2.
  • the read data # 3 is data obtained by deleting the DIF code 503 from the read data # 2 (that is, data of only the block data 501).
  • step S1720 the SAS chip # 1A transmits the read data # 3 to the host 2.
  • the DIF code 503 including the DIF CRC is added to the block data 501 in the read data transferred in the storage system 1.
  • path information 610 which is information on a transfer path, is embedded in the DIF code 503.
  • the transfer path of the read data is specified from the path information 610 in the DIF code 503.
  • Each device included in the transfer path is an error cause candidate. That is, the candidate for the physical device that led the read data to the data error can be specified.
  • the physical device included in the transfer path may include not only the physical device included in the storage control device 1 but also the drive 31. For this reason, the storage control device 1 can detect not only an internal failure but also a failure of the drive 31.
  • the transfer instruction including the path information 610 is created by the CPU 12, and the addition of the DIF code 503 including the path information 610 to the block data and the error check of the block data 501 are performed by the front-end or back-end communication interface.
  • the FC chip 11 or the SAS chip 14 is used. As described above, the FC chip 11 or the SAS chip 14 performs the addition of the DIF code 503 including the path information 610 to the block data and the data error check, so that the load on the CPU 12 can be reduced.
  • the drive 31 stores data including path information 610 in which physical devices existing in the transfer path during the write process are recorded. For this reason, when reading the data, it is possible to specify all the physical devices included in the transfer path during the write process.
  • two CPUs 12 in one cluster 10 are used in data transfer based on a read request. Specifically, a CPU # 1B that receives read data from the drive 31 via the SAS chip # 1B and a CPU # 1A that transmits the read data to the host 2 via the FC chip # 1A are used.
  • parallel processing can be performed as described above, and rapid processing can be performed.
  • the other CPU 12 can continue the processing, so that redundancy can be maintained and the CPU 12 with the failure can be identified.
  • the creation of the route information 610 is performed by the CPU # 1B, but may be performed by the CPU 1A #.
  • the CPU # 1B transmits only the read request to the CPU # 1A without executing S1711 and 1712 (S1713). Then, CPU # 1A may receive the read request and update the value of the bit corresponding to itself (CPU # 1A) of the path information 610 to “1”. Thereby, the CPUs 12 that perform the creation (update) processing of the route information 610 can be distributed, and the load on the CPU # 1B is reduced.
  • FIG. 20 is a flowchart of error detection processing during read processing by the SAS chip 14.
  • the error detection process is executed when the CPU 12 receives an error notification by the SAS chip 12 that has detected an error in the block data 501 included in the read data in S1707 of the first read process.
  • This process is a process for detecting a physical device existing in the transfer path of read data having an error in the block data 501.
  • step S2001 the CPU 12 receives an error notification from the SAS chip 13 that has detected an error.
  • the SAS chip 13 stores an error notification in the memory 13 (see S1707 in FIG. 17), and the CPU 12 acquires the error notification from the memory 13.
  • the memory 13 for storing the error notification may be any one of the memories # 1A and # 1B.
  • the CPU 12 that acquires the error notification from the memory 12 is the CPU 12 that has received the read data # 2 from the SAS chip 14, but is not limited thereto.
  • step S2003 the CPU 12 specifies a read request that is a basis of read data in which a data error has occurred. Specifically, for example, the CPU 12 specifies a read request based on the information included in the error notification acquired in S2001.
  • step S2005 the CPU 12 specifies the ID 202 of the drive 31 in which the target read data is stored based on the specified read request.
  • step S2007 the CPU 12 updates the error count table 200. Specifically, for example, the CPU 12 increases the error count 203 in the error count table 200 by one for the specified drive 31 (type 201 and ID 202).
  • step S2009 the CPU 12 acquires the path information 610 of the target read data from the memory 13. Specifically, for example, the CPU 12 acquires the path information 610 attached to the read data # 2 from the memory 13 in which the read data # 2 is stored.
  • step S2011 the CPU 12 updates the error count table 200. Specifically, for example, based on the path information 610 acquired in S2009, the CPU 12 increases the error count 203 in the error count table 200 by 1 for all physical devices whose bits are 1.
  • step S2013 the CPU 12 detects a faulty device. Specifically, for example, the CPU 12 detects a physical device in which the error count 203 exceeds the threshold 303 based on the threshold table 300 and the error count table 200.
  • step S2015 the CPU 12 determines whether a faulty device is detected in step S2013. If the result of the determination is true (Yes in S2015), the CPU 12 advances the process to step S2017, executes the post-failure device identification process, and ends the process. On the other hand, when the result of the determination is false (No in S2015), the CPU 12 ends the process.
  • the failure device identification post-processing is as described above (see FIG. 12).
  • the error count 203 of the error count table 200 is increased for all physical devices existing in the read data transfer path where the error is detected. Based on the threshold table 300, a physical device that exceeds a preset threshold is detected. As a result, it is possible to identify a physical device with a high probability of detecting a data error, instead of all the physical devices existing in the read data transfer path in which the data error is detected.
  • the faulty device is detected based on the threshold value table 300 and the error number table 200 in S2013, but is not limited thereto.
  • the CPU 12 may calculate an average value or a median value of the number of errors of all the physical devices, and detect a physical device in which the number of errors exceeds the average value or the median value as a faulty device.
  • FIG. 21 is a flowchart of error detection processing during read processing by the FC chip 11.
  • the error detection process is executed when the CPU 12 receives an error notification by the FC chip 11 that has detected an error in the block data 501 included in the read data in S1718 of the first read process.
  • This process is a process for detecting a physical device existing in the transfer path of read data having an error in the block data 501.
  • step S2101 the CPU 12 receives an error notification from the FC chip 11 that has detected the error.
  • the FC chip 11 stores an error notification in the memory 13 (see S1718 in FIG. 17), and the CPU 12 acquires the error notification from the memory 13.
  • the memory 13 for storing the error notification may be any one of the memories # 1A and # 1B.
  • step S2103 based on the received error notification, the CPU 12 identifies the memory 13 in which the read data (read data # 2 in the example of FIG. 17) is stored, reads the read data from the memory 13, and reads the path information 610. To get.
  • the read data read data # 2 in the example of FIG. 17
  • step S2105 the CPU 12 determines whether or not the route information 610 has been acquired in S2103. If the result of the determination is true (Yes in S2105), the CPU 12 advances the process to S2107. On the other hand, if the determination result is false (No in S2105), the CPU 12 advances the process to S2109.
  • step S2107 the CPU 12 causes the other CPUs to acquire the route information 610. This is, for example, processing when the CPU 12 that has received the error notification cannot acquire the route information 610. For example, this process is performed when another CPU 12 plays a role of reading the read data # 2. At this time, the CPU 12 may transfer the error notification to another CPU 12.
  • step S2109 the CPU 12 updates the error count table 200. Specifically, for example, the CPU 12 increments the error count 203 in the error count table 200 by 1 for all physical devices having a bit of 1 based on the acquired path information 610.
  • step S2111 the CPU 12 detects a faulty device. Specifically, for example, the CPU 12 detects a physical device in which the error count 203 exceeds the threshold based on the threshold table 300 and the error count table 200.
  • step S2113 the CPU 12 determines whether a faulty device has been detected in step S2211. If the result of the determination is true (Yes in S2113), the CPU 12 advances the process to step S2115, executes post-failure device identification processing, and ends the processing. On the other hand, when the determination result is false (No in S2113), the CPU 12 ends the process.
  • the failure device identification post-processing is as described above (see FIG. 12).
  • the error count 203 of the error count table 200 is increased for all physical devices existing in the read data transfer path where the data error is detected. Based on the threshold table 300, a physical device that exceeds a preset threshold is detected. As a result, it is possible to identify a physical device with a high probability of detecting a data error, instead of all the physical devices existing in the read data transfer path in which the data error is detected.
  • the FC chip 14 detects an error in the block data 501 included in the read data.
  • all physical devices included in the read data transfer path can be set as faulty device candidates.
  • the faulty device is detected based on the threshold value table 300 and the error number table 200 in S2113.
  • the present invention is not limited to this.
  • an average value or median value of all physical devices may be calculated, and a physical device with the number of errors exceeding the average value or median value may be detected as a faulty device.
  • FIG. 14 shows a flowchart of the second write process.
  • the second write process is a process when write data based on a write request from the host 2 is written to the drive 31 through the two clusters 10.
  • the transfer path (transfer path from the host 2 to the drive 31) in the second write process of this embodiment is FC chip # 1A, CPU # 1A, memory # 1A, CPU # 1B, CPU # 2B.
  • the transfer path passes through the memory # 2B, the CPU # 2A, and the SAS chip # 1A, but is not limited thereto.
  • step S1401 the host 2 transmits a write request designating the LUN and LBA of the write destination LU to the storage system 100.
  • FC chip # 1A receives the write request.
  • step S1402 the FC chip # 1A calculates the transfer destination CPU # 1A based on the write request from the host 2. Then, the FC chip # 1A transfers the write request to the CPU # 1A. CPU # 1A receives the write request.
  • CPU # 1A creates route information 610 based on the received write request (WR). Specifically, for example, the CPU # 1A calculates the memory # 1A of the storage destination of the write data accompanying the write request from the write request. The CPU # 1A corresponds to the bit value corresponding to the FC chip # 1A that is the transmission source of the write request, the bit value corresponding to itself (CPU # 1A), and the memory # 1A in the path information 610. The value of the bibit is updated to “1”.
  • step S1404 CPU # 1A creates transfer instruction # 4 and transmits the transfer instruction # 4 to FC chip # 1A.
  • the FC chip # 1A receives the transfer instruction # 4.
  • the transfer instruction # 4 is a command for instructing transfer of write data based on the write request received in S1402.
  • An example of transfer instruction # 4 is shown in FIG. 15a.
  • the transfer instruction # 4 stores a write instruction command, a write data transfer source address, a write data transfer destination address, a write data transfer length, and a DIF code 503. Is added.
  • the route information 610 created in S1403 is embedded in part of the added DIF code 503.
  • the FC chip # 1A temporarily stores the transfer instruction # 4 in its own memory (not shown).
  • step S1405 the FC chip # 1A transmits a data request (DR) for write data to the host 2 in response to the transfer instruction # 4.
  • Host 2 receives the data request.
  • step S1406 the host 2 transmits write data (write data # 4) based on the data request to the FC chip # 1A.
  • the FC chip # 1A receives the write data # 4.
  • Write data # 4 transmitted from the host 2 is only block data 501 as shown in FIG.
  • step S1407 the FC chip # 1A updates the write data.
  • the FC chip # 1A creates the write data # 5 from the write data # 4.
  • the write data # 5 is data in which the DIF code 503 is added to the write data # 4 based on the DIF format 500.
  • the DIF code 503 is, for example, the DIF code 503 added to the transfer instruction # 4 received in S1404.
  • step S1408 the FC chip # 1A transmits write data # 5 to the CPU # 1A based on the calculation result from the write request in S1402.
  • CPU # 1A receives write data # 5.
  • step S1409 the CPU # 1A stores the write data # 5 in the memory # 1A based on the path information 610 included in the write data # 5.
  • CPU # 1A updates path information 610 in write data # 5. Specifically, for example, the CPU # 1A updates the value of the bit corresponding to the CPU # 1B to “1” in the path information 610.
  • the CPU # 1A of the cluster 1 is a CPU that receives a write request and write data from the host 2 via the FC chip
  • the CPU # 1B is a CPU that transfers the write data to the cluster 2
  • the CPU # 2B of the cluster 2 is a CPU that receives a write request and write data from the cluster 1
  • the CPU # 2A is a CPU that stores the write data in the drive 31 via the SAS chip # 2A. It prescribes.
  • the CPU # 1A updates the value of the bit corresponding to the CPU # 1B of the route information 610 to “1”.
  • the roles of the plurality of CPUs in each cluster may be defined in any way, and one CPU may play all the roles for each cluster.
  • step S1411 CPU # 1A transmits the route information 610 updated in S1410 to cluster 2.
  • CPU # 2B receives the route information 610.
  • step S1412 CPU # 1A transfers the write request (WR) received in S1402 to cluster 2.
  • CPU # 2B receives the write request.
  • step S1413 CPU # 2B transmits a data request (DR) to cluster 1 based on the received write request.
  • CPU # 1B receives the data request.
  • step S1414 CPU # 1B obtains write data # 5 from memory # 1A based on the data request (DR) in S1413.
  • step S1415 the CPU # 1B transmits the write data # 5 to the CPU # 2B that is the transmission source of the data request (DR).
  • CPU # 2B receives write data # 5.
  • CPU # 2B updates route information 610. Specifically, for example, the CPU # 2B updates the value of the bit corresponding to the memory # 2B that stores the write data # 5 in the path information 610 to “1”.
  • step S1417 CPU # 2B stores write data # 5 in memory # 2B based on the write request (WR) received in S1412.
  • step S1418 the CPU # 2B transmits the path information 610 updated in S1415 to the CPU # 2A having a role of transmitting write data to the drive 31.
  • step S1419 CPU # 2B transmits a write request (WR) to CPU # 2A.
  • CPU # 2A receives the write request.
  • CPU # 2A updates route information 610. Specifically, for example, the CPU # 2A updates the bit corresponding to itself (CPU # 2A) to “1” in the path information 610.
  • step S1421 CPU # 2A creates transfer instruction # 5 and transmits the transfer instruction # 5 to SAS chip # 2A.
  • the SAS chip # 2A receives the transfer instruction # 5.
  • the transfer instruction # 5 is a command for instructing transfer of write data based on the write request received in S1419.
  • An example of the transfer instruction # 5 is shown in FIG. 15b.
  • the transfer instruction # 5 stores a write instruction command, a write data transfer source address, a write data transfer destination address, a write data transfer length, and a DIF code 503.
  • the route information 610 updated in S1420 is embedded in a part of the added DIF code 503.
  • the SAS chip # 2A temporarily stores the transfer instruction # 5 in its own memory (not shown).
  • step S1422 the SAS chip # 2A transmits a data request (DR) to the CPU # 2A.
  • CPU # 2A receives the data request.
  • step S1424 CPU # 2A acquires write data # 5 from memory # 2B based on the data request (DR) in S1422.
  • step S1425 the CPU # 2A transmits the write data # 5 to the SAS chip # 2A based on the data request (DR).
  • the SAS chip # 2A receives the write data # 5.
  • step S1426 the SAS chip # 2A checks the block data 501 in the write data # 5 for errors based on the DIF CRC in the received write data # 5. At this time, if an error in the block data 501 is detected, the SAS chip # 2A notifies the CPU 12 of the error.
  • the CPU 12 that is notified of the error may be either the cluster 1 or the cluster 2 CPU 12. Further, the error notification may be stored in any memory 13 of the cluster to which the error is notified.
  • step S1427 the SAS chip # 2A updates the write data.
  • the SAS chip # 2A creates write data # 6 from the write data # 5.
  • the write data # 6 is data obtained by updating the path information 610 of the write data # 5.
  • the SAS chip # 2A updates the path information by updating the value of the bit corresponding to itself (SAS chip # 2A) in the path information 610 of the write data # 6 to “1”.
  • step S1428 the SAS chip # 2A transmits the write data # 6 to the data storage destination drive 31 (hereinafter, “target drive” in the description of FIG. 14).
  • the target drive 31 receives the write data # 6.
  • step S1429 the target drive 31 stores the write data # 6 in its own physical storage area.
  • the drive controller (not shown) of the target drive 31 may perform an error check on the block data 501 in the write data # 6 based on the DIF CRC.
  • the CPU 12 when a data error notification is received from the SAS chip # 2A in S1426, the CPU 12 that has received the notification performs the above-described error detection processing (see FIG. 11) and post-failure device identification processing (see FIG. 11). (See FIG. 12).
  • the above processing basically has the same effect as the first write processing.
  • even the storage control device 1 including two or more clusters 10 having redundancy can identify a failed device.
  • two CPUs 12 in each of the two clusters 10 are used in the transfer of write data based on the write request. Specifically, CPU # 1A that receives write data from host 2 via FC chip # 1A, CPU # 1B and CPU # 2B that transfer data between clusters, and write data via SAS chip # 1A CPU # 1B that writes to the drive 31 is used.
  • parallel processing becomes possible as described above, and rapid processing can be performed.
  • the other CPUs 12 can continue the processing, so that redundancy can be maintained and the CPU 12 with the failure can be identified.
  • the creation of the route information 610 is performed by the CPU # 1A, but may be performed by the CPU 1B #.
  • the CPU # 1A transmits only the read request to the CPU # 1B without executing S1410, 1411, and 1412.
  • the CPU # 1B receives the read request, updates the value of the bit corresponding to itself (CPU # 1B) of the route information 610 to “1”, and updates the updated route information 610 and the write request to the CPU #. You may make it transmit to 2B.
  • the CPUs 12 that perform the process of creating (updating) the path information 610 can be distributed, and the load on the CPU # 1A is reduced.
  • FIG. 22 shows a flowchart of the second read process.
  • the transfer path in the second read process of this embodiment is the FC chip # 2A, CPU # 2A, memory # 2B, and CPU # 2B of cluster # 2. And a transfer path that passes through CPU # 1A, memory # 1B, CPU # 1B, and SAS chip # 1B of cluster # 1.
  • step S2201 the host 2 sends a read request (RR) designating the LUN and LBA of the read destination LU to the storage system 100.
  • FC chip # 2A receives the read request.
  • step S2202 the FC chip # 2A calculates the transfer destination CPU # 2A based on the received read request. Then, the FC chip # 1A transfers the read request to the CPU # 2A. CPU # 2A receives the read request.
  • step S2203 CPU # 2A transfers the received read request to CPU # 1B of cluster 1.
  • CPU # 1B receives the read request.
  • CPU # 1B creates route information 610 based on the received read request. Specifically, for example, the CPU # 1 B, from the read request, the read data storage destination drive (hereinafter “target drive” in the description of FIG. 22) 31 and the SAS chip 14 for accessing the target drive 31. And the address of a memory 12 (hereinafter, “target memory” in the description of FIG. 22) that temporarily stores read data read from the target drive 31.
  • the CPU # 1B sets the bit value corresponding to the physical device (that is, the SAS chip # 1B, the CPU # 1B, and the memory # 1B) belonging to the transfer path from the target drive 31 to the target memory 12 in the path information 610. , Update to “1” respectively.
  • step S2205 the CPU # 1B creates a transfer instruction # 10 and transmits the transfer instruction # 10 to the SAS chip # 1B.
  • the SAS chip # 1B receives the transfer instruction # 10.
  • An example of the transfer instruction # 10 is shown in FIG.
  • the transfer instruction # 10 is a command for instructing transfer of read data based on the read request received in S2202.
  • the transfer instruction # 10 stores a command for instructing reading of read data, an address of a read data transfer source, an address of a read data transfer destination, and a read data transfer length.
  • a DIF code 503 is added. In part of the added DIF code 503, the path information 1 created in S2204 is embedded.
  • the SAS chip # 1B temporarily stores the transfer instruction # 10 in its own memory (not shown).
  • step S2206 the SAS chip # 1B transmits a data request (DR) of read data to the target drive 31.
  • the target drive 31 receives the data request.
  • the target drive 31 transmits read data (read data # 1) based on the data request to the SAS chip # 1B.
  • the SAS chip # 1B receives the read data # 4.
  • the read data # 4 is stored in the storage area of the drive 31 with the DIF code 503 in which the path information 610 at the time of write processing is added to the block data 501.
  • the path information 610 in the read data # 4 indicates all physical devices included in the transfer path during the write process.
  • step S2208 the SAS chip # 1B checks the error of the block data 501 in the read data # 4 based on the DIF CRC in the received read data # 4. If an error in the block data 501 is detected, the SAS chip # 1B notifies the CPU 12 of the error.
  • the CPU 12 that is notified of the error may be either the cluster 1 or the cluster 2 CPU 12. Further, the error notification may be stored in any memory 13 of the cluster to which the error is notified.
  • the SAS chip # 1B updates the read data.
  • the SAS chip # 1B creates the read data # 5 from the read data # 4.
  • the read data # 5 is data obtained by updating the path information 610 of the DIF code 503 added to the read data # 4.
  • the path information 601 in the read data # 5 includes physical devices (SAS chip # 1A, CPU # 1A, memory # 1A, and FC chip # 1) included in the path information 610 of the read data # 4. 1A) and the bit values corresponding to the physical devices (SAS chip # 1B, CPU # 1B, and memory # 1B) included in the path information 610 in the transfer instruction # 10 received in S2205. Are each “1”.
  • step S2210 the SAS chip # 1B transmits the read data # 5 to the CPU # 1B based on the path information 610 included in the read data # 5.
  • CPU # 1B receives read data # 5.
  • step S2211 CPU # 1B stores read data # 5 in memory # 1B based on path information 610 included in read data # 5.
  • CPU # 1B updates route information 610. Specifically, for example, in the route information 610, the CPU # 1B updates the value of the bit corresponding to the transfer destination CPU # 2B of the route information 610 to “1”.
  • the CPU # 1B is the CPU 12 that reads the read data from the target drive 31 to the memory # 1B via the SAS chip 13, and the CPU # 1A is the memory # 1B.
  • the CPU 12 reads the read data from the CPU # 2 and transfers the read data to the cluster 2.
  • the CPU # 2B is the CPU 12 that receives the read data from the cluster # 1, and the CPU # 2A of the cluster # 2 receives the read data via the FC chip # 2A.
  • the CPU # 1B updates the value of the bit corresponding to the CPU # 2B of the path information 610 to “1”.
  • the roles of the CPUs 12 in each cluster may be defined in any way, and one CPU 12 may play all the roles for each cluster.
  • step S2213 CPU # 1B transfers path information 610 updated in S2212 to cluster # 2.
  • CPU # 2B receives the route information 610.
  • step S2214 CPU # 1B transmits the read request (RR) received in S2203 to cluster # 2.
  • CPU # 2B receives the read request.
  • step S2215 CPU # 2B transmits a data request (DR) to cluster # 1 in response to the read request.
  • CPU # 1A which is responsible for transmitting read data to cluster 2, receives the data request.
  • step S2217 CPU # 1A acquires read data # 5 from memory # 1B based on the data request (DR).
  • step S2218 CPU # 1A transmits the acquired read data # 5 to cluster # 2 based on the data request (DR).
  • CPU # 2B receives read data # 5.
  • step S2219 CPU # 2B stores received read data # 5 in memory # 2B.
  • CPU # 2B updates route information 610. Specifically, for example, the CPU # 2B updates the bit corresponding to the memory # 2B in which the read data # 5 is stored in the path information 610 to “1”.
  • step S2221 CPU # 2B transmits route information 3 to CPU # 2A in response to the read request.
  • CPU # 2A receives route information 610.
  • step S2222 CPU # 2A transfers the read request (RR) to CPU # 2A.
  • CPU # 2A receives the read request.
  • step S2223 CPU # 2A creates transfer instruction # 11 and transmits the transfer instruction # 11 to FC chip # 2A.
  • the FC chip # 2A receives the transfer instruction # 11.
  • the transfer instruction # 11 is a command for instructing transfer of read data based on the read request (RR) received in S2222.
  • An example of the transfer instruction # 11 is shown in FIG.
  • the transfer instruction # 11 does not include the DIF code 503 including the path information 610, and includes only a command for instructing reading, the address of the transfer source and transfer destination of the read data, and the transfer length.
  • step S2224 the FC chip # 2A transmits a data request (DR) to the cluster # 2 in response to the transfer instruction # 11.
  • CPU # 2A receives the data request.
  • step S2226 CPU # 2A acquires read data # 5 from memory # 2B based on the data request (DR).
  • step S2227 CPU # 2A transmits the acquired read data # 5 to FC chip # 2A.
  • the FC chip # 2A receives the read data # 5.
  • step S2228 the FC chip # 2A checks the block data 501 in the read data # 5 for errors based on the DIF CRC in the received read data # 5. At this time, if an error in the block data 501 is detected, the FC chip # 2A notifies the CPU 12 of the error.
  • the CPU 12 that is notified of the error may be either the cluster 1 or the cluster 2 CPU 12. Further, the error notification may be stored in any memory 13 of the cluster to which the error is notified.
  • step S2229 the FC chip # 2A updates the read data.
  • the FC chip # 2A creates the read data # 6 from the read data # 5.
  • the read data # 6 is data obtained by deleting the DIF code 503 from the read data # 5 (that is, data of only the block data 501).
  • step S2230 the FC chip # 2A transmits the read data # 6 to the host 2.
  • the host 2 receives the read data # 6.
  • the above process basically has the same effect as the first read process.
  • even the storage control device 1 including two or more clusters 10 having redundancy can identify a failed device.
  • two CPUs 12 in each of the two clusters 10 are used for data transfer based on the read request. Specifically, CPU # 1B that acquires read data from drive 31 via SAS chip # 1B, CPU # 1A and CPU # 2B that transfer data between clusters, and read data via FC chip # 2A CPU # 2A that transmits to the host 2 is used.
  • parallel processing becomes possible as described above, and rapid processing can be performed.
  • the other CPUs 12 can continue the processing, so that redundancy can be maintained and the CPU 12 with the failure can be identified.
  • the creation of the route information 610 is performed by the CPU # 1B, but may be performed by the CPU 1A #.
  • the CPU # 1B transmits only the read request to the CPU # 1A without executing S2212, 2213, and 1412.
  • CPU # 1A receives the read request, updates the value of the bit corresponding to itself (CPU # 1A) of route information 610 to “1”, and updates the updated route information 610 and the read request to CPU #. You may make it transmit to 2B.
  • the CPUs 12 that perform the process of creating (updating) the path information 610 can be distributed, and the load on the CPU # 1B is reduced.

Abstract

 各転送経路は、複数のFE I/FのうちのいずれかのFE I/Fと、複数のBE I/FのうちのいずれかのBE I/Fと、1以上のメモリのうちのいずれかの少なくとも1つのメモリと、1以上のプロセッサのうちの少なくとも1つのプロセッサとを含む。複数の転送経路のうちI/O要求を受信したFE I/Fを含む対象転送経路を介してI/O対象データが転送される。対象転送経路におけるプロセッサが、対象転送経路に含まれる物理デバイスを表す経路情報を生成し、経路情報を含む転送指示を、対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つに送信する。対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つが、転送指示に応答して、データエラーを検出するコードであり転送指示中の経路情報を含んだ保証コードをI/O対象データに付与する。

Description

ストレージ制御装置
 本発明は、ストレージシステムにおいて、障害の発生した物理デバイスを特定する技術に関する。
 ストレージ制御装置と物理記憶装置を備えるストレージシステムにおいて、ストレージ制御装置は、ホスト計算機から送信されたライト要求又はリード要求に応じて、物理記憶装置に対してデータのライト処理又はリード処理を行う。
 データのライト処理又はリード処理において、ストレージシステムの信頼性を確保するために、ストレージ制御装置が、データ保証機能を有する場合がある。データ保証機能として、対象データのデータエラーを検出する保証コードを生成し、データ転送において、対象データに保証コードを付加し、ライトデータまたはリードデータとして転送する技術が知られている。保証コードとしては、例えば、ECC(error correcting code)が知られている(特許文献1)。また、近年においては、保証コードの標準フォーマットとして、ストレージインタフェース技術委員会であるT10が提唱する、DIF(Data Integrity Field)も知られている。
特開2011-232910号公報
 一方、ストレージシステムに障害が発生した場合、ストレージシステムの運用を継続するために、障害デバイス、つまりは障害の発生した物理デバイスを特定することが大切である。しかし、上述したデータ保証機能のみによっては、障害デバイスの特定は難しい。これは、ホスト計算機と物理記憶装置とに接続された複数のデータ転送経路のうち、障害デバイスを含むデータの転送経路の特定が困難だからである。
 上記課題を解決するために、本発明の一態様であるストレージ制御装置は、1以上の記憶デバイス及び1以上のホスト計算機に接続され、1以上のホスト計算機のうちのいずれかのホスト計算機からのI/O(Input/Output)要求に応じて、I/O要求に従うI/O対象データのI/Oを1以上の記憶デバイスのうちのI/O先の記憶デバイスに対して行うI/O処理を実行する。ストレージ制御装置は、1以上のホスト計算機に接続された複数の転送経路に含まれる複数の物理デバイスを有する。複数の物理デバイスは、1以上のホスト計算機に接続された複数のフロントエンドインタフェースデバイス(FE I/F)と、1以上の記憶デバイスに接続された複数のバックエンドインタフェースデバイス(BE I/F)と、1以上のメモリと、1以上のプロセッサとを含む。各転送経路は、複数のFE I/FのうちのいずれかのFE I/Fと、複数のBE I/FのうちのいずれかのBE I/Fと、1以上のメモリのうちのいずれかの少なくとも1つのメモリと、1以上のプロセッサのうちの少なくとも1つのプロセッサとを含む。複数の転送経路のうちI/O要求を受信したFE I/Fを含んだ転送経路である対象転送経路を介してI/O対象データが転送される。対象転送経路におけるプロセッサが、対象転送経路に含まれる物理デバイスを表す経路情報を生成し、経路情報を含む転送指示を、対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つに送信する。対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つが、転送指示に応答して、データエラーを検出するコードであり転送指示中の経路情報を含んだ保証コードをI/O対象データに付与する。
 本発明の一態様によれば、ストレージシステム内で障害が発生した場合に、障害の発生した物理デバイスの特定を容易に行うことができる。
一実施例の計算機システムの構成を示す。 エラー回数テーブル200を示す。 閾値テーブル300を示す。 障害デバイステーブル400を示す。 DIFのフォーマット500の一例を示す。 経路情報610が組込まれたDIFフォーマットを示す。 経路情報610の一例を示す。 第1のライト処理のフローチャートを示す。 転送指示#1の一例を示す。 転送指示#2の一例を示す。 第1のライト処理におけるライトデータの流れを示す。 ライト処理時のエラー検出処理のフローチャートである。 障害デバイス特定後処理のフローチャートである。 表示された障害デバイス一覧の情報の一例を示す 第2のライト処理のフローチャートを示す。 転送指示#4の一例を示す。 転送指示#5の一例を示す。 第2のライト処理におけるライトデータの流れを示す。 第1のリード処理のフローチャートを示す。 転送指示#7の一例を示す。 転送指示#8の一例を示す。 第1のリード処理におけるリードデータの流れを示す。 リード処理時のSASチップ14によるエラー検出処理のフローチャートである。 リード処理時のFCチップに11よるエラー検出処理のフローチャートである。 第2のリード処理のフローチャートを示す。 転送指示#10の一例を示す。 転送指示#10の一例を示す。 第2のリード処理におけるリードデータの流れを示す。
 なお、以後の説明では「aaaテーブル」等の表現にて情報を説明するが、これら情報はテーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等について「aaa情報」と呼ぶことがある。
 さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」という表現を用いるが、これらについてはお互いに置換が可能である。
 以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信インタフェースを用いながら行うため、プログラムを主語とした処理の説明はプロセッサを主語とした説明としてもよい。また、そのプロセッサを含む装置が行う処理としてもよい。また、プログラムが行う処理の一部または全ては専用ハードウェアによって実現されてもよい。また、プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって計算機にインストールされてもよい。
 各図において共通の要素については、同一の参照番号を付して説明する。また、共通の要素に関し、各要素を識別する場合には、数字の最後に#1A、#2B等の個別の番号等を付して説明する。ただし、必要に応じて番号等を省略して説明する場合がある。
 以下、図面等を用いて、本発明の実施例について説明する。以下の実施例は本発明の内容の具体例を示すものであり、本発明がこの実施例に限定されるものではなく、本明細書に開示される技術的思想の範囲内において当業者による様々な変更および修正が可能である。
 以下、本実施例の計算機システムの構成について説明する。
 図1は、本実施例の計算機システムの構成を示す。
 計算機システムは、複数のホスト計算機(以下、単にホスト)2と、ストレージシステム100とを有する。ストレージシステム100は、複数のJBOD(Just a Bunch Of Disks)3と、ストレージ制御装置1とを有する。複数のホスト2は、例えば、SAN(Storage Area Network)を介して、それぞれストレージ制御装置1に接続される。また、複数のJBOD3は、ストレージ制御装置1に接続される。図1によれば、複数のJBOD列(直列に接続された1以上のJBOD3)が、ストレージ制御装置1に接続される。計算機システム内での、ホスト2及びJBOD3の数は、1つでもよい。
 複数のJBOD3は、それぞれ、複数のドライブ31と、複数のエクスパンダ32とを有する。各JBOD3内部のドライブ31及びエクスパンダ32は1つでもよい。JBOD3は、エクスパンダ32を介して、ストレージ制御装置1及び他のJBOD3に接続される。JBOD3内部において、ドライブ31とエクスパンダ32が接続される。ドライブ31は、物理記憶デバイスであり、本実施例では、SAS(Serial Attached Small Computer System Interface)-HDD(Hard Disk Drive)であるが、他の物理記憶デバイス、例えば、SATA(Serial Advanced Technology Attachment)-HDD等のハードディスクドライブであってもよいし、SSD(Solid State Drive)等の半導体記憶デバイスであってもよい。RAID(Redundant Arrays of Inexpensive Disks)グループが、1つのJBOD3における複数のドライブ31、又は、複数のJBOD3における複数のドライブ31で構成されてもよい。1つのドライブ31又は1つのRAIDグループを構成する複数のドライブ31に基づき、1つ又は複数のLU(Logical Unit)がホスト2に提供される。なお、ホスト2に提供されるLUは、ドライブ31に基づくLUに代えて、仮想的なLU(例えばThin Provisioningに従うLU)であってもよい。
 ストレージ制御装置1は、それぞれ独立した2つのストレージコントローラ10により冗長化される。なお、以下では、各ストレージコントローラ10をクラスタ10と呼ぶ場合がある。各クラスタ10は、同一の構成である。このため、以下は、クラスタ#1の構成についてのみ説明する。しかし、2つのクラスタ10は、別々の構成であってもよい。また、本実施例では、ストレージ制御装置1は、2つのクラスタ10により冗長化されているが、これに限られない。ストレージ制御装置1は、3つ以上のクラスタ10で冗長化されてもよいし、1つのクラスタ10のみで構成されてもよい。
 クラスタ10は、複数のCPU(Central Processing Unit)12と、複数のメモリ13と、複数のFC(Fibre Channel)プロトコルチップ11と、複数のSASプロトコルチップ14とを有する。クラスタ10の各部は、バスを介して互いに接続される。メモリ13は、ストレージシステム100を制御するためのプログラム及びデータを格納する。CPU12は、メモリ13に格納されたプログラムに従ってストレージシステム100を制御する。FCプロトコルチップ11は、ホスト2との間(フロントエンド)の通信を行う。SASプロトコルチップ14は、JBOD3のエクスパンダ32に接続され、JBOD3との間(バックエンド)の通信を行う。以降の説明及び図面において、SASプロトコルチップ14をSASチップ14と呼ぶことがある。また、以降の説明及び図面において、FCプロトコルチップ11をFCチップ11と呼ぶことがある。なお、本実施例では、フロントエンドの通信インタフェースとしてFCチップ11を、バックエンドの通信インタフェースとしてSASチップ14をそれぞれ用いたが、これに限定されない。
 クラスタ10同士が通信可能に接続されている。例えば、クラスタ#1のCPU#1Aがクラスタ#2のCPU#2Aに接続されており、クラスタ#1のCPU#1Bがクラスタ#2のCPU#2Bに接続されている。
 また、クラスタ#1及び#2のどちらからも、いずれのドライブ31にアクセスできるように接続されている。SASチップ#1Aから1以上のエクスパンダ32を介してアクセスできるドライブ31には、SAS#2Aから別の1以上のエクスパンダ32を介してアクセスすることもできる。
 各クラスタ10のメモリ13が、図2~図4に示すテーブルを含んだデータを記憶し、複数のクラスタ10のメモリ13内のデータが同期されてよい。例えば、一方のクラスタ10のメモリ13においてテーブルが作成又は更新された場合には、他方のクラスタ10のメモリ13において同じテーブルが作成又は更新されてよい。
 図2は、エラー回数テーブル200を示す。
 エラー回数テーブル200は、各物理デバイスのエラー回数を管理するテーブルである。具体的には、例えば、エラー回数テーブル200には、ライト処理又はリード処理時において、ライトデータ又はリードデータにデータエラーが発生した場合に、それらのデータのデータ転送経路に存在する物理デバイスのエラー回数が記録される。エラー回数テーブル200は、各クラスタ10のメモリ13にそれぞれ格納される。エラー回数テーブル200は、ストレージシステム100内における物理デバイス毎のエントリを有する。各エントリは、物理デバイスの種別を示す種別201と、物理デバイスのIDを示すID202と、物理デバイスのエラーが発生した回数を示すエラー回数203とを有する。
 図3は、閾値テーブル300を示す。
 閾値テーブル300は、各物理デバイスのエラー回数の閾値を管理するテーブルである。具体的には、例えば、閾値テーブル300には、各物理デバイスの障害判定の基となる、エラー回数の閾値が設定される。閾値テーブル300は、各クラスタ10のメモリ13にそれぞれ格納される。閾値テーブル300は、ストレージシステム100内における物理デバイス毎のエントリを有する。各エントリは、物理デバイスの種別を示す種別301と、物理デバイスのIDを示すID302と、物理デバイスのエラー回数の閾値を示す閾値303とを有する。
 図4は、障害デバイステーブル400を示す。
 障害デバイステーブル400は、障害のある物理デバイスを管理するためのテーブルである。具体的には、例えば、障害デバイステーブル400には、各物理デバイスが障害デバイスであるか否かの識別情報が記録される。障害デバイステーブル400は、各クラスタ10のメモリ13にそれぞれ格納される。障害デバイステーブル400は、ストレージシステム100内における物理デバイス毎のエントリを有する。各エントリは、物理デバイスの種別を示す種別401と、物理デバイスのIDを示すID402と、物理デバイスの名称を示す交換部位403とを有する。
 以下、本実施例における、ストレージシステム100内部の物理デバイスの障害特定方法を説明する。
 本実施例では、物理デバイスの障害検出は、ライト処理又はリード処理等のデータ転送の際にライトデータ(ライト対象のデータ)又はリードデータ(リード対象のデータ)のような転送対象データに付加された経路情報を基に行われる。具体的には、例えば、転送対象データはブロックデータであり、このブロックデータには、データ転送の際の経路情報を含む保証コードとしてのDIFデータが付加される。DIFデータによってブロックデータのエラーが検出されたことに基づき、そのDIFデータ中の経路情報から物理デバイスを検出することができる。なお、本実施例では、ライトデータ又はリードデータは、ブロック単位で扱われるが、これに限られない。
 図5は、DIFのフォーマット500の一例を示す。
 本実施例では、DIFのフォーマット500は、512バイト(Byte0~511)のブロックデータ501に、8バイト(Byte512~519)のDIFコード503が付加されてなる。DIFコード503は、例えば、2バイト(Byte512、513)のDIF CRC(Cyclic Redundancy Check)と、2バイト(Byte514、515)のLogical Block Application Tagと、2バイト(Byte516、517)のLogical Block Reference Tagとからなる。
 DIF CRCは、データのビットエラーを検出するためのコードであり、512バイトのブロックデータ501に対するCRC計算結果が格納される。Logical Block Application Tag及びLogical Block Reference Tagは、ユーザが任意の値を設定可能である。本実施例では、Logical Block Application Tagに、1以上のブロックデータ501を転送する際のブロックデータ501の転送順序が格納される。また、本実施例では、図6に示すように、Logical Block Reference Tagの一部又は全部に、経路情報610が格納される。
 図7は、経路情報610の一例を示す。
 経路情報610は、データ転送の際に、ライト(リード)要求及びライト(リード)データに基づき、CPU12により作成される。経路情報610は、ストレージ制御装置1内の各物理デバイスが転送対象データの転送経路に含まれる否かを示す情報である。具体的には、例えば、経路情報610を構成する各ビットに、ストレージ制御装置1内の物理デバイスに対応づけられており、転送経路に含まれる物理デバイスに対応するビットは「1」とされ、転送経路に含まれない物理デバイスに対応するビットは「0」とされる。なお、データ転送の際の各段階において、CPU12は、経路情報610を作成又は更新してよい。この際、CPU12は、各段階においてのライト(リード)要求、ライト(リード)データ等から転送経路に含まれる一部の物理デバイスを算出してもよいし、転送経路に含まれるすべての物理デバイスを算出してもよい。
 図8は、第1のライト処理のフローチャートを示す。
 第1のライト処理は、ホスト2からのライト要求に基づくライトデータが、2つのクラスタ10のうちの1つのクラスタ10を通って、ドライブ31に書き込まれるまでの処理である。なお、以下では、本実施例の第1のライト処理における転送経路(ホスト2からドライブ31までのデータ転送経路)は、FCチップ#1A、CPU#1A、メモリ#1A、CPU#1B、及び、SASチップ#1Aを通る転送経路であるとするが、これに限られない。
 ステップS801で、ホスト2は、ストレージシステム100に対し、ライト先のLUのLUN(Logical Unit Number)とLBA(Logical Block Address)を指定したライト要求(Write Request)(WR)を送信する。FCチップ#1Aが、そのライト要求を受信する。
 ステップS802で、FCチップ#1Aは、ホスト2からのライト要求(WR)に基づき、転送先のCPU#1Aを算出する。そして、FCチップ#1Aは、CPU#1Aに対してライト要求を転送する。CPU#1Aが、そのライト要求を受信する。
 ステップS803で、CPU#1Aは、受信したライト要求(WR)に基づき、経路情報610を作成する。具体的には、例えば、CPU#1Aは、ライト要求から、ライト要求に付随するライトデータの格納先のメモリ#1Aを算出する。そして、CPU#1Aは、経路情報610における、ライト要求の送信元のFCチップ#1Aに対応したビットの値と、自身(CPU#1A)に対応したビットの値と、メモリ#1Aに対応したビットの値を、それぞれ「1」に更新する。
 ステップS804で、CPU#1Aは、データ転送指示(以下、転送指示)#1を作成し、その転送指示#1をFCチップ#1Aに送信する。FCチップ#1Aが、転送指示#1を受信する。転送指示#1には、経路情報610が埋め込まれる。転送指示#1の一例を図9aに示す。転送指示#1は、S802で受信したライト要求に基づくライトデータの転送を指示するコマンドである。具体的には、例えば、転送指示#1には、ライトを指示するコマンド、ライトデータの転送元のアドレス、ライトデータの転送先のアドレス、ライトデータの転送長が格納されるとともに、DIFコード503の一部又は全部が付加される。付加されたDIFコード503には、S803で作成した経路情報610が埋め込まれる。FCチップ#1Aは、自身の図示しないメモリに転送指示#1を一時的に格納する。
 ステップS805で、FCチップ#1Aは、転送指示#1に応答して、ライトデータのデータ要求(Data Request)(DR)をホスト2に送信する。ホスト2が、そのデータ要求を受信する。
 ステップS806で、ホスト2は、データ要求(DR)に基づくライトデータ(ライトデータ#1)をFCチップ#1Aに送信する。FCチップ#1Aが、ライトデータ#1を受信する。ホスト2から送信されるライトデータ#1は、ブロックデータ501のみのデータである。
 ステップS807で、FCチップ#1Aは、ライトデータを更新する。換言すると、FCチップ#1Aは、ライトデータ#1からライトデータ#2を作成する。具体的には、例えば、ライトデータ#2は、DIFのフォーマット500に基づき、ライトデータ#1にDIFコード503を付加したデータである。DIFコード503は、例えば、S804で受信した転送指示#1に付加されたDIFコード503である。
 ステップS808で、FCチップ#1Aは、S802でのライト要求からの算出結果に基づき、CPU#1Aにライトデータ#2を送信する。CPU#1Aが、ライトデータ#2を受信する。
 ステップS809で、CPU#1Aは、S802でのライト要求からの算出結果に基づき、メモリ#1Aにライトデータ#2を格納する。
 ステップS810で、CPU#1Aは、ライトデータ#2中の経路情報610を更新する。具体的には、例えば、CPU#1Aは、経路情報610について、CPU#1Bに対応するビットの値を「1」に更新する。本実施例では、例えば、CPU#1Aが、ホスト2からFCチップ11を介してライト要求及びライトデータを受信するCPU12であり、CPU#1Bが、SASチップ13を介してライトデータをドライブ31に書き込むCPU12と規定している。このため、CPU#1Aは、経路情報610のCPU#1Bに対応するビットの値を「1」に更新する。なお、CPU#1A、#1Bのそれぞれ役割は、どのように規定されていてもよいし、1つのCPU12がすべての役割を担ってもよい。
 ステップS811で、CPU#1Aは、S810で更新した経路情報610をCPU#1Bに送信する。CPU#1Bが、その経路情報610を受信する。
 ステップS812で、CPU#1Aは、S802で受信したライト要求(WR)をCPU#1Bに転送する。CPU#1Bが、そのライト要求を受信する。
 ステップS813で、CPU#1Bは、S811で受信した経路情報610を更新する。具体的には、例えば、CPU#1Bは、ライト要求に基づき、ライトデータの送信先のSASチップ#1A及びライトデータが格納されるドライブ31の物理記憶領域を算出する。そして、CPU#1Bは、経路情報610における、SASチップ#1Aに対応するビットの値を「1」に更新する。
 ステップS814で、CPU#1Bは、転送指示#2を作成し、その転送指示#2をSASチップ#1Aに送信する。SASチップ#1Aが、転送指示#2を受信する。転送指示#2は、S812で受信したライト要求(WR)に基づくライトデータの転送を指示するコマンドである。転送指示#2の一例を図9bに示す。具体的には、例えば、転送指示#2には、転送指示#1と同様に、ライトデータのライトを指示するコマンド、ライトデータの転送元のアドレス、ライトデータの転送先のアドレス、ライトデータの転送長が格納されるとともに、DIFコード503が付加される。転送指示#2のDIFコード503の一部に、S813で更新した経路情報610が埋め込まれる。SASチップ#1Aは、自身の図示しないメモリに転送指示#2を一時的に格納する。
 ステップS815で、SASチップ#1Aは、転送指示#2に応答して、ライトデータのデータ要求DR)をCPU#1Bに送信する。CPU#1Bが、そのデータ要求を受信する。
 ステップS816で、CPU#1Bは、S815のデータ要求(DR)に基づき、ライトデータ#2をメモリ#1Aから取得する。
 ステップS817で、CPU#1Bは、データ要求(DR)の送信元のSASチップ#1Aに、ライトデータ#2を送信する。SASチップ#2が、ライトデータ#2を受信する。
 ステップS818で、SASチップ#1Aは、受信したライトデータ#2中のDIF CRCに基づき、ライトデータ#2中のブロックデータ501のエラーをチェックする。このとき、ブロックデータ501のエラーが検出された場合は、SASチップ#1Aは、CPU#1A(及び/又は#1B)に対しエラーを通知する。なお、エラー通知は、メモリ13に格納されてよい。
 ステップS819で、SASチップ#1Aは、ライトデータを更新する。換言すると、SASチップ#1Aは、ライトデータ#2からライトデータ#3を作成する。具体的には、例えば、ライトデータ#3は、ライトデータ#2に付加されたDIFコード503を更新したデータである。SASチップ#1Aは、ライトデータ#2の経路情報610における、自身(SASチップ#1A)に対応したビットの値を「1」に更新することで、その経路情報610を更新する。
 ステップS820で、SASチップ#1Aは、ライトデータ#3をデータ格納先のドライブ(以下、図8の説明において「対象ドライブ」)31に送信する。対象ドライブ31が、ライトデータ#3を受信する。
 ステップS821で、対象ドライブ31は、ライトデータ#3を自身の物理記憶領域に格納する。なお、この際、対象ドライブ31の図示しないドライブコントローラは、DIF CRCに基づき、ライトデータ#3中のブロックデータ501のエラーチェックを行ってもよい。
 上記処理では、ホスト2から受信したライトデータ(本実施例では、ライトデータ#1として説明した、ブロックデータ501のみのライトデータ)に、DIF CRCを含むDIFコード503が付加されて、ライトデータ及びそれに付加されたDIFコード503が、ストレージシステム1内の転送経路を流れる。DIFコード503が付加されたライトデータ(すなわち、本実施例では、ライトデータ#2及び#3)においては、転送経路の情報である経路情報610がDIFコード503に埋め込まれる。そして、DIFコード503中のDIF CRCを使用したチェックによりにブロックデータ501のエラーが検出されたときに、そのDIFコード503中の経路情報610から、そのライトデータの転送経路が特定される。転送経路に含まれる各物理デバイスが、エラー原因の候補である。つまり、ライトデータをエラーに導いた物理デバイスの候補を特定することができる。なお、上記処理においては、転送経路に含まれる物理デバイスとして、ストレージ制御装置1が有する物理デバイスのみならず、ドライブ31も含まれてよい。このため、ストレージ制御装置1は、自身内部の障害のみならず、ドライブ31の障害も検出可能となる。
 上記処理では、経路情報610を含む転送指示は、CPU12が作成し、その経路情報610を含むDIFコード503のブロックデータ501への付加及びブロックデータ501のエラーチェックは、フロントエンド又はバックエンドの通信インタフェースとしてのFCチップ11又はSASチップ13が行っている。このように、経路情報610を含むDIFコード503のブロックデータへの付加及びデータのエラーチェックを、FCチップ11又はSASチップ13が行うことで、CPU12の負荷を低減することができる。
 また、上記処理では、ドライブ31には、経路情報610を含むDIFコード503を含んだライトデータ#3が格納されている。ライトデータ#3は、第1のライト処理時の転送経路に含まれるすべての物理デバイスが特定可能である。このため、そのデータ(ライトデータ#3)を読み出す際にも、ライト処理時の転送経路に含まれるすべての物理デバイスを特定することができる。
 なお、上記処理では、ライト要求に基づくデータ転送において、1つのクラスタ10内の2つのCPU12が用いられる。具体的には、ホスト2からFCチップ#1Aを介してライトデータを受信するCPU#1Aと、そのライトデータをSASチップ#1Aを介してドライブ31に書き込むCPU#1Bとが用いられる。このように、2つのCPU12の役割を分けることで、上記のように並列処理が可能となり、迅速な処理を行うことができる。また、何れか一方のCPU12に障害に発生したとしても、他方のCPU12が処理を継続することができるため、冗長性を保つことができると共に、障害のあるCPU12を特定することができる。
 図11は、ライト処理時のエラー検出処理のフローチャートである。
 エラー検出処理は、第1のライト処理のS818で、ライトデータに含まれるブロックデータ501のエラーが検出されSASチップ14により、エラー検出された旨がCPU12に通知された場合に、その通知先のCPU12又はそのCPU12より処理を依頼されたCPU12によって実行される。この処理は、ブロックデータ501にエラーのあるライトデータの転送経路に存在する物理デバイスを検知する処理である。
 ステップS1101で、CPU12は、エラーを検出したSASチップ13からエラー通知を受信する。具体的には、例えば、SASチップ13により、メモリ13にエラー通知が格納されており(S818参照)、CPU12は、メモリ13からエラー通知を取得する。なお、エラー通知が格納されるメモリ13は、メモリ#1A及び#1Bのいずれであってもよい。
 ステップS1103で、CPU12は、エラー回数テーブル200を更新する。具体的には、例えば、CPU12は、エラーの通知元のSASチップ13及び自身(CPU12)について、エラー回数テーブル200のエラー回数203を1つ増やす。
 ステップS1105で、CPU12は、エラーが検出されたライトデータに対応するライト要求を特定する。具体的には、例えば、CPU12は、S1101で取得したエラー通知に含まれる情報に基づき、ライト要求を特定する。
 ステップS1107で、CPU12は、S1105で特定したライト要求に基づき、ライトデータ(図8の例では、ライトデータ#2)が格納されたメモリ13を特定する。具体的には、例えば、CPU12は、ライト要求からライトデータを格納するメモリ13のアドレスを計算し、計算結果に基づきメモリ13を特定する。
 ステップS1113で、CPU12は、特定したライトデータの経路情報610をメモリ13から取得する。具体的には、例えば、CPU12は、S1107で特定したメモリ13に格納されたS1105で特定されたライトデータに付された経路情報610を取得する。
 ステップS1115で、CPU12は、エラー回数テーブル200を更新する。具体的には、例えば、CPU12は、S1113で取得した経路情報(ライトデータに付された経路情報)610でビットが1である全ての物理デバイスについて、エラー回数テーブル200のエラー回数203を1つ増やす。
 ステップS1117で、CPU12は、障害デバイスを検出する。具体的には、例えば、CPU12は、閾値テーブル300及びエラー回数テーブル200に基づき、エラー回数203が閾値を超える物理デバイスの種別201(301)及びID202(302)を検出する。
 ステップS1119で、CPU12は、S1117において障害デバイスが検出されたか否かを判定する。判定の結果が真の場合は(S1119でYes)、CPU12は、ステップS1120に処理を進め、障害デバイス特定後処理を実行し、処理を終了する。一方、判定の結果が偽の場合は(S1119でNo)、CPU12は、処理を終了する。
 上記処理では、データエラーが検出されたライトデータの転送経路に存在する全ての物理デバイスについて、エラー回数テーブル200のエラー回数203を増加させる。これにより、物理デバイス毎のエラー回数を把握することができる。そして、エラー回数テーブル200及び閾値テーブル300に基づき、エラー回数203が、予め設定された閾値303を超える物理デバイスを検出する。これにより、エラーが検出されたライトデータの転送経路に存在する全ての物理デバイスでなく、エラーが検出される確率の高い物理デバイス、つまり障害デバイスである可能性の高い物理デバイスを特定することができる。
 なお、上記処理では、S1117において、閾値テーブル300及びエラー回数テーブル200に基づき障害デバイスを検出していたが、これに限られない。例えば、CPU12は、全物理デバイスのエラー回数の平均値又は中央値を算出し、エラー回数が平均値又は中央値を超える物理デバイスを障害デバイスとして検出してもよい。
 図12は、障害デバイス特定後処理のフローチャートである。
 障害デバイス特定後処理は、エラー検出処理のS1120で実行され、障害デバイスをストレージシステム100から隔離する処理である。
 S1201で、CPU12は、ストレージシステム100から障害デバイスを隔離する。具体的には、CPU12は、障害デバイス(エラー検出処理において障害の検出された物理デバイス)が、以降のデータ転送処理で転送経路に含まれないように制御する。具体的には、例えば、CPU12は、障害デバイステーブル400を参照し、エラー検出処理において検出された物理デバイスの種別401及びID402から、交換部位403を特定する。そして、特定した物理デバイス(交換部位403)の状態を障害とすることで、以後、その物理デバイスが転送経路に含まれないようになる。例えばCPU#1Aが障害デバイスとなった場合、CPU#1Aが転送経路に含まれず、CPU#1Bが、CPU#1Aの機能を担ってよい。
 S1203で、CPU12は、ホスト2のユーザ(又は、ストレージシステム100の図示しない管理計算機を使用する管理者)に対し、障害デバイスを通知する。具体的には、例えば、CPU12は、障害デバイステーブル400を参照し、ストレージシステム100内の障害デバイスを識別する情報を生成し、その情報をホスト2(又は図示しない管理計算機)に表示するよう送信する。その情報は、例えば、ストレージシステム100内の全物理デバイスとそれぞれの状態を表すデバイス一覧である。表示されるデバイス一覧の一例を、図13に示す。そのデバイス一覧によれば、障害デバイスであるFCチップ#2A(FC 2A)の状態が「異常」となっている。
 上記処理により、障害デバイスをストレージシステム100から隔離することができるとともに、ユーザに障害デバイスを通知することができる。
 図17は、第1のリード処理のフローチャートを示す。
 第1のリード処理は、ホスト2からのリード要求をストレージシステム100が受けた場合に、リード要求に基づくリードデータをドライブ31から読み出し、2つのクラスタのうちの1つのクラスタ10を通ってホスト2に送信されるまでの処理である。なお、以下では、本実施例の第1のリード処理における転送経路(ホスト2からドライブ31までの転送経路)は、クラスタ#1の、FCチップ#1A、CPU#1A、メモリ#1B、CPU#1B、及び、SASチップ#1Bを通る転送経路であるとするが、これに限られない。
 ステップS1701で、ホスト2は、ストレージシステム100に対し、リード先のLUのLUNとLBAを指定したリード要求(Read Request)(RR)を送信する。FCチップ#1Aが、そのリード要求を受信する。
 ステップS1702で、FCチップ#1Aは、受信したリード要求に基づき、転送先のCPU#1Bを算出する。そして、FCチップ#1Aは、そのリード要求をCPU#1Bに転送する。CPU#1Bが、そのリード要求を受信する。
 ステップS1703で、CPU#1Bは、受信したリード要求に基づき、経路情報610を作成する。具体的には、例えば、CPU#1Bは、リード要求から、リードデータの格納先のドライブ(以下、図17の説明において、「対象ドライブ」)31、対象ドライブ31にアクセスするためのSASチップ14、及び対象ドライブ31から読み出したリードデータを一時的に記憶するメモリ(以下、図17の説明において、「対象メモリ」)12のアドレスを算出する。そして、CPU#1Bは、経路情報610における、対象ドライブ31から対象メモリ12までの経路に属する物理デバイス(つまり、SASチップ#1B、CPU#1B及びメモリ#1B)に対応したビットの値を、それぞれ「1」に更新する。
 ステップS1704で、CPU#1Bは、転送指示#7を作成し、その転送指示#7をSASチップ#1Aに送信する。SASチップ#1Aが、転送指示#7を受信する。転送指示#7は、S1702で受信したリード要求に基づくリードデータの転送を指示するコマンドである。転送指示#7の一例を図18aに示す。具体的には、例えば、転送指示#7には、リードを指示するコマンド、リードデータの転送元のアドレス、リードデータの転送先のアドレス、リードデータの転送長が格納されるとともに、DIFコード503が付加される。付加されたDIFコード503の一部には、S1703で作成した経路情報610が埋め込まれる。FCチップ#1Aは、自身の図示しないメモリに転送指示#1を一時的に格納する。
 ステップS1705で、SASチップ#1Bは、転送指示#7に応答して、リードデータのデータ要求(DR)を対象ドライブ31に送信する。対象ドライブ31が、そのデータ要求を受信する。
 ステップS1706で、対象ドライブ31は、データ要求に基づくリードデータ(リードデータ#1)をSASチップ#1Bに送信する。SASチップ#1Bが、リードデータ#1を受信する。リードデータ#1は、図19に示すように、ブロックデータ501に、経路情報610を埋め込んだDIFコード503が付加された状態で対象ドライブ31の物理記憶領域に格納されている。具体的には、例えば、リードデータ#1は、その経路情報610に、ライト処理時の転送経路に含まれるすべての物理デバイスを示す情報が記憶されている(例えば、リードデータ#1は、第1のライト処理における、ライトデータ#3と同様のデータである。)。
 ステップS1707で、SASチップ#1Bは、受信したリードデータ#1中のDIF CRCに基づき、リードデータ#1中のブロックデータ501のエラーをチェックする。なお、ブロックデータ501のエラーが検出された場合は、SASチップ#1Bは、CPU12に対しエラーを通知する。エラーが通知されるCPU12は、CPU#1A及び#1Bのうちのいずれであってもよい。また、エラー通知は、メモリ13に格納されてよい。
 ステップS1708で、SASチップ#1Bは、リードデータ#1を更新する。換言すると、SASチップ#1Bは、リードデータ#1からリードデータ#2を作成する。具体的には、例えば、図19に示すように、リードデータ#2は、リードデータ#1に付加されたDIFコード503の経路情報610を更新したデータである。図19の例においては、リードデータ#2中の経路情報610では、リードデータ#1の経路情報610に含まれる物理デバイス(SASチップ#1A、CPU#1A、メモリ#1A、CPU#1B、及び、FCチップ#1A)に対応するビットの値と、S1704で受信した転送指示#7中の経路情報610に含まれる物理デバイス(SASチップ#1B、CPU#1B、及び、メモリ#1B)に対応するビットの値が、それぞれ「1」とされている。
 ステップS1709で、SASチップ#1Bは、リードデータ#2に含まれる経路情報610に基づき、リードデータ#2をCPU#1Bに送信する。CPU#1Bは、リードデータ#2を受信する。
 ステップS1710で、CPU#1Bは、リードデータ#2に含まれる経路情報610に基づき、リードデータ#2をメモリ#1Bに格納する。
 ステップS1711で、CPU#1Bは、経路情報610を更新する。具体的には、例えば、CPU#1Bは、経路情報610において、CPU#1Aに対応するビットの値を「1」に更新する。本実施例では、例えば、第1のリード処理においては、CPU#1Bが、ドライブ31からSASチップ13を介してメモリ#1Bにリードデータを読み出すCPU12であり、CPU#1Aが、メモリ#1Bからリードデータを読み出しFCチップ11を介してホスト2に送信するCPU12であると規定している。このため、CPU#1Bは、経路情報610のCPU#1Aに対応するビットの値を「1」に更新する。なお、CPU#1A、#1Bのそれぞれ役割は、どのように規定されていてもよいし、1つのCPU12がすべての役割を担ってもよい。
 ステップS1712で、CPU#1Bは、S1711で更新した経路情報610をCPU#1Aに送信する。CPU#1Aが、その経路情報610を受信する。
 ステップS1713で、CPU#1Bは、S1702で受信したリード要求(RR)をCPU#1Aに転送する。CPU#1Aが、そのリード要求を受信する。
 ステップS1714で、CPU#1Aは、転送指示#8を作成し、その転送指示#8をFCチップ#1Aに送信する。FCチップ#1Aが、転送指示#8を受信する。転送指示#8は、S1713で受信したリード要求(RR)に基づくリードデータの転送を指示するコマンドである。転送指示#8の一例を図18bに示す。転送指示#8には、例えば、経路情報610を含むDIFコード503が付加されず、リードを指示するコマンドと、リードデータの転送元及び転送先のアドレスと、転送長のみが含まれる。
 ステップS1715で、FCチップ#1Aは、転送指示#8に応答して、リードデータのデータ要求(DR)をCPU#1Aに送信する。CPU#1Aが、そのデータ要求を受信する。
 ステップS1716で、CPU#1Aは、データ要求(DR)に基づき、リードデータ#2をメモリ#1Aから取得する。
 ステップS1717で、CPU#1Aは、データ要求(DR)の送信元のFCチップ#1Aに、リードデータ#2を送信する。FCチップ#1Aが、リードデータ#2を受信する。
 ステップS1718で、FCチップ#1Aは、受信したリードデータ#2中のDIF CRCに基づき、リードデータ#2中のブロックデータ501のエラーをチェックする。このとき、ブロックデータ501のエラーが検出された場合は、FCチップ#1Aは、CPU12に対しエラーを通知する。エラーが通知されるCPU12は、CPU#1A及び#1Bのうちのいずれであってもよい。また、エラー通知は、メモリ13に格納されてよい。
 ステップS1719で、FCチップ#1Aは、リードデータを更新する。換言すると、FCチップ#1Aは、リードデータ#2からリードデータ#3を作成する。具体的には、例えば、図19に示すように、リードデータ#3は、リードデータ#2からDIFコード503を削除したデータ(つまり、ブロックデータ501のみのデータ)である。
 ステップS1720で、SASチップ#1Aは、リードデータ#3をホスト2に送信する。
 上記処理では、ストレージシステム1内を転送されるリードデータにおいては、ブロックデータ501にDIF CRCを含むDIFコード503が付加されている。リードデータ(本実施例では、リードデータ#2及び#3)においては、転送経路の情報である経路情報610がDIFコード503に埋め込まれる。そして、DIFコード503中のDIF CRCを使用したチェックによりブロックデータ501のエラーが検出されたときに、そのDIFコード503中の経路情報610から、そのリードデータの転送経路が特定される。転送経路に含まれる各デバイスが、エラー原因候補である。つまり、リードデータをデータエラーに導いた物理デバイスの候補を特定することができる。なお、上記処理においては、転送経路に含まれる物理デバイスとして、ストレージ制御装置1が有する物理デバイスのみならず、ドライブ31も含まれてよい。このため、ストレージ制御装置1は、自身内部の障害のみならず、ドライブ31の障害も検出可能となる。
 上記処理では、経路情報610を含む転送指示は、CPU12が作成し、その経路情報610を含むDIFコード503のブロックデータへの付加及びブロックデータ501のエラーチェックは、フロントエンド又はバックエンドの通信インタフェースとしてのFCチップ11又はSASチップ14が行っている。このように、経路情報610を含むDIFコード503のブロックデータへの付加及びデータのエラーチェックを、FCチップ11又はSASチップ14が行うことで、CPU12の負荷を低減することができる。
 また、上記処理では、ドライブ31には、ライト処理時の転送経路に存在する物理デバイスが記録された経路情報610を含むデータが格納されている。このため、そのデータを読み出す際にも、ライト処理時の転送経路に含まれるすべての物理デバイスを特定することができる。
 上記処理では、リード要求に基づくデータ転送において、1つのクラスタ10内の2つのCPU12が用いられる。具体的には、ドライブ31からSASチップ#1Bを介してリードデータを受信するCPU#1Bと、そのリードデータをFCチップ#1Aを介してホスト2に送信するCPU#1Aとが用いられる。このように、2つのCPU12の役割を分けることで、上記のように並列処理が可能となり、迅速な処理を行うことができる。また、何れか一方のCPU12に障害に発生したとしても、他方のCPU12が処理を継続することができるため、冗長性を保つことができると共に、障害のあるCPU12を特定することができる。
 なお、上記処理では、経路情報610の作成は、CPU#1Bが行っていたが、CPU1A#が行ってもよい。この場合、例えば、CPU#1Bは、S1710でリードデータ#2をメモリ#1Bに格納した後、S1711及び1712を実行せずに、リード要求のみをCPU#1Aに送信する(S1713)。そして、CPU#1Aが、リード要求を受信し、経路情報610の自身(CPU#1A)に対応するビットの値を「1」に更新するようにしてもよい。これにより、経路情報610の作成(更新)処理を行うCPU12を分散でき、CPU#1Bの負荷が軽減される。
 図20は、SASチップ14による、リード処理時のエラー検出処理のフローチャートである。
 エラー検出処理は、第1のリード処理のS1707で、リードデータに含まれるブロックデータ501のエラーを検出したSASチップ12により、エラー通知をCPU12が受信した場合に実行される。この処理は、ブロックデータ501にエラーのあるリードデータの転送経路に存在する物理デバイスを検知する処理である。
 ステップS2001で、CPU12は、エラーを検出したSASチップ13からエラー通知を受信する。具体的には、例えば、SASチップ13により、メモリ13にエラー通知が格納されており(図17のS1707参照)、CPU12は、メモリ13からエラー通知を取得する。なお、エラー通知を格納するメモリ13は、メモリ#1A及び#1Bのいずれのメモリ13であってもよい。また、本実施例では、メモリ12からエラー通知を取得するCPU12は、SASチップ14からリードデータ#2を受信したCPU12とするが、これに限られない。
 ステップS2003で、CPU12は、データエラーが発生したリードデータの基となるリード要求を特定する。具体的には、例えば、CPU12は、S2001で取得したエラー通知に含まれる情報に基づき、リード要求を特定する。
 ステップS2005で、CPU12は、特定したリード要求に基づき、対象のリードデータが格納されるドライブ31のID202を特定する。
 ステップS2007で、CPU12は、エラー回数テーブル200を更新する。具体的には、例えば、CPU12は、特定したドライブ31(種別201及びID202)について、エラー回数テーブル200のエラー回数203を1つ増やす。
 ステップS2009で、CPU12は、対象のリードデータの経路情報610をメモリ13から取得する。具体的には、例えば、CPU12は、リードデータ#2が格納されたメモリ13から、リードデータ#2に付された経路情報610を取得する。
 ステップS2011で、CPU12は、エラー回数テーブル200を更新する。具体的には、例えば、CPU12は、S2009で取得した経路情報610に基づき、ビットが1である全ての物理デバイスについて、エラー回数テーブル200のエラー回数203を1つ増やす。
 ステップS2013で、CPU12は、障害デバイスを検出する。具体的には、例えば、CPU12は、閾値テーブル300及びエラー回数テーブル200に基づき、エラー回数203が閾値303を超える物理デバイスを検出する。
 ステップS2015で、CPU12は、S2013において障害デバイスが検出されたか否かを判定する。判定の結果が真の場合は(S2015でYes)、CPU12は、ステップS2017に処理を進め、障害デバイス特定後処理を実行し、処理を終了する。一方、判定の結果が偽の場合は(S2015でNo)、CPU12は、処理を終了する。なお、障害デバイス特定後処理については、前述の通りである(図12参照)。
 上記処理では、エラーが検出されたリードデータの転送経路に存在する全ての物理デバイスについて、エラー回数テーブル200のエラー回数203を増加させる。そして、閾値テーブル300に基づき、予め設定された閾値を超えた物理デバイスを検出する。これにより、データエラーが検出されたリードデータの転送経路に存在する全ての物理デバイスでなく、データエラーが検出される確率の高い物理デバイスを特定することができる。
 また、上記処理においては、ドライブ31からSASチップ14に読み出したデータ(ここではリードデータ#1)のブロックデータ501のエラーを検出する。このデータには、データの書き込み時の経路情報610が付加されている。つまり、リードデータ#1はライトデータ#3と同様となる。このため、ブロックデータ501のエラーが検出された場合には、ライト処理時におけるライトデータの転送経路に含まれる全物理デバイスを障害デバイスの候補とすることができる。
 なお、上記処理では、S2013において、閾値テーブル300及びエラー回数テーブル200に基づき障害デバイスを検出していたが、これに限られない。例えば、CPU12は、全物理デバイスのエラー回数の平均値又は中央値を算出し、エラー回数が平均値又は中央値を超える物理デバイスを障害デバイスとして検出してもよい。
 図21は、FCチップに11よる、リード処理時のエラー検出処理のフローチャートである。
 エラー検出処理は、第1のリード処理のS1718で、リードデータに含まれるブロックデータ501のエラーを検出したFCチップ11により、エラー通知をCPU12が受信した場合に実行される。この処理は、ブロックデータ501にエラーのあるリードデータの転送経路に存在する物理デバイスを検知する処理である。
 ステップS2101で、CPU12は、エラーを検出したFCチップ11からエラー通知を受信する。具体的には、例えば、FCチップ11により、メモリ13にエラー通知が格納されており(図17のS1718参照)、CPU12は、メモリ13からエラー通知を取得する。なお、エラー通知を格納するメモリ13は、メモリ#1A及び#1Bのいずれのメモリ13であってもよい。
 ステップS2103で、CPU12は、受信したエラー通知に基づき、リードデータ(図17の例では、リードデータ#2)が格納されるメモリ13を特定し、そのメモリ13からリードデータを読み出し、経路情報610を取得する。
 ステップS2105で、CPU12は、S2103において経路情報610が取得できたか否かを判定する。判定の結果が真の場合(S2105でYes)、CPU12はS2107へ処理を進める。一方、判定の結果が偽の場合(S2105でNo)、CPU12はS2109へ処理を進める。
 ステップS2107で、CPU12は、他のCPUに経路情報610を取得させる。これは、例えば、エラー通知を受信したCPU12が経路情報610を取得できなかった場合の処理である。例えば、他のCPU12がリードデータ#2を読み出す役割を担っている場合、この処理が行われる。この際、CPU12は、エラー通知を他のCPU12に転送してもよい。
 ステップS2109で、CPU12は、エラー回数テーブル200を更新する。具体的には、例えば、CPU12は、取得した経路情報610に基づき、ビットが1である全ての物理デバイスについて、エラー回数テーブル200のエラー回数203を1つ増やす。
 ステップS2111で、CPU12は、障害デバイスを検出する。具体的には、例えば、CPU12は、閾値テーブル300及びエラー回数テーブル200に基づき、エラー回数203が閾値を超える物理デバイスを検出する。
 ステップS2113で、CPU12は、S2211において障害デバイスが検出されたか否かを判定する。判定の結果が真の場合は(S2113でYes)、CPU12は、ステップS2115に処理を進め、障害デバイス特定後処理を実行し、処理を終了する。一方、判定の結果が偽の場合は(S2113でNo)、CPU12は、処理を終了する。なお、障害デバイス特定後処理については、前述の通りである(図12参照)。
 上記処理では、データエラーが検出されたリードデータの転送経路に存在する全ての物理デバイスについて、エラー回数テーブル200のエラー回数203を増加させる。そして、閾値テーブル300に基づき、予め設定された閾値を超えた物理デバイスを検出する。これにより、データエラーが検出されたリードデータの転送経路に存在する全ての物理デバイスでなく、データエラーが検出される確率の高い物理デバイスを特定することができる。
 また、上記処理においては、FCチップ14によりリードデータに含まれるブロックデータ501のエラー検出をする。エラーが検出された場合には、リードデータの転送経路に含まれる全物理デバイスを障害デバイスの候補とすることができる。
 なお、上記処理では、S2113において、閾値テーブル300及びエラー回数テーブル200に基づき障害デバイスを検出していたが、これに限られない。例えば、エラー回数について、全物理デバイスの平均値又は中央値を算出し、エラー回数が平均値又は中央値を超える物理デバイスを障害デバイスとして検出してもよい。
 次に、本実施例の変形例として、ストレージ制御装置1内の2つのクラスタ10をデータが経由する場合のライト処理及びリード処理を説明する。
 図14は、第2のライト処理のフローチャートを示す。
 第2のライト処理は、ホスト2からのライト要求に基づくライトデータが、2つのクラスタ10を通って、ドライブ31に書き込まれる際の処理である。なお、以下では、本実施例の第2のライト処理における転送経路(ホスト2からドライブ31までの転送経路)は、FCチップ#1A、CPU#1A、メモリ#1A、CPU#1B、CPU#2B、メモリ#2B、CPU#2A、及び、SASチップ#1Aを通る転送経路であるとするが、これに限られない。
 ステップS1401で、ホスト2は、ストレージシステム100に対し、ライト先のLUのLUNとLBAを指定したライト要求を送信する。FCチップ#1Aが、そのライト要求を受信する。
 ステップS1402で、FCチップ#1Aは、ホスト2からのライト要求に基づき、転送先のCPU#1Aを算出する。そして、FCチップ#1Aは、CPU#1Aに対してライト要求に転送する。CPU#1Aがそのライト要求を受信する。
 ステップS1403で、CPU#1Aは、受信したライト要求(WR)に基づき、経路情報610を作成する。具体的には、例えば、CPU#1Aは、ライト要求から、ライト要求に付随するライトデータの格納先のメモリ#1Aを算出する。そして、CPU#1Aは、経路情報610における、ライト要求の送信元のFCチップ#1Aに対応したビットの値と、自身(CPU#1A)に対応したビットの値と、メモリ#1Aに対応したビビットの値を、それぞれ「1」に更新する。
 ステップS1404で、CPU#1Aは、転送指示#4を作成し、その転送指示#4をFCチップ#1Aに送信する。FCチップ#1Aが、その転送指示#4を受信する。転送指示#4は、S1402で受信したライト要求に基づくライトデータの転送を指示するコマンドである。転送指示#4の一例を図15aに示す。具体的には、例えば、転送指示#4には、ライトを指示するコマンド、ライトデータの転送元のアドレス、ライトデータの転送先のアドレス、ライトデータの転送長が格納されるとともに、DIFコード503が付加される。付加されたDIFコード503一部には、S1403で作成した経路情報610が埋め込まれる。FCチップ#1Aは、自身の図示しないメモリに転送指示#4を一時的に格納する。
 ステップS1405で、FCチップ#1Aは、転送指示#4に応答して、ライトデータのデータ要求(DR)をホスト2に送信する。ホスト2が、そのデータ要求を受信する。
 ステップS1406で、ホスト2は、データ要求に基づくライトデータ(ライトデータ#4)をFCチップ#1Aに送信する。FCチップ#1Aが、ライトデータ#4を受信する。ホスト2から送信されるライトデータ#4は、図16に示すように、ブロックデータ501のみのデータである。
 ステップS1407で、FCチップ#1Aは、ライトデータを更新する。換言すれば、FCチップ#1Aは、ライトデータ#4からライトデータ#5作成する。具体的には、例えば、図16に示すように、ライトデータ#5は、DIFのフォーマット500に基づき、ライトデータ#4にDIFコード503を付加したデータである。DIFコード503は、例えば、S1404で受信した転送指示#4に付加されたDIFコード503である。
 ステップS1408で、FCチップ#1Aは、S1402でのライト要求からの算出結果にに基づき、CPU#1Aに対しライトデータ#5を送信する。CPU#1Aが、ライトデータ#5を受信する。
 ステップS1409で、CPU#1Aは、ライトデータ#5に含まれる経路情報610に基づき、メモリ#1Aにライトデータ#5を格納する。
 ステップS1410で、CPU#1Aは、ライトデータ#5中の経路情報610を更新する。具体的には、例えば、CPU#1Aは、経路情報610において、CPU#1Bに対応するビットの値を「1」に更新する。本実施例では、例えば、クラスタ1のCPU#1Aが、ホスト2からFCチップを介してライト要求及びライトデータを受信するCPUであり、CPU#1Bが、そのライトデータをクラスタ2に転送するCPUであり、クラスタ2のCPU#2Bが、クラスタ1からライト要求及びライトデータを受信するCPUであり、CPU#2Aが、SASチップ#2Aを介してライトデータをドライブ31に格納するCPUであると規定している。このため、CPU#1Aは、経路情報610のCPU#1Bに対応するビットの値を「1」に更新する。なお、各クラスタにおける複数のCPUのそれぞれ役割は、どのように規定されていてもよいし、クラスタ毎に1つのCPUがすべての役割を担ってもよい。
 ステップS1411で、CPU#1Aは、S1410で更新した経路情報610をクラスタ2に送信する。CPU#2Bが、その経路情報610を受信する。
 ステップS1412で、CPU#1Aは、S1402で受信したライト要求(WR)をクラスタ2に転送する。CPU#2Bが、そのライト要求を受信する。
 ステップS1413で、CPU#2Bは、受信したライト要求に基づき、データ要求(DR)をクラスタ1に送信する。CPU#1Bが、そのデータ要求を受信する。
 ステップS1414で、CPU#1Bは、S1413のデータ要求(DR)に基づき、ライトデータ#5をメモリ#1Aから取得する。
 ステップS1415で、CPU#1Bは、データ要求(DR)の送信元のCPU#2Bに、ライトデータ#5を送信する。CPU#2Bがライトデータ#5を受信する。
 ステップS1416で、CPU#2Bは、経路情報610を更新する。具体的には、例えば、CPU#2Bは、経路情報610における、ライトデータ#5の格納先のメモリ#2Bに対応するビットの値を「1」に更新する。
 ステップS1417で、CPU#2Bは、S1412で受信したライト要求(WR)に基づき、ライトデータ#5をメモリ#2Bに格納する。
 ステップS1418で、CPU#2Bは、S1415で更新した経路情報610を、ライトデータをドライブ31に送信する役割を持つCPU#2Aに送信する。
 ステップS1419で、CPU#2Bは、ライト要求(WR)をCPU#2Aに送信する。CPU#2Aが、ライト要求を受信する。
 ステップS1420で、CPU#2Aは、経路情報610を更新する。具体的には、例えば、CPU#2Aは、経路情報610において、自身(CPU#2A)に対応するビットを「1」に更新する。
 ステップS1421で、CPU#2Aは、転送指示#5を作成し、その転送指示#5をSASチップ#2Aに送信する。SASチップ#2Aが、転送指示#5を受信する。転送指示#5は、S1419で受信したライト要求に基づくライトデータの転送を指示するコマンドである。転送指示#5の一例を図15bに示す。転送指示#5には、ライトを指示するコマンド、ライトデータの転送元のアドレス、ライトデータの転送先のアドレス、ライトデータの転送長が格納されるとともに、DIFコード503が付加される。付加されたDIFコード503一部には、S1420で更新した経路情報610が埋め込まれる。SASチップ#2Aは、自身の図示しないメモリに転送指示#5を一時的に格納する。
 ステップS1422で、SASチップ#2Aは、データ要求(DR)をCPU#2Aに送信する。CPU#2Aが、データ要求を受信する。
 ステップS1424で、CPU#2Aは、S1422のデータ要求(DR)に基づき、ライトデータ#5をメモリ#2Bから取得する。
 ステップS1425で、CPU#2Aは、データ要求(DR)に基づき、ライトデータ#5をSASチップ#2Aに送信する。SASチップ#2Aが、ライトデータ#5を受信する。
 ステップS1426で、SASチップ#2Aは、受信したライトデータ#5中のDIF CRCに基づき、ライトデータ#5中のブロックデータ501のエラーをチェックする。このとき、ブロックデータ501のエラーが検出された場合は、SASチップ#2Aは、CPU12に対しエラーを通知する。エラーが通知されるCPU12は、クラスタ1又はクラスタ2のいずれのCPU12であってもよい。また、エラー通知は、エラーが通知されるクラスタのいずれのメモリ13に格納されてよい。
 ステップS1427で、SASチップ#2Aは、ライトデータを更新する。換言すると、SASチップ#2Aは、ライトデータ#5からライトデータ#6を作成する。具体的には、例えば、図16に示すように、ライトデータ#6は、ライトデータ#5の経路情報610を更新したデータである。SASチップ#2Aは、ライトデータ#6の経路情報610における、自身(SASチップ#2A)に対応したビットの値を「1」に更新することで、その経路情報を更新する。
 ステップS1428で、SASチップ#2Aは、ライトデータ#6をデータ格納先のドライブ(以下、図14の説明において「対象ドライブ」)31に送信する。対象ドライブ31が、ライトデータ#6を受信する。
 ステップS1429で、対象ドライブ31は、ライトデータ#6を自身の物理記憶領域に格納する。なお、この際、対象ドライブ31の図示しないドライブコントローラは、DIF CRCに基づき、ライトデータ#6中のブロックデータ501のエラーチェックを行ってもよい。
 上記処理において、S1426で、SASチップ#2Aからデータのエラー通知をされた場合には、その通知のあったCPU12は、前述のエラー検出処理(図11参照)、及び、障害デバイス特定後処理(図12参照)を実行する。
 上記処理では、基本的に、第1のライト処理と同等の効果を有する。加えて、冗長性を有する2つ以上のクラスタ10を備えたストレージ制御装置1であっても、障害デバイスを特定できる。
 上記処理では、ライト要求に基づくライトデータの転送において、2つのクラスタ10内の各々2つのCPU12を用いていた。具体的には、ホスト2からFCチップ#1Aを介してライトデータを受信するCPU#1Aと、クラスタ間のデータ転送を行うCPU#1B及びCPU#2Bと、ライトデータをSASチップ#1Aを介してドライブ31に書き込むCPU#1Bとを用いていた。このように、1つのクラスタ10につきCPU12を2つずつ有することで、上記のように並列処理が可能となり、迅速な処理を行うことができる。また、何れかのCPU12に障害に発生したとしても、他のCPU12が処理を継続することができるため、冗長性を保つことができると共に、障害のあるCPU12を特定することができる。
 なお、上記処理では、経路情報610の作成は、CPU#1Aが行っていたが、CPU1B#が行ってもよい。この場合、例えば、CPU#1Aは、S1409でリードデータ#5をメモリ#1Aに格納した後、S1410、1411及び1412を実行せずに、リード要求のみをCPU#1Bに送信する。そして、CPU#1Bが、リード要求を受信し、経路情報610の自身(CPU#1B)に対応するビットの値を「1」に更新し、更新後の経路情報610とライト要求とをCPU#2Bに送信するようにしてもよい。これにより、クラスタ#1において、経路情報610の作成(更新)処理を行うCPU12を分散でき、CPU#1Aの負荷が軽減される。
 図22は、第2のリード処理のフローチャートを示す。
 第2のリード処理は、ホスト2からのリード要求をストレージシステム100が受けた場合に、リード要求に基づくリードデータをドライブ31から読み出し、2つのクラスタ10を通ってホスト2に送信される際の処理である。なお、以下では、本実施例の第2のリード処理における転送経路(ホスト2からドライブ31までの転送経路)は、クラスタ#2のFCチップ#2A、CPU#2A、メモリ#2B及びCPU#2Bを通り、さらに、クラスタ#1のCPU#1A、メモリ#1B、CPU#1B及びSASチップ#1Bを通る転送経路であるとする。
 ステップS2201で、ホスト2は、ストレージシステム100に対し、リード先のLUのLUNとLBAを指定したリード要求(RR)を送信する。FCチップ#2Aが、そのリード要求を受信する。
 ステップS2202で、FCチップ#2Aは、受信したリード要求に基づき、転送先のCPU#2Aを算出する。そして、FCチップ#1Aは、そのリード要求を、CPU#2Aに転送する。CPU#2Aが、そのリード要求を受信する。
 ステップS2203で、CPU#2Aは、受信したリード要求を、クラスタ1のCPU#1Bに転送する。CPU#1Bが、そのリード要求を受信する。
 ステップS2204で、CPU#1Bは、受信したリード要求に基づき、経路情報610を作成する。具体的には、例えば、CPU#1Bは、リード要求から、リードデータの格納先のドライブ(以下、図22の説明において、「対象ドライブ」)31、対象ドライブ31にアクセスするためのSASチップ14、及び対象ドライブ31から読み出したリードデータを一時的に記憶するメモリ(以下、図22の説明において、「対象メモリ」)12のアドレスを算出する。そして、CPU#1Bは、経路情報610における、対象ドライブ31から対象メモリ12までの転送経路に属する物理デバイス(つまり、SASチップ#1B、CPU#1B及びメモリ#1B)に対応したビットの値を、それぞれ「1」に更新する。
 ステップS2205で、CPU#1Bは、転送指示#10を作成し、その転送指示#10をSASチップ#1Bに送信する。SASチップ#1Bが、転送指示#10を受信する。転送指示#10の一例を図23aに示す。転送指示#10は、S2202で受信したリード要求に基づくリードデータの転送を指示するコマンドである。具体的には、例えば、転送指示#10には、リードデータの読み出しを指示するコマンド、リードデータの転送元のアドレス、リードデータの転送先のアドレス、リードデータの転送長が格納されるとともに、DIFコード503が付加される。付加されたDIFコード503の一部には、S2204で作成した経路情報1が埋め込まれる。SASチップ#1Bは、自身の図示しないメモリに転送指示#10を一時的に格納する。
 ステップS2206で、SASチップ#1Bは、リードデータのデータ要求(DR)を対象ドライブ31に送信する。対象ドライブ31が、そのデータ要求を受信する。
 ステップS2207で、対象ドライブ31は、データ要求に基づくリードデータ(リードデータ#1)をSASチップ#1Bに送信する。SASチップ#1Bが、リードデータ#4を受信する。リードデータ#4は、ブロックデータ501に、ライト処理時の経路情報610を埋め込んだDIFコード503が付加された状態でドライブ31の記憶領域に格納されている。具体的には、例えば、リードデータ#4中の経路情報610が、ライト処理時の転送経路に含まれるすべての物理デバイスを示している。
 ステップS2208で、SASチップ#1Bは、受信したリードデータ#4中のDIF CRCに基づき、リードデータ#4中のブロックデータ501のエラーをチェックする。なお、ブロックデータ501のエラーが検出された場合は、SASチップ#1Bは、CPU12に対しエラーを通知する。エラーが通知されるCPU12は、クラスタ1又はクラスタ2のいずれのCPU12であってもよい。また、エラー通知は、エラーが通知されるクラスタのいずれのメモリ13に格納されてよい。
 ステップS2209で、SASチップ#1Bは、リードデータを更新する。換言すると、SASチップ#1Bは、リードデータ#4からリードデータ#5を作成する。具体的には、例えば、リードデータ#5は、リードデータ#4に付加されたDIFコード503の経路情報610を更新したデータである。図24の例においては、リードデータ#5中の経路情報601では、リードデータ#4の経路情報610に含まれる物理デバイス(SASチップ#1A、CPU#1A、メモリ#1A、及び、FCチップ#1A)に対応するビットの値と、S2205で受信した転送指示#10中の経路情報610に含まれる物理デバイス(SASチップ#1B、CPU#1B、及び、メモリ#1B)に対応するビットの値が、それぞれ「1」とされている。
 ステップS2210で、SASチップ#1Bは、リードデータ#5に含まれる経路情報610に基づき、リードデータ#5をCPU#1Bに送信する。CPU#1Bが、リードデータ#5を受信する。
 ステップS2211で、CPU#1Bは、リードデータ#5に含まれる経路情報610に基づき、リードデータ#5をメモリ#1Bに格納する。
 ステップS2212で、CPU#1Bは、経路情報610を更新する。具体的には、例えば、CPU#1Bは、経路情報610において、経路情報610の転送先のCPU#2Bに対応するビットの値を「1」に更新する。本実施例では、例えば、第2のリード処理においては、CPU#1Bが、対象ドライブ31からSASチップ13を介してメモリ#1Bにリードデータを読み出すCPU12であり、CPU#1Aが、メモリ#1Bからリードデータを読み出しクラスタ2に転送するCPU12であり、CPU#2Bが、クラスタ#1からリードデータを受信するCPU12であり、クラスタ#2のCPU#2Aが、FCチップ#2Aを介してリードデータをホスト2に送信するCPU12であると規定している。このため、CPU#1Bは、経路情報610のCPU#2Bに対応するビットの値を「1」に更新する。なお、各クラスタのCPU12それぞれ役割は、どのように規定されていてもよいし、クラスタ毎に1つのCPU12がすべての役割を担ってもよい。
 ステップS2213で、CPU#1Bは、S2212で更新した経路情報610をクラスタ#2に転送する。CPU#2Bが、その経路情報610を受信する。
 ステップS2214で、CPU#1Bは、S2203で受信したリード要求(RR)をクラスタ#2に送信する。CPU#2Bが、そのリード要求を受信する。
 ステップS2215で、CPU#2Bは、リード要求に応じて、クラスタ#1に、データ要求(DR)を送信する。リードデータをクラスタ2に送信する役割を持つCPU#1Aは、データ要求を受信する。
 ステップS2217で、CPU#1Aは、データ要求(DR)に基づき、リードデータ#5をメモリ#1Bから取得する。
 ステップS2218で、CPU#1Aは、データ要求(DR)に基づき、取得したリードデータ#5をクラスタ#2に送信する。CPU#2Bが、リードデータ#5を受信する。
 ステップS2219で、CPU#2Bは、受信したリードデータ#5をメモリ#2Bに格納する。
 ステップS2220で、CPU#2Bは、経路情報610を更新する。具体的には、例えば、CPU#2Bは、経路情報610において、リードデータ#5の格納先のメモリ#2Bに対応するビットを「1」に更新する。
 ステップS2221で、CPU#2Bは、リード要求に応じて、リードデータをCPU#2Aに、経路情報3を送信する。CPU#2Aが、経路情報610を受信する。
 ステップS2222で、CPU#2Aは、リード要求(RR)をCPU#2Aに転送する。CPU#2Aが、リード要求を受信する。
 ステップS2223で、CPU#2Aは、転送指示#11を作成し、その転送指示#11をFCチップ#2Aに送信する。FCチップ#2Aが、転送指示#11を受信する。転送指示#11は、S2222で受信したリード要求(RR)に基づくリードデータの転送を指示するコマンドである。転送指示#11の一例を図23bに示す。転送指示#11には、例えば、経路情報610を含むDIFコード503が付加されず、リードを指示するコマンドと、リードデータの転送元及び転送先のアドレスと、転送長のみが含まれる。
 ステップS2224で、FCチップ#2Aは、転送指示#11に応じて、クラスタ#2にデータ要求(DR)を送信する。CPU#2Aが、データ要求を受信する。
 ステップS2226で、CPU#2Aは、データ要求(DR)に基づき、リードデータ#5をメモリ#2Bから取得する。
 ステップS2227で、CPU#2Aは、取得したリードデータ#5をFCチップ#2Aに送信する。FCチップ#2Aが、リードデータ#5を受信する。
 ステップS2228で、FCチップ#2Aは、受信したリードデータ#5中のDIF CRCに基づき、リードデータ#5中のブロックデータ501のエラーをチェックする。このとき、ブロックデータ501のエラーが検出された場合は、FCチップ#2Aは、CPU12に対しエラーを通知する。エラーが通知されるCPU12は、クラスタ1又はクラスタ2のいずれのCPU12であってもよい。また、エラー通知は、エラーが通知されるクラスタのいずれのメモリ13に格納されてよい。
 ステップS2229で、FCチップ#2Aは、リードデータを更新する。換言すると、FCチップ#2Aは、リードデータ#5からリードデータ#6を作成する。例えば、図24に示すように、リードデータ#6は、リードデータ#5からDIFコード503を削除したデータ(つまり、ブロックデータ501のみのデータ)である。
 ステップS2230で、FCチップ#2Aは、リードデータ#6をホスト2に送信する。ホスト2が、リードデータ#6を受信する。
 上記処理では、基本的に、第1のリード処理と同等の効果を有する。加えて、冗長性を有する2つ以上のクラスタ10を備えたストレージ制御装置1であっても、障害デバイスを特定できる。
 上記処理では、リード要求に基づくデータ転送において、2つのクラスタ10内の各々2つのCPU12を用いていた。具体的には、ドライブ31からリードデータをSASチップ#1Bを介して取得するCPU#1Bと、クラスタ間のデータ転送を行うCPU#1A及びCPU#2Bと、リードデータをFCチップ#2Aを介してホスト2に送信するCPU#2Aとを用いていた。このように、1つのクラスタ10につきCPU12を2つずつ有することで、上記のように並列処理が可能となり、迅速な処理を行うことができる。また、何れかのCPU12に障害に発生したとしても、他のCPU12が処理を継続することができるため、冗長性を保つことができると共に、障害のあるCPU12を特定することができる。
 なお、上記処理では、経路情報610の作成は、CPU#1Bが行っていたが、CPU1A#が行ってもよい。この場合、例えば、CPU#1Bは、S2211でリードデータ#5をメモリ#1Bに格納した後、S2212、2213及び1412を実行せずに、リード要求のみをCPU#1Aに送信する。そして、CPU#1Aが、リード要求を受信し、経路情報610の自身(CPU#1A)に対応するビットの値を「1」に更新し、更新後の経路情報610とリード要求とをCPU#2Bに送信するようにしてもよい。これにより、クラスタ#1において、経路情報610の作成(更新)処理を行うCPU12を分散でき、CPU#1Bの負荷が軽減される。
 以上、一実施例及びその変形例を説明したが、本発明は、その実施例及び変形例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
 1:ストレージ制御装置、 10:クラスタ、 11:FCプロトコルチップ、12:CPU、13:メモリ、14:SASプロトコルチップ

Claims (15)

  1.  1以上の記憶デバイス及び1以上のホスト計算機に接続され、前記1以上のホスト計算機のうちのいずれかのホスト計算機からのI/O(Input/Output)要求に応じて、前記I/O要求に従うI/O対象データのI/Oを前記1以上の記憶デバイスのうちのI/O先の記憶デバイスに対して行うI/O処理を実行するストレージ制御装置であって、
     前記1以上のホスト計算機に接続された複数の転送経路に含まれる複数の物理デバイスを有し、
     前記複数の物理デバイスは、前記1以上のホスト計算機に接続された複数のフロントエンドインタフェースデバイス(FE I/F)と、前記1以上の記憶デバイスに接続された複数のバックエンドインタフェースデバイス(BE I/F)と、1以上のメモリと、1以上のプロセッサとを含み、
     各転送経路は、前記複数のFE I/FのうちのいずれかのFE I/Fと、前記複数のBE I/FのうちのいずれかのBE I/Fと、前記1以上のメモリのうちのいずれかの少なくとも1つのメモリと、前記1以上のプロセッサのうちの少なくとも1つのプロセッサとを含み、
     前記複数の転送経路のうち前記I/O要求を受信したFE I/Fを含んだ転送経路である対象転送経路を介して前記I/O対象データが転送され、
     前記対象転送経路におけるプロセッサが、前記対象転送経路に含まれる物理デバイスを表す経路情報を生成し、前記経路情報を含む転送指示を、前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つに送信し、
     前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つが、前記転送指示に応答して、データのエラーを検出するコードであり前記転送指示中の経路情報を含んだ保証コードを前記I/O対象データに付与する
    ストレージ制御装置。
  2.  前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つは、
      前記I/O対象データに付与された前記保証コードをチェックし、
      前記I/O対象データのエラーが検出された場合には、そのエラーのエラー通知を、前記対象転送経路における少なくとも1つのプロセッサに送信し、
     前記エラー通知を受信したプロセッサは、そのエラー通知に基づき、I/O対象データに付与された前記保証コードに含まれる経路情報を取得する
    請求項1に記載のストレージ制御装置。
  3.  前記1以上のメモリの少なくとも1つのメモリは、前記複数の物理デバイスのそれぞれのエラー回数を示すエラー回数情報を記憶し、
     前記エラー通知を受信したプロセッサは、前記取得した経路情報に基づき、前記対象転送経路に含まれるすべての物理デバイスのエラー回数を更新する
    請求項2に記載のストレージ制御装置。
  4.  前記1以上のメモリの少なくとも1つのメモリは、前記複数の物理デバイスのそれぞれのエラー回数の閾値を示す閾値情報が格納され、
     前記エラー通知を受信したプロセッサは、前記エラー回数情報及び前記閾値情報に基づき、前記エラー回数が前記閾値を超えた物理デバイスを、障害の発生した障害デバイスとして特定する
    請求項3に記載のストレージ制御装置。
  5.  前記対象転送経路は、複数のプロセッサを含み、
     前記対象転送経路における前記複数のプロセッサは、前記対象転送経路におけるFE I/Fから前記対象転送経路における1以上のメモリの少なくとも1つのメモリまでの転送経路部分である第1の転送経路部分に属する第1のプロセッサと、前記対象転送経路における1以上のメモリの少なくとも1つのメモリから前記対象転送経路におけるBE I/Fまでの転送経路部分である第2の転送経路部分に属する第2のプロセッサとを含む
    請求項1に記載のストレージ制御装置。
  6.  前記I/O処理が、ライト処理である場合であって、
     前記対象転送経路におけるプロセッサは、
     前記前記経路情報を含んだ保証コードをライト対象データに付与したBE I/Fを介して、前記ライト対象データを前記1以上の記憶デバイスのうちのライト先の記憶デバイスに格納する
    請求項1に記載のストレージ制御装置。
  7.  冗長化された第1及び第2のコントローラを有し、
     前記第1及び第2のコントローラのいずれも、単独で、前記ホスト計算機からのI/O要求に応じて、前記I/O要求に従うI/O対象データのI/Oを前記1以上の記憶デバイスのうちのI/O先の記憶デバイスに対して行うI/O処理を実行することができるようになっており、
     前記第1及び第2のコントローラの各々が、少なくとも1つのFE I/Fと、少なくとも1つのBE I/Fと、少なくとも1つのプロセッサと、少なくとも1つのメモリとを含んだ複数の物理デバイスを有し、
     前記対象転送経路は、前記第1のコントローラのFE I/F、プロセッサ及びメモリと、前記第2のコントローラのプロセッサ、メモリ及びBE I/Fとを含んでいる、
    請求項1に記載のストレージ制御装置。
  8.  前記複数の転送経路のうちの少なくとも1つの転送経路が、前記1以上の記憶デバイスのうちのI/O先の記憶デバイスを含む、
    請求項1に記載のストレージ制御装置。
  9.  1以上の記憶デバイスと、
     1以上のホスト計算機及び前記1以上の記憶デバイスに接続され、前記1以上のホスト計算機のうちのいずれかのホスト計算機からのI/O(Input/Output)要求に応じて、前記I/O要求に従うI/O対象データのI/Oを1以上の記憶デバイスのうちのI/O先の記憶デバイスに対して行うI/O処理を実行するストレージ制御装置と
    を有し、
     前記ストレージ制御装置は、前記1以上のホスト計算機に接続された複数の転送経路に含まれる複数の物理デバイスを有し、
     前記複数の物理デバイスは、前記1以上のホスト計算機に接続された複数のフロントエンドインタフェースデバイス(FE I/F)と、前記1以上の記憶デバイスに接続された複数のバックエンドインタフェースデバイス(BE I/F)と、1以上のメモリと、1以上のプロセッサとを含み、
     各転送経路は、前記複数のFE I/FのうちのいずれかのFE I/Fと、前記複数のBE I/FのうちのいずれかのBE I/Fと、前記1以上のメモリのうちのいずれかの少なくとも1つのメモリと、前記1以上のプロセッサのうちの少なくとも1つのプロセッサとを含み、
     前記複数の転送経路のうち前記I/O要求を受信したFE I/Fを含んだ転送経路である対象転送経路を介して前記I/O対象データが転送され、
     前記対象転送経路におけるプロセッサが、前記対象転送経路に含まれる物理デバイスを表す経路情報を生成し、前記経路情報を含む転送指示を、前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つに送信し、
     前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つが、前記転送指示に応答して、データのエラーを検出するコードであり前記転送指示中の経路情報を含んだ保証コードを前記I/O対象データに付与する
    ストレージシステム。
  10.  前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つは、
     前記I/O対象データに付与された前記保証コードをチェックし、
     前記I/O対象データのエラーが検出された場合には、そのエラーのエラー通知を、前記対象転送経路における少なくとも1つのプロセッサに送信し、
     前記エラー通知を受信したプロセッサは、そのエラー通知に基づき、I/O対象データに付与された前記保証コードに含まれる経路情報を取得する
    請求項9に記載のストレージシステム。
  11.  前記1以上のメモリの少なくとも1つのメモリは、前記複数の物理デバイスのそれぞれのデータエラーの回数を示すエラー回数情報を記憶し、
     前記エラー通知を受信したプロセッサは、前記取得した経路情報に基づき、前記対象転送経路に含まれるすべての物理デバイスのエラー回数を更新する
    請求項10に記載のストレージシステム。
  12.  前記1以上のメモリの少なくとも1つのメモリは、前記複数の物理デバイスのそれぞれのエラー回数の閾値を示す閾値情報を記憶し、
     前記エラー通知を受信したプロセッサは、前記エラー回数情報及び前記閾値情報に基づき、前記エラー回数が前記閾値を超えた物理デバイスを、障害の発生した障害デバイスとして特定する
    請求項11に記載のストレージシステム。
  13.  前記対象転送経路は、複数のプロセッサを含み、
     前記対象転送経路における前記複数のプロセッサは、前記対象転送経路におけるFE I/Fから前記対象転送経路における1以上のメモリの少なくとも1つのメモリまでの転送経路部分である第1の転送経路部分に属する第1のプロセッサと、前記対象転送経路における1以上のメモリの少なくとも1つのメモリから前記対象転送経路におけるBE I/Fまでの転送経路部分である第2の転送経路部分に属する第2のプロセッサとを含む
    請求項9に記載のストレージシステム。
  14.  1以上のホスト計算機のうちのいずれかのホスト計算機からのI/O(Input/Output)要求に応じて、前記I/O要求に従うI/O対象データのI/Oを1以上の記憶デバイスのI/O先の記憶デバイスに対して行うI/O処理を実行するストレージシステムの障害検出方法であって、
     前記ストレージシステムは、前記1以上のホスト計算機に接続された複数の転送経路に含まれる複数の物理デバイスを有し、
     前記複数の物理デバイスは、前記1以上のホスト計算機に接続された複数のフロントエンドインタフェースデバイス(FE I/F)と、1以上の記憶デバイスに接続された複数のバックエンドインタフェースデバイス(BE I/F)と、1以上のメモリと、1以上のプロセッサとを含み、
     各転送経路は、前記複数のFE I/FのうちのいずれかのFE I/Fと、前記複数のBE I/FのうちのいずれかのBE I/Fと、前記1以上のメモリのうちのいずれかの少なくとも1つのメモリと、前記1以上のプロセッサのうちの少なくとも1つのプロセッサとを含み、
     前記ストレージシステムが、前記複数の転送経路のうちの対象転送経路を介して前記I/O対象データを転送するようになっており、
     前記対象転送経路は、前記I/O要求を受信したFE I/Fを含んだ転送経路であり、
     前記障害検出方法が、
     前記対象転送経路におけるプロセッサが、前記対象転送経路に含まれる物理デバイスを表す経路情報を生成し、前記経路情報を含む転送指示を、前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つに送信し、
     前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つが、前記転送指示に応答して、データのエラーを検出するコードであり前記転送指示中の経路情報を含んだ保証コードを前記I/O対象データに付与する
    障害検出方法。
  15.  前記対象転送経路におけるFE I/F及びBE I/Fのうちの少なくとも1つは、
     前記I/O対象データに付与された前記保証コードをチェックし、
     前記I/O対象データのエラーが検出された場合には、そのエラーのエラー通知を、前記対象転送経路における少なくとも1つのプロセッサに送信し、
     前記エラー通知を受信したプロセッサは、そのエラー通知に基づき、I/O対象データに付与された前記保証コードに含まれる経路情報を取得する
    請求項14に記載の障害検出方法。

     
PCT/JP2013/081003 2013-11-18 2013-11-18 ストレージ制御装置 WO2015072028A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/377,602 US9495235B2 (en) 2013-11-18 2013-11-18 Identifying a physical device in which a fault has occurred in a storage system
PCT/JP2013/081003 WO2015072028A1 (ja) 2013-11-18 2013-11-18 ストレージ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/081003 WO2015072028A1 (ja) 2013-11-18 2013-11-18 ストレージ制御装置

Publications (1)

Publication Number Publication Date
WO2015072028A1 true WO2015072028A1 (ja) 2015-05-21

Family

ID=53056988

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/081003 WO2015072028A1 (ja) 2013-11-18 2013-11-18 ストレージ制御装置

Country Status (2)

Country Link
US (1) US9495235B2 (ja)
WO (1) WO2015072028A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2016194199A1 (ja) * 2015-06-04 2017-10-12 株式会社日立製作所 ストレージ装置
CN111669321A (zh) * 2020-06-11 2020-09-15 上海乾臻信息科技有限公司 路由请求实现方法、装置及系统
JP2021026541A (ja) * 2019-08-06 2021-02-22 株式会社日立製作所 ドライブボックス、ストレージシステム及びデータ転送方法
US20210271541A1 (en) * 2018-01-12 2021-09-02 SK Hynix Inc. Data processing system and operating method thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006119878A (ja) * 2004-10-21 2006-05-11 Matsushita Electric Ind Co Ltd ディスクアレイ装置及びディスクアレイ装置の故障検出方法
JP2010176513A (ja) * 2009-01-30 2010-08-12 Fujitsu Ltd ディスクアレイ装置、ディスクアレイ装置制御プログラム及びディスクアレイ装置制御方法
JP2011145823A (ja) * 2010-01-13 2011-07-28 Nec Corp 通信システム及びその障害検出方法
JP2012519317A (ja) * 2009-04-06 2012-08-23 株式会社日立製作所 ストレージ装置及びデータ転送方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519830A (en) * 1993-06-10 1996-05-21 Adc Telecommunications, Inc. Point-to-multipoint performance monitoring and failure isolation system
US7058844B2 (en) * 2001-06-15 2006-06-06 Sun Microsystems, Inc. System and method for rapid fault isolation in a storage area network
US7779306B1 (en) * 2007-03-23 2010-08-17 Emc Corporation Method for automatically diagnosing hardware faults in a data storage system
JP2011232910A (ja) 2010-04-27 2011-11-17 Hitachi Ltd メモリ診断方式
CN102833109B (zh) * 2012-08-30 2015-01-07 华为技术有限公司 故障点位置信息处理方法及设备
JP6212947B2 (ja) * 2013-05-16 2017-10-18 富士通株式会社 情報処理装置、制御装置及び制御プログラム
US9218240B2 (en) * 2013-09-26 2015-12-22 Globalfoundries Inc. Error detection and isolation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006119878A (ja) * 2004-10-21 2006-05-11 Matsushita Electric Ind Co Ltd ディスクアレイ装置及びディスクアレイ装置の故障検出方法
JP2010176513A (ja) * 2009-01-30 2010-08-12 Fujitsu Ltd ディスクアレイ装置、ディスクアレイ装置制御プログラム及びディスクアレイ装置制御方法
JP2012519317A (ja) * 2009-04-06 2012-08-23 株式会社日立製作所 ストレージ装置及びデータ転送方法
JP2011145823A (ja) * 2010-01-13 2011-07-28 Nec Corp 通信システム及びその障害検出方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2016194199A1 (ja) * 2015-06-04 2017-10-12 株式会社日立製作所 ストレージ装置
US20210271541A1 (en) * 2018-01-12 2021-09-02 SK Hynix Inc. Data processing system and operating method thereof
JP2021026541A (ja) * 2019-08-06 2021-02-22 株式会社日立製作所 ドライブボックス、ストレージシステム及びデータ転送方法
CN111669321A (zh) * 2020-06-11 2020-09-15 上海乾臻信息科技有限公司 路由请求实现方法、装置及系统

Also Published As

Publication number Publication date
US9495235B2 (en) 2016-11-15
US20160246671A1 (en) 2016-08-25

Similar Documents

Publication Publication Date Title
US8898385B2 (en) Methods and structure for load balancing of background tasks between storage controllers in a clustered storage environment
US9411764B2 (en) Optimized redundant high availability SAS topology
US9098466B2 (en) Switching between mirrored volumes
US8793373B2 (en) Network system and method for operating the same
US8984241B2 (en) Heterogeneous redundant storage array
US9213490B2 (en) Computer system and data migration method
US20230028569A1 (en) Computing system with distributed compute-enabled storage group and method of operation thereof
US20150153961A1 (en) Method for assigning storage area and computer system using the same
US8438332B2 (en) Apparatus and method to maintain write operation atomicity where a data transfer operation crosses a data storage medium track boundary
WO2013157032A1 (en) Storage subsystem and data management method of storage subsystem
US9304710B2 (en) Storage system and data transfer method of storage system
JP2007328611A (ja) ストレージ仮想化システム及び方法
WO2015072028A1 (ja) ストレージ制御装置
CN102843284B (zh) iSCSI存储节点、架构以及读取、写入方法
US9268493B2 (en) Systems and methods for smart storage interconnection in a heterogeneous storage environment
WO2014087440A1 (en) Storage system and method for managing configuration information thereof
US9785372B2 (en) Storage device and method for configuring raid group
US8312234B2 (en) Storage system configured from plurality of storage modules and method for switching coupling configuration of storage modules
WO2015068208A1 (ja) システムおよびその制御方法
US20180349031A1 (en) Storage system, storage device, and storage system control method
US20150370484A1 (en) Storage device and data input/output method
JP2009294699A (ja) ストレージ装置
CN108334459A (zh) 一种多端口固态硬盘的实现方案
US20150143041A1 (en) Storage control apparatus and control method
JP5856665B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法

Legal Events

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

Ref document number: 14377602

Country of ref document: US

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

Ref document number: 13897502

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP