Storage system comprising multiple microprocessors and method for sharing processing in this storage system

The present invention provides a storage system in which each microprocessor is able to execute synchronous processing and asynchronous processing in accordance with the operating status of the storage system. Any one attribute, from among multiple attributes (operating modes) prepared beforehand, is set in each microprocessor in accordance with the operating status of the storage system. The attribute that is set in each microprocessor is regularly reviewed and changed.

TECHNICAL FIELD

The present invention relates to a storage system comprising multiple microprocessors and a method for sharing the processing in this storage system.

BACKGROUND ART

A storage system ordinarily includes multiple storage devices and a controller, which receives an I/O (Input/Output) request from an external device (for example, a host computer). The configuration of the controller, for example, is disclosed in Patent Literature 1.

CITATION LIST

Patent Literature

SUMMARY OF INVENTION

Technical Problem

In a case where the I/O request received from the external device is a read request, the controller, for example, executes processing (a storage device read process) that transfers data from the storage device to a cache memory (CM), and processing (a CM read process) that reads the data from the CM and transfers this data to the external device, or only the CM read process.

In a case where the I/O request received from the external device is a write request, the controller, for example, executes processing (a CM write process) that transfers data received from the external device to the CM, and processing (a storage device write process) that transfers the data from the CM to the storage device.

Multiple microprocessors of the controller are able to execute synchronous processing and asynchronous processing. “Synchronous processing” must be executed between the time when an I/O request is received from the external device and the time when a response to this I/O request is returned to the external device. Synchronous processing, for example, includes the execution of the above-mentioned storage device read process, the CM read process, and the CM write process. Alternatively, “asynchronous processing” signifies processing other than synchronous processing, and, for example, refers to the execution of the above-mentioned storage device write process.

In a case where the microprocessors execute asynchronous processing for a long time, the execution of the synchronous processing will be delayed to that extent, and therefore the response to the external device will be delayed. By contrast, in a case where synchronous processing is given priority, the response to the external device can be speeded up. However, since the asynchronous processing will be delayed in accordance with this, data that has not been written to the storage device accumulates in large amounts in the CM, reducing the CM free space. When CM free space is reduced, it is not possible to secure enough cache area for processing an I/O request from the external device, making it necessary to wait for the CM free space to increase in accordance with a storage device write process, and thereby corrupting the synchronous processing response.

Accordingly, an object of the present invention is to provide a storage system, which comprises multiple microprocessors, and which is able to make efficient use of each microprocessor by appropriately executing both synchronous processing and asynchronous processing in each microprocessor, and a method for sharing processing in this storage system. Other objects of the present invention should become clear from the description of the embodiment, which will be explained below.

Solution to Problem

In a storage system of the present invention that solves for the problems described above, the microprocessor of the controller is able to execute synchronous processing up to a preset upper limit value, and asynchronous processing may be executed in a case where synchronous processing is not executed.

DESCRIPTION OF EMBODIMENTS

The embodiments of the present invention will be explained below on the basis of the drawings. The present invention, as will be described hereinbelow, is related to a storage system that includes multiple storage devices that are able to provide multiple logical volumes, and a controller, which receives from an external device an input/output request that specifies any of the multiple logical volumes and processes this request. The controller includes at least one first interface for communicating with the external device, at least one second interface for communicating with the storage devices, a memory, which is respectively coupled to each first interface and each second interface, and multiple microprocessors, which are respectively coupled to each first interface, each second interface, and the memory. Each of the microprocessors is able to execute synchronous processing, whose execution is triggered by the input-output request from the external device, and asynchronous processing, which is processing other than synchronous processing. Each of the microprocessors is able to execute the synchronous processing up to a preset upper limit value, and is able to execute the asynchronous processing in a case where the synchronous processing is not executed.

Furthermore, the descriptions of the embodiments discussed below do not limit the scope of the present invention. Not all of the combinations of characteristic features explained in the embodiments are necessarily essential to the invention solution.

FIG. 1shows a computer system comprising a storage system related to a first embodiment of the present invention. In the explanation that follows, interface may be shortened to “I/F”.

The computer system comprises one or more host computers180, a storage system10, and a management console20. Communication between the host computer180and the storage system10, for example, is carried out via a communication network190.

The communication network190, for example, may be any network that is capable of carrying out data communications, such as a SAN (Storage Area Network), a LAN (Local Area Network), the Internet, a leased line, or a public line. The protocol for communications between the host computer180and the storage system10, for example, may be an arbitrary protocol of various protocols that make it possible to send and receive data, such as either the fibre channel protocol or the TCP/IP protocol.

When the host computer180is a so-called mainframe, for example, a communication protocol such as FICON (Fibre Connection: registered trademark), ESCON (Enterprise System Connection: registered trademark), ACONARC (Advanced Connection Architecture: registered trademark), and FIBARC (Fibre Connection Architecture: registered trademark) may be used.

The management console20is a computer for managing the storage system10, and is operated by a user.

The host computer180sends an I/O request to the storage system10. The I/O request, for example, is either a read request or a write request. A read request, for example, comprises a LUN (Logical Unit Number) and a LBA (Logical Block Address) that correspond to the read-source of the read-targeted data. A write request, for example, comprises a LUN and a LBA that correspond to the write-destination of write-targeted data, and the write-targeted data. The LUN is allocated to a logical volume171in the storage system10. The LBA is an address of a storage area (block) inside the logical volume171.

In the following explanation, the read-targeted data may be called read data and the write-targeted data may be called write data. In addition, the read-targeted data and the write-targeted data may be called host data.

The storage system10comprises multiple HDDs (Hard Disk Drives)170and a controller100. The controller100receives an I/O request from the host computer180, accesses any storage device170, and returns the processing result of the I/O request to the host computer180.

The HDD170is one example of a storage device. The storage device is not limited to a hard disk drive. For example, a variety of devices that are capable of reading and writing data, such as a semiconductor memory device, an optical disk device, a magneto-optical disk device, a magnetic tape device, and a flexible disk device, may be used as the storage device.

Multiple logical volumes171may be created based on the physical storage area of the multiple HDDs170. Specifically, a RAID (Redundant Array of Independent (or Inexpensive) Disks) group is created in accordance with two or more HDDs170. Either one or multiple logical volumes171are set using the physical storage area of respective RAID groups. One logical volume171is shown inFIG. 1, but under ordinary circumstances, the storage system10comprises a large number of RAID groups and a large number of logical volumes171.

A LUN is allocated to the logical volume171, and this LUN is provided to the host computer180. The controller100identifies a logical volume corresponding to a LUN specified by an I/O request, accesses the HDD170constituting the basis of this logical volume, and reads/writes data from/to this HDD170.

In Thin Provisioning technology, the logical volume is a pool volume, and a LUN is not allocated thereto. In this case, the LUN is allocated to a logical volume that is set virtually. The controller100, upon receiving an I/O request for the virtual logical volume, accesses the pool volume corresponding to the access destination in the virtual logical volume, and reads/writes data from/to this pool volume.

