+

WO2018198325A1 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
WO2018198325A1
WO2018198325A1 PCT/JP2017/016951 JP2017016951W WO2018198325A1 WO 2018198325 A1 WO2018198325 A1 WO 2018198325A1 JP 2017016951 W JP2017016951 W JP 2017016951W WO 2018198325 A1 WO2018198325 A1 WO 2018198325A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
processor
memory
storage
address
Prior art date
Application number
PCT/JP2017/016951
Other languages
English (en)
French (fr)
Inventor
健太郎 島田
山本 彰
定広 杉本
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2017/016951 priority Critical patent/WO2018198325A1/ja
Priority to JP2017170379A priority patent/JP6734824B2/ja
Priority to US15/959,675 priority patent/US10402361B2/en
Priority to CN201810390254.7A priority patent/CN108804030B/zh
Publication of WO2018198325A1 publication Critical patent/WO2018198325A1/ja
Priority to US16/524,375 priority patent/US10789196B2/en

Links

Images

Classifications

    • 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
    • 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

Definitions

  • the present invention relates to a storage system.
  • a storage system generally has a storage controller and a plurality of randomly accessible non-volatile storage devices.
  • the nonvolatile storage device is, for example, a hard disk drive (HDD) or a solid state drive (SSD). There is also an example where both are mixed.
  • Patent Document 1 discloses a storage system having a back-end switch.
  • the storage system is provided with, for example, two storage control units, so that even if one of them stops operating, the remaining one can continue the operation as a storage system to maintain availability.
  • the two storage control units are connected via a special communication path different from the back-end switch, and exchange various control information.
  • Patent Document 1 discloses a configuration having two storage control units and a bus different from the back-end switch between them.
  • the communication path between the two storage control units uses a communication standard that is easy to connect directly to the processor included in the storage control unit in order to suppress overhead related to communication.
  • a communication standard that can be directly connected to such a processor is PCI Express, which is a communication standard between a processor and an input / output device.
  • SCSI Serial Computer System Interface
  • Fiber Channel or SAS (Serial Attached SCSI) is generally used as the communication standard between the storage control unit and the storage device that is aggregated by the back-end switch. .
  • the communication standard communication path between these storage control units and storage devices cannot be directly connected to the processor provided in the storage control unit, and a dedicated interface is required to use for communication between the storage control units.
  • Patent Document 2 discloses a technique for performing communication between different storage control units via a back-end switch.
  • the technology disclosed in Patent Document 2 enables communication between different storage control units by using a shared storage area included in the back-end switch.
  • NVM Express compatible with PCI Express has been newly used as a communication standard between the storage control unit and the storage device.
  • a storage system configured using the conventional technology uses a communication standard that can be easily connected to a processor of a storage control unit such as PCI Express for communication between two storage control units. For this reason, the conventional storage system requires a special communication path exclusively between the storage control units.
  • PCI Express is a communication standard between a processor and an input / output device, and does not stipulate communication between two processors of two storage control units. Therefore, by simply using PCI Express, even if a physical communication path can be directly connected to the processor, the communication procedure between the two processors cannot be determined, so communication between the two processors cannot be performed.
  • the communication standard between the storage control unit and the storage device aggregated by the back-end switch is not compatible with the communication standard between such storage control units. Communication between storage control units via the back-end switch is difficult.
  • the technique disclosed in Patent Document 2 requires periodic inspection of the shared storage area of the back-end switch and the shared area for communication detection by the storage control unit.
  • the communication between the storage control units via the back-end switch requires special means and causes a performance overhead.
  • NVM Express which is compatible with PCI Express, is a communication standard between one storage control unit and a storage device, and does not stipulate any communication between the two storage control units. For this reason, communication between the two storage control units cannot be performed by NVM Express.
  • An example of the present invention includes a first storage control unit including a first processor and a first memory, a second storage control unit including a second processor and a second memory, and one or more storage devices.
  • One or more back-end switches connecting the first processor, the second processor, and the one or more storage devices, each of the one or more back-end switches being the first processor
  • a destination of the frame is identified with reference to the frame received from the first processor, and when the destination of the frame is the second processor, the second processor includes the second processor in the address space of the first processor.
  • a first address that identifies a location on the second memory and a first address that identifies the location on the second memory in the address space of the second processor.
  • the frame including the second address is sent to the second storage control unit, and the destination of the frame is the first storage device in the one or more storage devices
  • a storage system for transmitting the frame to the first storage device without converting a third address included in the frame and identifying the first storage device in the address space of the first processor It is.
  • Another example of the present invention includes a first storage control unit including a first processor and a first memory, a second storage control unit including a second processor and a second memory, and one or more memories.
  • a data transfer instruction including an address of 5 and a data length to be transferred is received from the first processor, and the fifth address is an address of the second processor.
  • converting to a sixth address that identifies the second location on the second memory The storage system transfers the first data having the data length to the storage system.
  • efficient communication between storage control units is enabled via a back-end switch that connects between the storage control unit and the storage device.
  • FIG. 1 is a configuration example of a storage system.
  • FIG. 2 shows another configuration example of the storage system.
  • FIG. 3A shows an example of data request, data return, and data transmission frames communicated between storage control units.
  • FIG. 3B is an example of a switching information table for determining a switching operation for an address given to a frame sent from the processor in the back-end switch.
  • FIG. 3C is a diagram illustrating an example of a flowchart illustrating a processing procedure when the back-end switch receives data transmission or a data request from the processor.
  • FIG. 4A shows an example of a switching information table.
  • FIG. 4B is a diagram illustrating an example of a flowchart illustrating a processing procedure when the back-end switch receives data transmission or a data request from the storage device.
  • FIG. 5A is a diagram illustrating an example of a sequence of processing in which the first storage control unit transmits data to the second storage control unit.
  • FIG. 5B is a diagram illustrating an example of a sequence of processing in which the first storage control unit acquires data from the second storage control unit.
  • FIG. 6A is a diagram illustrating an example of a sequence of processing in which the storage control unit transmits data to the storage device.
  • FIG. 6B is a diagram illustrating an example of a sequence of processing in which the storage control unit acquires data from the storage device.
  • FIG. 7A is a diagram illustrating an example of a sequence of processing in which the storage device transmits data to the storage control unit.
  • FIG. 7B is a diagram illustrating an example of a sequence of processing in which the storage device acquires data from the storage control unit.
  • FIG. 8A is a frame format example of a data transfer instruction that can be used in the storage system.
  • FIG. 8B is a flowchart illustrating an example of a processing procedure when the back-end switch receives a data transfer instruction from the storage control unit.
  • FIG. 9A is a diagram illustrating another example of a processing sequence in which the first storage control unit transmits data to the second storage control unit.
  • FIG. 9B is a diagram illustrating another example of a sequence of processing in which the first storage control unit acquires data from the second storage control unit.
  • FIG. 10 is a diagram illustrating another example of a flowchart illustrating a processing procedure when the back-end switch receives data transmission or a data request from the processor.
  • FIG. 11 is a diagram illustrating another example of a processing sequence in which the first storage control unit transmits data to the second storage control unit.
  • FIG. 12 is a diagram illustrating another example of a flowchart illustrating a processing procedure when the back-end switch receives a data transfer instruction from the storage control unit.
  • FIG. 13A is a diagram illustrating another example of a processing sequence in which the first storage control unit transmits data to the second storage control unit.
  • FIG. 13B is a diagram illustrating another example of a processing sequence in which the first storage control unit acquires data from the second storage control unit.
  • FIG. 14 is a diagram illustrating another example of a flowchart illustrating a processing procedure when the back-end switch receives a data transfer instruction from the storage control unit.
  • FIG. 15 is a diagram showing still another example of a flowchart showing a processing procedure when the back-end switch receives a data transfer instruction from the storage control unit.
  • FIG. 16 is a diagram illustrating another example of a processing sequence in which the first storage control unit transmits data to the second storage control unit.
  • FIG. 17 is a configuration example for connecting a storage system and another storage system.
  • FIG. 18 shows another configuration example for connecting a storage system and another storage system.
  • FIG. 19 is a diagram illustrating an example of a flowchart illustrating a processing procedure when one storage control unit of a storage system receives a request from a higher-level device.
  • FIG. 20 is a diagram illustrating an example of a processing sequence when the storage control unit receives a data write request from a higher-level device.
  • FIG. 21 is a diagram illustrating another example of a flowchart illustrating a processing procedure when one storage control unit of a storage system receives a request from a higher-level device.
  • FIG. 22 is a diagram illustrating another example of a processing sequence when the storage control unit receives a data write request from a higher-level device.
  • FIG. 23 is a diagram illustrating another example of a flowchart illustrating a processing procedure when one storage control unit of a storage system receives a request from a higher-level device.
  • FIG. 24 is a diagram illustrating another example of a processing sequence when the storage control unit receives a data write request from a higher-level device.
  • FIG. 25 is a diagram illustrating another example of a flowchart illustrating a processing procedure when one storage control unit of a storage system receives a request from a higher-level device.
  • FIG. 26 is a diagram illustrating another example of a processing sequence when the storage control unit receives a data write request from a higher-level device.
  • FIG. 27 is a diagram illustrating another example of a flowchart illustrating a processing procedure when the back-end switch receives data transmission or a data request from the processor.
  • FIG. 28 is a diagram illustrating another example of a flowchart illustrating a processing procedure when the back-end switch receives data transmission or a data request from the processor.
  • FIG. 29 is a diagram illustrating another example of a processing sequence in which the first storage control unit transmits data to the second storage control unit.
  • FIG. 1 is a configuration example of a storage system according to the first embodiment.
  • the storage system includes two storage control units 103A and 103B.
  • the storage control unit 103A includes a processor 101A and a memory 102A
  • the storage control unit 103B includes a processor 101B and a memory 102B.
  • Processors 101A and 101B are connected to backend switch 104 by paths 106A and 106B, respectively.
  • the storage system according to the first embodiment includes storage devices 105A to 105F, and the storage devices 105A to 105F are connected to the back-end switch 104 through paths 107A to 107F, respectively.
  • FIG. 1 shows six storage devices 105A to 105F, but the number of storage devices is arbitrary.
  • Some or all of the functions of the back-end switch 104 may be realized by hardware, for example, by designing with an integrated circuit, or software by interpreting and executing a program that realizes each function by the processor. It may be realized with.
  • FIG. 3A shows an example of data request, data return, and data transmission frames communicated between the storage control units. Each frame may be sent as one unit or may be sent divided into packets.
  • FIG. 3B shows an example of a frame format, and other formats, for example, a packet format used in PCI Express may be used.
  • the data request frame 331 indicates a number indicating a data request (“0” in the example of FIG. 3A) in the head field.
  • the next field indicates a tag number (t) that distinguishes a plurality of data request frames. In general, the tag number allows the next data request to be sent before data is returned for one data request.
  • the next field indicates the data length.
  • the data length is represented by, for example, a byte unit or the number of data blocks of a predetermined size.
  • the next field indicates the requested address.
  • the request destination address indicates an address of an address space used by the processor in the request destination storage control unit.
  • the request destination address is converted by the back-end switch 104 from an address in the address space used by the processor in the request source storage control unit to an address used by the processor in the request destination storage control unit.
  • the data return frame 332 indicates a number indicating data return (“1” in the example of FIG. 3A) in the first field.
  • the next field indicates the tag number attached to the frame of the data request and identifies which data request is to be returned.
  • the next field indicates the data length.
  • the last field stores the data to be returned.
  • the data transmission frame 333 indicates a number indicating data transmission (“2” in the example of FIG. 3B) in the head field.
  • the next field indicates the data length.
  • the next field indicates the destination address.
  • the destination address indicates an address of an address space used by the processor in the destination storage control unit.
  • the destination address is converted by the back-end switch 104 from an address in the address space used by the processor in the source storage control unit to an address used by the processor in the destination storage control unit.
  • the last field stores the data to be sent.
  • FIG. 3B shows an example of the switching information table 350 for determining the switching operation for the address given to the frame sent from the processor 101A in the back-end switch 104.
  • the address is expressed in hexadecimal.
  • addresses 0000 to 00ff are addresses assigned to the memory 102A by the processor 101A.
  • a frame having an address in this address area is not sent from the processor 101A to the back-end switch 104.
  • the processor 101A directly accesses the memory 102A.
  • a frame to which an address after address 0100 is assigned arrives at the back-end switch 104 from the processor 101A.
  • the destination of the address 0180 is the processor 101B (memory 102B), and is sent to the path 106B.
  • the back-end switch 104 converts the destination address of the frame to the processor 101B (memory 102B).
  • the address 0180 of the processor 101A is converted to the address 0080 of the processor 101B.
  • the destination is determined to be the storage device 105C, and the frame is sent toward the path 107c connected to the storage device 105c. As will be described later, the frame to the storage device is not subjected to address translation by the back-end switch 104.
  • the switching of the frame received from the processor 101B also refers to the switching information table having the same configuration.
  • a frame whose destination is the processor 101A (memory 102A) is subjected to the address conversion, and a frame to the storage device is not subjected to the address conversion.
  • the back-end switch 104 receives a data transfer instruction from the processor 101A or 101B and performs address conversion, a switching information table holding address conversion information and destination information having the same configuration is used.
  • FIG. 3C is an example of a flowchart illustrating a processing procedure when the back-end switch 104 receives data transmission or a data request from the processor 101A.
  • the processing procedure when the back-end switch 104 receives data transmission or data request from the processor 101B is the same. In that case, the processor 101A and the processor 101B in FIG. 3C are interchanged.
  • step 300 the back-end switch 104 receives data transmission or data request from the processor 101A.
  • step 301 the back-end switch 104 refers to the destination address or request destination address (destination address) and the switching information table 350, and determines the destination of the data transmission or data request. If the destination is the processor 101B (301: processor 101B), the back-end switch 104 proceeds to step 302. In step 302, the backend switch 104 selects a path to the processor 101B. This route corresponds to the path 106B in FIG.
  • step 303 the back-end switch 104 converts the destination address of the received data transmission or data request with reference to the switching information table 350.
  • the address before conversion is an address in the address space used by the processor 101A
  • the address after conversion is an address in the address space used by the processor 101B.
  • the processor 101A and the processor 101B are independent from each other, and the address space used by each processor and the address specifying the location in the memory are determined independently. For this reason, it is possible to transfer data between processors (memory) by converting each other's address according to a predetermined rule defined by the switching information table 350.
  • step 304 the back-end switch 104 sends the data or data request to the processor 101B and ends.
  • step 301 if the destination is any of the storage devices 105A to 105F (301: storage devices 105A to 105F), the back-end switch 104 proceeds to step 305.
  • step 305 the back-end switch 104 selects any one of the paths 107A to 107F to the storage devices 105A to 105F.
  • step 306 the back-end switch 104 sends the data transmission or data request to the storage device and ends.
  • the storage devices 105A to 105F receive frames from the processor 101A or 101B and read / write specified data. Further, the storage devices 105A to 105F receive a special data pattern in which a command code for instructing a specific operation is encoded, and perform the instructed operation.
  • Storage devices 105A to F105 send frames to back-end switch 104.
  • the destinations of the frames received from the storage devices 105A to 105F are predetermined for the storage devices 105A to 105F in the back-end switch 104.
  • the destination is, for example, the processor 101A or the processor 101B.
  • the backend switch 104 performs switching so as to send the data frame received from the storage devices 105A to 105F toward the path 106A to the processor 101A or the path 106B to the processor 101B according to a predetermined setting.
  • the back-end switch 104 may perform a switching operation based on the address given to the data frame received from the storage devices 105A to 105F using the switching information table.
  • FIG. 4A shows an example of the switching information table 450.
  • the switching information table 450 defines the relationship between the address range in the address space of the storage device, the destination, and the address range in the processor address space.
  • the back end switch 104 receives a data frame to which, for example, an address 0440 is given from the storage device.
  • the back-end switch 104 performs switching so as to send the data frame toward the path 106A.
  • the backend switch 104 converts the address 0440 into an address 0040 that the processor 101A uses to access the memory 102A. As a result, the processor 101A can correctly access the memory 102A.
  • the back-end switch 104 when the back-end switch 104 receives a data frame assigned with the address 0560 from the storage device, the back-end switch 104 performs switching so as to send the data frame toward the path 106B.
  • the back-end switch 104 converts the address 0560 into the address 0060.
  • FIG. 4B is an example of a flowchart showing a processing procedure when the back-end switch 104 receives data transmission or data request from the storage devices 105A to 105F.
  • the backend switch receives a data transmission or data request from one of the storage devices 105A-105F.
  • step 401 the back-end switch 104 determines the destination of the data transmission or data request. The determination method is as described above. If the destination is the processor 101A (401: processor 101A), the back-end switch proceeds to step 402. In step 402, the backend switch 104 selects a path to the processor 101A. This route corresponds to the path 106A in FIG.
  • step 403 sends the data transmission or data request to the processor 101A using the selected route, and ends the processing.
  • step 401 if the destination is the processor 101B (401: processor 101B), the back-end switch 104 proceeds to step 404.
  • step 404 the backend switch 104 selects a path to the processor 101B. This route corresponds to the path 106B in FIG.
  • step 403 sends the data transmission or data request to the processor 101B using the selected route, and ends the processing.
  • 5A and 5B respectively show a sequence example of processing in which the storage control unit 103A transmits data to the storage control unit 103B, and a sequence example of processing in which the storage control unit 103A acquires data from the storage control unit 103B.
  • the sequence of processing in which the storage control unit 103B transmits data to the storage control unit 103A or acquires data from the storage control unit 103A is the same. 5A and 5B, the storage control unit 103A and the storage control unit 103B are replaced, the processor 101A and the processor 101B are replaced, and the memory 102A and the memory 102B are replaced.
  • step 501 the processor 101A acquires data from the memory 102A.
  • step 502 the processor 101A assigns an address A that identifies the location on the memory 102B to the acquired data, and sends the acquired data to the back-end switch 104.
  • the address A identifies a specific location on the memory 102B in the address space of the processor 101A.
  • steps 501 and 502 may be executed by software operating on the processor 101A, and all or part of them is performed by functional hardware (circuits) installed in the processor 101 that operates according to software instructions. May be executed.
  • the software specifies an address for identifying the location of data on the memory 102A, an address A for identifying a location on the memory 102B, and the length of data to be sent.
  • the functional hardware reads data having a specified length from the address on the specified memory 102A, generates a frame including the data and the specified destination address, and sends the frame to the back-end switch 104.
  • the back-end switch 104 refers to the switching information table 350, converts the address A into an address B used by the processor 101B to identify a location on the memory 102B, and sends the address B to the processor 101B.
  • the reason for converting address A to address B is as described in step 303 of FIG. 3C.
  • the processor 101B receives the frame to which the address B is assigned from the back-end switch 104.
  • the processor 101B stores data in the memory 102B according to the address B.
  • Step 504 may be performed by software running on processor 101B.
  • Functional hardware circuit that automatically stores data in the memory 102B according to the address B when the data to which the address B is assigned is received from the back-end switch 104 may be installed in the processor 101B.
  • processor 101A assigns address C for identifying a location on memory 102B in the address space of processor 101A, and sends a data request to backend switch 104.
  • Step 511 may be executed by software operating on the processor 101A, or may be executed by functional hardware (circuit) installed in the processor 101A.
  • the software operating on the processor 101A specifies the address C for identifying the location on the memory 102B, the location on the memory 102A for storing the acquired data, and the length of the acquired data.
  • the functional hardware generates and sends a data request that includes the specified information.
  • the back end switch 104 receives the data request to which the address C is given from the processor 101A.
  • the backend switch 104 converts the address C to an address D that the processor 101B uses to identify a location on the memory 102B and sends a data request to the processor 101B.
  • the reason for converting the address C to the address D is as described in step 303 of FIG. 3C.
  • the processor 101B receives the data request to which the address D is assigned from the back-end switch 104. In step 513, the processor 101B acquires data from the memory 102B according to the address D. In step 514, the processor 101B returns the data acquired from the memory 102B to the back-end switch 104.
  • Steps 513 and 514 may be executed by software operating on the processor 101B, or may be executed by functional hardware (circuit) mounted on the processor 101B.
  • the functional hardware When receiving the data request to which the address D is assigned from the back-end switch 104, the functional hardware automatically acquires data from the memory 102B according to the address D and returns it to the back-end switch 104, for example.
  • the back end switch 104 receives the data returned from the processor 101B in response to the data request sent in step 512. In step 515, the back-end switch 104 returns the returned data to the processor 101A.
  • the processor 101A receives a data return in response to the data request sent in step 511 from the back-end switch 104.
  • the processor 101A stores the returned data in the memory 102A.
  • Step 516 may be executed by software operating on the processor 101A, or may be executed by functional hardware (circuit) implemented in the processor 101A. For example, when the functional hardware receives a data return from the back-end switch 104, it automatically stores it in the memory 102A.
  • FIG. 6A shows an example of a processing sequence in which the storage control unit 103A transmits data to the storage devices 105A to 105F.
  • the storage control unit 103B can be applied to the following description. In this case, the storage control unit 103A, the processor 101A, and the memory 102A are replaced with the storage control unit 103B, the processor 101B, and the memory 102B, respectively. This is the same for the description of FIG. 6B.
  • step 601 the processor 101A acquires data from the memory 102A.
  • step 602 the processor 101A assigns designation to which of the storage devices 105A to 105F the acquired data is to be sent, and sends it to the back-end switch 104.
  • Steps 601 and 602 may be executed by software operating on the processor 101A, and all or part of them may be executed by functional hardware (circuit) mounted on the processor 101A.
  • the software designates the data acquisition location on the memory 102A, the destination storage device, and the data length to send, and the functional hardware operates according to the designated information.
  • the backend switch 104 receives data sent from the processor 101A to the storage device. In step 603, the back-end switch 104 sends the data to one of the storage devices 105A to 105F in accordance with the designation of the destination storage device given to the received data.
  • FIG. 6B is an example of a processing sequence in which the storage control unit 103A acquires data from the storage devices 105A to 105F.
  • the processor 101A gives designation of which of the storage devices 105A to 105F obtains data and sends a data request to the back-end switch 104.
  • Step 611 may be executed by software operating on the processor 101A, or may be executed by functional hardware (circuit) installed in the processor 101A.
  • the software designates from which storage device the data is acquired, the location on the memory 102A where the acquired data is stored, and the data length to be acquired.
  • the functional hardware operates according to the specified information.
  • the back-end switch 104 receives a data request to which designation of which storage device from which data is acquired is given from the processor 101A. In step 612, the backend switch 104 sends the data request to the designated storage device.
  • the storage device When the storage device receives the data request from the backend switch 104, the storage device returns the requested data to the backend switch 104 in step 613.
  • the data is returned from the storage device to the back-end switch 104.
  • the back-end switch 104 further returns the data returned to the processor 101A that is the data request sending source.
  • Step 615 the processor 101A stores the returned data in the memory 102A.
  • Step 615 may be executed by software operating on the processor 101A, or may be executed by functional hardware (circuit) implemented in the processor 101A.
  • the functional hardware receives a data return from the back-end switch 104, it automatically stores it in the memory 102A.
  • FIG. 7A shows an example of a processing sequence in which one of the storage devices 105A to 105F sends data to the memory 102A.
  • the following description can also be applied to the memory 102B.
  • the processor 101A and the memory 102A are replaced with the processor 101B and the memory 102B, respectively. This point is similar to the description of FIG. 7B.
  • one of the storage devices 105A to 105F designates a location on the memory 102A and sends the data to the back-end switch 104 in step 701.
  • the data transmission frame 333 shown in FIG. 3A is used.
  • the back-end switch 104 When the back-end switch 104 receives data from one of the storage devices 105A to 105F, in step 702, according to whether the specified memory is the memory 102A or the memory 102B, the back-end switch 104 specifies the location on the memory 102A or 102B. At the same time, it is sent to the processor 101A or 101B. In this example, the designated memory is 102A.
  • the back-end switch 104 may make a determination based on the address given to the data frame received from the storage devices 105A to 105F using the switching information table 450 shown in FIG. 4A. In this case, as described with reference to FIG. 4A, the back-end switch 104 uses the information in the switching information table 450 to specify the destination address included in the data transmission frame received from the storage devices 105A to 105F. Convert to the address space to be used.
  • Step 703 When the processor 101A receives data from the back-end switch 104, in step 703, the processor 101A stores the received data in a designated location on the memory 102A.
  • Step 703 may be executed by software operating on the processor 101A, may perform processing, or automatically receives data from the back-end switch 104 in the processor 101A or 101B and automatically stores it in the memory 102A or 102B. You may provide the function of the hardware to store.
  • FIG. 7B is an example of a processing sequence in which one of the storage devices 105A to 105F acquires data from the memory 102A.
  • one of the storage devices 105A to 105F specifies a location on the memory 102A from which data is acquired, and sends a data request to the back-end switch 104.
  • the data request frame 331 shown in FIG. 3A is used.
  • step 712 the back-end switch 104 sends the received data request to the processor 101A or 101B together with the designation of the location on the memory 102A or 102B according to whether the designated memory is the memory 102A or the memory 102B.
  • the memory 102A is designated.
  • the back-end switch 104 may make a determination based on the address given to the data frame received from the storage devices 105A to 105F using the switching information table 450 shown in FIG. 4A. In this case, as described with reference to FIG. 4A, the back-end switch 104 uses the information in the switching information table 450 to specify the destination address included in the data transmission frame received from the storage devices 105A to 105F. Convert to the address space to be used.
  • the processor 101A When the processor 101A receives the data request from the back-end switch 104, in step 713, the processor 101A acquires the data from the designated location on the memory 102A. Further, in step 714, the processor 101A returns the data acquired from the memory 102A to the back-end switch 104.
  • Steps 713 and 714 may be executed by software operating on the processor 101A, or may be executed by functional hardware (circuit) mounted on the processor 101A.
  • the functional hardware when receiving a data request from the back-end switch 104, the functional hardware automatically obtains data from the memory 102A according to the designated location on the memory 102A and returns it to the back-end switch 104.
  • the back-end switch 104 When the data is sent back from the processor 101A in response to the data request sent in step 712, the back-end switch 104 further sends the data in step 715 to the storage device 105A-105 that sent the data request in step 711. Return to one of 105F.
  • compatible communication standards are applied to communication between storage control units and communication between storage control units and storage devices.
  • the storage control units 103 ⁇ / b> A and 103 ⁇ / b> B can communicate with each other using the back-end switch 104.
  • the storage control units 103A and 103B can duplicate the data via the back-end switch 104. Since sufficient reliability and availability can be ensured even if writing to the storage devices 105A to 105F is not completed, it is possible to notify the host device of the completion of writing before writing to the storage devices 105A to 105F. Further, the back-end switch 104 does not require a shared storage area.
  • FIG. 2 is a configuration example of the storage system according to the second embodiment.
  • the storage system includes two storage control units 203A and 203B.
  • the storage control unit 203A includes a processor 201A and a memory 202A.
  • the storage control unit 203B includes a processor 201B and a memory 202B.
  • the storage system according to the second embodiment includes two mutually independent back-end switches 204A and 204B.
  • the processor 201A is connected to the back-end switches 204A and 204B by paths 206A and 208A, respectively.
  • Processor 201B is connected to backend switches 204A and 204B by paths 206B and 208B, respectively.
  • the storage system according to the second embodiment includes storage devices 205A to 205F.
  • the storage devices 205A to 205F are connected to the back end switch 204A by paths 207A to 207F, respectively.
  • the storage devices 205A to 205F are connected to the back end switch 204B by paths 209A to 209F, respectively.
  • the processors 201A and 201B are connected to all the storage devices 205A to 205F and the other processors 201B and 201A even if only one of the back-end switches 204A and 204B is used.
  • FIG. 2 shows six storage devices 205A to 205F, but the number of storage devices is arbitrary.
  • 3A to 7B in the first embodiment can be applied to the storage system according to the second embodiment.
  • the storage controllers 103A and 103B, the processors 101A and 101B, and the memories 102A and 102B are replaced with storage controllers 203A and 203B, processors 201A and 201B, and memories 202A and 202B, respectively.
  • the back-end switch 104 is replaced with the back-end switch 204A or 204B, and the storage devices 105A to 105F are replaced with the storage devices 205A to 205F.
  • the storage controllers 203A and 203B can communicate with each other using the back-end switch 204A or 204B. For example, when data for writing to the storage devices 205A to 205F is received from a host device not shown in FIG. 2, the storage control units 203A and 203B can duplicate the data via the back-end switch 204A or 204B.
  • Example 3 will be described with reference to FIGS. 1, 4A, 4B, 6A to 9B, and 27.
  • FIG. in the third embodiment the description of FIGS. 1, 4A, 4B, and 6A to 7B is the same as that of the first embodiment.
  • FIG. 27 is an example of a flowchart showing a processing procedure when the back-end switch 104 receives data transmission or a data request from the processor 101A.
  • the processing procedure when the back-end switch 104 receives data transmission or data request from the processor 101B is the same. In that case, the processor 101A in FIG. 27 is replaced with the processor 101B.
  • step 2700 the back end switch 104 receives data or a data request from the processor 101A.
  • step 2701 the back-end switch 104 selects one of the paths 107A to 107F to the storage devices 105A to 105F.
  • step 2702 the back-end switch 104 sends the data transmission or data request to the storage device, and ends the process.
  • FIG. 8A is a frame format example of a data transfer instruction that can be used in the storage system according to the third embodiment.
  • a data transfer instruction 851 in the first format is a data transfer instruction from the processor 101A to the back-end switch 104.
  • the data transfer instruction 851 specifies the data transfer direction.
  • the first field specifies the transfer direction.
  • the transfer direction is represented by 0 or 1, for example. For example, 0 indicates that data is transferred from the processor 101A to the processor 101B. 1 indicates that data is transferred from the processor 101B to the processor 101A.
  • the next field indicates the data length to be transferred.
  • the next field indicates an address on the memory 102A in the address space of the processor 101A.
  • the last field indicates an address on the memory 102B of the processor 101B set in the address space of the processor 101A.
  • the data transfer instruction 851 needs to include information for specifying the data transfer direction. For example, the address conversion is always performed on the memory 102 of the processor 101B set by the last processor 101A. An address conversion function can be easily provided in the end switch 104.
  • the data transfer instruction 852 of the second format indicates the transfer direction by designating the transfer source address and the transfer destination address.
  • the transfer direction field is not required.
  • the first field indicates the data length.
  • the next field indicates the transfer source address.
  • the last field indicates the transfer destination address.
  • FIG. 8B is an example of a flowchart showing a processing procedure when the back-end switch 104 receives a data transfer instruction from the processor 101A.
  • the processing procedure when the back-end switch 104 receives a data transfer instruction from the processor 101B is the same. In that case, in the following description, the processor 101A and the processor 101B are interchanged, and the memory 102A and the memory 102B are interchanged.
  • back-end switch 104 receives a data transfer instruction from processor 101A in step 800.
  • the back-end switch 104 determines the transfer direction of the received data transfer instruction. If the transfer direction is transfer from the memory 102A to the memory 102B (801: transfer from the memory 102A to the memory 102B), the process proceeds to step 802.
  • step 802 the back-end switch 104 acquires data to be transferred from the memory 102A.
  • step 803 the back-end switch 104 converts the transfer destination address designated by the processor 101A in the data transfer instruction into an address used by the processor 101B.
  • the switching information table 350 is referred to.
  • the processor 101A and the processor 101B are processors independent from each other, and addresses specifying the memory locations used by the processors 101A and 101B are determined independently. For this reason, this embodiment also converts each other's address according to a predetermined rule.
  • step 804 the back-end switch 104 writes the data acquired from the memory 102A in the memory 102B according to the converted address, and ends the process.
  • step 801 if the transfer direction is transfer from the memory 102B to the memory 102A (801: transfer from the memory 102B to the memory 102A), the process proceeds to step 805.
  • step 805 as in step 803, the back-end switch 104 converts the transfer source address designated by the processor 101A into an address used by the processor 101B.
  • step 806 the back-end switch 104 acquires data from the memory 102B according to the converted address.
  • step 807 the back-end switch 104 writes the data acquired from the memory 102B to the memory 102A, and ends the process.
  • FIG. 9A is an example of a sequence of processing in which the storage control unit 103A sends data to the storage control unit 103B according to the processing procedure shown in the flowchart of FIG. 8B.
  • FIG. 9B is an example of a processing sequence in which the storage control unit 103A acquires data from the storage control unit 103B.
  • the processing sequence in which the storage control unit 103B sends data to the storage control unit 103A or acquires data from the storage control unit 103A is the same.
  • the storage control unit 103A, the processor 101A, and the memory 102A are replaced with the storage control unit 103B, the processor 101B, and the memory 102B, respectively.
  • processor 101A transfers data including an address A for identifying a location on transfer destination memory 102B, an address for identifying a location on transfer source memory 102A, and the length of data to be transferred.
  • An instruction is sent to the backend switch 104.
  • the two specified addresses are addresses in the address space of the processor 101A.
  • step 902 the back-end switch 104 sends a request for acquiring transfer source data from the designated data transfer source address in the memory 102A to the processor 101A.
  • step 903 the processor 101A acquires data from the requested address on the memory 102A.
  • step 904 the processor 101A returns the data acquired from the memory 102A to the back-end switch 104.
  • Steps 903 and 904 may be executed by software operating on the processor 101A, or may be executed by functional hardware (circuit) implemented in the processor 101A.
  • the functional hardware automatically acquires data from the memory 102A according to the designated address and returns it to the back-end switch 104.
  • the back end switch 104 receives the data of the transfer source from the processor 101A.
  • the back-end switch 104 uses the address A in the data transfer instruction sent from the processor 101A to identify the location on the memory 102B to which the processor 101A is to transfer on the memory 102B used by the processor 101B. Convert to address B.
  • the switching information table 350 is referred to.
  • the back-end switch 104 gives an address B and sends the data returned from the processor 101A to the processor 101B.
  • the reason for converting address A to address B is as described in step 803 of FIG. 8B.
  • the processor 101B receives data to which the address B is assigned from the back-end switch 104.
  • the processor 101B stores the data sent to the memory 102B according to the address B.
  • Step 906 may be executed by software operating on the processor 101B, or may be executed by functional hardware (circuit) implemented in the processor 101B.
  • the functional hardware When the functional hardware receives the data with the address B from the back-end switch 104, the functional hardware automatically stores the data in the memory 102B according to the address B.
  • processor 101A sends a data transfer instruction to back-end switch 104.
  • the data transfer instruction includes an address C for identifying the location on the transfer source memory 102B by the processor 101A, an address for identifying the location on the transfer destination memory 102A, and the data length to be transferred.
  • the back-end switch 104 converts the address C included in the data transfer instruction sent by the processor 101A into an address D used by the processor 101B to identify a location on the memory 102B.
  • the switching information table 350 is referred to.
  • the back-end switch 104 gives an address D and sends a data acquisition request to the processor 101B.
  • the reason for converting the address C to the address D is as described in step 803 of FIG. 8B.
  • the processor 101B receives the data request to which the address D is assigned from the backend switch 104. In step 913, the processor 101B acquires data from the memory 102B according to the address D. Next, in step 914, the processor 101B returns the data acquired from the memory 102B to the back-end switch 104.
  • Steps 913 and 914 may be executed by software operating on the processor 101B, or may be executed by functional hardware (circuit) mounted on the processor 101B.
  • the functional hardware When receiving the data request to which the address D is assigned from the back-end switch 104, the functional hardware automatically acquires the data from the memory 102B according to the address D and returns it to the back-end switch 104.
  • the back end switch 104 receives the data acquired from the memory 102B from the processor 101B in response to the data request sent to the processor 101B in step 912. In step 915, the back-end switch 104 assigns the received data to the processor 101A with an address on the transfer destination memory 102A indicated in the transfer instruction.
  • Step 916 may be executed by software operating on the processor 101A, or may be executed by functional hardware (circuit) implemented in the processor 101A.
  • the functional hardware automatically stores the data in the memory 102A according to the assigned address.
  • the storage control units 103A and 103B can communicate with each other using the back-end switch 104.
  • the storage control units 103A and 103B can duplicate the data via the back-end switch 104.
  • the back-end switch 104 does not require a shared storage area. Further, in this embodiment, the processing hardware of the processor can be reduced by the functional hardware of the back-end switch and the processor executing data transfer between the transfer source address and the transfer destination address.
  • the storage system configuration shown in FIG. 2 may be adopted.
  • the storage control unit 103A is replaced with the storage control unit 203A
  • the storage control unit 103B is replaced with the storage control unit 203B.
  • the processor 101A is replaced with the processor 201A
  • the processor 101B is replaced with the processor 201B
  • the memory 102A is replaced with the memory 202A
  • the memory 102B is replaced with the memory 202B.
  • the back-end switch 104 is replaced with the back-end switch 204A or 204B
  • the storage devices 105A to 105F are replaced with the storage devices 205A to 205F.
  • Embodiment 4 will be described with reference to FIG. 1 or FIG. 2 and FIGS. 4A, 4B, 6A to 7B, FIG. 10, and FIG.
  • the description of FIGS. 1, 4A, 4B, and 6A to 7B is the same as that of the first embodiment.
  • FIG. 10 is an example of a flowchart showing a processing procedure when the back-end switch 104 receives data transmission or data request from the processor 101A in this embodiment.
  • the processing procedure when the back-end switch 104 receives data transmission or data request from the processor 101B is the same. In that case, the processor 101A and the processor 101B are interchanged in FIG.
  • step 300 to step 306 in FIG. 3C in the first embodiment can be applied to the processing from step 1000 to step 1006.
  • step 1007 the back-end switch 104 determines whether the frame sent from the processor 101A is sending data for storage in the memory 102B or a request for obtaining data in the memory 102B. If the determined result is data transmission for storage in the memory 102B (1007: data transmission), the back-end switch 104 proceeds to step 1008.
  • the back-end switch 104 notifies the processor 101B that data has been sent for storage in the memory 102B.
  • the notification to the processor 101B is performed by, for example, sending a predetermined specific signal from the back-end switch 104 to the processor 101B.
  • the notification is performed by sending predetermined specific data to a specific address of the processor 101B.
  • an interrupt signal may be sent from the back-end switch 104 to the processor 101B.
  • step 1007 if the determined result is a request for acquisition of data in the memory 102B (1007: data request), the back-end switch 104 ends the process.
  • FIG. 11 is an example of a processing sequence for transmitting data from the storage control unit 103A to the storage control unit 103B when the back-end switch 104 performs processing according to the processing procedure shown in FIG.
  • the processing sequence in which the storage control unit 103B transmits data to the storage control unit 103A is the same.
  • the storage control unit 103A and the storage control unit 103B are interchanged, the processor 101A and the processor 101B are interchanged, and the memory 102A and the memory 102B are interchanged.
  • step 1105 the back-end switch 104 notifies the processor 101B that data has been sent.
  • This notification method is the same as that described in step 1008 of FIG.
  • the present embodiment notifies the data transmission from the back-end switch to the processor.
  • the processor 101B can know that data has been sent from the processor 101A without periodically checking the contents of the memory 102B. Since it is not necessary to periodically inspect the contents of the memory 102B, performance overhead can be reduced and the efficiency of the processor 101B can be improved.
  • the configuration shown in FIG. 2 can be adopted instead of the configuration shown in FIG.
  • the description regarding FIGS. 2, 4A, 4B, and 6A to 7B is the same as that of the second embodiment. 10 and 11, the storage control unit 103A is replaced with a storage control unit 203A, and the storage control unit 103B is replaced with a storage control unit 203B.
  • the processor 101A is replaced with the processor 201A
  • the processor 101B is replaced with the processor 201B
  • the memory 102A is replaced with the memory 202A
  • the memory 102B is replaced with the memory 202B.
  • the back-end switch 104 is replaced with the back-end switch 204A or 204B
  • the storage devices 105A to 105F are replaced with the storage devices 205A to 205F.
  • Example 5 will be described with reference to FIG. 1 or 2, FIG. 4A, FIG. 4B, FIG. 6A to FIG. 7B, FIG. 12, FIG. 13A, FIG.
  • the description of FIGS. 1, 2, 4A, 4B, 6A to 7B, and 27 is the same as that of the third embodiment.
  • FIG. 12 is an example of a flowchart illustrating a processing procedure when the back-end switch 104 receives a data transfer instruction from the processor 101A.
  • the processing procedure when the back-end switch 104 receives data or a data request from the processor 101B is the same. In that case, in FIG. 12, the processor 101A and the processor 101B are interchanged, and the memory 102A and the memory 102B are interchanged.
  • Step 800 to Step 807 in FIG. 8B of Embodiment 3 can be applied to Step 1200 to Step 1207.
  • step 1208 the back-end switch 104 notifies the processor 101B that the data has been written to the memory 102B.
  • the notification to the processor 101B is performed by, for example, sending a predetermined specific signal from the back-end switch 104 to the processor 101B.
  • the notification is performed by sending predetermined specific data to a specific address of the processor 101B.
  • an interrupt signal may be sent from the back-end switch 104 to the processor 101B.
  • the back end switch 104 proceeds to step 1209 after step 1207.
  • the back-end switch 104 notifies the processor 101A that the data acquired from the memory 102B has been written to the memory 102A.
  • the notification to the processor 101A is performed, for example, by sending a predetermined signal from the back-end switch 104 to the processor 101A.
  • the notification is performed by sending predetermined specific data to a specific address of the processor 101A.
  • an interrupt signal may be sent from the back-end switch 104 to the processor 101A.
  • FIG. 13A is an example of a processing sequence in which the storage control unit 103A transmits data to the storage control unit 103B when the back-end switch 104 performs processing according to the processing procedure shown in FIG.
  • FIG. 13B is an example of a processing sequence in which the storage control unit 103A acquires data from the storage control unit 103B.
  • the processing sequence in which the storage control unit 103B transmits data to the storage control unit 103A or acquires data of the storage control unit 103A is the same.
  • the storage control unit 103A and the storage control unit 103B are interchanged, the processor 101A and the processor 101B are interchanged, and the memory 102A and the memory 102B are interchanged.
  • step 1305 the back-end switch 104 notifies the processor 101B that the data has been sent in step 1307. This notification method is as described in step 1208 of FIG.
  • step 911 to step 916 in FIG. 9B of the third embodiment can be applied to step 1311 to step 1316.
  • the back-end switch 104 after step 1315, notifies the processor 101A that the data has been sent in step 1317. This notification method is as described in step 1209 of FIG.
  • this embodiment notifies the processor of data transmission from the back-end switch.
  • the configuration shown in FIG. 2 can be adopted instead of the configuration shown in FIG.
  • the processor 101A is replaced with the processor 201A
  • the processor 101B is replaced with the processor 201B
  • the memory 102A is replaced with the memory 202A
  • the memory 102B is replaced with the memory 202B.
  • the back-end switch 104 is replaced with the back-end switch 204A or 204B
  • the storage devices 105A to 105F are replaced with the storage devices 205A to 205F.
  • Example 6 will be described with reference to FIG. 1 or FIG. 2, FIG. 4A, FIG. 4B, FIG. 6A to FIG. 7B, FIG. In this embodiment, the description of FIGS. 1, 2, 4A, 4B, 6A to 7B, and 27 is the same as that of the third embodiment.
  • FIG. 14 will be described in the case where the configuration shown in FIG.
  • FIG. 14 is an example of a flowchart showing a processing procedure when the back-end switch 104 receives a data transfer instruction from the processor 101A.
  • the processing procedure when the back-end switch 104 receives a data transfer instruction from the processor 101B is the same. In that case, the processor 101A and the processor 101B are interchanged in FIG. 14, and the memory 102A and the memory 102B are interchanged.
  • step 800 to step 807 in FIG. 8B of the third embodiment can be applied to step 1400 to step 1407.
  • the data transfer instruction received from the processor 101A in step 1400 includes a data check code that can check whether there is an error in the data to be transferred.
  • the data check code may be a standard data check code called T10DIF, for example.
  • a data protection code that can be collated with the data check code may be attached to the data to be checked, or may be supplied to the back-end switch 104 separately from the check target.
  • step 1408 the process proceeds to step 1408 after step 1402.
  • step 1408 the back-end switch 104 checks whether there is an error in the data acquired from the memory 102A in step 1402 based on the data check code included in the data transfer instruction received from the processor 101A.
  • step 1409 the back-end switch 104 determines whether there is an error as a result of the check. If there is no error (1409: OK), the process proceeds to step 1403. If there is an error (1409: NG), the backend switch 104 proceeds to Step 1412 without writing the data in the memory 102B. The back end switch 104 proceeds to step 1412 even after step 1404.
  • step 1410 the back-end switch 104 checks whether there is an error in the data acquired from the memory 102B in step 1406 based on the data check code included in the data transfer instruction received from the processor 101A.
  • the backend switch 104 proceeds to step 1411 and determines whether there is an error as a result of the check. If there is no error (1411: OK), the back-end switch 104 proceeds to Step 1407. If there is an error (1411: NG), the back-end switch 104 proceeds to Step 1412 without writing the data in the memory 102A. The back end switch 104 proceeds to step 1412 even after step 1403.
  • step 1412 the back-end switch 104 reports the check result checked in step 1408 or step 1410 to the processor 101A, and ends the process.
  • this embodiment can check the back-end switch 104 to determine whether there is an error in the data to be transferred. Therefore, it is possible to increase the legitimacy of the data to be transferred, and further, there is no performance overhead for data error check in the processor 101A or 101B.
  • the configuration shown in FIG. 2 can be adopted instead of the configuration shown in FIG.
  • the processor 101A is replaced with the processor 201A
  • the processor 101B is replaced with the processor 201B
  • the memory 102A is replaced with the memory 202A
  • the memory 102B is replaced with the memory 202B.
  • the back-end switch 104 is replaced with the back-end switch 204A or 204B
  • the storage devices 105A to 105F are replaced with the storage devices 205A to 205F.
  • Example 7 will be described with reference to FIG. 1 or FIG. 2, FIG. 4A, FIG. 4B, FIG. 6A to FIG. 7B, FIG.
  • the description of FIGS. 1, 2, 4A, 4B, 6A to 7B, and 27 is the same as that of the third embodiment.
  • the case where the configuration shown in FIG. 1 is adopted as the configuration of the storage system of this embodiment will be described with reference to FIGS.
  • FIG. 15 is an example of a flowchart showing a processing procedure when the back-end switch 104 receives a data transfer instruction from the processor 101A.
  • the processing procedure when the back-end switch 104 receives a data transfer instruction from the processor 101B is the same. In that case, in FIG. 15, the processor 101A and the processor 101B are interchanged, and the memory 102A and the memory 102B are interchanged.
  • step 800 to step 807 in FIG. 8 of the third embodiment can be applied to step 1500 to step 1507.
  • the back-end switch 104 proceeds to step 1508 after step 1504.
  • step 1508 the back-end switch 104 reads the data written in the memory 102B again. By this step, it can be assured that the processing for reliably writing the data in the memory 102B in step 1504 is completed.
  • the length of the data read in step 1508 may be equal to the length of the data written in step 1504, or may be the length of a part of the data written in step 1504.
  • the back end switch 104 may read the last part of the data written in step 1504.
  • step 1509 the back-end switch 104 notifies the processor 101A that the data has been read.
  • the notification may be performed, for example, by sending all or part of the data read in step 1508 to the processor 101A, or by sending a predetermined specific signal to the processor 101A.
  • the notification may be performed by sending specific predetermined data to a specific address in the address space of the processor 101A, or by sending an interrupt signal from the back-end switch 104 to the processor 101A. Also good. In this way, it is possible to notify the processor 101A that the process of writing to the memory 102B has been completed.
  • FIG. 16 is an example of a processing sequence for transmitting data from the storage control unit 103A to the storage control unit 103B when the back-end switch 104 performs processing according to the processing procedure shown in FIG.
  • the flow of processing in which the storage control unit 103B transmits data to the storage control unit 103A is the same.
  • the storage control unit 103A and the storage control unit 103B are replaced, the processor 101A and the processor 101B are replaced, and the memory 102A and the memory 102B are replaced.
  • steps 901 to 906 in FIG. 9A of the third embodiment can be applied to steps 1601 to 1606.
  • the back-end switch 104 uses the address B used in step 1605 again in step 1607 to send a request to acquire the data from the memory 102B to the processor 101B.
  • the length of the data to be acquired may be equal to the length of the data sent with the address B given in step 1605, or may be the length of a part of the data sent with the address B given in step 1605. Good. This is as described in step 1508 of FIG.
  • the back end switch 104 may change the length of the data to be acquired and the address B so as to acquire the last part of the data sent in step 1605.
  • the processor 101B When the processor 101B receives the data request to which the address B is assigned from the back-end switch 104, the processor 101B acquires data from the memory 102B according to the address B in step 1608. Next, in step 1609, the processor 101B returns the data acquired from the memory 102B to the back-end switch 104.
  • Steps 1608 and 1609 may be executed by software operating on the processor 101B, or may be executed by functional hardware (circuit) mounted on the processor 101B.
  • the functional hardware When the functional hardware receives a data request to which the address B is assigned from the back-end switch 104, the functional hardware automatically acquires data from the memory 102B according to the address B and returns it to the back-end switch 104.
  • the back-end switch 104 When the back-end switch 104 receives the data at the address B from the processor 101B, in step 1610, the back-end switch 104 notifies the processor 101A that the data has been read from the memory 102B.
  • the notification method is as described in step 1509 in FIG.
  • this embodiment can guarantee that the data can be stored in the memory 102B when the data is transferred from the storage control unit 103A to the storage control unit 103B. .
  • this embodiment can guarantee that the data can be stored in the memory 102B when the data is transferred from the storage control unit 103A to the storage control unit 103B.
  • the storage control units 103A and 103B can duplicate the data.
  • the host device is notified of the completion of the data writing. Is possible. In the present embodiment, the data duplication can be reliably ensured as compared with the third embodiment.
  • the configuration shown in FIG. 2 can be adopted instead of the configuration shown in FIG.
  • the descriptions regarding FIG. 2, FIG. 4A, FIG. 4B, FIG. 6A to FIG. 7B, and FIG. 15 and 16 the storage control unit 103A is replaced with a storage control unit 203A, and the storage control unit 103B is replaced with a storage control unit 203B.
  • the processor 101A is replaced with the processor 201A
  • the processor 101B is replaced with the processor 201B
  • the memory 102A is replaced with the memory 202A
  • the memory 102B is replaced with the memory 202B.
  • the back-end switch 104 is replaced with the back-end switch 204A or 204B
  • the storage devices 105A to 105F are replaced with the storage devices 205A to 205F.
  • FIG. 17 is a diagram illustrating an example of the configuration of a storage system according to the eighth embodiment.
  • the storage system 1700 includes two storage control units 1703A and 1703B.
  • the storage control unit 1703A includes a processor 1701A, a memory 1702A, a host IF 1710A connected to the host device 1714A, and an interconnect IF 1711A.
  • the storage control unit 1703B includes a processor 1701B, a memory 1702B, a host IF 1710B connected to the host device 1714B, and an interconnect IF 1711B.
  • Interconnect IFs 1711A and 1711B are connected to other storage systems 1713A to 1713E through interconnect switches 1712A and 1712B different from the back-end switch 1704, respectively.
  • the storage system 1700 includes storage devices 1705A to 1705F.
  • the storage devices 1705A to 1705F are connected to the back-end switch 1704 through paths 1707A to 1707F, respectively.
  • FIG. 17 shows six storage devices 1705A to 1705F, but the number of storage devices is arbitrary.
  • FIG. 17 shows five other storage systems 1713A to 1713E, but the number of other storage systems is arbitrary.
  • the other storage systems 1713A to 1713E may have the same configuration as the storage system 1700, respectively.
  • Each of the higher-level devices 1714A and 1714B may be a virtual device realized by software operating on the processors 1701A and 1701B or other processors in the storage control unit 1703A or 1703B.
  • the software exchanges requests and responses with the storage system 1700 via a software driver instead of the upper IF 1710A or 1710B.
  • FIG. 18 is a diagram showing an example of the configuration of a storage system using two back-end switches instead of FIG.
  • the storage system 1800 includes two storage control units 1803A and 1803B.
  • the storage control unit 1803A includes a processor 1801A, a memory 1802A, a host IF 1810A connected to the host device 1814A, and an interconnect IF 1811A.
  • the storage control unit 1803B includes a processor 1801B, a memory 1802B, a host IF 1810B connected to the host device 1814B, and an interconnect IF 1811B.
  • the storage system 1800 includes two mutually independent back-end switches 1804A and 1804B.
  • Processor 1801A is connected to backend switches 1804A and 1804B by path 1806A and path 1808A, respectively.
  • Processor 1801B is connected to backend switches 1804A and 1804B by path 1806B and path 1808B, respectively.
  • the storage system 1800 includes storage devices 1805A to 1805F.
  • the storage devices 1805A to 1805F are connected to the back-end switch 1804A through paths 1807A to 1807F, respectively.
  • the storage devices 1805A to 1805F are connected to the back-end switch 1804B by paths 1809A to 1809F, respectively.
  • the processors 1801A and 1801B are connected to all the storage devices 1805A to 1805F and the other processors 1801B and 1801A using only one of the back-end switches 1804A and 1804B. Even if one of the back-end switches 1804A or 1804B stops operating, or the path connected to one of the back-end switches 1804A or 1804B is disconnected, the storage system 1800 communicates with the processors 1801A and 1801B and the processor 1801A or 1801B. All communications between the storage devices 1805A-1805F can be continued. Thereby, the availability of the system can be increased.
  • Interconnect IFs 1811A and 1811B are connected to other storage systems 1813A to 1813E through interconnect switches 1812A and 1812B different from back-end switches 1804A and 1804B, respectively.
  • FIG. 18 shows six storage devices 1805A to 1805F, but the number of storage devices is arbitrary in this embodiment.
  • FIG. 18 shows five other storage systems 1813A to 1813E, but the number of other storage systems is arbitrary in this embodiment.
  • Other storage systems 1813A to 1813E may have the same configuration as the storage system 1800.
  • the host devices 1814A and 1814B may be virtual devices like the host devices 1714A and 1714B in FIG.
  • FIG. 19 is an example of a flowchart showing a processing procedure by the storage control units 1703A, 1703B, 1803A, or 1803B according to the present embodiment.
  • the storage control unit receives a data read request or a data write request from the host device.
  • the storage control unit determines whether the received request is a request for data stored in the storage device of the storage system including the storage control unit. For example, the storage control unit makes a determination with reference to information for managing the relationship between the address indicated by the request from the host device and the storage device.
  • step 1902 the storage control unit determines whether the request received from the higher-level device is data reading or writing. If the request is a write (1902: write), the storage controller proceeds to step 1903.
  • step 1903 the storage control unit receives write data from the host device.
  • step 1904 the storage control unit stores the received write data in the memory of the storage control unit.
  • step 1905 the storage control unit transfers the data stored in the memory of the storage control unit to the memory of the other storage control unit through the back-end switch in the same storage system.
  • step 1906 the storage control unit reads again the write data transferred to the memory of the other storage control unit, and confirms that it has been stored in the memory of the other storage control unit.
  • the length of the data read again in step 1906 may be equal to the length of the data transferred in step 1905 or may be the length of a part of the data transferred in step 1905.
  • the storage control unit may read the last part of the data transferred in step 1905.
  • step 1907 the storage control unit notifies the host device of the completion of writing.
  • step 1902 if the request received from the host device is data read (1902: read), the storage control unit proceeds to step 1908.
  • step 1908 the storage control unit reads the data from the storage device in the same storage system.
  • step 1909 the storage control unit proceeds to step 1909 and returns the data read from the storage device to the host device.
  • the storage control unit may store the read data in the memory of the storage control unit. In response to the next read request for the same data, the storage control unit returns the data stored in the memory without reading the data from the storage device.
  • step 1901 if the request received from the host device is not a request for data stored in the storage device of the storage system including the storage control unit (1901: NO), the storage control unit proceeds to step 1910.
  • step 1910 the storage control unit sends the read or write request received from the host device to another storage system via the interconnect IF and the interconnect switch.
  • FIG. 20 is an example of a sequence when the processing procedure in the storage control unit 1703A or 1803A is performed according to the flowchart shown in FIG. FIG. 20 shows an example of processing for a data write request from the host device to the storage devices 1705A to 1705F of the storage system 1700 or the storage devices 1805A to 1805F of the storage system 1800.
  • the processing sequence when the storage control unit 1703B or 1803B receives a data write request from the higher-level device to the storage devices 1705A to 1705F of the storage system 1700 or the storage devices 1805A to 1805F of the storage system 1800 is the same. .
  • the storage control unit 1703A or 1803A and the storage control unit 1703B or 1803B are interchanged.
  • the processor 1701A or 1801A and the processor 1701B or 1801B are interchanged.
  • Memory 1702A or 1802A and memory 1702B or 1802B are interchanged.
  • step 2001 when the storage control unit 1703A or 1803A receives a data write request from a host device, in step 2001, the storage control unit 1703A or 1803A receives write data.
  • step 2002 the processor 1701A or 1801A stores the received write data in the memory 1702A or 1802A.
  • step 2003 the processor 1701A or 1801A obtains the data stored in the memory 1702A or 1802A again.
  • the processor 1701A or 1801A assigns an address A that identifies the location on the memory 1702B or 1802B to the acquired data and sends it to the back-end switch 1704, 1804A, or 1804B.
  • the data transmission frame 333 shown in FIG. 3A is used.
  • Steps 2003 and 2004 may be executed by software operating on the processor 1701A or 1801A, or may be executed by functional hardware (circuit) mounted on the processor 1701A or 1801A.
  • the functional hardware operates by designating a location for acquiring data on the memory 1702A or 1802A, an address A for identifying a location on the memory 1702B or 1802B, and a data length to be sent by software.
  • the back end switch 1704 or the back end switch 1804A or 1804B receives data transmission from the processor 1701A or 1801A.
  • the back-end switch 1704 or the back-end switch 1804A or 1804B converts the assigned address A into an address B that identifies the location on the memory 1702B or 1802B by the processor 1701B or 1801B.
  • Data transmission including the converted address B is sent to the processor 1701B or 1801B.
  • the processor 1701B or 1801B receives the data to which the address B is assigned from the back-end switch 1704, 1804A or 1804B. In step 2006, the processor 1701B or 1801B stores the received data in the memory 1702B or 1802B based on the address B.
  • Step 2006 may be executed by software operating on the processor 1701B or 1801B, or may be executed by functional hardware (circuit) mounted on the processor 1701B or 1801B.
  • the functional hardware When the functional hardware receives the data with the address B from the back-end switch, the functional hardware automatically stores the data in the memory 1702B or 1802B according to the address B.
  • step 2007, the processor 1701A or 1801A again sends a request for acquiring the data stored in the memory 1702B or 1802B using the address A to the back-end switch 1704 or back-end switch 1804A or 1804B.
  • the data request frame 331 shown in FIG. 3A is used.
  • the length of the data to be acquired may be equal to the length of the data sent with the address A given in step 2004, or the length of the part of the data sent with the address A given in step 2004. There may be. For example, the length of the data to be acquired and the address A may be changed so that the last part of the data sent in step 2004 is acquired. This point is as described in step 1906 of FIG.
  • Step 2007 may be executed by software operating on the processor 1701A or 1801A, or may be executed by functional hardware (circuit) mounted on the processor 1701A or 1801A.
  • the functional hardware operates by designating the address A for identifying the location on the memory 1702B or 1802B and the length of data to be acquired by software.
  • step 2008 the back end switch 1704 or the back end switch 1804A or 1804B converts the address A into the address B again, and sends a request to acquire data to the processor 1701B or 1801B.
  • the processor 1701B or 1801B receives a data acquisition request from the back-end switch 1704 or the back-end switch 1804A or 1804B. In step 2009, the processor 1701B or 1801B acquires data from the memory 1702B or 1802B according to the assigned address B.
  • step 2010 the processor 1701B or 1801B returns the acquired data to the back-end switch 1704 or the end switch 1804A or 1804B.
  • Steps 2009 and 2010 may be executed by software operating on the processor 1701B or 1801B, or may be executed by functional hardware (circuit) implemented in the processor 1701B or 1801B.
  • the functional hardware When the functional hardware receives the data request to which the address B is given from the back-end switch 1704 or the back-end switch 1804A or 1804B, the functional hardware automatically acquires the data from the memory 1702B or 1802B according to the address B, and the back-end switch 1704 Alternatively, the data is returned to the back-end switch 1804A or 1804B.
  • the back end switch 1704 or the back end switch 1804A or 1804B receives return data from the processor 1701B or 1801B. In step 2011, the back end switch 1704 or the back end switch 1804A or 1804B returns the data to the processor 1701A or 1801A.
  • the processor 1701A or 1801A receives the returned data from the back-end switch 1704 or the back-end switch 1804A or 1804B. In step 2012, the processor 1701A or 1801A reports the completion of data writing to the host device.
  • the storage system 1700 or 1800 can provide an effect called scale-out that adds capacity and performance to other storage systems.
  • the storage system 1800 according to the present embodiment is particularly highly available, it is not necessary to have redundant data with other storage systems when providing the effect of scale-out. Therefore, there is no performance overhead and the use efficiency of the storage capacity of each storage system does not decrease.
  • the first storage control unit includes a first interconnect unit
  • the second storage control unit includes a second interconnect unit.
  • the first and second interconnects are connected to one or more interconnect switches different from the backend switch.
  • the interconnect switch is further connected to the second storage system.
  • the first or second storage control unit receives a data read or write request from the host device, and determines whether the requested data is stored in the storage device in the received data read or write request. When it is determined that the data is not stored in the storage device, the first or second storage control unit uses the first or second interconnect unit and the interconnect switch to issue a data read or write request to the second To the storage system.
  • Example 9 will be described with reference to FIGS.
  • the configuration example of the storage system in the ninth embodiment is the configuration shown in FIGS.
  • FIG. 21 is an example of a flowchart illustrating a processing procedure in the storage control unit 1703A or 1703B of the storage system 1700 illustrated in FIG. 17 and the storage control unit 1803A or 1803B of the storage system 1800 illustrated in FIG.
  • step 2105 the storage control unit sends an instruction to transfer write data from the memory to the memory of the other storage control unit in the storage system to the back-end switch.
  • the back-end switch When receiving the instruction, the back-end switch transfers the specified write data from the memory of the storage control unit to the memory of the other storage control unit.
  • the back-end switch reads back the memory of the other storage control unit, confirms that the transfer is complete, and notifies the storage control unit of the completion of data transfer.
  • step 2106 the storage control unit receives a data transfer completion notification from the back-end switch.
  • step 2107 the storage control unit notifies the host device of the completion of writing.
  • FIG. 22 is an example of a sequence when the processing procedure in the storage control unit 1703A or 1803A is performed according to the flowchart shown in FIG. More specifically, FIG. 22 shows an example of a processing sequence when a write request is received for data stored in the storage devices 1705A to 1705F of the storage system 1700 or the storage devices 17051805A to 1805F of the storage system 1800 from the host device. It is.
  • the processing sequence when the storage control unit 1703B or 1803B receives a write request for data stored in the storage devices 1705A to 1705F of the storage system 1700 or the storage devices 1805A to 1805F of the storage system 1800 from the host device is also shown. It becomes the same.
  • the storage control unit 1703A or 1803A and the storage control unit 1703B or 1803B are interchanged.
  • the processor 1701A or 1801A and the processor 1701B or 1801B are interchanged.
  • Memory 1702A or 1802A and memory 1702B or 1802B are interchanged.
  • step 2201 when the storage control unit 1703A or 1803A receives a data write request from a host device, in step 2201, the storage control unit 1703A or 1803A receives write data.
  • step 2202 the processor 1701A or 1801A stores the received write data in the memory 1702A or 1802A.
  • steps 1601 to 1610 in FIG. 16 of the seventh embodiment can be applied to steps 2203 to 2212.
  • the storage control unit 103A or 203A is replaced with a storage control unit 1703A or 1803A.
  • the storage control unit 103B or 203B is replaced with a storage control unit 1703B or 1803B.
  • the processor 101A or 201A is replaced with the processor 1701A or 1801A.
  • the processor 101B or 201B is replaced with a processor 1701B or 1801B.
  • the memory 102A or 202A is replaced with the memory 1702A or 1802A.
  • the memory 102B or 202B is replaced with the memory 1702B or 1802B.
  • back end switch 104 or the back end switch 204A or 204B is replaced with the back end switch 1704 or the back end switch 1804A or 1804B.
  • the transfer source data is replaced with the write data received from the host device.
  • step 2212 the processor 1701 ⁇ / b> A or 1801 ⁇ / b> A receives a data storage completion notification from the back-end switch 1704 or the back-end switch 1804 ⁇ / b> A or 1804 ⁇ / b> B.
  • the processor 1701A or 1801A reports the completion of data writing to the host device.
  • Example 9 can achieve the same effects as those described in Example 8.
  • Example 10 will be described with reference to FIGS.
  • the configuration example of the storage system in the tenth embodiment is the configuration shown in FIGS.
  • FIG. 23 is an example of a flowchart showing a processing procedure in the storage control unit 1703A or 1703B of the storage system 1700 shown in FIG. 17 and the storage control unit 1803A or 1803B of the storage system 1800 shown in FIG.
  • steps 2100 to 2104, 2107, 2108 to 2110 in FIG. 21 shown in the ninth embodiment can be applied to steps 2300 to 2304, 2307, 2308 to 2310.
  • the storage control unit stores the write data received from the higher-level device in step 2304 in the memory of the storage control unit.
  • the storage control unit sends an instruction to transfer the write data from the memory to the memory of the other storage control unit in the same storage system to the back-end switch.
  • step 2306 the storage control unit receives the data error check result from the back-end switch.
  • step 2307 the storage control unit notifies the upper level apparatus of the check result. If the received check result indicates a data error, the higher-level device determines that the data has not been correctly written and, for example, sends the previous data write request to the storage system again.
  • FIG. 24 is an example of a sequence when the processing procedure in the storage control unit 1703A or 1803A is performed according to the flowchart shown in FIG. More specifically, FIG. 24 shows an example of a sequence of processing when a write request for data stored in the storage devices 1705A to 1705F of the storage system 1700 or the storage devices 1805A to 1805F of the storage system 1800 is received from the host device. is there.
  • the processing sequence when the storage control unit 1703B or 1803B receives a write request for data stored in the storage devices 1705A to 1705F of the storage system 1700 or the storage devices 1805A to 1805F of the storage system 1800 from the host device is also shown. It becomes the same.
  • the storage control unit 1703A or 1803A and the storage control unit 1703B or 1803B are interchanged.
  • the processor 1701A or 1801A and the processor 1701B or 1801B are interchanged.
  • Memory 1702A or 1802A and memory 1702B or 1802B are interchanged.
  • steps 2201 to 2208 in FIG. 22 of the ninth embodiment can be applied to steps 2401 to 2408.
  • the back-end switch 1704 or the back-end switch 1804A or 1804B notifies the processor 1701B or 1801B that the write data has been sent.
  • the processor 1701B or 1801B acquires the write data from the memory 1702B or 1802B in processing 2410. Next, the processor 1701B or 1801B checks whether there is a data error in step 2411 for the write data acquired from the memory 1702B or 1802B.
  • the data check code is given in advance to the processor 1701B or 1801B.
  • the processor 1701B or 1801B may generate a data check code based on a predetermined rule.
  • the processor 1701A or 1801A may supply the data check code to the processor 1701B or 1801B via the back-end switch 1704 or the back-end switch 1804A or 1804B.
  • the processor 1701B or 1801B After step 2411, the processor 1701B or 1801B notifies the back end switch 1704 or the back end switch 1804A or 1804B of the result of the data error check in step 2412. In step 2413, the back-end switch 1704 or the back-end switch 1804A or 1804B notifies the processor 1701A or 1801A of the notified result.
  • step 2414 the processor 1701A or 1801A notifies the host device of the data error check result notified from the back-end switch 1704 or back-end switch 1804A or 1804B.
  • the storage system 1700 or 1800 according to the tenth embodiment can confirm that the data is stored in the memory without error, and can increase the validity of the data.
  • the data stored in the memory 1702A or 1802A can also be checked for errors.
  • Example 11 will be described with reference to FIGS.
  • the configuration example of the storage system according to the eleventh embodiment is the configuration shown in FIGS.
  • FIG. 25 is an example of a flowchart showing a processing procedure in the storage control unit 1703A or 1703B of the storage system 1700 shown in FIG. 17 and the storage control unit 1803A or 1803B of the storage system 1800 shown in FIG.
  • steps 1900 to 1905 and 1908 to 1910 in FIG. 19 shown in the eighth embodiment can be applied to steps 2500 to 2505 and 2508 to 2510.
  • the storage control unit transfers write data from the memory of the storage control unit to the memory of the other storage control unit in the storage system in step 2505, and then proceeds to step 2520.
  • the storage control unit notifies the other storage control unit that the write data has been transferred to the memory of the other storage control unit.
  • predetermined specific data may be sent to a specific address in the other storage control unit.
  • the notification may be special data including information for identifying the write data and information on whether or not the write data is written in the memory in the other storage control unit.
  • the notification may include an interrupt signal.
  • the other storage control unit When the other storage control unit is notified that the write data has been transferred, the other storage control unit performs a data error check on the transferred data and notifies the storage control unit of the result. This notification is similar to the method of notifying the other storage control unit that the write data has been transferred to the memory of the other storage control unit.
  • step 2521 the storage control unit receives the data error result notified from the other storage control unit.
  • step 2522 the storage control unit notifies the host device of the data error check result. If there is a data error, the host device determines that the data could not be written correctly, and sends the previous data write request to the storage system again, for example. This is the same as the description of step 2307 in FIG.
  • FIG. 26 shows an example of a sequence when the processing procedure in the storage control unit 1703A or 1803A is performed according to the flowchart shown in FIG. More specifically, it is an example of a processing sequence when a write request for data stored in the storage devices 1705A to 1705F of the storage system 1700 or the storage devices 1805A to 1805F of the storage system 1800 is received from the host device.
  • the processing sequence when the storage control unit 1703B or 1803B receives a write request for data stored in the storage devices 1705A to 1705F or the storage devices 17051805A to 1805F from the host device is the same.
  • the storage control unit 1703A or 1803A and the storage control unit 1703B or 1803B are interchanged.
  • the processor 1701A or 1801A and the processor 1701B or 1801B are interchanged.
  • the memory 1702A or 1802A and the memory 1702B or 1802B are interchanged.
  • steps 2001 to 2006 in FIG. 20 in the eighth embodiment can be applied to steps 2601 to 2606.
  • step 2604 the processor 1701A or 1801A reads the write data received from the host device from the memory 1702A or the memory 1802A and sends it to the back-end switch 1704 or the back-end switch 1804A or 1804B.
  • step 2607 the processor 1701A or 1801A notifies the back-end switch 1704 or the back-end switch 1804A or 1804B that the write data has been sent.
  • the back-end switch 1704 or the back-end switch 1804A or 1804B Upon receiving the notification, the back-end switch 1704 or the back-end switch 1804A or 1804B sends a similar notification to the processor 1701B or 1801B in step 2608.
  • the notification method performed in steps 2607 and 2608 is as described for step 2520 in FIG.
  • the processor 1701B or 1801B is notified from the back-end switch 1704 or the back-end switch 1804A or 1804B that the write data has been sent.
  • the processor 1701B or 1801B acquires the write data from the memory 1702B or 1802B.
  • the processor 1701B or 1801B checks whether there is a data error in step 2610 for the write data acquired from the memory 1702A or 1802A.
  • the data error check in step 2610 is the same as the data error check in step 2411 of FIG.
  • steps 2412 to 2414 in FIG. 24 of the tenth embodiment can be applied to subsequent steps 2611 to 2613.
  • Example 11 can achieve the same effect as the effect described in Example 10.
  • Example 12 will be described with reference to FIG. 1 or FIG. 2 and FIGS. 4A, 4B, 6A to 7B, FIG. 28, and FIG.
  • the configuration of the storage system of the twelfth embodiment is the configuration shown in FIG. 1, the descriptions of FIGS. 1, 4A, 4B, and 6A to 7B are the same as those of the first embodiment.
  • FIG. 28 is an example of a flowchart illustrating a processing procedure when the back-end switch 104 receives data or a data request from the processor 101A in the twelfth embodiment.
  • the processing procedure when the back-end switch 104 receives data or a data request from the processor 101B is the same.
  • the processor 101A in FIG. 28 may be read as the processor 101B.
  • the part having the processor 101B is read as the processor 101A.
  • step 2807 the description from step 300 to step 306 in FIG. 3 in the first embodiment can be applied to step 2800 to step 2806.
  • step 2804 the processing in the backend switch 104 proceeds to step 2807.
  • step 2807 the back-end switch 104 determines whether the frame sent from the processor 101A is data sending for storage in the memory 102B or a data acquisition request for the memory 102B. If the determined result is data transmission to the memory 102B (2807: data transmission), the back-end switch 104 proceeds to step 2808.
  • step 2808 the back-end switch 104 sends a request to obtain again the data stored in the memory 102B to the processor 101B.
  • the length of the data requested again may be equal to the length of the data sent in step 2804, or may be the length of a part of the data sent in step 2804.
  • the back end switch 104 may read the last part of the data sent in step 2804.
  • step 2809 the back-end switch 104 receives the data from the processor 101B.
  • step 2810 the back-end switch 104 notifies the processor 101A that the data has been received from the processor 101B, and ends the processing.
  • the notification to the processor 101A may be performed, for example, by sending all or a part of the data received from the processor 101B to the processor 101A, or by sending a predetermined specific signal to the processor 101A. .
  • the processor 101A discards all or part of the received data.
  • the notification may be performed by sending predetermined specific data to a specific address in the address space of the processor 101A.
  • the notification may be performed by sending an interrupt signal to the processor 101A. In this way, it is possible to notify the processor 101A that the data has been reliably written to the memory 102B. If it is determined in step 2807 that the determination result is a data acquisition request for the memory 102B (2807: data request), the back-end switch 104 ends the process.
  • FIG. 29 shows an example of a processing sequence for transmitting data from the storage control unit 103A to the storage control unit 103B when the back-end switch 104 performs processing according to the processing procedure shown in FIG.
  • the sequence of processing in which the storage control unit 103B transmits data to the storage control unit 103A is the same.
  • the storage control unit 103A and the storage control unit 103B are interchanged.
  • the processor 101A and the processor 101B are interchanged.
  • the memory 102A and the memory 102B are interchanged.
  • step 2905 the back-end switch 104 sends a data acquisition request for re-designating the address B sent in step 2903 to the processor 101B.
  • the length of the data to be acquired may be equal to the length of the data sent with the address B given in step 2905, or the length of the part of the data sent with the address B given in step 2905.
  • the back end switch 104 may change the data length and the address B so as to obtain the last part of the data sent in Step 2905. This is the same as the description of step 2808 in FIG.
  • the processor 101B When the processor 101B receives the data request to which the address B is assigned from the back-end switch 104, the processor 101B acquires data from the memory 102B according to the address B in step 2906. Next, in step 2907, the processor 101B returns the data acquired from the memory 102B to the back-end switch 104.
  • Steps 2906 and 2907 may be executed by software operating on the processor 101B, or may be executed by functional hardware (circuit) mounted on the processor 101B.
  • the functional hardware When the functional hardware receives a data request to which the address B is assigned from the back-end switch 104, the functional hardware automatically acquires data from the memory 102B according to the address B and returns it to the back-end switch 104.
  • the back-end switch 104 When the back-end switch 104 receives the return of the data at the address B from the processor 101B, in step 2908, the back-end switch 104 notifies the processor 101A that the data has been sent. This notification method is as described in step 2810 of FIG.
  • the processor 101A can be notified that the data sent to the storage control unit 103B has been reliably stored in the memory 102B.
  • the storage control units 103A and 103B can duplicate the data.
  • FIG. 2 As the configuration of the storage system of the present embodiment, the configuration shown in FIG. 2 can be adopted instead of the configuration shown in FIG. In this case, the description regarding FIGS. 2, 4A, 4B, and 6A to 7B is the same as that of the second embodiment.
  • the storage control unit 103A is replaced with a storage control unit 203A.
  • the storage control unit 103B is replaced with a storage control unit 203B.
  • the processor 101A is replaced with a processor 201A.
  • the processor 101B is replaced with a processor 201B.
  • the memory 102A is replaced with the memory 202A.
  • the memory 102B is replaced with the memory 202B.
  • the back end switch 104 is replaced with a back end switch 204A or 204B.
  • the storage devices 105A to 105F are replaced with storage devices 205A to 205F.
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • each of the above-described configurations, functions, processing units, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function can be stored in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card or an SD card.
  • control lines and information lines indicate what is considered necessary for the explanation, and not all control lines and information lines on the product are necessarily shown. In practice, it may be considered that almost all the components are connected to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multi Processors (AREA)

Abstract

ストレージシステムは、第1のプロセッサ、第2のプロセッサ及び1以上の記憶デバイスを接続する、1以上のバックエンドスイッチを含む。各バックエンドスイッチは、第1のプロセッサから受信したフレームを参照して当該フレームの送付先を同定する。フレームの送付先が前記第2のプロセッサである場合、各バックエンドスイッチは、フレームに含まれ、第1のプロセッサのアドレス空間において第2のメモリ上の場所を特定する第1のアドレスを、第2のプロセッサのアドレス空間において第2のメモリ上の前記場所を特定する第2のアドレスに変換し、第2のアドレスを含む前記フレームを第2のストレージ制御部に送付する。

Description

ストレージシステム
 本発明は、ストレージシステムに関する。
 ストレージシステムは、一般にストレージ制御部と複数のランダムアクセス可能な不揮発記憶デバイスを有する。不揮発記憶デバイスは、例えば、ハードディスクドライブ(HDD)又はソリッドステートドライブ(SSD)である。両者が混在する例もある。
 ストレージシステムはこのような多数の記憶デバイスを備えるため、例えば、バックエンドスイッチで多数の記憶ドライブへの接続を集約して、ストレージ制御部に接続して制御する。例えば、特許文献1は、バックエンドスイッチを有するストレージシステムを開示する。
 またストレージシステムは、例えば、二つのストレージ制御部を備え、どちらか一方が動作を停止しても残った一方によりストレージシステムとしての動作を継続できるようにして、可用性を保つ。二つのストレージ制御部は、バックエンドスイッチとは異なる特別な通信路で接続され、種々の制御情報を交換する。特許文献1は、二つのストレージ制御部と、それらの間にバックエンドスイッチとは異なるバスを持つ構成を開示する。
 二つのストレージ制御部の間の通信路は、通信に係わるオーバーヘッドを抑制するため、ストレージ制御部が備えるプロセッサに直接接続し易い通信規格を使用する。このようなプロセッサに直接接続し易い通信規格の例は、プロセッサと入出力デバイスとの間の通信規格であるPCI Expressである。
 これに対して、バックエンドスイッチで集約される、ストレージ制御部と記憶デバイスとの間の通信規格としては、一般にSCSI(Small Computer System Interface)、Fibre Channel、又はSAS(Serial Attached SCSI)が用いられる。
 これらのストレージ制御部と記憶デバイスとの間の通信規格の通信路は、ストレージ制御部が備えるプロセッサに直接接続できず、ストレージ制御部の間の通信に使用するためには、専用のインターフェースを必要とする。
 例えば、特許文献2は、異なるストレージ制御部の間の通信を、バックエンドスイッチを介して行う技術を開示する。特許文献2に開示される技術は、バックエンドスイッチが備える共有記憶領域により、異なるストレージ制御部の間の通信を可能とする。
 またストレージ制御部と記憶デバイスの間の通信規格として、近年、PCI Expressと互換性のあるNVM Expressも新しく用いられるようになってきた。
