WO2016121004A1 - ストレージ装置 - Google Patents
ストレージ装置 Download PDFInfo
- Publication number
- WO2016121004A1 WO2016121004A1 PCT/JP2015/052224 JP2015052224W WO2016121004A1 WO 2016121004 A1 WO2016121004 A1 WO 2016121004A1 JP 2015052224 W JP2015052224 W JP 2015052224W WO 2016121004 A1 WO2016121004 A1 WO 2016121004A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- controller
- write data
- storage apparatus
- cache
- destage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
Definitions
- the present invention relates to a storage apparatus.
- Patent Document 1 discloses a storage apparatus provided with a plurality of controllers and a plurality of controllers equipped with a plurality of processors.
- each controller has a back-end path (back-end loop) connected to a plurality of drives.
- the storage device defines a plurality of logical units (LUs) from storage areas of a plurality of drives, and for each LU, one of the controllers (or MPU) is in charge of processing related to the LU. It has been established.
- the right in charge of processing related to the LU is called an owner right.
- the ownership can be changed as appropriate, and the ownership of an LU may be transferred to another controller / MPU.
- One of the objects of the present invention is to enable back-end path load balancing.
- a storage apparatus includes a plurality of controllers and a plurality of storage devices.
- Each controller has a cache and a back-end path connected to a plurality of storage devices.
- the controller stores the write data from the host computer in the cache of multiple controllers. Further, the utilization rates of the back end paths of a plurality of controllers are predicted, and a controller that destages the write data to the storage device is determined based on the prediction result.
- the storage apparatus can appropriately perform load distribution on the back-end path.
- FIG. 1 shows a configuration of a storage apparatus 1 according to the present embodiment and a configuration of a computer system to which the storage apparatus 1 is applied.
- the computer system includes a storage apparatus 1, a host 2, and a management terminal 6.
- the storage device 1 is connected to a host 2 via a SAN (Storage Area Network) 4 and to a management terminal 6 via a LAN 5.
- SAN Storage Area Network
- the storage apparatus 1 includes storage controllers (hereinafter abbreviated as “controllers”) 11 a and 11 b and an enclosure 12 having a plurality of drives 121.
- controllers storage controllers
- the hardware configuration of the controllers 11a and 11b is the same.
- the suffix “a” or “b” is added to the reference number.
- reference numerals without subscripts are used.
- the controller 11a or 11b when specifying either the controller 11a or 11b, it is expressed as “controller 11a” or “controller 11b”.
- the subscripts “a” and “b” are not attached, and they are expressed as “controller 11”.
- the storage controllers 11a and 11b are respectively an MPU 111 for controlling the storage device 1, a memory 116, a front end interface (FE I / F) 113 for connecting to the SAN 4, and a back end interface for connecting the drive 121. (BE I / F) 114, IF-CTL 115, and NIC (Network Interface Controller) 117 for connecting to LAN 5.
- the number of storage controllers (two controllers 11a or 11b in FIG. 1) included in the storage apparatus 1 is not limited to the number shown in FIG. A configuration in which three or more controllers 11 exist or a configuration in which only one controller 11 exists may be employed.
- the storage controller 11a may be referred to as “controller # 0” or “CTL # 0”.
- the storage controller 11b may be expressed as “controller # 1” or “CTL # 1”.
- the MPU 111 is a processor for controlling the storage apparatus 1 by executing a program stored in the memory 116.
- the memory 116 stores a control information storage area (hereinafter abbreviated as a control area) for storing programs executed by the MPU 111, management information necessary for controlling the storage apparatus 1, write data from the host 2, It has a cache area (hereinafter also referred to as “cache”) for temporarily storing data read from the drive 12.
- a volatile memory such as a DRAM is used for the memory 116.
- the controller 11 may be provided with means for holding the data in the memory 116 at the time of a power failure by an auxiliary power source such as a battery so that the data on the memory 116 is not lost even if a failure such as a power failure occurs.
- the memory 116 may be a non-volatile storage medium such as a flash memory.
- the FE I / F 113 is an interface for transmitting and receiving data to and from the host 2 via the SAN 4.
- the FE I / F 113 includes a DMA (Direct Memory Access) controller (not shown), and a write from the host 2 based on an instruction from the MPU 111. It has a function of performing processing of transmitting data to the cache 112 or transmitting data in the cache 112 to the host 2.
- DMA Direct Memory Access
- the BE I / F 114 is an interface for transmitting / receiving data to / from the drive 121 and includes a DMA controller similar to the FE I / F 113, and transmits data in the cache 112 to the drive 121 based on an instruction from the MPU 111, or It has a function of transmitting data of the drive 121 to the cache 112.
- the IF-CTL 115 is a component for interconnecting the MPU 111, the memory 116, the FE I / F 113, and the BE I / F 114.
- the IF-CTL 115a of the storage controller 11a and the IF-CTL 115b of the storage controller 11b are interconnected via a communication path 118. Thereby, data and control information can be mutually transferred between the controllers 11a and 11b.
- the controller 11 has a NIC 117 and can communicate with the management terminal 6.
- a plurality of drives 121 are mounted in the storage apparatus 1 and are storage devices for finally storing mainly write data from the host 2.
- the drive 121 uses a magnetic disk such as an HDD (Hard Disk Drive).
- HDD Hard Disk Drive
- SSD Solid State Drive
- Each drive 121 has at least two interfaces (not shown).
- the first interface is for connecting the drive 121 to the BE I / F 114a of the controller 11a.
- the other interface is for connecting the drive 121 to the BE I / F 114b of the controller 11b.
- the drive 121 is connected to both the controller 11a and the controller 11b. Further, both the controller 11a and the controller 11b are accessible to the respective drives 121.
- the path between the BE I / F 114 and the drive is referred to as a “back-end path”.
- the host 2 is, for example, a server computer that forms the core of a business system, and includes hardware resources such as a processor, a memory, a host bus adapter for connecting to the SAN 4, a local input / output device, and a device driver and an operating system (OS ), Software resources such as application programs.
- hardware resources such as a processor, a memory, a host bus adapter for connecting to the SAN 4, a local input / output device, and a device driver and an operating system (OS ), Software resources such as application programs.
- OS operating system
- FIG. 1 only one host 2 is shown. However, in practice, there may be a configuration in which a plurality of hosts 2 exist on the computer system and the plurality of hosts 2 access the storage apparatus 1.
- the management terminal 6 is a terminal for performing management operations of the storage apparatus 1 and includes a processor, a memory, a network interface for connecting to the LAN 5, a local input / output device such as a keyboard and a display.
- the management terminal 6 includes software (management software) for management operation of the storage apparatus 1, and performs management operation of the storage apparatus 1 by executing this management software.
- the management operation is an operation for defining a volume to be provided to the host 2 or the like. This operation is performed by the administrator of the storage apparatus 1 using the local input / output device of the management terminal 6.
- the SAN 4 is a network used for transmitting an access request and read data / write data accompanying the access request when the host 2 accesses (reads / writes) data in a storage area (volume) in the storage apparatus 1.
- a fiber channel is used as a data transmission medium constituting the SAN 4.
- other transmission media such as Ethernet may be used.
- the LAN 5 is a transmission path used when the management terminal 6 communicates with the storage apparatus 1. For example, Ethernet is used as a transmission medium for this transmission path.
- the storage apparatus 1 forms a logical volume from the storage areas of one or more drives 121 among the plurality of drives 121.
- this logical volume is provided instead of the drive 121.
- each logical volume formed in the storage apparatus 1 is formed using only the storage area of one drive 121 will be described.
- the storage apparatus 1 manages each drive 121 with a unique identification number in the storage apparatus 1.
- This identification number is called a drive number (sometimes written as drive #).
- the storage apparatus 1 manages the formed logical volume with a unique identification number in the storage apparatus 1.
- This number is referred to as a logical unit number (also referred to as LUN.
- LUN is an abbreviation for Logical Unit Number).
- LUN # x x is an integer value of 0 or more
- drive #y y is an integer value of 0 or more
- the controller 11 that processes an access request for each logical volume coming from the host 2 is determined as one of the controllers.
- the controller 11 that processes an access request for a certain logical volume is called an “owner controller” or “owner”.
- owner controller or “owner”.
- an access request may be issued to either the FE I / F 113a of the controller 11a or the FE I / F 113b of the controller 11b.
- the storage apparatus 1 stores management information for managing the relationship between the drive 121 and the logical volume in the memory 116.
- This management information is referred to as owner information T200.
- FIG. 2 shows a configuration example of the owner information T200.
- the owner information T200 is a table having columns of LUN (T201), drive # (T202), and owner (T203). Each row indicates that the logical volume specified by LUN (T201) is formed using the storage area of drive # (T202).
- the owner (T203) stores information about the owner of the logical volume specified by the LUN (T201). In this embodiment, when the LUN (T201) is x (x is an integer value greater than or equal to 0) and the owner (T203) value is 0, the owner of the LUN #x is the controller 11a. Further, when the value of the owner (T203) is 1, it represents that the owner of LUN # x is the controller 11b.
- the LUN, drive number, and owner information of the logical volume are the LUN (T201) of the owner information T200, and the drive # (T202). ) And the owner (T203).
- the user can freely set the drive 121 and the owner of the logical volume used for forming the logical volume.
- the owner can be changed later.
- the storage apparatus 1 may autonomously change the owner. For example, when the load of the MPU 111a becomes higher than that of the MPU 111b, the storage apparatus 1 may change the MPU 111b to be the owner for some logical volumes that are autonomously owned by the MPU 111a. Thereby, the load of MPU111 of each controller 11 can be smoothed.
- the controller 11 When the host 2 issues an access request (command) to the LUN #x to the controller 11 that is not the owner of the LUN #x, the controller 11 sends the received command to the owner of the LUN #x via the communication path 118. Transfer to an owner controller. The owner controller then performs the process specified by the command. Since this is a known process, it will not be described below.
- an example in which the host 2 issues an access request to the controller 11 that is the owner of LUN #x will be described unless otherwise specified.
- FIG. 3 shows main programs stored in the memory 116, management information stored in the control area, and types of data stored in the cache. Information other than the information and programs described below is also stored in the memory 116, but the following description will focus on matters related to the present embodiment. First, before the description of FIG. 3, an outline of processing executed by the storage apparatus 1 when the storage apparatus 1 according to the present embodiment receives a write request from the host 2 will be described.
- the controller 11 When the host 2 issues a write request (write command) to the FE I / F 113, the controller 11 stores the write data in the cache. This process is performed by the MPU 111 executing the front end program 151.
- the controller 11a when a write command and write data are transmitted to the FE I / F 113a, the controller 11a stores the write data in the memory 116a and transmits a copy of the write data to the controller 11b.
- the controller 11b that received the copy of the write data stores the copy of the write data in the memory 116b.
- the write data is stored in both the memory 116a and the memory 116b. This is performed to ensure availability (even if the write data stored in the cache of the controller 11a is lost due to a failure or the like, the write data is stored in the cache of the controller 11b).
- the storage apparatus 1 employs a so-called write back method.
- the controller 11a When the write data is stored in the memory 116, the controller 11a responds to the host 2 that the write process has been completed. At this time, the write data is not stored (reflected) in the drive 121. After a while, the controller 11 stores the write data in the drive 121.
- the process of storing the write data stored in the cache in the drive 121 is called “destage”. The destage is performed by the MPU 111 executing the destage program 152.
- dirty data data stored in the cache and not reflected in the drive 121
- clean data data reflected in the drive 121 among the data stored in the cache
- the controller 11a uses the area from address 0 to (yyyyyyyy-1) in the memory 116a to store the data written by the host 2 to the logical volume for which the controller 11a is the owner. In this embodiment, this area is called a CTL # 0 data area. As described above, the data stored in the CTL # 0 data area is also stored in the memory 116b of the controller 11b. At this time, the controller 11a causes the controller 11b to store a copy of the data stored at the address A (0 ⁇ A ⁇ yyyyyy ⁇ 1) of the memory 116a at the same address (address A) of the memory 116b.
- the area in the memory 116b from address 0 to (yyyyyyyy-1) is called a CTL # 0 mirror area. The sizes of the CTL # 0 data area and the CTL # 0 mirror area are the same.
- the controller 11b does the same when storing the write data in the cache.
- the controller 11b uses the area starting from the address yyyyyy in the memory 116b to store data written by the host 2 to the logical volume for which the controller 11b is the owner. In this embodiment, this area is called a CTL # 1 data area.
- the CTL # 0 data area and the CTL # 1 data area have the same size.
- the controller 11b also stores the data stored in the CTL # 1 data area in the memory 116a of the controller 11a. At this time, the controller 11b stores a copy of the data stored at the address B (yyyyyyyy ⁇ B) of the memory 116a at the same address (address B) of the memory 116a.
- This area of the memory 116a is called a CTL # 1 mirror area.
- the sizes of the CTL # 1 data area and the CTL # 1 mirror area are the same.
- Management information for managing data stored in the cache is stored in the control area.
- the controller 11 has four types of CTL # 0 dirty cache management information (T300-1), CTL # 0 clean cache management information, CTL # 1 dirty cache management information (T300-2), and CTL # 1 clean cache management information.
- the CTL # 0 dirty cache management information (T300-1) is information for managing dirty data among the data stored in the CTL # 0 data area.
- CTL # 1 dirty cache management information (T300-2) is information for managing dirty data among the data stored in the CTL # 1 data area.
- FIG. 4 shows an example of CTL # 0 dirty cache management information (T300-1) and CTL # 1 dirty cache management information (T300-2).
- CTL # 0 dirty cache management information (T300-1) and CTL # 1 dirty cache management information (T300-2) all have columns of cache address (Cache Addr.) T301, LUN (T302), and LBA (T303). It is a table that has. Each of these lines represents that the data in the area on the logical volume specified by LUN (T302) and LBA (T303) is stored (cached) at the address on the memory 116 specified by the cache address T301. ing. In a row where LUN (T302) and LBA (T303) are invalid values (NULL), write data (dirty data) is not stored at the address on the memory 116 specified by the cache address (T301) of the row. Means.
- the CTL # 0 dirty cache management information (T300-1a) and CTL # 1 dirty cache management information (T300-2a) stored in the control area of the memory 116a are respectively stored in the CTL # 0 data area. This is for managing information about data and information about dirty data stored in the CTL # 1 mirror area.
- the CTL # 0 dirty cache management information (T300-1b) and CTL # 1 dirty cache management information (T300-2b) stored in the control area of the memory 116b are respectively stored in the CTL # 0 mirror area. This is for managing information about data and information about dirty data stored in the CTL # 1 data area.
- the controller 11a When the controller 11a stores the write data in the cache, it determines the address of the area on the cache for storing the write data (assuming this address is C), and stores the write data. At the same time, the controller 11a sets the logical volume in which write data is to be stored in the LUN (T302) and LBA (T303) of the row where the cache address T301 is C in the CTL # 0 dirty cache management information (T300-1a). The LUN and LBA are stored (the information is included in the write command received from the host 2).
- the controller 11a transmits the write data, the address C (address of the memory 116a or 116b), and the LUN and LBA information of the logical volume in which the write data is stored to the controller 11b.
- the controller 11b Upon receiving these pieces of information, the controller 11b stores the write data at the address C (CTL # 0 mirror area) of the memory 116.
- the LUN and LBA of the logical volume in which the write data is to be stored are stored in the LUN (T302) and LBA (T303) of the row where the cache address T301 of the CTL # 0 dirty cache management information (T300-1b) is C. To do.
- the same process is performed when the controller 11b stores the write data received from the host 2 in the cache.
- the controller 11b stores the write data in the CTL # 1 data area and, at the same time, stores information on the storage location of the write data (address on the cache, LUN and LBA of the logical volume in which the write data is stored) in the CTL # 1 dirty.
- the controller 11b transmits information regarding the write data and the storage position of the write data to the controller 11a.
- the controller 11a stores the write data in the CTL # 1 mirror area, and stores information related to the write data storage location in the CTL # 1 dirty cache management information (T300-2a).
- CTL # 0 clean cache management information and CTL # 1 clean cache management information are information for managing clean data. Since these configurations are the same as CTL # 0 dirty cache management information (T300-1), the contents of the management information will not be described.
- the write data stored in the cache is destaged after a while. For example, when the controller 11a destages the write data, information on the destaged write data (cache address (T301), LUN (T302), LBA (stored in the CTL # 0 dirty cache management information (T300-1a)) T303)) is moved to the CTL # 0 clean cache management information. Then, the information stored in the CTL # 0 dirty cache management information (T300-1a) is deleted (LUN (T302), LBA (T303) is changed to an invalid value (NULL)).
- the destage process is performed independently (at a different timing) from the process of receiving the write data from the host 2 and storing it in the cache (the process performed by the front-end program 151).
- the destage is performed by periodically executing the destage program 152 by the controller 11 (the MPU 111).
- the front-end program 151 stores the write data in the cache
- the front-end program 151 creates information called task management information so that the destage program 152 can identify the data to be destaged.
- Task management information is created every time write data is stored.
- An example of the task management information 400 is shown in FIG.
- the task management information 400 includes information on drive # (401), LBA (402), and cache address (Cache Addr.) 403.
- the cache address 403 stores the address of the cache where the write data is stored.
- Drive number (401) and LBA (402) store the drive number and LBA of the drive 121 where write data should be stored (destaged).
- the front-end program 151 stores LUN (T302) and LBA (T303) in the CTL # 0 dirty cache management information (T300-1a) when the write data is stored in the cache. Further, at this time, the front-end program 151 generates information by converting the LUN (T302) into the drive # from the information stored in the CTL # 0 dirty cache management information (T300-1a) by referring to the owner information T200. To do. This becomes task management information 400.
- the created task management information 400 is stored at the end of the task queue 500.
- the task queue 500 is a FIFO type storage area.
- the task management information 400 stored in the task queue 500 is sequentially moved to the end of the destage queue 550 (FIG. 4) when the schedule program 153 is executed by the MPU 111.
- the task queue 500 is not necessarily a FIFO.
- the destage queue 550 is a FIFO type storage area.
- the destage program 152 extracts one (or a plurality) of task management information 400 from the head of the destage queue 550, and destages the write data (dirty data) on the cache based on the task management information 400. Specifically, the data in the cache area specified by the cache address 403 is written in the area on the drive 121 specified by drive # (401) and LBA (402).
- the front-end program 151a creates task management information 400 for the write data stored in the CTL # 0 data area.
- the front-end program 151b creates task management information 400 for the write data stored in the CTL # 1 data area. That is, the controllers 11a and 11b, as a general rule, are stored in an area in which write data to the logical volume for which the controller 11a is the owner and an area in which write data to the logical volume for which the controller 11b is the owner are stored. Destage the data. However, since all the dirty data is stored in both the cache of the controller 11a and the cache of the controller 11b, performance improvement can be expected when destaging is performed using both the controllers 11a and 11b.
- the schedule program 153 executed by the storage apparatus 1 according to the present embodiment will be described with reference to FIGS.
- the schedule program 153 is one of programs executed by the MPU 111 and is executed when a predetermined number or more of task management information 400 is stored in the task queue 500. In the following, the case where the schedule program 153 is executed by the MPU 111a will be mainly described, but the same processing is performed also by the MPU 111b.
- the schedule program 153a is a program for determining whether to destage using only the controller 11a or to destage using both the controllers 11a and 11b.
- the purpose of this determination is to efficiently use the back-end paths of both the controller 11a and the controller 11b and level the load on the back-end path. Therefore, when it is predicted that the utilization rate of the back end path of the controller 11a will be high, destage is performed using both the back end paths of the controllers 11a and 11b. However, if the utilization rate of the back end path of the controller 11b becomes extremely high as a result of performing the destage using the back end path of the controller 11b, both of the back end paths are used efficiently. Therefore, the schedule program 153a destages data using the back-end paths of both the controllers 11a and 11b when the utilization rate of the back-end path of the controller 11b is predicted not to be so high.
- the storage apparatus 1 mainly uses information on the amount of dirty data stored in the cache for the prediction of the backend path usage rate.
- Dirty data is data that is not staged and is destaged via the backend path. Therefore, when the amount of dirty data is large, a prediction that the utilization rate of the backend path is high is valid.
- the amount of dirty data stored in the CTL # 0 data area (this is write data written to the logical volume for which the controller 11a is the owner) is small, the backend path utilization rate of the controller 11a Is not expected to be high (the usage rate does not exceed a certain threshold). Therefore, in this case, the schedule program 153a determines to perform destage using only the back end path of the controller 11a.
- the schedule program 153a predicts the utilization rate of the back end path of the controller 11b by referring to the dirty data amount stored in the CTL # 1 data area of the controller 11b.
- the schedule program 153a performs destage using the back-end paths of both the controllers 11a and 11b. To decide.
- the MPU 111a first checks the amount of dirty data stored in the CTL # 0 data area (S10).
- the dirty data amount can be calculated by counting the rows where the LUN (T302) and LBA (T303) are not invalid values (NULL) in the CTL # 0 dirty cache management information (T300-1a).
- the cache occupancy rate is calculated using the dirty data amount, and processing performed thereafter is changed based on the cache occupancy rate.
- the cache occupancy rate of the controller 11a is Dirty data amount / value calculated using a formula for calculating the size of the CTL # 0 data area, that is, the ratio of the dirty data amount to the size of the CTL # 0 data area.
- the cache occupancy of the controller 11b is Dirty data amount / value calculated using a formula for calculating the size of the CTL # 1 data area. In the process described below, determination using this cache occupancy is mainly performed.
- the back-end path usage rate is predicted from the cache occupancy rate, and instead of the cache occupancy rate.
- the back-end path utilization rate (predicted value thereof) may be calculated according to the following formula, and determination using this may be performed.
- the MPU 111a determines to perform destage using only the controller 11a (S50). In this case, the MPU 111a moves the task management information 400 stored in the task queue 500 to the destage queue 550 of the controller 11a. If the cache occupancy is greater than 10%, further determination is made.
- the MPU 111a confirms the load (busy rate) of the MPU 111a (S20).
- the MPU 111a determines to perform destage using only the controller 11a (S50).
- the MPU 111a checks the amount of dirty data stored in the CTL # 1 data area and calculates the cache occupancy rate in the same manner as in S10 (FIG. 8 S310).
- This dirty data amount can be calculated by counting the rows where LUN (T302) and LBA (T303) are not invalid values (NULL) in CTL # 1 dirty cache management information (T300-2a). Alternatively, the dirty amount may be notified from the controller 11b.
- the MPU 111a determines to perform the destage using only the controller 11a (S350). In S350, the same processing as S50 is performed. When the cache occupancy of the CTL # 1 data area is 10% or less (S310: 10% or less), the MPU 111a confirms the busy rate of the MPU 111b by receiving the busy rate of the MPU 111b from the controller 11b (S320). .
- the MPU 111 determines to perform destage using only the controller 11a (S350).
- the MPU 111 determines to perform destage using both the controllers 11a and 11b (S330). Details of S330 will be described later.
- the reason for changing the judgment based on the busy rate of the MPU 111b is as follows. If the controller 11b performs destage processing that should be performed by the controller 11a when the load (busy rate) of the MPU 111b is high, the load on the controller 11b may increase, which may adversely affect the processing performed by the controller 11b. Because there is. Further, if an imbalance occurs in the loads on the controllers 11a and 11b (the load on the MPU 111 or the load on the back end path), the performance of the entire storage apparatus 1 is not improved. Therefore, when the busy rate of the MPU 111b is high, the schedule program 153 performs control to perform destage using only the controller 11a.
- the MPU 111a confirms the load (busy rate) of the MPU 111a (S30).
- the MPU 111 determines to perform destage using only the controller 11a (S50).
- the busy rate of the MPU 111a is greater than 40% and equal to or less than 70%, the above-described processing after S310 (FIG. 8) is performed.
- the processing after S110 (FIG. 7) is executed.
- the MPU 111a confirms the amount of dirty data stored in the CTL # 1 data area, and calculates the cache occupancy rate as in S10. This is the same processing as S310.
- the MPU 111a determines to perform destage using only the controller 11a (S150). In S150, the same processing as S50 is performed.
- the MPU 111a checks the busy rate of the MPU 111b (S160). This is the same processing as S320.
- the busy rate of the MPU 111b is greater than 70%, the MPU 111a determines to perform destage using only the controller 11a (S150).
- the busy rate of the MPU 111b is 70% or less, the MPU 111 determines to perform destage using both the controllers 11a and 11b (S170). In S170, the same processing as S330 is performed, and details will be described later.
- the MPU 111a confirms the busy rate of the MPU 111b (S120). This is the same processing as S320.
- the MPU 111a determines to perform the destage using only the controller 11a (S150).
- the MPU 111 determines to perform destage using both the controllers 11a and 11b (S130). In S130, the same processing as S330 is performed, and details will be described later.
- the reason for changing the determination based on the busy rate of the MPU 111b in S120 and S160 is as described above.
- the reason for changing the judgment between the case where the cache occupancy rate of the CTL # 1 data area is relatively high (greater than 10% and 30% or less) and the case where it is low (10% or less) is that the cache of the CTL # 1 data area This is because the utilization rate of the back end path of the controller 11b tends to be higher when the occupation ratio is relatively high. For this reason, when the cache occupancy of the CTL # 1 data area is relatively high, conditions for performing destage using both the controllers 11a and 11b are made stricter than when the cache occupancy is relatively low (10% or less).
- S330 (or S130, S170)
- the MPU 111a destages the write data written to the logical volume for which the controller 11a is the owner using the back-end paths of both the controller 11a and the controller 11b. To do.
- Write data written to the logical volume that is the owner of the controller 11a is stored in the CTL # 0 data area (and the CTL # 0 mirror area).
- the task management information for the write data stored in the CTL # 0 data area is stored only in the task queue 500a of the controller 11a.
- the MPU 111a moves part of the plurality of task management information 400 stored in the task queue 500a to the destage queue 550a of the controller 11a, and transmits the rest to the controller 11b. To the destage queue 550b of the controller 11b. As a result, part of the destage processing that is originally performed using the back-end path of the controller 11a is moved to the controller 11b, so that load distribution of the back-end path is realized.
- the selection method of the task management information 400 to be moved to the destage queue 550b various methods can be adopted. For example, if a plurality of 2n (n is a positive integer value) task management information 400 is stored in the task queue 500a, the same number (that is, n) of task management information 400 is moved to the destage queues 550a and 550b. A method is conceivable. Alternatively, when two types of task management information are stored, that is, task management information 400 with drive # (401) being 0 and task management information 400 with drive # (401) being 1, drive # (401) is 0. The task management information 400 may be moved to the destage queue 550a, and the task management information 400 whose drive # (401) is 1 may be moved to the destage queue 550b.
- a part of the plurality of task management information 400 stored in the task queue 500a is moved to the destage queue 550b.
- the task management information 400 moved to the destage queue 550b is processed by the destage program 152b executed by the MPU 111b of the controller 11b.
- the destage program 152b When the destage program 152b performs processing on the task management information 400 moved from the task queue 500a to the destage queue 550b, or performs processing on the task management information 400 moved from the task queue 500b to the destage queue 550b And there is no particular change. In either case, the data (dirty data) stored in the cache area specified by the cache address 403 is written to the area on the drive 121 specified by the drive # (401) and LBA (402).
- the address of the CTL # 0 data area is stored in the cache address 403 of the task management information 400 moved from the task queue 500a to the destage queue 550b.
- the destaging program 152b performs destaging, it does not read data from the address of the CTL # 0 data area, but from the address of the CTL # 0 mirror area in the memory 116b (address stored in the cache address 403). Read data. This is because a copy (mirror) of the write data stored in the CTL # 0 data area is stored in the CTL # 0 mirror area, and it is not necessary to acquire data from the CTL # 0 data area.
- each controller predicts the load (utilization rate) of the back-end path, and when it is predicted that the load of the back-end path will be higher (higher than a predetermined threshold), other controllers It is determined whether performance improvement can be expected by sharing the load of destaging processing. Specifically, when the load on the back end path of another controller is predicted to be low, performance improvement can be expected by sharing the load of destage processing with the other controller. In that case, the controller causes the other controller to execute a part of the destage processing that should originally be performed.
- the load on the MPU is not high, but the load on the backend path may be high.
- load balancing may not be adequately dealt with only by changing the ownership of the logical volume that has been performed conventionally.
- the load on the back-end path can be smoothed between the controllers, and the performance can be improved.
- the number of controllers 11a and 11b in the storage apparatus 1 is not limited to the number shown in FIG.
- the number of components in the controllers 11a and 11b, for example, the MPU 111, the FE I / F 113, the BE I / F 114, etc. is not limited to the number shown in FIG. 1, and there are a plurality of MPUs and the like. It may be.
- a plurality of memories 116 may be provided in the controller 11, and the cache and the control area may be stored in different memories.
- values such as 10% or less and more than 50% used in the determination in the embodiment described above are examples, and the determination may be performed using other values.
- the determination process described above may be simplified. For example, in the example described above, if the cache occupancy rate of the CTL # 0 data area is greater than 50%, the cache occupancy ratio of the CTL # 1 data area is 10% or less or 10% to 30%. If the processing content to be performed is changed (S120 or S160 is executed), but the cache occupancy of the CTL # 1 data area is 30% (or any other value) or less, uniform S120 ( Or you may make it perform determination of S160).
- the determination of S20 (or S30) that is, the determination based on the load of the MPUMPU 111a) is not performed, but the determination based on the load of the MPU 111b (S320) may be performed.
- the cache occupancy rate is used for various determinations.
- the use of the back end path is determined from the cache occupancy rate.
- the rate may be calculated to determine whether or not the back-end path usage rate exceeds a predetermined threshold.
- the determination may be made using information other than the cache occupancy rate.
- the length of the task queue 500 and / or the destage queue 550 may be used.
- the backend path utilization rate may be calculated using the length of the task queue 500 and / or the destage queue 550 instead of the cache occupancy rate.
- the length of the task queue 500 and / or the destage queue 550 may be used as it is for the determination without calculating the utilization rate of the back-end path.
- each program in the embodiment may be realized by hardware using hard wired logic or the like.
- each program in the embodiment may be stored in a storage medium such as a CD-ROM or DVD and provided.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本発明の一観点に係るストレージ装置は、複数のコントローラと複数の記憶デバイスを有する。また各コントローラは、キャッシュメモリと、複数の記憶デバイスに接続されるバックエンドパスを有する。ホストからライトデータを受領すると、コントローラは自身のキャッシュメモリと別のコントローラのキャッシュメモリにライトデータを格納する。コントローラは、各コントローラのバックエンドパスの利用率の予測を行い、予測結果に基づいて、コントローラのキャッシュメモリに格納されたライトデータのデステージを行うコントローラを決定する。
Description
本発明は、ストレージ装置に関する。
現代のストレージ装置は、高性能化・高可用化を目的として、複数のプロセッサを搭載するものが多い。たとえば特許文献1には、複数のドライブと、複数のプロセッサを搭載するコントローラを複数設けたストレージ装置が開示されている。
特許文献1に開示のストレージ装置では、各コントローラは複数ドライブに接続されるバックエンドパス(バックエンドループ)を有する。当該ストレージ装置は複数ドライブの記憶領域から複数の論理ユニット(LU)を定義し、LU毎に、複数のコントローラのうちいずれか1つのコントローラ(またはMPU)が当該LUに係る処理を担当するように定められている。LUに係る処理を担当する権利は、オーナ権と呼ばれる。特許文献1に開示のストレージ装置では、オーナ権は適宜変更可能で、あるLUのオーナ権を別のコントローラ・MPUに移してもよい。
特許文献1に開示の技術では、オーナ権が適宜変更可能であるので、各コントローラの負荷状況に応じてオーナ権を適宜変更することで、コントローラのMPUの負荷分散が可能である。しかしながら、バックエンドパスが性能上のボトルネックになっている場合には、オーナ権変更によるMPUの負荷分散を行っても、性能が上がらない。
本発明の目的の1つは、バックエンドパスの負荷分散を可能にすることにある。
上記課題を解決するために、本発明の一実施形態に係るストレージ装置は、複数のコントローラと複数の記憶デバイスを有する。また各コントローラは、キャッシュと、複数の記憶デバイスに接続されるバックエンドパスを有する。
コントローラは、ホスト計算機からのライトデータを、複数のコントローラの有するキャッシュに格納する。また複数のコントローラのバックエンドパスの利用率の予測を行い、予測結果に基づいて、ライトデータを記憶デバイスにデステージするコントローラを決定する。
本発明の一実施形態に係るストレージ装置では、バックエンドパスの負荷分散を適切に行うことができる。
以下、図面を参照して、本実施形態に係るストレージシステム(ストレージ装置)を説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。
図1は、本実施例に係るストレージ装置1の構成及びストレージ装置1が適用される計算機システムの構成を示す。計算機システムは、ストレージ装置1、ホスト2、管理端末6から構成される。ストレージ装置1は、SAN(Storage Area Network)4を介してホスト2と接続されるとともに、LAN5を介して管理端末6と接続される。
ストレージ装置1は、ストレージコントローラ(以下、「コントローラ」と略記)11a、11b、そして複数のドライブ121を有するエンクロージャ12から構成される。コントローラ11a、11bのハードウェア構成は同一である。以下で、コントローラ11a、11b内の構成物について説明する際、コントローラ11a内の構成物またはコントローラ11b内の構成物のいずれかを特定する際には、参照番号に添字“a”または“b”を付すが、コントローラ11a及び11b内の両方の構成物に共通の事項を説明する際には、添字を付さない参照番号を用いる。また、コントローラ11aまたは11bを特定する際にも、コントローラ11aまたは11bのいずれかを特定する際には、「コントローラ11a」または「コントローラ11b」と表記する。逆にコントローラ11a及び11bの両方について言及する場合には、添字“a”、“b”を付さず、「コントローラ11」と表記する。
ストレージコントローラ11a、11bはそれぞれ、当該ストレージ装置1の制御を行うためのMPU111、メモリ116、SAN4と接続するためのフロントエンドインタフェース(FE I/F)113、ドライブ121を接続するためのバックエンドインタフェース(BE I/F)114、IF-CTL115、LAN5に接続するためのNIC(Network Interface Controller)117を有する。なお、ストレージ装置1の有するストレージコントローラ(図1ではコントローラ11aまたは11bの2つ)の数は、図1に記載の数に限定されるものではない。コントローラ11が3つ以上存在する構成であっても、あるいは1つだけ存在する構成であってもよい。また、以下では、ストレージコントローラ11aのことを、「コントローラ#0」または「CTL#0」と表記することもある。そしてストレージコントローラ11bのことを、「コントローラ#1」または「CTL#1」と表記することもある。
MPU111は、メモリ116に格納されているプログラムを実行することで、ストレージ装置1の制御を行うためのプロセッサである。メモリ116は、MPU111で実行されるプログラムや、ストレージ装置1の制御に必要な管理情報等を格納するための、制御情報格納領域(以下、制御領域と略す)と、ホスト2からのライトデータやドライブ12から読み出したデータを一時的に格納するためのキャッシュ領域(以下、「キャッシュ」と呼ぶこともある)とを有する。メモリ116には一例として、DRAMのような揮発性メモリが用いられる。コントローラ11は、停電等の障害が発生してもメモリ116上のデータが消失しないように、バッテリ等の補助電源により、停電時にメモリ116のデータを保持できるような手段を備えていてもよい。またメモリ116に、フラッシュメモリ等の不揮発性記憶媒体が用いられていてもよい。
FE I/F113はSAN4を介してホスト2とのデータ送受信を行うためのインタフェースで、一例としてDMA(Direct Memory Access)コントローラ(非図示)を備え、MPU111からの指示に基づき、ホスト2からのライトデータをキャッシュ112に送信する、あるいはキャッシュ112内のデータをホスト2に送信する処理を行う機能を持つ。BE I/F114はドライブ121とのデータ送受信を行うためのインタフェースで、FE I/F113と同様にDMAコントローラを備え、MPU111からの指示に基づき、キャッシュ112内のデータをドライブ121に送信する、あるいはドライブ121のデータをキャッシュ112に送信する機能を持つ。
IF-CTL115は、MPU111、メモリ116、FE I/F113、BE I/F114を相互接続するためのコンポーネントである。また、ストレージコントローラ11aのIF-CTL115aと、ストレージコントローラ11bのIF-CTL115bとは、通信路118を介して相互接続されている。これにより、コントローラ11a、11b間でデータや制御情報を相互に転送できる。また、コントローラ11はNIC117を有し、管理端末6との通信を可能としている。
ドライブ121はストレージ装置1に複数搭載され、主にホスト2からのライトデータを最終的に格納するための記憶デバイスである。ドライブ121にはHDD(Hard Disk Drive)等の磁気ディスクが用いられる。ただしSSD(Solid State Drive)等の、HDD以外の記憶デバイスが用いられてもよい。
各ドライブ121は少なくとも、2つのインタフェース(非図示)を有する。1つ目のインタフェースは、ドライブ121をコントローラ11aのBE I/F114aに接続するためのものである。もう1つのインタフェースは、ドライブ121をコントローラ11bのBE I/F114bに接続するためのものである。この2つのインタフェースにより、ドライブ121はコントローラ11aとコントローラ11bの両方に接続される。またコントローラ11aとコントローラ11bはいずれも、各ドライブ121にアクセス可能な状態にされている。なお、以下では、BE I/F114とドライブ間の経路のことを、「バックエンドパス」と呼ぶ。
ホスト2は、一例として業務システムの中核をなすサーバコンピュータであり、プロセッサやメモリ、SAN4に接続するためのホストバスアダプタ、ローカル入出力デバイス等のハードウェア資源を備え、デバイスドライバやオペレーティングシステム(OS)、アプリケーションプログラムなどのソフトウェア資源を備えている。図1では、ホスト2は1台のみ記載されているが、実際には複数のホスト2が計算機システム上に存在し、複数のホスト2がストレージ装置1にアクセスする構成もあり得る。
管理端末6は、ストレージ装置1の管理操作を行うための端末で、プロセッサやメモリ、LAN5に接続するためのネットワークインタフェース、キーボードやディスプレイ等のローカル入出力デバイスを備える。また管理端末6は、ストレージ装置1の管理操作用のソフトウェア(管理ソフト)を備え、この管理ソフトを実行することによりストレージ装置1の管理操作を行う。管理操作とは具体的には、ホスト2等に提供するボリュームを定義する操作であり、この操作はストレージ装置1の管理者が、管理端末6のローカル入出力デバイスを用いて行う。
SAN4は、ホスト2がストレージ装置1内の記憶領域(ボリューム)のデータをアクセス(読み書き)する際に、アクセス要求やアクセス要求に伴うリードデータ・ライトデータを伝送するために用いられるネットワークである。本実施例に係る計算機システムでは、SAN4を構成するデータ伝送媒体としてファイバチャネル(FibreChannel)を用いている。ただし、イーサネット(Ethernet)等、その他の伝送媒体が用いられてもよい。LAN5は、管理端末6がストレージ装置1と通信を行う際に用いられる伝送路である。この伝送路の伝送媒体としてはたとえばイーサネットが用いられる。
続いて、ストレージ装置1内に作成されるボリュームと、ボリュームを管理するためにストレージ装置1内で用いられる管理情報について説明する。
本実施例に係るストレージ装置1は、複数のドライブ121の中の1以上のドライブ121の記憶領域から論理ボリュームを形成する。ホスト2に対しては、ドライブ121ではなくこの論理ボリュームを提供する。以下では、説明が冗長になることを防ぐため、ストレージ装置1で形成された各論理ボリュームが、1つのドライブ121の記憶領域のみを用いて形成されている構成について説明する。
ストレージ装置1は各ドライブ121に、ストレージ装置1内で一意な識別番号を付して管理している。この識別番号は、ドライブ番号(ドライブ#と表記されることもある)と呼ばれる。またストレージ装置1は、形成された論理ボリュームにもストレージ装置1内で一意な識別番号を付して管理している。この番号は論理ユニット番号(LUNと表記されることもある。LUNはLogical Unit Numberの略である)と呼ばれる。以下では、「LUN#x」(xは0以上の整数値である)と表記されている場合、LUNがx番の論理ボリュームのことを意味することとする。また「ドライブ#y」(yは0以上の整数値である)と表記されている場合、ドライブ番号がy番のドライブ121のことを意味することとする。
本実施例に係るストレージ装置1では、ホスト2から到来する各論理ボリュームに対するアクセス要求を処理するコントローラ11は、いずれか一方のコントローラに決められている。ある論理ボリュームに対するアクセス要求を処理するコントローラ11のことを、「オーナコントローラ」あるいは「オーナ」と呼ぶ。ただし、ホスト2が論理ボリュームにアクセスする際、コントローラ11aのFE I/F113aとコントローラ11bのFE I/F113bのいずれに対してアクセス要求を発行してもよい。
ストレージ装置1は、ドライブ121と論理ボリュームの関係を管理するための管理情報を、メモリ116に格納している。この管理情報をオーナ情報T200と呼ぶ。図2にオーナ情報T200の構成例を示す。オーナ情報T200は、LUN(T201)、ドライブ#(T202)、オーナ(T203)のカラムを有するテーブルである。各行は、LUN(T201)で特定される論理ボリュームが、ドライブ#(T202)の記憶領域を用いて形成されているものであることを表している。またオーナ(T203)には、LUN(T201)で特定される論理ボリュームのオーナについての情報が格納されている。本実施例では、LUN(T201)がx(xは0以上の整数値である)の行の、オーナ(T203)の値が0の時、LUN#xのオーナがコントローラ11aであることを表し、またオーナ(T203)の値が1の時、LUN#xのオーナがコントローラ11bであることを表す。
ストレージ装置1の管理者(ユーザ)がたとえば管理端末6を用いて、論理ボリュームを定義すると、論理ボリュームのLUN、ドライブ番号、オーナに関する情報が、オーナ情報T200のLUN(T201)、ドライブ#(T202)、オーナ(T203)に格納される。論理ボリュームの形成に用いられるドライブ121や論理ボリュームのオーナは、ユーザが自由に設定可能である。またオーナは、後から変更することも可能である。またストレージ装置1が自律的にオーナを変更することもある。たとえばMPU111aの負荷がMPU111bよりも高くなったとき、ストレージ装置1は自律的にMPU111aがオーナである一部の論理ボリュームについて、MPU111bをオーナにするように変更してもよい。これにより、各コントローラ11のMPU111の負荷を平滑化できる。
ホスト2がLUN#xに対するアクセス要求(コマンド)を、LUN#xのオーナでないコントローラ11に対して発行した時、そのコントローラ11は通信路118を介して、受領したコマンドをLUN#xのオーナであるオーナコントローラに転送する。そしてオーナコントローラが、コマンドで指定されている処理を行う。これは公知の処理であるため、以下では説明を行わない。以下では特に断りのない限り、ホスト2がLUN#xのオーナであるコントローラ11に、アクセス要求を発行する場合の例を説明する。
図3は、メモリ116に格納されている主なプログラム、制御領域に格納される管理情報、そしてキャッシュに格納されるデータの種類を表したものである。メモリ116には以下で説明する情報やプログラム以外のものも格納されるが、以下では本実施例に関係のある事項を中心に説明する。まず図3の説明の前に、本実施例に係るストレージ装置1がホスト2からライト要求を受領した時に、ストレージ装置1が実行する処理の概要を説明する。
ホスト2がFE I/F113に対してライト要求(ライトコマンド)を発行すると、コントローラ11は、ライトデータをキャッシュに格納する。この処理はMPU111がフロントエンドプログラム151を実行することで行われる。
たとえばFE I/F113aに対してライトコマンド及びライトデータが送信された場合、コントローラ11aはメモリ116aにライトデータを格納するとともに、コントローラ11bにライトデータの複製を送信する。ライトデータの複製を受信したコントローラ11bは、ライトデータの複製をメモリ116bに格納する。結果、ライトデータはメモリ116aとメモリ116bの両方に格納される。これは可用性を確保するため(コントローラ11aのキャッシュに格納したライトデータが障害などの理由で消失した場合でも、コントローラ11bのキャッシュにライトデータが保存されているようにする)に行われる。本実施例に係るストレージ装置1は、いわゆるライトバック方式を採用している。ライトデータがメモリ116に格納された時点で、コントローラ11aはホスト2に、ライト処理が完了した旨を応答する。この時点ではライトデータは、ドライブ121に格納(反映)されていない。しばらく後に、コントローラ11はライトデータをドライブ121に格納する。キャッシュに格納されたライトデータをドライブ121に格納する処理のことを「デステージ」と呼ぶ。デステージは、MPU111がデステージプログラム152を実行することで行われる。
本明細書では、キャッシュに格納されたデータのうち、ドライブ121に反映されていないデータのことを、「ダーティデータ」と呼ぶ。一方キャッシュに格納されたデータのうち、ドライブ121に反映されているデータのことを、「クリーンデータ」と呼ぶ。
キャッシュ内の領域について、図3を用いて説明する。コントローラ11aは、メモリ116aのアドレス0~(yyyyyyyy-1)の区間の領域を、コントローラ11aがオーナである論理ボリュームに対してホスト2が書き込んだデータを格納するために用いる。本実施例ではこの領域を、CTL#0データ領域と呼ぶ。先にも述べたが、CTL#0データ領域に格納したデータは、コントローラ11bのメモリ116bにも格納される。この時コントローラ11aはコントローラ11bに、メモリ116aのアドレスA(0≦A≦yyyyyyyy-1)に格納したデータの複製を、メモリ116bの同一アドレス(アドレスA)に格納させる。メモリ116bのアドレス0~(yyyyyyyy-1)の区間の領域は、CTL#0ミラー領域と呼ばれる。CTL#0データ領域とCTL#0ミラー領域のサイズは、同一である。
コントローラ11bも、ライトデータをキャッシュに格納する際、同様のことを行う。コントローラ11bは、メモリ116bのアドレスyyyyyyyyから始まる領域を、コントローラ11bがオーナである論理ボリュームに対してホスト2が書き込んだデータを格納するために用いる。本実施例ではこの領域を、CTL#1データ領域と呼ぶ。CTL#0データ領域とCTL#1データ領域は同一サイズとする。またコントローラ11bは、CTL#1データ領域に格納したデータを、コントローラ11aのメモリ116aにも格納させる。この時コントローラ11bは、メモリ116aのアドレスB(yyyyyyyy≦B)に格納したデータの複製を、メモリ116aの同一アドレス(アドレスB)に格納させる。メモリ116aのこの領域のことは、CTL#1ミラー領域と呼ばれる。CTL#1データ領域とCTL#1ミラー領域のサイズは、同一である。
制御領域には、キャッシュに格納されたデータを管理するための管理情報が格納される。コントローラ11は、CTL#0ダーティキャッシュ管理情報(T300-1)、CTL#0クリーンキャッシュ管理情報、CTL#1ダーティキャッシュ管理情報(T300-2)、CTL#1クリーンキャッシュ管理情報の、4種類の管理情報を有する。CTL#0ダーティキャッシュ管理情報(T300-1)は、CTL#0データ領域に格納されたデータのうち、ダーティデータを管理するための情報である。同様に、CTL#1ダーティキャッシュ管理情報(T300-2)は、CTL#1データ領域に格納されたデータのうち、ダーティデータを管理するための情報である。
図4に、CTL#0ダーティキャッシュ管理情報(T300-1)とCTL#1ダーティキャッシュ管理情報(T300-2)の例を示す。CTL#0ダーティキャッシュ管理情報(T300-1)とCTL#1ダーティキャッシュ管理情報(T300-2)はいずれも、キャッシュアドレス(Cache Addr.)T301、LUN(T302)、LBA(T303)のカラムを有するテーブルである。これらの各行は、LUN(T302)、LBA(T303)で特定される論理ボリューム上の領域のデータが、キャッシュアドレスT301で特定される、メモリ116上アドレスに格納(キャッシュ)されていることを表している。LUN(T302)、LBA(T303)が無効値(NULL)の行は、当該行のキャッシュアドレス(T301)で特定されるメモリ116上のアドレスに、ライトデータ(ダーティデータ)が格納されていないことを意味する。
なお、メモリ116aの制御領域に格納されるCTL#0ダーティキャッシュ管理情報(T300-1a)とCTL#1ダーティキャッシュ管理情報(T300-2a)はそれぞれ、CTL#0データ領域に格納されているダーティデータについての情報、CTL#1ミラー領域に格納されているダーティデータについての情報を管理するためのものである。一方、メモリ116bの制御領域に格納されるCTL#0ダーティキャッシュ管理情報(T300-1b)とCTL#1ダーティキャッシュ管理情報(T300-2b)はそれぞれ、CTL#0ミラー領域に格納されているダーティデータについての情報、CTL#1データ領域に格納されているダーティデータについての情報を管理するためのものである。
コントローラ11aがライトデータをキャッシュに格納する際、ライトデータを格納するためのキャッシュ上の領域のアドレス(仮にこのアドレスをCとする)を決定し、ライトデータを格納する。それと同時にコントローラ11aは、CTL#0ダーティキャッシュ管理情報(T300-1a)の、キャッシュアドレスT301がCの行の、LUN(T302)、LBA(T303)に、ライトデータの格納されるべき論理ボリュームのLUN及びLBAを格納する(これらの情報は、ホスト2から受領したライトコマンドに含まれている)。
さらにコントローラ11aは、ライトデータと、アドレスC(メモリ116aまたは116bのアドレス)、ライトデータの格納されるべき論理ボリュームのLUN及びLBAの情報を、コントローラ11bに送信する。コントローラ11bはこれらの情報を受信すると、ライトデータをメモリ116のアドレスC(CTL#0ミラー領域)に格納する。それと同時にCTL#0ダーティキャッシュ管理情報(T300-1b)のキャッシュアドレスT301がCの行の、LUN(T302)、LBA(T303)に、ライトデータの格納されるべき論理ボリュームのLUN及びLBAを格納する。
コントローラ11bがホスト2から受領したライトデータをキャッシュに格納する際も、同様の処理が行われる。コントローラ11bは、ライトデータをCTL#1データ領域に格納し、それとともにライトデータの格納位置に関する情報(キャッシュ上のアドレス、ライトデータの格納されるべき論理ボリュームのLUNやLBA)をCTL#1ダーティキャッシュ管理情報(T300-2b)に格納する。さらにコントローラ11bは、ライトデータとライトデータの格納位置に関する情報を、コントローラ11aに送信する。コントローラ11aは、ライトデータをCTL#1ミラー領域に格納し、ライトデータの格納位置に関する情報をCTL#1ダーティキャッシュ管理情報(T300-2a)に格納する。
CTL#0クリーンキャッシュ管理情報、CTL#1クリーンキャッシュ管理情報は、クリーンデータを管理するための情報である。これらの構成はCTL#0ダーティキャッシュ管理情報(T300-1)などと同じであるため、管理情報の内容の説明は行わない。
キャッシュに格納されたライトデータは、しばらく後にデステージされる。たとえばコントローラ11aはライトデータをデステージすると、CTL#0ダーティキャッシュ管理情報(T300-1a)に格納されている、デステージしたライトデータに関する情報(キャッシュアドレス(T301),LUN(T302),LBA(T303))を、CTL#0クリーンキャッシュ管理情報に移動する。そしてCTL#0ダーティキャッシュ管理情報(T300-1a)に格納されていた情報は削除される(LUN(T302)、LBA(T303)が無効値(NULL)に変更される)。
先にも述べたが、デステージ処理は、ライトデータをホスト2から受領してキャッシュに格納する処理(フロントエンドプログラム151によって行われる処理)とは独立して(異なる契機で)行われる。たとえば定期的にデステージプログラム152がコントローラ11(のMPU111)で実行されることで、デステージが行われる。フロントエンドプログラム151はライトデータをキャッシュに格納すると、デステージプログラム152がデステージ対象のデータを識別できるようにするために、タスク管理情報と呼ばれる情報を作成する。
タスク管理情報はライトデータを格納するたびに作成される。タスク管理情報400の例を図5に示す。タスク管理情報400は、ドライブ#(401)、LBA(402)、キャッシュアドレス(Cache Addr.)403の情報が含まれる。キャッシュアドレス403には、ライトデータが格納されているキャッシュのアドレスが格納されている。ドライブ#(401)、LBA(402)には、ライトデータが格納(デステージ)されるべき、ドライブ121のドライブ番号とLBAが格納される。
先に述べたが、フロントエンドプログラム151はライトデータをキャッシュに格納した時点で、CTL#0ダーティキャッシュ管理情報(T300-1a)にLUN(T302),LBA(T303)を格納する。さらにこの時フロントエンドプログラム151は、オーナ情報T200を参照することで、CTL#0ダーティキャッシュ管理情報(T300-1a)に格納した情報のうち、LUN(T302)をドライブ#に変換した情報を生成する。これがタスク管理情報400になる。
作成されたタスク管理情報400は、タスクキュー500の最後尾に格納される。タスクキュー500は、FIFO型の記憶領域である。タスクキュー500に格納されたタスク管理情報400は、スケジュールプログラム153がMPU111で実行されることにより、順次デステージキュー550(図4)の終端に移動される。ただしタスクキュー500は必ずしもFIFOである必要はない。
デステージキュー550もタスクキュー500と同様、FIFO型の記憶領域である。デステージプログラム152は、デステージキュー550の先頭からタスク管理情報400を1つ(または複数個)取り出し、タスク管理情報400に基づいて、キャッシュ上のライトデータ(ダーティデータ)のデステージを行う。具体的にはキャッシュアドレス403で特定されるキャッシュ上領域のデータを、ドライブ#(401)、LBA(402)で特定される、ドライブ121上領域に書き込む。
なお、フロントエンドプログラム151aは、CTL#0データ領域に格納されたライトデータについて、タスク管理情報400を作成する。フロントエンドプログラム151bは、CTL#1データ領域に格納されたライトデータについて、タスク管理情報400を作成する。つまりコントローラ11a、11bはそれぞれ原則として、コントローラ11aがオーナである論理ボリュームへのライトデータが格納された領域と、コントローラ11bがオーナである論理ボリュームへのライトデータが格納された領域に格納されたデータのデステージを行う。ただし、全てのダーティデータは、コントローラ11aのキャッシュとコントローラ11bのキャッシュの両方に格納されているので、コントローラ11a、11bの両方を用いてデステージを行うと、性能向上が期待できる。以下で、図6~図8を用いて、本実施例に係るストレージ装置1で実行されるスケジュールプログラム153について説明する。
スケジュールプログラム153は、MPU111で実行されるプログラムの1つで、タスクキュー500に所定数以上のタスク管理情報400が格納された際に実行される。以下では、スケジュールプログラム153がMPU111aで実行される場合について中心に説明するが、MPU111bでも同様の処理が行われる。
スケジュールプログラム153aは、コントローラ11aのみを用いてデステージするか、コントローラ11a、11bの両方を用いてデステージするかを決定するためのプログラムである。この決定を行う目的は、コントローラ11aとコントローラ11bの両方のバックエンドパスを効率的に使用し、バックエンドパスの負荷を平準化することにある。そのため、コントローラ11aのバックエンドパスの利用率が高くなることが予測される場合、コントローラ11a、11bの両方のバックエンドパスを用いてデステージする。ただし、コントローラ11bのバックエンドパスを用いてデステージを行った結果、コントローラ11bのバックエンドパスの利用率が極端に高くなってしまうと、両方のバックエンドパスを効率的に使用していることにはならない、そのためスケジュールプログラム153aは、コントローラ11bのバックエンドパスの利用率がそれほど高くならないと予測される場合に、コントローラ11a、11bの両方のバックエンドパスを用いて、データをデステージさせる。
本実施例に係るストレージ装置1は、バックエンドパスの利用率の予測のために、主としてキャッシュに格納されたダーティデータ量についての情報を用いる。ダーティデータは遠からず、バックエンドパスを介してデステージされるデータである。そのためダーティデータ量が多い場合、バックエンドパスの利用率が高くなるという予測が成り立つ。CTL#0データ領域に格納されたダーティデータ(これはコントローラ11aがオーナである論理ボリュームに対して書き込まれたライトデータである)の量が少ない場合には、コントローラ11aのバックエンドパスの利用率は高くならない(利用率がある閾値を超えない)と予測される。そのためこの場合、スケジュールプログラム153aは、コントローラ11aのバックエンドパスのみを用いたデステージを行うことを決定する。逆にダーティデータ量が多い場合には、コントローラ11aのバックエンドパスの利用率は高くなる(利用率がある値を超える)と予測される。この場合にはスケジュールプログラム153aは、コントローラ11bのCTL#1データ領域に格納されたダーティデータ量を参照することで、コントローラ11bのバックエンドパスの利用率を予測する。コントローラ11bのバックエンドパスの利用率がそれほど高くならない(所定の閾値を超えない)と予測される場合、スケジュールプログラム153aは、コントローラ11a、11bの両方のバックエンドパスを用いたデステージを行うことを決定する。
図6~図8を用いて、スケジュールプログラム153aの処理の流れを説明する。スケジュールプログラム153aが開始されると、MPU111aは最初に、CTL#0データ領域に格納されているダーティデータ量を確認する(S10)。ダーティデータ量は、CTL#0ダーティキャッシュ管理情報(T300-1a)について、LUN(T302)、LBA(T303)が無効値(NULL)でない行を計数することで算出できる。
本実施例に係るスケジュールプログラム153では一例として、ダーティデータ量を用いてキャッシュ占有率を算出し、キャッシュ占有率に基づいて、これ以降で行われる処理を変える。なお、コントローラ11aのキャッシュ占有率は、
ダーティデータ量÷CTL#0データ領域のサイズ
の計算式を用いて算出される値、つまりCTL#0データ領域のサイズに対するダーティデータ量の比率である。またコントローラ11bのキャッシュ占有率は、
ダーティデータ量÷CTL#1データ領域のサイズ
の計算式を用いて算出される値である。以下で説明する処理では、主にこのキャッシュ占有率を用いた判定が行われる。
ダーティデータ量÷CTL#0データ領域のサイズ
の計算式を用いて算出される値、つまりCTL#0データ領域のサイズに対するダーティデータ量の比率である。またコントローラ11bのキャッシュ占有率は、
ダーティデータ量÷CTL#1データ領域のサイズ
の計算式を用いて算出される値である。以下で説明する処理では、主にこのキャッシュ占有率を用いた判定が行われる。
また、別の実施形態として、キャッシュ占有率とバックエンドパスの利用率の関係がおおむね判明している場合には、キャッシュ占有率からバックエンドパスの利用率を予測して、キャッシュ占有率の代わりにバックエンドパスの利用率を用いた判定を行ってもよい。たとえば、経験則などにより、バックエンドパスの利用率がキャッシュ占有率を入力値とする関数F(x)で表せることが分かっている場合、
バックエンドパスの利用率=F(キャッシュ占有率)
の式に従ってバックエンドパスの利用率(の予測値)を算出し、これを用いた判定を行ってもよい。
バックエンドパスの利用率=F(キャッシュ占有率)
の式に従ってバックエンドパスの利用率(の予測値)を算出し、これを用いた判定を行ってもよい。
キャッシュ占有率が10%以下の場合には、MPU111aは、コントローラ11aのみを用いてデステージを行うと決定する(S50)。この場合MPU111aは、タスクキュー500に格納されているタスク管理情報400をコントローラ11aのデステージキュー550に移動する。キャッシュ占有率が10%より大きい場合には、さらなる判定を行う。
キャッシュ占有率が10%より大きく30%以下の場合、MPU111aは、MPU111aの負荷(ビジー率)を確認する(S20)。MPU111aのビジー率が40%以下の場合、MPU111aは、コントローラ11aのみを用いてデステージを行うと決定する(S50)。一方S20の判定の結果、MPU111aのビジー率が40%より大きい場合、MPU111aは、CTL#1データ領域に格納されているダーティデータ量を確認し、S10と同様にキャッシュ占有率を算出する(図8 S310)。このダーティデータ量は、CTL#1ダーティキャッシュ管理情報(T300-2a)について、LUN(T302)、LBA(T303)が無効値(NULL)でない行を計数することで算出できる。あるいはコントローラ11bからダーティ量を通知してもらうようにしてもよい。
CTL#1データ領域のキャッシュ占有率が、10%よりも大きい場合(S310:10%超)、MPU111aは、コントローラ11aのみを用いてデステージを行うと決定する(S350)。S350ではS50と同様の処理が行われる。CTL#1データ領域のキャッシュ占有率が10%以下の場合(S310:10%以下)、MPU111aはコントローラ11bからMPU111bのビジー率を通知してもらうことで、MPU111bのビジー率を確認する(S320)。
MPU111bのビジー率が40%より大きい場合(S320:40%超)、MPU111は、コントローラ11aのみを用いてデステージを行うと決定する(S350)。MPU111bのビジー率が40%以下の場合、MPU111は、コントローラ11aと11bの両方を用いてデステージを行うと決定する(S330)。S330の詳細は後述する。
なお、MPU111bのビジー率に基づいて判断を変える理由は、以下の通りである。MPU111bの負荷(ビジー率)が高い時に、コントローラ11aで行われるべきデステージ処理をコントローラ11bに行わせると、コントローラ11bの負荷が高くなり、コントローラ11bで行われている処理に悪影響を与える可能性があるからである。またコントローラ11aと11bの負荷(MPU111の負荷、あるいはバックエンドパスの負荷)に不均衡が生じると、ストレージ装置1全体の性能も向上しない。そのためスケジュールプログラム153は、MPU111bのビジー率が高い場合には、コントローラ11aのみを用いてデステージを行うような制御を行う。
S10において、キャッシュ占有率が30%より大きく50%以下と判定された場合、MPU111aは、MPU111aの負荷(ビジー率)を確認する(S30)。MPU111aのビジー率が40%以下の場合、MPU111は、コントローラ11aのみを用いてデステージを行うと決定する(S50)。MPU111aのビジー率が40%より大きく70%以下の場合、上で説明したS310以降の処理(図8)が行われる。
S10においてキャッシュ占有率が50%より大きいと判定された場合、あるいはS30においてMPU111aのビジー率が70%より大きいと判定された場合、S110以降の処理(図7)が実行される。S110ではMPU111aは、CTL#1データ領域に格納されているダーティデータ量を確認し、S10と同様にキャッシュ占有率を算出する。これはS310と同様の処理である。
S110の判定で、CTL#1データ領域のキャッシュ占有率が30%よりも大きい場合、MPU111aは、コントローラ11aのみを用いてデステージを行うと決定する(S150)。S150ではS50と同様の処理が行われる。
S110の判定で、CTL#1データ領域のキャッシュ占有率が10%以下の場合、MPU111aはMPU111bのビジー率を確認する(S160)。これはS320と同様の処理である。ここでMPU111bのビジー率が70%より大きい場合、MPU111aは、コントローラ11aのみを用いてデステージを行うと決定する(S150)。一方MPU111bのビジー率が70%以下の場合、MPU111は、コントローラ11aと11bの両方を用いてデステージを行うと決定する(S170)。S170ではS330と同様の処理が行われるが、詳細は後述する。
S110の判定で、CTL#1データ領域のキャッシュ占有率が10%より大きく30%以下の場合、MPU111aはMPU111bのビジー率を確認する(S120)。これはS320と同様の処理である。ここでMPU111bのビジー率が40%より大きい場合、MPU111aは、コントローラ11aのみを用いてデステージを行うと決定する(S150)。一方MPU111bのビジー率が40%以下の場合、MPU111は、コントローラ11aと11bの両方を用いてデステージを行うと決定する(S130)。S130ではS330と同様の処理が行われるが、詳細は後述する。
なお、S120,S160でMPU111bのビジー率に基づいて判断を変える理由は、先に説明したとおりである。またCTL#1データ領域のキャッシュ占有率が比較的高い場合(10%より大きく30%以下)と、低い場合(10%以下)の場合とで判断を変える理由は、CTL#1データ領域のキャッシュ占有率が比較的高い場合のほうが、コントローラ11bのバックエンドパスの利用率が高くなりやすいためである。そのため、CTL#1データ領域のキャッシュ占有率が比較的高い場合には、低い場合(10%以下)よりも、コントローラ11aと11bの両方を用いてデステージを行える条件を厳しくしている。
S330(またはS130、S170)で行われる処理について説明する。S330(またはS130、S170)が実行される場合、MPU111aは、コントローラ11aがオーナである論理ボリュームに対して書き込まれたライトデータを、コントローラ11aとコントローラ11bの両方のバックエンドパスを用いてデステージする。コントローラ11aがオーナである論理ボリュームに対して書き込まれたライトデータは、CTL#0データ領域(及びCTL#0ミラー領域)に格納されている。そしてCTL#0データ領域に格納されているライトデータについてのタスク管理情報は、コントローラ11aのタスクキュー500aにのみ格納されている。
そこでS330(またはS130、S170)では、MPU111aはタスクキュー500aに格納されている複数のタスク管理情報400のうち、一部をコントローラ11aのデステージキュー550aに移動し、残りをコントローラ11bに送信してコントローラ11bのデステージキュー550bに移動させる。これにより、本来コントローラ11aのバックエンドパスを用いて行われるデステージ処理の一部が、コントローラ11bに移されるため、バックエンドパスの負荷分散が実現される。
デステージキュー550b(またはデステージキュー550a)に移動するタスク管理情報400の選定方法としては、様々な方法を採択可能である。たとえばタスクキュー500aに、複数の2n個(nは正整数値)のタスク管理情報400が格納されていた場合、デステージキュー550a、550bに同数(つまりn個)のタスク管理情報400を移動する方法が考えられる。あるいは、ドライブ#(401)が0のタスク管理情報400と、ドライブ#(401)が1のタスク管理情報400の、2種類のタスク管理情報が格納されていた場合、ドライブ#(401)が0のタスク管理情報400はデステージキュー550aに移動し、ドライブ#(401)が1のタスク管理情報400はデステージキュー550bに移動するようにしてもよい。
S330(またはS130、S170)が実行されることにより、タスクキュー500aに格納されている複数のタスク管理情報400の一部はデステージキュー550bに移動される。デステージキュー550bに移動されたタスク管理情報400は、コントローラ11bのMPU111bで実行されるデステージプログラム152bによって処理される。
デステージプログラム152bが、タスクキュー500aからデステージキュー550bに移動されたタスク管理情報400についての処理を行う場合、タスクキュー500bからデステージキュー550bに移動されたタスク管理情報400について処理を行う場合と、特に変わりはない。いずれの場合も、キャッシュアドレス403で特定されるキャッシュ上領域に格納されているデータ(ダーティデータ)を、ドライブ#(401)及びLBA(402)で特定される、ドライブ121上の領域に書き込む。
なお、タスクキュー500aからデステージキュー550bに移動されたタスク管理情報400のキャッシュアドレス403には、CTL#0データ領域のアドレスが格納されている。しかしデステージプログラム152bがデステージを行う場合、CTL#0データ領域のアドレスからデータを読み出すのではなく、メモリ116b内のCTL#0ミラー領域のアドレス(キャッシュアドレス403に格納されているアドレス)からデータを読み出す。CTL#0ミラー領域には、CTL#0データ領域に格納されているライトデータの複製(ミラー)が格納されているので、CTL#0データ領域からデータを取得する必要がないからである。またCTL#0ミラー領域とCTL#0データ領域の同一アドレスには、同一データが格納されているので、CTL#0ミラー領域のアドレス(キャッシュアドレス403に格納されているアドレス)からデータを読み出すことで、CTL#0データ領域に格納されているデータと同じデータを読み出すことができる。
以上が本実施例に係るストレージ装置における、デステージ処理の説明である。本実施例に係るストレージ装置は、各コントローラはバックエンドパスの負荷(利用率)を予測し、バックエンドパスの負荷が高くなる(所定の閾値より高くなる)と予測される場合、他のコントローラにデステージ処理の負荷を分担させることで性能向上が期待できるかを判定する。具体的には、他のコントローラのバックエンドパスの負荷が低いと予測される場合には、他のコントローラにデステージ処理の負荷を分担させることで性能向上が期待できる。その場合にはコントローラは、本来自身が行うべきであったデステージ処理の一部を、他コントローラに実施させる。
特に、シーケンシャルアクセスが多い場合などは、MPUの負荷は高くはないが、バックエンドパスの負荷が高くなることがある。この場合、従来から行われている論理ボリュームのオーナ権の変更だけでは、負荷分散に適切に対処しきれないことがある。本実施例で説明した処理を適用することで、バックエンドパスの負荷をコントローラ間で平滑化でき、性能を向上させることができる。
以上、実施例を説明してきたが、これは本発明の説明のための例示であって、本発明を上で説明した実施例に限定する趣旨ではない。本発明は、他の種々の形態でも実施可能である。たとえば先に述べたとおり、ストレージ装置1内のコントローラ11a、11bの数は、図1に記載された個数に限定されるものではない。またコントローラ11a、11b内の構成物、たとえばMPU111、FE I/F113、BE I/F114等の数も、図1に記載された個数に限定されるものではなく、複数のMPU等が存在する構成であってもよい。また、コントローラ11内にメモリ116を複数個設け、キャッシュと制御領域は異なるメモリに格納するようにしてもよい。
また、上で説明した実施例中の判定で用いられている10%以下、50%超等の値は一例であり、これ以外の値を用いて判定が行われるようにしてもよい。
また上で説明した判定処理を簡略化してもよい。たとえば上で説明した例では、CTL#0データ領域のキャッシュ占有率が50%より大きい場合、CTL#1データ領域のキャッシュ占有率が10%以下か、10%~30%かで、それ以降に行われる処理内容が変更されている(S120、またはS160が実行される)が、CTL#1データ領域のキャッシュ占有率が30%(あるいはそれ以外の値でも良い)以下であれば、一律S120(またはS160)の判定を行うようにしてもよい。
あるいはS120(またはS160)の判定を行わず、CTL#1データ領域のキャッシュ占有率にのみ基づいて、コントローラ11a、11bのバックエンドパスを用いたデステージを行うか否か決定してもよい。これは、S20(またはS30)の判定についても同様である。つまり、CTL#0データ領域のキャッシュ占有率が10%~50%の場合には、CTL#1データ領域のキャッシュ占有率にのみ基づいて、コントローラ11a、11bのバックエンドパスを用いたデステージを行うか否か決定してもよい。またはS20(またはS30)の判定(つまりMPUMPU111aの負荷に基づいた判定)は行わないが、MPU111bの負荷に基づいた判定(S320)は行うようにしてもよい。
また、上で説明した実施例では、バックエンドパスの負荷(利用率)の代わりに、キャッシュ占有率を各種判定に用いているが、先に述べたとおり、キャッシュ占有率からバックエンドパスの利用率を計算して、バックエンドパスの利用率が所定の閾値を超過しているか否かの判定を行うようにしてもよい。
さらにバックエンドパスの利用率を推測可能な情報であれば、キャッシュ占有率以外の情報を用いて判定を行ってもよい。たとえばタスクキュー500及び/またはデステージキュー550の長さを用いてもよい。タスクキュー500及び/またはデステージキュー550の長さが長い場合、バックエンドパスの負荷(利用率)は高くなる傾向がある。そのため、キャッシュ占有率に代えて、タスクキュー500及び/またはデステージキュー550の長さを用いてバックエンドパスの利用率を算出してもよい。またバックエンドパスの利用率を算出せずに、タスクキュー500及び/またはデステージキュー550の長さをそのまま判定に用いてもよい。
また実施例においてプログラムとして記載されている構成物は、ハードワイヤードロジックなどを用いたハードウェアによって実現してもよい。また実施例中の各プログラムを、CD-ROM、DVD等の記憶媒体に格納して提供する形態をとることも可能である。
1: ストレージ装置、2: ホスト、4: SAN、5: LAN、6: 管理端末、11: ストレージコントローラ、12: エンクロージャ、111: MPU、113: FE I/F、114: BE I/F、115: IF-CTL、116: メモリ、117: NIC、118: 通信路、121: ドライブ
Claims (12)
- 複数の記憶デバイスと、それぞれが前記複数の記憶デバイスを接続するためのバックエンドパスとキャッシュメモリとを有する複数のコントローラを有するストレージ装置において、
前記コントローラはホスト計算機からライト要求とライトデータを受領すると、前記ライトデータを前記複数のコントローラが有する前記キャッシュメモリに格納し、
前記コントローラは、前記複数のコントローラの有するバックエンドパスの利用率の予測を行い、前記予測結果に基づいて、前記ライトデータを前記記憶デバイスにデステージするコントローラを決定する、
ことを特徴とする、ストレージ装置。 - 前記コントローラは、前記コントローラの有するバックエンドパスの利用率の予測値が第1の閾値より高くなる場合、別の前記コントローラの有するバックエンドパスの利用率を予測し、
前記別のコントローラの有するバックエンドパスの利用率の予測値が第2の閾値より高くなる場合、前記コントローラのキャッシュメモリに格納されたライトデータのデステージを、前記別のコントローラに行わせない、
ことを特徴とする、請求項1に記載のストレージ装置。 - 前記コントローラは、前記別のコントローラの有するバックエンドパスの利用率の予測値が前記第2の閾値以下の場合、前記別のコントローラの有するプロセッサの負荷が所定の閾値より低い場合、前記コントローラのキャッシュメモリに格納されたライトデータのデステージを、前記コントローラと前記別のコントローラのうちいずれかのコントローラに行わせる、
ことを特徴とする、請求項2に記載のストレージ装置。 - 前記別のコントローラが、前記コントローラのキャッシュメモリに格納されたライトデータのデステージを行う場合、
前記別のコントローラは、前記別のコントローラのキャッシュメモリに格納されている前記ライトデータの複製を、前記記憶デバイスに対してデステージする、
ことを特徴とする、請求項3に記載のストレージ装置。 - 前記コントローラは、前記コントローラの有するキャッシュメモリに格納された前記ライトデータのキャッシュ占有率に基づいて、前記バックエンドパスの利用率を予測する、
ことを特徴とする、請求項1に記載のストレージ装置。 - 前記コントローラは前記ライトデータを前記キャッシュメモリに格納すると、前記ライトデータについてのタスク管理情報を作成して、前記コントローラが有するタスクキューに格納し、
前記コントローラのキャッシュメモリに格納されたライトデータのデステージを前記コントローラが実行する際、前記コントローラは、前記タスクキューに格納された前記タスク管理情報を、前記コントローラが有するデステージキューに移動する、
ことを特徴とする、請求項3に記載のストレージ装置。 - 前記コントローラは、前記コントローラのキャッシュメモリに格納されたライトデータのデステージを前記別のコントローラに行わせる場合、前記タスクキューに格納された前記タスク管理情報を前記別のコントローラが有するデステージキューに移動する、
ことを特徴とする、請求項6に記載のストレージ装置。 - 前記コントローラは、前記複数のコントローラの前記タスクキューの長さに基づいて、前記バックエンドパスの利用率を予測する、
ことを特徴とする、請求項6に記載のストレージ装置。 - 複数の記憶デバイスと、それぞれが前記複数の記憶デバイスを接続するためのバックエンドパスとキャッシュメモリとを有する複数のコントローラを有するストレージ装置の制御方法であって、
前記コントローラはホスト計算機からライト要求とライトデータを受領すると、前記ライトデータを前記複数のコントローラが有する前記キャッシュメモリに格納し、
前記コントローラは、前記複数のコントローラの有するバックエンドパスの利用率の予測を行い、前記予測結果に基づいて、前記ライトデータを前記記憶デバイスにデステージするコントローラを決定する、
ことを特徴とする、ストレージ装置の制御方法。 - 前記コントローラは、前記コントローラの有するバックエンドパスの利用率の予測値が第1の閾値より高くなる場合、別の前記コントローラの有するバックエンドパスの利用率を予測し、
前記別のコントローラの有するバックエンドパスの利用率の予測値が第2の閾値より高くなる場合、前記コントローラのキャッシュメモリに格納されたライトデータのデステージを、前記別のコントローラに行わせない、
ことを特徴とする、請求項9に記載のストレージ装置の制御方法。 - 前記コントローラは、前記別のコントローラの有するバックエンドパスの利用率の予測値が前記第2の閾値以下の場合、前記別のコントローラの有するプロセッサの負荷が所定の閾値より低い場合、前記コントローラのキャッシュメモリに格納されたライトデータのデステージを、前記コントローラと前記別のコントローラのうちいずれかのコントローラに行わせる、
ことを特徴とする、請求項10に記載のストレージ装置の制御方法。 - 前記別のコントローラが、前記コントローラのキャッシュメモリに格納されたライトデータのデステージを行う場合、
前記別のコントローラは、前記別のコントローラのキャッシュメモリに格納されている前記ライトデータの複製を、前記記憶デバイスに対してデステージする、
ことを特徴とする、請求項11に記載のストレージ装置の制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/052224 WO2016121004A1 (ja) | 2015-01-27 | 2015-01-27 | ストレージ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/052224 WO2016121004A1 (ja) | 2015-01-27 | 2015-01-27 | ストレージ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016121004A1 true WO2016121004A1 (ja) | 2016-08-04 |
Family
ID=56542661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2015/052224 WO2016121004A1 (ja) | 2015-01-27 | 2015-01-27 | ストレージ装置 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2016121004A1 (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11296313A (ja) * | 1998-04-10 | 1999-10-29 | Hitachi Ltd | 記憶サブシステム |
JP2005267545A (ja) * | 2004-03-22 | 2005-09-29 | Hitachi Ltd | ストレージシステム |
JP2006040026A (ja) * | 2004-07-28 | 2006-02-09 | Hitachi Ltd | 負荷分散コンピュータシステム、経路設定プログラム及びその方法 |
JP2007287064A (ja) * | 2006-04-20 | 2007-11-01 | Hitachi Ltd | 記憶システム、パス管理方法及びパス管理装置 |
JP2010262551A (ja) * | 2009-05-11 | 2010-11-18 | Hitachi Ltd | リモートスキャンをサポートする計算機 |
-
2015
- 2015-01-27 WO PCT/JP2015/052224 patent/WO2016121004A1/ja active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11296313A (ja) * | 1998-04-10 | 1999-10-29 | Hitachi Ltd | 記憶サブシステム |
JP2005267545A (ja) * | 2004-03-22 | 2005-09-29 | Hitachi Ltd | ストレージシステム |
JP2006040026A (ja) * | 2004-07-28 | 2006-02-09 | Hitachi Ltd | 負荷分散コンピュータシステム、経路設定プログラム及びその方法 |
JP2007287064A (ja) * | 2006-04-20 | 2007-11-01 | Hitachi Ltd | 記憶システム、パス管理方法及びパス管理装置 |
JP2010262551A (ja) * | 2009-05-11 | 2010-11-18 | Hitachi Ltd | リモートスキャンをサポートする計算機 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5951582B2 (ja) | 外部キャッシュデバイスでのハイパーバイザのi/oステージング | |
US9658779B2 (en) | Computer system and control method for computer system | |
JP5958020B2 (ja) | ストレージシステム | |
JP4788528B2 (ja) | ディスク制御装置、ディスク制御方法、ディスク制御プログラム | |
US8732402B2 (en) | Managing track discard requests to include in discard track messages | |
US20040133707A1 (en) | Storage system and dynamic load management method thereof | |
US20150293708A1 (en) | Connectivity-Aware Storage Controller Load Balancing | |
JP2014154155A (ja) | コマンド・プッシュ・モデルの使用によりデータ・ストレージ・システムにおける書込みレイテンシを低減させるための方法およびシステム | |
JP2007305076A (ja) | バックアップ及び/又はリストアを行う記憶制御方法及びシステム | |
JP2010049502A (ja) | ストレージサブシステム、及びこれを有するストレージシステム | |
JP5987498B2 (ja) | ストレージ仮想化装置、ストレージ仮想化方法及びストレージ仮想化プログラム | |
KR20130037181A (ko) | 크로스 바운더리 하이브리드 및 다이나믹 저장 장치 및 메모리 상황 인식 캐시 시스템 | |
JP2009015844A (ja) | 要求優先順位シーク・マネージャ | |
US20170371587A1 (en) | Computer system, and data migration method in computer system | |
US9645926B2 (en) | Storage system and method for managing file cache and block cache based on access type | |
JP6154433B2 (ja) | 逐次入出力ストリームを効率的にデステージするための方法及び装置 | |
US7853757B2 (en) | Avoiding failure of an initial program load in a logical partition of a data storage system | |
US20160259571A1 (en) | Storage subsystem | |
US10521127B2 (en) | Building stable storage area networks for compute clusters | |
US20200004425A1 (en) | Storage system, copy control method, and computer system | |
WO2016059715A1 (ja) | 計算機システム | |
WO2016121004A1 (ja) | ストレージ装置 | |
KR101209922B1 (ko) | 반도체 저장 장치 기반 시스템용 적응형 캐시 | |
JP7348056B2 (ja) | ストレージシステム | |
WO2016046970A1 (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: 15879901 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: 15879901 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |