WO2018154743A1 - ストレージシステム及びストレージの制御方法 - Google Patents

ストレージシステム及びストレージの制御方法 Download PDF

Info

Publication number
WO2018154743A1
WO2018154743A1 PCT/JP2017/007282 JP2017007282W WO2018154743A1 WO 2018154743 A1 WO2018154743 A1 WO 2018154743A1 JP 2017007282 W JP2017007282 W JP 2017007282W WO 2018154743 A1 WO2018154743 A1 WO 2018154743A1
Authority
WO
WIPO (PCT)
Prior art keywords
data transfer
storage
controller
group
path
Prior art date
Application number
PCT/JP2017/007282
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/007282 priority Critical patent/WO2018154743A1/ja
Priority to US16/329,570 priority patent/US10732872B2/en
Publication of WO2018154743A1 publication Critical patent/WO2018154743A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0028Serial attached SCSI [SAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0036Small computer system interface [SCSI]

Definitions

  • the present invention relates to a storage system that uses back-end switches in cascade connection and uses a connectionless storage protocol.
  • Patent Document 1 is known as a technique for evenly using the performance of each storage device when cascade connecting back-end switches.
  • Patent Document 1 is a technology that uses the performance of each storage device equally for Serial-attached SCSI (SAS), which is a connection-type storage protocol.
  • SAS Serial-attached SCSI
  • the present invention is a storage system comprising a plurality of storage devices, a controller that includes a processor and a memory to control the storage device, and a data transfer path that connects the storage device and the controller.
  • the devices are divided into a plurality of groups, and the controller specifies storage devices belonging to each of the plurality of groups among the plurality of storage devices connected via the plurality of independent data transfer paths, and requests access.
  • the storage device to be accessed is specified, the data transfer path different for each group of the specified storage devices is specified as the storage device, and the storage device is connectedless type according to the specified data transfer path Data transfer using the protocol.
  • FIG. 10 is a block diagram illustrating an example of a configuration of a storage system according to a fifth embodiment of this invention. It is a figure which shows Example 5 of this invention and shows an example of a route selection table.
  • 10 is a flowchart illustrating an example of processing performed in the storage system according to the fifth embodiment of this invention.
  • 10 is a flowchart illustrating an example of transfer path determination processing according to the fifth exemplary embodiment of this invention.
  • FIG. 10 is a block diagram illustrating an example of a configuration of a storage system according to a sixth embodiment of this invention. It is a figure which shows Example 6 of this invention and shows an example of a load information table.
  • 10 is a flowchart illustrating an example of processing performed in the storage system according to the sixth embodiment of this invention. It is a flowchart which shows Example 6 of this invention and shows an example of the update process of a load information table.
  • the storage system 100 includes a drive 132 (for example, a solid state drive (SSD)) as one or more nonvolatile storage devices that store data, and one or more switches (back end switches) for connecting the drive 132. 130, a storage control controller 106 that controls the storage system 100, and a main memory 109 used by the storage control controller 106.
  • SSD solid state drive
  • switches back end switches
  • the drive 132 is a storage device that employs a data communication protocol for connectionless communication (for example, Peripheral Component Interconnect Express (PCIe)).
  • PCIe Peripheral Component Interconnect Express
  • the storage control controller 106 has a CPU 125 and hardware resources such as a main memory 109.
  • the main memory 109 of the storage controller 106 stores a drive position information table 110, a request command queue 112, a response command queue 122, a storage control program 114, and a data transfer area 116.
  • the drive 132a designates the virtual area (0x00) 126a as a transfer destination address during data transfer
  • the transfer data is stored in the data transfer area 116 via the path 128a.
  • the drive 132 selects each data transfer path by transferring data to the address of the virtual data transfer area associated with each path.
  • the drive position information table 110 is information for specifying the switches 130a to 130d to which the drives 132a to 132h are connected. As shown in FIG. 1C, the drive position information table 110 includes, as one entry, a drive No. 1101 that stores an identifier that identifies the drive 132 and a switch No. 1102 that stores an identifier that identifies the switch 130 to which the drive 132 is connected. Including.
  • the storage control program 114 identifies the connected switch 130 among the plurality of drive 132 devices connected via the data transfer path 128, and sets the identifier of the drive 132 and the identifier of the switch 130 to the drive position. Store in the information table 110.
  • the bandwidths of the routes 128a to 128d are set evenly, for example, 8 lanes (x8).
  • the input sides of the demultiplexers 133b and 133a are connected to the ports 131i and 131j, respectively. Ports 131a to 131d are connected to the output side of the demultiplexers 133a and 133b.
  • the demultiplexer 133a connects the port 131j to any of the ports 131a to 131d according to the data transfer destination address. The same applies to the demultiplexer 133b.
  • the storage control program 114 when the storage control controller 106 is activated, the storage control program 114 performs initialization for generating the drive position information table 110.
  • the storage control program 114 detects which switch 130a to 130d each drive 132 is connected to, and records the identifier of each switch 130 corresponding to each drive 132 in the drive position information table 110.
  • step 205 the storage control program 114 receives an access request from the host computer 101.
  • the storage control program 114 analyzes the access request and identifies the access target drive 132.
  • the storage control program 114 selects the path 128 so that the same paths 128a to 128d are not selected if the switches 130a to 130d to which the drive 132 is connected are different. That is, the first embodiment shows an example in which paths 128a to 128d corresponding to the addresses of the virtual areas 126a to 126d serving as transfer destinations are assigned in advance to the switches 130a to 130d.
  • the storage control program 114 refers to the drive position information table 110 in step 212 in FIG. 3, so that the drive 132a is connected to the first-stage switch 130a. Identify that. Thereafter, the process proceeds to step 220, and the storage control program 114 specifies 0x00 as the data transfer destination address so that the drive 132a selects the path 128a as the data transfer path.
  • the process advances to any of steps 216, 218, and 220, and the storage control program 114 refers to the drive position information table 110.
  • the transfer destination address of the drive 132 is designated as 0x04, 0x08, or 0x0C. In accordance with the designated transfer destination address, paths 128a to 128d through which the drives 132c to 132h transfer data are determined.
  • the storage control program 114 generates a request command for the drive 132, stores the request command in the request command queue 112, and then issues the request command to the drive 132.
  • step 280 the storage control program 114 reads the response command from the drive 132 stored in the response command queue 122, thereby completing the processing of the request command issued in step 260.
  • steps 205 to 282 can be repeatedly executed whenever the storage controller 106 receives an access request from the host computer 101.
  • the storage controller 106 allocates a plurality of virtual areas 126a to 126d equally to the access target drives 132 according to the number of switches 130 (number of stages) connected to the CPU 125.
  • the data transfer path 128 is separated for each switch 130.
  • each drive 132 selects the paths 128a to 128d for performing data transfer according to the data transfer destination address (virtual area 126) of the main memory 109 designated by the storage controller 106.
  • Paths 128a to 128d connected to the switch 130 are allocated to the plurality of virtual areas 126a to 126d with equal bandwidth.
  • a relay device in which the drives 132a and 132b are connected to the storage controller 106 as a first group and the drives 132c and 132d are connected to the first group as a second group can be used.
  • the data transfer path 128 that is independent for each group is allocated in an equal area, so that the drive 132 of each group differs.
  • the path 128 it becomes possible to eliminate the performance difference of the drives 132 between the groups.
  • FIG. 5A is a block diagram illustrating an example of the configuration of the storage system 100 according to the second embodiment.
  • a path-switch table 118 is added to the main memory 109 of FIG. 1 shown in the first embodiment, and other configurations are the same as those of the first embodiment.
  • the maximum number of switches 130 is four is shown.
  • FIG. 5B is a diagram showing an example of the route-switch table 118.
  • the path-switch table 118 stores the number of effective paths 1181 cascaded from the storage control controller 106 and the number of effective switches 1182 cascaded from the storage control controller 106.
  • step 395 the storage control program 114 accepts an access request from the host computer 101.
  • the storage control program 114 analyzes the access request and identifies the access target drive 132.
  • the path 128 is selected so as not to select the same paths 128a to 128d.
  • paths 128a to 128d corresponding to the addresses of the virtual areas 126a to 126d serving as transfer destinations are assigned in advance to the switches 130a to 130d.
  • the process proceeds to any of steps 306, 308, and 310, and the storage control program 114 refers to the drive position information table 110.
  • the transfer destination address of the drive 132 is designated as 0x04, 0x08, or 0x0C.
  • paths 128a to 128d through which the drives 132c to 132h transfer data are determined. Thereafter, the process proceeds to step 360 in FIG. 6A.
  • step 304 if it is determined in step 304 that the drive 132 is connected to the first-stage switch 130a, the process proceeds to step 316.
  • step 316 the storage control program 114 designates 0x00 or 0x04 as the transfer destination address of the drive 132 so that the drive 132 selects the path 128a or the path 12b as the data transfer path. Thereafter, the process proceeds to step 360 in FIG. 6A.
  • FIG. 6B is a flowchart illustrating an example of the route-switch number table update process performed in step 370.
  • step 374 the storage control program 114 updates the number of paths 128 that have changed or the entry in the path-switch table 118 corresponding to the switch 130 that has changed.
  • FIG. 8 is a flowchart illustrating an example of a transfer path determination process performed in step 300 illustrated in FIG. 6A according to the second embodiment.
  • steps other than step 300 in FIG. 8 are the same as those in the second embodiment.
  • the contents of step 300 are different from those in the second embodiment, and FIGS. 8 to 10 show examples of processing performed in step 300 in the third embodiment.
  • FIG. 9 is a flowchart showing an example of processing performed in step 330.
  • the storage control program 114 refers to the drive position information table 110 and calculates the ratio of the number of drives 132 of the first-stage, second-stage, third-stage, and fourth-stage switches 130. Then, the storage control program 114 performs branching according to the calculated ratio.
  • step 336 If the ratio of the number of drives 132 of the first stage, second stage, third stage, and fourth stage switch 130 is 3: 1: 0: 0, the process proceeds to step 336, and the storage control program 114
  • the transfer destination address of the drive 132 connected to the second switch 130a is equally designated as any of 0x00 to 0x08, and the transfer destination address of the drive 132 connected to the second-stage switch 130b is designated as 0x0C.
  • the drive 132 of the switch 130a executes data transfer through one of the paths 128a to 128c, and the drive 132 of the switch 130b executes data transfer through the path 128d.
  • the storage control program 114 first specifies the transfer destination address of the drive 132 connected to the first-stage switch 130a evenly as either 0x00 or 0x04, and the drive control program 114 of the drive 132 connected to the second-stage switch 130b.
  • the transfer destination address is specified as 0x08
  • the transfer destination address of the drive 132 connected to the third-stage switch 130c is specified as 0x0C.
  • the drive 132 of the switch 130a executes data transfer through either the path 128a or 128b
  • the drive 132 of the switch 130b executes data transfer through the path 128c
  • the drive 132 of the switch 130c passes through the path 128d. Perform data transfer.
  • the storage control program 114 first designates the transfer destination address of the drive 132 connected to the first-stage switch 130a as 0x00, and designates the transfer destination address of the drive 132 connected to the second-stage switch 130b as 0x04. Then, the transfer destination address of the drive 132 connected to the third-stage switch 130c is designated as 0x08, and the transfer destination address of the drive 132 connected to the fourth-stage switch 130d is designated as 0x0C.
  • step 330 the series of processes in step 330 is terminated, and then the series of processes in step 300 is terminated.
  • FIG. 10 is a flowchart showing an example of processing performed in step 340.
  • the quotient is two, and in the third embodiment, the switch 130 has two stages.
  • the drive 132 of the switch 130a executes data transfer through either the path 128a or 128b, and the drive 132 of the switch 130b executes data transfer through the path 128c or 128d.
  • the storage control program 114 ends the series of processes in step 340, and then ends the series of processes in step 300.
  • step 350 of FIG. 8 since the number of stages of the switch 130 is one, the storage control program 114 sets 0x00 as the data transfer destination address so that the drive 132 of the switch 130a selects the paths 128a to 128d as the data transfer paths. Specify ⁇ 0x0C.
  • the storage control program 114 selects the paths 128a to 128d for performing data transfer according to the ratio of the number of stages of the switches 130 connected to the storage control controller 106 and the number of drives 132.
  • the data transfer path 128 can be separated between the plurality of switches 130, and the performance difference between the drives 132a to 132h connected to the switches 130a to 130d can be eliminated.
  • FIG. 11A is a block diagram illustrating an example of a configuration of the storage system 100 according to the fourth embodiment.
  • a path abnormality detection circuit 127 is added to the storage controller 106 of FIG. 5A shown in the second embodiment, and a path status table for recording whether the path 128 is normal or abnormal in the main memory 109. 117 was added.
  • FIG. 12A is a flowchart illustrating an example of processing performed in the storage system 100 according to the fourth embodiment.
  • the storage control controller 106 When the storage control controller 106 is activated, in step 490 of FIG. 12A, the storage control program 114 performs initialization to generate the drive position information table 110 and the path state table 117.
  • step 490 the storage control program 114 detects which switch 130a to 130d each drive 132 is connected to, and records the identifier of each switch 130 corresponding to each drive 132 in the drive position information table 110.
  • step 390 the storage control program 114 records the number of valid paths 128 and the number of valid switches 130 in the path-switch table 118.
  • the path abnormality detection circuit 127 detects whether each of the paths 128a to 128d is normal or abnormal, and stores the detection result in the path state table 117.
  • FIG. 13 is a flowchart illustrating an example of transfer path determination processing performed in step 400.
  • step 402 the storage control program 114 specifies the connection position (number of stages) of the drive 132 that performs data transfer by referring to the drive position information table 110. Thereafter, the storage control program 114 determines one of the paths 128a to 128d according to the number of stages of the switch 130 to which the drive 132 is connected.
  • the storage control program 114 proceeds to step 405 if the connection position of the drive 132 is the switch 130d (fourth stage). If the connection position of the drive 132 is the switch 130c (third stage), the storage control program 114 proceeds to step 407. If the connection position of the drive 132 is the switch 130b (second stage), the storage control program 114 proceeds to step 409. If the connection position of the drive 132 is the switch 130a (first stage), the storage control program 114 proceeds to step 411.
  • step 405 or 407 or 409 or 411 the storage control program 114 determines whether or not the path 128 corresponding to the connection position of the drive 132 is normal (valid) with reference to the path status table 117.
  • the storage control program 114 proceeds to steps 406, 408, 410, and 412 corresponding to the path 128 to specify the transfer destination address.
  • step 405 the storage control program 114 proceeds to step 407 and determines the state of the path 128c. If the state of the path 128c is normal, the process proceeds to step 408, and the storage control program 114 performs data transfer of the drive 132 connected to the fourth-stage switch 130d through the path 128c. Thereafter, the process proceeds to step 460 of FIG. 12A.
  • step 404 in which the quotient is 2 the storage control program 114 specifies the connection position of the drive 132 to which data is transferred by referring to the drive position information table 110.
  • the storage control program 114 refers to the path state table 117 and designates a transfer destination address so that even if the path 128 is abnormal, data can be transferred by bypassing the other path 128. .
  • step 413 the storage control program 114 proceeds to step 415 and determines the state of the path 128b or path 128a. If the status of the path 128b or the path 128a is normal, the storage control program 114 proceeds to step 416.
  • the storage control program 114 designates a transfer destination address corresponding to the data transfer path 128b or the path 128a of the drive 132 connected to the second-stage switch 130b. Thereafter, the process proceeds to step 460.
  • Step 460 is the same processing as step 260 in FIG. 1, and the storage control program 114 issues a request command to the drive 132.
  • FIG. 12B is a flowchart illustrating an example of the process performed in step 450.
  • step 452 the storage control program 114 determines whether or not there is a change in the number of paths 128 or switches 130. If there is a change, the process proceeds to step 454. If there is no change, the process proceeds to step 456. move on.
  • step 454 the storage control program 114 updates the number of paths 128 that have changed or the number of switches 130 that have changed with the corresponding entry in the path-switch table 118, and proceeds to step 456.
  • step 456 the path abnormality detection circuit 127 determines whether or not the state of the path 128 has changed. If there is a change, the process proceeds to step 458. If there is no change, the process proceeds to step 400. In step 458, the corresponding entry in the route state table 117 corresponding to the changed route 128 is updated, and the process returns to step 405 in FIG. Note that the processing in step 450 includes the processing in steps 280 and 282 shown in the first embodiment.
  • the storage control program 114 switches to the normal path 128 and performs data transfer. Perform the transfer.
  • the data transfer path 128 is separated between the plurality of switches 130, and the performance difference between the drives 132a to 132h connected to the switches 130a to 130d is eliminated. Can do.
  • FIG. 14A of the fifth embodiment a management terminal 104 and a storage system management program 108 are added to the storage system 100 shown in FIG. 1 of the first embodiment, and the main memory 109 of the storage control controller 106 is further added.
  • a route selection table 150 is added.
  • Other configurations are the same as those of the first embodiment.
  • step 585 the storage control program 114 accepts an access request from the host computer 101.
  • the storage control program 114 analyzes the access request and identifies the access target drive 132.
  • FIG. 16 is a flowchart showing an example of transfer path determination processing performed in step 500.
  • step 502 of FIG. 16 the storage control program 114 identifies the switch 130 to which the drive 132 that is the target of data transfer is connected by referring to the drive position information table 110, and proceeds to step 504.
  • step 504 the storage control program 114 refers to the entry in the path selection table 150 and identifies the path 128 that the drive 132 uses for data transfer. Thereafter, the storage control program 114 proceeds to one of steps 506 to 510 in accordance with the identified paths 128a to 128d, and designates a transfer destination address corresponding to the path 128 used for data transfer. Thereafter, the process proceeds to step 560 in FIG.
  • Step 560 is the same processing as step 260 in FIG. 1, and the storage control program 114 issues a request command to the drive 132. It should be noted that after issuing the request command, the processing of steps 280 and 282 shown in the first embodiment is performed, although not shown. Thereafter, the process returns to step 580 to repeat the above process.
  • Embodiment 6 of the present invention will be described with reference to FIGS. 17A to 19.
  • Each of the following embodiments including this embodiment corresponds to a modification of the first embodiment.
  • FIG. 18 is a flowchart illustrating an example of processing performed in the storage system 100 according to the sixth embodiment.
  • the storage control program 114 detects the connection position to which each drive 132 is connected to which switch 130, and stores it in the drive position information table 110 for each drive 132. The identifier of each corresponding switch 130 is recorded. Furthermore, in step 690, the storage control program 114 initializes all entries in the load information table 120 with zero.
  • step 695 the storage control program 114 receives an access request from the host computer 101.
  • the storage control program 114 analyzes the access request and identifies the access target drive 132.
  • step 602 the storage control program 114 increments the number of commands being issued 1202 in the entry of the load information table 120 corresponding to the switch 130 to which the drive 132 to which the request command has been issued is connected.
  • the corresponding entry in the load information table 120 is incremented by the number of issued commands 1202 because a request command has been issued.
  • the value of the number of commands being issued 1202 indicates the load size of the switch 130.
  • step 604 the storage control program 114 refers to the response command queue 122. If there is a response from the drive 132 connected to the switch 130, the process proceeds to step 606. If there is no response, the process proceeds to step 622 in FIG.
  • step 606 when the drive 132 completes the data transfer to the data transfer area 116, the response command is stored in the response command queue 122, and the storage control program 114 reads the response command, so that the request command issued in step 660 is updated. Complete the process.
  • step 608 the storage control program 114 decrements the number of issued commands 1202 of the entry in the load information table 120 corresponding to the drive 132 corresponding to the request command processed in step 606. Thereafter, the process proceeds to step 622 in FIG.
  • step 624 the storage control program 114 changes the transfer destination address of the drives 132a and 132b connected to the first-stage switch 130a to any of 0x00 to 0x0C, and returns to step 660 to repeat the above processing.
  • step 622 if the total number of commands issued to the drives 132c to 132h connected to the switches 130b to 130d in the second and subsequent stages is other than 0, the storage control program 114 returns to step 660 again. Repeat the above process.
  • each of the above-described configurations, functions, processing units, processing means, 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 the processor interpreting and executing a program that realizes each function.
  • Information such as programs, tables, and files that realize 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, an SD card, or a DVD.
  • control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, 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)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Multi Processors (AREA)

Abstract

複数の記憶デバイスと、プロセッサとメモリを含んで前記記憶デバイスを制御するコントローラと、前記記憶デバイスと前記コントローラとを接続するデータ転送経路と、を有するストレージシステムであって、前記記憶デバイスは複数のグループに分かれ、前記コントローラは、前記複数の独立したデータ転送経路を介して接続された前記複数の記憶デバイスのうち、前記複数のグループそれぞれについて所属する記憶デバイスを特定し、アクセス要求を受信してアクセス対象の記憶デバイスを特定し、前記特定した記憶デバイスのグループ毎に異なる前記データ転送経路を前記記憶デバイスに指定し、前記記憶デバイスは前記指定されたデータ転送経路に従ってコネクションレス型のプロトコルでデータ転送を行う。

Description

ストレージシステム及びストレージの制御方法
 本発明は、バックエンドスイッチをカスケード接続し、コネクションレス型のストレージプロトコルを使用するストレージシステムに関する。
 ストレージシステムの記憶デバイスが使用するプロトコルとして、Flashストレージ向けにNon-Volatile Memory Express (NVMe)を始めとするコネクションレス型のプロトコルが普及しつつある。また、ストレージシステムの容量を容易に拡張する手段として、バックエンドスイッチをカスケード接続することで記憶デバイスを増設する方法が挙げられる。
 バックエンドスイッチをカスケード接続する場合に、各記憶デバイスの性能を均等に使用する技術として、例えば、特許文献1が知られている。特許文献1は、コネクション型のストレージプロトコルであるSerial Attached SCSI(SAS)を対象として、各記憶デバイスの性能を均等に使用する技術である。
特開2007-256993号公報
 上記特許文献1は、コネクション型のプロトコルを用いるため、上述のNVMe等のコネクションレス型のプロトコルを用いるストレージシステムには適用ができない、という問題があった。
 このため、コネクションレス型通信のストレージプロトコルで、バックエンドスイッチをカスケード接続する時に、コネクション型プロトコルのように予め通信経路を確保することはできない。このため、後段のバックエンドスイッチに接続された記憶デバイスへの帯域が充分に取れず、前段と後段のバックエンドスイッチでは記憶デバイス間で性能差が発生する課題があった。
 そこで、本発明は、コネクションレス型のプロトコルを用いるストレージシステムで、記憶デバイスを接続するバックエンドスイッチをカスケード接続した場合でも、バックエンドスイッチ間での記憶デバイスの性能差を解消することを目的とする。
 本発明は、複数の記憶デバイスと、プロセッサとメモリを含んで前記記憶デバイスを制御するコントローラと、前記記憶デバイスと前記コントローラとを接続するデータ転送経路と、を有するストレージシステムであって、前記記憶デバイスは複数のグループに分かれ、前記コントローラは、前記複数の独立したデータ転送経路を介して接続された前記複数の記憶デバイスのうち、前記複数のグループそれぞれについて所属する記憶デバイスを特定し、アクセス要求を受信してアクセス対象の記憶デバイスを特定し、前記特定した記憶デバイスのグループ毎に異なる前記データ転送経路を前記記憶デバイスに指定し、前記記憶デバイスは前記指定されたデータ転送経路に従ってコネクションレス型のプロトコルでデータ転送を行う。
 本発明によれば、各記憶デバイスがコントローラのメモリ上のデータ転送先アドレスによりデータ転送経路を選択することで、複数のグループ間でデータ転送経路を分離して、記憶デバイス間の性能差を解消することができる。
本発明の実施例1を示し、ストレージシステムの構成の一例を示すブロック図である。 本発明の実施例1を示し、スイッチの接続関係の一例を示すブロック図である。 本発明の実施例1を示し、ドライブ位置情報テーブルの一例を示す図である。 本発明の実施例1を示し、ストレージシステムで行われる処理の一例を示すフローチャートである。 本発明の実施例1を示し、転送経路の決定処理の一例を示すフローチャートである。 本発明の実施例1を示し、パケットの一例を示す図である。 本発明の実施例2を示し、ストレージシステムの構成の一例を示すブロック図である。 本発明の実施例2を示し、経路-スイッチ数テーブルの一例を示す図である。 本発明の実施例2を示し、ストレージシステムで行われる処理の一例を示すフローチャートである。 本発明の実施例2を示し、経路-スイッチ数テーブルの更新処理の一例を示すフローチャートである。 本発明の実施例2を示し、転送経路の決定処理の一例を示すフローチャートである。 本発明の実施例3を示し、転送経路の決定処理の一例を示すフローチャートである。 本発明の実施例3を示し、図8のステップ330で行われる転送先の決定処理の一例を示すフローチャートである。 本発明の実施例3を示し、図8のステップ340で行われる転送先の決定処理の一例を示すフローチャートである。 本発明の実施例4を示し、ストレージシステムの構成の一例を示すブロック図である。 本発明の実施例4を示し、経路状態テーブルの一例を示す図である。 本発明の実施例4を示し、ストレージシステムで行われる処理の一例を示すフローチャートである。 本発明の実施例4を示し、経路状態テーブルの更新処理の一例を示すフローチャートである。 本発明の実施例4を示し、転送経路の決定処理の一例を示すフローチャートである。 本発明の実施例5を示し、ストレージシステムの構成の一例を示すブロック図である。 本発明の実施例5を示し、経路選択テーブルの一例を示す図である。 本発明の実施例5を示し、ストレージシステムで行われる処理の一例を示すフローチャートである。 本発明の実施例5を示し、転送経路の決定処理の一例を示すフローチャートである。 本発明の実施例6を示し、ストレージシステムの構成の一例を示すブロック図である。 本発明の実施例6を示し、負荷情報テーブルの一例を示す図である。 本発明の実施例6を示し、ストレージシステムで行われる処理の一例を示すフローチャートである。 本発明の実施例6を示し、負荷情報テーブルの更新処理の一例を示すフローチャートである。
 以下、本発明の一実施形態について添付図面を用いて説明する。
 図1Aは、本発明の一実施形態に係るストレージシステム100の構成の一例を示すブロック図である。以下、同種の要素には、同一の親符号を付し、同種の要素を個々に説明する場合には、親符号に子符号(例えば、a~n等)を付して説明する。
 ストレージシステム100は、一または複数の(例えば2台)のホスト計算機101が、ネットワーク(図示省略)を介して接続されている。
 ストレージシステム100は、データを記憶する一又は複数の不揮発性の記憶デバイスとしてのドライブ132(例えばソリッドステートドライブ(SSD))と、ドライブ132を接続するための一又は複数のスイッチ(バックエンドスイッチ)130と、ストレージシステム100を制御するストレージ制御コントローラ106と、ストレージ制御コントローラ106が使用する主記憶109を有する。
 また、ストレージシステム100が複数のスイッチを有する場合は、図1Aのように、複数のスイッチ130がストレージ制御コントローラ106から順番に接続される(カスケード接続)。
 ホスト計算機101は、例えば、図示しないCPUと、メモリ、及びストレージシステム100との通信に用いるI/Oポートなどのハードウェア資源を含む。ホスト計算機101は、ストレージシステム100のデータにアクセスすることができる。
 ドライブ132は、コネクションレス型通信のデータ通信プロトコル(例えば、Peripheral Component Interconnect Express(PCIe))を採用する記憶デバイスである。
 ドライブ132がストレージ制御コントローラ106の主記憶109内のデータ転送領域116に対してデータ転送を行う場合は、各スイッチ130の経路128a、経路128b、経路128c、経路128dのいずれかを経由してデータを送信する。
 ストレージ制御コントローラ106は、CPU125と、主記憶109などのハードウェア資源を有する。ストレージ制御コントローラ106の主記憶109は、ドライブ位置情報テーブル110と、要求コマンドキュー112と、応答コマンドキュー122と、ストレージ制御プログラム114と、データ転送領域116を格納する。
 データ転送領域116はドライブ132から読み出したデータ及び、ドライブ132に書き込むデータを格納する。データ転送領域116は、4つの経路128a~128dに対応する仮想領域126a~126dを含む。なお、仮想領域126は、4つに限定されるものではなく、経路128の数に応じて設定することができる。
 仮想領域126は、ドライブ132がデータ転送時に指定する転送先アドレスであり、データを転送する経路128と紐付いている。また、ドライブ132がデータの転送先として仮想領域126を指定した際の、実際のデータ転送先はデータ転送領域116である。
 図示の例では、ドライブ132aがデータ転送時に、仮想領域(0x00)126aを転送先アドレスとして指定すると、転送データは経路128aを経由して、データ転送領域116に格納される。他の経路128b~128dも同様に、ドライブ132は、各経路と紐付いた仮想的なデータ転送領域のアドレス宛にデータを転送することで、各々のデータ転送経路を選択する。
 要求コマンドキュー112は、ストレージ制御コントローラ106が生成したドライブ132に対する要求コマンド(例えば、ドライブ132に対するデータ転送の指示を出すコマンド)を格納する領域である。また、応答コマンドキュー122はドライブ132からストレージ制御コントローラ106に対する応答コマンド(例えば、データ転送完了を示す応答コマンド)を格納する領域である。
 ドライブ位置情報テーブル110は、各ドライブ132a~132hが接続されたスイッチ130a~130dを特定する情報である。ドライブ位置情報テーブル110は、図1Cで示すように、ドライブ132を特定する識別子を格納するドライブNo1101と、ドライブ132が接続されたスイッチ130を特定する識別子を格納するスイッチNo1102とを一つのエントリに含む。
 ストレージ制御プログラム114は、ホスト計算機101から指示を受けた後の、ドライブ132に対するデータの読み書き処理を制御するプログラムである。また、制御プログラム114は、本発明に必要な情報(例えば、ドライブ位置情報テーブル110)の初期化を行う。
 すなわち、ストレージ制御プログラム114は、データ転送の経路128を介して接続された複数のドライブ132デバイスのうち、接続されているスイッチ130を特定して、ドライブ132の識別子とスイッチ130の識別子をドライブ位置情報テーブル110に格納する。
 図1Bは、ストレージシステム100のスイッチ130とドライブ132の接続関係の一例を示すブロック図である。ストレージ制御コントローラ106のCPU125には、スイッチ130aが接続される。スイッチ130aには、ドライブ132a、132bが接続される。
 スイッチ130aの後段には、スイッチ130bが接続される。スイッチ130bには、ドライブ132c、132dが接続される。スイッチ130bの後段には、スイッチ130cが接続される。スイッチ130cには、ドライブ132e、132fが接続される。スイッチ130cの後段には、スイッチ130dが接続される。スイッチ130dには、ドライブ132g、132hが接続される。
 図1Bでは、ストレージ制御コントローラ106のCPU125からスイッチ130a~130dが順番にカスケード接続されている。
 経路128a~128dの帯域は均等に設定されており、例えば、8レーン(x8)に設定される。
 スイッチ130aは、前段のデバイス(CPU125)に接続されるポート131a~131dと、後段のデバイス(スイッチ130b)に接続されるポート131e~131hと、ドライブ132a、132bに接続されるポート131i、131jとを含む。
 ポート131iと131jには、それぞれデマルチプレクサ133b、133aの入力側が接続される。デマルチプレクサ133a、133bの出力側には、ポート131a~131dが接続される。デマルチプレクサ133aは、データの転送先アドレスに応じて、ポート131jをポート131a~131dのいずれかと接続する。デマルチプレクサ133bも同様である。
 他のスイッチ130b~130dも上記スイッチ130aと同様に構成されて前段のデバイスと後段のデバイスまたはドライブ132との接続を切り替える。なお、図示の例では、ひとつのスイッチ130に2つのドライブ132を接続した例を示すが、これに限定されるものではない。
 本実施例1では、仮想領域126a~126dにデータ転送の経路128a~128dが予め割り当てられている。
 経路128aは、スイッチ130a~130dのポート131hから131aを通り、ストレージ制御コントローラ106のCPU125を介して、データ転送領域116に接続される。
 経路128bは、スイッチ130a~130dのポート131gから131bを通り、ストレージ制御コントローラ106のCPU125を介して、データ転送領域116に接続される。
 経路128cは、スイッチ130a~130dのポート131fから131cを通り、ストレージ制御コントローラ106のCPU125を介して、データ転送領域116に接続される。
 経路128dは、スイッチ130a~130dのポート131eから131dを通り、ストレージ制御コントローラ106のCPU125を介して、データ転送領域116に接続される。
 上述のように、各経路128a~128dの帯域は均等に割り当てられている。図1A及び図1Bでは、4段のスイッチ130をカスケード接続した例を示すが、スイッチ130の数に応じて、経路128a~128dに割り当てるレーン数や使用するポートの組み合わせを変更してもよい。例えば、2つのスイッチ130a、130bの2段で構成される場合は、経路128a、128bをスイッチ130aに割り当て、経路128c、128dをスイッチ130bに割り当てるようにしてもよい。
 図2及び図3は、ストレージ制御コントローラ106のストレージ制御プログラム114が行う処理の一例を示すフローチャートである。図2及び図3に基づいて、本実施例1の処理の一例を説明する。なお、以下に述べる各フローチャートは、本発明の実施に必要な範囲で処理の概要を示しており、実際のコンピュータプログラムとは相違する場合がある。また、ステップの入れ替えやステップの追加、変更または削除が可能な場合もある。
 図2のステップ200において、ストレージ制御コントローラ106が起動すると、ストレージ制御プログラム114は、ドライブ位置情報テーブル110を生成する初期化を実施する。ストレージ制御プログラム114は、各ドライブ132がどのスイッチ130a~130dに接続されているかを検出し、ドライブ位置情報テーブル110に、各ドライブ132に対応した各スイッチ130の識別子を記録する。
 ステップ205において、ストレージ制御プログラム114は、ホスト計算機101からアクセス要求を受け付ける。ストレージ制御プログラム114は、アクセス要求を解析してアクセス対象のドライブ132を特定する。
 次にステップ210の転送経路の決定処理に進む。図3にステップ210で行われる転送経路の決定処理の一例を示す。ステップ212では、ストレージ制御プログラム114が、データ転送を行うドライブ132の接続位置を、ドライブ位置情報テーブル110を参照することで特定する。なお、本実施例1では、接続位置をスイッチ130の段数で表し、1段目がスイッチ130aを示し、2段目がスイッチ130bを示し、3段目がスイッチ130cを示し、4段目がスイッチ130dを示す。
 その後、ストレージ制御プログラム114は、特定した接続位置に応じてステップ214~220のいずれかに進む。すなわち、ストレージ制御プログラム114は、ドライブ132が接続されたスイッチ130の段数に応じて、データを転送する経路128を決定する。
 この際、ストレージ制御プログラム114は、ドライブ132が接続されたスイッチ130a~130dが異なれば、同一の経路128a~128dを選択しないように、経路128を選択する。すなわち、本実施例1では、スイッチ130a~130d毎に転送先となる仮想領域126a~126dのアドレスに対応する経路128a~128dが予め割り当てられている例を示す。
 例えば、データ転送の対象がドライブ132aである場合、図3のステップ212において、ストレージ制御プログラム114はドライブ位置情報テーブル110を参照することで、ドライブ132aは1段目のスイッチ130aに接続されていることを特定する。その後、ステップ220に進み、ストレージ制御プログラム114は、ドライブ132aがデータ転送経路として経路128aを選択するように、データ転送先アドレスとして0x00を指定する。
 他のスイッチ130b~130dに接続されているドライブ132c~132hについても同様であり、ステップ216、218、220のいずれかに進んで、でストレージ制御プログラム114が、ドライブ位置情報テーブル110を参照して、該ドライブ132の転送先アドレスを0x04、0x08、0x0Cのいずれかに指定する。指定された転送先アドレスに応じて、ドライブ132c~132hがデータを転送する経路128a~128dが決定される。
 その後、図2のステップ260に進み、ストレージ制御プログラム114はドライブ132への要求コマンドを生成し、要求コマンドキュー112に格納した後に、ドライブ132へ要求コマンドを発行する。
 ステップ280では、ストレージ制御プログラム114が応答コマンドキュー122を参照し、ドライブ132からの応答があればステップ282に進み、応答がなければステップ280に戻る。
 ステップ280において、ストレージ制御プログラム114は応答コマンドキュー122に格納されているドライブ132からの応答コマンドを読み出すことで、ステップ260で発行した要求コマンドの処理を完了する。
 なお、上記ステップ205~282の処理は、ストレージ制御コントローラ106がホスト計算機101からアクセス要求を受け付ける度に繰り返して実行することができる。
 図4は、経路128で転送されるPCIeのパケットの一例を示す図である。図示の例は、PCIeのトランザクション層パケット160を示す。PCIeのトランザクション層パケット160は、ヘッダ161と、データ162と、ECRC(End to end Cyclic Redundancy Check)163とを含む。
 上記図3のステップ214~218で、ストレージ制御コントローラ106が指定する転送先アドレスは、図4のヘッダ161内の転送先アドレス164に仮想領域126を設定する。トランザクション層パケット160を受信したドライブ132は、所定のアクセスを完了すると転送先アドレス164で指定された仮想領域126へ応答パケットを送信する。
 なお、ストレージ制御コントローラ106からの要求を処理し、応答するドライブ132が転送するデータは、図4と同様にパケットに分割されて、各パケットのヘッダ161には転送先アドレス164が付与されている。
 図4に示したようなパケットによって、転送を行う場合、転送の経路は転送先アドレス164に応じて選ぶことができる。前段と後段のバックエンドスイッチで経路を分離しなければ、後段の記憶デバイスが用いる経路を前段の記憶デバイスも使用することが可能であり、後段の記憶デバイスの転送が前段の記憶デバイスの転送に妨げられて、後段の記憶デバイスからの転送が滞る場合が発生する。これが、前記課題として記載した前段と後段のバックエンドスイッチで記憶デバイス間の性能差が発生する例である。
 これに対して、本実施例1では、ストレージ制御コントローラ106がCPU125に接続されるスイッチ130の数(段数)に応じて、複数の仮想領域126a~126dをアクセス対象のドライブ132へ均等に割り当てることで、スイッチ130毎にデータ転送の経路128を分離する。
 本実施例1によれば、各ドライブ132はストレージ制御コントローラ106から指定された主記憶109のデータ転送先アドレス(仮想領域126)に応じて、データ転送を行う経路128a~128dを選択する。複数の仮想領域126a~126dには、スイッチ130と接続する経路128a~128dが均等の帯域で割り当てられている。これにより、複数のスイッチ130間でデータ転送の経路128を分離して、均等な帯域を割り当てることで、各スイッチ130a~130dに接続されたドライブ132a~132h間の性能差を解消することができる。
 例えば、ストレージ制御コントローラ106に1つのスイッチ130aが接続されている状態では、スイッチ130aのドライブ132に4つの経路128a~128dを割り当てる。
 そして、スイッチ130aの後段にスイッチ130bを接続してストレージシステム100の容量を拡大する際には、ストレージ制御コントローラ106がスイッチ130aのドライブ132に経路128a、128bを割り当て、後段のスイッチ130bに経路128a、128bを割り当てる。これにより、コネクションレス型のプロトコルを用いたストレージシステム100において、追加されたスイッチ130bも、既設のスイッチ130aと同等の帯域を確保することができる。
 なお、本実施例1では、複数のドライブ132をまとめてストレージ制御コントローラ106に接続する装置としてスイッチ130を用いる例を示したが、これに限定されるものではない。例えば、1以上のドライブ132を含むグループ単位でカスケード接続する中継デバイスであればよい。
 例えば、ドライブ132a、132bが第1のグループとしてストレージ制御コントローラ106に接続され、ドライブ132c、132dが第2のグループとして第1のグループに接続される中継デバイスを用いることができる。これにより複数のグループをカスケード接続し、コネクションレス型のプロトコルを採用するストレージシステム100で、各グループ毎に独立したデータ転送の経路128を均等の地域で割り当てることで、各グループのドライブ132に異なる経路128を選択させて、グループ間のドライブ132の性能差を解消することが可能となる。
 図5A~図7に基づいて、本発明の実施例2を説明する。本実施例2は、実施例1の変形例に該当する。
 図5Aは、実施例2のストレージシステム100の構成の一例を示すブロック図である。本実施例2の図5Aでは、前記実施例1に示した図1の主記憶109に、経路-スイッチテーブル118を追加したものであり、その他の構成は前記実施例1と同様である。なお、本実施例2では、スイッチ130の最大数を4とした例を示す。
 図5Bは経路-スイッチテーブル118の一例を示す図である。経路-スイッチテーブル118は、ストレージ制御コントローラ106からカスケード接続された有効な経路数1181と、ストレージ制御コントローラ106からカスケード接続された有効なスイッチ数1182とを格納する。
 図6Aは、実施例2を示し、ストレージシステム100で行われる処理の一例を示すフローチャートである。ストレージ制御コントローラ106が起動すると、図6Aのステップ390において、ストレージ制御プログラム114は、ドライブ位置情報テーブル110を生成する初期化を実施する。
 ストレージ制御プログラム114は、各ドライブ132がどのスイッチ130a~130dに接続されているか接続位置を検出し、ドライブ位置情報テーブル110に、各ドライブ132に対応した各スイッチ130の識別子を記録する。更に、ステップ390においては、ストレージ制御プログラム114が、有効な経路128の数と、有効なスイッチ130の数を、経路-スイッチテーブル118に記録する。
 ステップ395において、ストレージ制御プログラム114は、ホスト計算機101からアクセス要求を受け付ける。ストレージ制御プログラム114は、アクセス要求を解析してアクセス対象のドライブ132を特定する。
 次にステップ300の転送経路の決定処理に進む。図7は、ステップ300で行われる転送経路の決定処理の一例を示すフローチャートである。ステップ301では、ストレージ制御プログラム114が、経路-スイッチテーブル118から、有効な経路数1181と有効なスイッチ数1182の商を計算する。商が1の場合はステップ302に進み、商2の場合は、ステップ304に進み、商が4の場合は、ステップ318に進む。
 商が1のステップ302では、ストレージ制御プログラム114が、データ転送を行うドライブ132の接続位置を、ドライブ位置情報テーブル110を参照することで特定する。その後、特定した接続位置に応じてステップ306~312のいずれかに進む。ストレージ制御プログラム114は、ドライブ132が接続されているスイッチ130の段数に応じて経路128a~128dを決定する。
 この際、ドライブ132が接続されたスイッチ130a~130dが異なれば、同一の経路128a~128dを選択しないように、経路128を選択する。本実施例2は、前記実施例1と同様に、スイッチ130a~130d毎に転送先となる仮想領域126a~126dのアドレスに対応する経路128a~128dが予め割り当てられる。
 例えば、データ転送の対象がドライブ132aである場合、図7のステップ302において、ストレージ制御プログラム114はドライブ位置情報テーブル110を参照することで、ドライブ132aは1段目のスイッチ130aに接続されていることを特定する。
 その後、ステップ312に進み、ストレージ制御プログラム114はドライブ132aがデータ転送経路として経路128aを選択するように、データ転送先アドレスとして0x00を指定する。
 他のスイッチ130b~130dに接続されているドライブ132c~132hについても同様であり、ステップ306、308、310のいずれかに進んで、でストレージ制御プログラム114が、ドライブ位置情報テーブル110を参照して、該ドライブ132の転送先アドレスを0x04、0x08、0x0Cのいずれかに指定する。指定された転送先アドレスに応じて、ドライブ132c~132hがデータを転送する経路128a~128dが決定される。その後、図6Aのステップ360に進む。
 商が2のステップ304では、ストレージ制御プログラム114が、データ転送を行うドライブ132の接続位置を、ドライブ位置情報テーブル110を参照することで特定する。その後、特定した接続位置に応じてステップ314ないしは316のいずれかに進み、ストレージ制御プログラム114は、ドライブ132が接続されているスイッチ130の段数に応じて経路128を決定する。
 この際、ドライブ132が接続されたスイッチ130異なれば、同一の経路128a~128dを使用しないように、経路128を選択する。例えば、ステップ304でドライブ132が1段目のスイッチ130aに接続されていることを特定した場合、ステップ316へ進む。
 ステップ316では、ストレージ制御プログラム114が、該ドライブ132がデータ転送経路として経路128aまたは経路12bを選択するように、ドライブ132の転送先アドレスとして、0x00または0x04を指定する。その後、図6Aのステップ360に進む。
 ステップ304でドライブ132が2段目のスイッチ130bに接続されていることを特定した場合、ステップ314へ進む。
 ステップ314では、ストレージ制御プログラム114が、該ドライブ132がデータ転送経路として経路128cまたは経路128dを選択するように、ドライブ132の転送先アドレスとして、0x08または0x0Cを指定する。その後、図6Aのステップ360に進む。
 商が4のステップ318では、該ドライブ132がデータ転送経路として経路128dまたは経路128cまたは経路128bまたは経路128aのいずれかを選択するように、ドライブ132の転送先アドレスとして、0x0Cまたは0x08または0x04または0x00を指定する。その後、図6Aのステップ360に進む。
 ステップ360は図1のステップ260と同様の処理であり、ストレージ制御プログラム114がドライブ132へ要求コマンドを発行する。
 次にステップ370に進む。図6Bはステップ370で行われる経路-スイッチ数テーブルの更新処理の一例を示すフローチャートである。
 図6Bにおいて、ステップ372では、ストレージ制御プログラム114が、経路128の数ないしはスイッチ130の数に変化があるか否かを判定し、もし変化があればステップ374に進み、変化がなければ、再びステップ300に進む。
 ステップ374では、ストレージ制御プログラム114が変化のあった経路128の数または、変化のあったスイッチ130に対応する経路-スイッチテーブル118のエントリを更新する。
 次に、ストレージ制御プログラム114は、再びステップ395に戻って上記処理を繰り返す。なお、ステップ370の処理には、前記実施例1に示したステップ280、282の処理を含むものとする。
 本実施例2によれば、ストレージ制御プログラム114は、ストレージ制御コントローラ106に接続されたスイッチ130の段数とドライブ132の接続位置に応じデータ転送を行う経路128a~128dを選択する。これにより、複数のスイッチ130間でデータ転送の経路128を分離して、各スイッチ130a~130dに接続されたドライブ132a~132h間の性能差を解消することができる。
 図8~図10に基づいて、本発明の実施例3を説明する。本実施例3は、前記実施例2の変形例に該当する。図8は、前記実施例2の図6Aに示したステップ300で行われる転送経路の決定処理の一例を示すフローチャートである。
 本実施例3において、図8のステップ300以外の処理は、前記実施例2と同様である。本実施例3ではステップ300の内容が実施例2と異なるため、図8~図10に実施例3におけるステップ300で行われる処理の一例を示す。
 図8のステップ320では、ストレージ制御プログラム114が、経路-スイッチテーブル118から、有効な経路数1181と有効なスイッチ数1182の商を計算する。商が1の場合はステップ330に進み、商が2の場合は、ステップ340に進み、商が4の場合は、ステップ350に進む。
 図9はステップ330で行われる処理の一例を示すフローチャートである。ステップ332では、ストレージ制御プログラム114が、ドライブ位置情報テーブル110を参照し、1段目と2段目と3段目と4段目のスイッチ130のドライブ132の数の比率を計算する。そして、ストレージ制御プログラム114は、算出した比率に応じて分岐を行う。
 1段目と2段目と3段目と4段目のスイッチ130のドライブ132の数の比率が4:0:0:0の場合は、ステップ334に進み、ストレージ制御プログラム114は、1段目のスイッチ130aに接続されたドライブ132の転送先アドレスを0x0~0xCのいずれかに均等に指定する。これにより、スイッチ130aのドライブ132は経路128a~128dのいずれかでデータの転送を実行する。
 1段目と2段目と3段目と4段目のスイッチ130のドライブ132の数の比率が3:1:0:0の場合は、ステップ336に進み、ストレージ制御プログラム114は、1段目のスイッチ130aに接続されたドライブ132の転送先アドレスを0x00~0x08のいずれかに均等に指定し、2段目のスイッチ130bに接続されたドライブ132の転送先アドレスを0x0Cに指定する。これにより、スイッチ130aのドライブ132は経路128a~128cのいずれかでデータの転送を実行し、スイッチ130bのドライブ132は経路128dでデータの転送を実行する。
 1段目と2段目と3段目と4段目のスイッチ130のドライブ132の数の比率が2:1:1:0の場合は、ステップ338に進む。ストレージ制御プログラム114は、まず、1段目のスイッチ130aに接続されたドライブ132の転送先アドレスを0x00か0x04のいずれかに均等に指定し、2段目のスイッチ130bに接続されたドライブ132の転送先アドレスを0x08に指定し、3段目のスイッチ130cに接続されたドライブ132の転送先アドレスを0x0Cに指定する。
 これにより、スイッチ130aのドライブ132は経路128aまたは経路128bのいずれかでデータの転送を実行し、スイッチ130bのドライブ132は経路128cでデータの転送を実行し、スイッチ130cのドライブ132は経路128dでデータの転送を実行する。
 1段目と2段目と3段目と4段目のスイッチ130のドライブ132の数の比率が1:1:1:1の場合は、ステップ339に進む。ストレージ制御プログラム114は、まず、1段目のスイッチ130aに接続されたドライブ132の転送先アドレスを0x00に指定し、2段目のスイッチ130bに接続されたドライブ132の転送先アドレスを0x04に指定し、3段目のスイッチ130cに接続されたドライブ132の転送先アドレスを0x08に指定し、4段目のスイッチ130dに接続されたドライブ132の転送先アドレスを0x0Cに指定する。
 これにより、スイッチ130aのドライブ132は経路128aでデータの転送を実行し、スイッチ130bのドライブ132は経路128bでデータの転送を実行し、スイッチ130cのドライブ132は経路128cでデータの転送を実行し、スイッチ130dのドライブ132は経路128dでデータの転送を実行する。
 上記処理の後には、ステップ330の一連の処理を終了し、その後、ステップ300の一連の処理を終了する。
 図10はステップ340で行われる処理の一例を示すフローチャートである。ステップ340では、商が2の場合であり、本実施例3ではスイッチ130が2段の場合となる。
 ステップ342では、ストレージ制御プログラム114が、ドライブ位置情報テーブル110を参照し、1段目と2段目のスイッチ130a、130bに接続されたドライブ132の数の比率を計算する。
 1段目と2段目のスイッチ130のドライブ132の数の比率が4:0の場合は、ステップ344に進み、ストレージ制御プログラム114が1段目のスイッチ130aに接続されたドライブ132の転送先アドレスを0x0~0xCのいずれかに指定する。
 一方、1段目と2段目のスイッチ130のドライブ132の数の比率が3:1の場合は、ステップ346に進み、ストレージ制御プログラム114が1段目のスイッチ130aに接続されたドライブ132の転送先アドレスを0x00~0x08のいずれかに指定し、2段目のスイッチ130bに接続されたドライブ132の転送先アドレスを0x0Cに指定する。
 これにより、スイッチ130aのドライブ132は経路128a~128cのいずれかでデータの転送を実行し、スイッチ130bのドライブ132は経路128dでデータの転送を実行する。
 さらに、1段目と2段目のスイッチ130のドライブ132の数の比率が1:1の場合は、ステップ348に進み、ストレージ制御プログラム114は、1段目のスイッチ130aに接続されたドライブ132の転送先アドレスを0x00か0x04のいずれかに指定し、2段目のスイッチ130bに接続されたドライブ132の転送先アドレスを0x08か0x0Cのいずれかに指定する。
 これにより、スイッチ130aのドライブ132は経路128aまたは128bのいずれかでデータの転送を実行し、スイッチ130bのドライブ132は経路128cまたは128dでデータの転送を実行する。
 その後、ストレージ制御プログラム114は、ステップ340の一連の処理を終了し、その後、ステップ300の一連の処理を終了する。
 図8のステップ350では、スイッチ130の段数が1段であるので、ストレージ制御プログラム114は、スイッチ130aのドライブ132がデータ転送経路として経路128a~128dを選択するように、データ転送先アドレスとして0x00~0x0Cを指定する。
 その後、ストレージ制御プログラム114は、ステップ300の一連の処理を終了する。
 本実施例3によれば、ストレージ制御プログラム114は、ストレージ制御コントローラ106に接続されたスイッチ130の段数とドライブ132の数の比率に応じてデータ転送を行う経路128a~128dを選択する。これにより、複数のスイッチ130間でデータ転送の経路128を分離して、各スイッチ130a~130dに接続されたドライブ132a~132h間の性能差を解消することができる。
 図11A~図13に基づいて、本発明の実施例4を説明する。本実施例4は、前記実施例2の変形例に該当する。図11Aは、本実施例4のストレージシステム100の構成の一例を示すブロック図である。
 本実施例4の図11Aでは、前記実施例2に示した図5Aのストレージ制御コントローラ106に経路異常検出回路127を追加し、主記憶109に経路128が正常か異常かを記録する経路状態テーブル117を追加した。
 また、経路異常検出回路127は経路状態通知線119を介して、正常な経路128をCPU125に通知する。また、経路異常検出回路127は異常などで使用できなくなった経路128を検出し、経路状態通知線119を介してCPU125に通知する。なお、その他の構成は前記実施例2と同様である。
 図11Bは経路状態テーブル117の一例を示す図である。経路状態テーブル117は、経路128の識別子を格納する経路数1171と、経路128の状態を格納する状態1172とを一つのエントリに含む。
 図12Aは、実施例4のストレージシステム100で行われる処理の一例を示すフローチャートである。ストレージ制御コントローラ106が起動すると、図12Aのステップ490において、ストレージ制御プログラム114は、ドライブ位置情報テーブル110と経路状態テーブル117を生成する初期化を実施する。
 ステップ490において、ストレージ制御プログラム114は、各ドライブ132がどのスイッチ130a~130dに接続されているかを検出し、ドライブ位置情報テーブル110に、各ドライブ132に対応した各スイッチ130の識別子を記録する。
 更に、ステップ390においては、ストレージ制御プログラム114が、有効な経路128の数と、有効なスイッチ130の数を、経路-スイッチテーブル118に記録する。また、経路異常検出回路127が、各経路128a~128dが正常か異常かを検出し、検出結果を、経路状態テーブル117に格納する。
 ステップ495において、ストレージ制御プログラム114は、ホスト計算機101からアクセス要求を受け付ける。ストレージ制御プログラム114は、アクセス要求を解析してアクセス対象のドライブ132を特定する。
 次にステップ400の転送経路の決定処理に進む。図13は、ステップ400で行われる転送経路の決定処理の一例を示すフローチャートである。
 ステップ401では、ストレージ制御プログラム114が、経路状態テーブル117及び経路-スイッチテーブル118から、正常な経路128の数と有効なスイッチ130の数の商を計算する。商が1の場合はステップ402に進み、商が2の場合は、ステップ404に進み、商が4の場合は、ステップ418に進む。
 ステップ402では、ストレージ制御プログラム114が、データ転送を行うドライブ132の接続位置(段数)を、ドライブ位置情報テーブル110を参照することで特定する。その後、ストレージ制御プログラム114が、ドライブ132が接続されているスイッチ130の段数に応じて経路128a~128dのいずれかに決定する。
 すなわち、ストレージ制御プログラム114は、ドライブ132の接続位置がスイッチ130d(4段目)であれば、ステップ405へ進む。ストレージ制御プログラム114は、ドライブ132の接続位置がスイッチ130c(3段目)であれば、ステップ407へ進む。ストレージ制御プログラム114は、ドライブ132の接続位置がスイッチ130b(2段目)であれば、ステップ409へ進む。ストレージ制御プログラム114は、ドライブ132の接続位置がスイッチ130a(1段目)であれば、ステップ411へ進む。
 ステップ405または407または409または411において、ストレージ制御プログラム114は、経路状態テーブル117を参照してドライブ132の接続位置に対応する経路128が正常(有効)であるか否かを判定する。
 なお、本実施例4ではドライブ132の接続位置が4段目であれば経路128dを選択し、3段目であれば経路128cを選択し、2段目であれば経路128bを選択し、1段目であれば経路128aを選択する。
 ストレージ制御プログラム114は、選択された経路128が正常であれば、当該経路128に対応するステップ406、408、410、412に進んで転送先アドレスを指定する。
 一方、ストレージ制御プログラム114は、選択された経路128に異常があれば、他の経路のうち正常な経路128を選択し、当該経路128に対応する転送先アドレスを指定する。
 例えば、ステップ405において、経路128dが異常である場合、ストレージ制御プログラム114は、ステップ407に進み、経路128cの状態を判定する。経路128cの状態が正常であれば、ステップ408に進み、ストレージ制御プログラム114は、4段目のスイッチ130dに接続されたドライブ132のデータ転送を経路128cで実施する。その後、図12Aのステップ460に進む。
 商が2となるステップ404では、ストレージ制御プログラム114がデータ転送を行うドライブ132の接続位置を、ドライブ位置情報テーブル110を参照することで特定する。
 その後、ストレージ制御プログラム114は、ドライブ132が接続されているスイッチ130の段数に応じて経路128を決定する。ストレージ制御プログラム114は、ドライブ132がスイッチ130b(2段目)に接続されていればステップ413へ進み、ドライブ132がスイッチ130a(1段目)に接続されていればステップ415へ進む。
 ストレージ制御プログラム114は、ステップ413または415において、経路状態テーブル117を参照することで、該経路128が異常でも、他の経路128を迂回してデータ転送ができるように、転送先アドレスを指定する。
 例えば、ステップ413において、経路128dが異常である場合、ストレージ制御プログラム114は、ステップ415に進み、経路128bないしは経路128aの状態を判定する。そして、経路128bないしは経路128aの状態が正常であれば、ストレージ制御プログラム114は、ステップ416に進む。
 そして、ストレージ制御プログラム114は、2段目のスイッチ130bに接続されたドライブ132のデータ転送の経路128bないしは経路128aに対応する転送先アドレスを指定する。その後、ステップ460に進む。
 商が4となるステップ418では、ストレージ制御プログラム114は、該ドライブ132がデータ転送経路として経路128dまたは経路128cまたは経路128bまたは経路128aを選択するように、ドライブ132の転送先アドレスとして、0x0Cまたは0x08または0x04または0x00を指定する。その際、経路状態テーブル117を参照することで、正常な経路を用いてデータ転送ができるように、転送先アドレスを指定する。その後、ステップ460に進む。
 ステップ460は図1のステップ260と同様の処理であり、ストレージ制御プログラム114がドライブ132へ要求コマンドを発行する。
 次にステップ450に進む。図12Bはステップ450で行われる処理の一例を示すフローチャートである。
 図12Bにおいて、ステップ452では、ストレージ制御プログラム114が、経路128ないしはスイッチ130の数に変化があるか否かを判定し、もし変化があればステップ454に進み、変化がなければ、ステップ456に進む。
 ステップ454では、ストレージ制御プログラム114が変化のあった経路128の数または、変化のあったスイッチ130の数を経路-スイッチテーブル118の該当エントリで更新し、ステップ456に進む。
 ステップ456では、経路異常検出回路127が経路128の状態に変化があるか否かを判定し、もし変化があればステップ458に進み、変化がなければ、ステップ400に進む。ステップ458では、変化のあった経路128に対応する経路状態テーブル117の該当エントリを更新し、図12Aのステップ405に戻って上記処理を繰り返す。なお、ステップ450の処理には、前記実施例1に示したステップ280、282の処理を含むものとする。
 本実施例4によれば、ストレージ制御プログラム114は、ストレージ制御コントローラ106に接続されたスイッチ130の段数とドライブ132の数に応じた経路128に異常があれば、正常な経路128に切り替えてデータ転送を行う。これにより、経路128に異常が発生した場合でも、複数のスイッチ130間でデータ転送の経路128を分離して、各スイッチ130a~130dに接続されたドライブ132a~132h間の性能差を解消することができる。
 図14A~図16に基づいて、本発明の実施例5を説明する。本実施例5は、実施例1の変形例に該当する。図14Aは、実施例2のストレージシステム100の構成の一例を示すブロック図である。
 本実施例5の図14Aは、前記実施例1の図1に示したストレージシステム100に、管理端末104とストレージシステム管理プログラム108が追加されており、更にストレージ制御コントローラ106の主記憶109に、経路選択テーブル150が追加されている。なお、その他の構成は前記実施例1と同様である。
 管理端末104は、図示しないCPUと、入出力装置と、メモリ及びインタフェースなどのハードウェア資源を含む計算機である。管理端末104のCPUが、メモリにロードしたストレージシステム管理プログラム108を実行することにより、ストレージシステム100を制御(例えば、構成情報の取得や変更などの操作指示)することが可能である。
 経路選択テーブル150はスイッチ130に接続されているドライブ132が転送する経路を指定するためのテーブルである。管理端末104は、スイッチ130毎にドライブ132のデータを転送する経路128a~128dの識別子を経路選択テーブル150に登録することができる。
 図14Bは、経路選択テーブル150の一例を示す図である。経路選択テーブル150は、スイッチ130の識別子を格納するSwitch1501と、当該スイッチ130に割り当てられた経路128の識別子を格納する経路1502と、を一つのエントリに含む。
 図15は、実施例5のストレージシステム100で行われる処理の一例を示すフローチャートである。ストレージ制御コントローラ106が起動すると、図15のステップ590において、ストレージ制御プログラム114は、各ドライブ132がどのスイッチ130に接続されているか接続位置を検出し、ドライブ位置情報テーブル110に、各ドライブ132に対応した各スイッチ130の識別子を記録する。
 ステップ580では、ストレージ制御プログラム114が管理端末104から経路選択情報を受け付けて経路選択テーブル150を更新する。ストレージ制御プログラム114は、経路選択テーブル150に、ドライブ132が使用する経路128をスイッチ130毎に登録する。
 例えば、図14Bの例では、1段目のスイッチ130aに経路a(経路128a)が設定され、2段目のスイッチ130bに経路b(経路128b)が設定され、3段目のスイッチ130cに経路c(経路128c)が設定され、4段目のスイッチ130dに経路d(経路128d)が設定される。
 ステップ585において、ストレージ制御プログラム114は、ホスト計算機101からアクセス要求を受け付ける。ストレージ制御プログラム114は、アクセス要求を解析してアクセス対象のドライブ132を特定する。
 次にステップ500に進む。図16はステップ500で行われる転送経路の決定処理の一例を示すフローチャートである。
 図16のステップ502では、ストレージ制御プログラム114が、データ転送の対象となるドライブ132が接続されているスイッチ130を、ドライブ位置情報テーブル110を参照することにより特定し、ステップ504に進む。
 ステップ504では、ストレージ制御プログラム114が、経路選択テーブル150のエントリを参照して、該ドライブ132がデータ転送に用いる経路128を特定する。その後、ストレージ制御プログラム114は、上記特定した経路128a~128dに応じて、ステップ506~510のいずれかに進み、データ転送に用いる経路128に対応する転送先アドレスを指定する。その後、図15のステップ560に進む。
 ステップ560は図1のステップ260と同様の処理であり、ストレージ制御プログラム114がドライブ132へ要求コマンドを発行する。なお、要求コマンドを発行した後には、図示はしないが前記実施例1に示したステップ280、282の処理を実施するものとする。その後、上記ステップ580に戻って上記処理を繰り返す。
 以上で説明した通り、本実施例5によれば、経路選択テーブル150は、管理端末104により、ストレージ制御コントローラ106が処理を実行中でも更新することが可能である。
 図17A~図19に基づいて、本発明の実施例6を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に該当する。
 図17Aは、実施例6のストレージシステム100の構成の一例を示すブロック図である。本実施例6の図17Aでは、前記実施例1に示した図1のストレージ制御コントローラ106の主記憶109に、ドライブ132が接続された各スイッチ130への負荷を監視する負荷情報テーブル120が追加されている。本実施例6では、図18で示すように、負荷情報テーブル120は、ドライブ132が属する各スイッチ130への発行中コマンド数の合計を各段のスイッチ130毎に記録する。その他の構成については、前記実施例1と同様である。
 図17Bは負荷情報テーブル120の一例を示す図である。負荷情報テーブル120はスイッチ130の位置または識別子を格納するSwitch1201と、スイッチ130に接続されたドライブ132に発行中のコマンドの数を格納する発行中コマンド数1202とを一つのエントリに含む。
 図18は、実施例6のストレージシステム100で行われる処理の一例を示すフローチャートである。ストレージ制御コントローラ106が起動すると、図18のステップ690において、ストレージ制御プログラム114は、各ドライブ132がどのスイッチ130に接続されているか接続位置を検出し、ドライブ位置情報テーブル110に、各ドライブ132に対応した各スイッチ130の識別子を記録する。更に、ステップ690においては、ストレージ制御プログラム114が負荷情報テーブル120の全エントリを0で初期化する。
 ステップ695において、ストレージ制御プログラム114は、ホスト計算機101からアクセス要求を受け付ける。ストレージ制御プログラム114は、アクセス要求を解析してアクセス対象のドライブ132を特定する。
 ステップ610は、前記実施例1の図2に示したステップ210と同様の転送経路の決定処理であり、決定された経路128に応じた転送先アドレスが指定される。
 ステップ660は、前記実施例1の図2に示したステップ260と同様の処理で、ストレージ制御プログラム114がドライブ132へ要求コマンドを発行する。
 次にステップ600に進む。図19は、図18のステップ600で行われる処理の一例を示すフローチャートである。
 図19において、ステップ602では、ストレージ制御プログラム114が要求コマンドを発行したドライブ132が接続されたスイッチ130に対応する負荷情報テーブル120のエントリで発行中コマンド数1202をインクリメントする。負荷情報テーブル120の該当エントリは、要求コマンドが発行されたため発行中コマンド数1202が加算される。本実施例6では発行中コマンド数1202の値が、スイッチ130の負荷の大きさを示す。
 ステップ604では、ストレージ制御プログラム114が応答コマンドキュー122を参照し、当該スイッチ130に接続されたドライブ132からの応答があればステップ606に進み、応答がなければ図18のステップ622に進む。
 ステップ606では、ドライブ132がデータ転送領域116へのデータ転送を完了したら、応答コマンドキュー122に応答コマンドを格納し、ストレージ制御プログラム114が応答コマンドを読み込むことで、ステップ660で発行した要求コマンドの処理を完了する。
 ステップ608では、ストレージ制御プログラム114が、ステップ606で処理が完了した要求コマンドに対応するドライブ132に対応する負荷情報テーブル120のエントリの発行中コマンド数1202をデクリメントする。この後、図18のステップ622へ進む。
 図18のステップ622では、ストレージ制御プログラム114が、負荷情報テーブル120を参照し、2段目以降のスイッチ130b~130dに接続されているドライブ132c~132hへの発行中コマンド数の合計値を算出し、合計値が0であるならステップ624に進む。
 ステップ624では、ストレージ制御プログラム114が、1段目のスイッチ130aに接続されたドライブ132a、132bの転送先アドレスを0x00~0x0Cのいずれかに変更し、ステップ660に戻って上記処理を繰り返す。
 ステップ622において、2段目以降のスイッチ130b~130dに接続されているドライブ132c~132hへの発行中コマンド数の合計値が0以外であれば、ストレージ制御プログラム114は、再びステップ660に戻って上記処理を繰り返す。
 本実施例6によれば、ストレージ制御プログラム114は、ストレージ制御コントローラ106に接続されたスイッチ130の負荷を監視して、負荷に応じて経路128を変更することができる。
 <まとめ>
 なお、本発明は上記した各実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
 また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。

Claims (14)

  1.  複数の記憶デバイスと、
     プロセッサとメモリを含んで前記記憶デバイスを制御するコントローラと、
     前記記憶デバイスと前記コントローラとを接続するデータ転送経路と、を有するストレージシステムであって、
     前記記憶デバイスは、複数のグループに分かれ、
     前記コントローラは、
     前記複数の独立したデータ転送経路を介して接続された前記複数の記憶デバイスのうち、前記複数のグループそれぞれについて所属する記憶デバイスを特定し、アクセス要求を受信してアクセス対象の記憶デバイスを特定し、前記特定した記憶デバイスのグループ毎に異なる前記データ転送経路を前記記憶デバイスに指定し、前記記憶デバイスは前記指定されたデータ転送経路に従ってコネクションレス型のプロトコルでデータ転送を行うことを特徴とするストレージシステム。
  2.  前記請求項1に記載のストレージシステムであって、
     前記コントローラは、
     前記複数のグループで帯域が均等となるデータ転送経路を指定することを特徴とするストレージシステム。
  3.  前記請求項1に記載のストレージシステムであって、
     前記コントローラは、
     前記複数のデータ転送経路に対応する前記メモリ上の複数の転送先アドレスを予め設定し、前記データ転送経路に対応する前記転送先アドレスを前記記憶デバイスに指定することを特徴とするストレージシステム。
  4.  前記請求項3に記載のストレージシステムであって、
     前記記憶デバイスは、
     前記コントローラへ転送するデータをパケットに分割し、前記パケットには前記コントローラで指定されたデータ転送先アドレスが付与されていることを特徴とするストレージシステム。
  5.  前記請求項1に記載のストレージシステムであって、
     前記グループは、第1のグループと第2のグループを含み、前記第2のグループは、前記第1のグループにカスケード接続されることを特徴とするストレージシステム。
  6.  前記請求項1に記載のストレージシステムであって、
     前記コントローラは、
     第1のグループと第2のグループを含む前記複数のグループのうち、前記記憶デバイスが所属するグループの識別子を格納するドライブ位置情報を有し、前記ドライブ位置情報に基づいてアクセス対象の記憶デバイスとグループの識別子を特定し、前記グループの識別子に対応付けられた前記データ転送経路を前記記憶デバイスに指定することを特徴とするストレージシステム。
  7.  前記請求項6に記載のストレージシステムであって、
     前記第2のグループは、前記第1のグループにカスケード接続され、
     前記コントローラは、
     前記カスケード接続された第1のグループと前記コントローラの間のデータ転送経路の数と、グループの数を格納する経路スイッチ情報を有し、前記ドライブ位置情報に基づいてアクセス対象の記憶デバイスとグループの識別子を特定し、前記経路スイッチ情報に基づいて前記データ転送経路を選択することを特徴とするストレージシステム。
  8.  前記請求項6に記載のストレージシステムであって、
     前記コントローラは、
     前記データ転送経路の異常を検出する異常検出部を有し、前記ドライブ位置情報に基づいてアクセス対象の記憶デバイスとグループの識別子を特定し、前記異常検出部の検出結果に基づいて前記データ転送経路を選択することを特徴とするストレージシステム。
  9.  前記請求項6に記載のストレージシステムであって、
     前記コントローラは、
     前記グループに所属する前記記憶デバイスが使用する前記データ転送経路を指定する経路選択情報を有し、前記ドライブ位置情報に基づいてアクセス対象の記憶デバイスとグループの識別子を特定し、前記経路選択情報の検出結果に基づいて前記データ転送経路を選択し、前記ストレージシステムに接続された管理端末からの指示に応じて前記経路選択情報を更新することを特徴とするストレージシステム。
  10.  前記請求項6に記載のストレージシステムであって、
     前記コントローラは、
     前記記憶デバイスが所属する前記グループへの負荷を格納する負荷情報を有し、前記ドライブ位置情報に基づいてアクセス対象の記憶デバイスとグループの識別子を特定し、前記負荷情報に基づいて前記データ転送経路を選択することを特徴とするストレージシステム。
  11.  前記請求項7に記載のストレージシステムであって、
     前記コントローラは、
     前記ドライブ位置情報に基づいてアクセス対象の記憶デバイスとグループの識別子を特定し、前記経路スイッチ情報に格納された前記データ転送経路の数と前記グループの数の比率に応じて前記データ転送経路を選択することを特徴とするストレージシステム。
  12.  前記請求項6に記載のストレージシステムであって、
     前記第1のグループは、
     前記コントローラに接続されて前記コントローラとの通信を行う第1のスイッチに接続された前記記憶デバイスからなり、
     前記第2のグループは、
     前記第1のスイッチに接続されて前記コントローラとの通信を行う第2のスイッチに接続された前記記憶デバイスからなり、
     前記複数のグループは、前記第1のグループと第2のグループを含み、
     前記ドライブ位置情報は、前記記憶デバイスとスイッチの関係を保持し、
     前記コントローラは、
     当該ストレージシステムに接続されたホスト計算機からのアクセス要求を受け付けて、アクセス対象の記憶デバイスを特定し、前記第1のグループと第2のグループで異なる前記データ転送経路を前記記憶デバイスに指定することを特徴とするストレージシステム。
  13.  プロセッサとメモリを含むコントローラが記憶デバイスを制御するストレージの制御方法であって、
     前記コントローラが、複数の独立したデータ転送経路を介して接続された複数の記憶デバイスを複数のグループに分け、前記複数のグループそれぞれについて所属する記憶デバイスを特定する第1のステップと、
     前記コントローラが、アクセス要求を受信してアクセス対象の記憶デバイスを特定する第2のステップと、
     前記コントローラが、前記特定した記憶デバイスのグループ毎に異なる前記データ転送経路を前記記憶デバイスに指定する第3のステップと、
     前記記憶デバイスが前記指定されたデータ転送経路に従ってコネクションレス型のプロトコルでデータ転送を行う第4のステップと、
    を含むことを特徴とするストレージの制御方法。
  14.  前記請求項13に記載のストレージの制御方法であって、
     前記第3のステップは、
     前記複数のグループで帯域が均等となるデータ転送経路を指定することを特徴とするストレージの制御方法。
PCT/JP2017/007282 2017-02-27 2017-02-27 ストレージシステム及びストレージの制御方法 WO2018154743A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2017/007282 WO2018154743A1 (ja) 2017-02-27 2017-02-27 ストレージシステム及びストレージの制御方法
US16/329,570 US10732872B2 (en) 2017-02-27 2017-02-27 Storage system and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/007282 WO2018154743A1 (ja) 2017-02-27 2017-02-27 ストレージシステム及びストレージの制御方法

Publications (1)

Publication Number Publication Date
WO2018154743A1 true WO2018154743A1 (ja) 2018-08-30

Family

ID=63253643

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/007282 WO2018154743A1 (ja) 2017-02-27 2017-02-27 ストレージシステム及びストレージの制御方法

Country Status (2)

Country Link
US (1) US10732872B2 (ja)
WO (1) WO2018154743A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003357B2 (en) * 2019-09-13 2021-05-11 EMC IP Holding Company LLC Managing single path communication between a host and a storage system
KR20210046348A (ko) * 2019-10-18 2021-04-28 삼성전자주식회사 복수의 프로세서들에 유연하게 메모리를 할당하기 위한 메모리 시스템 및 그것의 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009140179A (ja) * 2007-12-05 2009-06-25 Fujitsu Ltd ストレージシステムおよびルートスイッチ
JP2009258841A (ja) * 2008-04-14 2009-11-05 Hitachi Ltd ストレージシステム
WO2015045030A1 (ja) * 2013-09-25 2015-04-02 株式会社日立製作所 ドライブの増設可能な情報システムおよび該情報システムのバス番号割り当て方法
WO2015136619A1 (ja) * 2014-03-11 2015-09-17 株式会社日立製作所 ストレージ装置
JP2015532985A (ja) * 2012-09-06 2015-11-16 ピーアイ−コーラル、インク. 大規模なデータ記憶および受け渡しシステム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195354B1 (en) * 1997-07-16 2001-02-27 Nortel Networks Limited Route selection for path balancing in connection-oriented packet switching networks
JP4775846B2 (ja) 2006-03-20 2011-09-21 株式会社日立製作所 物理リンクの割当てを制御するコンピュータシステム及び方法
US20080059687A1 (en) * 2006-08-31 2008-03-06 Peter Mayer System and method of connecting a processing unit with a memory unit
JP5179031B2 (ja) * 2006-09-13 2013-04-10 株式会社日立製作所 空きポートを有効に活用したストレージシステム
US8250256B2 (en) * 2007-07-24 2012-08-21 International Business Machines Corporation Methods, systems and computer products for user-managed multi-path performance in balanced or unbalanced fabric configurations
US8880715B2 (en) * 2008-10-23 2014-11-04 Canon Kabushiki Kaisha Remote control of a host computer
WO2011081691A2 (en) * 2009-12-14 2011-07-07 Rambus Inc. Expandable asymmetric-channel memory system
US11474704B2 (en) * 2012-05-18 2022-10-18 Atto Technology, Inc. Target path selection for storage controllers
US8880935B2 (en) * 2012-06-12 2014-11-04 International Business Machines Corporation Redundancy and load balancing in remote direct memory access communications
US10067794B1 (en) * 2013-05-03 2018-09-04 EMC IP Holding Company LLC Computer-executable method, system, and computer program product for balanced port provisioning using filtering in a data storage system
CN106909310B (zh) * 2015-12-22 2020-06-05 伊姆西Ip控股有限责任公司 用于存储系统的路径选择的方法和装置
KR102353782B1 (ko) * 2016-08-31 2022-01-19 삼성전자주식회사 NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법
US10564857B2 (en) * 2017-11-13 2020-02-18 Western Digital Technologies, Inc. System and method for QoS over NVMe virtualization platform using adaptive command fetching

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009140179A (ja) * 2007-12-05 2009-06-25 Fujitsu Ltd ストレージシステムおよびルートスイッチ
JP2009258841A (ja) * 2008-04-14 2009-11-05 Hitachi Ltd ストレージシステム
JP2015532985A (ja) * 2012-09-06 2015-11-16 ピーアイ−コーラル、インク. 大規模なデータ記憶および受け渡しシステム
WO2015045030A1 (ja) * 2013-09-25 2015-04-02 株式会社日立製作所 ドライブの増設可能な情報システムおよび該情報システムのバス番号割り当て方法
WO2015136619A1 (ja) * 2014-03-11 2015-09-17 株式会社日立製作所 ストレージ装置

Also Published As

Publication number Publication date
US20190258599A1 (en) 2019-08-22
US10732872B2 (en) 2020-08-04

Similar Documents

Publication Publication Date Title
US10740034B2 (en) Front-end quality of service differentiation in data systems
US9742671B2 (en) Switching method
EP1807753B1 (en) Method and system for transferring data directly between storage devices in a storage area network
US8412863B2 (en) Storage apparatus and virtual port migration method for storage apparatus
US8032684B2 (en) Programmable bridge header structures
US8312312B2 (en) Data storage system using multiple communication protocols
KR20200078382A (ko) 개시자 모드를 갖는 솔리드-스테이트 드라이브
JP2019175415A (ja) システム資源を割り当てる方法及びシステム
US10466935B2 (en) Methods for sharing NVM SSD across a cluster group and devices thereof
CN108701004A (zh) 一种数据处理的系统、方法及对应装置
US9680931B1 (en) Message passing for low latency storage networks
JP2020113137A (ja) ストレージ装置
US10599600B2 (en) Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments
US9509627B2 (en) Resource over-subscription
US20090112877A1 (en) System and Method for Communicating Data in a Storage Network
US8856479B2 (en) Implementing storage adapter performance optimization with hardware operations completion coalescence
US20220060382A1 (en) Method and system for facilitating high availability in a multi-fabric system
WO2018154743A1 (ja) ストレージシステム及びストレージの制御方法
JP2009015843A (ja) ロング・サイド入出力コマンド処理
CN107533526B (zh) 经由具有完全连接网格拓扑的pci express结构向存储写入数据
JP6737981B2 (ja) リモート・ダイレクト・メモリ・アクセス操作を実行するデータ転送方法、システム、およびプログラム
US9921753B2 (en) Data replication across host systems via storage controller
WO2022267909A1 (zh) 一种数据读写方法以及相关装置
WO2013001578A1 (ja) 入出力制御装置及び入出力制御装置のフレーム処理方法
US9990284B2 (en) Storage control device

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP