Storage system and performance management method of storage system

It is an object to use a storage region in an efficient manner and maintain a performance of a storage system. A volume group GR11 includes reference volumes 1411, 1413, and 1415 and source volumes 1412, 1414, 1416, and 1417 that derive from the reference volumes. Each of the volumes stores only the difference data from a volume that is a parent thereof. A volume that is a cause of a problem is moved or copied from a pool of the moment 1410 to other pool 1420. A configuration of a volume group is modified.

TECHNICAL FIELD

The present invention relates to a storage system and a performance management method of a storage system.

BACKGROUND ART

In recent years, in accordance with an improvement of a performance of a computer, it has been possible that a plurality of virtual computers (hereafter referred to as a virtual machine) can be operated on a physical computer. The virtual machine activates an operating system that has been installed to a virtual storage device (hereafter referred to as a virtual hard disk drive) and executes a wide variety of processing.

On the other hand, a technique for acquiring a snapshot that can be written on a file system is publicly known (see U.S. Pat. No. 6,857,011). The snapshot means a static image of data at a certain point of time.

In accordance with the technique of a snapshot that can be written, the difference data is generated by a write to a snapshot. The difference data is stored into a storage region other than a storage region in which a snapshot has been created. A stored destination of the difference data is changed to the other storage region.

SUMMARY OF INVENTION

For instance, an IO (Input/output) (also referred to as an IO load) request from a virtual machine is concentrated to the specific difference data in some cases depending on a type of an application program or a usage of an application program by a user. In the case in which an IO load from a virtual machine is concentrated to the specific difference data, there is a possibility that a performance of a disk that has stored the difference data becomes a bottleneck of a system.

Consequently, it is thought that a sequence of all data that configures a snapshot that can be written is copied to other storage region in order to disperse a load. In this case however, it is necessary that a copy of a sequence of all data is created, whereby it takes a long time to complete a copy processing and a used amount of a disk is increased unfortunately.

The present invention was made in consideration of such problems, and an object of the present invention is to provide a storage system and a performance management method of a storage system in which a storage region can be used in an efficient manner while a performance is maintained. Other objects of the present invention will be clarified by the explanation of the embodiments described later.

In order to solve the above problems, a storage system in accordance with an aspect of the present invention is a storage system that is provided with a storage apparatus that is used for a computer wherein (1) the storage apparatus comprising (1A) at least one first logical volume configured to store the reference data; (1B) at least one second logical volume configured to store the difference data from the first logical volume and configured to be allocated to the computer; (1C) at least one volume group that includes a pair of the first logical volume and the second logical volume; and (1D) an access request processing part configured to process an access request from the computer to the second logical volume, wherein the access request processing part accesses and processes the difference data that is included in the second logical volume in the case in which an access destination of the access request is the difference data and the access request processing part accesses and processes the reference data that is included in the first logical volume that forms a pair with the second logical volume in the case in which an access destination of the access request is the reference data, and the storage system comprising (2) a load measuring part configured to manage the access request from the computer to the second logical volume by classifying the second logical volume and the first logical volume that is included in the volume group that includes the second logical volume according to the access destination of the access request and configured to measure a load of the second logical volume and the first logical volume; and (3) a cause identifying part configured to identify a cause volume that is a cause of a specific problem that is specified in advance among the first logical volume and the second logical volume according to the measurement result of the load measuring part.

The storage system can be further comprised of a mapping management part configured to map an address space of the first logical volume and an address space of the second logical volume and configured to manage a connection relationship between logical volumes that configure the volume group. The access request processing part processes an access request from the computer by using the mapping management part, and the load measuring part classifies and manages the access request into the second logical volume and the first logical volume by using the mapping management part.

The first logical volume can include a base volume and at least one reference volume that is created as a snapshot volume of the base volume and that is configured to store the difference data from the base volume. The second logical volume can be created as a snapshot volume of the base volume and/or the reference volume.

The storage system can be further comprised of a plan creation part configured to create a configuration improvement plan for suppressing the specific problem for the configuration of the volume group that includes the cause volume.

The present invention can also be figured out as a performance management method of a storage system. Moreover, at least part of the present invention can also be configured as a computer program. A plurality of features of the present invention that are described in the embodiments can also be combined with freedom.

DESCRIPTION OF EMBODIMENTS

An embodiment (example) of the present invention will be described below in detail with reference to the drawings. As described in the following, a child volume is created from a parent volume by using a snapshot, and the storage contents of the child volume can be updated. The child volume manages the difference data that has occurred between the child volume and the parent volume. A cascade connection between the parent volume and the child volume is carried out, and a volume group is configured. In the case in which data that has been stored into the parent volume is used, the parent volume is accessed for a processing. In the case in which the difference data that has occurred in the child volume is used, the child volume is accessed for a processing.

In the case in which a volume that is a cause of a performance problem is detected, the volume that is the cause is moved or copied to a pool other than a pool that includes the volume at the moment. A resource of a pool can be a storage region of a RAID group that is configured by a plurality of hard disk drives (HDD) or can be a storage region that is configured by a single HDD. Different pools are configured by different resources. A cascade connection between a volume that has been moved or copied to other pool and a volume that remains in the original pool is carried out. By this step, a configuration of a volume group can be improved. A response performance of a storage system can be maintained without wasting a storage region.

A first embodiment of the present invention will be described below in detail with reference toFIGS. 1 to 18. The present embodiment is carried out in the case in which a marginal performance of a storage apparatus1400that is used by a computer1000is calculated for instance.

FIG. 1is an illustrative view schematically showing a general outline in accordance with an embodiment of the present invention. A storage apparatus1400is coupled to a computer1000and a management computer1100(seeFIG. 2) via a communication network such as an IP-SAN (Internet Protocol-Storage Area Network) and/or an FC-SAN (Fibre Channel-Storage Area Network) for instance. The detailed configurations of the computer1000, the management computer1100, and the storage apparatus1400will be described later.

The computer1000is provided with virtual computers1010,1020,1030, and1040. The virtual computers can also be called a virtual machine (VM). The virtual computers1010,1020,1030, and1040are provided with virtual storage regions1016,1026,1036, and1046, respectively.