The controller100, for example, comprises one or more FEPKs (Front-End PacKage)110that serve as one or more host I/F units, one or more MPPKs (MicroProcessor PacKage)120that serves as one or more controllers, one or more CMPKs (Cache Memory PacKage)130that serve as one or more shared memory units, and one or more BEPKs (Back-End PacKage)140that serve as one or more disk I/F units.

Each FEPK110, each MPPK120, each CMPK130and each BEPK140is coupled to an internal network150. The internal network150, for example, may be either a LAN or other such communication network, or a crossbar switch or other such switching device. Each MP (MicroProcessor)121of each MPPK120is communicably coupled to each FEPK110, each CMPK130, and each BEPK140via the internal network150.

The FEPK110is an interface device for communicating with the host computer180, and comprises a host I/F111and a transfer control circuit112. Each host I/F111, for example, is a communication port. The transfer control circuit112is for controlling the transfer of either an I/O request or data that was received by the host I/F111.

The BEPK140is an interface device for communicating with the HDD170, and comprises a disk I/F141and a transfer control circuit142. The disk I/F141, for example, is a communication port. The BEPK140is coupled to each HDD170, and is also coupled to the internal network150. The BEPK140mediates the passing of either read-targeted data or write-targeted data between the internal network150side and the HDD170. The transfer control circuit142controls the transfer of data.

The CMPK130comprises a cache memory (hereinafter shortened to “CM”)131, and a control memory132. The CM131and the control memory132may be configured from volatile memories, such as DRAM (Dynamic Random Access Memory).

The CM131temporarily stores data (write-targeted data) to be written to the HDD170. The CM131also temporarily stores data (read-targeted data) that has been read from the HDD170.

The control memory132stores various types of control information required for processing, such as synchronous processing and asynchronous processing. For example, HDD configuration information and volume management information may be cited as types of control information. HDD configuration information manages which RAID group is configured from which HDD170. The volume management information manages which logical volume corresponds to what kind of function.

The MPPK120controls the operation of the storage system10. The MPPK120comprises multiple MPs121, a local memory (LM)122, and a bus123for coupling each MP121to the LM122.

In this embodiment, a case in which multiple MPPKs120comprise multiple MPs121is shown, but the present invention is not limited to this, and a configuration such that multiple MPPKs120comprise one MP121each may also be used.

Either all or a portion of the control information stored in the control memory132is copied to the LM122. The portion of the control information is the part required for the MPPK120comprising the LM122that stores this portion of the control information.

FIG. 2shows various types of information (tables, queues) that are stored in the LM122of the MPPK120. The LM122, for example, stores a MP rate of operation table210, a cache dirty ratio table220, an execution count limit tuning table230, an execution count limit table240, a cycle management table250, a threshold table for setting a limit on the number of executions260, a synchronous process table270, an asynchronous process table280, a host I/F synchronous processing queue410, a disk I/F synchronous processing queue420, and a disk I/F asynchronous processing queue430. An MP rate of operation table210either exists for each MP in the MPPK, or there is only one such table210in the MPPK.

Each of the tables210through270will be explained below. The host I/F synchronous processing queue410is for managing a synchronous processing request related to the host I/F111. Synchronous processing may include processing (a host data CM read process) for reading host computer180-requested read-targeted data from the CM131and transferring this data to the host computer180, and processing (a host data CM write process) for storing write-targeted data received from the host computer180and storing this data in the CM131.

The disk I/F synchronous processing queue420is for managing a synchronous processing request related to the disk I/F141. Synchronous processing related to the disk I/F141, for example, may include processing (a host data HDD read process) for reading read-targeted data for which a read has been requested by the host computer180from the storage device170corresponding to the read-source logical volume171.

The disk I/F asynchronous processing queue430is for managing an asynchronous processing request related to the disk I/F141. Asynchronous processing related to the disk I/F141, for example, may include processing (a host data HDD write process) for writing write-targeted data received from the host computer180to the storage device170corresponding to the write-destination logical volume171.

Furthermore, although omitted from the drawing, one or more computer programs executed by the respective MPs121may be stored in the LM122. Each MP121realizes a function shown in a flowchart, which will be described hereinbelow, by reading and executing a computer program. For example, the computer programs and operating systems corresponding to the respective flowcharts ofFIGS. 12 through 26may be stored in the LM122.

Another table and another queue besides the tables and queues shown inFIG. 2may also be stored in the LM122. For example, a table for managing a remote copy and a queue for managing a processing request when a failure has occurred may also be stored in the LM122.

FIG. 3shows the configuration of the management console20. The operating status of the storage system10can be checked via the management console20. In addition, the setting values of the various types of tables can be changed via the management console20. The management console20, for example, is coupled by way of a bus27to a communication I/F21, an input I/F22, a display I/F23, a memory24, and HDD25and a CPU (Central Processing Unit)26.

The memory24, for example, comprises a ROM (Read Only Memory) and a RAM (Random Access Memory), and stores a boot program and programs for executing various types of processing. A work area for use by the CPU26may also be provided in the memory24.

The HDD25stores a program and various types of information that need to be maintained even when the power to the management console20is OFF.

An input device28for receiving an operation by a management console20user (administrator) is coupled to the input I/F22. The input device28, for example, may include a pointing device like a mouse, a touch panel, a keyboard switch, and a voice input device. The input I/F22converts a signal from the input device28to data and outputs this data to the CPU26.

A display device29is coupled to the display I/F23. The display device29, for example, may include a liquid crystal display, a plasma display, a CRT (Cathode Ray Tube), a printer, and a voice output device. The display I/F23, for example, comprises a VRAM (Video Random Access Memory). The CPU26creates image data in accordance with an image to be displayed, and outputs this image data to the display device29for display as a screen.

The communication I/F21is coupled to the internal network150of the storage system10, mediates in the exchange of data between the CPU26and the respective devices (for example, the respective MPs121of the respective MPPKs120) of the storage system10coupled to the internal network150.

The CPU26controls the operations of the respective devices21through25. The CPU26also reads a program stored in the memory24and/or the HDD25to the RAM of the memory24and executes this program.

FIG. 4shows a table210for managing the rates of operation of the respective MPs121. The MP rate of operation table210comprises a type field211, and a rate of operation field212. A value showing the type of rate of operation is set in the type field211. As rate of operation types there are “All”, which shows the average value Umpa of the rates of operation of all the MPs, “host I/F”, which shows the average value Umph of the rates of operation of MPs that are in charge of processing related to the host I/F111, and “disk I/F”, which shows the average value Umpd of the rates of operation of the MPs in charge of processing related to the disk I/F141. The rate of operation field212stores each type of rate of operation for each MP of the relevant MPPK120. The rate of operation field212may store the average value of the rates of operation of the respective MPs of the relevant MPPK120rather than the rate of operation for each MP.

FIG. 5shows a table220for managing the cache dirty ratio. The cache dirty ratio table220comprises a field221for storing a cache dirty ratio Cd.

The cache dirty ratio is the ratio of dirty data stored in the CM131, and the larger the cache dirty ratio the more dirty data is accumulated. Dirty data is data that is stored only in the CM131and has not been written to the HDD170. When dirty data is written to the HDD170, this data changes from dirty data to clean data. Clean data is written to both the CM121and the HDD170. Therefore, it is possible to release an area of the CM121in which clean data is stored, restore this area to the unused state, and store new data in this unused area.

FIG. 6shows a table230for tuning the limit of an execution count. The execution count limit tuning table230, for example, comprises a setting type field231, a host I/F processing execution count field232, and a disk I/F processing execution count field233.

The setting type field231stores the setting type of the execution count. As the setting types, there are “host I/F priority”, which executes processing related to the host I/F111on a priority basis, “disk I/F priority”, which executes processing related to the disk I/F141on a priority basis, and “coequal”, which executes processing related to the host I/F111and processing related to the disk I/F141on a coequal basis. Hereinafter, these types may be called the host I/F priority mode, the disk I/F priority mode, and the coequal mode (or both I/Fs coequal mode).

The host I/F processing execution count field232stores an upper limit value ULNeh for the number of times that processing related to the host I/F111is executed for each setting type. The disk I/F processing execution count field233stores an upper limit value ULNed for the number of times that processing related to the disk I/F141is executed for each setting type.

In the case of “host I/F priority”, the upper limit value ULNeh1 for the number of times host I/F processing is executed is set so as to be larger than the upper limit value ULNed1 for the number of times disk I/F processing is executed (ULNeh1>ULNed1).

In the case of “coequal”, the upper limit value ULNeh2 for the number of times host I/F processing is executed is set so as to be equal to the upper limit value ULNed2 for the number of times disk I/F processing is executed (ULNeh2=ULNed2).

In the case of “disk I/F priority”, the upper limit value ULNeh3 for the number of times host I/F processing is executed is set so as to be smaller than the upper limit value ULNed3 for the number of times disk I/F processing is executed (ULNeh3<ULNed3).

The configuration may be such that the upper limit values ULNeh, ULNed can be set manually from the management console20by the user. In addition, for example, in a case where the FEPKs110have been augmented and the number of host I/Fs111has increased, the configuration may be such that the upper limit value ULNeh of the number of times that host I/F processing is executed automatically increases. Similarly, for example, in a case where the BEPKs140have been augmented and the number of disk I/Fs141has increased, the upper limit value ULNed of the number of times that disk I/F processing is executed may be set so as to increase automatically. By contrast, in a case where a FEPK110has been removed from the storage system10(at reduction time), the upper limit value ULNeh may be automatically decreased. Similarly, in a case where a BEPK140has been removed from the storage system10, the upper limit value ULNed may be automatically decreased.

FIG. 7shows a table240for managing the execution count. The execution count table240comprises a processing type field241, an execution count field242, and an execution count limit field243.

The processing type field241stores the type of processing that is executed by the MP121. The processing types are “host I/F processing” and “disk I/F processing. The execution count field242stores the execution count for each type of processing. The number of times that host I/F processing is executed is expressed as Neh, and the number of times that disk I/F processing is executed is expressed as Ned.

The execution count limit field243stores the upper limit value of the execution count for each type of processing. The upper limit value of the execution count for host I/F processing is ULNeh, and the upper limit value of the execution count for disk I/F processing is ULNed. These upper limit values ULNeh, ULNed are determined in accordance with the table230described usingFIG. 6.

FIG. 8shows a table250for managing processing that is to be executed cyclically. The cyclic processing table250comprises a processing type field251, a next execution time field252, and a cycle field253.

The processing type field251stores the type of processing that is to be executed cyclically. The processing (cyclic processing) to be executed cyclically, for example, may include “processing for reviewing the upper limit value of the execution count” and “processing for creating a host data HDD write process”.

The “processing for reviewing the upper limit value of the execution count” is for reviewing whether or not the upper limit values ULNeh, ULNed stored in the execution count limit field243of the table240shown inFIG. 7are appropriate. The execution count upper limit values ULNeh, ULNed are changed regularly so as to constitute values that conform to the operating status of the storage system10.

The “processing for creating a host data HDD write process” is for creating a write processing request for writing host data to the HDD170. To assure that there is free space in the CM131, the dirty data that has accumulated in the CM131is cyclically written to the HDD170.

The next execution time field252stores the next execution time T for each type of processing. The next execution time, for example, is set using the value of a system timer inside the storage system10. The cycle field253stores the execution cycle Cyc for each processing type.

The configuration may be such that the next execution time and the cycle are able to be set manually by the user via the management console20. Further, the configuration may be such that the next execution time and the cycle automatically change in accordance with a configuration change in the storage system10. For example, in a case where the number of host I/Fs111increases, it is possible to prevent the CM131from filling up with dirty data by shortening the execution cycle Cyc2of the processing for creating a host data HDD write process.

FIG. 9is a table260for managing a threshold for setting the upper limit value of the execution count. The table260manages the threshold, which becomes the trigger for executing the processing for reviewing the upper limit value of the execution count. The table260comprises a reference information field261and a threshold field262.

The reference information field261stores the names of information that constitutes the criteria for determining an execution trigger. The reference information, for example, may include the “MP rate of operation” and the “cache dirty ratio”.

The threshold field262stores a threshold for each piece of reference information. The threshold of the MP rate of operation is ThUmp, and the threshold of the cache dirty ratio is ThCd. The configuration may be such that these thresholds are able to be set manually by the user via the management console20. In addition, the configuration may be such that the trigger for executing the processing (FIG. 15) for reviewing the execution count upper limit value is determined using other reference information. For example, the configuration may be such that the trigger for executing the processing shown inFIG. 15is determined on the basis of the number of processing requests accumulated in the host I/F synchronous processing queue, the amount of untransferred data in an asynchronous remote copy, and a change in the configuration of the storage system10.

FIG. 10shows a table270for managing synchronous processing. The synchronous process table270manages the type of the synchronous processing. Multiple synchronous processing names are registered in the synchronous process table270. Synchronous processing, for example, may include a host data CM read process271, a host data CM write process272, and a host data HDD read process273. Synchronous processing is not limited to the processes shown inFIG. 10. For example, the copy process in a synchronous remote copy process is also a type of synchronous processing.

FIG. 11shows a table280for managing asynchronous processing. The asynchronous process table280manages the type of asynchronous processing. An asynchronous processing name is registered in the asynchronous process table280. Asynchronous processing, for example, may include a host data HDD write process281. An asynchronous process is one that is specified from among respective processes other than synchronous processes. Asynchronous processing is not a trigger for executing an I/O request from the host computer180, but rather is executed either in a case where the status inside the storage system10constitutes a prescribed status or in a case where an instruction has been inputted from the management console20.

Beside that shown inFIG. 11, asynchronous processing, for example, may include an asynchronous local copy process, an asynchronous remote copy process, a copy function initial copy process, an owner rights transfer process, a failure recovery process, a logical volume setting process, a storage system configuration change process, and a formatting process.

The asynchronous local copy process transfers data from a copy-source logical volume to a copy-destination logical volume inside a single storage system10at a timing that differs from the timing of the write to the copy-source logical volume.

The asynchronous remote copy process transfers data from a copy-source logical volume disposed in one storage system to a copy-destination logical volume disposed in another storage system at a timing that differs from the timing of the write to the copy-source logical volume.