米国特許出願公開2009/0204743号 米国特許出願公開2008/0147934号
 上述のように、従来技術を用いて構成されるストレージシステムは、二つのストレージ制御部の間の通信のため、PCI Expressのようなストレージ制御部のプロセッサに接続し易い通信規格を用いる。このため、従来のストレージシステムは、特別な通信路を、ストレージ制御部の間に専用に必要とする。
 PCI Expressは、プロセッサと入出力デバイスとの間の通信規格であり、二つのストレージ制御部の二つのプロセッサの間の通信について、なんら規定していない。よって、PCI Expressを用いるだけでは、例え物理的な通信路をプロセッサに直接接続できたとしても、二つのプロセッサの間の通信手順が定まらないので、二つのプロセッサ間で通信を行うことはできない。
 一方、ストレージ制御部と、バックエンドスイッチで集約される記憶デバイスと、の間の通信規格は、このようなストレージ制御部の間の通信規格とは互換性がない。バックエンドスイッチ経由でのストレージ制御部間の通信は、困難である。例えば、特許文献2が開示する技術は、バックエンドスイッチの共有記憶領域、及び、ストレージ制御部による通信検知のための共有領域の定期的な検査を、必要とする。このように、バックエンドスイッチ経由でのストレージ制御部間の通信は特別な手段を必要とし、性能的なオーバーヘッドを生じさせる。
 PCI Expressと互換性のあるNVM Expressは一つのストレージ制御部と記憶デバイスとの間の通信規格であり、二つのストレージ制御部の間での通信については、なんら規定していない。このため、NVM Expressにより、二つのストレージ制御部の間の通信を行うことはできない。
 従って、二つのストレージ制御部の間に特別な専用通信路を必要とすることなく、ストレージ制御部と記憶デバイスの間を接続するバックエンドスイッチを介して、ストレージ制御部間の効率的な通信を可能とする技術が望まれる。特にバックエンドスイッチを介して、二つのストレージ制御部のプロセッサ間の通信を可能とする通信手順を定める技術が望まれる。
 本発明の一例は、第1のプロセッサと第1のメモリを含む第1のストレージ制御部と、第2のプロセッサと第2のメモリを含む第2のストレージ制御部と、1以上の記憶デバイスと、前記第1のプロセッサ、前記第2のプロセッサ及び前記1以上の記憶デバイスを接続する、1以上のバックエンドスイッチと、を含み、前記1以上のバックエンドスイッチのそれぞれは、前記第1のプロセッサから受信したフレームを参照して当該フレームの送付先を同定し、前記フレームの送付先が前記第2のプロセッサである場合、前記フレームに含まれ、前記第1のプロセッサのアドレス空間において前記第2のメモリ上の場所を特定する第1のアドレスを、前記第2のプロセッサのアドレス空間において前記第2のメモリ上の前記場所を特定する第2のアドレスに変換し、前記第2のアドレスを含む前記フレームを、前記第2のストレージ制御部に送付し、前記フレームの送付先が、前記1以上の記憶デバイスにおける第1の記憶デバイスである場合、前記フレームに含まれ、前記第1のプロセッサのアドレス空間において前記第1の記憶デバイスを特定する第3のアドレスを変換することなく、前記フレームを前記第1の記憶デバイスに送付する、ストレージシステムである。
 本発明の他の一例は、第1のプロセッサと第1のメモリを含む第1のストレージ制御部と、第2のプロセッサと第2のメモリを含む第2のストレージ制御部と、1以上の記憶デバイスと、前記第1のプロセッサ、前記第2のプロセッサ及び前記1以上の記憶デバイスを接続する、1以上のバックエンドスイッチと、を含み、前記1以上のバックエンドスイッチのそれぞれは、前記第1のプロセッサのアドレス空間における前記第1のメモリ上の第1の場所を特定する第4のアドレスと、前記第1のプロセッサのアドレス空間において前記第2のメモリ上の第2の場所を特定する第5のアドレスと、転送するデータ長と、を含むデータ転送指示を、前記第1のプロセッサから受信し、前記第5のアドレスを、前記第2のプロセッサのアドレス空間において前記第2のメモリ上の前記第2の場所を特定する第6のアドレスに変換し、前記第1のメモリ上の前記第1の場所と前記第2のメモリ上の前記第2の場所との間において、前記データ長の第1のデータを転送する、ストレージシステムである。
 本発明の一態様によれば、ストレージ制御部と記憶デバイスとの間を接続するバックエンドスイッチを介して、ストレージ制御部間の効率的な通信を可能とする。
図1は、ストレージシステムの構成例である。 図2は、ストレージシステムの別の構成例である。 図3Aは、ストレージ制御部間で通信される、データ要求、データ返送、及びデータ送付のフレームの例を示す。 図3Bは、バックエンドスイッチにおいて、プロセッサから送付されたフレームに付与されたアドレスに対してスイッチング動作を決定するスイッチング情報テーブルの例である。 図3Cは、バックエンドスイッチがプロセッサからデータ送付またはデータ要求を受信した時の処理手順を示すフローチャートの例を示す図である。 図4Aは、スイッチング情報テーブルの例を示す。 図4Bは、バックエンドスイッチが記憶デバイスからデータ送付またはデータ要求を受信した時の処理手順を示すフローチャートの例を示す図である。 図5Aは、第1のストレージ制御部が第2のストレージ制御部にデータを送信する処理のシーケンスの例を示す図である。 図5Bは、第1のストレージ制御部が第2のストレージ制御部からデータを取得する処理のシーケンスの例を示す図である。 図6Aは、ストレージ制御部が記憶デバイスにデータを送信する処理のシーケンスの例を示す図である。 図6Bは、ストレージ制御部が記憶デバイスからデータを取得する処理のシーケンスの例を示す図である。 図7Aは、記憶デバイスがストレージ制御部にデータを送信する処理のシーケンスの例を示す図である。 図7Bは、記憶デバイスがストレージ制御部からデータを取得する処理のシーケンスの例を示す図である。 図8Aは、ストレージシステムで用いることのできるデータ転送指示のフレームフォーマット例である。 図8Bは、バックエンドスイッチがストレージ制御部よりデータ転送指示を受信した時の処理手順を示すフローチャートの例を示す図である。 図9Aは、第1のストレージ制御部が第2のストレージ制御部にデータを送信する処理のシーケンスの別の例を示す図である。 図9Bは、第1のストレージ制御部が第2のストレージ制御部からデータを取得する処理のシーケンスの別の例を示す図である。 図10は、バックエンドスイッチがプロセッサからデータ送付またはデータ要求を受信した時の処理手順を示すフローチャートの別の例を示す図である。 図11は、第1のストレージ制御部が第2のストレージ制御部にデータを送信する処理のシーケンスの別の例を示す図である。 図12は、バックエンドスイッチがストレージ制御部よりデータ転送指示を受信した時の処理手順を示すフローチャートの別の例を示す図である。 図13Aは、第1のストレージ制御部が第2のストレージ制御部にデータを送信する処理のシーケンスの別の例を示す図である。 図13Bは、第1のストレージ制御部が第2のストレージ制御部からデータを取得する処理のシーケンスの別の例を示す図である。 図14は、バックエンドスイッチがストレージ制御部よりデータ転送指示を受信した時の処理手順を示すフローチャートの別の例を示す図である。 図15は、バックエンドスイッチがストレージ制御部よりデータ転送指示を受信した時の処理手順を示すフローチャートのまた更に別の例を示す図である。 図16は、第1のストレージ制御部が第2のストレージ制御部にデータを送信する処理のシーケンスの別の例を示す図である。 図17は、ストレージシステムと他のストレージシステムを接続する構成例である。 図18は、ストレージシステムと他のストレージシステムを接続する別の構成例である。 図19は、ストレージシステムの一つのストレージ制御部が上位装置から要求を受信した時の処理手順を示すフローチャートの例を示す図である。 図20は、ストレージ制御部が上位装置からデータ書込み要求を受信した場合の処理のシーケンスの例を示す図である。 図21は、ストレージシステムの一つのストレージ制御部が上位装置から要求を受信した時の処理手順を示すフローチャートの別の例を示す図である。 図22は、ストレージ制御部が上位装置からデータ書込み要求を受信した場合の処理のシーケンスのの別の例を示す図である。 図23は、ストレージシステムの一つのストレージ制御部が上位装置から要求を受信した時の処理手順を示すフローチャートの別の例を示す図である。 図24は、ストレージ制御部が上位装置からデータ書込み要求を受信した場合の処理のシーケンスのの別の例を示す図である。 図25は、ストレージシステムの一つのストレージ制御部が上位装置から要求を受信した時の処理手順を示すフローチャートの別の例を示す図である。 図26は、ストレージ制御部が上位装置からデータ書込み要求を受信した場合の処理のシーケンスのの別の例を示す図である。 図27は、バックエンドスイッチがプロセッサからデータ送付またはデータ要求を受信した時の処理手順を示すフローチャートの別の例を示す図である。 図28は、バックエンドスイッチがプロセッサからデータ送付またはデータ要求を受信した時の処理手順を示すフローチャートの別の例を示す図である。 図29は、第1のストレージ制御部が第2のストレージ制御部にデータを送信する処理のシーケンスの別の例を示す図である。
 以下、図面を参照しながら、本発明の幾つかの実施例を説明する。実施例は、ストレージシステムの冗長性を確保するためのストレージ制御部の間でのデータ通信制御を説明する。
 図1、図3A~図7Bを用いて実施例1を説明する。図1は、実施例1に係るストレージシステムの構成例である。図1において、ストレージシステムは、二つのストレージ制御部103Aと103Bを備える。ストレージ制御部103Aは、プロセッサ101A及びメモリ102Aを含んで構成され、ストレージ制御部103Bは、プロセッサ101B及びメモリ102Bをんで構成される。プロセッサ101Aと101Bは、バックエンドスイッチ104にそれぞれパス106Aと106Bによって接続される。
 実施例1に係るストレージシステムは、記憶デバイス105A~105Fを備え、記憶デバイス105A~105Fは、バックエンドスイッチ104にそれぞれパス107A~107Fによって接続される。なお、図1は、六つの記憶デバイス105A~105Fを示すが、記憶デバイスの数は任意である。
 バックエンドスイッチ104の機能の一部又は全部は、例えば集積回路で設計する等によりハードウェアで実現してもよく、または、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
 図3Aは、ストレージ制御部間で通信される、データ要求、データ返送、及びデータ送のフレームの例を示す。各フレームは、一つのユニットとして送付されてもよく、パケットに分割して送付されてもよい。図3Bはフレームフォーマットの一例を示し、他のフォーマット、例えばPCI Expressで用いられるパケットフォーマットが使用されてもよい。
 データ要求のフレーム331は、先頭フィールドにおいて、データ要求を表す番号(図3Aの例において「0」)を示す。次のフィールドは、複数のデータ要求フレームを区別するタグ番号(t)を示す。一般に、タグ番号は、一つのデータ要求に関してデータ返送が行われる前に次のデータ要求を送付することを可能とする。
 次のフィールドは、データ長を示す。データ長は、例えば、バイト単位、又は、所定サイズのデータブロック数で表わされる。次のフィールドは、要求先アドレスを示す。要求先アドレスは、要求先ストレージ制御部におけるプロセッサが使用するアドレス空間のアドレスを示す。要求先アドレスは、要求元ストレージ制御部におけるプロセッサが使用するアドレス空間のアドレスから、要求先ストレージ制御部におけるプロセッサが使用するアドレスに、バックエンドスイッチ104によって変換される。
 データ返送のフレーム332は、先頭フィールドにおいて、データ返送を表す番号(図3Aの例において「1」)を示す。次のフィールドは、データ要求のフレームに付けられたタグ番号を示し、いずれのデータ要求に対するデータ返送かを同定する。次のフィールドは、データ長を示す。最後のフィールドは、返送されるデータを格納する。
 データ送付のフレーム333は、先頭フィールドにおいて、データ送付を表す番号(図3Bの例において「2」)を示す。次のフィールドは、データ長を示す。次のフィールドは、送付先アドレスを示す。送付先アドレスは、送付先ストレージ制御部におけるプロセッサが使用するアドレス空間のアドレスを示す。送付先アドレスは、送付元ストレージ制御部におけるプロセッサが使用するアドレス空間のアドレスから、送付先ストレージ制御部におけるプロセッサが使用するアドレスに、バックエンドスイッチ104によって変換される。最後のフィールドは、送付するデータを格納する。
 図3Bは、バックエンドスイッチ104において、プロセッサ101Aから送付されたフレームに付与されたアドレスに対してスイッチング動作を決定するスイッチング情報テーブル350の例である。図3Bにおいて、アドレスは16進数で表記されている。
 プロセッサ101Aが使用するアドレス空間において、異なるアドレス範囲が異なるデバイス(メモリ、プロセッサ(メモリ)及び記憶デバイス)に割り当てられている。図3Bの例において、アドレス0000~00ffは、プロセッサ101Aがメモリ102Aに割り当てたアドレスである。このアドレス領域におけるアドレスを持つフレームは、プロセッサ101Aからバックエンドスイッチ104に送付されることはない。プロセッサ101Aは、直接にメモリ102Aへアクセスする。
 アドレス0100以降のアドレスを付与されたフレームが、プロセッサ101Aからバックエンドスイッチ104に到着する。例えば、アドレス0180の行き先は、プロセッサ101B(メモリ102B)であり、パス106Bへ送付される。後述するように、バックエンドスイッチ104は、プロセッサ101B(メモリ102B)へのフレームの宛先アドレスを変換する。図3Bの例において、プロセッサ101Aのアドレス0180はプロセッサ101Bのアドレス0080に変換される。
 プロセッサ101Aから送付されたフレームに付与されたアドレスが0220であれば、行き先は記憶デバイス105Cと判定され、フレームは、記憶デバイス105cに接続されるパス107cに向けて送付される。後述するように、記憶デバイスへのフレームは、バックエンドスイッチ104によるアドレス変換を受けない。
 プロセッサ101Bから受信したフレームのスイッチングも、同様構成のスイッチング情報テーブルを参照する。行き先がプロセッサ101A(メモリ102A)のフレームは、上記アドレス変換を受け、記憶デバイスへのフレームは、上記アドレス変換を受けない。後述するバックエンドスイッチ104がプロセッサ101Aまたはプロセッサ101Bよりデータ転送指示を受信してアドレス変換する構成においても、同様構成のアドレス変換情報及び行き先情報を保持するスイッチング情報テーブルが使用される。
 図3Cは、バックエンドスイッチ104がプロセッサ101Aよりデータ送付またはデータ要求を受信した場合の処理手順を示すフローチャートの例である。バックエンドスイッチ104が、プロセッサ101Bからデータ送付またはデータ要求を受信した時の処理手順も同様である。その場合、図3Cにおけるプロセッサ101Aとプロセッサ101Bとが入れ替えられる。
 ステップ300において、バックエンドスイッチ104は、プロセッサ101Aよりデータ送付またはデータ要求を受信する。ステップ301において、バックエンドスイッチ104は、送付先アドレスまたは要求先アドレス(宛先アドレス)及びスイッチング情報テーブル350を参照して、当該データ送付またはデータ要求の行き先を判定する。行き先がプロセッサ101Bである場合(301:プロセッサ101B)、バックエンドスイッチ104は、ステップ302に進む。ステップ302において、バックエンドスイッチ104は、プロセッサ101Bへの経路を選択する。この経路は、図1のパス106Bに相当する。
 ステップ303において、バックエンドスイッチ104は、受信したデータ送付またはデータ要求の宛先アドレスを、スイッチング情報テーブル350を参照して変換する。変換前のアドレスは、プロセッサ101Aが使用するアドレス空間のアドレスであり、変換後のアドレスは、プロセッサ101Bが使うアドレス空間におけるアドレスである。
 プロセッサ101Aとプロセッサ101Bは互いに独立であり、それぞれが使用するアドレス空間及びメモリ内の場所を特定するアドレスは、各々独立に定められる。このため、スイッチング情報テーブル350により定義される所定の規則に従って互いのアドレスを変換することで、プロセッサ(メモリ)間のデータ転送が可能となる。
 次にステップ304において、バックエンドスイッチ104は、プロセッサ101Bに当該データまたはデータ要求を送付して、終了する。
 ステップ301において、行き先が記憶デバイス105A~105Fのいずれかであれば(301:記憶デバイス105A~105F)、バックエンドスイッチ104は、ステップ305に進む。ステップ305において、バックエンドスイッチ104は、該記憶デバイス105A~105Fへのパス107A~107Fのいずれか一つを選択する。次にステップ306で、バックエンドスイッチ104は、該データ送付またはデータ要求を、該記憶デバイスに送付して、終了する。
 次に、バックエンドスイッチ104が記憶デバイス105A~105Fよりデータ送信またはデータ要求を受信した場合の処理を説明する。記憶デバイス105A~105Fは、プロセッサ101Aまたは101Bよりフレームを受信し、指定されたデータを読み書きする。さらに、記憶デバイス105A~105Fは、特定の動作を指示するコマンドコードをエンコードした特殊なデータパターンを受信して、指示された動作を行う。
 記憶デバイス105A~F105は、バックエンドスイッチ104に対して、フレームを送付する。例えば、記憶デバイス105A~105Fより受信するフレームの送付先は、バックエンドスイッチ104において、記憶デバイス105A~105Fそれぞれに対して予め定められている。送付先は、例えば、プロセッサ101A又はプロセッサ101Bである。
 バックエンドスイッチ104は、予め定められた設定に従って、記憶デバイス105A~105Fより受信したデータフレームを、プロセッサ101Aへのパス106A又はプロセッサ101Bへのパス106Bへ向けて送付するようにスイッチングを行う。
 これに代えて、バックエンドスイッチ104は、スイッチング情報テーブルを用いて、記憶デバイス105A~105Fより受信したデータフレームに付与されたアドレスに基づいて、スイッチング動作を行ってもよい。
 図4Aは、スイッチング情報テーブル450の例を示す。スイッチング情報テーブル450は、記憶デバイスのアドレス空間におけるアドレス範囲、行き先、及びプロセッサのアドレス空間におけるアドレス範囲の関係を定義する。
 バックエンドスイッチ104は、記憶デバイスより、例えばアドレス0440が付与されたデータフレームを受信する。バックエンドスイッチ104は、当該データフレームをパス106Aへ向けて送付するように、スイッチングを行う。バックエンドスイッチ104は、アドレス0440を、プロセッサ101Aがメモリ102Aをアクセスするのに用いるアドレス0040に変換する。これにより、プロセッサ101Aがメモリ102Aを正しくアクセスできる。
 また、バックエンドスイッチ104は、例えばアドレス0560が付与されたデータフレームを記憶デバイスより受信すると、当該データフレームをパス106Bに向けて送付するようにスイッチングを行う。バックエンドスイッチ104は、アドレス0560を、アドレス0060に変換する。
 図4Bは、バックエンドスイッチ104が記憶デバイス105A~105Fよりデータ送付またはデータ要求を受信した場合の処理手順を示すフローチャートの例である。ステップ400において、バックエンドスイッチは、記憶デバイス105A~105Fの一つより、データ送付またはデータ要求を受信する。
 ステップ401において、バックエンドスイッチ104は、当該データ送付またはデータ要求の行き先を判定する。判定方法は、上述の通りである。行き先がプロセッサ101Aである場合(401:プロセッサ101A)、バックエンドスイッチは、ステップ402に進む。ステップ402において、バックエンドスイッチ104は、プロセッサ101Aへの経路を選択する。この経路は図1におけるパス106Aに相当する。
 次に、バックエンドスイッチ104は、ステップ403に進み、選択した経路を用いて、当該データ送付またはデータ要求を、プロセッサ101Aに送付して、処理を終了する。
 ステップ401において、行き先がプロセッサ101Bであれば(401:プロセッサ101B)、バックエンドスイッチ104は、ステップ404に進む。ステップ404において、バックエンドスイッチ104は、プロセッサ101Bへの経路を選択する。この経路は図1では、パス106Bに相当する。次に、バックエンドスイッチ104は、ステップ403に進み、選択した経路を用いて、当該データ送付またはデータ要求を、プロセッサ101Bに送付して、処理を終了する。
 図5A及び5Bは、それぞれ、ストレージ制御部103Aがストレージ制御部103Bにデータを送信する処理のシーケンス例、及びストレージ制御部103Aがストレージ制御部103Bからデータを取得する処理のシーケンス例を示す。
 なお、ストレージ制御部103Bがストレージ制御部103Aにデータを送信する、またはストレージ制御部103Aからデータを取得する処理のシーケンスも同様である。その場合、図5A及び5Bにおいて、ストレージ制御部103Aとストレージ制御部103Bとが入れ替えられ、プロセッサ101Aとプロセッサ101Bとが入れ替えられ、メモリ102Aとメモリ102Bとが入れ替えられる。
 図5Aにおいて、ステップ501で、プロセッサ101Aはメモリ102Aよりデータを取得する。次にステップ502において、プロセッサ101Aは、取得したデータにプロセッサ101Aがメモリ102B上の場所を識別するアドレスAを付与して、バックエンドスイッチ104に送付する。アドレスAは、プロセッサ101Aのアドレス空間において、メモリ102B上の特定の場所を識別する。
 なお、ステップ501及び502は、プロセッサ101A上で動作するソフトウェアによって実行されてよく、それらの全部又は一部は、ソフトウェアの指示により動作する、プロセッサ101内に実装された機能ハードウェア(回路)により実行されてもよい。
 例えば、ソフトウェアは、メモリ102A上のデータの場所を識別するアドレス、メモリ102B上の場所を識別するアドレスA、送付するデータの長さを指定する。機能ハードウェアは、指定されたメモリ102A上のアドレスから、指定された長さのデータを読み出し、当該データ及び指定された送付先アドレス含むフレームを生成して、バックエンドスイッチ104に送付する。
 ステップ503において、バックエンドスイッチ104は、スイッチング情報テーブル350を参照し、アドレスAをプロセッサ101Bがメモリ102B上の場所を識別するのに使用するアドレスBに変換して、プロセッサ101Bに送付する。アドレスAをアドレスBに変換する理由は、図3Cのステップ303において説明した通りである。
 プロセッサ101Bは、アドレスBが付与されたフレームをバックエンドスイッチ104より受信する。ステップ504において、プロセッサ101Bは、アドレスBに従ってメモリ102Bにデータを格納する。ステップ504は、プロセッサ101B上で動作するソフトウェアによって実行されてもよい。バックエンドスイッチ104からアドレスBが付与されたデータを受信すると自動的にアドレスBに従ってメモリ102Bに格納する機能ハードウェア(回路)が、プロセッサ101Bに実装されていてもよい。
 図5Bを参照して、ステップ511で、プロセッサ101Aは、プロセッサ101Aのアドレス空間においてメモリ102B上の場所を識別するアドレスCを付与して、データ要求をバックエンドスイッチ104に送付する。ステップ511は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、プロセッサ101Aに実装された機能ハードウェア(回路)により実行されてもよい。
 例えば、プロセッサ101A上で動作するソフトウェアは、メモリ102B上の場所を識別するアドレスC、取得したデータを格納するメモリ102A上の場所、取得するデータの長さを指定する。機能ハードウェアは、指定された情報を含むデータ要求を生成し、送付する。
 バックエンドスイッチ104は、プロセッサ101AよりアドレスCが付与されたデータ要求を受信する。ステップ512において、バックエンドスイッチ104は、アドレスCをプロセッサ101Bがメモリ102B上の場所を識別するのに使用するアドレスDに変換して、データ要求をプロセッサ101Bに送付する。アドレスCをアドレスDに変換する理由は、図3Cのステップ303において説明した通りである。
 プロセッサ101Bは、バックエンドスイッチ104よりアドレスDが付与されたデータ要求を受信する。ステップ513において、プロセッサ101Bは、アドレスDに従って、メモリ102Bよりデータを取得する。ステップ514において、プロセッサ101Bは、メモリ102Bより取得したデータをバックエンドスイッチ104に返送する。
 ステップ513及び514は、プロセッサ101B上で動作するソフトウェアによって実行されてもよく、プロセッサ101Bに実装された機能ハードウェア(回路)により実行されてもよい。バックエンドスイッチ104からアドレスDが付与されたデータ要求を受信すると、機能ハードウェアは、例えば、自動的にアドレスDに従ってメモリ102Bからデータを取得して、バックエンドスイッチ104に返送する。
 バックエンドスイッチ104は、プロセッサ101Bより、ステップ512で送付したデータ要求に対して返送されたデータを受信する。ステップ515において、バックエンドスイッチ104は、返送されたデータを、更にプロセッサ101Aに返送する。
 プロセッサ101Aは、バックエンドスイッチ104よりステップ511で送付したデータ要求に対するデータの返送を受信する。ステップ516において、プロセッサ101Aは、返送されたデータをメモリ102Aに格納する。ステップ516は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、プロセッサ101Aに実装された機能ハードウェア(回路)により実行されてもよい。例えば、機能ハードウェアは、バックエンドスイッチ104からデータの返送を受信すると、自動的にメモリ102Aに格納する。
 図6Aは、ストレージ制御部103Aが記憶デバイス105A~105Fへデータを送信する処理のシーケンスの例である。以下の説明は、ストレージ制御部103Bも適用できる。この場合、ストレージ制御部103A、プロセッサ101A及びメモリ102Aは、それぞれ、ストレージ制御部103B、プロセッサ101B及びメモリ102Bに置き換えられる。この点は、図6Bの説明について同様である。
 ステップ601において、プロセッサ101Aはメモリ102Aよりデータを取得する。次にステップ602において、プロセッサ101Aは、取得したデータを、記憶デバイス105A~105Fのいずれに送付するかの指定を付与して、バックエンドスイッチ104に送付する。
 ステップ601及び602は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、それらの全部又は一部は、プロセッサ101Aに実装された機能ハードウェア(回路)により実行されてもよい。例えば、ソフトウェアは、メモリ102A上のデータ取得する場所、送付先記憶デバイス、及び送付するデータ長を指定し、機能ハードウェアは、指定された情報に従って動作する。
 バックエンドスイッチ104は、プロセッサ101Aより記憶デバイスに送付するデータを受信する。ステップ603において、バックエンドスイッチ104は、受信したデータに付与された送付先記憶デバイスの指定に従って、当該データを記憶デバイス105A~105Fの一つに送付する。
 図6Bは、ストレージ制御部103Aが記憶デバイス105A~105Fよりデータを取得する処理のシーケンスの例である。ステップ611で、プロセッサ101Aは、記憶デバイス105A~105Fのいずれからデータを取得するかの指定を付与して、データ要求をバックエンドスイッチ104に送付する。ステップ611は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、プロセッサ101Aに実装された機能ハードウェア(回路)により実行されてもよい。例えば、ソフトウェアは、どの記憶デバイスのどこからデータを取得するか、取得したデータを格納するメモリ102A上の場所、及び取得するデータ長さを指定する。機能ハードウェアは、指定された情報に従って動作する。
 バックエンドスイッチ104は、プロセッサ101Aよりどの記憶デバイスのどこからデータを取得するかの指定が付与されたデータ要求を受信する。ステップ612において、バックエンドスイッチ104は、当該データ要求を指定された記憶デバイスに送付する。
 記憶デバイスは、バックエンドスイッチ104からデータ要求を受信すると、ステップ613において、要求されたデータをバックエンドスイッチ104に返送する。
 ステップ612で送付したデータ要求に対して、記憶デバイスよりデータがバックエンドスイッチ104に返送される。ステップ614において、バックエンドスイッチ104は、当該データ要求送付元のプロセッサ101Aに返送されたデータを更に返送する。
 ステップ611でバックエンドスイッチ104に送付したデータ要求に対してデータが返送さると、ステップ615において、プロセッサ101Aは、返送されたデータをメモリ102Aに格納する。ステップ615は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、プロセッサ101Aに実装された機能ハードウェア(回路)により実行されてもよい。機能ハードウェアは、バックエンドスイッチ104からデータの返送を受信すると、自動的にメモリ102Aに格納する。
 図7Aは、記憶デバイス105A~105Fの一つがメモリ102Aにデータを送付する処理のシーケンスの例である。以下の説明は、メモリ102Bにも適用できる。その場合、プロセッサ101A及びメモリ102Aは、それぞれ、プロセッサ101B及びメモリ102Bに置き換えられる。この点は、図7Bの説明に同様である。
 図7Aにおいて、記憶デバイス105A~105Fの一つは、ステップ701で、メモリ102A上の場所を指定して、バックエンドスイッチ104にデータを送付する。このデータの送付は、例えば図3Aに示したデータ送付のフレーム333を用いる。
 バックエンドスイッチ104は、記憶デバイス105A~105Fの一つよりデータを受信すると、ステップ702において、指定されたメモリがメモリ102Aかメモリ102Bかに従って、受信したデータをメモリ102Aまたは102B上の場所の指定と共にプロセッサ101Aまたは101Bに送付する。本例において、指定されたメモリは102Aである。
 なお、指定されるメモリがメモリ102Aであるかメモリ102Bであるかは、先に説明したように、記憶デバイス105A~105Fそれぞれに対し予め定められていてもよい。バックエンドスイッチ104は、図4Aに示したスイッチング情報テーブル450を用いて、記憶デバイス105A~105Fより受信したデータフレームに付与されたアドレスに基づいて、決定してもよい。この場合、図4Aで説明したように、バックエンドスイッチ104は、記憶デバイス105A~105Fより受信したデータ送付のフレームに含まれる送付先アドレスを、スイッチング情報テーブル450の情報を用いて、プロセッサ101Aが使用するアドレス空間のアドレスに変換する。
 プロセッサ101Aは、バックエンドスイッチ104よりデータを受信すると、ステップ703において、指定されたメモリ102A上の場所に受信したデータを格納する。ステップ703は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、処理を行っても良いし、プロセッサ101Aまたは101Bに、バックエンドスイッチ104からデータを受信すると、自動的にメモリ102Aまたは102Bに格納するハードウェアの機能を設けても良い。
 図7Bは、記憶デバイス105A~105Fの一つがメモリ102Aよりデータを取得する処理のシーケンスの例である。記憶デバイス105A~105Fの一つは、ステップ711で、データを取得するメモリ102A上の場所を指定して、バックエンドスイッチ104にデータ要求を送付する。このデータ要求の送付は、例えば図3Aに示したデータ要求のフレーム331を用いる。
 バックエンドスイッチ104は、ステップ712において、指定されたメモリがメモリ102Aかメモリ102Bかに従って、受信したデータ要求を、メモリ102Aまたは102B上の場所の指定と共に、プロセッサ101Aまたは101Bに送付する。本例において、メモリ102Aが指定されている。
 なお、指定されるメモリがメモリ102Aであるかメモリ102Bであるかは、ステップ702の説明と同じく、記憶デバイス105A~105Fそれぞれに対し予め定められていてもよい。バックエンドスイッチ104は、図4Aに示したスイッチング情報テーブル450を用いて、記憶デバイス105A~105Fより受信したデータフレームに付与されたアドレスに基づいて、決定してもよい。この場合、図4Aで説明したように、バックエンドスイッチ104は、記憶デバイス105A~105Fより受信したデータ送付のフレームに含まれる送付先アドレスを、スイッチング情報テーブル450の情報を用いて、プロセッサ101Aが使用するアドレス空間のアドレスに変換する。
 プロセッサ101Aは、バックエンドスイッチ104からデータ要求を受信すると、ステップ713において、指定されたメモリ102A上の場所からデータを取得する。プロセッサ101Aは更に、ステップ714において、メモリ102Aより取得したデータをバックエンドスイッチ104に返送する。
 ステップ713及び714は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、プロセッサ101Aに実装された機能ハードウェア(回路)により実行されてもよい。に、バックエンドスイッチ104からデータ要求を受信すると、機能ハードウェアは、自動的に指定されたメモリ102A上の場所に従ってメモリ102Aからデータを取得して、バックエンドスイッチ104に返送する。
 バックエンドスイッチ104は、ステップ712で送付したデータ要求に対して、プロセッサ101Aからデータが返送されてくると、ステップ715で、更に当該データを、ステップ711でデータ要求を送付してきた記憶デバイス105A~105Fの一つに返送する。
 上述のように、実施例1において、互換性のある通信規格が、ストレージ制御部間の通信及びストレージ制御部と記憶デバイスとの間の通信に適用される。実施例1によって、ストレージ制御部103Aと103Bは、バックエンドスイッチ104を用いて互いに通信を行うことができる。
 例えば、図1に図示されない上位装置から記憶デバイス105A~105Fに書き込むためのデータを受信した場合、ストレージ制御部103A、103Bは、バックエンドスイッチ104を介して当該データを二重化することができる。記憶デバイス105A~105Fへの書込みが完了しなくとも充分な信頼性と可用性を確保することができるので、記憶デバイス105A~105Fへ書き込む前に上位装置に書込み完了を通知することが可能である。更にバックエンドスイッチ104に、共有記憶領域は不要である。
 次に図2~図7Bを用いて本発明の実施例2を説明する。図2は、実施例2に係るストレージシステムの構成例である。図2において、ストレージシステムは、二つのストレージ制御部203A、203Bを備える。ストレージ制御部203Aは、プロセッサ201A及びメモリ202Aを含んで構成される。ストレージ制御部203Bは、プロセッサ201B及びメモリ202Bを含んで構成される。
 実施例2に係わるストレージシステムは、二つの互いに独立なバックエンドスイッチ204Aと204Bを備える。プロセッサ201Aは、バックエンドスイッチ204A及び204Bそれぞれに、パス206A及び208Aによって接続される。プロセッサ201Bは、バックエンドスイッチ204A及び204Bそれぞれに、パス206B及び208Bによって接続される。
 実施例2に係るストレージシステムは、記憶デバイス205A~205Fを備える。記憶デバイス205A~205Fは、バックエンドスイッチ204Aにそれぞれパス207A~207Fによって接続される。記憶デバイス205A~205Fは、バックエンドスイッチ204Bにそれぞれパス209A~209Fによって接続される。
 プロセッサ201A及び201Bは、バックエンドスイッチ204Aまたは204Bのどちらか一方のみを用いても、すべての記憶デバイス205A~205F及び他方のプロセッサ201B及び201Aに接続される。
 この構成により、バックエンドスイッチ204A及び204Bの一方が動作を停止しても、またはバックエンドスイッチ204A及び204Bへのパスのいずれかが切断されても、プロセッサ201A及び201Bとの間の通信、及びプロセッサ201Aまたは201Bと記憶デバイス205A~205Fの間の通信をすべて継続できる。これによりシステムの可用性を高めることができる。
 なお、図2は、六つの記憶デバイスは205A~205Fを示すが、記憶デバイスの数に任意である。
 実施例2に係わるストレージシステムに対して、実施例1における図3A~図7Bの説明が適用できる。実施例2においては、ストレージ制御部103A、103B、プロセッサ101A、101B、メモリ102A、102Bは、それぞれ、ストレージ制御部203A、203B、プロセッサ201A、201B、メモリ202A、202Bに、置き換えられる。また、バックエンドスイッチ104は、バックエンドスイッチ204Aまたは204Bに置き換えられ、記憶デバイス105A~105Fは、記憶デバイス205A~205Fに置き換えられる。
 よって、実施例1と同じく、ストレージ制御部203Aと203Bは、バックエンドスイッチ204Aまたは204Bを用いて互いに通信を行うことができる。例えば図2に図示されない上位装置から記憶デバイス205A~205Fに書き込むためのデータを受信した場合、ストレージ制御部203A、203Bは、バックエンドスイッチ204Aまたは204Bを介して当該データを二重化することができる。
 以上により、記憶デバイス205A~205Fへの書込みが完了しなくとも充分な信頼性と可用性を確保することができるので、記憶デバイス205A~205Fへ書き込む前に上位装置に書込み完了を通知することが可能である。更にバックエンドスイッチ204Aまたは204Bには、共有記憶領域は不要である。
 図1、図4A、図4B、図6A~図9B、図27を用いて実施例3を説明する。実施例3において、図1、図4A、図4B、図6A~図7Bの説明は、実施例1と同じである。
 図27は、バックエンドスイッチ104がプロセッサ101Aよりデータ送付またはデータ要求を受信した場合の処理手順を示すフローチャートの例である。バックエンドスイッチ104がプロセッサ101Bからデータ送付またはデータ要求を受信した時の処理手順も同じである。その場合、図27でプロセッサ101Aは、プロセッサ101Bに置き換えられる。
 バックエンドスイッチ104が、ステップ2700で、プロセッサ101Aよりデータまたはデータ要求を受信する。ステップ2701で、バックエンドスイッチ104は、記憶デバイス105A~105Fへのパス107A~107Fの対象となる一つを選択する。次にステップ2702で、バックエンドスイッチ104は、該データ送付またはデータ要求を、該記憶デバイスに送付して、処理を終了する。
 図8Aは、実施例3に係るストレージシステムで用いることのできるデータ転送指示のフレームフォーマット例である。第1のフォーマットのデータ転送指示851は、プロセッサ101Aからバックエンドスイッチ104への、データ転送指示である。データ転送指示851は、データ転送方向を指定する。先頭フィールドは、転送方向を指定する。転送方向は、例えば0または1で表わされる。例えば、0はプロセッサ101Aからプロセッサ101Bにデータを転送することを示す。1は、プロセッサ101Bからプロセッサ101Aにデータを転送することを示す。
 次のフィールドは、転送するデータ長を示す。さらに次のフィールドは、プロセッサ101Aのアドレス空間におけるメモリ102A上のアドレスを示す。最後のフィールドは、プロセッサ101Aのアドレス空間において設定された、プロセッサ101Bのメモリ102B上のアドレスを示す。
 データ転送指示851は、データ転送方向を指定する情報をおく必要があるが、例えばアドレス変換を行うのは常に、最後においたプロセッサ101Aが設定したプロセッサ101Bのメモリ102上のアドレスであるので、バックエンドスイッチ104内にアドレス変換機能を容易に設けることができる。
 第2のフォーマットのデータ転送指示852は、転送元アドレスと転送先アドレスを指定することによって、転送方向を示す。転送方向のフィールドが不要である。先頭フィールドは、データ長を示す。次のフィールドは、転送元アドレスを示す。最後のフィールドは、転送先アドレスを示す。
 図8Bは、バックエンドスイッチ104がプロセッサ101Aよりデータ転送指示を受信した場合の処理の手順を示すフローチャートの例である。バックエンドスイッチ104がプロセッサ101Bからデータ転送指示を受信した場合の処理手順も同じである。その場合、以下の説明において、プロセッサ101Aとプロセッサ101Bとが入れ替えられれ、メモリ102Aとメモリ102Bとが入れ替えられる。
 図8Bを参照して、バックエンドスイッチ104は、ステップ800で、プロセッサ101Aよりデータ転送指示を受信する。次にステップ801で、バックエンドスイッチ104は、受信したデータ転送指示の転送方向を判定する。転送方向がメモリ102Aからメモリ102Bへの転送であれば(801:メモリ102Aからメモリ102Bへ転送)、処理は、ステップ802へ進む。
 ステップ802において、バックエンドスイッチ104は、メモリ102Aより転送するデータを取得する。次にステップ803において、バックエンドスイッチ104は、プロセッサ101Aがデータ転送指示において指定した転送先のアドレスを、プロセッサ101Bが使用するアドレスに変換する。スイッチング情報テーブル350が参照される。プロセッサ101Aとプロセッサ101Bは互いに独立したプロセッサであり、それぞれが使用するメモリの場所を特定するアドレスについては、各々独立に定められる。このため、本実施例も、所定の規則に従って、お互いのアドレスを変換する。
 最後にステップ804において、バックエンドスイッチ104は、変換したアドレスに従って、メモリ102Bにメモリ102Aより取得したデータを書き込んで、処理を終了する。
 ステップ801において、転送方向がメモリ102Bからメモリ102Aへの転送であれば(801:メモリ102Bからメモリ102Aへ転送)、処理は、ステップ805に進む。
 ステップ805において、バックエンドスイッチ104は、ステップ803と同じく、プロセッサ101Aが指定した転送元のアドレスを、プロセッサ101Bが使うアドレスに変換する。次にステップ806において、バックエンドスイッチ104は、変換したアドレスに従って、メモリ102Bよりデータを取得する。最後にステップ807において、バックエンドスイッチ104は、メモリ102Bより取得したデータをメモリ102Aに書き込んで、処理を終了する。
 図9Aは、図8Bのフローチャートで示した処理手順に従って、ストレージ制御部103Aがストレージ制御部103Bにデータを送付する処理のシーケンスの例である。図9Bは、ストレージ制御部103Aがストレージ制御部103Bよりデータを取得する処理のシーケンスの例である。
 なお、ストレージ制御部103Bがストレージ制御部103Aにデータを送付するまたはストレージ制御部103Aからデータを取得する処理のシーケンスも同様となる。その場合、図9A及び9Bにおいて、ストレージ制御部103A、プロセッサ101A、メモリ102Aが、それぞれ、ストレージ制御部103B、プロセッサ101B、メモリ102Bと入れ替えられる。
 図9Aを参照して、ステップ901で、プロセッサ101Aは、転送先のメモリ102B上の場所を識別するアドレスA、転送元のメモリ102A上の場所を識別するアドレス、転送するデータ長を含むデータ転送指示を、バックエンドスイッチ104に送付する。指定される二つのアドレスは、プロセッサ101Aのアドレス空間におけるアドレスである。
 バックエンドスイッチ104は、ステップ902において、メモリ102Aの指定されたデータ転送元のアドレスから転送元データを取得する要求を、プロセッサ101Aに送付する。
 プロセッサ101Aは、ステップ903において、メモリ102A上の要求されたアドレスからデータを取得する。次にプロセッサ101Aは、ステップ904において、メモリ102Aから取得したデータをバックエンドスイッチ104に返送する。ステップ903及び904は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、プロセッサ101Aに実装された機能ハードウェア(回路)により実行されてもよい。バックエンドスイッチ104からデータ要求を受信すると、機能ハードウェアは、自動的に指定されたアドレスに従ってメモリ102Aからデータを取得して、バックエンドスイッチ104に返送する。
 バックエンドスイッチ104は、プロセッサ101Aより転送元のデータを受ける。ステップ905において、バックエンドスイッチ104は、プロセッサ101Aから送付されたデータ転送指示に含まれる、プロセッサ101Aが転送先のメモリ102B上の場所を識別するアドレスAを、プロセッサ101Bが使用するメモリ102B上のアドレスBに変換する。スイッチング情報テーブル350が参照される。
 バックエンドスイッチ104は、アドレスBを付与して、プロセッサ101Aより返送されたデータを、プロセッサ101Bに送付する。アドレスAをアドレスBに変換する理由は、図8Bのステップ803における説明の通りである。
 プロセッサ101Bは、バックエンドスイッチ104よりアドレスBが付与されたデータを受信する。ステップ906において、プロセッサ101Bは、アドレスBに従ってメモリ102Bに送付されたデータを格納する。ステップ906は、プロセッサ101B上で動作するソフトウェアによって実行されてもよく、プロセッサ101Bに実装された機能ハードウェア(回路)により実行されてもよい。機能ハードウェアは、バックエンドスイッチ104からアドレスBが付与されたデータを受信すると、自動的にアドレスBに従ってメモリ102Bにデータを格納する。
 図9Bを参照して、ステップ911で、プロセッサ101Aは、データ転送指示を、バックエンドスイッチ104に送付する。データ転送指示は、プロセッサ101Aが転送元のメモリ102B上の場所を識別するアドレスC、転送先のメモリ102A上の場所を識別するアドレス、及び転送するデータ長を含む。
 バックエンドスイッチ104は、ステップ912において、プロセッサ101Aが送付したデータ転送指示に含まれるアドレスCを、プロセッサ101Bがメモリ102B上の場所を識別するのに使用するアドレスDに変換する。スイッチング情報テーブル350が参照される。バックエンドスイッチ104は、アドレスDを付与してデータ取得の要求を、プロセッサ101Bに送付する。アドレスCをアドレスDに変換する理由は、図8Bのステップ803における説明の通りである。
 プロセッサ101Bは、バックエンドスイッチ104からアドレスDが付与されたデータ要求を受信する。ステップ913において、プロセッサ101Bは、アドレスDに従ってメモリ102Bよりデータを取得する。次にステップ914において、プロセッサ101Bは、メモリ102Bより取得したデータをバックエンドスイッチ104に返送する。
 ステップ913及び914は、プロセッサ101B上で動作するソフトウェアによって実行されてもよく、プロセッサ101Bに実装された機能ハードウェア(回路)により実行されてもよい。バックエンドスイッチ104からアドレスDが付与されたデータ要求を受信すると、機能ハードウェアは、自動的にアドレスDに従ってメモリ102Bからデータを取得して、バックエンドスイッチ104に返送する。
 バックエンドスイッチ104は、ステップ912でプロセッサ101Bに送付したデータ要求に対応して、プロセッサ101Bよりメモリ102Bから取得したデータを受信する。ステップ915において、バックエンドスイッチ104は、受信したデータを、当該転送指示に示されている転送先のメモリ102A上のアドレスを付与して、プロセッサ101Aに送付する。
 プロセッサ101Aは、バックエンドスイッチ104より、メモリ102A上のアドレスが付与されたデータが送付されると、ステップ916において、付与されたアドレスに従って、当該データをメモリ102Aに格納する。ステップ916は、プロセッサ101A上で動作するソフトウェアによって実行されてもよく、プロセッサ101Aに実装された機能ハードウェア(回路)により実行されてもよい。バックエンドスイッチ104からメモリ102A上のアドレスが付与されたデータを受信すると、機能ハードウェアは、自動的に付与されたアドレスに従ってメモリ102Aにデータを格納する。
 以上に説明した実施例3によって、実施例1と同じく、ストレージ制御部103Aと103Bは、バックエンドスイッチ104を用いて互いに通信を行うことができる。例えば図1に図示されない上位装置から記憶デバイス105A~105Fに書き込むためのデータを受信した場合、ストレージ制御部103A、103Bは、バックエンドスイッチ104を介して当該データを二重化することができる。
 以上により、記憶デバイス105A~105Fへの書込みが完了しなくとも充分な信頼性と可用性を確保することができるので、記憶デバイス105A~105Fへ書き込む前に上位装置に書込み完了を通知することが可能である。更にバックエンドスイッチ104に、共有記憶領域は不要である。また、本実施例では、バックエンドスイッチとプロセッサの機能ハードウェアが、転送元アドレスと転送先アドレスとの間のデータ転送を実行することで、プロセッサの処理時間を低減できる。
 図1に示したストレージシステムの構成に代えて、図2に示すストレージシステムの構成を採用してもよい。図2に示したストレージシステムの構成を採る場合、上記説明において、ストレージ制御部103Aはストレージ制御部203Aに、ストレージ制御部103Bはストレージ制御部203Bに、置き換えられる。
 さらに、プロセッサ101Aはプロセッサ201Aに、プロセッサ101Bはプロセッサ201Bに、メモリ102Aはメモリ202Aに、メモリ102Bはメモリ202Bに、置き換えられる。また、バックエンドスイッチ104はバックエンドスイッチ204Aまたは204Bに、記憶デバイス105A~105Fは記憶デバイス205A~205Fに置き換えられる。
 次に図1または図2、及び図4A、図4B、図6A~図7B、図10、図11を用いて実施例4を説明する。本実施例のストレージシステムの構成として図1に示す構成を採る場合、図1、図4A、図4B、図6A~図7Bの説明は、実施例1と同じである。
 図10は、本実施例において、バックエンドスイッチ104がプロセッサ101Aよりデータ送付またはデータ要求を受信した場合の処理手順を示すフローチャートの例である。なお、バックエンドスイッチ104がプロセッサ101Bからデータ送付またはデータ要求を受信した場合の処理手順も同様である。その場合、図10において、プロセッサ101Aとプロセッサ101Bとが入れ替えられる。
 図10において、ステップ1000からステップ1006までの処理に対して、実施例1における図3Cのステップ300からステップ306までの説明が適用できる。
 ステップ1007では、バックエンドスイッチ104は、プロセッサ101Aから送付されたフレームが、メモリ102Bに格納するためのデータの送付か、メモリ102Bのデータの取得の要求かを判定する。判定した結果がメモリ102Bに格納するためのデータ送付であれば(1007:データ送付)、バックエンドスイッチ104は、ステップ1008に進む。
 ステップ1008では、バックエンドスイッチ104は、メモリ102Bに格納するためにデータを送付したことを、プロセッサ101Bに通知する。プロセッサ101Bへの通知は、例えば、予め定める特定の信号をバックエンドスイッチ104からプロセッサ101Bに送付することで行う。または、通知は、予め定める特定のデータをプロセッサ101Bの特定のアドレスに送付することで行う。または、バックエンドスイッチ104からプロセッサ101Bに、インタラプト信号を送付してもよい。
 ステップ1007で、判定した結果がメモリ102Bのデータの取得の要求であれば(1007:データ要求)、バックエンドスイッチ104は、処理を終了する。
 図11は、バックエンドスイッチ104が図10に示す処理手順に従って処理を行う場合に、ストレージ制御部103Aからストレージ制御部103Bにデータを送信する処理のシーケンスの例である。
 なお、ストレージ制御部103Bがストレージ制御部103Aにデータを送信する処理のシーケンスも同様となる。その場合、図11において、ストレージ制御部103Aとストレージ制御部103Bとが入れ替えられ、プロセッサ101Aとプロセッサ101Bとが入れ替えられ、メモリ102Aとメモリ102Bとが入れ替えられる。
 図11において、ステップ1101からステップ1104に対して、実施例1における図5Aのステップ501からステップ504までの説明が適用できる。ステップ1103の後、ステップ1105において、バックエンドスイッチ104は、プロセッサ101Bにデータを送付したことを通知する。この通知の方法は、先に図10のステップ1008の説明の通りである。
 以上のように、本実施例は、バックエンドスイッチからプロセッサへのデータ送付を通知する。本実施例は、実施例1で説明した効果に加えて、プロセッサ101Bが、定期的にメモリ102Bの内容を検査しなくとも、プロセッサ101Aからのデータ送付が行われたことを知ることができる。メモリ102Bの内容を定期的に検査する必要がないので、性能的なオーバーヘッドを削減でき、プロセッサ101Bの効率を向上させることが可能である。
 本実施例のストレージシステムの構成として、図1に示す構成に代えて、図2に示す構成を採ることができる。この場合、図2、図4A、図4B、図6A~図7Bに関する説明は実施例2と同じである。図10、図11の説明において、ストレージ制御部103Aはストレージ制御部203Aに、ストレージ制御部103Bはストレージ制御部203Bに置き換えられる。
 さらに、プロセッサ101Aはプロセッサ201Aに、プロセッサ101Bはプロセッサ201Bに、メモリ102Aはメモリ202Aに、メモリ102Bはメモリ202Bに、置き換えられる。また、バックエンドスイッチ104はバックエンドスイッチ204Aまたは204Bに、記憶デバイス105A~105Fは記憶デバイス205A~205Fに置き換えられる。
 次に図1または図2、図4A、図4B、図6A~図7B、図12、図13A、図13B、図27を用いて実施例5を説明する。本実施例において、図1、図2、図4A、図4B、図6A~図7B、図27の説明は、実施例3と同様である。
 本実施例のストレージシステムの構成として図1に示す構成を採る場合について、図12及び図13を参照して説明する。図12は、バックエンドスイッチ104が、プロセッサ101Aからデータ転送指示を受信した場合の処理の手順を示すフローチャートの例である。
 なおバックエンドスイッチ104がプロセッサ101Bからデータまたはデータ要求を受信した場合の処理手順も同じである。その場合、図12において、プロセッサ101Aとプロセッサ101Bとが入れ替えられ、メモリ102Aとメモリ102Bとが入れ替えられる。
 図12において、ステップ1200からステップ1207に対しては、実施例3の図8Bにおけるステップ800からステップ807の説明が適用できる。ステップ1208では、バックエンドスイッチ104は、プロセッサ101Bに当該データをメモリ102Bに書き込んだことを通知する。
 プロセッサ101Bへの通知は、例えば、予め定める特定の信号をバックエンドスイッチ104からプロセッサ101Bに送付することで行う。または通知は、予め定める特定のデータをプロセッサ101Bの特定のアドレスに送付することで行う。またはバックエンドスイッチ104からプロセッサ101Bに、インタラプト信号を送付してもよい。
 バックエンドスイッチ104は、ステップ1207の後、ステップ1209に進む。ステップ1209では、バックエンドスイッチ104が、メモリ102Bより取得したデータをメモリ102Aに書き込んだことをプロセッサ101Aに通知する。
 プロセッサ101Aへの通知は、例えば、予め定める特定の信号をバックエンドスイッチ104からプロセッサ101Aに送付することで行う。または通知は、予め定める特定のデータをプロセッサ101Aの特定のアドレスに送付することで行う。またはバックエンドスイッチ104からプロセッサ101Aに、インタラプト信号を送付してもよい。
 図13Aは、バックエンドスイッチ104が図12に示す処理手順に従って処理を行う場合に、ストレージ制御部103Aがストレージ制御部103Bにデータを送信する処理のシーケンスの例である。図13Bは、ストレージ制御部103Aがストレージ制御部103Bからデータを取得する処理のシーケンスの例である。
 なお、ストレージ制御部103Bがストレージ制御部103Aにデータを送信するまたはストレージ制御部103Aのデータを取得する処理のシーケンスも同様である。その場合、図13A及び13Bにおいて、ストレージ制御部103Aとストレージ制御部103Bとが入れ替えられ、プロセッサ101Aとプロセッサ101Bとが入れ替えられ、メモリ102Aとメモリ102Bとが入れ替えられる。
 図13Aにおいて、ステップ1301からステップ1306に対して、実施例3の図9Aにおけるステップ901からステップ906までの説明が適用できる。図13Aでは、バックエンドスイッチ104が、ステップ1305の後、ステップ1307において、当該データを送付したことをプロセッサ101Bに通知する。この通知の方法は、図12のステップ1208において説明にした通りである。
 図13Bにおいて、ステップ1311からステップ1316に対して、実施例3の図9Bにおけるステップ911からステップ916の説明が適用できる。図13Bでは、バックエンドスイッチ104が、ステップ1315の後、ステップ1317において、プロセッサ101Aに当該データを送付したことを通知する。この通知の方法は、図12のステップ1209において説明した通りである。
 以上のように、本実施例はバックエンドスイッチからプロセッサにデータ送付を通知する。本実施例は、実施例3で説明した効果に加えて、プロセッサ101Aまたは101Bが定期的にメモリ102Aまたは102Bの内容を検査しなくとも、バックエンドスイッチ104からのデータ送付が行われたことを知ることができる。メモリ102Aまたは102Bの内容を定期的に検査する必要がないので、性能的なオーバーヘッドを削減でき、プロセッサ101Aまたは101Bの効率を向上させることが可能である。
 本実施例のストレージシステムの構成として、図1に示す構成に代えて、図2に示す構成を採ることができる。この場合、図2、図4A、図4B、図6A~図7B、図27に関する説明は、実施例3と同じである。図12、図13の説明において、ストレージ制御部103Aはストレージ制御部203Aに、ストレージ制御部103Bはストレージ制御部203Bに、置き換えられる。
 さらに、プロセッサ101Aはプロセッサ201Aに、プロセッサ101Bはプロセッサ201Bに、メモリ102Aはメモリ202Aに、メモリ102Bはメモリ202Bに、置き換えられる。また、バックエンドスイッチ104はバックエンドスイッチ204Aまたは204Bに、記憶デバイス105A~105Fは記憶デバイス205A~205Fに置き換えられる。
 図1または図2、図4A、図4B、図6A~図7B、図14、図27を用いて実施例6を説明する。本実施例において、図1、図2、図4A、図4B、図6A~図7B、図27の説明は実施例3と同様である。本実施例のストレージシステムの構成として図1に示す構成を採る場合について、図14を説明する。
 図14は、バックエンドスイッチ104がプロセッサ101Aからデータ転送指示を受信した場合の処理の手順を示すフローチャートの例である。なおバックエンドスイッチ104がプロセッサ101Bからデータ転送指示を受信した場合の処理手順も同じである。その場合、図14でプロセッサ101Aとプロセッサ101Bとが入れ替えられ、メモリ102Aとメモリ102Bとが入れ替えられる。
 図14において、ステップ1400からステップ1407に対して、実施例3の図8Bにおけるステップ800からステップ807までの説明が適用できる。図14では、ステップ1400でプロセッサ101Aより受信するデータ転送指示が、転送するデータに誤りがあるかどうかをチェックできるデータチェックコードを含む。
 データチェックコードは、例えばT10DIFと呼ばれる標準のデータチェックコードでもよい。データチェックコードと照合できるデータ保護のためのコードが、チェック対象のデータに付与されてもよく、チェック対象と別にバックエンドスイッチ104に供給されてもよい。
 図14において、処理は、ステップ1402の後に、ステップ1408に進む。ステップ1408では、バックエンドスイッチ104は、プロセッサ101Aより受信したデータ転送指示に含まれているデータチェックコードにより、ステップ1402でメモリ102Aより取得したデータに誤りがあるかどうかチェックする。
 次にステップ1409に進み、バックエンドスイッチ104は、チェックした結果、誤りがあるかどうかを判定する。誤りがなければ(1409:OK)、処理は、ステップ1403に進む。誤りがあれば(1409:NG)、バックエンドスイッチ104は、メモリ102Bに当該データを書き込まずに、ステップ1412に進む。バックエンドスイッチ104は、ステップ1404の後もステップ1412に進む。
 処理は、ステップ1406の後に、ステップ1410に進む。ステップ1410では、バックエンドスイッチ104は、プロセッサ101Aより受信したデータ転送指示に含まれているデータチェックコードにより、ステップ1406でメモリ102Bより取得したデータに誤りがあるかどうかチェックする。
 次に、バックエンドスイッチ104は、ステップ1411に進み、チェックした結果、誤りがあるかどうかを判定する。誤りがなければ(1411:OK)、バックエンドスイッチ104は、ステップ1407に進む。誤りがあれば(1411:NG)、バックエンドスイッチ104は、メモリ102Aに当該データを書き込まずに、ステップ1412に進む。バックエンドスイッチ104は、ステップ1403の後もステップ1412に進む。
 ステップ1412では、バックエンドスイッチ104は、ステップ1408またはステップ1410でチェックしたチェック結果をプロセッサ101Aに報告して、処理を終了する。
 以上のように、本実施は、実施例3で説明した効果に加えて、転送するデータに誤りがあるかどうかを、バックエンドスイッチ104にてチェックすることができる。よって、転送するデータの正当性を高めることが可能であり、さらに、プロセッサ101Aまたは101Bにおいて、データ誤りチェックのために性能的なオーバーヘッドを生じることがない。
 本実施例のストレージシステムの構成として、図1に示す構成に代えて、図2に示す構成を採ることができる。この場合、図2、図4A、図4B、図6A~図7B、図27の説明は、実施例3と同じである。図14の説明において、プロセッサ101Aはプロセッサ201Aに、プロセッサ101Bはプロセッサ201Bに、メモリ102Aはメモリ202Aに、メモリ102Bはメモリ202Bに、置き換えられる。さらに、バックエンドスイッチ104はバックエンドスイッチ204Aまたは204Bに、記憶デバイス105A~105Fは記憶デバイス205A~205Fに置き換えられる。
 図1または図2、図4A、図4B、図6A~図7B、図15、図16、図27を用いて実施例7を説明する。本実施例において、図1、図2、図4A、図4B、図6A~図7B、図27の説明は実施例3と同様である。本実施例のストレージシステムの構成として図1に示す構成を採る場合について、図15及び図16を参照して説明する。
 図15は、バックエンドスイッチ104がプロセッサ101Aからデータ転送指示を受信した場合の処理の手順を示すフローチャートの例である。なおバックエンドスイッチ104がプロセッサ101Bからデータ転送指示を受信した場合の処理手順も同様である。その場合、図15において、プロセッサ101Aとプロセッサ101Bとが入れ替えられ、メモリ102Aとメモリ102Bとが入れ替えられる。
 図15において、ステップ1500からステップ1507に対して、実施例3の図8におけるステップ800からステップ807の説明が適用できる。図15では、バックエンドスイッチ104は、ステップ1504の後、ステップ1508に進む。
 ステップ1508では、バックエンドスイッチ104は、メモリ102Bに書き込んだ当該データを再度読み込む。このステップによって、ステップ1504で当該データを確実にメモリ102Bに書き込む処理が完了したことを保証することができる。ステップ1508で読込むデータの長さは、ステップ1504で書き込んだデータの長さに等しくてもよく、ステップ1504で書き込んだデータの一部の長さであってもよい。例えば、バックエンドスイッチ104は、ステップ1504で書き込んだデータの最後の部分を読み込んでもよい。
 ステップ1509において、バックエンドスイッチ104は、プロセッサ101Aに当該データを読み込めたことを通知する。通知は、例えば、ステップ1508で読み込んだデータの全部または一部をプロセッサ101Aへ送付することで行ってもよいし、予め定める特定の信号をプロセッサ101Aに送付することで行ってもよい。
 読み込んだデータの全部または一部をプロセッサ101Aに送付する場合、送付した当該データの全部または一部は、プロセッサ101Aにより破棄される。更にバックエンドスイッチ104からプロセッサ101Aに送付されなかった当該データの全部または一部がある場合には、プロセッサ101Aに送付されなかったデータは、バックエンドスイッチ104により破棄される。
 また更に、通知は、別途予め定める特定のデータをプロセッサ101Aのアドレス空間における特定のアドレスに送付することで行ってもよく、バックエンドスイッチ104からプロセッサ101Aに、インタラプト信号を送付することで行ってもよい。このようにすることで、メモリ102Bに書き込む処理が完了したことをプロセッサ101Aに通知可能である。
 図16は、バックエンドスイッチ104が図15に示す処理手順に従って処理を行う場合に、ストレージ制御部103Aからストレージ制御部103Bにデータを送信する処理のシーケンスの例である。なお、ストレージ制御部103Bがストレージ制御部103Aへデータを送信する処理の流れも同様となる。
 その場合、図16において、ストレージ制御部103Aとストレージ制御部103Bが入れ替えられ、プロセッサ101Aとプロセッサ101Bとが入れ替えられ、メモリ102Aとメモリ102Bとが入れ替えられる。
 図16において、ステップ1601から1606に対して、実施例3の図9Aにおけるステップ901から906までの説明が適用できる。図16では、バックエンドスイッチ104は、ステップ1607において、ステップ1605で用いたアドレスBを再び用いて、メモリ102Bから当該データを取得する要求をプロセッサ101Bに送付する。
 取得するデータの長さは、ステップ1605でアドレスBを付与して送付したデータの長さと等しくてもよく、ステップ1605でアドレスBを付与して送付したデータの一部の長さであってもよい。これは、図15のステップ1508の説明の通りである。例えば、バックエンドスイッチ104は、ステップ1605で送付したデータの最後の一部を取得するように、取得するデータの長さとアドレスBを変更しても良い。
 プロセッサ101Bは、バックエンドスイッチ104からアドレスBが付与されたデータ要求を受信すると、ステップ1608において、アドレスBに従って、メモリ102Bよりデータを取得する。次にステップ1609において、プロセッサ101Bは、メモリ102Bより取得したデータをバックエンドスイッチ104に返送する。
 ステップ1608及び1609は、プロセッサ101B上で動作するソフトウェアによって実行されてもよく、プロセッサ101Bに実装された機能ハードウェア(回路)により実行されてもよい。機能ハードウェアは、バックエンドスイッチ104からアドレスBが付与されたデータ要求を受信すると、自動的にアドレスBに従ってメモリ102Bからデータを取得して、バックエンドスイッチ104に返送する。
 バックエンドスイッチ104は、プロセッサ101BよりアドレスBのデータを受信すると、ステップ1610において、データがメモリ102Bより読み込めたことをプロセッサ101Aに通知する。通知方法は、図15のステップ1509の説明の通りである。
 以上のように、本実施は、実施例3で説明した効果に加えて、ストレージ制御部103Aからストレージ制御部103Bにデータを転送する場合に、メモリ102Bに当該データを格納できたことを保証できる。例えば図1に図示されない上位装置から記憶デバイス105A~105Fに書き込むためのデータを受信した場合、ストレージ制御部103Aと103Bで当該データを二重化できたことを保証できる。
 記憶デバイス105A~105Fへの書込みが完了しなくとも、充分な信頼性と可用性を確保することができるので、記憶デバイス105A~105Fにデータを書き込む前に、上位装置にデータ書き込み完了を通知することが可能である。本実施例は、実施例3に対して、更にデータの二重化を確実に保証できる。
 本実施例のストレージシステムの構成として、図1に示す構成に代えて、図2に示す構成を採ることができる。この場合、図2、図4A、図4B、図6A~図7B、図27に関する説明は、実施例3と同じである。図15及び図16の説明において、ストレージ制御部103Aがストレージ制御部203Aに置き換えられ、ストレージ制御部103Bがストレージ制御部203Bに置き換えられる。
 さらに、プロセッサ101Aがプロセッサ201Aに置き換えられ、プロセッサ101Bがプロセッサ201Bに置き換えられ、メモリ102Aがメモリ202Aに置き換えられ、メモリ102Bがメモリ202Bに置き換えられる。また、バックエンドスイッチ104がバックエンドスイッチ204Aまたは204Bに置き換えられ、記憶デバイス105A~105Fが記憶デバイス205A~205Fに置き換えられる。
 図17または図18及び図19、図20を用いて、実施例8を説明する。図17は、実施例8に係るストレージシステムの構成の例を示す図である。図17において、ストレージシステム1700は、二つのストレージ制御部1703Aと1703Bを備える。
 ストレージ制御部1703Aは、プロセッサ1701A、メモリ1702A、上位装置1714Aに接続する上位IF1710A、及びインタコネクトIF1711Aを含んで構成される。ストレージ制御部1703Bは、プロセッサ1701B、メモリ1702B、上位装置1714Bに接続する上位IF1710B、及びインタコネクトIF1711Bを含んで構成される。
 インタコネクトIF1711Aと1711Bはそれぞれ、バックエンドスイッチ1704とは異なるインタコネクトスイッチ1712Aと1712Bを通して、他のストレージシステム1713A~1713Eに接続される。
 ストレージシステム1700は、記憶デバイス1705A~1705Fを備える。記憶デバイス1705A~1705Fは、バックエンドスイッチ1704にそれぞれパス1707A~1707Fによって接続される。図17は、六つの記憶デバイスは1705A~1705Fを示すが、記憶デバイスの数は任意である。
 図17は5台の他のストレージシステム1713A~1713Eを示すが、他のストレージシステムの数は任意である。他のストレージシステム1713A~1713Eは、それぞれ、ストレージシステム1700と同様の構成を有してよい。
 上位装置1714A及び1714Bのそれぞれは、プロセッサ1701A、1701B、又はストレージ制御部1703A又は1703Bにおける他のプロセッサで動作するソフトウェアで実現される仮想的な装置であってもよい。当該ソフトウェアは、上位IF1710Aまたは1710Bの代わりに、ソフトウェアドライバを介してストレージシステム1700と要求及び応答を交換する。
 図18は、図17に代えて、二つのバックエンドスイッチを用いるストレージシステムの構成の例を示す図である。図18において、ストレージシステム1800は、二つのストレージ制御部1803Aと1803Bを備える。
 ストレージ制御部1803Aは、プロセッサ1801A、メモリ1802A、上位装置1814Aに接続する上位IF1810A、及びインタコネクトIF1811Aを含んで構成される。ストレージ制御部1803Bは、プロセッサ1801B、メモリ1802B、上位装置1814Bに接続する上位IF1810B、及びインタコネクトIF1811Bを含んで構成される。
 ストレージシステム1800は、二つの互いに独立なバックエンドスイッチ1804Aと1804Bを備える。プロセッサ1801Aは、バックエンドスイッチ1804Aと1804Bにそれぞれ、パス1806A及びパス1808Aによって接続される。プロセッサ1801Bは、バックエンドスイッチ1804Aと1804Bにそれぞれ、パス1806B及びパス1808Bによって接続される。
 ストレージシステム1800は、記憶デバイス1805A~1805Fを備える。記憶デバイス1805A~1805Fは、バックエンドスイッチ1804Aにそれぞれパス1807A~1807Fによって接続される。記憶デバイス1805A~1805Fは、バックエンドスイッチ1804Bにそれぞれパス1809A~1809Fによって接続される。
 プロセッサ1801A及び1801Bは、バックエンドスイッチ1804Aまたは1804Bの一方のみを用いて、すべての記憶デバイス1805A~1805F及び他方のプロセッサ1801B及び1801Aに接続される。バックエンドスイッチ1804Aまたは1804Bの一方が動作を停止しても、または、一方に接続するパスが切断されても、ストレージシステム1800は、プロセッサ1801A及び1801Bとの間の通信、並びにプロセッサ1801Aまたは1801Bと記憶デバイス1805A~1805Fの間の通信をすべて継続することが可能である。これによりシステムの可用性を高めることができる。
 インタコネクトIF1811Aと1811Bはそれぞれ、バックエンドスイッチ1804A及び1804Bとは異なるインタコネクトスイッチ1812Aと1812Bを通して、他のストレージシステム1813A~1813Eに接続される。
 図18は、六つの記憶デバイスは1805A~1805Fを示すが、本実施例において記憶デバイスの数は任意である。図18に5台の他のストレージシステム1813A~1813Eを示すが、本実施例において他のストレージシステムの数は任意である。
 他のストレージシステム1813A~1813Eは、ストレージシステム1800と同様の構成を有してよい。上位装置1814A及び1814Bは、図17における上位装置1714A及び1714Bと同じく、仮想的な装置であってもよい。
 図19は、本実施例に係わるストレージ制御部1703A、1703B、1803Aまたは1803Bによる処理の手順を示すフローチャートの例である。図19において、ストレージ制御部は、ステップ1900において、上位装置よりデータ読出し要求またはデータ書込み要求を受信する。
 ステップ1901において、ストレージ制御部は、受信した要求が、そのストレージ制御部が含まれるストレージシステムの記憶デバイスに格納されるデータに対する要求であるかどうかを判定する。例えば、ストレージ制御部は、上位装置からの要求が示すアドレスと記憶デバイスとの間の関係を管理する情報を参照して判定を行う。
 受信した要求が、そのストレージ制御部が含まれるストレージシステム内の記憶デバイスに格納されるデータに対する要求であれば(1901:YES)、ストレージ制御部は、ステップ1902に進む。ステップ1902では、ストレージ制御部は、上位装置から受信した要求がデータの読出しであるか書込みであるか判定する。要求が書込みであれば(1902:書込み)、ストレージ制御部は、ステップ1903に進む。
 ステップ1903では、ストレージ制御部は、書込みデータを上位装置から受信する。次にステップ1904で、ストレージ制御部は、受信した書込みデータを、当該ストレージ制御部のメモリに格納する。
 次にステップ1905において、ストレージ制御部は、当該ストレージ制御部のメモリに格納したデータを、同一ストレージシステム内のバックエンドスイッチを通じて、他方のストレージ制御部のメモリへ転送する。
 ステップ1906において、ストレージ制御部は、他方のストレージ制御部のメモリに転送した書込みデータを再度読み出し、他方のストレージ制御部のメモリに格納されたことを確認する。ステップ1906で再度読み出すデータの長さは、ステップ1905で転送したデータの長さに等しくてもよく、ステップ1905で転送したデータの一部の長さであってもよい。例えば、ストレージ制御部は、ステップ1905で転送したデータの最後の一部を読み出してもよい。
 最後に、ステップ1907において、ストレージ制御部は、上位装置に書込み完了を通知する。
 ステップ1902において、上位装置から受信した要求がデータの読出しであれば(1902:読出し)、ストレージ制御部は、ステップ1908に進む。ステップ1908では、ストレージ制御部は、当該データを同一ストレージシステム内の記憶デバイスより読み出す。次にストレージ制御部はステップ1909に進み、記憶デバイスより読み出したデータを上位装置へ返送する。
 ストレージ制御部は、読み出したデータを、当該ストレージ制御部のメモリに格納してもよい。次の同じデータの読出し要求に対して、ストレージ制御部は、記憶デバイスよりデータを読み出すことなく、メモリ上に格納されたデータが返送する。
 ステップ1901において、上位装置より受信した要求が、当該ストレージ制御部が含まれるストレージシステムの記憶デバイスに格納されるデータに対する要求でなければ(1901:NO)、ストレージ制御部は、ステップ1910に進む。
 ステップ1910では、ストレージ制御部は、上位装置から受信した読出しまたは書込み要求を、インタコネクトIF及びインタコネクトスイッチを介して、他のストレージシステムに送付する。
 図20は、ストレージ制御部1703Aまたは1803Aにおける処理手順が図19に示したフローチャートに従って行われる場合のシーケンスの例である。図20は、上位装置から、ストレージシステム1700の記憶デバイス1705A~1705Fまたはストレージシステム1800の記憶デバイス1805A~1805Fへの、データ書込み要求に対する処理の例を示す。
 なお、ストレージ制御部1703Bまたは1803Bが、上位装置から、ストレージシステム1700の記憶デバイス1705A~1705Fまたはストレージシステム1800の記憶デバイス1805A~1805Fへのデータ書込み要求を受けた場合の処理のシーケンスも同様となる。
 その場合、図20において、ストレージ制御部1703Aまたは1803Aと、ストレージ制御部1703Bまたは1803Bとが、入れ替えられる。プロセッサ1701Aまたは1801Aと、プロセッサ1701Bまたは1801Bとが、入れ替えられる。メモリ1702Aまたは1802Aと、メモリ1702Bまたは1802Bとが、入れ替えられる。
 図20において、ストレージ制御部1703Aまたは1803Aは、上位装置からデータ書込み要求を受信すると、ステップ2001において、書込みデータを受信する。プロセッサ1701Aまたは1801Aは、受信した書込みデータを、ステップ2002において、メモリ1702Aまたは1802Aに格納する。
 次に、プロセッサ1701Aまたは1801Aは、ステップ2003において、メモリ1702Aまたは1802Aに格納した当該データを再度取得する。プロセッサ1701Aまたは1801Aは、取得したデータについて、ステップ2004において、メモリ1702Bまたは1802B上の場所を識別するアドレスAを付与して、バックエンドスイッチ1704または1804Aまたは1804Bに送付する。このデータの送付は、例えば図3Aに示したデータ送付のフレーム333を用いる。
 ステップ2003及び2004は、プロセッサ1701Aまたは1801A上で動作するソフトウェアによって実行されてもよく、プロセッサ1701Aまたは1801Aに実装された機能ハードウェア(回路)により実行されてもよい。機能ハードウェアは、ソフトウェアにより、メモリ1702Aまたは1802A上のデータを取得する場所、メモリ1702Bまたは1802B上の場所を識別するアドレスA、送付するデータ長を指定されて動作する。
 バックエンドスイッチ1704、または、バックエンドスイッチ1804Aまたは1804Bは、プロセッサ1701Aまたは1801Aよりデータ送付を受信する。バックエンドスイッチ1704、または、バックエンドスイッチ1804Aまたは1804Bは、ステップ2005において、付与されたアドレスAを、プロセッサ1701Bまたは1801Bがメモリ1702Bまたは1802B上の場所を識別するアドレスBに変換する。変換されたアドレスBを含むデータ送付は、プロセッサ1701Bまたは1801Bに送付される。
 プロセッサ1701Bまたは1801Bは、バックエンドスイッチ1704または1804Aまたは1804BよりアドレスBが付与されたデータを受信する。プロセッサ1701Bまたは1801Bは、ステップ2006において、アドレスBに基づいて、受信したデータをメモリ1702Bまたは1802Bに格納する。
 ステップ2006は、プロセッサ1701Bまたは1801B上で動作するソフトウェアによって実行されてもよく、プロセッサ1701Bまたは1801Bに実装された機能ハードウェア(回路)により実行されてもよい。機能ハードウェアは、バックエンドスイッチからアドレスBが付与されたデータを受信すると、自動的にアドレスBに従ってメモリ1702Bまたは1802Bにデータを格納する。
 次にプロセッサ1701Aまたは1801Aは、ステップ2007において、再び、アドレスAを用いてメモリ1702Bまたは1802Bに格納したデータを取得する要求を、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bに送付する。このデータ要求の送付は、例えば図3Aに示したデータ要求のフレーム331を用いる。
 この場合、取得するデータの長さは、ステップ2004でアドレスAを付与して送付したデータの長さと等しくてもよく、ステップ2004でアドレスAを付与して送付したデータの一部の長さであってもよい。例えば、ステップ2004で送付したデータの最後の一部を取得するように、取得するデータの長さとアドレスAが変更されてもよい。この点は、図19のステップ1906の説明の通りである。
 ステップ2007は、プロセッサ1701Aまたは1801A上で動作するソフトウェアによって実行されてもよく、プロセッサ1701Aまたは1801Aに実装された機能ハードウェア(回路)により実行されてもよい。機能ハードウェアは、ソフトウェアにより、メモリ1702Bまたは1802B上の場所を識別するアドレスAや、取得するデータの長さを指定されて動作する。
 バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bは、ステップ2008において、アドレスAを再度アドレスBに変換して、データを取得する要求をプロセッサ1701Bまたは1801Bに送付する。
 プロセッサ1701Bまたは1801Bは、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bから、データ取得要求を受信する。プロセッサ1701Bまたは1801Bは、ステップ2009において、付与されたアドレスBに従って、メモリ1702Bまたは1802Bからデータを取得する。
 ステップ2010において、プロセッサ1701Bまたは1801Bは、取得したデータを、バックエンドスイッチ1704またはエンドスイッチ1804Aまたは1804Bに返送する。
 ステップ2009及び2010はプロセッサ1701B上または1801B上で動作するソフトウェアによって実行されてもよく、プロセッサ1701Bまたは1801Bに実装された機能ハードウェア(回路)によって実行されてもよい。
 機能ハードウェアは、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804BからアドレスBが付与されたデータ要求を受信すると、自動的にアドレスBに従ってメモリ1702Bまたは1802Bからデータを取得して、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bに、返送する。
 バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bは、プロセッサ1701Bまたは1801Bから返送データを受信する。ステップ2011において、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bは、当該データをプロセッサ1701Aまたは1801Aに返送する。
 プロセッサ1701Aまたは1801Aは、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bから、返送されたデータを受信する。プロセッサ1701Aまたは1801Aは、ステップ2012で、上位装置にデータの書込みが完了したことを報告する。
 以上の構成により、ストレージシステム内で、ストレージ制御部間で上位装置から受信した書込みデータを転送して二重化する場合に、二重化を保証することが可能となる。
 二重化が保証されるので、記憶デバイスへの書込みが完了なくとも、充分な信頼性と可用性を確保することができる。その結果、上位装置に記憶デバイスにデータを書き込む前に、データ書き込み完了を報告することが可能である。
 以上のように、本実施例において、ストレージシステム1700または1800は、他のストレージシステムに対して容量、性能を付加する、スケールアウトと呼ばれる効果を提供することが可能である。
 スケールアウトと呼ばれる効果と、ストレージシステムの可用性を両立させるために、スケールアウトの効果に関係する複数のストレージシステム間でデータを冗長に持つことが行われる。ストレージシステム間のデータの冗長性維持は、同時にデータの一貫性維持を必要とするため、性能的なオーバーヘッドを生じる。また、それぞれのストレージシステムが備える記憶容量の使用効率も、冗長性維持のために低下する。
 これに対し、本実施例によるストレージシステム1800は、特に可用性が高いので、スケールアウトの効果を提供するのに際し、他のストレージシステムとの間でデータを冗長に持つ必要はない。よって性能的なオーバーヘッドを生じることはなく、それぞれのストレージシステムが備える記憶容量の使用効率も低下することがない。
 本実施例に従ったストレージシステムにおいて、例えば、第1のストレージ制御部は、第1のインタコネクト部を備え、第2のストレージ制御部は、第2のインタコネクト部を備える。第1及び第2のインタコネクトは、バックエンドスイッチとは異なる1以上のインタコネクトスイッチに接続される。インタコネクトスイッチは、更に、第2のストレージシスシステムに接続される。第1または第2のストレージ制御部は、上位装置からデータ読み出しまたは書き込み要求を受信し、受信したデータ読み出しまたは書き込み要求において、要求されたデータが記憶デバイスに格納されるデータかを判定する。データが記憶デバイスに格納されないと判定した時、第1または第2のストレージ制御部は、第1または第2のインタコネクト部とインタコネクトスイッチとを用いて、データ読み出しまたは書き込み要求を、第2のストレージシステムに送付する。
 図21、図22を用いて、実施例9を説明する。実施例9におけるストレージシステムの構成例は、図17ないし図18に示した構成である。図21は、図17に示したストレージシステム1700のストレージ制御部1703Aまたは1703B、図18に示したストレージシステム1800のストレージ制御部1803Aまたは1803Bにおける処理の手順を示すフローチャートの例である。
 図21において、ステップ2100からステップ2104、2107、2108から2110に対して、実施例8で示した図19におけるステップ1900からステップ1904、1907、1908から1910の説明を適用できる。図21では、ストレージ制御部は、ステップ2105で、書込みデータを当該メモリから、同ストレージシステム内の他方のストレージ制御部のメモリへ転送する指示を、バックエンドスイッチに送付する。
 バックエンドスイッチは、該指示を受けると、指定された書込みデータを当該ストレージ制御部のメモリから、他方のストレージ制御部のメモリへ転送する。バックエンドスイッチは、他方のストレージ制御部のメモリを読み返して転送が完了したことを確認して、データ転送完了を当該ストレージ制御部に通知する。
 ステップ2106において、当該ストレージ制御部は、バックエンドスイッチからデータ転送完了の通知を受領する。ステップ2107で、当該ストレージ制御部は、上位装置に書込み完了を通知する。
 図22は、ストレージ制御部1703Aまたは1803Aにおける処理手順が、図21に示したフローチャートに従って行われる場合の、シーケンスの例である。より詳細には、図22は、上位装置からストレージシステム1700の記憶デバイス1705A~1705Fまたはストレージシステム1800の記憶デバイス17051805A~1805Fに格納されるデータの、書込み要求を受けた場合の処理のシーケンスの例である。
 なお、ストレージ制御部1703Bまたは1803Bが、上位装置から、ストレージシステム1700の記憶デバイス1705A~1705Fまたはストレージシステム1800の記憶デバイス1805A~1805Fに格納されるデータの書込み要求を受けた場合の処理のシーケンスも同様となる。
 その場合、図22において、ストレージ制御部1703Aまたは1803Aと、ストレージ制御部1703Bまたは1803Bとが、入れ替えられる。プロセッサ1701Aまたは1801Aと、プロセッサ1701Bまたは1801Bとが、入れ替えられる。メモリ1702Aまたは1802Aと、メモリ1702Bまたは1802Bとが、入れ替えられる。
 図22において、ストレージ制御部1703Aまたは1803Aは、上位装置からデータ書込み要求を受信すると、ステップ2201において、書込みデータを受信する。プロセッサ1701Aまたは1801Aは、受信した書込みデータを、ステップ2202において、メモリ1702Aまたは1802Aに格納する。
 ステップ2203から2212に対して、実施例7の図16のステップ1601から1610までの説明が適用できる。ストレージ制御部103Aまたは203Aは、ストレージ制御部1703Aまたは1803Aに置き換えられる。ストレージ制御部103Bまたは203Bは、ストレージ制御部1703Bまたは1803Bに置き換えられる。
 さらに、プロセッサ101Aまたは201Aは、プロセッサ1701Aまたは1801Aに置き換えられる。プロセッサ101Bまたは201Bは、プロセッサ1701Bまたは1801Bに置き換えられる。メモリ102Aまたは202Aは、メモリ1702Aまたは1802Aに置き換えられる。メモリ102Bまたは202Bは、メモリ1702Bまたは1802Bに置き換えられる。
 また、バックエンドスイッチ104またはバックエンドスイッチ204Aまたは204Bは、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bに置き換えられる。転送元のデータは、上位装置から受信した書込みデータに置き換えられる。
 プロセッサ1701Aまたは1801Aは、ステップ2212において、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bからデータ格納完了通知を受信する。処理2213において、プロセッサ1701Aまたは1801Aは、上位装置にデータの書込みが完了したことを報告する。
 以上のような構成とすることにより、実施例9は、実施例8で説明した効果と同様の効果を達成することができる。
 図23、図24を用いて、実施例10を説明する。実施例10におけるストレージシステムの構成例は、図17ないし図18に示した構成である。図23は、図17に示したストレージシステム1700のストレージ制御部1703Aまたは1703B、図18に示したストレージシステム1800のストレージ制御部1803Aまたは1803Bにおける処理の手順を示すフローチャートの例である。
 図23において、ステップ2300から2304、2307、2308から2310に対して、実施例9で示した図21におけるステップ2100から2104、2107、2108から2110の説明を適用できる。
 図23において、ストレージ制御部は、ステップ2304にて上位装置から受信した書込みデータを当該ストレージ制御部のメモリに格納する。次にステップ2305にて、ストレージ制御部は、当該書込みデータを当該メモリから同一ストレージシステム内の他方のストレージ制御部のメモリへ転送する指示を、バックエンドスイッチへ送付する。
 次にステップ2306にて、ストレージ制御部は、バックエンドスイッチからデータ誤りチェックの結果を受信する。ステップ2307にて、ストレージ制御部は、チェック結果を上位装置に通知する。受信したチェック結果がデータ誤りを示す場合には、上位装置は、正しくデータが書き込めなかったと判定し、例えば、先のデータ書込み要求を再びストレージシステムに送付する。
 図24は、ストレージ制御部1703Aまたは1803Aにおける処理手順が図23に示したフローチャートに従って行われる場合のシーケンスの例である。より詳細には、図24は、上位装置からストレージシステム1700の記憶デバイス1705A~1705Fまたはストレージシステム1800の記憶デバイス1805A~1805Fに格納されるデータの書込み要求を受けた場合の処理のシーケンスの例である。
 なお、ストレージ制御部1703Bまたは1803Bが、上位装置から、ストレージシステム1700の記憶デバイス1705A~1705Fまたはストレージシステム1800の記憶デバイス1805A~1805Fに格納されるデータの書込み要求を受けた場合の処理のシーケンスも同様となる。
 その場合、図24において、ストレージ制御部1703Aまたは1803Aと、ストレージ制御部1703Bまたは1803Bとが、入れ替えられる。プロセッサ1701Aまたは1801Aと、プロセッサ1701Bまたは1801Bとが、入れ替えられる。メモリ1702Aまたは1802Aと、メモリ1702Bまたは1802Bとが、入れ替えられる。
 図24において、ステップ2401から2408に対して、実施例9の図22におけるステップ2201から2208までの説明が適用できる。図24において、ステップ2409で、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bは、プロセッサ1701Bまたは1801Bに、書込みデータを送付したことを通知する。
 プロセッサ1701Bまたは1801Bは、書込みデータが送付されたことを通知されると、処理2410にて、メモリ1702Bまたは1802Bより書込みデータを取得する。次にプロセッサ1701Bまたは1801Bは、メモリ1702Bまたは1802Bより取得した書込みデータについて、ステップ2411にて、データ誤りがあるかどうかをチェックする。
 データ誤りチェックにチェック対象のデータとは別にデータチェックコードが必要な場合は、データチェックコードは、プロセッサ1701Bまたは1801Bに予め与えられる。あるいは、プロセッサ1701Bまたは1801Bは、予め定める規則に基づいてデータチェックコードを生成してもよい。または、プロセッサ1701Aまたは1801Aが、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bを介して、プロセッサ1701Bまたは1801Bにデータチェックコードを供給しても良い。
 プロセッサ1701Bまたは1801Bは、ステップ2411の後、ステップ2412にて、データ誤りチェックの結果をバックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bに通知する。バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bは、該通知された結果を、ステップ2413にて、プロセッサ1701Aまたは1801Aに通知する。
 プロセッサ1701Aまたは1801Aは、ステップ2414にて、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bより通知されたデータ誤りチェックの結果を、上位装置に通知する。
 以上のように、実施例10によるストレージシステム1700または1800は、実施例9における効果に加えて、データがメモリに誤りなく格納されていることが確認でき、データの正当性を高めることができる。
 即ち、メモリ1702Aまたは1802Aに格納した書込みデータをメモリ1702Bまたは1802Bに転送してから、転送データの誤りをチェックすることにより、メモリ1702Aまたは1802Aに格納したデータも併せて誤りをチェックできる。
 図25、図26を用いて、実施例11を説明する。実施例11に係わるストレージシステムの構成例は、図17ないし図18に示した構成である。図25は、図17に示したストレージシステム1700のストレージ制御部1703Aまたは1703B、図18に示したストレージシステム1800のストレージ制御部1803Aまたは1803Bにおける処理の手順を示すフローチャートの例である。
 図25において、ステップ2500から2505、2508から2510に対して、実施例8で示した図19におけるステップ1900から1905、1908から1910の説明を適用できる。
 図25において、ストレージ制御部は、ステップ2505で書込みデータを当該ストレージ制御部のメモリから、同ストレージシステム内の他方のストレージ制御部のメモリに転送した後、ステップ2520に進む。
 ステップ2520において、ストレージ制御部は、書込みデータを他方のストレージ制御部のメモリへ転送したことを、他方のストレージ制御部へ通知する。この通知は、予め定める特定のデータを他方のストレージ制御部内の特定のアドレスに送付してもよい。または、通知は、書込みデータを識別する情報及び他方のストレージ制御部内のメモリにおいて書込みデータを書き込んだか位置の情報を含む、特別なデータであってもよい。また更に、通知は、インタラプト信号を含んでもよい。
 他方のストレージ制御部は、書込みデータが転送されたことを通知されると、転送されたデータに対してデータ誤りチェックを行い、結果を当該ストレージ制御部へ通知する。この通知は、前述の書込みデータを他方のストレージ制御部のメモリへ転送したことを、他方のストレージ制御部へ通知した方法と同様である。
 ステップ2521では、当該ストレージ制御部は、他方のストレージ制御部から通知されたデータ誤り結果を受領する。次にステップ2522において、当該ストレージ制御部は、データ誤りチェックの結果を上位装置に通知する。上位装置は、データ誤りがある場合には、正しくデータが書き込めなかったと判定し、例えば先のデータ書込み要求を再びストレージシステムに送付する。これは、実施例10における図23のステップ2307の説明と同様である。
 図26は、ストレージ制御部1703Aまたは1803Aにおける処理手順が図25に示したフローチャートに従って行われる場合のシーケンスの例である。より詳細には、上位装置からストレージシステム1700の記憶デバイス1705A~1705Fまたはストレージシステム1800の記憶デバイス1805A~1805Fに格納されるデータの書込み要求を受けた場合の、処理のシーケンスの例である。
 なお、ストレージ制御部1703Bまたは1803Bが、上位装置から、記憶デバイス1705A~1705Fまたは記憶デバイス17051805A~1805Fに格納されるデータの書込み要求を受けた場合の処理のシーケンスも、同様である。
 その場合、図26において、ストレージ制御部1703Aまたは1803Aと、ストレージ制御部1703Bまたは1803Bとは、入れ替えられる。プロセッサ1701Aまたは1801Aと、プロセッサ1701Bまたは1801Bとは、入れ替えられる。メモリ1702Aまたは1802Aと、メモリ1702Bまたは1802Bとは、入れ替えられる。
 図26において、ステップ2601から2606に対して、実施例8における図20のステップ2001から2006までの説明を適用できる。
 図26において、プロセッサ1701Aまたは1801Aは、ステップ2604で、上位装置から受領した書込みデータを、メモリ1702Aまたはメモリ1802Aから読み出し、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bに送付する。ステップ2607で、プロセッサ1701Aまたは1801Aは、当該書込みデータを送付したことを、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bに通知する。
 バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bは、上記通知を受け取ると、ステップ2608おいて、同様の通知をプロセッサ1701Bまたは1801Bに送付する。ステップ2607及び2608において行われる通知の方法は、前述の図25のステップ2520の説明の通りである。
 プロセッサ1701Bまたは1801Bは、バックエンドスイッチ1704またはバックエンドスイッチ1804Aまたは1804Bより、当該書込みデータが送付されたことを通知される。ステップ2609において、プロセッサ1701Bまたは1801Bは、当該書込みデータをメモリ1702Bまたは1802Bから取得する。
 次に、プロセッサ1701Bまたは1801Bは、メモリ1702Aまたは1802Aより取得した書込みデータについて、ステップ2610にて、データ誤りがあるかどうかをチェックする。ステップ2610のデータ誤りチェックは、実施例10の図24のステップ2411のデータ誤りチェックと同様である。
 この後のステップ2611から2613に対して、実施例10の図24のステップ2412から2414の説明を適用できる。
 以上の構成により、実施例11は、実施例10で説明した効果と同様の効果を達成することができる。
 図1または図2、及び図4A、図4B、図6A~図7B、図28、図29を用いて、実施例12を説明する。実施例12のストレージシステムの構成が、図1に示す構成である場合、図1、図4A、図4B、図6A~図7Bの説明は、実施例1と同じである。
 図28は、実施例12において、バックエンドスイッチ104がプロセッサ101Aよりデータまたはデータ要求を受信した場合の処理手順を示すフローチャートの例である。なお、バックエンドスイッチ104がプロセッサ101Bからデータまたはデータ要求を受信した場合の処理手順も同様である。その場合、図28でプロセッサ101Aとあるのをプロセッサ101Bと読み替えればよい。また図28でプロセッサ101Bとある箇所はプロセッサ101Aに読み替える。
 図28において、ステップ2800からステップ2806に対して、実施例1における図3のステップ300から306までの説明を適用できる。ステップ2804の後、バックエンドスイッチ104における処理は、ステップ2807に進む。
 ステップ2807では、バックエンドスイッチ104は、プロセッサ101Aから送付されたフレームが、メモリ102Bに格納するためのデータ送付か、メモリ102Bのデータの取得要求かを判定する。判定した結果がメモリ102Bへのデータ送付であれば(2807:データ送付)、バックエンドスイッチ104は、ステップ2808に進む。
 ステップ2808では、バックエンドスイッチ104は、プロセッサ101Bに、再びメモリ102Bに格納した当該データを取得する要求を送付する。再度要求するデータの長さは、ステップ2804で送付したデータの長さに等しくてもよく、ステップ2804で送付したデータの一部の長さであってもよい。例えば、バックエンドスイッチ104は、ステップ2804で送付したデータの最後の一部を読み出してもよい。
 ステップ2809で、バックエンドスイッチ104は、プロセッサ101Bより、当該データを受領する。ステップ2810では、バックエンドスイッチ104は、プロセッサ101Bより当該データを受領したことを、プロセッサ101Aに通知して、処理を終了する。
 プロセッサ101Aへの通知は、例えば、プロセッサ101Bから受領した当該データの全部または一部をプロセッサ101Aへ送付することで行っもよく、予め定める特定の信号をプロセッサ101Aに送付することで行ってもよい。プロセッサ101Bから受領した当該データの全部または一部をプロセッサ101Aへ送付する場合、プロセッサ101Aは、受信した当該データの全部または一部を破棄する。
 また更に、通知は、予め定める特定のデータをプロセッサ101Aのアドレス空間における特定のアドレスに送付することで行ってもよい。または、通知は、プロセッサ101Aに、インタラプト信号を送付することで行ってもよい。このようにすることによって、当該データを確実にメモリ102Bに書き込めたことをプロセッサ101Aに通知することができる。ステップ2807で、判定した結果がメモリ102Bのデータの取得要求であれば(2807:データ要求)、バックエンドスイッチ104は、処理を終了する。
 図29は、バックエンドスイッチ104が図28に示す処理手順に従って処理を行う場合に、ストレージ制御部103Aからストレージ制御部103Bにデータを送信する処理のシーケンスの例である。なお、ストレージ制御部103Bがストレージ制御部103Aにデータを送信する処理のシーケンスも同様となる。
 その場合、図29において、ストレージ制御部103Aとストレージ制御部103Bとは入れ替えられる。プロセッサ101Aとプロセッサ101Bとは、入れ替えられる。メモリ102Aととメモリ102Bとは、入れ替えられる。
 図29において、ステップ2901から2904に対して、実施例1における図5Aのステップ501から504までの説明を適用できる。図29では、バックエンドスイッチ104が、ステップ2905において、ステップ2903で送付したアドレスBを再度指定するデータ取得要求を、プロセッサ101Bに送付する。
 この場合、取得するデータの長さは、ステップ2905でアドレスBを付与して送付したデータの長さと等しくてもよく、ステップ2905でアドレスBを付与して送付したデータの一部の長さであってもよい。例えば、バックエンドスイッチ104は、ステップ2905で送付したデータの最後の一部を取得するように、データ長とアドレスBを変更してもよい。この点は、前述の図28のステップ2808の説明と同様である。
 プロセッサ101Bは、バックエンドスイッチ104からアドレスBが付与されたデータ要求を受信すると、ステップ2906において、アドレスBに従って、メモリ102Bよりデータを取得する。次に、ステップ2907において、プロセッサ101Bは、メモリ102Bより取得したデータをバックエンドスイッチ104に返送する。
 ステップ2906及び2907は、プロセッサ101B上で動作するソフトウェアによって実行されてもよく、プロセッサ101Bに実装された機能ハードウェア(回路)により実行されてもよい。機能ハードウェアは、バックエンドスイッチ104からアドレスBが付与されたデータ要求を受信すると、自動的にアドレスBに従ってメモリ102Bからデータを取得して、バックエンドスイッチ104に返送する。
 バックエンドスイッチ104は、プロセッサ101BよりアドレスBのデータの返送を受信すると、ステップ2908にて、プロセッサ101Aにデータを送付したことを通知する。この通知の方法は、図28のステップ2810の説明の通りである。
 以上の構成により、実施例1で説明した効果に加えて、ストレージ制御部103Bに送付したデータを確実にメモリ102Bに格納できたことを、プロセッサ101Aに通知することができる。これにより、例えば図1に図示されない上位装置から記憶デバイス105A~105Fに書き込むためのデータを受信した場合、ストレージ制御部103Aと103Bで当該データを二重化できたことを保証できる。
 これにより、記憶デバイス105A~105Fへの書込みが完了しなくとも、更に充分な信頼性と可用性を確保することができるので、記憶デバイス105A~105Fにデータを書き込む前に、上位装置にデータ書き込み完了を通知することが可能である。
 また本実施例のストレージシステムの構成として、図1に示す構成に代えて、図2に示す構成を採ることができる。この場合、図2、図4A、図4B、図6A~図7Bに関する説明は実施例2と同じである。
 図28、図29の説明において、ストレージ制御部103Aはストレージ制御部203Aに置き換えられる。ストレージ制御部103Bはストレージ制御部203Bに置き換えられる。プロセッサ101Aはプロセッサ201Aに置き換えられる。
 プロセッサ101Bはプロセッサ201Bに置き換えられる。メモリ102Aはメモリ202Aに置き換えられる。メモリ102Bはメモリ202Bに置き換えられる。バックエンドスイッチ104はバックエンドスイッチ204Aまたは204Bに置き換えられる。記憶デバイス105A~105Fは記憶デバイス205A~205Fに置き換えられる。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。

Claims (15)

  1.  第1のプロセッサと第1のメモリを含む第1のストレージ制御部と、
     第2のプロセッサと第2のメモリを含む第2のストレージ制御部と、
     1以上の記憶デバイスと、
     前記第1のプロセッサ、前記第2のプロセッサ及び前記1以上の記憶デバイスを接続する、1以上のバックエンドスイッチと、を含み、
     前記1以上のバックエンドスイッチのそれぞれは、
     前記第1のプロセッサから受信したフレームを参照して当該フレームの送付先を同定し、
     前記フレームの送付先が前記第2のプロセッサである場合、前記フレームに含まれ、前記第1のプロセッサのアドレス空間において前記第2のメモリ上の場所を特定する第1のアドレスを、前記第2のプロセッサのアドレス空間において前記第2のメモリ上の前記場所を特定する第2のアドレスに変換し、
     前記第2のアドレスを含む前記フレームを、前記第2のストレージ制御部に送付し、
     前記フレームの送付先が、前記1以上の記憶デバイスにおける第1の記憶デバイスである場合、前記フレームに含まれ、前記第1のプロセッサのアドレス空間において前記第1の記憶デバイスを特定する第3のアドレスを変換することなく、前記フレームを前記第1の記憶デバイスに送付する、ストレージシステム。
  2.  請求項1に記載のストレージシステムであって、
     前記フレームが、前記第1のストレージ制御部から前記第2のストレージ制御部にデータを送付するフレームである場合、
     前記フレームは、前記第1のストレージ制御部から前記第2のストレージ制御部に送付する第1のデータと、前記第1のアドレスとを含み、
     前記第2のプロセッサは、前記第1のデータを、前記第2のメモリにおいて前記第2のアドレスが特定する場所に格納する、ストレージシステム。
  3.  第1のプロセッサと第1のメモリを含む第1のストレージ制御部と、
     第2のプロセッサと第2のメモリを含む第2のストレージ制御部と、
     1以上の記憶デバイスと、
     前記第1のプロセッサ、前記第2のプロセッサ及び前記1以上の記憶デバイスを接続する、1以上のバックエンドスイッチと、を含み、
     前記1以上のバックエンドスイッチのそれぞれは、
     前記第1のプロセッサのアドレス空間における前記第1のメモリ上の第1の場所を特定する第4のアドレスと、前記第1のプロセッサのアドレス空間において前記第2のメモリ上の第2の場所を特定する第5のアドレスと、転送するデータ長と、を含むデータ転送指示を、前記第1のプロセッサから受信し、
     前記第5のアドレスを、前記第2のプロセッサのアドレス空間において前記第2のメモリ上の前記第2の場所を特定する第6のアドレスに変換し、
     前記第1のメモリ上の前記第1の場所と前記第2のメモリ上の前記第2の場所との間において、前記データ長の第1のデータを転送する、ストレージシステム。
  4.  請求項3に記載のストレージシステムであって、
     前記データ転送指示は、さらに、データの転送方向が前記第1のメモリから前記第2のメモリへの方向であるか、前記第2のメモリから前記第1のメモリへの方向であるか、の指定を含み、
     前記バックエンドスイッチは、
     前記データの転送方向の指定が、前記第1のメモリから前記第2のメモリへの方向の場合、前記第1のメモリの前記第1の場所から前記第1のデータを取得し、前記第2のメモリの前記第2の場所に格納し、
     前記データの転送方向の指定が前記第2のメモリから前記第1のメモリへの方向の場合、前記第2のメモリの前記第2の場所から、前記第1のデータを取得し、前記第1のメモリの前記第1の場所に格納する、ストレージシステム。
  5.  請求項2に記載のストレージシステムであって、
     前記バックエンドスイッチは、前記第1のデータの送付を前記第2のプロセッサに通知する、ストレージシステム。
  6.  請求項4に記載のストレージシステムであって、
     前記データの転送方向の指定が、前記第1のメモリから前記第2のメモリへの方向の場合、前記バックエンドスイッチは、前記第2のメモリの前記第2の場所に前記第1のデータを格納したことを、前記第2のプロセッサに通知する、ストレージシステム。
  7.  請求項4に記載のストレージシステムであって、
     前記データの転送方向の指定が前記第2のメモリから前記第1のメモリへの方向の場合、前記バックエンドスイッチは、前記第1のメモリの前記第1の場所に前記第1のデータを格納したことを、前記第1のプロセッサに通知する、ストレージシステム。
  8.  請求項4に記載のストレージシステムであって、
     前記データ転送指示は、さらに、データチェックコードを含み、
     前記データの転送方向の指定が、前記第1のメモリから前記第2のメモリへの方向の場合、前記バックエンドスイッチは、
     前記データチェックコードに従って、前記第1のメモリから取得した前記第1のデータに誤りがあるかの検査を行い、
     前記検査の結果を前記第1のプロセッサに通知し、
     前記検査の結果が、誤りがないことを示す場合、前記第1のデータを前記第2のメモリの前記第2の場所に格納する、ストレージシステム。
  9.  請求項4に記載のストレージシステムであって、
     前記データ転送指示は、さらに、データチェックコードを含み、
     前記データの転送方向の指定が、前記第2のメモリから前記第1のメモリへの方向の場合、前記バックエンドスイッチは、
     前記データチェックコードに従って、前記第2のメモリから取得した前記第1のデータに誤りがあるかの検査を行い、
     前記検査の結果を前記第1のプロセッサに通知し、
     前記検査の結果が、誤りがないことを示す場合、前記第1のデータを前記第1のメモリの前記第1の場所に格納する、ストレージシステム。
  10.  請求項3に記載のストレージシステムであって、
     前記バックエンドスイッチは、
     前記第1のメモリから取得した前記第1のデータを前記第2のメモリに格納した後、前記第2のメモリから前記第1のデータの少なくとも一部を読み出し、
     前記第2のメモリから前記第1のデータの前記少なくとも一部を読み出せたことを、前記第1のプロセッサに通知する、ストレージシステム。
  11.  請求項10に記載のストレージシステムであって、
     前記第1のストレージ制御部は、
     上位装置より前記1以上の記憶デバイスに書き込むためにホストデータを受信し、
     前記ホストデータを、前記第1のデータとして、前記1以上の記憶デバイスに書き込む前に、前記第1のメモリの前記第1の場所に格納し、
     前記第1のプロセッサは、前記ホストデータが前記第1のメモリの前記第1の場所に格納された後、前記データ転送指示を前記バックエンドスイッチに送信し、
     前記第2のメモリから前記第1のデータの全部または一部が読み出せたことを前記バックエンドスイッチから通知されると、前記上位装置に前記第1のデータの書込みが完了したことを通知する、ストレージシステム。
  12.  請求項6に記載のストレージシステムであって、
     前記第1のストレージ制御部は、
     上位装置より前記1以上の記憶デバイスに書き込むためにホストデータを受信し、
     前記ホストデータを、前記第1のデータとして、前記1以上の記憶デバイスに書き込む前に、前記第1のメモリの前記第1の場所に格納し、
     前記第1のプロセッサは、前記ホストデータが前記第1のメモリの前記第1の場所に格納された後、前記データ転送指示を前記バックエンドスイッチに送信し、
     前記第2のプロセッサは、
     前記第1のデータを前記第2のメモリに格納したことを前記バックエンドスイッチから通知されると、
     前記第2のメモリから前記第1のデータを読み出し、前記第1のデータに誤りがあるか判定を行い、
     前記判定の結果を前記第1のプロセッサに送信し、
     前記第1のプロセッサは、
     前記第2のプロセッサより受信した前記判定の結果を、前記上位装置に通知する、ストレージシステム。
  13.  請求項2に記載のストレージシステムであって、
     前記第1のストレージ制御部は、
     上位装置より前記1以上の記憶デバイスに書き込むためにホストデータを受信し、
     前記ホストデータを、前記1以上の記憶デバイスに書き込む前に、前記第1のメモリに格納し、
     前記第1のプロセッサは、
     前記ホストデータが前記第1のメモリに格納された後、前記ホストデータを前記第1のメモリから取得し、
     前記ホストデータを前記第1のデータとして前記フレームを生成し、
     前記フレームを前記バックエンドスイッチに送付し、
     前記第1のアドレスを含み、前記第2のメモリに格納された前記第1のデータの少なくとも一部を読み出すことを要求する、第2のフレームを、前記バックエンドスイッチに送付し、
     前記バックエンドスイッチは、前記第2のフレームに含まれる前記第1のアドレスを前記第2のアドレスに変換して、前記第2のプロセッサに送付し、
     前記第2のプロセッサは、前記第2のフレームの要求に従って、前記第2のメモリに格納された前記第1のデータの前記少なくとも一部を読み出して、前記バックエンドスイッチに返送し、
     前記バックエンドスイッチは、前記第2のプロセッサが返送した前記第1のデータの前記少なくとも一部を、前記第1のプロセッサに返送し、
     前記第1のプロセッサは、前記バックエンドスイッチから前記第1のデータの前記少なくとも一部を受信した後、前記上位装置に、前記ホストデータの書込みが完了したことを通知する、ストレージシステム。
  14.  請求項2に記載のストレージシステムであって、
     前記第1のストレージ制御部は、
     上位装置より前記1以上の記憶デバイスに書き込むためにホストデータを受信し、
     前記ホストデータを、前記1以上の記憶デバイスに書き込む前に、前記第1のメモリに格納し、
     前記第1のプロセッサは、
     前記ホストデータが前記第1のメモリに格納された後、前記ホストデータを前記第1のメモリから取得し、
     前記ホストデータを前記第1のデータとして前記フレームを生成し、
     前記フレームを前記バックエンドスイッチに送付し、
     前記第2のプロセッサに、前記第1のデータを送付したことを通知し、
     前記第2のプロセッサは、前記第1のプロセッサから前記第1のデータを送付したことを通知されると、
     前記第2のメモリに格納された前記第1のデータを読み出し、
     前記第1のデータに誤りがあるかの判定を実行し、
     前記判定の結果を前記第1のプロセッサに通知し、
     前記第1のプロセッサは、前記判定の前記結果に基づき、前記第2のメモリに格納された前記第1のデータに誤りがあるかを、前記上位装置に通知する、ストレージシステム。
  15.  請求項2に記載のストレージシステムであって、
     前記バックエンドスイッチは、前記第1のデータを含む前記フレームを前記第2のストレージ制御部に送付した後、前記第1のデータの少なくとも一部を取得する要求を、前記第2のプロセッサに送付し、
     前記第2のプロセッサは、前記要求に応答して、前記第1のデータの少なくとも一部を前記第2のメモリから読出し、前記バックエンドスイッチに返送し、
     前記バックエンドスイッチは、前記第2のメモリ上の前記第1のデータの前記少なくとも一部が前記第2のプロセッサから返送されてきたことを、前記第1のプロセッサに通知する、ストレージシステム。