The storage apparatus1400is provided with an LU1412, an LU1414, an LU1416, and an LU1417as an LU (Logical Unit) that can be mounted by the computer. An LU that can be mounted by the computer is called a source LU in some cases. A source LU is corresponded to a second logical volume.

The LU1412is mounted to the virtual computer1010. The LU1414is mounted to the virtual computer1020. The LU1416is mounted to the virtual computer1030. The LU1417is mounted to the virtual computer1040. The other LU1411, LU1413, and LU1415are LUs that are a reference. The computer cannot mount a reference LU. A reference LU is corresponded to a first logical volume. A virtual hard disk file11001that is included in the LU1411has been stored into the LU1412. The computer1000can mount the LU1412, and the virtual computer can also mount the virtual hard disk file11001.

The computer recognizes the LU1412, the LU1414, the LU1416, and the LU1417that can be mounted similarly to a normal LU. In other words, from the computer, it looks like that all data of each of the LUs are stored into the LU1412, the LU1414, the LU1416, and the LU1417. However, the source LUs1412,1414,1416, and1417are virtual LUs in which only the difference data from the parent LU has been stored in a practical sense.

Immediately after a child LU is created from a parent LU by using a snapshot technique, the storage contents of the parent LU are equivalent to those of the child LU. In the case in which the child LU is allocated to the computer and data is written to the child LU, the difference data occurs between the child LU and the parent LU, and only the difference data is stored into the child LU. Consequently, the child LU can also be called a difference LU.

The LU1411is a base LU that is an original source of a sequence of difference LUs1412,1413,1414,1415,1416, and1417. The base LU1411stores data that is an original source. The LU1412is a difference LU that is created based on the base LU as a parent. Only the difference data from the base LU1411is stored into the LU1412.

The LU1414is a difference LU that is created based on the LU1413as a parent LU. Only the difference data from the parent LU1413is stored into the LU1414. The parent LU1413is a difference LU that is created based on the base LU1411. Only the difference data from the base LU1411is stored into the LU1413.

The LU1415is a difference LU that is created based on the LU1413as a parent LU. Only the difference data from the parent LU1413is stored into the LU1415. Moreover, two difference LUs1416and1417are created based on the LU1415as a parent LU. Only the difference data from the parent LU1415is stored into the difference LUs1416and1417.

The difference data is stored into a storage region that is called a pool1410in the storage apparatus1400. The following describes the case in which the virtual computer1020writes data to the LU1414. In the case in which a region of a write destination already exists as the difference data, data is overwritten to the region. In the case in which a region of a write destination does not exist as the difference data, a region for, storing the difference data is newly created in the pool1410and the difference data is written to the region. In other words, data that is different from data that has been stored into a parent LU is stored into the pool1410. Moreover, it is not necessary that the LU1411is stored into the pool1410. The LU1411can also be stored into a location other than the pool1410.

InFIG. 1, it looks like that only LUs1411,1413,1415, and1417store data in the pool1410. However, other LUs1412,1414, and1416store the difference data in the same pool or other pools in a practical sense.

FIG. 1shows a plurality of data systems that are separated from the common base LU1411. A first system reaches a difference LU1412from the base LU1411. A second system reaches a difference LU1414from the base LU1411via a difference LU1413. A third system reaches a difference LU1416from the base LU1411via a difference LU1413and a difference LU1415. A fourth system reaches a difference LU1417from the base volume1411via a difference LU1413and a difference LU1415.

The fourth system will be described furthermore in the following. The virtual machine1040mounts the LU1417that is a source LU. An entity of the LU1417is a volume group GR1that is configured by including the base LU1411and the difference LUs1413,1415, and1417. The base LU1411includes a virtual hard disk drive11001. The LU1413stores the difference data of the LU1411. The LU1415stores the difference data of the LU1413. The LU1417stores the difference data of the LU1415.

An example will be mentioned for instance. The data of an OS (Operating System) of the original source is stored into the base LU1411. In the figure, a code of each of the volumes is added to the unique data of each of the volumes that are stored into a pool as a matter of practical convenience. For instance, data of the base volume1411is indicated by a code1411. The difference data that is unique to the LU1413is indicated by a code1413.

In the case in which a first modification program is applied to an OS of the original source due to a bug fix for instance, a first reference LU1413that has been created by a snapshot from the base LU1411is prepared, and the first modification program is applied to the first reference LU1413. At this time, the first modification program is stored into the pool1410.

A source LU1414is created by using the first reference LU1413as a parent. Immediately after the LU1414is created by a snapshot from the LU1413, the contents of the both LUs viewed from the computer are corresponded to each other. In the case in which the source LU1414is allocated to the virtual computer1020and an application program is stored, the difference data occurs between the first reference LU1413that is a parent and the source LU1414that is a child. The application program that is the difference data (not shown in the figure as a matter of practical convenience) is stored into the pool1410. Alternatively, the difference data can also be stored into the other pool.

In the case in which it is necessary that a second modification program is applied to the OS, a second reference LU1415is created by a snapshot by using the first reference LU1413as a parent, and the first modification program is applied to the second reference LU1415. At this time, the second modification program is stored into the pool1410.

Two source LUs1416and1417are created by using the second reference LU1415as a parent. The source LU1416is allocated to the virtual computer1030and stores an application program. The source LU1417is allocated to the virtual computer1040and stores the same or different application program. The application program that is applied to each of the source LUs1416and1417is stored into the pool1410. However, the state in which the application program of the source LU1416is stored into the pool1410is omitted in the figure.

In the case in which the LUs1413and1417have a high load, a user can be informed of the state, or a configuration improvement processing S19that is described later inFIG. 20can be executed. The entities of the LUs1413and1417having a high load are moved to the inside of other pool1420and an LU1421and an LU1422are created by the configuration improvement processing. The LU1413in the movement source pool1410is moved to the movement destination pool1420and becomes the LU1421. Similarly, the LU1417in the movement source pool1410is moved to the movement destination pool1420and becomes the LU1422.

By the LU1421and the LU1422after the movement, a new volume group GR2is created. The new volume group GR2is configured by the base LU1411, the first reference LU1421, the second reference LU1415, and the source LU1422. After the volume group GR2is configured, the VM1040switches an LU to be used from the LU1417to the LU1422.

