The present invention relates to management of a computer system which includes a storage system and a server computer.
Storage capacity virtualization technology called “Thin provisioning technology” is known. Thin provisioning technology is disclosed in Patent Literature 1.
When a server computer provides virtual machines by means of a server virtualization program, the virtual machines can be created and deleted more flexibly. However, if virtual volumes are provided using thin provisioning technology, then it is not possible readily to perform capacity management of thin provisioning in coordination with the creation and deletion of virtual machines.
Therefore, the object of the present invention is to carry out capacity management of thin provisioning in accordance with the creation and deletion of virtual machines.
In the computer system according to the present invention, a storage system provides storage level virtual volumes based on thin provisioning technology, to a physical server on which a virtual machine is defined. The storage system releases the area of the logical volume corresponding to the storage level virtual volume accessed by a virtual machine specified to be deleted, on the basis of storage level virtual volume conversion information which is managed by the storage system.
According to the present invention, capacity management of thin provisioning can be carried out readily in accordance with the creation and deletion of virtual machines.
Below, embodiments of the present invention are described with respect to the accompanying drawings. The definitions of the terms used in the description of the embodiments are as indicated below. For other terms, generic definitions can be applied. Furthermore, in the following description, processes executed by a computer program are actually carried out by a processor which executes the computer program.
“Leverage ratio” is the ratio of the capacity of a virtual storage area corresponding to a physical storage area, with respect to the capacity of the physical storage area. In the present embodiment, there are leverage ratios of a plurality of types. For example, the leverage ratio of a first type is the ratio of the total capacity of one or more server level pools corresponding to a storage level pool, with respect to the capacity of the storage level pool. The leverage ratio of a second type is the ratio of the total capacity of one or more server level virtual volumes corresponding to a storage level pool, with respect to the capacity of the storage level pool. In the following description, the second type of leverage ratio, in particular, is called “end-to-end capacity leverage ratio”.
“Volume” means a logical storage area (logical volume) which is provided on the basis of one or more physical storage devices (for example, a hard disk drive or flash memory). A volume is provided on the basis of a storage space of a RAID (Redundant Array of Independent (or Inexpensive) Disks) group, for example. The RAID group contains a plurality of physical storage devices, and data is stored in accordance with prescribed RAID levels.
“Storage level virtual volume” means a virtual volume which is provided by the storage controller. The whole area of a storage level virtual volume (the area is also called a storage region and hereinafter, may be referred to as a storage level virtual volume address area or a low-level address area (LL-AA)), does not necessarily have to be allocated to the storage region of a storage device or volume (hereinafter, this storage region may be referred to as a low-level storage area (LL-SA)). More specifically, for instance, all or a portion of the area (LL-AA) of the storage level virtual volume is not initially allocated with the area (LL-SA) in one or more volumes belonging to a storage level pool. In other words, initially, for example, a portion of the area (LL-SA) of a storage level pool may be allocated to an area (LL-AA) of a portion of the storage level virtual volume. Here, “initially” means, for example, immediately after a storage level virtual volume has been defined, or immediately after a storage level virtual volume has been defined and has become accessible from a physical server. The storage system sends the capacity of the storage level virtual volume to the physical server on the basis of storage level virtual volume information which represents the capacity of the storage level virtual volume. The data format, such as the data structure, may differ, and may be different due to rounding down, or the like, between the capacity of the storage level virtual volume which is managed internally in the storage system and the capacity of the storage level virtual volume which is sent to the physical server by SCSI protocol, or the like. Of course, the capacity of the storage level virtual volume which is managed inside the storage system and the capacity of the storage level virtual volume which is sent to the physical server may be the same.
“Server virtualization program” is a program which constructs a virtual server system by virtualizing the physical resources of a physical server. The server virtualization program is, for example, a hypervisor. Furthermore, the physical resources are, for example, a processor (for instance, a microprocessor), a storage resource (for instance, a memory), and a communications interface apparatus (for instance, an HBA (Host Bus Adapter)).
A “virtual machine” is a virtual computer which is provided by a server virtualization program. By means of a server virtualization program, it is possible to construct a system in such a manner that a plurality of computers operate effectively on a single physical server. Each of these effective computers is a virtual machine (may be referred to as VM). In a virtual machine, for example, a computer program, such as an OS (Operating System), or the like, is carried out virtually.
“Server level pool” is a storage area constructed from one or more storage level virtual volumes allocated from the storage system by the server virtualization program. The server level pool is used from a virtual machine via a server level virtual volume. More specifically, if data is being written from a virtual machine to a server level virtual volume, then the area of a portion of the server level pool (more accurately, the volume or virtual machine provided by the storage system included in the server level pool) (this area may be referred to hereinafter as a high-level storage area (HL-SA)) is allocated to the area of the server level virtual volume specified as the write destination for that data (hereinafter, this area is referred to as a server level virtual volume area, or a high-level address area (HL-AA)). If the virtual volume is included in the server level pool, then HL-SA indicates the same object as LL-AA. However, the management units differ as described hereinafter. Thereupon, a write request indicating an area (HL-SA) inside the storage level virtual volume which corresponds to the area (HL-AA) of the allocated portion is sent to the storage system that provides that storage level virtual volume, from the physical server (for example, from the server virtualization program executed on the physical server). In response to this write request, the storage controller of the storage system allocates a portion of the area inside the storage level pool (LL-SA) to the area indicated in the write request (the area inside the storage level virtual volume (LL-AA)), and writes data to the allocated area (LL-AA). When reference is made below to “write data to the LL-AA”, in practice this means writing the data to the LL-SA which corresponds to the LL-AA. Furthermore, in the following description, reference to “the area of a volume or virtual volume provided by a storage system included in the server level pool” is abbreviated to the expression “area of the server level pool”.
“Server level virtual volume” is a virtual volume which is constructed by a server virtualization program. The whole of the storage area (HL-AA) of the server level virtual volume does not necessarily have to be allocated to a physical storage area (HL-SA). The storage area of the server level virtual volume is accessed by a virtual machine.
“Storage level pool” is a pool made up of one or more volumes. The area (LL-SA) of one portion of the storage level pool is allocated as a write destination area (LL-AA) from the physical server, in the storage level virtual volume. The storage level pool may be a group (a virtual pool) of a plurality of pools belonging to one or more volumes. In the description given below, reference to “area of a volume included in the storage level pool” is abbreviated to the expression “area of the storage level pool”.
According to this example, there are a plurality of storage level pools (for example, storage level pools 1, 2), and a storage area topology having a tree structure is constructed on the basis of these respective storage level pools. The constituent elements of the storage area topology are, stated in order from the lower level, storage level pools, storage level virtual volumes, server level pools and server level virtual volumes. According to this example, the following storage areas (A) to (D) correspond to the storage level pool 1:
(A) storage level virtual volume 1 and 2;
(B) server level pools 1 and 2 which correspond respectively to the storage level virtual volumes 1 and 2;
(C) server level virtual volume 1 which corresponds to server level pool 1 (server level virtual volume 1 to which a portion of storage area is allocated from the server level pool 1); and
(D) server level virtual volumes 2 and 3 which correspond to the server level pool 2.
In other words, according to this example, the server level virtual volumes 1 to 3 correspond to the storage level pool 1, these server level virtual volumes 1 to 3 being constituent elements of the storage area topology based on the storage level pool 1.
In the embodiment described below, it is possible to calculate the end-to-end capacity leverage ratio for each storage area topology, in other words, for each storage level pool. This is because, for each storage level pool, it is possible to identify the storage area topology forming the basis of that storage level pool, in other words, to identify the corresponding server level virtual volumes.
As shown in
A server level virtual volume includes a plurality of HL-AA, but the size of each HL-AA may be a common size corresponding to the server level virtual volume. The server level pool includes a plurality of HL-SA, but the sizes of each HL-SA may be a common size corresponding to the server level pool, or respectively different sizes. A storage level virtual volume includes a plurality of LL-AA, but the size of each HL-AA may be a common size corresponding to the storage level virtual volume. The storage level pool includes a plurality of LL-SA, but each LL-SA may have a common size corresponding to the storage level pool. In this configuration, the correspondences between pages may be managed by means of a table, or the like, or may be determined by calculation.
When a program executed on a virtual machine has issued a write request indicating a certain HL-AA in a sever level virtual volume, then if an HL-SA is not allocated to that HL-AA, an unallocated HL-SA is duly allocated from the server level pool corresponding to that sever level virtual volume. A write request indicating the LL-AA corresponding to the allocated HL-SA is then sent to the storage system 2000 from the physical server 3000. In the storage system 2000, if an LL-SA has not be allocated to that LL-AA, then an unallocated LL-SA is allocated to the LL-AA, from the storage level pool corresponding to the storage level virtual volume having the LL-AA. Data corresponding to the write request is then written to the LL-SA. If the LL-SA is based on a plurality of PDEVs, for example, then data is stored in the plurality of PDEVs in accordance with a prescribed RAID level, for example.
In the first embodiment, a management server gathers virtual volume information for the storage system and virtual volume information for the physical servers, analyzes the virtual volume information of the storage system and the virtual volume information of the physical server, and indicates the end-to-end capacity leverage ratio to the administrator (for example, storage administrator) on the basis of these analysis results. The details of this are described below.
The computer system comprises a storage system 2000, a physical server 3000 and a management server 1000. At least one of the storage system 2000, the physical server 3000 and the management server 1000 may be provided in plural fashion.
The storage system 2000 and the physical server 3000 are mutually connected via a communications network, for example, a SAN 5000 or a LAN 5010. The management server 1000 connects the storage system 2000 and the physical server 3000 via a communications network, for example, a LAN 5010 or a SAN 5000.
The storage system 2000 comprises a plurality of PDEVs (physical storage devices) 2100a and a plurality of storage controllers (CTL) 2010. The PDEVs 2100a and the storage controllers 2010 are connected to each other by means of an internal network or bus, for example. The storage controller 2010 stores data in a storage area on the basis of the PDEVs 2100a.
The PDEVs 2100a are disk type storage media drives (for example, hard disk drives) and store data in accordance with write requests received by the storage system 2000 from the physical server 3000. The PDEVs 2100a may also be flash memory drives, for instance. It is also possible to provide one PDEV 2100a only.
The storage controller 2010 is an apparatus which controls the operation of the storage system 1000. The storage controller 2010 comprises an internal network. The internal network is connected, for example, to a storage port 4020a, a processor 4010a (for example, CPU) and a memory 4050a. Storage controllers 2010 are connected to each other via the internal network. Furthermore, the storage controllers 2010 and respective PDEVs 2100a are connected to each other by a plurality of back-end networks. It is also possible to provide one storage controller 2010 only.
The storage port 4020a is an interface which is connected to the storage system 2000 and the management server 7000 via a network, such as a SAN 5000.
The processor 4010a carries out processing of various types by executing a program stored in the memory 4050a.
The memory 4050a is formed by a RAM (Random Access Memory), for example, and stores programs to be executed by the processor 4010a and information required by the processor 4010a, and the like. More specifically, for example, a storage control program 2500 is stored in the memory 4050a of the storage controller 2010, and controls the storage controller 2010 on the basis of management operation requests received from the management server 1000. A management operation request is a request for operating the storage system 2000, for example, a volume construction request, storage level pool construction request, or the like. The memory 4050a may be employed as a cache memory in which data input to or output from the PDEVs 2100a is stored temporarily.
The internal networks in the physical server 3000 and the storage system 2000 desirably have broader bandwidth than the transmission bandwidth of the storage port 4020a, and all or a portion thereof may be substituted by bus or switch type networks. Furthermore, in
As described below, the storage system 2000 forms one or more volumes which belong to a storage level pool, for example. The storage level pool may belong to the storage system 2000, or may belong to a system other than the storage system 2000 (for example, a system interposed between the storage system 2000 and the physical server 3000 (for instance, a switching apparatus)).
A storage system may be one storage apparatus, or a group of a plurality of storage apparatuses. For example, a volume (VOL) managed by a certain storage apparatus may be a VOL based on a PDEV contained in another storage apparatus.
The whole area (LL-AA) of one or more volumes may have been allocated to the area (LL-SA) of a storage device included in a storage system, or a portion of the area (LL-AA) of one or more volumes may not have been allocated to the area (LL-SA) of the storage device.
The physical server 3000 is one example of a server computer, and comprises a processor 4010b, a memory 4050b and an HBA 4020b. The processor 4010b, the memory 4050b and the HBA 4020b are connected to each other via an internal network.
The processor 4010b carries out processing of various types by executing a program stored in the memory 4050b. For example, the processor 4010b can input or output (write or read) data to or from one or more storage level virtual volumes 2230 provided by the storage system 2000, by sending an I/O request (write request or read request) to the storage system 2000.
The memory 4050b stores programs which are executed by the processor 4010b and information required by the processor 4010b, and the like. The memory 4010b may be a semiconductor memory or storage device, or a combination of these. The memory 4050b stores a server virtualization program 3200.
The HBA 4020b is an interface which is connected to the storage system 2000 via a network, such as a SAN 5000, LAN 5010, or the like. More specifically, for example, the HBA 4020b outputs I/O requests from the processor 4010b to the storage system 2000.
The server virtualization program 3200 constructs a virtual server environment (virtual machine) from the physical resources belonging to the physical server 3000.
The management server 1000 is a computer which comprises a processor 4010c, a memory 4050c, a management program 1200, and a NIC (Network Interface Card) 4040c. The processor 4010c, the memory 4050c, the PDEV 2100c and the NIC 4040c are connected to each other via an internal network.
The processor 4010c carries out processing of various types by executing a program stored in the memory 4050c. For example, the processor 4010c controls the allocation of storage level virtual volumes 2230 to the physical server 3000 as executed by the storage system 2000, by sending a management request to the storage system 2000. The management request may include a remote transfer request or a copy control request, or the like.
The memory 4050c stores programs which are executed by the processor 4010c and information required by the processor 4010c, and the like. For example, a management program 1200 is stored in the memory 4050c. The memory 4050c may be a semiconductor memory or storage device, or a combination of these.
The NIC 4040c is an interface which is connected to the storage system 2000 via a network, such as a LAN 5010, or the like.
The management server 1000 may comprise an input/output device 4060. The input/output device 4060 inside the management server 1000 is also connected to the internal network.
Examples of an input/output device 4060 are a display, a keyboard and a pointer device, but devices other than these may also be used. Furthermore, as an alternative to an input/output device 4060, a serial interface or Ethernet (registered trademark) interface may be used as an input/output device 4060. Moreover, a display computer comprising a display, keyboard or pointer device may also be connected to this interface. Display information may be sent to a display computer and input information may be received from a display computer. By this means, a display can be provided on the display computer and by receiving an input, an input operation to the input/output device 4060 can be performed.
The management program 1200 manages the storage system 2000. More specifically, for example, the management program 1200 performs operations, such as managing the volume configuration, managing the storage level pool configuration, managing the storage level virtual volume configuration, instructing volume allocations of various types, and so on.
The management server 1000 may be divided into a device which manages the storage system 2000 and a device which manages the physical servers 3000. More specifically, for instance, the management server 1000 is one example of a management system. The management system comprises one or more computers, for example, a management computer, or a combination of a management computer and a display computer. More specifically, if the management computer shows display information, for example, then the management computer forms a management system. Furthermore, in order to increase the speed and reliability of processing, it is also possible to achieve functions similar to those of the management computer by means of a plurality of computers, and in this case, the plurality of computers (also including a display computer if display is performed by a display computer) form a management system.
The memory 4050a stores, for example: storage level pool information 11000, storage level virtual volume information 12000, volume information 13000, storage internal mapping information 14000 and a storage control program 2500.
The storage level pool information 11000 is information relating to storage level pools.
The storage level virtual volume information 12000 is information relating to storage level virtual volumes.
The volume information 13000 is information relating to volumes.
The storage internal mapping information 14000 is information which indicates the mapping of storage areas of various types (volumes, storage level pools, storage level virtual volumes) which are managed by the storage system 2000.
The storage control program 2500 is a program in which processing relating to the control of the storage system 2000 is defined. The storage control program 2500 comprises, for example, a storage virtualization module 2501, a storage configuration management module 2502 and a command control module 2503. The respective modules included in the storage control program 2500 do not necessarily have to be modules of a single program, and may respectively be separate program codes.
The storage level pool information 11000 includes, for example, for each storage level pool, information relating to the storage level pool, as well as information relating to the volumes belonging to the storage level pool and information relating to the storage level virtual volumes to which storage area is allocated from the storage level pool. More specifically, for example, the storage level pool information 11000 is a table, which contains, for each storage level pool, a record of the following attribute values: a storage level pool identifier 11001, a storage level pool capacity 11002, a storage level pool free capacity 11003, volume identifiers 11004, storage level virtual volume identifiers 11005, a storage level virtual volume total capacity 11006, an LL-SA size 11007 and an unallocated LL-SA identifier list 11008.
The storage level pool identifier 11001 is an identifier which is allocated to the storage level pool 2220 by the storage virtualization module 2501.
The storage level pool capacity 11002 is the capacity of the storage level pool.
The storage level pool allocated capacity 11003 is the total capacity of the area, out of the capacity of the storage level pool, which has been allocated to storage level virtual volumes 2230 by the storage control program 2500.
The volume identifiers 11004 are identifiers of volumes belonging to the storage level pool. A volume belonging to the storage level pool means a volume which has been set so as to belong to the storage level pool by the storage virtualization module 2501.
The storage level virtual volume total capacity 11005 is the sum value of the capacities of all of the storage level virtual volumes corresponding to the storage level pool.
The LL-SA size 11007 is a value indicating the management unit length (more specifically the unit length which is allocated or released) of the area (LL-SA) of a volume included in the storage level pool.
The unallocated LL-SA identifier list 11008 is a list of the identifiers of the areas (LL-SA) which are not allocated to a storage level virtual volume that has been associated with the storage level pool. In the examples of identifiers shown in the drawings, an offset number from a list stored in the volume identifier 11004 is stated before the colon “:”, and an offset number from the start of the area (LL-SA) of the volume indicated by the volume identifier 11004 and the offset number is stated after the colon. The areas (LL-SA) are created by dividing up the volume from the start, by the LL-SA size 11007, and offset numbers 0, 1, . . . , are allocated to the areas in order from the start of the area (LL-SA). Taking as an example the identifier “01:002” of the unallocated LL-SA in the storage level pool “STPOOL-1”, the “01” before the colon indicates the identifier of the next volume from the start, and therefore the volume identifier corresponds to “STLDEV-2”, while the “002” after the colon indicates the third area (LL-SA) from the start of STLDEV-2. Incidentally, since the LL-SA size of the STPOOL-1 is 100 MB (where 1 M is 1024 K, and 1 K is 1024), then supposing that data is addressed based on units of 512 byte blocks, this third area (LL-SA) from the start will range from the 400 k block to the (600 k−1) block. Below, unless expressly stated otherwise, block addresses are based on units of 512 byte blocks, 1 M is 1024 K, and 1 K is 1024.
Provided that the storage level pool information 11000 contains attribute values relating to a storage level pool, a data structure other than a table may be employed, and attribute values relating to a storage level pool other than the attribute values described above may also be included. Furthermore, the storage level pool information 11000 may omit a portion of the attribute values described above, apart from the storage level pool identifier. Furthermore,
Furthermore, as can be seen from
The storage level virtual volume information 12000 includes, for each storage level virtual volume: information relating to the storage level virtual volume, and information relating to the storage level pool which is the allocation source of the area allocated to that storage level virtual volume. More specifically, for example, the storage level virtual volume information 12000 is a table which contains, for each storage level virtual volume, a record of the following attribute values: a storage level virtual volume identifier 12001, a storage level virtual volume capacity 12002, a storage level virtual volume allocated capacity 12003, a storage level pool identifier 12004, a storage level pool capacity 12005 and a port number/LUN (Logical Unit Number) 12006. Moreover, the storage level virtual volume information 12000 also includes storage level area conversion information 12007 (expressed in the drawing as “LL-area conversion information”).
The storage level virtual volume identifier 12001 is an identifier which is allocated to the storage level virtual volume by the storage virtualization module 2501.
The storage level virtual volume capacity 12002 is the capacity of the storage level virtual volume set by the storage virtualization module 2501.
The storage level virtual volume allocated capacity 12003 is the total capacity of the area, out of the storage level virtual volume capacity 1502, which has been allocated to the storage level virtual volume from the storage level pool by the storage control program 2500.
The storage level pool identifier 12004 is an identifier of the storage level pool 2220 which is the allocation source of the area allocated to the storage level virtual volume.
The storage level pool capacity 12005 is the capacity of the storage level pool.
The port number/LUN 12006 is the port number and LUN corresponding to the storage level virtual volume.
The storage level area conversion information 12007 is information that includes the identifiers of the areas (LL-SA) of the storage level pool which have been allocated to each area (LL-AA) of the storage level virtual volumes. An area (LL-AA) for which the area (LL-SA) is marked as “unallocated” means that an area (LL-SA) has not been allocated to the corresponding area (LL-AA). The storage level area conversion information 12007 is created with all (or a portion) of the LL-AA set to “unallocated” immediately after definition of the corresponding storage level virtual volume, and as described below, areas (LL-SA) are allocated in accordance with an initial write request which covers the range of a portion or all of the areas (LL-AA) and the write data of the write request is saved in the areas (LL-SA).
In the example illustrated, the storage level area conversion information 12007 is expressed in the form of a list, and identifiers which respectively indicate an area (LL-SA) allocated to an area (LL-AA) (or which indicate the value “unallocated”) are stored in sequence from the area (LL-AA) at the start of the storage level virtual volume.
If the block address specifying an area (LL-AA) is the [Y] block address, then the address of the 512 byte block of the corresponding area (LL-SA) is determined as follows.
[LL-SA offset]=value obtained by dividing [Y] by [LL-SA size 11007 of corresponding storage level pool] (rounded down to nearest integer).
[LL-SA offset internal address]=remainder obtained by dividing [Y] by [LL-SA size 11007 of corresponding storage level pool]
[Volume where corresponding LL-SA resides]=value before colon [:] in identifier of [LL-SA offset] in list 12007. Reference to the “x offset value in the list” means the (x+1)th value from the top of the list.
[Address in volume where corresponding LL-SA resides]=(value after [:] in [LL-SA offset identifier] in list 11008])×[LL-SA size 11007 of corresponding storage level pool]+[LL-SA offset internal address]).
Therefore, when an I/O request specifying the 501 K block address of the storage level virtual volume STVVOL-1 is received from the physical server 3000, the following calculation is carried out.
LL-SA offset=2
LL-SA offset internal address=101 K block
Volume where corresponding LL-SA resides=02 (identified as STLDEV-8 by referring to the volume identifier 11004 in
Provided that the storage level virtual volume information 12000 contains attribute values relating to a storage level virtual volume, a data structure other than a table may be employed, and attribute values relating to a storage level virtual volume other than the attribute values described above may also be included. Furthermore, the storage level virtual volume information 12000 may omit a portion of the attribute values described above, apart from the storage level virtual volume identifier 12001.
The volume information 13000 contains, for each volume, information relating to a volume and information on the storage level pool to which the volume belongs. More specifically, for example, the volume information 13000 is a table which contains, for each volume, a record of the following attribute values: a volume identifier 13001, a volume capacity 13002, PDEV identifiers 13003, and a storage level pool identifier 13004.
The volume identifier 13001 is an identifier which is allocated to the volume by the storage virtualization module 2501.
The volume capacity 13002 is the capacity of the volume. A volume is constructed, for example, by the storage virtualization module 2501 grouping together the storage area of one of more PDEVs 2100a. The storage area of the volume is mapped and distributed to the storage area of one or more PDEVs 2100a under control implemented by the storage controller 4050.
The PDEV identifier 13003 is an identifier that has been allocated to a PDEV 2100a based on the volume by the storage virtualization module 2501. In other words, the PDEV identifiers 13003 are the identifiers of the PDEVs 2100a which form the basis of the volume.
The storage level pool identifier 13004 is an identifier of the storage level pool 0 to which the volume belongs.
Provided that the volume information 13000 contains attribute values relating to a volume, a data structure other than a table may be employed, and attribute values relating to a volume other than the attribute values described above may also be included. Furthermore, the volume information 13000 may omit a portion of the attribute values described above, apart from the volume identifier 13001.
The storage internal mapping information 14000 is, for example, a table which contains, for each storage level pool, a record of the following attribute values: a storage level pool identifier 14001, storage level virtual volume identifiers 14002, volume allocated capacity 14003, and PDEV identifiers 14004.
The storage level pool capacity 14001 is an identifier of the storage level pool.
The storage level virtual volume identifiers 14002 are identifiers of the storage level virtual volumes to which a portion of storage area is allocated from the storage level pool.
The volume identifiers 14003 are identifiers of volumes belonging to the storage level pool.
The PDEV identifiers 14004 are identifiers of the PDEVs 2100a which form the basis of the volumes belonging to the storage level pool.
Provided that the storage internal mapping information 14000 contains attribute values relating to mapping of the devices included in the storage system 2000, a data structure other than a table may be employed, and attribute values relating to mapping information other than the attribute values described above may also be included. Furthermore, the storage internal mapping information 14000 may omit a portion of the attribute values described above, apart from the storage level pool identifier 14001.
As shown in
The storage configuration management module 2502 manages the configuration of the storage areas of various types included in the storage system 2000. In specific terms, the management of the configuration of the storage area means, for example, management of the volumes which make up the storage level pools, management of the PDEVs 2100a which make up the volumes, and so on.
The command control module 2503 interprets a command (for example, an I/O request) from a physical server 3000 or management server 1000, and executes processing as stipulated by that command.
The storage virtualization module 2501 constructs volumes on the basis of PDEVs 2100a. The storage virtualization module 2501 also constructs storage level virtual volumes. The storage virtualization module 2501 maps one or more volumes and one or more storage level virtual modules to a storage level pool.
The memory 4050b stores server level pool information 15000, server level virtual volume information 16000 and a server virtualization program 3200.
The server level pool information 15000 is information relating to a server level pool.
The server level virtual volume information 16000 is information relating to server level virtual volumes.
The server virtualization program 3200 constructs virtual machines 3201, a server level pool 3210, server level virtual volumes 3220, and the like, using the resources of a physical server 3000.
The server level pool information 15000 includes, for example, for each server level pool, information relating to the server level pool, as well as information relating to the storage level virtual volumes belonging to the server level pool, and information relating to the server level virtual volumes to which storage area is allocated form the server level pool. More specifically, for example, the server level pool information 15000 is a table which contains, for each server level pool, a record of the following attribute values: a server level pool identifier 15001, a server level pool capacity 15002, a server level pool free capacity 15003, server level virtual volume identifiers 15004, a server level virtual volume total capacity 15005, a configuration storage port number/LUN (Logical Unit Number) 15006, an HA-SA size 15007 and an unallocated HL-SA identifier list 15008.
The server level pool identifier 15001 is an identifier which has been allocated to the server level pool 3210 by the server virtualization module 3200.
The server level pool capacity 15002 is the capacity of the server level pool 3210.
The server level pool allocated capacity 15003 is the total capacity of the area, out of the server level pool capacity 15002, which has been allocated to server level virtual volumes 3220.
The server level virtual volume identifiers 15004 are identifiers of the server level virtual volumes to which a portion of storage area is allocated from the server level pool.
The server level virtual volume total capacity 15005 is the sum total of the capacities of all of the server level virtual volumes to which storage area is allocated from the server level pool.
The configuration storage port number/LUN 15006 is the LUN and port number for identifying a storage level virtual volume belonging to the server level pool (the LUN and port number are used in I/O requests as a parameter indicating a storage level virtual volume). The port number/LUN may be another identifier, provided that it enables a storage level virtual volume provided by the storage system 2000 to be specified.
The HL-SA size 15007 is a value indicating the management unit length (more specifically, the unit length which is allocated or released) of the area (HL-SA) of a volume included in the server level pool.
The unallocated LL-SA identifier list 15008 is a list of the identifiers of the areas (HL-SA) which are not allocated to a server level virtual volume that has been associated with the server level pool.
In the examples of identifiers shown in the drawings, an offset number from a list stored in the configuration storage port number/LUN 15006 is stated before the colon “:”, and an offset number from the start of the area (HL-SA) of the storage level virtual volume indicated by the configuration storage port number/LUN 15006 and the offset number is stated after the colon. The areas (HL-SA) are created by dividing up the volume from the start, by the HL-SA size 15007, and offset numbers 0, 1, . . . , are allocated to the areas in order from the start of the volume. Taking as an example the identifier “00:002” of the unallocated HL-SA in the server level pool “SVPOOL-1”, the “00” before the colon indicates the identifier of the storage level virtual volume at the start of the pool, and therefore the volume identifier corresponds to the storage level virtual volume having a “LUN of 0 at PORT Number XXX.XXX”, while the “002” after the colon indicates the third area (HL-SA) from the start of that storage level virtual volume. Incidentally, since the HL-SA size of the SVPOOL-1 is 50 MB, then the third area (HL-SA) from the start will range from the 200 k block to the (300 k−1) block.
Provided that the server level pool information 15000 contains attribute values relating to a server level pool, a data structure other than a table may be employed, and attribute values relating to the server level pool configuration other than the attribute values described above may also be included. Furthermore, the server level pool information 15000 may omit a portion of the attribute values described above, apart from the server level pool identifier 15001.
The server level virtual volume information 16000 includes, for example, for each server level virtual volume, information relating to the server level virtual volume, as well as information relating to the server level pool which is the allocation source of the area allocated to the server level virtual volume, and information relating to virtual machine which uses the server level virtual volume. More specifically, for example, the server level virtual volume information 16000 contains, for each server level virtual volume, a record of the following attribute values: a server level virtual volume identifier 16001, a server level virtual volume capacity 16002, a server level virtual volume allocated capacity 16003, a server level pool identifier 16004, a server level pool capacity 16005, a corresponding virtual machine identifier 16006, a device identifier for virtual machine recognition 16007 and server level area conversion information 16008 (indicated as HL-area conversion information in the figure).
The server level virtual volume identifier 16001 is an identifier which has been allocated to the server level virtual volume by the server virtualization program 3200.
The server level virtual volume capacity 16002 is the capacity of the server level virtual volume.
The server level virtual volume allocated capacity 16003 is the total capacity of the area (virtual area), out of the server level virtual volume capacity, to which storage area has been allocated from the server level pool.
The server level pool identifier 16004 is an identifier of the server level pool which is the allocation source of the area allocated to the server level virtual volume.
The server level pool capacity 16005 is the capacity of the server level pool which is the allocation source of the area allocated to the server level virtual volume.
The corresponding virtual machine identifier 16006 is the identifier of the virtual machine which uses the server level virtual volume.
The device identifier for virtual machine recognition 16007 is an identifier whereby the virtual machine 3201 recognizes the server level virtual volume (a device identifier which indicates the server level virtual volume).
The server level area conversion information 16008 is information that includes the identifiers of the areas (HL-SA) of the server level pool which have been allocated to each area (HL-AA) of the server level virtual volumes. An area (HL-AA) for which (HL-SA) is marked as “unallocated” means that an area (HL-SA) has not been allocated to the corresponding area (HL-AA). The server level area conversion information 16008 is created with all (or a portion) of the HL-AAs set to “unallocated” immediately after definition of the corresponding server level virtual volume, and as described below, the areas (HL-SA) are allocated in accordance with an initial write request which covers the range of a portion or all of the areas (HL-AA) and the write data of the write request is saved in the areas (HL-SA).
In the example illustrated, the storage level area conversion information 160008 is expressed in the form of a list, and identifiers which respectively indicate an area (HL-SA) allocated to an area (HL-AA) (or which indicate the value “unallocated”) are stored in sequence from the area (HL-AA) at the start of the server level virtual volume.
If the block address specifying the area (HL-AA) is the [Z] block address, then the address of the 512 byte block of the corresponding area (HL-SA) is determined as follows.
[HL-SA offset]=value obtained by dividing [Z] by [HL-SA size 15007 of corresponding server level pool] (rounded down to nearest integer).
[HL-SA offset internal address]=remainder obtained by dividing [Z] by [HL-SA size 15007 of corresponding server level pool]
[Storage level virtual volume where corresponding HL-SA resides]=value before colon [:] in identifier of [HL-SA offset] in list 16008
[Address in volume where corresponding LL-SA resides]=(value after [:] in [HL-SA offset] identifier in list 16008)×[HL-SA size 15007 of corresponding storage level pool]+[HL-SA offset internal address])
Therefore, when an I/O request specifying the 151K block address of the HDD-1 (in other words, SVVVOL-1) is received from the virtual machine 1, the following calculation is carried out.
HL-SA offset=1.
HL-SA offset internal address=51 K block
Volume where corresponding HL-SA resides=01 (identified as LUN=2 at port number ZZZ.KKK by referring to the configuration storage port number/LUN 150006 in
Address in volume where corresponding HL-SA resides=851 K block
Provided that the server level virtual volume information 16000 contains attribute values relating to a server level virtual volume 3220, a data structure other than a table may be employed, and attribute values relating to a server level virtual volume 3220 other than the attribute values described above may also be included. Furthermore, the server level pool information 16000 may omit a portion of the attribute values described above, apart from the server level virtual volume identifier 16001.
The server virtualization program 3200 is now described.
The server virtualization program 3200 constructs virtual machines 3201, a server level pool 3210, server level virtual volumes 3220, and the like, using the resources of a physical server 3000. A more detailed description of the processing carried out by the server virtualization program 3200 is given in the section <5-1. Thin provisioning in server> below.
The memory 4050c stores: storage level pool configuration information 1400, storage level virtual volume configuration information 1500, port/LUN correspondence information 1600, server level pool configuration information 1700, server level virtual volume configuration information 1800, end-to-end capacity leverage ratio information 1900, initial settings information 1910 and a management program 1200.
The storage level pool configuration information 1400 is information relating to the configuration of storage level pools. Details of the storage level pool configuration information 1400 are given in <4-1. Storage information>.
The storage level virtual volume configuration information 1500 is information relating to the configuration of the storage level virtual volumes. Details of the storage level virtual volume configuration information 1500 are given in <4-1. Storage information>.
The port/LUN correspondence information 1600 is information relating to the port numbers and LUNs corresponding to the storage level virtual volumes which are provided by the storage system 2000 to the physical server 3000. The port/LUN correspondence information 1600 is described in detail in <4-1-3. Management server settings information>.
The server level pool configuration information 1700 is information relating to the configuration of server level pools 3210. Details of the server level pool configuration information 1700 are given in <4-1-2. Physical server information>.
The server level virtual volume configuration information 1800 is information relating to the configuration of the server level virtual volumes. Details of the storage level virtual volume configuration information 1800 are given in <4-1-1. Server information>.
The end-to-end capacity leverage ratio information 1900 is information relating to the end-to-end capacity leverage ratios of the storage level pools. The end-to-end capacity leverage ratio information 1900 is described in detail in <4-1-3. Management server management information>.
The initial settings information 1910 is information relating to the initial settings input by a storage administrator. The initial settings information 1910 is described in <4-1-3. Management server management information>.
The management program 1200 is a program which manages a storage system 2000 and physical servers 3000. The management program 1200 contains a storage management module 1201, a server management module 1202 and a leverage management module 1203.
The storage management module 1201 is a module which manages a storage system 2000 by using the storage level pool configuration information 1400 and the storage level virtual volume configuration information 1500.
The server management module 1202 is a module which manages a physical server 3000 by using the server level pool configuration information 1700 and the server level virtual volume configuration information 1800.
The leverage management module 1203 is a module which manages the end-to-end capacity leverage ratio by using the port/LUN correspondence information 1600, the end-to-end capacity leverage ratio information and the initial settings information 1910.
The respective modules included in the storage control program 1200 do not necessarily have to be modules of a single program, and may respectively be separate program codes.
<4-1-1a. Storage Level Pool Configuration Information>
The storage level pool configuration information 1400 contains, for each storage level pool, information relating to the storage level pool and information relating to storage level virtual volumes corresponding to that storage level pool. More specifically, for example, the storage level pool configuration information 1400 is a table which contains, for each storage level pool, a record of the following attribute values: a storage level pool identifier 1401, a storage level pool capacity 1402, a storage level pool allocated capacity 1403, corresponding storage virtual volume identifiers 1404, a corresponding storage level virtual volume total capacity 1405, pool configuration volume identifiers 1406, and a storage apparatus identifier 1407.
The storage level pool capacity 1401 is an identifier of the storage level pool.
The storage level pool capacity 1402 is the capacity of the storage level pool.
The storage level pool allocated capacity 1403 is the total capacity of the area, out of the storage level pool capacity, which has been allocated to the storage level virtual volume.
The corresponding storage level virtual volume identifier 1404 is the identifier of a storage level virtual volume which corresponds to the storage level pool.
The corresponding storage level virtual volume total capacity 1405 is the sum value of the capacities of all of the storage level virtual volumes corresponding to the storage level pool.
The pool configuration volume identifiers 1406 are identifiers of volumes belonging to the storage level pool.
The storage apparatus identifier 1407 is an identifier of the storage apparatus containing the volumes belonging to the storage level pool.
Provided that the storage level pool information 1400 contains attribute values relating to the composition of the storage level pool 2220, a data structure other than a table may be employed, and attribute values relating to the configuration of a storage level pool 2220 other than the attribute values described above may also be included. Furthermore, the storage level pool information 1400 may omit a portion of the attribute values described above, apart from the storage level pool identifier 1401.
The information elements 1401 to 1406 described above are obtained, for example, from the information elements 11001 to 11006 in the storage level pool information 11000 (see
<4-1-1b. Storage Level Virtual Volume Configuration Information>
The storage level virtual volume configuration information 1500 includes, for each storage level virtual volume, information relating to the storage level virtual volume, and information relating to the storage level pool corresponding to that storage level virtual volume. More specifically, for example, the storage level virtual volume configuration information 1500 is a table which contains, for each storage level virtual volume, a record of the following attribute values: a storage level virtual volume identifier 1501, a storage level virtual volume capacity 1502, a storage level virtual volume allocated capacity 1503, and a corresponding storage level pool identifier 1504.
The storage level virtual volume identifier 1501 is an identifier of the storage level virtual volume.
The storage level virtual volume capacity 1502 is the capacity of the storage level virtual volume.
The storage level virtual volume allocated capacity 1503 is the total capacity of the area, out of the storage level virtual volume capacity, which has been allocated to the storage level virtual volume from the storage level pool.
The corresponding storage level pool identifier 1504 is an identifier of the storage level pool corresponding to the storage level virtual volume.
Provided that the storage level virtual volume configuration information 1500 contains attribute values relating to a storage level virtual volume 2230, a data structure other than a table may be employed, and attribute values for a storage level virtual volume 2230 other than the attribute values described above may also be included. Furthermore, the storage level virtual volume 2230 information may omit a portion of the attribute values described above, apart from the storage level virtual volume identifier 1501.
The information elements 1501 to 1504 described above are obtained, for example, from the information elements 12001 to 12004 in the storage level pool information 11000 (see
<4-1-2a. Server Level Pool Configuration Information>
The server level pool configuration information 1700 contains, for each server level pool, information relating to the server level pool and information relating to server level virtual volumes corresponding to that server level pool. More specifically, for example, the server level pool information 1700 is a table which contains, for each server level pool, a record of the following attribute values: a server level pool identifier 1701, a server level pool capacity 1702, a server allocated capacity 1703, corresponding server level virtual volumes 3220, a corresponding server level virtual volume total capacity 1705, volume source storage apparatuses, and a configuration storage port number/LUN 1707.
The server level pool capacity 1701 is an identifier of the server level pool.
The server level pool capacity 1702 is the capacity of the server level pool.
The server level pool allocated capacity 1703 is the total capacity of the area, out of the server level pool capacity, which has been allocated to the server level virtual volumes.
The corresponding server level virtual volume identifiers 1704 are identifiers of server level virtual volumes which correspond to the storage level pool.
The corresponding server level virtual volume total capacity 1705 is the sum value of the capacities of all of the server level virtual volumes corresponding to the server level pool.
The volume source storage apparatus identifiers 1407 are identifiers of the storage apparatuses which provide the storage level virtual volumes corresponding to the server level pool, to the physical server 3000.
The configuration storage volume port number/LUN 1707 is a port number which allows the physical server 3000 to access a storage level virtual volume corresponding to the server level pool and a LUN whereby the physical server 3000 can recognize the storage level virtual volume by SCSI.
Provided that the server level pool configuration information 1700 contains attribute values relating to a server level pool 3210, a data structure other than a table may be employed, and attribute values relating to the server level pool 3210 other than the attribute values described above may also be included. Furthermore, the server level pool configuration information 1700 may omit a portion of the attribute values described above, apart from the server level pool identifier 1701.
The information elements 1701 to 1706 described above are obtained, for example, from the information elements 15001 to 15006 in the server level pool information 15000 (see
<4-1-2b. Server Level Virtual Volume Configuration Information>
The server level virtual volume configuration information 1800 includes, for each server level virtual volume, information relating to the server level virtual volume, and information relating to the server level pool corresponding to that server level virtual volume. More specifically, for example, the server level virtual volume information 1800 is a table which contains, for each server level virtual volume, a record of the following attribute values: a server level virtual volume identifier 1801, a server level virtual volume capacity 1802, a server level virtual volume allocated capacity 1803, a server level virtual volume unallocated capacity 1804, a server level virtual volume used capacity 1805, a corresponding server level pool identifier 1806, a corresponding virtual machine identifier 1807 and a device identifier for virtual machine recognition 1808.
The server level virtual volume identifier 1801 is an identifier of the server level virtual volume.
The server level virtual volume capacity 1802 is the capacity of the server level virtual volume.
The server level virtual volume allocated capacity 1803 is the total capacity of the area, out of the server level virtual volume capacity, which has been allocated to the server level virtual volume from the storage level pool.
The server level virtual volume unallocated capacity 1804 is the total capacity of the area (virtual area), out of the server level virtual volume capacity, to which storage area has not been allocated from the server level pool.
The server level virtual volume used capacity 1805 is the capacity to which data has been written by a virtual machine, out of the server level virtual volume capacity.
The corresponding server level pool identifier 1806 is an identifier of the server level pool corresponding to the server level virtual volume.
The corresponding virtual machine identifier 1807 is the identifier of the virtual machine which is the allocation destination of the server level virtual volume.
The device identifier for virtual machine recognition 1808 is an identifier whereby a virtual machine recognizes a server level virtual volume as a device (for example, as a hard disk drive).
Provided that the server level virtual volume configuration information 1800 contains attribute values relating to a server level virtual volume 3220, a data structure other than a table may be employed, and attribute values for a server level virtual volume 3220 other than the attribute values described above may also be included. Furthermore, the server level virtual volume 3220 information may omit a portion of the attribute values described above, apart from the server level virtual volume identifier 1801.
The information elements 1801 to 1804 and 1806 to 1808 described above are obtained, for example, from the information elements 16001 to 16001 in the server level virtual volume information 16000 (see
<4-1-3a. Port-LUN Correspondence Information>
The port/LUN correspondence information 1600 is, for example, a table which contains, for each storage level virtual volume, a record of the attribute values: port # (port number) 1602, LUN 1603 and internal volume ID 1601.
The port # 1602 is the port number used by a physical server 3000 to access a provided storage level virtual volume 2230, when the storage system 2000 has provided a storage level virtual volume 2230 to the physical server 3000.
The LUN 1603 is an identification number which allows the physical server 3000 to recognize by SCSI a storage level virtual volume 2230 provided by the storage system 2000.
The internal volume ID 1601 is an identifier for identifying a storage level virtual volume 2230 provided to a physical server 3000 by the storage system 2000.
Provided that the port/LUN correspondence information 1600 includes attribute values relating to the correspondences between the port number 1602, the LUN 1603 and the internal volume ID 1601, a data structure other than a table may be employed and attribute values for the correspondence between the port number 1602, LUN 1603 and internal volume ID 1601 other than the attribute values described above may also be included. Furthermore, the port/LUN correspondence information 1600 may omit a portion of the attribute values described above, apart from the internal volume ID 1601.
The information elements 1601 to 1603 described above can be created in the following way, for example. The correspondence information 1600 shown in
<4-1-3b. End-to-End Capacity Leverage Ratio Information>
The end-to-end capacity leverage ratio information 1900 is, for example, a table which contains, for each storage level pool, a storage level pool identifier 1901 and an end-to-end capacity leverage ratio 1902.
The storage level pool capacity 1901 is an identifier of the storage level pool.
The end-to-end capacity leverage ratio 1902 is the end-to-end capacity leverage ratio corresponding to the storage level pool (100×(total capacity of all server level virtual volumes corresponding to storage level pool)/(capacity of storage level pool)) (%).
Provided that the end-to-end capacity leverage ratio information 1900 includes attribute values relating to the capacity leverage ratio of the pool unit, a data structure other than a table may be employed and attribute values relating to the capacity leverage ratio of the pool unit other than the attribute values described above may also be included. Furthermore, the end-to-end capacity leverage ratio 1900 may omit a portion of the attribute values described above, apart from the storage level pool identifier 1901.
<4-1-3c. Initial Settings Information>
The initial settings information 1910 is a table containing one or more records including the attribute values of end-to-end capacity leverage ratio threshold value 1911 and information gathering interval 1912, for example.
The end-to-end capacity leverage ratio threshold value 1911 is a threshold value indicating the upper tolerance limit of the capacity leverage ratio relating to the storage level pool 2220, which is input by the storage administrator via a setup screen of the management program 1200.
The information gathering interval 1912 is the interval between the timings at which the end-to-end capacity leverage ratio 1902 is calculated, as input by the storage administrator via the setup screen of the management program 1200.
Provided that the initial settings information 1910 contains attribute values relating to the initial settings input by the storage administrator, a data structure other than a table may be employed, and attribute values relating to the initial settings other than the attribute values described above may also be included. Furthermore, the initial settings information 1910 may omit a portion of the attribute values described above, apart from the information gathering interval 1912.
The leverage ratio display screen 1403 is a screen which is displayed by the management program 1200. The reason why, for example, the end-to-end capacity leverage ratio of the storage level pool “STPOOL-1” is 500% is as follows.
From the information 1400 in
The port number and LUN corresponding respectively to the identifiers “STVVOL-1” and “STVVOL-2” are specified from the information 1600 in
Using these port numbers and LUNs, the server level pool identifier “SVPOOL-1” is specified from the information in
Using this identifier “SVPOOL-1”, the server level virtual volume capacities “30000 MB” and “20000 MB”, in other words, a total capacity of “50000 MB”, are specified from the information 1800 in
As a result of the foregoing, a total capacity of “50000 MB” in the server level virtual volumes which correspond to the storage level pool is identified in respect of the capacity “10000 MB” of the storage level pool “STPOOL-1”, and consequently, an end-to-end capacity leverage ratio of 100×50000/10000=500%, is calculated.
The display format and display information shown in
In the storage system 2000, volumes 2210, a storage level pool 2220 and storage level virtual volumes 2230 are constructed by a storage virtualization module 2501 of the storage control program 2500.
The volumes 2210 are constructed by the storage virtualization module 2501 grouping together the storage area of one or more PDEVs 2100a. The storage areas of the volumes 2210 are distributed and mapped to the storage area of one or more PDEVs 2100a which make up a volume 2210, under control implemented by the storage controller 4050.
The storage level pool 2220 is constructed by the storage virtualization module 2501. The storage area of the storage level pool 2220 is distributed and mapped to the storage area of one or more volumes 2210 which correspond to the storage level pool 2220, under control implemented by the storage controller 4050.
The storage level virtual volumes 2230 are constructed by the storage virtualization module 2501. The storage level virtual volumes 2230 have a virtual area (LL-AA). In contrast to the areas (LL-SA) of the volumes 2210, immediately after the definition of the storage level virtual volumes 2230, the areas (LL-AA) of the storage level virtual volume 2230 are not associated with the physical storage region of a PDEV 2100a.
When a write request to a virtual area (LL-AA) of a storage level virtual volume 2230 has been issued, if a portion of the area (LL-SA) inside the pool 2220 has not been allocated to that area (LL-AA), then under the control of the storage controller 4050a, the unallocated area (LL-SA) of the storage level pool 2220 is mapped dynamically.
The whole of the virtual storage area of the storage level virtual volumes 2230 does not have to correspond to a physical storage area, such as a storage area of a PDEV 2100a, and therefore it is possible to set the virtual storage area (capacity) of the storage level virtual volumes 2230 to a value that is higher than the physical storage area of the storage system 2000 (for example, the capacity of the pool 2220). Furthermore, if the unallocated area (LL-SA) is insufficient immediately after starting access to the storage level virtual volume, then it is possible to prevent failure of the write request due to the insufficient unallocated area (LL-SA), by incorporating a new volume into the pool 2220, without changing the settings of the computer which is accessing the storage level virtual volume.
The storage system 2000 provides the storage level virtual volumes 2230 to the physical server 3000. The physical storage area of the PDEV 4050a is accessed by the physical server 3000 via the storage level virtual volumes 2230 and the volumes 2210 which form the storage level pool 2220.
The setup of the storage level pool 2220 is implemented by the storage virtualization module 2501.
(Step S1101) Firstly, the storage administrator inputs information about the volumes 2210 to be set in the storage level pool 2220, to the management program 1200. The identifier of the storage level pool 2220, the threshold value, the number of volumes 2210 and the volume identifiers are established.
(Step S1102) The storage management module 1201 generates a command instructing set-up of the storage level pool 2220 including the input information, and sends this command to the storage system 2000 via the NIC.
(Step S1103) In the storage system 2000, the command sent from the physical server 1000 is received by the command control module 2503, via the NIC.
The command control module 2503 recognizes the contents of the received command. If the contents of the command are invalid, then the module 2503 rejects the command (and returns an error, for example).
(Step S1104) If the command instructs the setting up of a storage level pool 2220, then the command control module 2503 passes on the received command to the storage virtualization module 2501. The storage virtualization module 2501 receives the command and starts storage level pool setup processing.
(Step S1105) The storage virtualization module 2501 firstly examines the storage level pool information 11000 and confirms that the storage level pool identifier 11001 relating to the command is valid. Furthermore, the storage virtualization module 2501 confirms whether the storage level pool identifier 11001 has not yet been defined.
(Step S1106) Thereupon, the storage virtualization module 2501 confirms whether or not the volume 2210 relating to the command is usable. More specifically, if the volume 2210 relating to the command is being formatted, for example, then that volume 2210 cannot be used and therefore the storage virtualization module 2501 rejects the command (by returning an error, for example). Furthermore, if the volume 2210 relating to the command is already in use (for example, if the path to the volume 2210 has been defined, if the volume is in use by a copy function, or the like, or if the volume has been reserved as a copy destination), then the storage virtualization module 2501 rejects the command since the volume 2210 is not usable.
(Step S1107) Thereupon, the storage virtualization module 2501 sets the storage level pool capacity 11002 and the volume identifier 11004 in the storage level pool information 11000. By means of this processing carried out by the storage virtualization module 2501, a volume 2210 is added to the storage level pool 2220. The storage virtualization module 2501 adds all or a portion of the area of the registered volume to the unallocated LL-SA identifier list 11008, as an LL-SA.
(Step S1108) Next, the storage control program 2500 sends a reply indicating that the command was successful, to the management server 1000.
Upon receiving a reply from the storage system 2000, the storage configuration management module 2502 of the management server 1000 ends processing.
By means of the processing described above, a volume 2210 is added to the storage level pool 2220.
<5-1-2. Reading from Storage Level Virtual Volume>
The physical server sends an I/O request by specifying the LUN of a storage level virtual volume and the block address in the volume. This I/O request is a data read request.
(Step S901) In the storage system 2000, the command control module 2503 receives an I/O request from the physical server 3000. If the content of the received I/O request is invalid, then this request is rejected (an error is returned, for example). If the content of the received I/O request is valid, then the command control module 2503 analyzes the content of the I/O request. As a result of this analysis, the command control module 2503 identifies that the I/O request is a data read request.
(Step S902) Next, the command control module 2503 acquires the block address of the storage level virtual volume 2230 relating to the received request, which is to be read from.
(Step S903) Thereupon, the command control module 2503 acquires the block address of the area (LL-SA) of the volume that has been mapped to the area (LL-AA) including the address of the area in the read request, from the storage level pool 2220 corresponding to the storage level virtual volume 2230 that is to be read. In this case, the address of the area of the storage level virtual volume 2230 in the read request may have been distributed and mapped to the addresses of a plurality of volumes 2210. This processing is carried out by referencing the storage level pool information 11000 and the storage level virtual volume information 12000, but the details of this processing have already been described in explaining the respective information.
(Step S904) Thereupon, the command control module 2503 refers to the volume information 14000, identifies the PDEV 2100a corresponding to the address of the area of the volume 2210, and acquires the address of that PDEV 2100a.
(Step S905) Thereupon, the command control module 2503 reads out data relating to the request from the address of the PDEV 2100a and sends this data to the physical server 3000.
(Step S906) The command control module 2503 then sends a read request completion report to the physical server 3000 and ends processing.
If, at step S903, there is no volume area (LL-SA) allocated to the area (LL-AA) including the address of the region in the read request, then a clear value (for example, a string of zeros) can be sent to the physical server 3000.
The physical server 3000 sends an I/O request by specifying the LUN of a storage level virtual volume 2230 and the block address in the volume. This I/O request is a data write request.
(Step S1001) In the storage system 2000, the command control module 2503 receives an I/O request from the physical server 3000. If the received I/O request is invalid, then this request is rejected (an error is returned, for example). The command control module 2503 then analyzes the content of this I/O request. As a result of this analysis, the command control module 2503 identifies that the I/O request is a data write request.
(Step S1002) Next, the command control module 2503 acquires the block address of the storage level virtual volume 2230 relating to the received write request.
(Step S1003) Thereupon, the command control module 2503 refers to the storage level virtual volume information 12000, identifies the storage level pool 2220 corresponding to the storage level virtual volume 2230 and acquires the status of the pool.
(Step S1004) The command control module 2503 refers to the storage level pool information 11000, identifies the volume 2210 corresponding to the storage level pool 2220, and judges whether or not the volume 2210 is usable.
(Step S1005) If the volume 2210 is not usable, then access to the volume 2210 is not possible, and therefore the command control module 2503 sends an I/O error to the physical server 3000.
(Step S1006) If it is judged that the volume 2210 is usable, then the command control module 2503 sends a notification that the transfer of write data is possible, to the physical server 3000 which sent the request. The physical server 3000 receives this and sends write data to the storage system 2000.
(Step S1007) The command control module 2503 receives the write data sent by the physical server 3000.
(Step S1010) Firstly, the storage virtualization module 2501 refers to the storage level virtual volume information 12000 and the storage level pool information 11000 and checks whether an area (LL-SA) of the storage level pool 2220 has been allocated to the area (LL-AA) which includes the block address of the write request.
(Step S1011) If it is judged at step S1010 that an area has been allocated, then the storage virtualization module 2501 refers to the storage level virtual volume information 12000 and the storage level pool information 11000 and acquires the volume allocated to the area (LL-AA) which includes the specified block address, and the block address of the area (LL-SA) of that volume.
(Step S1012) Thereupon, the storage virtualization module 2501 refers to the volume information 13000, identifies the PDEV 2100a corresponding to the volume 1011 and the block address acquired at step S1011, acquires the address of the region of the PDEV 2100a and writes the write data (the data appended to the write request).
(Step S1013) Upon completing the writing of the write data, the storage virtualization module 2501 reports the end of writing to the command control module 2503. The command control module 2503 receives this report, sends a write request completion report to the physical server 3000 and ends processing.
(Step S1014) On the other hand, if it is judged at step S1010 that an area has not been allocated, then the storage virtualization module 2501 refers to the storage level pool information 11000 and confirms whether there is an unallocated area (LL-SA) in the corresponding storage level pool 2220. This step can be achieved by referring to the unallocated LL-SA identifier list 11008.
(Step S1015) If it is judged at step S1014 that there is an unallocated area (LL-SA), then the storage virtualization module 2501 selects the unallocated area (LL-SA) of the storage level pool 2220, acquires the volume and block address of the selected area (LL-SA), and allocates same to the area (LL-AA) judged to be unallocated at step S1010. The process of selecting the area (LL-SA) in this step can be made, for example, by extracting an unallocated area (LL-SA) from the start of the unallocated LL-SA identifier list 11008. Furthermore, in the method described in
(Step S1016) The module 2501 then updates the storage level pool information 11000 and the storage level virtual volume information 12000. More specifically, the module 2501 increases the allocated capacity 11003 of the storage level pool and the allocated capacity 12003 of the storage level virtual volume by the capacity of the selected area (LL-SA). Furthermore, the value in the storage level area conversion information 12007 which corresponds to the area (LL-AA) from step S1010 is changed from unallocated to the volume and block address just acquired.
(Step S1017) On the other hand, if it is judged that there is no (or insufficient) unallocated area (LL-SA) at step S1014, then the storage virtualization module 2501 changes the status of the management information of the storage level pool 2220 to “pool capacity insufficient”.
(Step S1018) The module 2501 then reports the pool capacity insufficiency to the physical server 3000 that issued the I/O request and the storage system 2000.
By means of the processing described above, processing of a data write request by the physical server 3000 is completed.
In the physical server 3000, a server level pool 3210, server level virtual volumes 3220 and virtual machines 3201 are constructed by the server virtualization program 3200. The server level pool 3210 is a pool which enables a storage region including a plurality of areas (LL-AA) of a plurality of storage level virtual volumes 2230 which are provided by the storage system 2000 to be used as an area (HL-SA). The server level pool 3210 is constructed from one or more storage level virtual volumes 2230 allocated from the storage system 2000 by the server virtualization program 3200. The server level pool 3210 principally uses a file system format, and stores image files of the virtual machines 3201 and image files of the server level virtual volumes 3220, and the like. Furthermore, when a virtual machine is temporarily halted, the data stored virtually in the memory of the virtual machine is also stored as an image file. In other words, from the perspective of the physical server, it appears as if the various data which has been stored in the image file, memory image and server level virtual volume 3220 relating to the virtual machine is stored in a storage level virtual volume. A management area for the server level virtual volumes 3220 is reserved inside the server level pool 3210. This management area stores address information for the virtual storage areas of the server level virtual volumes 3220, mapping information on mapping to the storage level virtual volumes 2230 provided by the storage system 2000, and the like.
The server level virtual volumes 3220 are constructed by the server virtualization program 3200. The server level virtual volumes 3220 each have a virtual storage area. In response to a write request from a virtual machine 3201, the server virtualization program 3200 dynamically maps an area of the required capacity from the virtual storage area of a server level virtual volume 3220 to the storage area of the server level pool 3210.
The virtual machines 3201 are virtual computers which are constructed by the server virtualization program 3200. In the virtual server environment, a plurality of virtual machines 3201 operate by sharing the physical resources of a physical server. Similarly to a physical server, a virtual machine 3201 can be installed with an OS 3230, and can be used as an independent server machine. The virtual machine 3201 accesses the storage area of the server level pool 3210 (actually the storage level virtual volume) via a server level virtual volume 3220.
Access from a virtual machine 3201 to the server level virtual volume 3220 is controlled by the server virtualization program 3200. By this means, the server level virtual volume 3220 is recognized in the same way as a storage device having a physical storage area, by the OS 3230 of the virtual machine 3201. The control performed by the server virtualization program 3200 includes the processes of reading, writing and capacity inquiry, with respect to the server level virtual volumes 3220, and these processes are described hereinafter. A capacity inquiry request issued by the OS 3230 running on the virtual machine 3201 is a request for acquiring the capacity of a server level virtual volume 3220 which is necessary when the OS 3230 is to use that volume.
In the description given below, SCSI is used as an example of the I/O protocol issued to the server level virtual volume 3220 by the OS 3230 executed on the virtual machine 3201. However, as an alternative to a SCSI protocol, it is also possible to employ other block access type protocols, such as IDE or SAS, for example.
(Step S1201) Firstly, the storage administrator inputs information about the volumes to be set in the server level pool 3210, to the server virtualization program 3200. Storage level virtual volumes provided from the storage system 2000 are used as the volumes set in the server level pool 3210. The identifier and threshold value of the server level pool 3210, and the number and LUN 1603 of the storage level virtual volumes 2230 are established.
(Step S1202) The server virtualization program 3200 confirms whether or not the command instructing the setup of the server level pool 3210 and containing the input information is valid. If the command is invalid, then the program 3200 rejects the command (and returns an error, for example).
(Step S1203) The server virtualization program 3200 firstly refers to the server level pool information 15000 and confirms that the server level pool identifier 1801 relating to the command is valid.
(Step S1204) Thereupon, the server virtualization module 3200 confirms whether or not the storage level virtual volume 2230 relating to the command is usable. More specifically, if the storage level volume 2230 relating to the command is being formatted, for example, then that storage level virtual volume 2230 cannot be used and therefore the program 3200 rejects the command (by returning an error, for example). Furthermore, if the storage level virtual volume 2230 relating to the command is already in use (for example, if the path to the storage level virtual volume 2230 has been defined), then that storage level virtual volume 2230 is not usable and the program 3200 rejects the command.
(Step S1205) Next, the server virtualization program 3200 sets the server level pool capacity 15002 and the configuration storage port number/LUN 15006 in the server level pool information 15000. By means of this processing performed by the server virtualization program 3200, a storage level virtual volume 2230 is set in the server level pool 3210. The server virtualization program 3200 then adds all or a portion of the areas of the registered storage level virtual volume to the unallocated HL-SA identifier list 15008, as an HL-SA.
<5-1-2a. Processing of Capacity Inquiry Request in Relation to Server Level Virtual Volume>
This process is described with respect to a case where the OS 3230 running on the virtual machine 3201 has issued a capacity inquiry request. Normally, the OS 3230 subsequently issues a write request or read request, and executes file system format processing for the server level virtual volumes 3220.
The OS 3230 on the virtual machine 3201 specifies a device identifier for virtual machine recognition 1808 and issues a capacity inquiry request. In response to this request, the server virtualization program 3200 returns the capacity of the server level virtual volume 3220 to the OS 3230 on the virtual machine 3201, by carrying out the processing described below. By this means, the OS 3230 on the virtual machine 3201 is able to ascertain the capacity of the server level virtual volume 3220.
(Step A) The server virtualization program 3200 receives a capacity inquiry request sent by the OS of the virtual machine 3201.
(Step B) The server virtualization program 3200 analyzes the content of the request. The program then refers to the server level virtual volume information 16000 and specifies the server level virtual volume identifier 16001 corresponding to the device identifier for virtual machine recognition 16007 which is the destination of the inquiry.
(Step C) The server virtualization program 3200 acquires the server level virtual volume capacity 16002 of the identifier specified at step B, from the server level virtual volume information 16000.
(Step D) The server virtualization program 3200 reports the capacity acquired at step C to the OS 3230 on the virtual machine 3201, as the disk size of the storage device recognized by the OS 3230 on the virtual machine 3201, and then terminates processing.
By means of the processing described above, the OS 3230 on the virtual machine 3201 is able to ascertain the capacity of the server level virtual volume 3220.
<5-1-2b. Processing of Read Request to Server Level Virtual Volume>
This process is started when the server virtualization program 3200 detects the issue of a read request in which the OS 3230 on the virtual machine 3201 specifies the device identifier for virtual machine recognition of the server level virtual volume 3220 that is to be read from, and a block address and block length.
(Step S1301) The server virtualization program 3200 receives an I/O request from the virtual machine 3201. If the content of the received I/O request is invalid, then the program 3200 rejects the request (by returning an error, for example). If the content of the received I/O request is valid, then the program 3200 analyzes the content of the I/O request. As a result of this analysis, the server virtualization program 3200 identifies that the I/O request is a data read request.
(Step S1302) Next, the server virtualization program 3200 acquires the server level virtual volume 3220 relating to the received request, which is to be read from, and the block address in the object server level virtual volume.
(Step S1303) Next, the server virtualization program 3200 refers to the server level virtual volume information 16000, and acquires the identifier of the storage level virtual volume 2230 which has been mapped to the area (HL-AA) that includes the address of the region in the read request, and the address of the area (HL-SA) of the storage level virtual volume, from the server level pool 3210 corresponding to the server level virtual volume 3220 that is to be read from. In this case, the address of the region in the read request to the storage level virtual volume 3220 may have been distributed and mapped to the addresses of a plurality of storage level virtual volumes 2230. This processing is carried out by referring to the server level pool information 15000 and the server level virtual volume information 16000, but the details of this processing have already been described in explaining the respective information.
(Step S1304) Next, the server virtualization program 3200 sends the identifier of the storage level virtual volume 2230 acquired at step S1303 and a read request which specifies the address of the corresponding area (HL-SA) of the area (HL-SA) storage level virtual volume 2230, to the storage system 2000. Data relating to the read request is received from the server virtualization program 3200 and the data is sent to the virtual machine 3201.
(Step S1305) A read request completion report is then notified to the virtual machine 3201 and processing is terminated.
If, at step S1303, there is no volume area (HL-SA) allocated to the area (HL-AA) including the address of the region in the read request, then a clear value (for example, a string of zeros) can be sent to the virtual machine 3201.
<5-1-2c. Processing of Write Request to Server Level Virtual Volume>
This process is started when the server virtualization program 3200 detects the issuing of a write request in which the OS 3230 on the virtual machine 3201 specifies the device identifier for virtual machine recognition of the server level virtual volume 3220 that is to be written to, and a block address and block length.
(Step S1401) In the physical server 3000, the server virtualization program 3200 receives an I/O request from the virtual machine 3201. If the received I/O request is invalid, the program 3200 rejects that I/O request. If the received I/O request is valid, then the program 3200 analyzes the content of the I/O request. As a result of this analysis, the server virtualization program 3200 identifies that the I/O request is a data write request.
(Step S1402) Thereupon, the server virtualization program 3200 acquires the identifier of the server level virtual volume 3220 relating to the received write request, and the block address in that server level virtual volume.
(Step S1403) Next, the server virtualization program 3200 refers to the server level virtual volume information 16000, identifies the server level pool 3210 corresponding to the server level virtual volume 2230 and acquires the status thereof.
(Step S1404) The server virtualization program 3200 refers to the server level pool information 15000, identifies the storage level virtual volume 2230 corresponding to the server level pool 3210, and judges whether or not that storage level virtual volume 2230 is usable.
(Step S1405) If the storage level virtual volume 2230 is not usable, then that storage level virtual volume 2230 cannot be accessed and therefore the server virtualization program 3200 reports an I/O error to the virtual machine which sent the request.
(Step S1406) If it is judged that the storage level virtual volume 2230 is usable, then the server virtualization program 3200 sends a notification that the transfer of write data is possible, to the virtual machine which sent the request. Upon receiving this notification, the virtual machine sends write data to the server virtualization program 3200.
(Step S1407) The server virtualization program 3200 receives write data sent by the physical server 3000.
(Step S1410) Firstly, the server virtualization program 3200 refers to the server level virtual volume information 16000 and the storage level pool information 15000 and checks whether an area (HL-SA) of the server level pool 3210 has been allocated to the area (HL-AA) which includes the block address of the write request. [0h]
(Step S1411) If it is judged at step S1410 that an area has been allocated, then the server virtualization program 3200 refers to the server level virtual volume information 16000 and the server level pool information 15000 and acquires the identifier (for example, the port number and LUN) of the storage level virtual volume allocated to the area (HL-AA) which includes the specified block address, and the block address of the area (HL-SA) of that volume.
(Step S1412) Thereupon, the server virtualization program 3200 sends the write data together with the identifier of the storage level virtual volume acquired at step S1411 and a write request specifying the block address of the storage level virtual volume.
(Step S1413) Upon receiving the writing completion report of the write data from the storage system 2000, the server virtualization program 3200 sends a write request completion report to the virtual machine that issued the request and then ends processing.
(Step S1414) On the other hand, if it is judged at step S1410 that an area has not been allocated, then the server virtualization program 3200 refers to the server level pool information 15000 and confirms whether there is an unallocated area (HL-SA) in the corresponding server level pool 3210. This step can be achieved by referring to the unallocated HL-SA identifier list 15008.
(Step S1415) If it is judged at step S1414 that there is an unallocated area (HL-SA), then the server virtualization program 3200 selects the unallocated area (HL-SA) of the storage level pool 2220, acquires the volume and block address of the selected area (HL-SA), and allocates same to the area (HL-AA) judged to be unallocated at step S1410. The process of selecting the area (HL-SA) in this step can be made, for example, by extracting an unallocated area (HL-SA) from the top of the unallocated HL-SA identifier list 15008. Furthermore, in the method described in
(Step S1416) The sever virtualization program 3200 then updates the server level pool information 15000 and the server level virtual volume information 16000. More specifically, the program 3200 increases the allocated capacity 15003 of the server level pool and the allocated capacity 16003 of the server level virtual volume by the capacity of the selected area (HL-SA). Furthermore, the value in the server level area conversion information 16007 which corresponds to the area (HL-AA) from step S1410 is changed from unallocated to the volume and block address just acquired.
(Step S1417) On the other hand, if it is judged that there is no (or insufficient) unallocated area (HL-SA) at step S1414, then the server virtualization program 3200 changes the status of the management information of the server level pool 3210 to “pool capacity insufficient”.
(Step S1418) The server virtualization program 3200 then reports the pool capacity insufficiency to the virtual machine that issued the I/O request and the physical sever 3000.
By means of the processing described above, processing of a data write request by the physical server 3000 is completed.
If failure of the write request is reported by the storage system 2000 at step S1412, then a write failure report is returned to the virtual machine that issued the I/O request.
If too large a virtual volume capacity is set in respect of a limited physical storage capacity (for instance, the capacity of a storage level pool), then it is difficult to predict the rate of consumption of the physical storage capacity and the possibility of depletion of the physical storage capacity increases. Therefore, it is necessary to keep the ratio of the virtual volume capacity with respect to the physical storage capacity (the leverage ratio) at or below a set level.
In the processing according to a first embodiment, the storage administrator sets a threshold value for the end-to-end capacity leverage ratio, in the management server 1000. If the end-to-end capacity leverage ratio exceeds the threshold value, the management server 1000 detects this and indicates that the end-to-end capacity leverage ratio has exceeded the threshold value. By this means, the storage administrator is able to identify sharp rise in the end-to-end capacity leverage ratio.
The processing carried out by the management program in the first embodiment is now described with reference to
(Step S101) The management program 1200 receives initial settings information 1910 which has been input by the storage administrator via the setup screen of the management program 1200. The threshold value of the capacity leverage ratio and the interval for gathering capacity information are included in the initial settings information 1910. The threshold value of the capacity leverage ratio is a value which indicates the tolerable upper limit of the virtual volume capacity corresponding to the physical storage capacity, and the storage administrator sets this threshold value on the basis of a capacity schedule. Furthermore, the interval between gathering capacity information is the interval between the times at which the management program 1200 carries out the processing described below. Moreover, the storage management module 1201 receives information specifying the storage level pool 2220 from the storage administrator, and on the basis of this information, determines the storage level pool identifier 1401 for which the end-to-end capacity leverage ratio is to be calculated. The management program 1200 then stores the input threshold value for the capacity leverage ratio as the end-to-end capacity leverage ratio threshold value 1911 in the initial settings information 1910, and stores the interval for gathering capacity information as the information gathering interval 1912 in same. Furthermore, the storage management module 1201 stores an identifier of the storage level pool determined as the object of end-to-end capacity leverage ratio calculation as the storage level pool identifier 1901 in the end-to-end capacity leverage ratio information 1900.
(Step S102) The management program 1200 gathers the capacity information for the storage system 2000 and the capacity information for the physical server 3000, after the information gathering interval 1912 set by the storage administrator has elapsed, in other words, when the time for gathering capacity information arrives. More specifically, for example, the storage management module 1201 of the management program 1200 acquires the capacity information of the storage system 2000 from the storage system 2000, and the server management module 1202 of the management program 1200 gathers capacity information for the physical server 3000. The specific method of gathering capacity information is described below.
(Step S103) A leverage management module 1203 of the management program 1200 carries out processing for calculating the end-to-end capacity leverage ratio on the basis of the acquired capacity information of the physical server 3000 and the capacity information of the storage level pool 2220 specified by the storage administrator. The details of the processing of the end-to-end capacity leverage ratio are described later with reference to
(Step S104) The leverage management module 1203 judges whether the end-to-end capacity leverage ratio value 1902 in the end-to-end capacity leverage ratio information 1900 is higher than the end-to-end capacity leverage ratio threshold value 1911 in the initial settings information 1910. If the value 1902 is judged to be higher than the threshold value 1911, then step S105 is executed, whereas if it is not higher, then step S102 is executed.
(Step S105) The leverage management module 1203 displays an alert which announces that the end-to-end capacity leverage ratio 1902 has risen sharply and the possibility of depletion of the physical storage capacity has increased. Moreover, the leverage management module 1203 displays a chart of the value of the end-to-end capacity leverage ratio 1902, the storage level pool capacity 1402, the storage level virtual volume identifier 1501 and the storage level virtual volume capacity 1502, on the capacity leverage ratio display screen 1403 of the management program 1200. The information reported on the display screen of the management program 1200 may be information other than that stated above, provided that the information is able to convey to the storage administrator the fact that the possibility of depletion of the physical capacity of the storage level pool 2220 has increased.
(Step S106) On the other hand, if the result of the comparison shows that the end-to-end capacity leverage ratio 1902 has not exceeded the end-to-end capacity leverage ratio threshold value 1911, then after the information gathering interval 1912 has elapsed, the procedure returns to step S102.
In the example described above, the storage level pool capacity 1402 and the server level virtual volume capacity 1802 were used in calculating the end-to-end capacity leverage ratio 1902, but it is also possible to use other values from the tables to which these respective columns belong.
Below, the details of the capacity information gathering process which is mentioned in overview in step S102 in
(Step A) The storage management module 1201 gathers the identifier of the storage level virtual volume corresponding to the specified storage level pool identifier 1401, from the storage level pool information 11000 held by the storage system 2000, and stores the gathered identifier as the corresponding storage level virtual volume identifier 1404 in the storage level pool configuration information 1400.
(Step B) The storage management module 1201 refers to the port/LUN correspondence information 1600 and acquires the port number 1601 and LUN 1602 allocated to the corresponding storage level virtual volume identifier 1404 which was gathered at step A.
(Step C) The server management module 1202 gathers the identifier of the server level pool 3210 corresponding to the storage level virtual volume 2230 allocated with the port number 1601 and LUN 1602 acquired by the storage management module 1201 at step B, from the server level pool information 15000 in the physical server 3000, and stores this identifier as the server level pool identifier 1701 in the server level pool configuration information 1700. The server level pool 3210 corresponding to the storage level virtual volume 2230 means the server level pool 3210 which has been set up so that the storage level virtual volume 2230 belongs thereto.
(Step D) The server management module 1202 gathers the identifiers and capacities of all of the server level virtual volumes 3220 corresponding to the gather server level pool identifier 1701, from the server level pool information 15000 in the physical server 3000. The server management module 1202 stores the identifiers of the server level virtual volumes 3220 as the corresponding server level virtual volume identifiers 1704 in the server level pool configuration information 1700 and as the server level virtual volume identifiers 1801 in the server level virtual volume configuration information 1800. Furthermore, the respective server level virtual volume capacities are stored as the server level virtual volume capacity 1802 in the server level virtual volume configuration information 1800.
(Step S201) The leverage management module 1203 sends an inquiry to the storage system 2000 about the capacity of the storage level pool corresponding to the storage level pool identifier 1401 specified in (step A) of step S102 under <6-1-1. Capacity information gathering process>. The storage system 2000 returns the data in the column, storage level pool capacity 11002, of the storage level pool information 11000, to the management server. The leverage management module stores the storage level pool capacity 11002 thus received as the storage level pool capacity 1402 in the storage level pool configuration information 1400.
(Step S202) The leverage management module 1203 adds up the server level virtual volume capacities 1802 gathered by the server management module 1202 in step D of step S102 and stores the result as the corresponding server level virtual volume total capacity 1705 of the server level pool configuration information 1700.
(Step S203) The leverage management module 1203 calculates the ratio of the storage level pool capacity 1402 acquired at step S201 to the value of the corresponding server level virtual volume total capacity 1705 calculated at step S202 and stores the result of this calculation as the end-to-end capacity leverage ratio 1902 in the end-to-end capacity leverage ratio information 1900.
The processing described above is premised on gathering capacity and displaying a leverage ratio in respect of a storage level pool indicated by the administrator, but it is also possible to display the leverage ratio in respect of a plurality of storage level pools which are managed by a management server. The processing in this case involves repeating the processes shown in
In the computer system relating to a second embodiment of the present invention, in addition to the computer system of the first embodiment, if the end-to-end capacity leverage ratio 1902 exceeds an end-to-end capacity leverage ratio threshold value 1911 set by the storage administrator and it is judged that the risk of depletion of the physical storage capacity has increased, then the location which is the cause of the sudden rise in the end-to-end capacity leverage ratio 1902 is identified and information on the identified location is displayed to the storage administrator via a management screen of the management program.
Furthermore, in order to prevent depletion of the physical storage capacity, the management program 1200 implements processing for automatically changing the configuration of the storage system 2000, thereby restricting the leverage ratio to a normal value which does not exceed the end-to-end capacity leverage ratio threshold value 1911.
Furthermore, if a setup operation is accepted by a server virtualization program 3200 which includes a callback object, then that operation is interrupted (the storage control program 2500 may also include a callback object, described hereinafter, instead of or in addition to the server virtualization program 3200). The end-to-end capacity leverage ratio 1902 after execution of the accepted operation is simulated, and if it is judged that the end-to-end capacity leverage ratio 1902 would exceed the end-to-end capacity leverage ratio threshold value 1911 set by the storage administrator, then the management program 1200 automatically carries out configuration change processing for the storage system 2000. By this means, it is possible to achieve a structure where the end-to-end capacity leverage ratio 1902 does not exceed the end-to-end capacity leverage ratio threshold value 1911 set by the storage administrator, even after the server virtualization program 3200 has executed the setup operation. When the processing described above has been carried out successfully by the management program 1200, a success notification is sent to the server virtualization program 3200, and upon receiving this notification, the server virtualization program 3200 restarts the accepted setup operation. On the other hand, if it is judged that the end-to-end capacity leverage ratio 1902 will not be restricted to the end-to-end capacity leverage ratio threshold value 1911 or lower even after the configuration change processing in the storage system 2000 is performed by the management program 1200, then a notification is sent to the management program 1200 indicating that there is a high risk of depletion of the physical storage capacity by the setup operation, and a recommendation to halt the setup operation is issued.
If the end-to-end capacity leverage ratio 1902 calculated at step S105 in <6-1. Processing for calculating end-to-end capacity leverage ratio 1902> according to the first embodiment exceeds the end-to-end capacity leverage ratio threshold value 1911 set by the storage administrator and if it is judged that there is a high possibility of depletion of the physical storage capacity, then information indicating the location that is the cause of the steep rise in the end-to-end capacity leverage ratio 1902 is reported to the storage administrator via the display screen.
(Step S401) The management program 1200 sends an inquiry to the storage system 2000 about the identifier of the storage level virtual volumes corresponding to the storage level pool 2220 in which the end-to-end capacity leverage ratio shows a sharp rise. Upon receiving this inquiry, the storage system 2000 returns the storage level virtual volume identifiers 11005 in the storage level pool information 11000. The management program 1200 stores the received list of the identifiers of storage level virtual volumes 2230, as the corresponding storage level virtual volume identifiers 1404.
(Step S402) The management program 1200 acquires the server level pool identifier 1701 corresponding to the respective storage level virtual volumes 2230 having the acquired storage level virtual volume identifiers 1404. More specifically, for example, the management program 1200 refers to the port/LUN correspondence information 1600 and identifies the LUN 1603 corresponding to the identifier of the storage level virtual volume 2230, which has been registered as an internal volume ID. The management program 1200 sends an inquiry to the physical server 3000 about the identifier of the server level pool 3210 corresponding to the LUN 1603. Upon receiving this, the server virtualization program 3200 of the physical server 3000 identifies the LUN 1603 for which the inquiry has been made, from the configuration storage port number/LUN 1707, and returns the corresponding server level pool identifier 15001 from the server level pool information 15000, to the management server 1000. The management program 1200 of the management server 1000 stores the received server level pool identifier 15001 as the server level pool identifier 1701 of the server level pool configuration information 1700.
(Step S403) The management program 1200 sends an inquiry to the physical server 3000 about the identifiers of the server level virtual volumes 3210 corresponding to the server level pool identifier 1701 acquired at step S402. Upon receiving this, the server virtualization program 3200 of the physical server 3000 returns the server level virtual volume identifiers 15004 corresponding to the server level pool identifier 1701 in the server level pool information 15000, to the management server 1000. The management program 1200 of the management server 1000 stores the received server level pool identifiers 15004 as the corresponding server level virtual volume identifiers 1704 in the server level pool configuration information 1700.
(Step S404) In respect of each of the server level virtual volumes 3220 having the respective corresponding server level virtual volume identifiers 1704 acquired at step S403, the management program 1200 sends an inquiry to the physical server 3000 about the capacity which has been mapped to the storage area of the server level pool 3210, out of the server level virtual volume capacity 1802. Upon receiving this, the server virtualization program 3200 of the physical server 3000 refers to the server level virtual volume information 16000 and returns the server level virtual volume allocated capacity 16003 corresponding to the server level virtual volume identifier 1704, to the management server 1000. The management program 1200 of the management server 1000 stores the received server level virtual volume allocated capacity 16003 as the server level virtual volume allocated capacity 1803 in the server level virtual volume configuration information 1800. Moreover, the management program 1200 subtracts the value of the server level virtual volume allocated capacity 1803 from the server level virtual volume capacity 1802, and stores the result as the server level virtual volume unallocated capacity 1804.
(Step S405) The management program 1200 compares the respective server level virtual volume unallocated capacities 1804 corresponding to the respective server level virtual volume identifiers 1801 calculated in step S404, and identifies the server level virtual volume 3220 having the highest value of the compared server level virtual volume unallocated capacities 1804 as a location causing sudden rise in the end-to-end capacity leverage ratio 1902. The management program 1200 displays a screen showing information such as the identifier, capacity and unallocated capacity of this server level virtual volume 3220.
(Step S301) The management program 1200 checks whether or not there is a volume 2210 that has not been registered in the pool configuration volume identifiers 1406 of the storage level pool configuration information 1400, in other words, whether there is a surplus volume 2210 which does not belong to a storage level pool 2220, in the storage system 2000.
(Step S302) If there is a surplus volume 2210 in the storage system 2000 which does not belong to a storage level pool 2220, then the management program 1200 automatically adds capacity to the storage level pool 2220 by newly setting the surplus volume 2210 to belong to the storage level pool 2220 having the storage level pool identifier 1401 specified in (step A) of step S102 in <6-1-1. Capacity information gathering process> of the first embodiment. The capacity added to the storage level pool 2220 is set by the management program 1200 to a value whereby the end-to-end capacity leverage ratio 1902 is kept equal to or lower than the end-to-end capacity leverage ratio threshold value 1911. The capacity added to the storage level pool 2220 may be set by the storage administrator on the management screen of the physical server 3000.
(Step S303) If, as a result of performing step S302, the end-to-end capacity leverage ratio 1902 is kept at or below the end-to-end capacity leverage ratio threshold value 1911 set by the storage administrator, then the procedure advances to step S308. If, on the other hand, the end-to-end capacity leverage ratio 1902 has exceeded the end-to-end capacity leverage ratio threshold value 1911, then the procedure advance to step S304.
(Step S304) If the end-to-end capacity leverage ratio 1902 has exceeded the end-to-end capacity leverage ratio threshold value 1911 in step S303, then the management program 1200 sends an inquiry to the storage system 2000 about whether there is a storage level pool 2220 other than the storage level pool 2220 in question, in the storage system 2000. If there is another storage level pool, then the management program 1200 sends the storage system 2000 an inquiry with regard to the identifier of the storage level pool 2220 other than the storage level pool 2220 in question, which is the subject of the inquiry. The command control module 2503 of the storage system 2000 refers to the storage level pool information 11000 and returns a storage level pool identifier 11001 other than the identifier of the storage level pool 2220 in question, to the management server 1000. The management program 1200 of the management server 1000 stores the received storage level pool identifier 11001 as a storage level pool identifier 1401 in the storage level pool configuration information 1400, and then proceeds to step S305. If there is no other storage level pool, then the procedure advances to step S308.
(Step S305) The management program 1200 refers to the end-to-end capacity leverage ratio information 1900 and specifies a storage level pool identifier 1401 having a low (for example, the lowest) end-to-end capacity leverage ratio 1902. Image files in the server level virtual volume 3220 are migrated between the storage level pool 2220 in question and the storage level pool 2220 selected at step S305, in such a manner that the end-to-end capacity leverage ratio 1902 of the storage level pool 2220 in question becomes equal to or lower than the end-to-end capacity leverage ratio threshold value 1911. In this case, the server level virtual volume 3220 to be migrated is specified as the server level virtual volume 3220 identified as a cause location of sudden rise in the end-to-end capacity leverage ratio at step S405 in <7-1. Cause location identification processing>. This cause location may be specified automatically as an object for migration. Provided that the server level virtual volume 3220 forming the cause location is migrated to a server level virtual volume corresponding to another storage level pool, then the total capacity of the server level virtual volumes corresponding to the storage level pool which is the migration source decreases, and therefore the end-to-end capacity leverage ratio falls. In this case, desirably, the end-to-end capacity leverage ratio relating to the other storage level pool described above does not exceed the threshold value, even when the server level virtual volume 3220 forming the migration object is migrated. More specifically, for example, it is judged whether or not the end-to-end capacity leverage ratio relating to the other storage level pool exceeds the threshold value if the capacity of the server level virtual volume which is the migration object is added to the total capacity of the server level virtual volumes corresponding to the other storage level pool, and if it is judged that the threshold value is not exceeded, then the other storage level pool can be set as a migration destination.
(Step S306) If, as a result of carrying out step S305, the end-to-end capacity leverage ratio 1902 of the storage level pool 2220 is kept at or below the end-to-end capacity leverage ratio threshold value 1911, then the procedure advances to step S308. On the other hand, if the end-to-end capacity leverage ratio 1902 of the storage level pool 2220 has exceeded the end-to-end capacity leverage ratio threshold value 1911, then the procedure advances to step S307.
(Step S307) A notification is issued indicating that the end-to-end capacity leverage ratio 1902 has exceeded the end-to-end capacity leverage ratio threshold value 1911 set by the storage administrator, even after carrying out step S302 and step S305.
(Step S308) If the end-to-end capacity leverage ratio 1902 has been kept at or below the end-to-end capacity leverage ratio threshold value 1911 in step S302 or step S305, then this fact is reported to the storage administrator.
(Step S501) The management program 1200 receives initial settings information 1910 which has been input by the storage administrator via the setup screen of the management program 1200. The threshold value of the end-to-end capacity leverage ratio is input to the initial settings information 1910. The management program 1200 stores the input threshold value as the end-to-end capacity leverage ratio threshold value 1911 in the initial settings information 1910.
(Step S502) Next, a callback process is carried out. The details of the callback process are described here with reference to
(Step S601) The server virtualization program 3200 registers the address of the management program 1200.
(Step S602) Upon accepting a setup operation event, the server virtualization program 3200 sends a callback object to the management program 1200. The callback object includes the total capacity of the server level virtual volumes 3220 before the execution of the setup operation, and the contents of the setup operation.
(Step S603) The management program 1200 waits for a callback object to be sent from the server virtualization program 3200, and when a callback object arrives from the server virtualization program 3200, the management program 1200 receives this object.
(Step S604) The management program 1200 calculates the total capacity of the server level virtual volumes 3220 after executing the operation accepted by the server virtualization program 3200, by simulation on the basis of the information included in the received callback object.
(Step S605) The management program 1200 identifies the storage level pool 2220 corresponding to the server level virtual volumes 3220 relating to the setup operation. The concrete steps are as follows.
(Step A) The server management module 1202 sends an inquiry to the physical server 3000 about the identifier of the server level pool 3210 which corresponds to the identifier 1801 of the server level virtual volumes relating to the setup operation. Upon receiving this, the server virtualization program 3200 of the physical server 3000 refers to the server level virtual volume information 16000 and returns a server level pool identifier 16004. The management program 1200 stores the server level pool identifier 16004 thus received as the corresponding server level virtual volume identifier 1806 in the server level virtual volume configuration information 1800.
(Step B) Thereupon, the management program 1200 refers to the server level pool configuration information 1700 and identifies a server level pool identifier 1701 which is the same as the corresponding server level pool identifier 1806 in step A. The management program 1200 then sends an inquiry to the physical server 3000 in respect of the storage port number/LUN 1707 corresponding to the identified server level pool 3210. Upon receiving this, the server virtualization program 3200 of the physical server 3000 refers to the server level pool information 15000 and returns a configuration storage port number/LUN 15006 to the management server 1000. The management program 1200 of the management server 1000 stores the received configuration storage port number/LUN 15006 as the configuration storage port number/LUN 1707 of the server level pool configuration information 1700.
(Step C) Thereupon, the management program 1200 refers to the port/LUN correspondence information 1600 and acquires the internal volume ID 1601 corresponding to the configuration storage port number/LUN 1707 acquired in step B.
(Step D) Thereupon, the management program 1200 refers to the storage level virtual volume configuration information 1500 and identifies a storage level virtual volume 2230 having the same identifier as the internal volume ID 1601. The management program 1200 then acquires the corresponding storage level pool identifier 1504 which corresponds to the identified storage level virtual volume 2230.
The description now returns to
(Step S503) The leverage management module 1203 of the management program 1200 carries out processing for calculating the end-to-end capacity leverage ratio by using the total capacity of the server level virtual volumes 3220 obtained by the callback process, and the capacity information relating to the identified storage level pool 2220. The details of the process for calculating the end-to-end capacity leverage ratio are described later with reference to
(Step S504) The leverage management module 1203 judges whether the value of the end-to-end capacity leverage ratio 1902 in the end-to-end capacity leverage ratio information 1900 is higher than the end-to-end capacity leverage ratio threshold value 1911 in the initial settings information 1910. If the value 1902 is judged to be higher than the threshold value 1911, then step S505 is executed, whereas if it is not higher, then step S502 is executed.
(Step S505) The leverage management module 1203 displays an alert which announces that the end-to-end capacity leverage ratio 1902 has risen sharply and the possibility of depletion of the physical storage capacity has increased. Moreover, the leverage management module 1203 displays a chart of the value of the end-to-end capacity leverage ratio 1902, the storage level pool capacity 1402, the storage level virtual volume identifier 1501 and the storage level virtual volume capacity 1502, to the storage administrator, on the capacity leverage ratio display screen 1403 of the management program 1200. The information reported on the display screen of the management program 1200 may be information other than that stated above, provided that the information is able to convey to the storage administrator the fact that the possibility of depletion of the physical capacity of the storage level pool 2220 has increased.
In the example described above, the storage level pool capacity 1402 and the server level virtual volume capacity 1802 were used in calculating the end-to-end capacity leverage ratio 1902, but it is also possible to use other values from the tables to which these respective columns belong.
(Step S801) The leverage management module 1203 refers to the storage level pool configuration information 1400 and acquires the storage level pool capacity 1402 corresponding to the storage level pool identifier 1401 specified in step S605.
(Step S802) The leverage management module 1203 calculates the ratio of the storage level pool capacity 1402 acquired at step S201 under <7-3. Processing performed by management program using callback interface> to the value of the corresponding server level virtual volume total capacity 3220 calculated at step S604, and stores the result of this calculation as the end-to-end capacity leverage ratio 1902 in the end-to-end capacity leverage ratio information 1900.
The processing described above is premised on gathering capacity and displaying an end-to-end leverage ratio in respect of a storage level pool 2220 indicated by the storage administrator, but it is also possible to display the leverage ratio in respect of a plurality of storage level pools 2220 which are managed by a management server 1000. The processing in this case involves repeating the processes shown in
(Step S701) The management program 1200 checks whether or not there is a volume 2210 that has not been registered in the pool configuration volume identifiers 1406 in the storage level pool configuration information 1400, in other words, a surplus volume 2210 which does not belong to a storage level pool 2220, in the storage system 2000.
(Step S702) If there is a surplus volume 2210 in the storage system 2000 which does not belong to a storage level pool 2220, then the management program 1200 automatically adds capacity to the storage level pool 2220 by newly setting the surplus volume 2210 to belong to the storage level pool 2220 having the storage level pool identifier 1401 acquired in step S201 in <7-3. Processing performed by management program using callback interface>. The capacity added to the storage level pool 2220 is set by the management program 1200 to a value whereby the end-to-end capacity leverage ratio 1902 is kept at or below the end-to-end capacity leverage ratio threshold value 1911. The capacity added to the storage level pool 2220 may be set by the storage administrator on the management screen of the physical server 3000.
(Step S704) If the end-to-end capacity leverage ratio 1902 has exceeded the end-to-end capacity leverage ratio threshold value 1911 in step S703, then the management program 1200 refers to the storage level pool configuration information 1400 and checks whether there is a storage level pool 2220 other than the storage level pool 2220 in question, in the storage system 2000. If there is another storage level pool, then the procedure advances to step S705. If there is no other storage level pool, then the procedure advances to step S708.
(Step S705) The management program 1200 refers to the end-to-end capacity leverage ratio information 1900 and specifies a storage level pool identifier 1401 having a low (for example, the lowest) end-to-end capacity leverage ratio 1902. Image files in the server level virtual volume 3220 are migrated between the storage level pool 2220 in question and the storage level pool 2220 selected at step S705, in such a manner that the end-to-end capacity leverage ratio 1902 of the storage level pool 2220 in question becomes equal to or lower than the end-to-end capacity leverage ratio threshold value 1911. The server level virtual volume 3220 migrated in this case is specified by the management program 1200 referring to the server level virtual volume configuration information 1800 and setting the volume having the highest server level virtual volume unallocated capacity 1804.
(Step S706) If, as a result of carrying out step S305, the end-to-end capacity leverage ratio 1902 of the storage level pool 2220 is kept at or below the end-to-end capacity leverage ratio threshold value 1911, then the procedure advances to step S708. On the other hand, if the end-to-end capacity leverage ratio 1902 of the storage level pool 2220 exceeds the end-to-end capacity leverage ratio threshold value 1911, then the procedure advances to step S707.
(Step S707) The management program 1200 sends the server virtualization program 3200 a recommendation to halt the setup operation, because there is a high risk of depletion of the storage capacity by executing the setup operation that the server visualization program 3200 is seeking to perform. Upon receiving this, the server visualization program 3200 reconfirms to the server administrator whether or not the setup operation is to be carried out.
(Step S708) The management program 1200 reports to the server virtualization program 3200 that the setup operation it is seeking to carry out is safe. Upon receiving this, the server virtualization program 3200 restarts the setup operation which had been interrupted.
(Step S709) The management program 1200 reports to the storage administrator that there is a high possibility of depletion of the storage capacity.
(Step S710) The management program 1200 notifies the storage administrator that the possibility of depletion of the storage capacity that had increased sharply is now reduced and displays capacity information for the storage level pool 2220, and the like, of which the configuration has been changed.
In the foregoing, several embodiments of the present invention were described, but the present invention is not limited to these embodiments and may of course be modified in various ways without departing from the essence of the invention.
For example, the management server 1000 may carry out processing for making the end-to-end capacity leverage ratio equal to or less than a threshold value (for example, addition of capacity to the storage level pool or migration of a server level virtual volume), without displaying the end-to-end capacity leverage ratio (and/or without displaying other management information).
Furthermore, for example, as shown in
Moreover, for example, although not shown in the drawings, the management server 1000 may manage the change in the free capacity ratio of the storage level pool (the free capacity ratio at respective time points) and show information representing that change, and calculate and display a recommended end-to-end capacity leverage ratio threshold value for the storage level pool.
Furthermore, the end-to-end capacity leverage ratio threshold value may be different for each storage level pool. More specifically, for example, it is possible to prepare, for each storage level pool, an end-to-end capacity leverage ratio threshold value which is set on the basis of the change in the free capacity ratio of the storage level pool (the speed at which the free capacity ratio decreases). Furthermore, respective threshold values may be prepared for different types of leverage ratio.
The computer system relating to a third embodiment of the present invention relates to capacity management of the storage system in accordance with the deletion of a virtual machine, and in particular, to the releasing of the area (LL-SA) of a volume that has become unnecessary. In addition to deleting a virtual machine for reasons relating to the end-to-end capacity leverage ratio according to the first and second embodiments as described below, a virtual machine may also be deleted for reasons unrelated to the end-to-end capacity leverage ratio. It is necessary for all of the following conditions to be established.
Reasons for deleting virtual machine relating to end-to-end capacity leverage ratio:
(Reason 1) A virtual machine defined in the past is deleted as a measure for reducing the end-to-end capacity leverage ratio which has risen excessively.
Reasons for deleting virtual machine unrelated to end-to-end capacity leverage ratio:
(Reason 2) A virtual machine judged to be unnecessary is deleted in order to increase the unallocated area of the storage level pool and the server level pool.
(Reason 3) Application processing which has been executed on a virtual machine is switched to execution by a physical server, due to reasons of improving reliability and processing performance, etc., and the virtual machine therefore has become unnecessary.
(Reason 4) A virtual machine ceases to be used, due to the person who was using the virtual machine being transferred or retiring, or the end of the contract of use of the virtual machine.
Of course, there may also be other reasons for deleting a virtual machine.
The example in
In response to the virtual machine deletion request, the server virtualization program 3200 erases the information constituting the virtual machine (VM1) 3201 (for example, the definition file, memory image, etc.) and also releases the areas (HL-SA) which were allocated to the server level virtual volume (HL-VVOL1). Release of the areas (HL-SA) by the server virtualization program 3200 means that the identifiers of the areas (HL-SA) in question are added to the unallocated HL-SA identifier list in the server level pool information 15000, and this indicates that these areas (HL-SA) can subsequently be reallocated by another virtual machine.
The storage control program 2050 in the storage system 2000 identifies the areas (LL-AA) of the storage level virtual volume 2230 (LL-VVOL1) corresponding to the areas (HL-SA) that have been released, and duly releases the areas (LL-SA) that were allocated to the identified areas (LL-AA). Release of the areas (LL-SA) by the storage control program 2050 means that the identifiers of the areas (LL-SA) in question are added to the unallocated LL-SA identifier list in the storage level pool information 11000, and this indicates that these areas (LL-SA) can subsequently be reallocated by another virtual machine.
However, if the HL-SA area length in the server virtualization program 3200 and the LL-SA area length in the storage control program 2050 are not matching, then as shown in
Next, the process for releasing an area (LL-SA) in accordance with the deletion of a virtual machine according to a third embodiment of the present invention will be described with reference to
<8-1a. Processing in Response to Deletion Request>
(Step S44001) The server virtualization program 3200 receives a virtual machine deletion request from the management server 1000 or other computer. The virtual machine deletion request includes the identifiers of one or more virtual machines which are objects for deletion.
(Step S44002) The server virtualization program 3200 refers to the server level pool information 15000 and identifies the server level virtual volume corresponding to the virtual machine which is the deletion object. Furthermore, the program also refers to the server level virtual volume information 16000 and identifies the areas (HL-SA) allocated to the identified server level virtual volume. The areas (HL-SA) which contain the settings information, memory images, and the like, of the virtual machine forming the deletion object can be treated as the identified areas (HL-SA). Furthermore, it is also possible for areas (HL-SA) which are shared with another virtual machine to be omitted from the identified areas (HL-SA).
(Step S44003) The server virtualization program 3200 deallocates the areas (HL-SA) identified in step S44002 and deletes the server level virtual volume identified at step S44002. A more specific description of the related information handling is given below.
Aside from these processes, it is also possible to carry out general virtual machine deletion processing.
(Step S44004) The server virtualization program 3200 identifies the SCSI address (LUN, block address and block length) of the areas (HL-SA) identified in step S44002, and sends a region release instruction specifying the identified SCSI address to the storage system 2000. The following modes can be envisaged for issuing a region release instruction. Firstly, there is a mode where the instruction from the server virtualization program 3200 is issued to the storage system 2000 via the management server 1000. More specifically, the server virtualization program 3200 issues an API (Application Programming Interface) including the SCSI address of the identified areas (HL-SA) to the management server 1000 via a LAN 5010. Thereupon, the management server 1000 issues an API containing the received SCSI address to the storage system 2000 via the LAN 5010. Secondly, there is a mode where the server virtualization program 3200 issues an API including the SCSI address of the identified areas (HL-SA) directly to the storage system 2000 via a LAN 5010. Thirdly, there is a mode where the server virtualization program 3200 issues an API including the SCSI address of the identified areas (HL-SA) directly to the storage system 2000 via a SAN 5000. The destination of the API may be a specific LL-VOL which is to receive the API, or a LL-VOL which is the object of region release. Furthermore, the API may be a WRITE SAME command, which is a SCSI command for repeatedly writing continuous data, or an UNMAP command which is a SCSI command for reporting an unnecessary region.
(Step S44101) The storage control program 2050 receives a region release instruction.
(Step S44102) The storage control program 2050 identifies the block address range on the storage level virtual volume corresponding to the SCSI address specified by the region release instruction. The program then changes the data of the identified block address range to clear values (for example, zeros). The process for changing to clear values is similar to the process of writing storage data to the specified block address range.
(Step S44103) The storage control program 2050 identifies a volume area (LL-SA) allocated to the area (LL-AA) which is contained completely within the block address range on the storage level virtual volume specified at step S44102. The program refers to the storage level virtual volume information 12000 and the storage level pool information in order to make this identification.
(Step S44104) The storage control program 2050 releases the volume area (LL-SA) identified in step S44103. A more specific description of the related information handling is given below.
The storage control program 2050 waits for the completion of the processing described above and then sends a region release instruction completion report to the physical server 3000. The server virtualization program receives the region release instruction completion report and ends the virtual machine deletion process. The address specified by the region release instruction may be an address other than a SCSI address, and the operation of updating the completely contained area (LL-AA) to clear values in the step S44103 may be omitted.
<8-1b. Repeat Execution Processing>
By repeatedly executing step S44201 described below, the storage control program 2050 attempts to release the allocation of an area (LL-AA) comprising a block address range which is included in the block address range specified in step S44102 but is not included in the area (LL-AA) specified in step S44103.
(Step S44201) The storage control program 2050 searches for an area (LL-SA) having all data set to clear values, in the areas (LL-SA) allocated to the area (LL-AA) of the storage level virtual volume, and if this search is successful, releases the area (LL-SA) thus found from the area (LL-AA) to which it was allocated. The handling of information in relation to release is similar to that of step S44104.
If the areas (LL-SA) have a large size, then a correspondingly long time is required for the process of checking that each individual area (LL-SA) is set entirely to clear values, and the data in the areas (LL-SA) may be updated during this checking process. The following countermeasures can be applied in this respect.
(Countermeasure 1): It is made possible to set an additional flag which indicates “checking of clear values in progress”, in the listed values of the LL-area conversion information 12007.
(Countermeasure 2): Before checking the clear values in step S44201, a flag indicating “checking of clear values in progress” is set at a corresponding location in the list of LL-area conversion information relating to the area (LL-AA) to which the area (LL-SA) being checked was allocated.
(Countermeasure 3): If an area (LL-SA) having all clear values is found at step S44201, then a release operation is carried out only if a “checking of clear values in progress” flag is raised for the area (LL-AA) to which the found area (LL-SA) was allocated, and the flag is then lowered.
(Countermeasure 4): When data is written to an area (LL-AA) for which a “checking of clear values in progress” flag has been raised in the storage data writing process, the flag is lowered.
The processing in step S44201 is carried out in coordination with step S44104, in respect of the area (LL-SA) allocated to the area (LL-AA) comprising the block address range identified in step S44102, which has not been set as an object for release in step S44104.
The foregoing is a virtual machine deletion process. As shown in
The information elements 45001 and 45002 can be found out readily in cases where the management server 1000 has issued the virtual machine deletion request. On the other hand, in cases where a computer other than the management server 1000 has issued the virtual machine deletion request, the virtual machine identifiers specified by the virtual machine deletion request, and the reception date and time, should be acquired from the physical server 3000. The information elements 45003 to 45005 can be acquired by comparing the storage level pool configuration information 1400, the server level pool configuration information 1700 and the server level virtual volume configuration information held by the management server 1000 before and after the virtual machine deletion request. However, these information elements can also be acquired by methods other than these.
In the description given above, the management server 1000 creates settings information (for example, storage level pool configuration information 1400, storage level virtual volume configuration information 1500, port/LUN correspondence information 1600, server level pool configuration information 1700 and server level virtual volume configuration information 1800) by gathering information on the settings applied in the storage system 2000 and physical server 3000, from the storage system 2000 and the physical server 3000, and the management server 1000 calculates and displays an end-to-end capacity leverage ratio. However, if the management server 1000 establishes settings for the storage system 2000 and the physical server 3000 on the basis of setting values received from an administrator or a data source apparatus (for example, a portable storage medium) via an input/output device 4060, then the process of acquiring all or a part of the aforementioned settings information from the storage system 2000 and physical server 3000 can be omitted, the settings information described above can be created or updated on the basis of these settings values, and the end-to-end capacity leverage ratio can be calculated and displayed accordingly. In the latter case, it is possible to assist the setup process performed by the administrator by displaying the end-to-end capacity leverage ratio before the settings based on the settings value are applied to the storage system 2000 or the physical server 3000.
In respect of the portion which has been described using block addresses, apart from an I/O request from a virtual machine and an I/O request sent to the storage system 2000 from a physical server 3000, it is also possible to employ addressing in other units, or separate addresses using a prescribed conversion.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/JP10/00705 | 2/5/2010 | WO | 00 | 6/2/2010 |