WO2016132428A1 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
WO2016132428A1
WO2016132428A1 PCT/JP2015/054119 JP2015054119W WO2016132428A1 WO 2016132428 A1 WO2016132428 A1 WO 2016132428A1 JP 2015054119 W JP2015054119 W JP 2015054119W WO 2016132428 A1 WO2016132428 A1 WO 2016132428A1
Authority
WO
WIPO (PCT)
Prior art keywords
queue
priority
command
stored
host
Prior art date
Application number
PCT/JP2015/054119
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/JP2015/054119 priority Critical patent/WO2016132428A1/ja
Publication of WO2016132428A1 publication Critical patent/WO2016132428A1/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
    • 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
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor

Definitions

  • the present invention relates to a storage apparatus.
  • Patent Document 1 it is possible to prioritize requests, such as target waiting time, but the requests are stored in the device queue regardless of the priority of the requests. . Therefore, for example, when a high priority request arrives from the host after many low priority requests are stored in the queue, a newly arrived high priority (target waiting time (Short) execution of requests may be hindered.
  • targets waiting time target waiting time
  • a storage apparatus includes a processor, a storage controller having a memory, and a storage device connected to the storage controller.
  • the storage controller has a plurality of queues for storing commands received from the host, and a priority and a target queue depth are set for each of the queues.
  • the processor receives a command with priority from the host, the processor determines whether the number of commands stored in the queue is greater than the target queue depth set in the queue. Based on the probability, it is determined whether the received command can be stored in the queue.
  • the information of the present invention may be described in terms of “aaa table” or the like, but the information may be expressed in a data structure other than a table or the like. Therefore, the “aaa table” or the like may be referred to as “aaa information” to indicate that it does not depend on the data structure.
  • information for identifying “bbb” of the present invention may be described by an expression such as “bbb name”. However, the information for identifying these is not limited to a name, but an identifier, an identification number, Any information can be used as long as it can identify “bbb” such as an address.
  • programs described below may be realized by dedicated hardware.
  • Various programs may be installed in each apparatus by a program distribution server or a computer-readable storage medium.
  • the storage medium for example, an IC card, an SD card, a DVD, or the like may be used.
  • FIG. 1 shows a configuration of a storage apparatus (storage system) 1 according to the first embodiment.
  • the storage device 1 includes a storage controller 10 and a plurality of drives 20 connected to the storage controller 10.
  • the drive 20 is a storage device for storing write data from a host device such as the host 2.
  • the drive 20 may be a storage device using a magnetic disk such as an HDD (Hard Disk Drive) as a recording medium, or a storage device adopting a nonvolatile semiconductor memory such as a flash memory as a storage medium. Good.
  • the drive 20 communicates with the disk controller 10 in accordance with the SAS (Serial Attached SCSI) standard.
  • One or more hosts 2 are connected to the storage controller 10.
  • a management host 5 is connected to the storage controller 10.
  • the storage controller 10 and the host 2 are connected via, for example, an FC-SAN 3 that is a network formed using Fiber Channel, or an IP-SAN 4 that is a network formed using Ethernet.
  • the storage controller 10 and the management host 5 are connected via a LAN (Local Area Network) 6 formed using Ethernet as an example.
  • the storage controller 10 includes at least a processor (CPU) 11, a host interface (denoted as “host I / F” in the figure) 12, a disk interface (denoted as “disk I / F” in the figure) 13, a memory 14, a management I / F 15 for use.
  • the processor 11, host IF 12, disk IF 13, memory 14 and management I / F 15 are interconnected via an internal switch (internal SW) 16.
  • internal SW internal switch
  • FIG. 1 a plurality of these components may be mounted in the storage controller 10 in order to ensure high performance and high availability. Further, instead of the internal SW 16, the components may be connected to each other via a common bus.
  • the disk I / F 13 has at least an interface controller and a transfer circuit.
  • the interface controller is a component for converting a protocol (SAS in one example) used by the drive 20 into a communication protocol (PCI-Express as an example) used in the storage controller 10.
  • the transfer circuit is used when the storage controller 10 transfers data (read, write) to the drive 20.
  • An interface controller that supports a plurality of protocols for example, SAS and SATA
  • a plurality of types of drives 20 SAS standard drive and SATA standard drive
  • the host I / F 12 has at least an interface controller and a transfer circuit, like the disk I / F 13.
  • the interface controller of the host I / F 12 converts the communication protocol (for example, fiber channel or Ethernet) used in the data transfer path between the host 2 and the storage controller 10 and the communication protocol used in the storage controller 10. Is to do.
  • the storage apparatus according to the present embodiment includes a host I / F 12 having an interface controller that supports Fiber Channel, and a host I / F 12 having an interface controller that supports Ethernet.
  • the former host I / F 12 is referred to as “host I / F 12-1”, and the latter host I / F is referred to as “host I / F 12-2”.
  • host I / F 12 When these two are pointed out without distinction, they are expressed as “host I / F 12”. However, it is not essential to have a plurality of types of host I / Fs 12, and the storage apparatus 1 may have a configuration having only one type of host I / F 12.
  • the memory 14 is used to store programs executed by the processor 11 and various management information of the storage device 1 used by the processor.
  • the memory 14 is also used for temporarily storing I / O target data for the drive 20.
  • the storage area in the memory 14 used for temporarily storing I / O target data for the drive 20 is referred to as “cache”.
  • the memory 14 is configured by a volatile storage medium such as DRAM or SRAM. However, as another embodiment, the memory 14 may be configured by using a nonvolatile memory.
  • the processor 11 performs various controls of the storage device 1 by reading and executing the program stored in the memory 14.
  • the memory 14 stores a command processing program and an I / O program.
  • the I / O program is a program for reading data from the drive 14 or the cache or writing data to the drive 14 or the cache in accordance with a command received from the host 2.
  • the command processing program is a program for performing processing such as storing a command received from the host 2 in a queue provided in the storage apparatus 1.
  • the CPU 11 executes the I / O program and the command processing program, so that the processing described here and the processing described below are performed. However, in this specification, the description is prevented from becoming redundant. Therefore, the contents of the process may be described with the program as the subject.
  • the storage apparatus 1 has one or more queues for storing commands.
  • the queue is a FIFO type storage area, and the command processing program stores the command received from the host 2 at the end of one of the queues.
  • the command processing program stores the command added with the current time in the queue. This is to calculate the command processing time later.
  • the I / O program reads the command located at the head of the queue and performs the processing (data read, write, etc.) specified by the command.
  • performing the process specified by the command read from the queue by the I / O program is expressed as “process the command”.
  • the queue may be provided on the memory 14 or may be provided in a storage area such as a buffer in the host I / F 12.
  • the number of queues provided in the storage apparatus 1 can be freely set by an administrator (user) of the storage apparatus 1.
  • each queue has a priority.
  • an integer value of 1 or more is used as information expressing priority.
  • a queue having priority 1 has the highest priority, and the larger the priority value, the lower the priority.
  • a queue having a priority X (X is an integer value of 1 or more) is expressed as “QCT-X”.
  • the priorities are 1, 2,. . . , N queues (QCT-1, QCT-2,..., QCT-n) are shown.
  • a plurality of queues may have the same priority, but in this embodiment, an example will be described in which the priorities set for each queue are all different.
  • the priority is specified, the queue is also uniquely specified at the same time, so the priority is also used as the queue identification number.
  • the I / O program preferentially processes commands (also referred to as high priority commands) stored in a high priority queue. Any method can be adopted as a method for preferentially processing a command having a high priority. For example, as long as a command is stored in QCT-1, the I / O program reads and processes the command from QCT-1, and waits in the queue after QCT-2 until there are no more commands stored in QCT-1. The stored command may not be processed. Alternatively, when the I / O program reads a command from the queue, the frequency of reading the command from the queue with a high priority may be set higher than the frequency of reading the command from the queue with a low priority.
  • FIG. 2 shows a configuration example (command 500) of a command received from the host 2 by the storage apparatus 1 according to the present embodiment.
  • the command 500 includes at least information of an operation code (Opcode) 501, a LUN 502, an LBA 503, a length (Length) 504, and a priority 505. These pieces of information are collectively referred to as “command parameters” or “parameters”.
  • Opcode 501 is information indicating the type of command (for example, read, write, etc.). Based on the contents of Opcode 501, the I / O program that has read the command from the queue can determine the processing to be performed by itself.
  • the LUN 502, LBA 503, and length (Length) 504 are information for specifying an area on the access target volume.
  • the priority 505 is information indicating the priority of the command, and an integer value of 1 or more is stored.
  • the host 2 determines the priority 505.
  • the command processing program receives the command 500 from the host 2, the command processing program refers to the priority 505 included in the command 500.
  • the value of the priority 505 is X (X is an integer value of 1 or more)
  • the command 500 is stored in QCT-X.
  • the queue in which the command 500 is stored, that is, QCT-X may be expressed as “queue corresponding to priority”.
  • the memory 14 of the storage controller 10 stores at least two types of management information, a queue control setting table T100 and a queue control management table T200. These tables may be stored in a buffer memory on the host I / F 12-1.
  • the queue control setting table T100 is a table for managing attributes (priorities, etc.) of each queue provided in the storage apparatus 1, and attribute information set for one queue is stored in one row. ing.
  • the queue control setting table T100 includes columns of queue priority T101, maximum queue depth T102, target queue depth T103, acceptance probability T104, I / O restriction method T105, average response time threshold T108, and data transfer amount threshold T109. In these columns, the user stores necessary information using the management host 5 or the like.
  • the queue priority T101 stores the priority set in the queue. As described above, an integer value of 1 or more is used for the priority.
  • the maximum queue depth T102 stores the maximum value of the number of commands that can be stored in the queue.
  • the target queue depth T103 is information used in an I / O receipt determination process described later. Details will be described later.
  • the acceptance probability T104 stores a value calculated by a calculation formula of (target queue depth T103 ⁇ maximum queue depth T102).
  • the maximum queue depth T102 and the target queue depth T103 are information set by the user, but the value stored in the acceptance probability T104 is calculated and stored by the storage apparatus. When the maximum queue depth T102 and the target queue depth T103 are set by the user, the storage apparatus 1 calculates an acceptance probability T104.
  • the maximum queue depth T102 and the target queue depth T103 can be arbitrarily set by the user, in principle, the maximum queue depth T102 of the queue with high priority has a value smaller than the maximum queue depth T102 of the queue with low priority. Is set. This is because when the maximum queue depth T102 is large (meaning that the queue length is long), the response time to the host 2 may be long.
  • the target queue depth T103 needs to be set to a value equal to or less than the maximum queue depth T102. It is desirable to set a value such that the higher the priority is, the higher the acceptance probability T104 is. Since the acceptance probability T104 is a value calculated by the above-described calculation formula, the acceptance probability T104 increases as the target queue depth T103 is closer to the maximum queue depth T102. Therefore, it is desirable that a value close to the maximum queue depth T102 is set as the target queue depth T103 of the queue with high priority. When the CPU 11 or the management host 5 calculates the acceptance probability T104 of each queue when the maximum queue depth T102 and the target queue depth T103 are set by the user, the acceptance probability T104 of the queue with a low priority is low.
  • an error message or the like may be output on the screen of the management host 5 to allow the user to redo the setting of the maximum queue depth T102 and the target queue depth T103. In this way, it is possible to make the acceptance probability T104 of a queue with a high priority higher than the acceptance probability T104 of a queue with a low priority.
  • the I / O restriction method T105 has three types of columns: I / O restriction method (FC) T105-1, I / O restriction method (FCoE) T105-2, and I / O restriction method (iSCSI) T105-3. included. These are information used in the I / O restriction process described later, and will be described together with the description of the I / O restriction process.
  • the average response time threshold value T108 and the data transfer amount threshold value T109 are information used in an I / O status determination process described later. These pieces of information will be described together with the description of the I / O status determination process.
  • the maximum queue depth T102 and the acceptance probability T104 may be set by the user.
  • the storage apparatus 1 calculates the target queue depth T103 using the maximum queue depth T102 and the acceptance probability T104.
  • the queue control management table T200 is a table that stores the status of each queue provided in the storage apparatus 1 and statistical information about commands read from each queue and processed. Information about the state of one queue is stored in one row.
  • the queue control management table T200 has columns of queue priority T201, I / O restriction flag T202, queue length T203, average response time T204, data transfer amount T205, and access tendency T206.
  • the queue priority T201 stores the priority set for the queue. As described above, the queue priority T201 is also a queue identification number.
  • the I / O restriction flag T202 stores information indicating whether storage of commands in the queue is restricted. When N is stored in the I / O restriction flag T202, it indicates that the storage of commands in the queue is not restricted. On the other hand, when Y is stored in the I / O restriction flag T202, it means that the storage of commands in the queue is restricted.
  • the number of commands 500 currently stored in the queue is stored.
  • the initial value is set to 0.
  • the command processing program stores the command in the queue, 1 is added to the queue length T203.
  • the I / O program reads a command from the queue, 1 is subtracted from the queue length T203.
  • the average response time T204 includes the processing time when the command stored in the queue is processed by the I / O program (the command processing result (response) from the host 2 to the host 2 after receiving the command).
  • the average value of the time required to return is stored.
  • the processing time when the command is processed by the I / O program may be referred to as “command processing time”.
  • the data transfer amount T205 stores the data transfer amount (read data amount or write data amount per unit time) when the command stored in the queue is processed by the I / O program. .
  • the access tendency T206 information related to the access tendency of the command stored in the queue is stored.
  • the number of commands stored in the queue that is, the queue length T203
  • the average response time T204 exceeds a predetermined threshold
  • “excessive I / O” is displayed in the access tendency T206.
  • the data transfer amount T205 exceeds a predetermined threshold
  • “excessive transfer amount” is stored in the access tendency T206.
  • FIG. 5 shows the flow of processing performed by the command processing program.
  • the command processing program When receiving the command 500 from the host 2, the command processing program refers to the command parameter (S10).
  • the command processing program refers to the priority 505 among the parameters, and determines whether a valid value is stored in the priority 505.
  • a valid value is not stored (S20: NO), that is, when NULL (invalid value, for example, a value that is not used as a priority, such as -1) is stored in the priority 505
  • a command processing program Stores the priority of the queue with the lowest priority among the queues of the storage apparatus 1 in the priority 505 (S30).
  • the command processing program confirms the queue length of the queue corresponding to the priority 505 (S40). For example, when the value of the priority 505 is 2, the command processing program checks the value of the queue length T203 of the row with the queue priority T201 of 2 among the rows of the queue control management table T200. When the queue length has reached the maximum queue depth T102 (S40: YES), the received command 500 cannot be stored in the queue. Therefore, the command processing program returns response information (Queue Full) indicating that there is no space in the queue for storing commands to the host 2 (S50). Thereafter, the command processing program executes the processing after S110, and the processing after S110 will be described later.
  • the command processing program executes the processing after S110, and the processing after S110 will be described later.
  • the command processing program determines whether the queue corresponding to the priority 505 is in I / O restriction (S60). This can be done by checking whether the I / O restriction flag T202 of the queue control management table T200 is Y or not. In the case of Y, that is, when the queue corresponding to the priority level 505 is I / O restricted (S60: YES), the command processing program executes I / O receipt determination processing (S70).
  • the I / O receipt determination process will be described later with reference to FIG. 6, but it is possible to store the received command in the queue by executing the I / O receipt determination process (whether I / O receipt is possible). Or whether it cannot be stored in the queue (I / O cannot be received).
  • the command processing program stores the received command 500 in the queue corresponding to the priority 505 (S90). ).
  • the command 500 stored in the queue is taken out from the queue by the I / O program after a while, and processing (read processing or write processing) is performed (S100). Since the process performed by the I / O program is a known process, detailed description thereof will not be given here.
  • the command processing program performs statistical information calculation processing (S110). Specifically, the values to be stored in the average response time T204 and the data transfer amount T205 are calculated based on the response time and the data transfer amount of the command processed in S100, and the calculation result is calculated as the average response time T204, Stored in the data transfer amount T205.
  • the command processing program executes an I / O status determination process (S120). Details of this processing will be described later with reference to FIG. 8.
  • the access tendency T206 of the queue storing the received command may be changed.
  • the command processing program has a lower priority than the queue where the received command is stored (the value of the queue priority T201).
  • the I / O restriction flag T202 is set to Y, and the process ends. If the access trend T206 is neither excessive I / O nor excessive transfer amount (S130: NO), the command processing program does nothing and ends the process.
  • the command 500 is not stored in the queue even if the queue queue length T203 is less than the maximum queue depth T102.
  • the command processing program responds to the host 2 that the command 500 cannot be accepted by performing the I / O restriction processing (S210). Details of the I / O restriction processing in S210 will be described later with reference to FIG.
  • the command processing program After S210, the command processing program performs statistical information calculation processing (S220) and I / O status determination processing (S230).
  • S220 statistical information calculation processing
  • S230 I / O status determination processing
  • the I / O receipt determination process is a process executed by the I / O receipt determination program.
  • the I / O receipt determination program is called from the command processing program to start execution. As a result of the execution, information on either “I / O reception is possible” or “I / O reception is not possible” Return to processing program.
  • the I / O receipt determination program determines whether the command to be processed requires an I / O restriction (S701).
  • the command having the highest priority 505 is determined as requiring no I / O restriction, and other commands are judged as requiring I / O restriction. If the command to be processed does not require I / O restriction (S701: YES), the I / O receipt determination program returns “I / O receipt is possible” to the command processing program (S710), and the process is terminated.
  • the I / O receipt determination program checks the queue length of the queue in which the command to be processed is stored (S702). Specifically, the value of the queue length T203 of the row in which the queue priority T201 is equal to the priority 505 of the command 500 among the rows of the queue control management table T200 is confirmed. Here, it is assumed that the value of the queue length T203 is A. Further, the I / O receipt determination program confirms the target queue depth of the queue in which the command to be processed is stored (S703). Specifically, the value of the target queue depth T103 of the row in which the queue priority T101 is equal to the priority 505 of the command 500 among the rows of the queue control setting table T100 is confirmed. Here, it is assumed that the value of the target queue depth T103 is B.
  • step S710 the process ends. If A is larger than B (S704: NO), the processes in and after S705 are executed.
  • the I / O receipt determination program confirms the maximum queue depth of the queue in which the command to be processed is stored. (S703). Specifically, the value of the maximum queue depth T102 in the row where the queue priority T101 is equal to the priority 505 of the command 500 among the rows of the queue control setting table T100 is confirmed. Here, it is assumed that this value is C.
  • the I / O receipt determination program generates one random number from 1 to C (S706).
  • any random number generation algorithm can be used as long as it is an algorithm that can generate a value between 1 and C with equal probability.
  • D be the value of the random number generated here. If D is less than or equal to B, the I / O receipt determination program returns “I / O receipt is possible” to the command processing program (S710), and the process is terminated. If D is greater than B, the I / O receipt determination program returns “I / O cannot be received” to the command processing program (S708), and the process ends.
  • the command is determined to be I / O reception with a probability of B ⁇ C (that is, “target queue depth ⁇ maximum queue depth”).
  • the acceptance probability T104 is acquired in S705, and a random number between 0 and 1 is generated in S706. In S707, whether the generated random number is less than the acceptance probability T104 It may be determined whether or not.
  • the I / O restriction process is a process for determining response information to be sent back to the host 2 in response to a command determined to be unreceivable by the I / O reception determination program.
  • the I / O restriction process is a process executed by the I / O restriction program.
  • I / O restriction method T105 Prior to the description of the I / O restriction process, information stored in the I / O restriction method T105 of the queue control setting table T100 will be described.
  • the storage apparatus 1 supports a plurality of communication protocols as communication protocols between the host 2 and the storage apparatus 1. Since the content of the response information returned to the host 2 varies depending on the communication protocol, response information corresponding to the communication protocol is stored in the I / O restriction method T105. Therefore, there are three types of I / O restriction method T105: I / O restriction method (FC) T105-1, I / O restriction method (FCoE) T105-2, and I / O restriction method (iSCSI) T105-3. Includes columns.
  • the response information indicating that the storage apparatus 1 is in a state where the command 500 cannot be received is returned to the host 2
  • a method of returning the response information of the upper protocol layer and a method of returning the response information of the lower protocol layer There is.
  • P_BSY that is response information defined by the lower protocol layer FC-2
  • FC-2 There are a method of returning (Port busy) and a method of returning Queue Full, which is response information defined in FC-4 of the upper protocol layer.
  • each column of the I / O restriction method (FC) T105-1, I / O restriction method (FCoE) T105-2, and I / O restriction method (iSCSI) T105-3 includes response information of a lower protocol layer. And a column for storing response information of the upper protocol layer.
  • response information that the user wishes to return to the host 2 can be stored as appropriate.
  • Response information may be stored only in one side. If response information is stored in both, appropriate response information is selected and returned to the host 2 by an I / O restriction program described later.
  • the response information returned to the host 2 is changed according to the access tendency.
  • the I / O restriction program When the I / O restriction program is started, the I / O restriction program first stores information on the access tendency T206 in the row of the queue control management table T200 where the queue priority T201 is equal to the priority 505 of the command 500. Obtain (S2101). Subsequently, the I / O restriction program obtains information on the I / O restriction method T105 in the row of the queue control setting table T100 where the queue priority T101 is equal to the priority 505 of the command 500 (S2102).
  • the I / O restriction is performed.
  • the program determines whether the information of the access tendency T206 acquired in S2102 is excessive I / O. If there is excessive I / O (S2104: YES), the response information of the higher protocol layer is selected to respond to the host 2 (S2105). On the other hand, if the information of the access tendency T206 acquired in S2102 is not excessive I / O (S2104: NO), the response information of the lower protocol layer is selected and responded to the host 2 (S2106). If it is determined in S2103 that only one piece of information is stored in the I / O restriction method T105 (S2103: NO), the response information stored in the I / O restriction method T105 is selected and the host is selected. 2 is responded (S2110).
  • the I / O status determination process is a process of updating the value of the access tendency T206, and the I / O status determination process is started when the command processing program calls the I / O status determination program in S120 or S230.
  • the I / O status determination program When the I / O status determination program is started, first, the I / O status determination program sets the queue length T203 of the row equal to the priority 505 of the command 500 to be processed among the rows in the queue control management table T200. Average response time T204 and data transfer amount T205 are acquired (S1201). As a result, when the data transfer amount T205 exceeds a predetermined threshold value (this threshold value is referred to as “threshold value 1”) (S1202: YES), the I / O status determination program displays an “transfer amount” in the access tendency T206. Set “Excessive” and finish the process.
  • the I / O status determination program determines whether the queue length T203 exceeds a predetermined threshold (this threshold is referred to as “threshold 2”). judge. If the queue length T203 exceeds the threshold value 2 (S1203: YES), the I / O status determination program sets “I / O excessive” in the access tendency T206 (S1210), and the process ends.
  • the I / O status determination program When the queue length T203 does not exceed the threshold 2 (S1203: NO), the I / O status determination program has exceeded the predetermined threshold (this threshold is referred to as “threshold 3”). If the average response time T204 exceeds the threshold 3 (S1204: YES), “I / O excessive” is set in the access tendency T206 (S1210), and the process is terminated. If the average response time T204 does not exceed the threshold 3 (S1204: NO), the I / O status determination program clears the information set in the access tendency T206 (even if “I / O excess”) (S1205), and the process ends.
  • the storage apparatus has a queue for storing commands for each priority level, and is configured to preferentially process commands with high priority levels.
  • the load on the storage device is high, many commands are stored in the queue in most of the plurality of queues. In such a case, it becomes difficult to maintain the target performance of the commands stored in the high priority queue.

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)
  • Computer And Data Communications (AREA)

Abstract

 本発明の一観点に係るストレージ装置は、プロセッサと、メモリを有するストレージコントローラと、前記ストレージコントローラに接続される記憶デバイスとを有する。ストレージコントローラは、ホストから受領したコマンドを格納するためのキューを複数有し、前記キューにはそれぞれ、優先度と目標キュー深度が設定されている。プロセッサはホストから優先度付きのコマンドを受領すると、前記キューに格納されている前記コマンドの数が、前記キューに設定されている前記目標キュー深度よりも多いか判定し、多い場合には所定の確率に基づいて、前記受領したコマンドの前記キューへの格納可否を決定する。

Description

ストレージ装置
 本発明は、ストレージ装置に関する。
 ストレージシステムにQoS(Quality of Service)機能を設け、I/O要求毎に適切な性能を維持させる技術が存在する。たとえば特許文献1には、各Workloadの平均待ち時間(おそらく平均応答時間相当の値)を観測し、観測された平均待ち時間よりもWorkloadの目標待ち時間が短い場合には、ストレージ装置のI/Oリクエストを格納するデバイスキューの長さを短くし、逆に観測された平均待ち時間よりもWorkloadの目標待ち時間が長い場合には、デバイスキューの長さを長くする技術が開示されている。あまりに多くのI/O要求がエンキューされると、応答時間が長くなるため、Workloadの目標待ち時間が、観測された平均待ち時間よりも短い場合、デバイスキューの長さを短くすることにより、応答時間が長くなることを防止している。
国際公開第2004/088547号
 特許文献1に開示の技術によれば、要求に対して、目標待ち時間などの優先順位付けを行うことは可能であるが、デバイスキューには要求の優先度に関わらず、要求が格納される。そのため、たとえば優先度の低い要求が多数キューに格納された後で、優先度の高い要求がホストから到着した時、優先度の低い要求によって、新たに到着した優先度の高い(目標待ち時間の短い)要求の実行が阻害されることがある。
 本発明の一観点に係るストレージ装置は、プロセッサと、メモリを有するストレージコントローラと、前記ストレージコントローラに接続される記憶デバイスとを有する。ストレージコントローラは、ホストから受領したコマンドを格納するためのキューを複数有し、前記キューにはそれぞれ、優先度と目標キュー深度が設定されている。プロセッサはホストから優先度付きのコマンドを受領すると、前記キューに格納されている前記コマンドの数が、前記キューに設定されている前記目標キュー深度よりも多いか判定し、多い場合には所定の確率に基づいて、前記受領したコマンドの前記キューへの格納可否を決定する。
 本発明によれば、優先度の低いアクセス要求によって、優先度の高いアクセス要求の実行が阻害されることを防ぐことができる。
実施例に係る計算機システムのハードウェア構成図である。 キューとコマンドの構造の例である。 キュー制御用設定テーブルの構成の説明図である。 キュー制御管理テーブルの構成の説明図である。 コマンド処理プログラムのフローチャートである。 I/O受領判定処理のフローチャートである。 I/O制限処理のフローチャートである。 I/O状況判定処理のフローチャートである。
 以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 また、以後の説明では「aaaテーブル」等の表現にて本発明の情報を説明する場合があるが、これら情報は、テーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等について「aaa情報」と呼ぶことがある。また、「bbb名」等の表現にて本発明の「bbb」を識別するための情報を説明する場合があるが、これらの識別するための情報は、名前に限られず、識別子や識別番号、アドレスなど、「bbb」が特定できる情報であればよい。
 また、以降で説明されるプログラムの一部または全ては、専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各装置にインストールされてもよい。記憶メディアとしては、例えば、ICカード、SDカード、DVD等であってもよい。
 図1は、実施例1に係るストレージ装置(ストレージシステム)1の構成を示す。ストレージ装置1は、ストレージコントローラ10と、ストレージコントローラ10に接続された複数のドライブ20を有する。
 ドライブ20は、ホスト2などの上位装置からのライトデータを格納するための記憶デバイスである。ドライブ20として、HDD(Hard Disk Drive)等の磁気ディスクを記録媒体とする記憶デバイスが用いられてもよいし、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として採用した記憶デバイスが用いられてもよい。ドライブ20は一例として、SAS(Serial Attached SCSI)規格に従って、ディスクコントローラ10との通信を行う。
 ストレージコントローラ10には、1以上のホスト2が接続される。またストレージコントローラ10には、管理ホスト5が接続される。ストレージコントローラ10とホスト2とはたとえば、ファイバチャネルを用いて形成されるネットワークであるFC-SAN3、またはイーサネットを用いて形成されるネットワークであるIP-SAN4を介して接続される。ストレージコントローラ10と管理ホスト5とは、一例としてイーサネットを用いて形成されるLAN(Local Area Network)6を介して接続される。
 ストレージコントローラ10は少なくとも、プロセッサ(CPU)11、ホストインタフェース(図中では「ホストI/F」と表記)12、ディスクインタフェース(図中では「ディスクI/F」と表記)13、メモリ14、管理用I/F15を有する。そしてプロセッサ11、ホストIF12、ディスクIF13、メモリ14、管理用I/F15は、内部スイッチ(内部SW)16を介して相互接続されている。図1ではこれらの構成要素がそれぞれ1つだけ示されているが、高性能化及び高可用性の確保のため、これらの構成要素のそれぞれがストレージコントローラ10内に複数搭載されていてもよい。また内部SW16ではなく、共通バスを介して各構成要素が相互接続された構成にしてもよい。
 ディスクI/F13は少なくとも、インタフェースコントローラと転送回路を有する。インタフェースコントローラは、ドライブ20の用いているプロトコル(一例ではSAS)をストレージコントローラ10内部で用いられている通信プロトコル(一例としてPCI-Express)に変換するためのコンポーネントである。転送回路は、ストレージコントローラ10が、ドライブ20に対してデータの転送(リード、ライト)を行う際に用いられる。なお、インタフェースコントローラとして、複数のプロトコル(たとえばSASとSATA)をサポートするインタフェースコントローラを採用してもよい。その場合、ディスクI/F13には、複数種類のドライブ20(SAS規格のドライブとSATA規格のドライブ)を接続可能である。
 ホストI/F12は、ディスクI/F13と同様に、少なくともインタフェースコントローラと転送回路を有する。ホストI/F12が有するインタフェースコントローラは、ホスト2とストレージコントローラ10間のデータ転送経路で用いられている通信プロトコル(たとえばファイバチャネルまたはイーサネット)と、ストレージコントローラ10内部で用いられている通信プロトコルを変換するためのものである。本実施例に係るストレージ装置は、ファイバチャネルをサポートするインタフェースコントローラを備えたホストI/F12と、イーサネットをサポートするインタフェースコントローラを備えたホストI/F12とを有する。以下では、前者のホストI/F12のことを「ホストI/F12-1」と表記し、後者のホストI/Iは「ホストI/F12-2」と表記する。またこの2つを区別せずに指す場合には、「ホストI/F12」と表記する。ただし、複数種類のホストI/F12を有することは必須ではなく、ストレージ装置1が1種類のホストI/F12のみを有する構成でも良い。
 メモリ14は、プロセッサ11が実行するプログラムや、プロセッサが使用するストレージ装置1の各種管理情報を記憶するために用いられる。またメモリ14は、ドライブ20に対するI/O対象データを一時的に記憶するためにも用いられる。以下、ドライブ20に対するI/O対象データを一時的に記憶するために用いられる、メモリ14中の記憶領域を、「キャッシュ」と呼ぶ。メモリ14はDRAM、SRAM等の揮発性記憶媒体で構成されるが、別の実施形態として、不揮発性メモリを用いてメモリ14を構成してもよい。
 プロセッサ11は、メモリ14に格納されたプログラムを読み出して実行することで、ストレージ装置1の各種制御を行う。本実施例に係るストレージ装置では少なくとも、メモリ14には、コマンド処理プログラム、I/Oプログラムが格納されている。I/Oプログラムは、ホスト2から受信したコマンドに従って、ドライブ14またはキャッシュからデータを読み出す、あるいはドライブ14またはキャッシュにデータを書き込む処理を行うためのプログラムである。コマンド処理プログラムは、ホスト2から受信したコマンドを、ストレージ装置1に設けられているキューに格納する等の処理を行うためのプログラムである。なお、CPU11がI/Oプログラムやコマンド処理プログラムを実行することにより、ここで述べた処理や、以降で説明する処理が行われるものであるが、本明細書では説明が冗長になることを防ぐため、プログラムを主語として処理の内容を説明することがある。
 コマンド処理プログラムが実施する処理の概要を説明する。本実施例に係るストレージ装置1は、コマンドを格納するためのキューを1以上有する。キューはFIFO型の記憶領域で、コマンド処理プログラムはホスト2から受信したコマンドを、いずれかのキューの終端に格納する。なお、コマンドがキューに格納される際、コマンド処理プログラムはコマンドにその時の時刻を付加したものをキューに格納する。これは後で、コマンドの処理時間を算出するためである。
 一方I/Oプログラムは、キューの先頭に位置するコマンドを読み出して、コマンドで指定されている処理(データのリードやライト等)を行う。以下では、I/Oプログラムが、キューから読み出されたコマンドで指定されている処理を行うことを、「コマンドを処理する」と表現する。キューはメモリ14上に設けられていてもよいし、あるいはホストI/F12内のバッファなどの記憶領域内に設けられてもよい。
 キューとコマンドの構造の例を、図2に示す。ストレージ装置1に設けられるキューの数は、ストレージ装置1の管理者(ユーザ)が自由に設定できる。ストレージ装置1にキューが複数設けられる場合、各キューはそれぞれ優先度を有する。本実施例では優先度を表現する情報として、1以上の整数値を用いる。優先度1を有するキューが最も優先度が高く、優先度の数値が大きいほど、優先度が低いことを表す。
 また、優先度がX(Xは1以上の整数値)のキューのことを、「QCT-X」と表記する。図2には、優先度が1、2、...、nのキュー(QCT-1、QCT-2、...、QCT-n)が示されている。また、複数のキューが同一の優先度を有していてもよいが、本実施例では、各キューに設定されている優先度はすべて異なる場合の例について説明する。これにより、優先度が特定されると、同時にキューも一意に特定されるので、優先度はキューの識別番号としても用いられる。
 I/Oプログラムは、優先度の高いキューに格納されているコマンド(優先度の高いコマンド、ともいう)を優先的に処理する。優先度の高いコマンドを優先的に処理する方法には、任意の方法を採用可能である。たとえばI/Oプログラムは、QCT-1にコマンドが格納されている限り、QCT-1からコマンドを読み出して処理し、QCT-1に格納されているコマンドがなくなるまで、QCT-2以降のキューに格納されているコマンドの処理を行わないようにしてもよい。あるいはI/Oプログラムは、キューからコマンドを読み出すとき、優先度の高いキューからコマンドを読み出す頻度を、優先度が低いキューからコマンドを読み出す頻度よりも高くするようにしてもよい。
 図2には、本実施例に係るストレージ装置1がホスト2から受信するコマンドの構成例(コマンド500)が示されている。コマンド500には少なくとも、オペレーションコード(Opcode)501、LUN502、LBA503、長さ(Length)504、優先度505という情報が含まれている。なお、これらの情報を総称して、「コマンドパラメータ」または「パラメータ」と呼ぶ。
 Opcode501は、コマンドの種類(たとえばリード、ライト等)を表す情報である。キューからコマンドを読み出したI/OプログラムはOpcode501の内容に基づいて、自身が行うべき処理を決定できる。LUN502、LBA503、長さ(Length)504は、アクセス対象のボリューム上の領域を特定する情報である。
 優先度505は、コマンドの優先度を表す情報であり、1以上の整数値が格納されている。ホスト2がコマンドを発行する時に、ホスト2が優先度505を決定する。コマンド処理プログラムはホスト2からコマンド500を受信すると、コマンド500に含まれている優先度505を参照する。優先度505の値がX(Xは1以上の整数値)の場合、QCT-Xにコマンド500を格納する。以下、コマンド500の優先度505の値がXの場合、このコマンド500が格納されるべきキュー、つまりQCT-Xのことを、「優先度に対応するキュー」と表現することもある。
 続いて、本実施例に係るストレージ装置1で説明される処理を実行するために必要となる管理情報について説明する。ストレージコントローラ10のメモリ14には少なくとも、キュー制御用設定テーブルT100、キュー制御管理テーブルT200という、2種類の管理情報が格納される。これらのテーブルは、ホストI/F12-1上のバッファメモリに格納しても良い。
 図3を用いて、キュー制御用設定テーブルT100の内容を説明する。キュー制御用設定テーブルT100は、ストレージ装置1に設けられた各キューの属性(優先度等)を管理するためのテーブルで、1つの行に、1つのキューに設定されている属性情報が格納されている。キュー制御用設定テーブルT100は、キュー優先度T101、最大キュー深度T102、目標キュー深度T103、受入確率T104、I/O制限方式T105、平均応答時間閾値T108、データ転送量閾値T109のカラムを有する。これらのカラムには、ユーザが管理ホスト5等を用いて、必要な情報を格納する。
 キュー優先度T101には、キューに設定されている優先度が格納される。上で述べたとおり、優先度には1以上の整数値が用いられる。最大キュー深度T102には、キューに格納可能なコマンドの数の最大値が格納される。目標キュー深度T103は、後述するI/O受領判定処理で用いられる情報である。詳細は後述する。また受入確率T104には、(目標キュー深度T103÷最大キュー深度T102)の計算式で算出される値が格納される。最大キュー深度T102と目標キュー深度T103は、ユーザによって設定される情報だが、受入確率T104に格納される値はストレージ装置が算出して格納する。ユーザによって最大キュー深度T102と目標キュー深度T103が設定された時点で、ストレージ装置1が受入確率T104を算出する。
 最大キュー深度T102、目標キュー深度T103は、ユーザによって任意に設定可能だが、原則として、優先度の高いキューの最大キュー深度T102には、優先度の低いキューの最大キュー深度T102よりも小さな値が設定される。最大キュー深度T102が大きい(キューの長さが長いことを意味する)場合、ホスト2への応答時間が長くなることがあるためである。
 また目標キュー深度T103は最大キュー深度T102以下の値が設定される必要がある。そして、優先度の高いキューほど、受入確率T104が高くなるような値が設定されることが望ましい。受入確率T104は上で述べた計算式で算出される値であるから、目標キュー深度T103が最大キュー深度T102に近い値であればあるほど、受入確率T104が高くなる。そのため、優先度の高いキューの目標キュー深度T103には、最大キュー深度T102に近い値が設定されることが望ましい。なお、CPU11あるいは管理ホスト5は、ユーザによって最大キュー深度T102と目標キュー深度T103が設定されて各キューの受入確率T104を算出した時、優先度の低いキューの受入確率T104が、優先度の低いキューの受入確率T104以上だった場合に、管理ホスト5の画面にエラーメッセージ等を出力して、ユーザに最大キュー深度T102と目標キュー深度T103の設定のやり直しを行わせるようにしてもよい。このようにすると、優先度の高いキューの受入確率T104を、優先度の低いキューの受入確率T104より高くすることができる。
 I/O制限方式T105には、I/O制限方式(FC)T105-1、I/O制限方式(FCoE)T105-2、I/O制限方式(iSCSI)T105-3の3種類のカラムが含まれる。これらは、後述するI/O制限処理で用いられる情報で、I/O制限処理の説明の際にあわせて説明する。
 平均応答時間閾値T108、データ転送量閾値T109は、後述するI/O状況判定処理で用いられる情報である。これらの情報については、I/O状況判定処理の説明の際にあわせて説明する。
 なお、上では、最大キュー深度T102と目標キュー深度T103をユーザが設定する例について説明したが、別の実施形態として、ユーザによって最大キュー深度T102と受入確率T104が設定されるようにしてもよい。この場合、ストレージ装置1は最大キュー深度T102と受入確率T104を用いて目標キュー深度T103を算出する。
 続いて図4を用いて、キュー制御管理テーブルT200の内容を説明する。キュー制御管理テーブルT200は、ストレージ装置1に設けられた各キューの状態、及び各キューから読み出されて処理されたコマンドについての統計情報を格納するテーブルである。1つの行に、1つのキューの状態についての情報が格納されている。キュー制御管理テーブルT200は、キュー優先度T201、I/O制限フラグT202、キュー長T203、平均応答時間T204、データ転送量T205、アクセス傾向T206のカラムを有する。
 キュー優先度T201には、キューに設定されている優先度が格納される。上で述べたとおり、キュー優先度T201は、キューの識別番号でもある。I/O制限フラグT202は、キューへのコマンドの格納が制限されているか否かを表す情報が格納される。I/O制限フラグT202にNが格納されているとき、キューへのコマンドの格納が制限されていないことを表す。一方I/O制限フラグT202にYが格納されているとき、キューへのコマンドの格納が制限されていることを意味する。
 キュー長T203には、現時点でキューに格納されているコマンド500の数が格納される。初期値は0に設定される。コマンド処理プログラムがキューにコマンドを格納した時点で、キュー長T203に1を加算する。I/Oプログラムがキューからコマンドを読み出した時、キュー長T203から1を減算する。
 平均応答時間T204には、キューに格納されていたコマンドが、I/Oプログラムによって処理される時の処理時間(ホスト2からコマンドを受信してから、ホスト2にそのコマンドの処理結果(応答)を返すまでの所要時間)の平均値が格納される。以下、コマンドがI/Oプログラムによって処理される時の処理時間のことを、「コマンドの処理時間」と呼ぶこともある。データ転送量T205には、キューに格納されていたコマンドがI/Oプログラムによって処理された時の、単位時間あたりのデータ転送量(単位時間あたりのリードデータ量あるいはライトデータ量)が格納される。
 アクセス傾向T206には、キューに格納されていたコマンドのアクセス傾向に関する情報が格納される。本実施例では、キューに格納されるコマンド数(つまりキュー長T203)が所定数より多い時、あるいは平均応答時間T204が所定の閾値を超過する場合、アクセス傾向T206に「I/O過多」が格納される。またデータ転送量T205が所定の閾値を超過する場合、アクセス傾向T206に「転送量過多」が格納される。これらは後述するI/O状況判定処理において実施される。
 続いて、ホスト2からコマンド500を受信した時に、ストレージ装置1が行う処理の流れを説明していく。図5はコマンド処理プログラムによって行われる処理の流れを示している。
 コマンド処理プログラムは、ホスト2からコマンド500を受領すると、コマンドのパラメータを参照する(S10)。コマンド処理プログラムは特にパラメータのうち、優先度505を参照し、優先度505に有効値が格納されているか判定する。有効値が格納されていない場合(S20:NO)、つまり優先度505にNULL(無効値。たとえば-1などの、優先度として用いられることのない値)が格納されていた場合、コマンド処理プログラムは優先度505に、ストレージ装置1が有するキューのうち最も優先度の低いキューの優先度を格納する(S30)。
 続いてコマンド処理プログラムは、優先度505に対応するキューのキュー長を確認する(S40)。たとえば優先度505の値が2の場合、コマンド処理プログラムはキュー制御管理テーブルT200の各行のうち、キュー優先度T201が2の行のキュー長T203の値を確認する。キュー長が最大キュー深度T102に達している場合(S40:YES)、受信したコマンド500をキューに格納することができない。そのためコマンド処理プログラムは、ホスト2に対して、コマンドを格納するキューに空きがない旨を表す応答情報(Queue Full)を返却する(S50)。この後コマンド処理プログラムは、S110以降の処理を実行するが、S110以降の処理については後述する。
 キュー長が最大キュー深度T102未満の場合(S40:NO)、コマンド処理プログラムは優先度505に対応するキューがI/O制限中であるか判定する(S60)。これはキュー制御管理テーブルT200のI/O制限フラグT202がYであるか否かを確認すればよい。Yの場合、つまり優先度505に対応するキューがI/O制限中である場合(S60:YES)、コマンド処理プログラムはI/O受領判定処理を実行する(S70)。I/O受領判定処理については、後で図6を用いて説明するが、I/O受領判定処理が実行されることにより、受信したコマンドをキューに格納可能か(I/O受領可か)、あるいはキューに格納不可能か(I/O受領不可か)が決定される。
 I/O受領判定処理が実行された結果、I/O受領可と決定された場合(S80:YES)、コマンド処理プログラムは、受信したコマンド500を優先度505に対応するキューに格納する(S90)。キューに格納されたコマンド500はしばらく後に、I/Oプログラムによってキューから取り出され、処理(リード処理あるいはライト処理等)が行われる(S100)。I/Oプログラムによって行われる処理は公知の処理であるため、ここでは詳細な説明は行わない。
 S100で、I/Oプログラムによるコマンド500の処理が完了した後、コマンド処理プログラムは統計情報計算処理を行う(S110)。具体的には、S100で処理されたコマンドの応答時間、データ転送量をもとにして、平均応答時間T204、データ転送量T205に格納すべき値を計算し、計算結果を平均応答時間T204、データ転送量T205に格納する。
 続いてコマンド処理プログラムは、I/O状況判定処理を実行する(S120)。この処理の詳細は後で図8を用いて説明するが、S120が実行された結果、受信したコマンドの格納されていたキューのアクセス傾向T206が変更されることがある。アクセス傾向T206がI/O過多あるいは転送量過多であった場合(S130:YES)、コマンド処理プログラムは、受信したコマンドの格納されていたキューよりも優先度が低いキュー(キュー優先度T201の値が大きいキュー)について、I/O制限フラグT202をYにし、処理を終了する。またアクセス傾向T206がI/O過多でなく、かつ転送量過多でもない場合(S130:NO)には、コマンド処理プログラムは何もせずに処理を終了する。
 S80の判定でI/O受領不可である場合(S80:NO)、キューのキュー長T203が最大キュー深度T102未満であっても、コマンド500をキューに格納しない。コマンド処理プログラムはI/O制限処理(S210)を行うことにより、ホスト2に対し、コマンド500を受け付けられない旨を応答する。S210のI/O制限処理の詳細は、後で図7を用いて説明する。
 S210の後、コマンド処理プログラムは統計情報計算処理(S220)、I/O状況判定処理(S230)を行う。S220の処理はS110と同じであり、またS230の処理はS120と同じである。
 S230を実行した結果、受信したコマンドの格納先であるキューのアクセス傾向T206がI/O過多あるいは転送量過多であった場合(S240:YES)、コマンド処理プログラムは何もせずに処理を終了する。アクセス傾向T206がI/O過多でもなく、転送量過多でもない場合(S240:NO)、コマンド処理プログラムは、受信したコマンドの格納先であるキューについて、I/O制限フラグT202をNにし(S250)、処理を終了する。
 続いて図6を用いて、S70のI/O受領判定処理の流れを説明する。I/O受領判定処理は、I/O受領判定プログラムが実行する処理である。またI/O受領判定プログラムはコマンド処理プログラムから呼び出されることによって、実行が開始され、実行の結果として、「I/O受領可」あるいは「I/O受領不可」のいずれかの情報を、コマンド処理プログラムに返却する。
 最初にI/O受領判定プログラムは、処理対象のコマンドがI/O制限不要か判定する(S701)。本実施例に係るストレージ装置1では、優先度505が最も高いコマンドは、I/O制限不要と判断し、またそれ以外のコマンドはI/O制限必要と判断する。処理対象のコマンドがI/O制限不要の場合(S701:YES)、I/O受領判定プログラムは「I/O受領可」をコマンド処理プログラムに返却し(S710)、処理を終了する。
 処理対象のコマンドがI/O制限必要の場合(S701:No)、I/O受領判定プログラムは処理対象のコマンドが格納されるべきキューのキュー長を確認する(S702)。具体的にはキュー制御管理テーブルT200の行のうち、キュー優先度T201がコマンド500の優先度505と等しい行のキュー長T203の値を確認する。ここでは仮に、キュー長T203の値がAであったとする。さらにI/O受領判定プログラムは、処理対象のコマンドが格納されるべきキューの目標キュー深度を確認する(S703)。具体的にはキュー制御用設定テーブルT100の行のうち、キュー優先度T101がコマンド500の優先度505と等しい行の目標キュー深度T103の値を確認する。ここでは仮に目標キュー深度T103の値がBであったとする。
 S702で確認したキュー長(A)が、S703で確認したキュー深度(B)以下の場合(S704:YES、I/O受領判定プログラムは「I/O受領可」をコマンド処理プログラムに返却し(S710)、処理を終了する。AがBより大きい場合には(S704:NO)、S705以降の処理が実行される。
 S705ではI/O受領判定プログラムは、処理対象のコマンドが格納されるべきキューの最大キュー深度を確認する。(S703)。具体的にはキュー制御用設定テーブルT100の行のうち、キュー優先度T101がコマンド500の優先度505と等しい行の最大キュー深度T102の値を確認する。ここでは仮にこの値がCであったとする。
 次にI/O受領判定プログラムは、1以上C以下の乱数を1つ生成する(S706)。乱数生成には、1以上C以下の値を等確率で生成可能なアルゴリズムであれば、任意の乱数生成アルゴリズムを用いることができる。ここで生成された乱数の値をDとする。DがB以下の場合、I/O受領判定プログラムは「I/O受領可」をコマンド処理プログラムに返却し(S710)、処理を終了する。DがBより大きい場合には、I/O受領判定プログラムは「I/O受領不可」をコマンド処理プログラムに返却し(S708)、処理を終了する。
 つまりI/O受領判定プログラムでは、B÷C(つまり「目標キュー深度÷最大キュー深度」)の確率で、コマンドをI/O受領可と判定する。なお、S705~S707で、B÷Cを算出する代わりに、S705で受入確率T104を取得し、S706で0以上1以下の乱数を生成し、S707では、生成された乱数が受入確率T104以下か否かを判定するようにしてもよい。
 続いて、S210のI/O制限処理の流れを、図7を用いて説明する。I/O制限処理は、I/O受領判定プログラムによってI/O受領不可と判定されたコマンドに対し、ホスト2に返送する応答情報を決定するための処理である。I/O制限処理は、I/O制限プログラムが実行する処理である。
 I/O制限処理の説明の前に、キュー制御用設定テーブルT100のI/O制限方式T105に格納されている情報について説明する。I/O制限方式T105にはI/O受領判定プログラムによってI/O受領不可と判定されたコマンドに対し、ホスト2に返送する応答情報の候補が格納されている。本実施例に係るストレージ装置1は、ホスト2とストレージ装置1間の通信プロトコルとして、複数の通信プロトコルをサポートする。ホスト2へ返送する応答情報の内容は、通信プロトコルによって異なるため、I/O制限方式T105には通信プロトコルに応じた応答情報が格納される。そのため、I/O制限方式T105には、I/O制限方式(FC)T105-1、I/O制限方式(FCoE)T105-2、I/O制限方式(iSCSI)T105-3の3種類のカラムが含まれる。
 また、ストレージ装置1がコマンド500を受け付けられない状態にある旨の応答情報をホスト2に返送する場合、上位プロトコルレイヤの応答情報を返送する方法と、下位プロトコルレイヤの応答情報を返送する方法とがある。たとえばファイバチャネル(FC)プロトコルの場合、ストレージ装置1がコマンド500を受け付けられない状態にある旨をホスト2に通知したい場合、下位プロトコルレイヤであるFC-2で定められている応答情報であるP_BSY(Port busy)を返送する方法と、上位プロトコルレイヤのFC-4で規定されている応答情報であるQueue Fullを返送する方法がある。
 そのため、I/O制限方式(FC)T105-1、I/O制限方式(FCoE)T105-2、I/O制限方式(iSCSI)T105-3のそれぞれのカラムには、下位プロトコルレイヤの応答情報を格納する欄と、上位プロトコルレイヤの応答情報を格納する欄とが含まれる。これらのカラムにはユーザが適宜、ホスト2に返送したい応答情報を格納できる。ただし、必ずしも上位プロトコルレイヤの応答情報を格納する欄と下位プロトコルレイヤの応答情報を格納する欄の両方に、応答情報を格納する必要はない。一方のみに応答情報が格納されていてもよい。両方に応答情報が格納されている場合には、後述するI/O制限プログラムにより、適切な応答情報が選択されて、ホスト2に返送される。
 一般に、ホスト2から受信するコマンド数が過大な場合には、上位プロトコルレイヤの応答情報を返送するほうが、ホスト2からのアクセス要求を抑止できる。また、(単位時間あたりの)データ転送量が過大な状態にある場合には、下位プロトコルレイヤの応答情報を返送し、ホスト2とストレージ装置1間のデータ転送量を抑制させる方が望ましい。そのため、本実施例に係るストレージ装置1では、アクセス傾向によって、ホスト2に返送する応答情報を変更する。
 以下、I/O制限プログラムの処理の流れを説明する。I/O制限プログラムが開始されると、最初にI/O制限プログラムはキュー制御管理テーブルT200の行のうち、キュー優先度T201がコマンド500の優先度505と等しい行のアクセス傾向T206の情報を取得する(S2101)。続いてI/O制限プログラムは、キュー制御用設定テーブルT100の行のうち、キュー優先度T101がコマンド500の優先度505と等しい行のI/O制限方式T105の情報を取得する(S2102)。
 I/O制限方式T105に、複数の情報が格納されている場合、つまり上位プロトコルレイヤの応答情報と下位プロトコルレイヤの応答情報の両方が格納されている場合(S2103:YES)、I/O制限プログラムはS2102で取得したアクセス傾向T206の情報がI/O過多であるか否か判定する。I/O過多の場合(S2104:YES)、上位プロトコルレイヤの応答情報を選択してホスト2に応答する(S2105)。逆にS2102で取得したアクセス傾向T206の情報がI/O過多でない場合(S2104:NO)、下位プロトコルレイヤの応答情報を選択してホスト2に応答する(S2106)。また、S2103の判定で、I/O制限方式T105に、1つの情報しか格納されていない場合には(S2103:NO)、I/O制限方式T105に格納されている応答情報を選択してホスト2に応答する(S2110)。
 次に、S120あるいはS230で実行されるI/O状況判定処理の流れを、図8を用いて説明する。I/O状況判定処理は、アクセス傾向T206の値を更新する処理で、S120あるいはS230でコマンド処理プログラムがI/O状況判定プログラムを呼び出すことで、I/O状況判定処理が開始される。
 I/O状況判定プログラムが開始されると、最初にI/O状況判定プログラムはキュー制御管理テーブルT200内の行のうち、処理対象のコマンド500の優先度505と等しい行の、キュー長T203、平均応答時間T204、データ転送量T205を取得する(S1201)。この結果、データ転送量T205があらかじめ定められた閾値(この閾値を「閾値1」と呼ぶ)を超過している場合(S1202:YES)、I/O状況判定プログラムはアクセス傾向T206に「転送量過多」を設定し、処理を終了する。データ転送量T205が閾値1を超過していない場合(S1202:NO)、I/O状況判定プログラムは、キュー長T203が所定の閾値(この閾値を「閾値2」と呼ぶ)を超過しているか判定する。キュー長T203が閾値2を超過している場合(S1203:YES)、I/O状況判定プログラムはアクセス傾向T206に「I/O過多」を設定し(S1210)、処理を終了する。
 キュー長T203が閾値2を超過していない場合(S1203:NO)、I/O状況判定プログラムは平均応答時間T204があらかじめ定められた閾値(この閾値を「閾値3」と呼ぶ)を超過しているか判定し、平均応答時間T204が閾値3を超過している場合(S1204:YES)には、アクセス傾向T206に「I/O過多」を設定し(S1210)、処理を終了する。平均応答時間T204が閾値3を超過していない場合(S1204:NO)には、I/O状況判定プログラムはアクセス傾向T206に設定されている情報をクリア(「I/O過多」でも「転送量過多」でもない状態にする)して(S1205)、処理を終了する。
 以上、説明してきたように、本実施例に係るストレージ装置では、コマンドを格納するキューを優先度ごとに有し、優先度の高いコマンドを優先的に処理するように構成されている。ストレージ装置の負荷が高い場合、複数のキューのほとんどに多くのコマンドがキューに格納される。このような場合、優先度の高いキューに格納されたコマンドの目標性能の維持が困難になる。
 本実施例に係るストレージ装置では、特にストレージ装置の負荷が高い場合、優先度の低いキューへのコマンド格納に制限を加える。制限の加えられたキューにコマンドを格納する際、キューに蓄積されているコマンド数が目標キュー深度よりも多い場合、所定確率で当該コマンドのキューへの格納を許可する。キューへの格納が許可されなかった場合には、ホストにI/O要求を受領できない旨を応答する。これにより、優先度の高いコマンドに必要な帯域を確保することができる。
 以上、本発明の実施例を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
1: ストレージ装置、2: ホスト、3: FC-SAN、4: IP-SAN、5: 管理ホスト、10: ストレージコントローラ、11: プロセッサ(CPU)、12: ホストIF、13: ディスクIF、14: メモリ、15: 管理用I/F、16: 内部スイッチ、20: ドライブ

Claims (12)

  1.  プロセッサと、メモリを有するストレージコントローラと、前記ストレージコントローラに接続される記憶デバイスとを有するストレージ装置において、
     前記ストレージコントローラは前記メモリ上に、ホストから受領したコマンドを格納するためのキューを複数有し、前記キューにはそれぞれ、優先度と目標キュー深度が設定されており、
     前記プロセッサは、前記ホストから受領したコマンドに含まれている優先度と等しい前記優先度が設定されたキューへのコマンド格納が制限されている場合、
     前記キューに格納されている前記コマンドの数が、前記キューに設定されている前記目標キュー深度よりも多い時には、所定の受入確率に基づいて、前記受領したコマンドの前記キューへの格納可否を決定する、
    ことを特徴とする、ストレージ装置。
  2.  前記複数のキューの各々には、前記キューに格納可能なコマンド数の最大値である最大キュー深度が設定されており、
     前記所定の受入確率は、前記目標キュー深度を前記最大キュー深度で除算することで算出される値である
    ことを特徴とする、請求項1に記載のストレージ装置。
  3.  第1の優先度の設定された第1キューの前記目標キュー深度と前記最大キュー深度とから算出される第1受入確率は、前記第1の優先度よりも低い優先度である第2の優先度の設定された第2キューの前記目標キュー深度と前記最大キュー深度とから算出される第2受入確率よりも高い、
    ことを特徴とする、請求項2に記載のストレージ装置。
  4.  前記プロセッサは、前記受領した前記コマンドを前記キューに格納可能と決定した場合、前記キューに格納されていた1以上のコマンドが実施された際の処理負荷を求め、前記処理負荷が所定の閾値を超過している場合には、前記キューに対応付けられている優先度よりも低い優先度のキューへのコマンド格納を制限することを決定する、
    ことを特徴とする、請求項1に記載のストレージ装置。
  5.  前記プロセッサは、前記受領した前記コマンドを前記キューに格納不可能と決定した場合、前記ストレージ装置がコマンドを受け付けられない状態にある旨の応答情報をホストに返却する、
    ことを特徴とする、請求項1に記載のストレージ装置。
  6.  前記ストレージ装置は、前記キューに対し、前記ストレージ装置がコマンドを受け付けられない状態にある旨の応答情報として少なくとも、下位レイヤのプロトコルで規定されている応答情報と上位レイヤのプロトコルで規定されている応答情報が設定可能であって、
     前記プロセッサは前記応答情報をホストに返却する際、前記キューに格納されていた1以上のコマンドが実施された際の、単位時間あたりのデータ転送量が所定の閾値を超過している場合、前記複数種類の応答情報のうち、前記下位レイヤのプロトコルで規定されている応答情報を返却する
    ことを特徴とする、請求項5に記載のストレージ装置。
  7.  プロセッサと、メモリを有するストレージコントローラと、前記ストレージコントローラに接続される記憶デバイスとを有するストレージ装置の制御方法であって、
     前記ストレージコントローラは前記メモリ上に、ホストから受領したコマンドを格納するためのキューを複数有し、前記キューにはそれぞれ、優先度と目標キュー深度が設定されており、
     前記プロセッサは、前記ホストから受領したコマンドに含まれている優先度と等しい前記優先度が設定されたキューへのコマンド格納が制限されている場合、
     前記キューに格納されている前記コマンドの数が、前記キューに設定されている前記目標キュー深度よりも多い時には、所定の受入確率に基づいて、前記受領したコマンドの前記キューへの格納可否を決定する、
    ことを特徴とする、ストレージ装置の制御方法。
  8.  前記複数のキューの各々には、前記キューに格納可能なコマンド数の最大値である最大キュー深度が設定されており、
     前記所定の受入確率は、前記目標キュー深度を前記最大キュー深度で除算することで算出される値である
    ことを特徴とする、請求項7に記載のストレージ装置の制御方法。
  9.  第1の優先度の設定された第1キューの前記目標キュー深度と前記最大キュー深度とから算出される第1受入確率は、前記第1の優先度よりも低い優先度である第2の優先度の設定された第2キューの前記目標キュー深度と前記最大キュー深度とから算出される第2受入確率よりも高い、
    ことを特徴とする、請求項8に記載のストレージ装置の制御方法。
  10.  前記プロセッサは、前記受領した前記コマンドを前記キューに格納可能と決定した場合、前記キューに格納されていた1以上のコマンドが実施された際の処理負荷を求め、前記処理負荷が所定の閾値を超過している場合には、前記キューに対応付けられている優先度よりも低い優先度のキューへのコマンド格納を制限することを決定する、
    ことを特徴とする、請求項7に記載のストレージ装置の制御方法。
  11.  前記プロセッサは、前記受領した前記コマンドを前記キューに格納不可能と決定した場合、前記ストレージ装置がコマンドを受け付けられない状態にある旨の応答情報をホストに返却する、
    ことを特徴とする、請求項7に記載のストレージ装置の制御方法。
  12.  前記ストレージ装置は、前記キューに対し、前記ストレージ装置がコマンドを受け付けられない状態にある旨の応答情報として少なくとも、下位レイヤのプロトコルで規定されている応答情報と上位レイヤのプロトコルで規定されている応答情報が設定可能であって、
     前記プロセッサは前記応答情報をホストに返却する際、前記キューに格納されていた1以上のコマンドが実施された際の、単位時間あたりのデータ転送量が所定の閾値を超過している場合、前記複数種類の応答情報のうち、前記下位レイヤのプロトコルで規定されている応答情報を返却する、
    ことを特徴とする、請求項11に記載のストレージ装置の制御方法。
PCT/JP2015/054119 2015-02-16 2015-02-16 ストレージ装置 WO2016132428A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/054119 WO2016132428A1 (ja) 2015-02-16 2015-02-16 ストレージ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/054119 WO2016132428A1 (ja) 2015-02-16 2015-02-16 ストレージ装置

Publications (1)

Publication Number Publication Date
WO2016132428A1 true WO2016132428A1 (ja) 2016-08-25

Family

ID=56692089

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/054119 WO2016132428A1 (ja) 2015-02-16 2015-02-16 ストレージ装置

Country Status (1)

Country Link
WO (1) WO2016132428A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151749A (ja) * 2017-03-10 2018-09-27 日本電気株式会社 制御装置、情報処理システム、制御方法およびプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004206623A (ja) * 2002-12-26 2004-07-22 Fujitsu Ltd ストレージシステム及びその動的負荷管理方法
WO2004088547A2 (en) * 2003-03-27 2004-10-14 Hewlett-Packard Development Company L.P. Quality of service controller and method for a data storage system
JP2008015823A (ja) * 2006-07-06 2008-01-24 Citizen Holdings Co Ltd 通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ
JP2010102458A (ja) * 2008-10-22 2010-05-06 Hitachi Ltd コマンドの起動を制御するストレージシステム及び方法
JP2012150710A (ja) * 2011-01-20 2012-08-09 Nec Corp コマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラム
WO2012164386A2 (en) * 2011-06-01 2012-12-06 Alcatel Lucent Traffic control method and traffic control apparatus

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004206623A (ja) * 2002-12-26 2004-07-22 Fujitsu Ltd ストレージシステム及びその動的負荷管理方法
WO2004088547A2 (en) * 2003-03-27 2004-10-14 Hewlett-Packard Development Company L.P. Quality of service controller and method for a data storage system
JP2008015823A (ja) * 2006-07-06 2008-01-24 Citizen Holdings Co Ltd 通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ
JP2010102458A (ja) * 2008-10-22 2010-05-06 Hitachi Ltd コマンドの起動を制御するストレージシステム及び方法
JP2012150710A (ja) * 2011-01-20 2012-08-09 Nec Corp コマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラム
WO2012164386A2 (en) * 2011-06-01 2012-12-06 Alcatel Lucent Traffic control method and traffic control apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151749A (ja) * 2017-03-10 2018-09-27 日本電気株式会社 制御装置、情報処理システム、制御方法およびプログラム

Similar Documents

Publication Publication Date Title
US8271749B2 (en) Storage subsystem and method of executing commands by controller
US8387063B2 (en) Storage apparatus and load balancing method
US8806070B2 (en) Storage device, and storage device control method
US20110119679A1 (en) Method and system of an i/o stack for controlling flows of workload specific i/o requests
US10664182B2 (en) Storage system
JP6224186B1 (ja) Raidストレージシステム、ストレージコントローラ及びraidアレイパトロール方法
US9898201B2 (en) Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering
US9836246B2 (en) Storage management device, performance adjustment method, and computer-readable recording medium
WO2013042174A1 (en) Computer system and storage management method
US20170262231A1 (en) Memory controller for increasing endurance of memory, storage device, and method of controlling storage device
JP2013524334A (ja) コマンドの起動を制御するストレージ装置及びその方法
JP2017049872A (ja) ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
GB2519549A (en) Write cache destaging
US10310923B1 (en) Probabilistic aging command sorting
JP5471822B2 (ja) 入出力制御プログラム、情報処理装置および入出力制御方法
KR102526104B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
JP5167410B2 (ja) 複数のマイクロプロセッサを有するストレージシステム、及び、そのストレージシステムにおける処理分担方法
WO2016132428A1 (ja) ストレージ装置
JP5949224B2 (ja) ストレージ制御装置、該プログラム及び該方法
US9563574B2 (en) Storage control device and method of controlling storage control device
WO2016059715A1 (ja) 計算機システム
US10740040B2 (en) System and computer for controlling caching for logical storage
US10783096B2 (en) Storage system and method of controlling I/O processing
JP6578694B2 (ja) 情報処理装置、方法及びプログラム
JP6244972B2 (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: 15882533

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP