# Patent

## Title
Storage controlling device and control method for a storage controlling device

## Abstract

A storage controlling device is connected to an external device, where both devices are configured to communicate with each other. The storage controlling device is further configured to execute input/output processes in response to data input/output requests. The input/output processes are executed in response to the data input/output requests attached to priority level determining information in an order that is determined based on priority level determining information that is attached as attribute information of the data input/output requests received from the external device.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
The present application claims priority upon Japanese Patent Application No. 2002-197366 filed on Jul. 5, 2002, which is herein incorporated by reference.
BACKGROUND OF THE INVENTION
The present invention relates to a storage controlling device and a control method for a storage controlling device.
With development of IT-related industries, the demand for data storage is rising sharply. In so-called data centers in which backbone systems and web servers and the like are operated, large numbers of disk array systems connected to, for example, SANs (storage area networks) and LANs (local area networks) are introduced and operated. And also the needs of customers using the disk array systems operated in such data centers or the like become increasingly diversified.
In ordinary data centers or the like, due to the introduction of subsequent models, a variety of storage resources, such as disk array systems, network devices or peripheral devices, with different capacity and performance are operated. Therefore, the performance of a storage resource that is provided to the customer differs depending on the model on which that storage resource is provided, and thus also the quality of the service provided to the customer varies.
On the other hand, seen from the viewpoint of the customer, it is sufficient only if necessary and adequate storage resources are secured in accordance with the customer's financial or economic potential, and it is advantageous if those can be used at the lowest cost possible. For example, the data handled by the customer may or may not be data for which real-time processing is more important than for other data so that it is not necessary to use more costly and highly advanced storage resources to process all data. That is to say, the customer will ordinarily want to utilize resources in a necessary minimum form that complies as much as possible with the customer's present and future needs.
SUMMARY OF INVENTION
The present invention has been made from this point of view, and its object is to provide a storage controlling device which functions purposively and effectively.
In order to achieve the above-mentioned object, a storage controlling device in accordance with a main aspect of the present invention being connected to an external device and being able to communicate with each other comprises storage means, means for sending/receiving data input/output requests to/from the external device, and execution means for executing data input/output processes with respect to the storage means in response to the data input/output requests in an order that is determined based on priority level determining information that is attached as attribute information of the data input/output requests received from the external device.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 shows the overall configuration of a storage controlling device in an embodiment of the present invention;
FIG. 2 shows a priority level administration table in an embodiment of the present invention;
FIG. 3 shows a processing proportion administration table in an embodiment of the present invention;
FIG. 4 shows a flowchart illustrating the operation of the storage controlling device when executing a data input/output request in an embodiment of the present invention;
FIG. 5 shows a priority level administration table in another embodiment of the present invention; and
FIG. 6 shows a data input/output administration table in an embodiment of the present invention.



DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
=== Outline of the Disclosure ===
At least the following matters will be made clear by the explanation in the present specification and the description of the accompanying drawings.
A storage controlling device in accordance with a main aspect of the present invention being connected to an external device and being able to communicate with each other comprises storage means, means for sending/receiving data input/output requests to/from the external device, and execution means for executing data input/output processes with respect to the storage means in response to the data input/output requests in an order that is determined based on priority level determining information that is attached as attribute information of the data input/output requests received from the external device.
With this configuration, the storage controlling device can get the priority level of the data that is input or output by simply consulting the priority level determining information attached to the data input/output requests, the order for the data input or output can be determined based thereupon, and in accordance with this order, the data can be input or output with respect to the storage system. Consequently, with this invention, the storage controlling device can determine the order of the data input/output requests for each client or for each type of disk drive, and it becomes possible to provide a storage controlling device that can function purposively and effectively.
Furthermore, priority levels corresponding to the priority level determining information may be attached to the received data input/output requests, and the data input/output processes corresponding to the data input/output requests of each of the priority levels may be executed at least once every time the data input/output processes are executed a preset number of times. Thus, when the execution order of the data input/output processes is determined based on the priority level determining information, it is possible to avoid problems that the data input/output processes with a low priority level determining information are always postponed and those data input/output processes are not executed for a long time.
Furthermore, a priority level administration table may be stored that associates the priority level determining information with the priority levels with which the execution means executes the data input/output requests, and the order in which the execution means execute the data input/output processes corresponding to the data input/output requests may be decided based on the priority level administration table. Thus, the priority level determining information and the priority levels can be handled independently, and for example priority levels for writing requests and priority levels for reading requests can be set independently with regard to one set of priority level determining information, allowing more detailed settings for the priority levels.
Furthermore, priority levels corresponding to the priority level determining information may be attached to the received data input/output requests, and the data input/output processes corresponding to the data input/output requests of each of the priority levels may be executed at least once every time the data input/output processes are executed a preset number of times. Thus, when the execution order of the data input/output processes is determined based on the priority level determining information, it is possible to avoid problems that the data input/output processes with a low priority level determining information are always postponed and those data input/output processes are not executed for a long time.
Furthermore, the priority level determining information may specify the storage means on which the input/output processes corresponding to the data input/output requests are executed.
Furthermore, the storage means may be at least one disk drive, and the priority level determining information may specify storage regions that are logically set on storage regions of those disk drives.
Furthermore, the priority level determining information may specify the external device that has sent the data input/output request.
Furthermore, the storage controlling device may further comprise means for sending/receiving the priority level administration table to/from the external device. Thus, it becomes possible to associate the priority level determining information in the priority level administration table with the priority levels from the external device.
Furthermore, the storage controlling device may further comprise means for receiving data input/output requests that comply a protocol specifying, with a file name, the data to be processed in the data input/output process.
Moreover, in a control method for a storage controlling device being connected to an external device and being able to communicate with each other and comprising storage, sending/receiving unit for sending/receiving data input/output requests to/from the external device, and storage controlling device for executing data input/output processes with respect to the storage in response to the data input/output requests, the storage controlling device may execute the data input/output processes in response to the data input/output requests in an order that is determined based on priority level determining information that is attached as attribute information of the data input/output requests received from the external device.
Moreover, it is also possible to execute on the external device in the control method for the storage controlling device a program for executing means for setting an association between the priority level determining information and the priority levels with which the execution means executes the data input/output requests, and means for sending the association that has been set to the storage controlling device.
=== Embodiments ===
The following is a detailed description of the present invention, with reference to the drawings.
FIG. 1 shows a storage system in accordance with an embodiment of the present invention.
In FIG. 1, a disk array system serving as an example of a storage controlling device 100 in accordance with the present invention is provided with processing function of an NFS (network file system) protocol for receiving data input/output requests for specified file names from clients 102, which are external devices. This type of disk array system is commonly called NAS (network attached storage).
The storage controlling device 100 is connected to the clients 102 so that communication is possible, and includes a plurality of disk drives 104 as storage means, an NAS engine 106 providing means (or unit) for sending/receiving data by NFS, and a disk controller 108 as execution means for inputting/outputting data into/from the disk drives 104.
Furthermore, the storage controlling device 100 also includes a processing queue (not shown in the drawings; referred to as “queue” below) in which data input/output requests that are sent by the clients 102 and received by the NAS engine 106 are registered, and a data input/output request administration section 110 that determines for example the processing order of the data input/output requests in the queue. The storage controlling device 100 sets up “logical units” (referred to as “LU” below), which are logical storage regions in the storage regions provided by the disk drives 104. Unique logical unit numbers (referred to as “LUN” below) a to g are assigned to these logical units.
The storage controlling device 100 stores a priority level administration table (for example, FIG. 2 or FIG. 5), in which priority level determining information that is attached as attributes to the data input/output requests is associated with priority level in actually processing. Here, “priority level” is determined in accordance with the priority level determining information, and is the information that the storage controlling device 100 looks up when deciding the execution order of the data input/output processing in response to data input/output requests. In principle, the storage controlling device 100 processes those data input/output requests that have a higher priority level first. Furthermore, in case of the same priority level, the data input/output request that was received first is processed first.
The storage controlling device 100 also stores a processing proportion administration table (for example FIG. 3). In this table, the maximum number of successive processes of data input/output requests of the disk controller 108 is set for each priority level. For example, when the maximum number of successive data input/output requests of a certain priority level has been processed, then the data input/output requests of the next highest priority level are processed even if there are data input/output requests of the current priority level left. Processing continues to the data input/output requests with the lowest priority level, and then the data input/output requests with the first priority level are processed again.
The following is a more detailed explanation of several processes for specific data input/output requests performed on this storage controlling device 100.
Working Example 1
In this working example, one priority level is set for the priority level determining information attached to the data input/output requests sent from the external devices 102. FIG. 2 shows an example of a priority level administration table for the case that the priority level determining information is the LUN. In this table, the processing performance of LUN “a” is the highest, and consequently, the data of the highest importance or urgency are stored on the LUN “a.” As the LUN names proceed alphabetically, the processing performance of the LUs decreases, and data of the lowest importance or urgency is set to be stored on the LUN “g.” It should be noted that this processing performance of the LUs is determined for example depending on what kind of performance is selected for the disk drive providing the LU.
There are ten levels, 1 through 10, of priority (a larger number means a higher priority), and a priority level is assigned to each LUN. Furthermore, the storage controlling device 100 stores the processing proportion administration table shown in FIG. 3. In this table, the maximum number of successive processes of data input/output processes of the disk controller 108 is set for each priority level.
The content of the priority level administration table and the processing proportion administration table is determined, for example, by an administration host 112, which is one of the external devices. By setting these tables, the company operating the storage controlling device 100 can for example provide the service that the processing priority level of the data entrusted by its customers is varied depending on the usage fees for the customers. Thus, the customers utilizing the storage controlling device 100 can select a service fulfilling their purpose, in view of the rapidity and importance of the data stored in the storage controlling device 100 as well as from the customer's economic viewpoint.
Furthermore, it is also possible to make these tables settable from a client, for example from a user terminal. Thus, customers using the storage controlling device 100 at a data center or the like can set the content of the tables quickly and easily at a time of their convenience, without going, for example, through an operator or the company operating the storage controlling device 100. Furthermore, if the customer wants to confirm the settings in which the storage controlling device 100 is used, then it is easy to look up the content of the tables from a user terminal or client.
In a storage controlling device 100 with this configuration, when a data input/output request specifying a LUN is sent from a client 102, the NAS engine 106 receives it, and sends it to the data input/output request administration section 110. The data input/output request administration section 110 registers the received data input/output request in a queue in which data input/output requests are stored.
Next, by looking up the priority level administration table, the data input/output request administration section 110 acquires the priority level corresponding to the LU serving as the storage destination of the data input/output request, and based on the processing proportion administration table, a data input/output request is selected from the data input/output requests registered in the queue.
This selection is carried out in the order of the flowchart of FIG. 4. When the storage controlling device 100 executes the data input/output request that have the highest priority in the queue, the counter of that priority level is incremented by one (s402). When the incremented counter reaches the maximum number of successive processes for that priority level as shown in the processing proportion administration table (s403–s404), even if there are still data input/output requests of the current priority left, then the data input/output request of the next highest priority is executed and the counter of that priority is incremented by one (s404–s406). Then, data input/output requests having that priority are executed until the counter reaches the maximum number of successive processes for that priority level (s406–s408–s410). When the counter of that priority level has reached the maximum number of successive processes, even if there are still data input/output requests of the current priority level left, then the data input/output requests of the next highest priority is executed and the counter of that priority is incremented by one (s408–s404–s406). If the data input/output requests for a certain priority level are all executed without reaching the maximum number of successive processes for that priority level, then at that point the data input/output request of the next highest priority level is executed (s408–s410–s404–s406).
Thus, when the processing from the data input/output requests with the highest priority to the data input/output requests with the lowest priority has finished, then the data input/output requests with the highest priority level are processed again (s404–s412–s402). When the cycle of executing the priority level data input/output requests in order has been executed for all data input/output requests, and there are no more data input/output requests left in the queue, the counter is cleared (s412–s414).
As explained above, the disk controller 108 executes in order the data input/output requests for the disk drives 104 in the queue.
Working Example 2
In Working Example 1, one priority level was associated with each priority level determining information attached as an attribute of the data input/output request. In the working example explained in the following, plural priority levels are associated with a priority level determining information, depending on the processing that is requested by the data input/output request.
The storage controlling device 100 stores a priority level administration table as shown in FIG. 5. In this table, priority levels for writing and reading are independently set for each LUN. Moreover, the storage controlling device 100 stores the processing proportion administration table shown in FIG. 3, in which the maximum number of successive processes of data input/output requests of the disk controller 108 is set for each priority level.
The storage controlling device 100 determines the order of write processes (or read processes) for write requests (or read requests) sent from the clients, using the priority level administration table and the processing proportion administration table. It should be noted that in this working example, the processing, after the write requests (or read requests) to which priority level information is attached have been sent from the clients to the storage controlling device 100 and until the disk controller 108 executes the write requests (or read requests), is similar to Working Example 1, except for the type of priority level administration table, so that explanations on this process is omitted here.
With this working example, it is, for example, possible to set different priority levels for write requests and read requests. Consequently, if more urgency is placed on a writing process than on a reading process, as for a data backup process for example, then the utilization efficiency of the entire storage controlling device 100 can be improved by increasing the priority level of writing processes beyond that of reading processes with respect to directories for backups.
Working Example 3
In Working Examples 1 and 2, when a data input/output request with a specified LUN is sent from a client 102 to the storage controlling device 100, the storage controlling device 100 registers this data input/output request in the queue, and for the execution of the data input/output requests, determines the processing order by selecting a data input/output request. In this working example, on the other hand, a data input/output administration table as shown in FIG. 6 is provided in the data input/output request administration section 110, in addition to the priority level administration table and the processing proportion administration table.
When the NAS engine 106 of the storage controlling device 100 receives a data input/output request with a specified LUN sent from a client 102, then it sends that data input/output request to the data input/output request administration section 110. The data input/output request administration section 110 writes the sent data input/output request into the data input/output administration table. Thus, data input/output requests are registered in the data input/output administration table, classified by priority level.
Then, the data input/output administration section 110 executes the data input/output requests with the same method as in Working Example 1, based on the priority level administration table and the processing proportion administration table.
=== Other Embodiments ===
In Working Example 1, since the priority level determining information corresponds to the priority level, the correspondence between priority level determining information and priority levels is set in advance, and if it is not necessary to change the settings, then the priority level administration table does not necessarily have to be provided. It is also possible that every time an input/output request is sent, the storage controlling device 100 registers the input/output request directly in the processing queue, and executes the data input/output request by recognizing the priority level determining information.
In Working Example 3, the data input/output request administration section 110 may also be provided with a processing queue for each of the priority levels, instead of executing the data input/output requests from a single queue.
Furthermore, it is also possible to associate the priority level with information specified by the client. In that case, it is possible to arrange several levels for the usage fee of the storage controlling device 100, and to provide a service so that the data input/output requests from the clients of customers paying a high usage fee are processed preferentially.
Thus, with the present invention, a storage controlling device is provided that functions purposively and effectively.

## Claims

1. A storage controlling device coupled with at least one external device, the storage controlling device and external device configured to communicate with each other, comprising:
a plurality of storage devices configured to store data to be processed; and
a controller configured to receive data input/output requests from said at least one external device and configured to execute data input/output processes that process said data stored in said plurality of storage devices in response to said data input/output requests,
wherein execution of said data input/output processes are performed in an order that is determined based at least in part on priority level determining information of said data input/output requests received from said at least one external device.

2. The storage controlling device of claim 1 wherein said priority level determining information is assigned to said at least one external device.

3. The storage controlling device of claim 1 wherein said priority level determining information is identified with said at least one external device.

4. The storage controlling device of claim 1 wherein said input/output requests are read requests or write requests.

5. A storage system comprising:
at least one external device;
a storage controlling device comprising:
a plurality of storage devices, and
a controller configured to receive input/output requests from said at least one external device and to process received input/output requests by accessing said plurality of storage devices, each received input/output request having associated therewith priority level determining information; and

a communication link for sending/receiving data between said storage controlling device and said at least one external device,
wherein sending/receiving of said data between said storage controlling device and said at least one external device is performed in an order that is determined based at least in part on said priority level determining information of said input/output request.

6. The storage system of claim 5 wherein said priority level determining information is assigned to said at least one external device.

7. The storage system of claim 5 wherein said priority level determining information is identified with said at least one external device.

8. The storage system of claim 5 wherein said storage controlling device is Networked Attached Storage (NAS).

9. The storage system of claim 5 wherein said communication link between said storage controlling device and said external devices is a Local Area Network (LAN).

10. The storage system of claim 5 wherein said input/output requests are read requests or write requests.

11. A method of managing a storage system comprising at least one external device, a storage controlling device having at least one storage device, and a communication link connecting said storage controlling device and said at least one external device, the method comprising:
said storage controlling device receiving input/output requests from said at least one external device;
prioritizing said input/output requests based at least in part on priority level determining information of said input/output requests received from said at least one external device; and
executing said input/output requests based on said priority level determining information.

12. A method of managing a storage system according to claim 11 wherein said priority level determining information is assigned to said at least one external device.

13. A method of managing a storage system according to claim 11 wherein said priority level determining information is identified with said at least one external device.

14. A method of managing a storage system according to claim 11 wherein said input/output requests are read requests or write requests.