By this configuration, an IO request in which the LU1421(the LU1413before the movement) and the LU1422(the LU1417before the movement) are targets is processed by using a storage apparatus that configures other pool1420. Since an IO load can be shared processed by one pool1410and the other pool1420, a response performance of a storage system can be suppressed from being deteriorated. Moreover, since only the high load LU1413and LU1417are moved to other pool1420, a storage region of a storage system can be prevented from being used more than is necessary.

In the example ofFIG. 1, an LU is moved to the other pool1420according to a load state, and a configuration of a data system (a volume group configuration) is modified. Consequently, while a response performance of a storage system is maintained, a used amount of a storage region can be reduced.

FIG. 2is an illustrative view showing an entire configuration of a computer system that includes a storage system. This system is provided with at least one computer1000, at least one management computer1100, and at least one storage apparatus1400for instance. Moreover, this system can be provided with an FC switch1200and an IP switch1300.

The computer1000executes an input or an output to the storage apparatus1400. The computer1000includes an FC I/F1001, a CPU1002, an input device1003, an output device1004, an IP I/F1005, a storage apparatus1006, and a memory1007for instance.

The FC I/F1001is a circuit configured to exchange data with the storage apparatus1400in accordance with an FC protocol. An10request from the computer1000is transmitted to the storage apparatus1400via the FC I/F1001. The IP I/F1005is a circuit configured to exchange management data with the management computer1100.

The CPU (Central Processing Unit)1002implements a predetermined function by executing a computer program. The CPU1002controls an operation of the entire of the computer1000. The storage apparatus1006stores a computer program, a table, and user data for instance. The memory1007stores a computer program and a table that are read from the storage apparatus1006. Although the storage apparatus and the memory are separated from each other inFIG. 2, the storage apparatus and the memory can also be formed in an integrated manner.

The input device1003can be configured by including a keyboard switch, a pointing device, a touch panel, a microphone, and a camera for instance. A user can provide the information to the computer1000by using the input device1003. The output device1004can be configured by including a display, a printer, and a voice synthesizer for instance. A user can take the information from the computer1000by using the output device1004.

The management computer1100is configured to manage the computer1000and the storage apparatus1400. The management computer1100includes an FC I/F1101, a CPU1102, an input device1103, an output device1104, an IP I/F1105, a storage apparatus1106, and a memory1107for instance.

The FC I/F1101is a circuit configured to transmit and receive the input/output data and control data with the storage apparatus1400. The IP I/F1105is a circuit configured to transmit and receive the management data with the computer1000and the storage apparatus1400.

The CPU1102controls the entire of the management computer1100by executing a computer program. The storage apparatus1106stores a computer program, a table, and user data for instance. The memory1107stores a computer program and a table that are used by the CPU1102.

The input device1103is corresponded to the input device1003of the computer1000. The output device1104is corresponded to the output device1004of the computer1000. Consequently, the detailed descriptions of the input device1103and the output device1104are omitted.

The management computer1100can be configured by one computer or can be configured by a plurality of computers. Moreover, a function of the management computer1100can be implemented in any one of other devices1000,1200,1300, and1400.

The FC switch1200is an apparatus configured to control a transfer of data (such as IO data) that is transmitted or received between the computer1000and the storage apparatus1400. The FC switch1200includes a CPU1201, a memory1202, a plurality of FC I/Fs1203, and an IP I/F1204for instance.

The CPU1201controls the entire of the FC switch by executing a computer program. The memory1202stores a computer program, data and so on. The FC I/F1203is a circuit configured to execute a data transfer based on an FC protocol. The FC I/F1203is coupled to the FC I/F1001of the computer1000, the FC I/F1101of the management computer1100, and the FC I/F1401of the storage apparatus1400.

The IP switch1300is an apparatus configured to control a transfer of the management data that is transmitted from the management computer1100to the computer1000and the storage apparatus1400. The IP switch1300is provided with a CPU1301, a memory1302, a plurality of IP I/Fs1303for instance.

The CPU1301controls the entire of the IP switch by executing a computer program. The memory1302stores a computer program, data and so on. The IP I/F1303is a circuit configured to transmit and receive the management data.

The storage apparatus1400is a node for processing input/output data from the computer1000. The storage apparatus1400is provided with an FC I/F1401, an IP I/F1402, a controller1403, a memory1404, storage apparatuses1405,1406,1407, and1408, pools1410and1420, and LUs1411,1413,1415, and1417for instance.

The FC I/F1401is a circuit configured to transmit and receive the IO data with the computer1000via the FC switch1200. The IP I/F1402is a circuit configured to transmit and receive the management data with the management computer1100via the IP switch1300.

The controller1403implements a predetermined function by executing a computer program that has been stored into the memory1404. The controller1403controls an operation of the entire of the storage apparatus. The controller1403is provided with an interface for communicating with each of storage apparatuses1405,1406,1407, and1408.

The storage apparatuses1405,1406,1407, and1408store the user data. As a storage apparatus, a wide variety of devices that can read and write data such as a hard disk device, a semiconductor memory device, an optical disk device, and a magneto optical disk device can be utilized for instance.

In the case in which a hard disk device is used, an FC (Fibre Channel) disk, a SCSI (Small Computer System Interface) disk, a SATA disk, an ATA (AT Attachment) disk, and a SAS (Serial Attached SCSI) disk can be used for instance. Moreover, a wide variety of storage apparatuses such as a flash memory, a FeRAM (Ferroelectric Random Access Memory), an MRAM (Magnetoresistive Random Access Memory), a phase change memory (Ovonic Unified Memory), and a RRAM (Resistance RAM) can also be used for instance.

Although four storage apparatuses1405,1406,1407, and1408are shown inFIG. 2as a matter of practical convenience, more than four storage apparatuses can also be disposed in the storage apparatus1400. The collection of physical storage regions that are included in a plurality of storage apparatuses enables the RAID group to be configured. By storage regions in the RAID group, the LU1411, the LU1413, the LU1415, and the LU1417that are logical storage apparatuses can be created in a predetermined size or an arbitrary size. The user data can be stored into each of the LUs.

The pools1410and1420are user data storage regions. The pools1410and1420store data of the base LU1411and each of the difference LUs1413,1415, and1417.

The present embodiment is described while focusing attention on the volume group GR1shown inFIG. 1. Consequently, only the base LU1411and each of the difference LUs1413,1415, and1417are shown inFIG. 2. Data of other LUs1412,1414, and1416are also stored into the storage apparatus1400in a practical sense.

FIG. 3is an illustrative view showing a memory configuration of the computer1000. The computer1000reads the predetermined computer programs2001,2002, and2003and the predetermined tables2004and2005to a memory1007at the time of startup.

The data input/output program2001is a computer program configured to input or output data to an LU that is included in the storage apparatus1400. The computer configuration management program2002is a computer program configured to manage the configuration information of the computer1000. The virtual computer management program2003is a computer program configured to operate a virtual computer on the computer1000.

The virtual computer configuration information table2004is a table configured to manage the configuration information of the virtual computer. The virtual computer performance information table2005is a table configured to manage the performance information of the virtual computer.

The virtual computer is a virtual computer that is created by software configured to manage the virtual computer. For the virtual computer, an OS (Operating System) and an application program are operated similarly to a physical computer. Consequently, the virtual computer manages the configuration information and the performance information similarly to a physical computer.

In the present embodiment, the virtual computer configuration information table2004and the virtual computer performance information table2005are read to a memory1007of the computer1000. As substitute for this configuration, the virtual computer configuration information table2004and the virtual computer performance information table2005can also be on a dedicated memory region that is used by the virtual computer.

FIG. 4is an illustrative view showing the configuration of a memory of a management computer1100. The management computer1100reads the predetermined computer program3001and the predetermined table3002to a memory1107at the time of startup.

The performance management program3001is a computer program configured to manage a performance of the storage apparatus1400. The LU performance information. table3002is a table configured to manage the information that indicates a cause of a performance problem of the storage apparatus1400.

FIG. 5is an illustrative view showing the configuration of a memory of the storage apparatus1400. The storage apparatus1400reads the predetermined computer programs4001and4001and the predetermined tables4003,4004,4005, and4006to a memory1404at the time of startup.

The data processing program4001is a computer program configured to process an IO request from the computer1000. The storage information management program4002is a computer program configured to manage the configuration information and the performance information of the storage apparatus1400.

The storage configuration information table4003is a table configured to manage the configuration information of the storage apparatus1400. The pair information table4004is a table configured to manage the pair information that indicates a pair relationship between LUs. The storage performance information table4005is a table configured to manage the performance information of the storage apparatus1400. The IO number count table4006is a table configured to record the IO number that has been counted. The mapping information table4007is a table configured to manage the correspondence relationship between a logical address space of an LU and a physical address space of a pool.

FIG. 6is a view showing the configuration of the virtual computer configuration information table2004. The virtual computer configuration information table2004is provided with a VM column2004C1, an LU column2004C2, and a target I/F column2004C3for instance.

The VM column2004C1stores the information for identifying each of the virtual computers. The LU column2004C2stores the information for identifying an LU that is used by each of the virtual computers. The target I/F column2004C3stores the information for identifying a target I/F to which an LU that is used by each of the virtual computers is coupled. By using the virtual computer configuration information table2004, it is possible to know an LU to which each of the virtual computers is coupled and a target I/F that is used by each of the virtual computers for coupling. In the following descriptions, an ID, the identification information, an identifier, and a name can be displaced with each other.

FIG. 7is a view showing the configuration of the virtual computer performance information table2005. The virtual computer performance information table2005is provided with a VM column2005C1, an LU column2005C2, and an TOPS column2005C3for instance.

The VM column2005C1stores the information for identifying each of the virtual computers. The LU column2005C2stores the information for identifying an LU that is used by each of the virtual computers. The IOPS column2005C3stores an IOPS (Input Output per second) that indicates a frequency in which a virtual computer inputs or outputs an LU per unit time (that is, a performance load of an LU). By using the virtual computer performance information table2005, it is possible to know a load state of each of the LUs that are used by each of the virtual computers.

FIG. 8is a view showing the configuration of the LU performance information table3003. The LU performance information table3003is provided with a storage column3003C1, an LU column3003C2, and an TOPS column3003C3for instance.

The storage column3003C1stores the information for identifying a storage apparatus. The LU column3003C2stores the information for identifying an LU in a storage apparatus. The IOPS column3003C3stores a value of an IOPS that indicates a performance load for each LU. By using the LU performance information table3003, it is possible to know an LU of which a load is increased and a storage apparatus that is provided with the LU.

FIG. 9is a view showing the configuration of the storage configuration information table4003. The storage configuration information table4003is provided with a storage column4003C1, a pool column4003C2, an LU column4003C3, a size column4003C4, and an I/F column4003C5for instance.

The storage column4003C1stores the information for identifying a storage apparatus. The pool column4003C2stores the information for identifying a pool in a storage apparatus. The LU column4003C3stores the information for identifying an LU in a storage apparatus. The size column4003C4stores a size of an LU. The I/F column4003C5stores the information for specifying a management I/F to which an LU is coupled. By using the storage configuration information table4003, it is possible to know a size of an LU that is included in the storage apparatus and others.

FIG. 10is a view showing the configuration of the pair information table4004. The pair information table4004is provided with a storage column4004C1, a PVOL column4004C2, a SVOL column4004C3, and a pool column4004C4for instance.

The storage column4004C1stores the information for identifying a storage apparatus. The PVOL column4004C2stores the information for identifying an LU (a primary volume) that is a parent LU of the LU pair. The SVOL column4004C3stores the information for identifying an LU (a secondary volume) that is a child LU of the LU pair. The pool column4004C4stores the information for identifying a pool that is a storage destination of data. By using the pair information table4004, it is possible to know a configuration of each pair.

As described inFIG. 1, a pair is configured by a plurality of LUs in the present embodiment. One LU of the pair is a parent LU that holds data that is a source. The other LU of the pair is a child LU (a difference LU) that derives from the parent LU. Immediately after a child LU is created from a parent LU, the storage content of the parent LU is equivalent to that of the child LU. In the case in which the storage content of the child LU is updated, the difference data occurs between the storage content of the parent LU and the storage content of the child LU. The difference data is stored into a pool. Writing to the child LU does not affect the storage content of the parent LU. The difference data occurs only in the child LU, and the storage content of the parent LU is not altered. In the case of a normal copy pair, the storage contents between volumes that configure a pair are made to be corresponded to each other by a resync or a restore. On the other hand, the child LU can be updated regardless of the parent LU in the present embodiment.

Consequently, in the case in which the data that has been stored into the parent LU is used, the parent LU can be accessed in the storage system. By this configuration, data can be prevented from being stored in a redundant manner, and a storage region of a pool can be used in an efficient manner.

FIG. 11is a view showing the configuration of the storage performance information table4005. The storage performance information table4005is provided with a time column4005C1, a storage column4005C2, an LU column4005C3, a source LU column4005C4, and an IOPS4005C5for instance.

The time column4005C1stores the information that indicates the date and time when the performance information is acquired. The storage column4005C2stores the information for identifying a storage apparatus. The LU column4005C3stores the information for identifying an LU that is a parent LU. The source LU column4005C4stores the information for identifying an LU that is a source LU that is mounted to the computer. The source LU derives from an LU that is specified by the LU column4005C3, and the source LU is an issuance target of an IO request from the computer. The TOPS column4005C5is an amount (IOPS) per a unit time (1 second) of an IO request in which an LU is target. By using the storage performance information table4005, it is possible to know the load of a storage apparatus and an LU.

FIG. 13is a view showing the configuration of the mapping information table4007. The mapping information table4007is provided with a storage column4007C1, an LU column4007C2, a logical address column4007C3, and a physical address column4007C4for instance.

The storage column4007C1stores the information for identifying a storage apparatus. The LU column4007C2stores the information for identifying an LU. The logical address column4007C3stores a logical address of a target LU that is specified by the LU column4007C2. The physical address column4007C4stores an address in which data that has been stored in a logical address that is specified by the logical address column4007C3is stored as a practical matter.

The following describes more specifically. As shown by an arrow A1for instance, data that exists in a logical address (L1101) of an LU (1411) is stored into a physical address (P1101) in a pool in a practical sense.

As shown by an arrow A2for instance, data that exists in a logical address (L1301) of an LU (1413) is stored into a logical address (L1101) of an LU (1411) that is a parent LU. As described above, data that exists in a logical address (L1101) is stored into a physical address (P1101) in a pool in a practical sense.

As shown by an arrow A3for instance, in the case in which data is written to a logical address (L1303) of an LU (1413), the data becomes the difference data from the parent LU (1411). The difference data is stored into a physical address (P1303) in a pool. By using the mapping information table4007, it is possible to know the correspondence relationship between a logical address space of an LU and a physical address space of a pool.

FIG. 14is a schematic view showing a logical configuration of a computer and a storage apparatus. As described inFIG. 1, a plurality of virtual computers1010,1020,1030, and1040are operated on the computer1000. Each of the virtual computers is provided with virtual storage regions1016,1026,1036, and1046that are called a virtual hard disk drive. The virtual hard disk drive is managed as a file on a file system of the computer. The computer1000stores a file of a virtual hard disk drive on the file system of the LUs1412,1414,1416, and1417that have been mounted.

Focusing attention on the storage apparatus1400, a plurality of child LUs1412and1413is created based on one base LU1411as a parent LU. One child LU1412is used by the virtual computer1010.

A plurality of child LUs1414and1415is created based on the other child LU1413as a new parent LU. Viewed from the base LU1411that is an LU of an original source, the plurality of child LUs1414and1415is a grandchild LU. One child LU1414is used by the virtual computer1020.

A plurality of child LUs1416and1417is created based on the other child LU1415as a further new parent LU. Viewed from the base LU1411, the plurality of child LUs1416and1417is a great grandchild LU. One child LU1416is used by the virtual computer1030. The other child LU1417is used by the virtual computer1040.

Immediately after a child LU is created, the storage content of the child LU is equivalent to that of the parent LU. In the case in which the virtual computer writes data to the child LU, the difference data occurs between the storage content of the child LU and the storage content of the parent LU. The difference data is stored into a pool1410.

FIG. 15is a flowchart showing an entire operation for managing a performance of a storage system. In the following descriptions, a step is abbreviated to “S”.

A user such as a system administrator transmits a display request of a performance management screen to the management computer1100via an administration terminal (not shown) (S10). The performance management program3001of the management computer1100that has received the display request transmits a performance management screen16000that is shown inFIG. 18to an administration terminal that is used by the user (S11). The screen16000configured to manage a performance will be described later. The user can access the management computer1100through an administration terminal such as a personal computer, a mobile phone, and a personal digital assistance, and can transmit and receive the information. The user can also operate the management computer1100without using an administration terminal.

The user requests identifying of a cause via the performance management screen16000(S12). The identifying of a cause means identifying of an LU in which a load is increasing.

In the case in which the performance management program3001receives the request of cause identifying, the performance management program3001transmits a transmission request of a computer associated table to the computer1000(S13). A computer information management program2002of the computer1000that has received the transmission request transmits the virtual computer configuration information table2004and the virtual computer performance information table2005to the management computer1100(S14).

The performance management program3001transmits a transmission request of a storage associated table to the storage apparatus1400(S15). A storage information management program4002of the storage apparatus1400that has received the transmission request transmits the storage configuration information table4003, the pair information table4004, and the storage performance information table4005to the management computer1100(S16).

The performance management program3001of the management computer1100executes a cause identifying processing described later (S17), transmits the execution result to the administration terminal of the user, and makes the execution result to be displayed on the performance management screen16000(S18).

As described above, taking the opportunity of receiving the transmission request from the management computer1100, the computer1000and the storage apparatus1400can transmits a predetermined table to the management computer1100. As substitute for this, a predetermined table can also be transmitted to the management computer1100at the timing when a predetermined table is updated.

In the case in which the configuration of the storage apparatus1400is modified for instance, the storage configuration information table4003is transmitted from the storage apparatus1400to the management computer1100. In the case in which the configuration of the virtual computer is modified for instance, the virtual computer configuration information table2004is transmitted from the computer1000to the management computer1100. The performance information (load information) can be transmitted to the management computer1100on a regular basis or on an irregular basis.

With reference toFIG. 16, a processing for acquiring an IO load will be described in the following. The IO load acquisition processing is for counting the IO number even when an IO request is issued from the computer and for calculating an IOPS at the predetermined timing for instance.

The storage information management program4002of the storage apparatus1400reads the IO number count table4006and the mapping information table4007(S20). The performance management program3001judges whether or not an access destination address of the virtual computer is a physical address (S21).

In the case in which an access destination of the virtual computer is a physical address (S21: YES), the storage information management program4002writes an identifier of an LU of an access destination of the virtual computer to an LU column4006C2of the IO number count table4006(S22). Moreover, the storage information management program4002sets “-” to a source LU column4006C3of the IO number count table4006(S22). Furthermore, the storage information management program4002increase a value of the IO number column4006C4by 1 for every IO number (S22). The storage information management program4002clears a value of the IO number column4006C4to zero when an IOPS is calculated, restarts counting, and continues recording of a result of the count. By this configuration, the IO number in a predetermined time can be recorded.

In the case in which an access destination of the virtual computer is not a physical address (S21: NO), the storage information management program4002searches a parent. LU of an access destination LU by using the pair information table4004(S23). The performance management program3001judges whether or not an access destination address to a parent LU is a physical address (S24). In other words, the storage information management program4002judges whether or not a storage destination of data that has been requested from the virtual computer is a physical address of the parent LU.

In the case in which an access destination address to a parent LU is a physical address (S24: YES), the performance management program3001writes an identifier of a parent LU to an LU column4005C3(S25). Moreover, the storage information management program4002writes an identifier of an LU that has been accessed by the virtual computer to the source LU column4005C4(S25). Furthermore, the storage information management program4002increase a value of the IOPS column4005C5by 1 for every IO number (S25).

In the case in which an access destination address to a parent LU is not a physical address (S24: NO), the storage information management program4002returns to the S23and searches a parent LU that is a parent of the LU (S23). The storage information management program4002traces back the system of an LU (for instance, a group GR1ofFIG. 13) until a physical address that has stored data that has been requested by the virtual computer is found.

An example in the case in which the virtual computer1040shown inFIG. 14accesses data of the LU1417will be described in the following. In the case in which an access destination of the virtual computer1040is the difference data of the LU1417, the difference data has been stored into the pool1410. In other words, an access destination address is a physical address.

On the other hand, in the case in which an access destination of the virtual computer1040is not the difference data of the LU1417, the LU1415that is a parent LU of the LU1417is searched. In the case in which an access destination of the virtual computer1040is the difference data of the LU1415, the difference data has been stored into the pool1410. Consequently, a physical address of data that is requested by the virtual computer1040is detected.

On the other hand, in the case in which an access destination of the virtual computer1040is not the difference data of the LU1415, the LU1413that is a parent LU of the LU1415is searched. Similarly to the above, in the case in which an access destination of the virtual computer1040is the difference data of the LU1413, the difference data has been stored into the pool1410. Consequently, a physical address of data that is requested by the virtual computer1040is detected.

In the case in which an access destination of the virtual computer1040is not the difference data of the LU1413, the base LU1411that is a parent LU of the LU1413is searched. The base LU1411is an original source LU that is a start of a system of an LU pair. All data of the base LU1411have been stored into the pool1410. Consequently, in the case in which an access destination is traced back to the base LU1411, a physical address of data that is requested by the virtual computer1040can be identified without any fail.

As described above, for an access to the source LU1417that has been mounted to the virtual computer1040by using the virtual computer1040, a system of an LU pair is traced back until a physical address that has stored the access target data as a practical matter is found.

In the next place, the storage information management program4002calculates an IOPS at a predetermined timing based on the IO number that has been stored into the IO number count table4006and stores the calculated IOPS into the IOPS4005C5of the storage performance information table4005. The time column4005C1of the storage performance information table4005stores the information that indicates the date and time when the IOPS is calculated.

With reference toFIG. 17, a cause identifying processing for identifying an LU in which a load is increasing will be described in the following. The cause identifying processing is corresponded to a step that is indicated by S17inFIG. 15.

The performance management program3001reads the storage performance information table4005(S30). The performance management program3001tabulates the storage performance information table4005in an LU unit and stores the results that have been tabulated into the LU performance information table3003(S31).

In the next place, the following steps will be processed in a record unit of the LU performance information table3003. The performance management program3001judges whether or not a value that has been stored into the IOPS column3003C3exceeds a predetermined threshold value Th (S32).

In the case in which a value of the TOPS exceeds the threshold value Th (S32: YES), an LU that is described in the LU column3003C2is detected as a cause LU (S33). In the case in which a value of the IOPS is equal to or less than the threshold value Th (S32: NO), the S33is skipped.

The performance management program3001judges whether or not the final record of the storage performance information table4005has been processed (S34). In the case in which the final record of the storage performance information table4005has not been processed (S34: NO), that is, an unprocessed record remains, the performance management program3001moves to the next record (S35) and returns to the S32. In the case in which the processing of the final record is completed (S34: YES), the present processing is terminated.

For the present embodiment that is configured as described above, an LU in which a performance problem occurs can be identified, whereby the convenience of a user can be improved. In the present embodiment, for a base LU that includes data that is used by a plurality of computers1000and for a system (a volume group) of a sequence of LU pairs that include each LU that derives from the base LU, an LU in which a problem occurs can be identified and the problem can be visualized.

With reference toFIG. 18, a configuration of the performance management screen16000will be described in the following. The performance management screen16000is provided with a storage identifier input part16001, an OK button16002, a cause identifying table16003, and a configuration display part16004for instance.

In the storage identifier input part16001, the information configured to identify the storage apparatus1400that is a management target of a performance (a storage identifier) is input. The OK button16002is operated by a user in the case in which an execution of a performance management processing is instructed.

The cause identifying table16003displays the execution results of a performance management processing in a table format. In the display of the cause identifying table16003, a virtual computer identifier (“VM” inFIG. 18), an LU identifier, and a load state can be corresponded to each other based on the virtual computer performance information table2005for instance.

For all the virtual computers that use an LU that is included in the storage apparatus1400that is specified by the storage identifier input part16001, an LU identifier configured to identify an LU to which the virtual computer has been mounted and a load state are displayed. The load state can be displayed by “Low” or “High” for instance. In the case in which an TOPS is less than a predetermined threshold value, “Low” is displayed. In the case in which an IOPS is larger than a predetermined threshold value, “High” is displayed.