The copy function initial copy process transfers all the data of the copy-source logical volume to the copy-destination logical volume at pair creation time in a synchronous local copy, an asynchronous local copy, a synchronous remote copy, and an asynchronous remote copy.

The owner rights transfer process transfers owner rights between MPs. The owner rights signify access authorization to a logical volume. Only an MP that comprises the owner rights to a logical volume is able to access and read/write data from/to this logical volume.

The failure recovery process is for recovering from a failure, and, for example, is a correction copy process and a copy process to a spare drive. The correction copy process restores the data inside an HDD170in which a failure occurred based on the data and parity read from this HDD and the respective other HDDs170that belong to the same RAID group. The data restored in accordance with a logical operation, for example, is stored in a spare HDD170.

The logical volume setting process either creates or deletes a new logical volume. Each MP must recognize this setting change.

The storage system configuration change process is executed either in a case where a new package has been attached to the storage system10, or in a case where an existing package has been removed from the storage system10. In a case where the configuration of the storage system10has changed, each MP must recognize this configuration change.

The formatting process is for formatting a logical volume171. The asynchronous processes mentioned above are given as examples, and the present invention is not limited to these asynchronous processes.

The operation of the storage system10and the operation of the management console20will be explained by referring toFIGS. 12 through 26. The flowcharts described below give overviews of the respective processes, and may differ from the actual computer programs. A so-called person skilled in the art should be able to change a portion of a step shown in the drawing and add or delete a new step. A step will be abbreviated as S hereinbelow.

FIG. 12shows the entire scheduling process executed by each MP121. The MP121acquires the current time from the system timer (S101). The MP121determines whether or not there is a cyclic process that has reached the next execution time stored in the next execution time field252of the cyclic processing table250shown inFIG. 8(S102).

In a case where the cyclic processing has not reached the execution time (S102: NO), the MP121executes the host I/F processing schedule (S103) and the disk I/F schedule (S104) and returns to S101.

In a case where the cyclic processing has reached the execution time (S102: YES), the MP121calculates the next execution time from the current time and the cycle registered in the cycle field253, and stores this time in the next execution time field252(S104). The MP121executes the cyclic processing that has reached the execution time (S106), and returns to S101.

Furthermore, the execution order of the host I/F schedule and the disk I/F schedule may be transposed inFIG. 12. That is, the disk I/F schedule may be executed ahead of the host I/F schedule.

FIG. 13shows the host I/F schedule processing. The processing ofFIG. 13is a detailed account of the processing shown in S103inFIG. 12. The MP121resets the value of the Neh, which shows the number of times that the host I/F processing has been executed (S111), and checks the host I/F synchronous processing queue410(S112).

The MP121determines whether or not a synchronous processing request exists in the host I/F synchronous processing queue410(S113). In a case where a synchronous processing request does not exist in the host I/F synchronous processing queue410(S113: NO), this processing ends.

In a case where a synchronous processing request does exist in the host I/F synchronous processing queue410(S113: YES), the MP121fetches one synchronous processing request from the queue410, and executes this synchronous processing (S114).

After executing one synchronous process, the MP121increments by one the execution count Neh of the host I/F processing (S115). The MP121determines whether or not the execution count Neh has exceeded the upper limit value ULNeh (S116). In a case where the execution count Neh has exceeded the upper limit value ULNeh (S116: YES), this processing ends. In a case where the execution count Neh has not exceeded the upper limit value ULNeh (S116: NO), the MP121returns to S112, and checks the host I/F synchronous processing queue410once again. Furthermore, in S116, it is determined whether or not the execution count Neh has exceeded the upper limit value ULNeh (Neh>ULNeh), but the configuration may be such that a determination as to whether or not the execution count Neh is equal to or larger than the upper limit value ULNeh (Neh>=ULNeh) may be made instead.

FIG. 14shows a disk I/F processing schedule. The processing ofFIG. 14is a detailed account of the processing shown in S104inFIG. 12. The MP121resets the value of the Ned, which shows the number of times that disk I/F processing has been executed (S121), and respectively checks the disk I/F synchronous processing queue420and the disk I/F asynchronous processing queue430(S122).

The MP121determines whether a processing request exists in either the disk I/F synchronous processing queue420or the disk I/F asynchronous processing queue430(S123). In a case where a processing request does not exist in either of the queues420,430(S123: NO), this processing ends.

In a case where a processing request exists in either the disk I/F synchronous processing queue420or the disk I/F asynchronous processing queue430(S123: YES), the MP121executes either one of the disk I/F synchronous processing or the disk I/F asynchronous processing. Ina case where a processing request exists in the disk I/F synchronous processing queue420, the MP121executes this synchronous processing. In a case where a processing request exists in the disk I/F asynchronous processing queue430, the MP121executes this asynchronous processing.

The MP121increments by one the value of the execution count Ned of the disk I/F processing (S125). The MP121determines whether of not the execution count Ned has exceeded the upper limit value ULNed (S126).

Furthermore, in S126, it is determined whether or not the execution count Ned has exceeded the upper limit value ULNed (Ned>ULNed), but the configuration may be such that a determination as to whether or not the execution count Ned is equal to or larger than the upper limit value ULNed (Ned>=ULNed) may be made instead.

The configuration may also be such that the MP121either alternately executes a processing request stored in the disk I/F synchronous processing queue420and a processing request stored in the disk I/F asynchronous processing queue430, or executes either the synchronous processing or the asynchronous processing on a priority basis depending on the circumstances. For example, the configuration may be such that in a case where the cache dirty ratio is equal to or larger than a prescribed value, the a host data HDD write process is executed as disk I/F asynchronous processing ahead of disk I/F synchronous processing.

FIG. 15shows processing for reviewing the upper limit value of the execution count. This is one example of processing that is executed cyclically, and the execution count upper limit values ULNeh, ULNed are updated at prescribed cycles in accordance with the status of the storage system10. This makes it possible for the MP121to only execute host I/F processing and disk I/F processing the appropriate number of times.

First, the MP121references the MP rate of operation Ump based on the MP rate of operation table210shown inFIG. 4(S201). The MP121compares the MP rate of operation Ump to the MP rate of operation threshold ThUmp stored in the threshold table260shown inFIG. 9, and determines whether or not the MP rate of operation Ump is equal to or larger than the threshold ThUmp (S202).

The configuration here may be such that the MP121respectively compares the three MP rates of operation Umpa, Umph, Umpd stored in the table210ofFIG. 4to the one threshold ThUmp, and determines whether or not any one of the MP rates of operation is equal to or larger than the threshold ThUmp. Or, the configuration may be such that the thresholds ThUmpa, ThUmph, ThUmpd respectively corresponding to the MP rates of operation Umpa, Umph, Umpd are stored in the table shown inFIG. 9, and Umpa is compared to ThUmpa, Umph is compared to ThUmph, and Umpd is compared to ThUmpd, respectively. Or, the configuration may be such that a determination is made only as to whether all of the rates of operation Umpa are equal to or larger than the ThUmp.

In a case where the MP rate of operation is equal to or larger than the threshold ThUmp (S202: YES), the MP121references the cache dirty ratio Cd in the table220shown inFIG. 5(S203). The MP121compares the cache dirty ratio Cd acquired from the table220to a threshold ThCd stored in the table260shown inFIG. 9, and determines whether or not the cache dirty ratio Cd is equal to or larger than the threshold ThCd (S204).

In a case where the cache dirty ratio Cd is equal to or larger than the threshold ThCd (S204: YES), the MP121sets the execution count upper limit value UL in the ULNeh3 and ULNed3 as the values for the “disk I/F priority” (S205).

That is, in a case where the MP rate of operation Ump is equal to or larger than the threshold ThUmp (S202: YES), and, in addition, the cache dirty ratio Cd is equal to or larger than the threshold ThCd (S204: YES), the MP121sets the upper limit value that enables the execution of disk I/F processing in the ULNed3.

As described hereinabove, the execution count upper limit value ULNeh3 of the disk I/F processing at the time of disk I/F priority is set higher than the execution count upper limit value ULNeh3 of the host I/F processing. Therefore, the disk I/F processing is performed on a priority basis. As a result of this, the dirty data accumulated in the CM131is written to the HDD170, thereby increasing the CM131free space.

In a case where the cache dirty ratio Cd is less than the threshold ThCd (S204: NO), the MP121sets the execution count upper limit values UL in the ULNeh2 and ULNed2 as the value for “coequal” (S206). That is, in a case where the MP rate of operation Ump is equal to or larger than the threshold ThUmp (S202: YES), and, in addition, the cache dirty ratio Cd is less than the threshold ThCd (S204: NO), the MP121makes the count ULNed2 that enables the execution of the disk I/F processing equal to the count ULNeh2 that enables the execution of the host I/F processing (ULNed2=ULNeh2). This makes it possible to receive an I/O request from the host computer180while assuring CM131free space.

In a case where the MP rate of operation Ump is less than the threshold ThUmp (S202: NO), the MP121sets the execution count upper limit values UL in the ULNeh1 and ULNed1 as the value for the “host I/F priority” (S207). In a case where the MP rate of operation Ump is less than the threshold ThUmp, host I/F processing is executed on a priority basis, and the responsiveness of the storage system10is enhanced.

A host data CM read process will be explained by referring toFIGS. 16 through 18. The host data CM read process reads data from the CM131in accordance with a read request from the host computer180, and transfers this data to the host computer180via the host I/F111.

The MP131analyzes the command received via the FEPK110(S301), and references the read request address (S302). The read request address is the logical address (LBA) of the data with respect to which the host computer180is requesting the read.

The MP121determines whether or not a cache area corresponding to the read request address has been reserved (S303). Whether or not a cache area corresponding to the read request address has been reserved can be restated as “whether or not there was a cache hit”.

In a case where a cache area corresponding to the read request address has been reserved in the CM131(S303: YES), that is, in the case of a cache hit (S303: YES), the read-targeted data (abbreviated as read data in the drawing) is stored in this cache area.

Accordingly, the MP121transfers the data stored in the cache area corresponding to the read request address to the host I/F111of the FEPK110(S304). The MP121requests a data transfer from the host I/F111to the host computer180, and also requests that a notification to the effect that this data transfer has been completed be sent from the host I/F111to the MP121(S304). Thereafter, the MP121waits until the data has been transferred from the host I/F111to the host computer180, and the notification to the effect that this data transfer was completed has been received from the host I/F111(S305).

Alternatively, in a case where a cache area corresponding to the read request address has not been reserved (S303: NO), the data requested by the host computer180is not stored in the CM131. Accordingly, the MP121stores one processing request in the disk I/F synchronous processing queue420(S306), and waits for the read-targeted data to be read from the HDD170and stored in the CM131by the disk I/F141(S307).

As will be described hereinbelow, when the disk I/F141transfers the read-targeted data read from the HDD170and stores this data in the CM131, the MP121, which is carrying out the host data HDD read processing, issues a notification as to the location in which the read-targeted data was stored. The MP121, which had been carrying out the host data CM read processing, waits for receipt of this notification (S307).

FIG. 17shows the continuation of the processing ofFIG. 16. When the disk I/F141reads the read-targeted data from the HDD170and transfers this data to the CM131, the MP121, which is carrying out the host data HDD read processing, issues a notification as to the location in which the read-targeted data was stored. When the MP121, which had been carrying out the host data CM read processing, receives this notification, it starts the processing shown inFIG. 17.

The MP121analyzes the notification that reveals the location in which the read-targeted data is stored (S311). Next, the MP121transfers the read-targeted data in the CM131to the host I/F111, and, in addition, requests that the host I/F111send a notification to the extent that the data transfer to the host computer180has been completed (S312). The MP131stands by until the notification to the extent that the data transfer to the host computer180is complete has been sent from the host I/F111(S313).

FIG. 18shows a continuation of the processing ofFIG. 17(orFIG. 16). When the MP121receives the completion notification from the host I/F111, the MP121analyzes the contents of this notification, and ends the host data CM read processing (S321).

Host data CM write processing will be explained by referring toFIGS. 19 through 21. The host data CM write process stores write-targeted data received from the host computer180in the CM131in accordance with a write request from the host computer180.

The MP121analyzes the command received from the host I/F111(S401), and references the write request address that is included in this command (S402). The MP121determines whether or not a cache area corresponding to the write request address has been reserved in the CM131(S403).

In a case where a cache area corresponding to the write request address has not been reserved in the CM131(S403: NO), the MP121reserves a cache area corresponding to the write request address in the CM131(S404).

When the MP121reserves a cache area corresponding to the write request address in the CM131, the MP121requests that the host I/F111receive the data from the host computer180(S405). The MP121waits for a notification to the extent that the receipt of the data from the host computer180has been completed to be sent from the host I/F111(S406).

FIG. 20is a flowchart showing the continuation of the processing ofFIG. 19. When the receipt of data from the host computer180is complete, the host I/F111sends a notification to the MP121to the extent that the reception of the data has been completed. The MP121analyzes the results of the notification from the host I/F111(S411).

The MP121sets the CM131storage location of the data (the data that is in the dirty state. Also called dirty data) that has yet to be written to the HDD170, and, in addition, adds up the amount of dirty data (S412). In other words, the MP121stores the write-destination access of the dirty data, and, in addition, updates the total amount of the dirty data (S412).

The MP121requests that the host I/F111send a write-complete notification to the host computer180(S413). The MP121waits for a notification showing that the write-complete notification has been sent to the host computer180to be sent from the host I/F111(S414).

FIG. 21shows a continuation of the processing ofFIG. 20. When the MP121receives the notification to the extent that the write-complete notification has been sent from the host I/F111, the MP121analyzes the result, and ends the host data CM write processing (S421).

Host data HDD read processing will be explained by referring toFIGS. 22 and 23. The host data HDD read processing is for reading data requested by the host computer180from the HDD170and storing this data in the CM131, and is also called a staging process.

The MP121references the read request address (S501), and determines whether or not a cache area corresponding to the read request address has been reserved in the CM131(S502). In a case where a cache area has not been reserved (S502: NO), the MP121reserves a cache area (S503).

The MP121requests that the disk I/F141receive the data (S504). That is, the MP121requests that the disk I/F141read the data from the HDD170. Then, the MP121waits for the data read from the HDD170by the disk I/F141to be complete (S505).

FIG. 23shows a continuation of the processing inFIG. 22. The MP121, upon receiving a notification from the disk I/F141to the extent that data receipt has been completed, analyzes the reception results (S511). The MP121issue a notification as to the location of the data that was read from the HDD170and stored in the CM131in the host data CM read processing (S311ofFIG. 17) (S512).

Host data HDD write processing will be explained by referring toFIGS. 24 and 25. The host data HDD write processing is for writing the dirty data stored in the CM131to the HDD170, and is also called a destaging process.

The MP121references the write request address (S601), and requests that the disk I/F141transfer the data (S602). The MP121waits for a notification to the extent that the data transfer has been completed by the data I/F141(S603).

The data transfer by the disk I/F141signifies that the disk I/F141transfers and writes to the HDD170the data (the write-targeted data, and data that is in the dirty state) that is stored in the CM131.

FIG. 25shows a continuation of the processing inFIG. 24. The MP121analyzes the notification received from the disk I/F141(S511). The MP121, based on the results of this analysis, releases the location of the dirty data set in S412ofFIG. 20, and additionally reduces the total amount of dirty data (S512).

That is, the MP121changes the attribute of the data transferred to the HDD170by the disk I/F141from among the dirty data stored in the CM131from “dirty” to “clean”, and, in addition, reduces the total amount of dirty data by the size of the data transferred to the HDD (S512).

FIG. 26shows processing by which a user performs various types of settings using the management console20. The management console20displays a menu screen G10shown inFIG. 27(S701), and waits for the start of an input operation by the user (S702).

The user inputs either a limit or a threshold for an execution count via the menu screen G10(S702). The management console20stands by until the input operation by the user has ended (S703). In a case where the value inputted to the menu screen G10is to be fixed, the user operates the save button B10. By contrast, in a case where the inputted value is to be cancelled, the user operates the cancel button B11.

When user inputting ends and the save button B10is operated, the management console20saves the setting value inputted by the user (S704). In addition, the management console20sends the user-inputted setting value to the controller100of the storage system10and sets this value (S705).

FIG. 27shows an example of the menu screen G10. The menu screen G10comprises multiple setting sections G11, G12. The first setting section G11is for setting the upper limit value of the execution count. The second setting section G12is for setting a threshold for starting the process for reviewing the execution count upper limit value. Furthermore, information capable of being set in the storage system10from the management console20is not limited to the above-mentioned upper limit value and threshold.

Configuring this embodiment like this makes it possible for each microprocessor121to execute synchronous processing and asynchronous processing. Therefore, the MP121can be used efficiently.

In this embodiment, the MP121is able to exert control so as to execute only one of either the synchronous processing or the asynchronous processing for a long period of time. In addition, in this embodiment, the upper limit value of the number of times that host I/F processing (synchronous processing) is able to be executed, and the upper limit value of the number of times that disk I/F processing (asynchronous processing and synchronous processing) is able to be executed is changed in accordance with the status of the storage system10as shown in S201, S207, S204, S206and S205. Therefore, it is possible to balance improved response related to an I/O request from the host computer180with efficient use of the MP121.

In this embodiment, processing is divided between host I/F processing and disk I/F processing, and the upper limit values of the number of times that these are respectively able to be executed are set cyclically as shown in S116and S126. Therefore, the I/O request response can be improved, and, in addition, the MP121can be used efficiently even when the operating status changes in various ways.

The first through the third stages from the top ofFIG. 35schematically show the operating status of the MP121in accordance with this embodiment. MP #1, which is being used in the “host I/F priority” mode, is shown in the first stage, MP #2, which is being used in the “disk I/F priority” mode, is shown in the second stage, and MP #3, which is being used in the “coequal” mode, is shown in the third stage.

The MP #1, which is in the host I/F priority mode, places priority on and executes more host I/F processing (the host data CM read process and the host data CM write process), and executes fewer disk I/F processing (the host data HDD read process and host data HDD write process). Alternatively, MP #2, which is in the disk I/F priority mode, places priority on and executes more disk I/F processing and executes fewer host I/F processing. The MP #3, which is in the coequal mode, executes host I/F processing and disk I/F processing on a coequal basis. The MPs #1through #3of the respective modes execute either synchronous processing or asynchronous processing with no breaks in between.

A second embodiment will be explained by referring toFIG. 28. This embodiment and those that follow are equivalent to variations of the first embodiment. Accordingly, the explanations of this and the following embodiments will focus on the differences with the first embodiment.

FIG. 28shows an execution count limit tuning table230A and an execution count table240A. In this embodiment, a synchronous processing priority mode, an asynchronous processing priority mode and a coequal mode are used instead of the host I/F priority mode, the disk I/F priority mode, and the both I/Fs coequal mode of the first embodiment.

As for the relationship with the first embodiment, synchronous processing, for example, includes the host data CM read process, the host data CM write process and the host data HDD read process. Asynchronous processing, for example, includes the host data HDD write process.

The synchronous processing priority mode is for executing synchronous processing on a priority basis. In the synchronous processing priority mode, the upper limit value ULNes1 for executing synchronous processing is set higher than the upper limit value ULNeas1 for executing asynchronous processing (ULNes1>ULNeas1).

The asynchronous processing priority mode is for executing asynchronous processing on a priority basis. In the asynchronous processing priority mode, the upper limit value ULNes2 for executing synchronous processing is set lower than the upper limit value ULNeas2 for executing asynchronous processing (ULNes2<ULNeas2).

The coequal mode is for executing synchronous processing and asynchronous processing equally. In the coequal mode, the upper limit value ULNes3 for executing synchronous processing and the upper limit value ULNeas3 for executing asynchronous processing are set to an equal value (ULNes3=ULNeas3).

It is also possible for the MP121to be used efficiently from the standpoints of synchronous processing and asynchronous processing like this instead of the standpoints of host I/F processing and disk I/F processing. In this embodiment, each MP121is able to execute synchronous processing and asynchronous processing up to their respective upper limit values, making it possible to use the MPs121efficiently.

A third embodiment will be explained by referring toFIGS. 29 through 35. In this embodiment, a mode that specializes in host I/F processing and a mode that specializes in disk I/F processing will be added in addition to the host I/F priority mode, the disk I/F priority mode, and the both I/Fs coequal mode.

FIG. 29shows the storage contents of the LM122. In this embodiment, an MP setting information table290has been newly added to the configuration shown inFIG. 2.

FIG. 30shows the configuration of the MP setting information table290. This table290manages information that is set for each MP121. The MP setting information table290comprises an MP number field291and an attribute flag field292.

The MP number field291stores a number for identifying each MP121. The attribute flag field292stores an attribute (mode) that is set for each MP121. The modes include the host I/F priority mode, the disk I/F priority mode, the both I/Fs coequal mode, a host I/F specialized mode, and a disk I/F specialized mode.

The host I/F specialized mode specializes in host I/F processing. The disk I/F specialized mode specializes in disk I/F processing.

FIG. 31shows an I/O process. The MP121determines whether or not a predetermined time period has elapsed since the previous I/O process (S801). In a case where the predetermined time period has elapsed (S801: YES), the MP121registers the current time (S802), and next references the attribute flag stored in the table290(S803).

The MP121determines whether or not to switch the mode based on a variety of information, and in a case where it is determined to be necessary, switches the mode (S804). One example of a process that switches the mode will be described usingFIG. 34. In a case where the mode is switched, the MP121checks for an unprocessed request, and when an unprocessed request exists, executes this process and ends the processing.

In a case where the predetermined time period has not elapsed (S801: NO), the MP121checks each of the queues410through430(S805), and in a case where a processing request is found (S806: YES), executes this processing request (S807).

Furthermore, the MP121checks either all or a portion of each of the queues410through430in accordance with the mode to which it itself has been set. In relation to the first embodiment, an MP that is set to the host I/F specialized mode only needs to check the host I/F synchronous processing queue410; there is no need to check the disk I/F synchronous processing queue420or the disk I/F asynchronous processing queue430. Similarly, an MP set to the disk I/F specialized mode only needs to check the disk I/F synchronous processing queue420or the disk I/F asynchronous processing queue430; there is no need to check the host I/F synchronous processing queue410.

FIG. 32shows the processing of an MP set in the host I/F specialized mode. The MP121, which specializes in processing related to the host I/F, analyzes a processing request fetched from the queue (S811), and branches to the respective processes in accordance with the results of the analysis (S812). The MP121executes either the host data CM read process (S813) or the host data CM write process (S814).

FIG. 33shows the processing of an MP set to the disk I/F specialized mode. The MP121, which specializes in processing related to the disk I/F, analyzes a processing request fetched from the queue (S821), and branches to the respective processes in accordance with the result of the analysis (S822). The MP121executes either the host data HDD read process (S823) or host data HDD write process (S824).

FIG. 34shows processing for switching the MP attribute (mode). The MP121, for example, calculates an index value for an attribute change based on the MP rate of operation, the cache dirty ratio, the number of synchronous processing requests accumulated in a queue, the number of asynchronous processing requests accumulated in a queue, the number of host I/Fs, the number of disk I/Fs, the number of MPs121, the number of MPs set to either the host I/F priority mode or the host I/F specialized mode, and the number of MPs set either to the disk I/F priority mode or the disk I/F specialized mode (S901).

The MP121compares the calculated index value to a preset reference value for switching, and determines whether to switch to the host I/F specialized mode or to switch to the disk I/F specialized mode (S903).

In a case where it has been determined to switch to the host I/F specialized mode, the MP121switches to the host I/F specialized mode (S904). Alternatively, in a case it has been determined to switch to the disk I/F specialized mode, the MP121switches to the disk I/F specialized mode (S905).

FIG. 35schematically shows the operating status of an MP used in each mode. MPs #1through #3were described in the first embodiment, and as such explanations of these MPs will be omitted here. A fourth stage MP #4is set to the host I/F specialized mode. A fifth stage MP #5is set to the disk I/F specialized mode.

The host I/F specialized mode MP #4only executes processing related to the host I/F111, and the disk I/F specialized mode MP #5only executes processing related to the disk I/F141. Therefore, in a case where there is no processing request in the host I/F synchronous processing queue410, the MP #4transitions to the idle state. Similarly, in a case where there is no processing request in either the disk I/F synchronous processing queue420or the disk I/F asynchronous processing queue430, the MP #5transitions to the idle state.

Therefore, in this embodiment, the utilization efficiency of the MP that is set either to the host I/F specialized mode or the disk I/F specialized mode is lower than that in the first embodiment. However, to provide an MP that specializes in either host I/F-related processing or disk I/F-related processing, this embodiment makes it possible to carry out processing without response deterioration even in a case where there is a sudden increase in I/O requests from the host computer.

A fourth embodiment will be explained by referring toFIGS. 36 through 40. This embodiment provides an MP that specializes in synchronous processing and an MP that specializes in asynchronous processing. The focus of the following explanation will be the provision of the synchronous processing specialized MP and the asynchronous processing specialized MP.

FIG. 36shows an MP setting information table290A. The MP setting information table290A comprises an MP number field291and a synchronous MP flag field292A. The synchronous MP flag is information denoting whether or not an MP is a synchronous processing specialized MP. In a case where 1 has been set in the synchronous MP flag (synchronous MP flag=1), this MP is an MP that specializes in synchronous processing. In a case where 0 has been set in the synchronous MP flag (synchronous MP flag=0), this MP is an MP that specializes in asynchronous processing.

FIG. 37shows an I/O process. The MP121determines whether or not a predetermined time period has elapsed since the previous I/O process (S1001). In a case where the predetermined time period has elapsed (S1001: YES), the MP121registers the current time (S1002) and references the flag stored in the table290A (S1003).

The MP121determines whether or not to switch the MP attribute based on a variety of information, and when it is determined to be necessary, switches the MP attribute (S1004). One example of a process that switches the MP attribute will described usingFIG. 40. In a case where the MP attribute is switched, the MP121checks for an unprocessed request, and when an unprocessed request exists, executes this process and ends the processing.

In a case where the predetermined time period has not elapsed (S1001: NO), the MP121checks each of the queues410through430(S1005), and in a case where a processing request is found (S1006: YES), executes this processing request (S1007).

Furthermore, in relation to the first embodiment, a synchronous processing specialized MP only needs to check the host I/F synchronous processing queue410and disk I/F synchronous processing queue420. An asynchronous processing specialized MP only needs to check the disk I/F asynchronous processing queue430.

FIG. 38shows the processing of an MP that is set to specialize in synchronous processing. The MP121, which specializes in synchronous processing, analyzes a processing request fetched from the queue (S1011), and branches to the respective processes in accordance with the result of the analysis (S1012). The MP121executes either a host data CM read process (S1013), a host data CM write process (S1014), or a host data HDD read process (S1015). Furthermore, the configuration may be such that another synchronous process is also able to be executed.

FIG. 39shows the processing of an MP that is set to specialize in asynchronous processing. The MP121, which specializes in asynchronous processing, analyzes a processing request fetched from the queue (S1021), and branches to the respective processes in accordance with the result of the analysis (S1022). The MP121executes either a host data HDD read process (S1023) or another asynchronous process (S1024).

Other asynchronous processes, for example, may include an asynchronous local copy process, an asynchronous remote copy process, a copy function initial copy process, an owner rights transfer process, a failure recovery process, a configuration change process, a logical volume setting process, a storage system configuration change process, and a formatting process.

FIG. 40shows the process for switching the MP attribute. The MP121, for example, computes a function based on the MP rate of operation, the cache dirty ratio, the number of synchronous processing requests accumulated in a queue, the number of asynchronous processing requests accumulated in a queue, the number of host I/Fs, the number of disk I/Fs, the number of MPs121, the number of MPs set to either the host I/F priority mode or the host I/F specialized mode, and the number of MPs set to either the disk I/F priority mode or the disk I/F specialized mode (S1101).

For example, the MP121computes a function Nsmp for determining the number of MPs specializing in synchronous processing and a function Nasmp for determining the number of MPs specializing in asynchronous processing (S1101). The Nsmp is calculated using Equation (1). The Nasmp is calculated using Equation (2). Hereinbelow, the MP specializing in synchronous processing may be called the synchronous MP and the MP specializing in asynchronous processing may be called the asynchronous MP.

The values of the respective types of variables in both Equation (1) and Equation (2) are as follows.l: Number of host I/Fs (ports)L: Maximum number of host I/Fs (ports) possiblem: Number of HDDs170M: Maximum number of HDDs170possiblen: Number of MPs121a: Number of RAID groups (or HDDs170) corresponding to RAID level 1b: Number of RAID groups (or HDDs170) corresponding to RAID level 5c: Number of RAID groups (or HDDs170) corresponding to RAID level 6p: Number of HDDs170(or volume pairs and/or logical volumes) corresponding to an asynchronous local copyq: Number of HDDs170(or volume pairs and/or logical volumes) corresponding to a cache-resident functionfloor (x): Function denoting the largest integer equal to or smaller than xceil (x): Function denoting the smallest integer equal to or larger than x

In a case where the value of one of the Nsmp and the Nasmp is zero, 1 can be added to the one and 1 can be subtracted from the other. Furthermore, the cache resident function is for constantly holding at least a portion of the data inside the logical volume in the CM131, and for improving the response to an I/O request.

The above-cited Equation (1) and Equation (2) are based on the idea that an increase in the number of host I/Fs111will require more synchronous processing, and an increase in the number of HDDs170will require more asynchronous processing. Specifically, the above-cited Equation (1) and Equation (2) are respectively based on Equation (3) and Equation (4) below.

As used here, k is a computational expression that includes m, and increases when the value of m increases. According to Equations (1) through (4), a, b, c, p and q are included in k as elements. In this embodiment, m is an essential element, and the elements other than m do not necessarily have to be included in k. Including at least one of a, b, and c in k means that p and q do not need to be included, and including at least one of p and q in k means that none of a, b and c need to be included.

The above-cited Equations (1) through (4) are based on the idea that increasing the number of times that the HDD170is accessed will result in the need for more asynchronous processing.

Specifically, the fact that the coefficients of a, b and c become 1, 2 and 3 (these coefficients are examples) is due to the belief that, from among RAID 1, RAID 5 and RAID 6, the HDD170access count for RAID 1 will be the smallest, the access count for RAID 5 will be the next smallest after RAID 1 from the standpoint of one parity being created per stripe, and the access count for RAID 6 will be the largest from the standpoint of two parities being created per stripe.

Further, the fact that k increases when p increases (for example, the fact that p is added) is because when an asynchronous local copy is carried out the HDD170is accessed irrespective of I/O request-compliant access.

Further, the fact that k decreases when q increases (for example, the fact that q is subtracted) is because access to the CM131is enough, and the HDD170that constitutes the basis of the logical volume is not accessed even when an I/O request comprising the LUN of the logical volume corresponding to the cache-resident function is received.

The MP121compares the calculated Nsmp to the current number of synchronous MPs, and, in addition, compares the calculated Nasmp to the current number of asynchronous MPs (S1102), and determines whether or not it is necessary to change the number of synchronous MPs and the number of asynchronous MPs (S1103). The current number of synchronous MPs is the total number of entries in which the value of the synchronous MP flag is “1”, and the current number of asynchronous MPs is the total number of entries in which the value of the synchronous MP flag is “0”.

In a case where the results of S1102are that the current number of synchronous MPs is equivalent to Nsmp, and, in addition, the current number of asynchronous MPs is equivalent to Nasmp (S1103: NO), this processing ends.

In a case where the result of S1102is that the current number of asynchronous MPs is less that Nasmp (S1103: YES), the MP121selects one arbitrary synchronous MP and changes the value of the synchronous MP flag corresponding to this synchronous MP from “1” to “0” (S1104).

In a case where the result of S1102is that the current number of synchronous MPs is less that Nsmp (S1103: YES), the MP121selects one arbitrary asynchronous MP and changes the value of the synchronous MP flag corresponding to this asynchronous MP from “0” to “1” (S1105).

In S1104and/or S1105, either a synchronous MP or an asynchronous MP may be selected at random. Further, the selected either synchronous MP or asynchronous MP may be a MP that has a low rate of operation, which is processing execution time within a predetermined time (for example, the MP that has the lowest rate of operation among the synchronous MP group or the asynchronous MP group).

By configuring this embodiment like this, for example, a MP that specializes in synchronous processing and a MP that specializes in asynchronous processing are added to the configuration of the first embodiment, thereby making it possible to deal with a either a case in which synchronous processing is the focus, or a case in which a large volume of asynchronous processing must be executed.

A fifth embodiment will be explained by referring toFIG. 41. In this embodiment, an example of a configuration for executing a remote copy process will be explained.

FIG. 41is a drawing of an entire computer system. The computer system comprises a local site and a remote site. The local site comprises a host computer180, a communication network190, and a storage system10. The remote site comprises another communication network190band another storage system10b.

The storage system10of the local site comprises a copy-source logical volume (hereinafter the copy-source volume)171P. The other storage system10bof the remote site comprises a copy-destination logical volume (hereinafter, the copy-destination volume)171S. The copy-source volume171P and the copy-destination volume171S form a remote copy pair.

In the configuration shown inFIG. 41, in the case of asynchronous remote copy, data is transferred to the copy-destination volume171S in synch with a data write to the copy-source volume171P by the host computer180.

In the case of an asynchronous remote copy, the host computer180writes the data to the copy-source volume171P, after which this data is transferred to the copy-destination volume171S at a separate timing.

A sixth embodiment will be explained by referring toFIG. 42. In this embodiment, a case in which multiple MPs121share the execution of a series of processes will be explained.

FIG. 42shows processing for reading data requested by the host computer180from the HDD170and transferring this data to the CM131. The processing ofFIG. 42shows a case in which the processing ofFIG. 22is shared by multiple MPs121.

A first MP121references a read request (S1201), and determines whether or not a cache area corresponding to the read request has been reserved in the CM131(S1202). In a case where the cache area has not been reserved (S1202: NO), the first MP121reserves the cache area in the CM131(S1203). The first MP121stores a notification in the LM122to the effect that the read-requested processing will continue (S1204).

A second MP121, upon checking the LM122and detecting this notification (S1205), requests that the disk I/F141receive data from the HDD170(S1206). The second MP121stores the processing request in the disk I/F synchronous processing queue420. The second MP121waits until the disk I/F141reads the data from the HDD170and transfers this data to the cache area reserved in the CM131(S1207).

The configuration can be such that the execution of the host data HDD write process shown inFIG. 24is also shared by multiple MPs121. The configuration may be such that the first MP121executes S601ofFIG. 24, stores a notification in the LM122to the effect that the execution of S601has been completed, and the second MP121detects this notification and executes S602and S603.

Furthermore, the present invention is not limited to the embodiments described hereinabove. A person with ordinary skill in the art will be able to make various additions and changes without departing from the scope of the present invention.

REFERENCE SIGNS LIST