PCT/JP2017/016951 2017-04-28 2017-04-28 ストレージシステム WO2018198325A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
PCT/JP2017/016951 WO2018198325A1 (ja) 2017-04-28 2017-04-28 ストレージシステム
JP2017170379A JP6734824B2 (ja) 2017-04-28 2017-09-05 ストレージシステム
US15/959,675 US10402361B2 (en) 2017-04-28 2018-04-23 Storage system
CN201810390254.7A CN108804030B (zh) 2017-04-28 2018-04-27 存储系统
US16/524,375 US10789196B2 (en) 2017-04-28 2019-07-29 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/016951 WO2018198325A1 (ja) 2017-04-28 2017-04-28 ストレージシステム

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US15/959,675 Continuation US10402361B2 (en) 2017-04-28 2018-04-23 Storage system
US15/959,675 Continuation-In-Part US10402361B2 (en) 2017-04-28 2018-04-23 Storage system

Publications (1)

Publication Number Publication Date
WO2018198325A1 true WO2018198325A1 (ja) 2018-11-01

Family

ID=63920196

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/016951 WO2018198325A1 (ja) 2017-04-28 2017-04-28 ストレージシステム

Country Status (2)

Country Link
JP (1) JP6734824B2 (ja)
WO (1) WO2018198325A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020077137A (ja) * 2018-11-07 2020-05-21 株式会社日立製作所 ストレージシステム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6899852B2 (ja) * 2019-01-15 2021-07-07 株式会社日立製作所 ストレージ装置
JP7315753B2 (ja) * 2019-08-02 2023-07-26 株式会社日立製作所 ストレージ装置
JP7080863B2 (ja) 2019-08-02 2022-06-06 株式会社日立製作所 ストレージ装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128175A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd ストレージシステム
WO2014027416A1 (ja) * 2012-08-17 2014-02-20 富士通株式会社 情報処理装置、及び情報処理装置の制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062591B2 (en) * 2001-09-28 2006-06-13 Dot Hill Systems Corp. Controller data sharing using a modular DMA architecture
JP4391954B2 (ja) * 2005-02-18 2009-12-24 富士通株式会社 ファイル制御システムおよびファイル制御装置
US8250254B2 (en) * 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
JP2009053946A (ja) * 2007-08-27 2009-03-12 Toshiba Corp 二重化コントーラ構成ブロックデバイス制御装置
US8700856B2 (en) * 2012-03-23 2014-04-15 Hitachi, Ltd. Method for accessing mirrored shared memories and storage subsystem using method for accessing mirrored shared memories

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128175A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd ストレージシステム
WO2014027416A1 (ja) * 2012-08-17 2014-02-20 富士通株式会社 情報処理装置、及び情報処理装置の制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020077137A (ja) * 2018-11-07 2020-05-21 株式会社日立製作所 ストレージシステム

Also Published As

Publication number Publication date
JP6734824B2 (ja) 2020-08-05
JP2018190368A (ja) 2018-11-29

Similar Documents

Publication Publication Date Title
CN108804030B (zh) 存储系统
US7899945B2 (en) Interface device and method for command processing
US8332542B2 (en) Communication with input/output system devices
JP5181141B2 (ja) 入出力処理システムにおいて間接データ・アドレッシングを提供するための装置、並びにその方法およびコンピュータ・プログラム
WO2018198325A1 (ja) ストレージシステム
US20050108476A1 (en) Storage device and controlling method thereof
US7460531B2 (en) Method, system, and program for constructing a packet
US8527725B2 (en) Active-active remote configuration of a storage system
US20050262390A1 (en) Method and apparatus for constructing redundant array of independent disks system using disk drives
WO2013001578A1 (ja) 入出力制御装置及び入出力制御装置のフレーム処理方法
US10275388B2 (en) Simultaneous inbound multi-packet processing
US20150067235A1 (en) Memory system and data writing method
US10719391B2 (en) Storage system and storage control apparatus
JP2023038548A (ja) ストレージシステム
US8856404B2 (en) Primitive group data encoding in a data storage fabric
US10289576B2 (en) Storage system, storage apparatus, and communication method
US12130752B2 (en) Storage system
US11842083B2 (en) Storage system architecture with dual storage virtualization controllers and the data access method thereof
US11474751B2 (en) Storage apparatus and data processing method therefor
JP4497940B2 (ja) データ保証制御装置
JP2003158526A (ja) プロトコル制御装置ならびにディスクアレイシステム
KR20220141686A (ko) PCIe 인터페이스 장치 및 그 동작 방법
JP2022039501A (ja) ストレージ制御装置、送達状況判定プログラムおよびストレージシステム

Legal Events

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

Ref document number: 17907982

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载