The configuration display part16004carries out a graphical display of a relationship between each of the virtual computers and each of the LUs and a pair configuration of each of the LUs. Moreover, the configuration display part16004displays a load state of an LU that is used by a virtual computer that has been selected (a virtual computer1040inFIG. 18). For instance, “High” is displayed for an LU that has been specified as a cause LU by the cause identifying processing, and “Low” is displayed for other LUs.

A user can easily identify an LU in which a performance load is high by viewing the performance management screen16000. Consequently, a user can decide an LU of which performance is to be improved in order to resolve a performance bottleneck. By this configuration, a user can implement a countermeasure for resolving a performance problem.

For instance, a performance problem can be resolved by switching a storage apparatus that configures a pool that stores data of an LU of a high load from a storage apparatus of a low performance such as a SAS to a storage apparatus of a high performance such as an SSD. Or more specifically, a performance can be improved by increasing the number of storage apparatuses that configure a high load LU and by improving a parallel processing. By implementing such a countermeasure, a storage region can be used in an efficient manner while a performance is maintained.

With reference toFIGS. 19 to 23, the following describes the case in which an improved configuration is proposed in order to solve a problem that has been detected.

FIG. 19shows a system configuration. For the storage apparatus1400, two thick arrows are shown from one pool1410to the other pool1420. The two thick arrows indicate the state in which an LU that is a cause of a problem is moved or copied from the pool1410at the moment to the other pool1420. In the present embodiment, the case in which a difference LU1413and a difference LU1417are moved or copied to the other pool142will be described in the following.

FIG. 20shows a flowchart of a performance management processing in accordance with the present embodiment. The flowchart shown inFIG. 20is provided with the steps S10to S18that are common with the flowchart shown inFIG. 15. Moreover, for the flowchart shown inFIG. 20, a configuration improvement processing (S19) is executed after a cause identifying processing (S17), and the execution result is displayed on the performance management screen (S18). For the configuration improvement processing, it is also possible that a configuration improvement plan is displayed on the performance management screen and the processing is executed in the case in which an approval of a user is obtained.

FIG. 21shows a flowchart of the configuration improvement processing. The performance management program3001of the management computer1100reads the virtual computer configuration information table2004of the computer1000, the storage configuration information table4003, the pair information table4004, and the LU performance information table3003(S40).

The performance management program3001refers to the LU performance information table3003and judges whether or not an IO load (IOPS3003C3) that is corresponded to the LU3003C2is larger than a threshold value Th1 (S41). The threshold value Th1 can be specified by a user or can be automatically specified by the performance management program3001.

In the case in which a value of the TOPS of a target LU is not larger than the threshold value Th1 (S41: NO), the present processing is terminated. In the case in which a value of the IOPS of a target LU is larger than the threshold value Th1 (S41: YES), the performance management program3001judges whether or not the target LU is a base LU (S42).

In the case in which the target LU is a base LU (S42: YES), the performance management program3001executes a processing for improving a configuration of the base LU (S43) and terminates the configuration improvement processing (S45). The details of the processing for improving a configuration of the base LU will be described inFIG. 22.

In the case in which the target LU is a difference LU (the target LU is not a base LU) (S42: NO), the performance management program3001executes a processing for improving a configuration of the difference LU (S44) and terminates the configuration improvement processing (S45). The details of the processing for improving a configuration of the difference LU will be described inFIG. 23.

FIG. 22is a flowchart showing a processing for improving a configuration of a base LU. The performance management program3001refers to the pair information table4004and judges whether or not an improvement target LU (a base LU) that has been judged as having a high load is provided with a single child LU (S50). A single child LU in the S50means an LU that has been created by using an improvement target LU as a direct parent, and does not include a grandchild LU and a great grandchild LU.

In the case in which an improvement target LU of a high load is provided with a single child LU (S50: YES), the improvement target LU is moved to other pool1420(S51). In the next place, by updating the storage configuration information table4003and the pair information table4004, an access path is set to the improvement target LU that has been moved from the child LU (S52). The descriptions of the present embodiment are based on the assumption that a movement destination pool that is provided with a sufficient processing performance is selected.

In the case in which an improvement target LU of a high load is provided with a plurality of child LUs (S50: NO), the performance management program3001judges whether or not the IO loads of the plurality of child LUs are biased (S53). A bias of an IO load is calculated by a standard deviation for instance.

In the case in which the IO loads of the plurality of child LUs are biased (S53: YES), the improvement target LU is moved to other pool1420(S54). In the next place, by updating the storage configuration information table4003and the pair information table4004, an access path is set to the improvement target LU that has been moved from the child LU (S55). The descriptions of the present embodiment are based on the assumption that a movement destination pool that is provided with a sufficient processing performance is selected.

In the case in which the IO loads of the plurality of child LUs are biased, since It is not always true that a load of a child LU can be evenly dispersed even if the improvement target LU is copied to other pool1420, a merit of the movement is larger than that of the copy. In the case of the movement, although the moved LU still has a high load, a load of a pool of a movement source is reduced due to a movement. Consequently, the movement of the improvement target LU is more excellent in the capacity efficiency due to a suppressed usage amount of a disk as compared with the case of a copy. Moreover, the movement of the improvement target LU can suppress an increase in the number of access path as compared with the case of a copy, whereby a management cost is not increased fortunately.

In the case in which the IO loads of the plurality of child LUs are not biased (S53: NO), the performance management program3001creates a copy of the improvement target LU in other pool1420(S56). In the next place, by updating the storage configuration information table4003and the pair information table4004, the performance management program3001sets an access path to the improvement target LU that has been copied from the child LU (S57).

In this case, an access path is set in such a manner that a load of a child LU can be evenly dispersed, that is, the copied improvement target LU is accessed from the approximately half child LUs of the plurality of child LUs. As described above, in the case in which the IO loads of the plurality of child LUs are not biased, a load of a child LU can be evenly dispersed when the improvement target LU is copied to other pool1420. Consequently, the movement of the improvement target LU has more excellent merit as compared with the case of a copy. The descriptions of the present embodiment are based on the assumption that a copy destination pool that is provided with a sufficient processing performance is selected.

In the case in which the improvement target LU is moved to other pool, it is necessary that the improvement target LU is moved to a pool that can process an IO load to the improvement target LU, that is, it is necessary that the improvement target LU is moved to a pool that is provided with a sufficient capacity for an IO load.

Consequently for instance, like the case of a movement from a pool that is configured by a SATA to a pool that is configured by an SSD, a pool that is provided with an IO processing performance higher than that of a pool at the moment is selected as a movement destination pool is some cases. It is necessary that a movement destination pool (the pool1420in the example ofFIG. 1) is provided with a free capacity sufficient for accepting the improvement target LU of a movement target.

In the case in which the improvement target LU is copied, a usage capacity of a disk can be reduced by making the number of copies as less as possible. Consequently, a copy of the improvement target LU is disposed in a pool that is provided with a high IO processing performance.

FIG. 23is a flowchart showing a processing for improving a configuration of a difference LU. The S60to S67of the present processing are corresponded to the S50to S57that have been described inFIG. 22. However, the S60to S67are different from the S50to S57at the points that the condition of the S60includes the case in which a child LU is 0 (the case in which the improvement target LU is mounted to the virtual computer) and that an access path is also set from the improvement target LU that has been moved or copied to the parent LU thereof in the S62, S65, and S67. Since the other processing is equivalent to a processing ofFIG. 22, the redundant descriptions are omitted.

With reference toFIGS. 24 to 27, the configuration modification processing will be described by using a concrete example.FIG. 24is a view showing an example of a relationship between each of the virtual computers and each of the LUs before the configuration improvement processing, a pair configuration of each of the LUs, and the load state. In this example, the difference LU1413is selected as an improvement target LU that is provided with a high performance load.

FIG. 25is a view showing the configuration improvement processing that is executed to the state of the configuration ofFIG. 24. Since the improvement target LU1411is provided with a plurality of child LUs1412and1413(S50: NO), the performance management program3001judges whether or not the IO loads of the child LUs1412and1413are biased (S53). It is assumed that the IO loads of the child LUs1412and1413are biased in this case (S53: YES). The performance management program3001then moves the improvement target LU1411to other pool1420(S54). In the next place, an access path with the improvement target LU1411that has been moved and the child LUs1412and1413is set (S55). The descriptions of the present embodiment are based on the assumption that a movement destination pool that is provided with a sufficient processing performance is selected.

FIG. 26is a view showing an example of a relationship between each of the virtual computers and each of the LUs before the configuration improvement processing, a pair configuration of each of the LUs, and the load state. In this example, the base LU1411and the difference LU1415are selected as an improvement target LU that is provided with a high performance load.

FIG. 27is a view showing the configuration improvement processing that is executed to the state of the configuration ofFIG. 26. Since the loads of the child LUs1412and1413of the improvement target LU1411is equal to each other (S53: NO), the performance management program3001copies the improvement target LU1411to other pool1420(S56), and an access path between the improvement target LU1419that has been copied and the child LU1413is set (S57). In the present embodiment, since the improvement target LU1411is provided with the two child LUs1412and1413of which loads are equal to each other, one of the child LUs1412and1413can be coupled to the improvement target LU1419that has been copied. The descriptions of the present embodiment are based on the assumption that a copy destination pool that is provided with a sufficient processing performance is selected.

The other improvement target LU1415is examined. Since a load of the child LU1416, a load of the child LU1417, and a load of the child LU1418are not equal to each other, the performance management program3001moves the improvement target LU1415to other pool1420(S64). In the next place, the performance management program3001sets an access path from the moved improvement target LU1415to the parent LU1413and an access path between the child LU1416, the child LU1417, and the child LU1418and the improvement target LU1415that has been moved (S65). The descriptions of the present embodiment are based on the assumption that a movement destination pool that is provided with a sufficient processing performance is selected.

When the above described configurations are summarized, the methods for improving a configuration of a volume group can be classified into the following six types for instance.

(M1) Case in which a base LU is a cause LU and a single child LU is included In the case of M1, the base LU is moved to other pool, and an access path between the base LU that has been moved and the child LU is set.

(M2) Case in which a base LU is a cause LU, a plurality of child LUs is included, and the IO loads of the plurality of child LUs are biased

In the case of M2, the base LU is moved to other pool, and an access path from the child LU to the base LU that has been moved is set.

(M3) Case in which a base LU is a cause LU, a plurality of child LUs is included, and the IO loads of the plurality of child LUs are not biased

In the case of M3, a copy of the base LU is created in other pool, and an access path is set in such a manner that an IO load of the base LU of a copy source and an IO load of the base LU of a copy destination are almost equal to each other. For instance, by setting an access path from a half of child LUs to the base LU that has been copied, one computer (virtual computer) accesses the base LU of a copy source and the other computer (virtual computer) accesses the base LU of a copy destination, whereby the loads can be dispersed.

(M4) Case in which a difference LU is a cause LU, and a single child LU is included In the case of M4, the difference LU is moved to other pool, and an access path from the child LU to the difference LU that has been moved and an access path from the moved difference LU to the parent LU are set.

(M5) Case in which a base LU is a cause LU, a plurality of child LUs is included, and the IO loads of the plurality of child LUs are biased

In the case of M5, an access path from the child LU to the difference LU that has been moved and an access path from the moved difference LU to the parent LU are set.

(M6) Case in which a difference LU is a cause LU, a plurality of child LUs is included, and the IO loads of the plurality of child LUs are not biased

In the case of M6, a copy of the difference LU is created in other pool, and an access path is set in such a manner that an IO load of the difference LU of a copy source and an IO load of the difference LU of a copy destination are almost equal to each other.

In the present embodiment, an LU that is a cause of a problem is moved or copied to other pool, and an access path of the computer (virtual computer) is set again. By this configuration, a performance bottleneck can be resolved, and a response performance of a storage apparatus can be maintained.

While the preferred embodiments in accordance with the present invention have been described above, the present invention is not restricted to the embodiments. A person having ordinary skill in the art can carry out various changes, modifications, and functional additions without departing from the scope of the present invention. For instance, the case in which an LU is allocated to a virtual computer was described in each of the embodiments. As substitute for this configuration, a configuration in which an LU is allocated to a physical computer can also be adopted.

Moreover, a function of a management computer can also be embedded into any one of a computer, a switch, and a storage apparatus.