WO2011135617A1 - プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置 - Google Patents

プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置 Download PDF

Info

Publication number
WO2011135617A1
WO2011135617A1 PCT/JP2010/003018 JP2010003018W WO2011135617A1 WO 2011135617 A1 WO2011135617 A1 WO 2011135617A1 JP 2010003018 W JP2010003018 W JP 2010003018W WO 2011135617 A1 WO2011135617 A1 WO 2011135617A1
Authority
WO
WIPO (PCT)
Prior art keywords
pool
status
virtual
capacity
real
Prior art date
Application number
PCT/JP2010/003018
Other languages
English (en)
French (fr)
Inventor
▲高▼田豊
井上信太郎
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2010/003018 priority Critical patent/WO2011135617A1/ja
Priority to JP2012512531A priority patent/JP5303066B2/ja
Priority to US12/935,908 priority patent/US8677080B2/en
Publication of WO2011135617A1 publication Critical patent/WO2011135617A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

Definitions

  • the present invention relates to memory control according to Thin Provisioning.
  • the storage apparatus generally provides a virtual logical volume (hereinafter referred to as a virtual volume) composed of a plurality of virtual pages, and has a pool composed of a plurality of real pages.
  • a virtual volume composed of a plurality of virtual pages
  • the storage apparatus allocates a real page from the pool to a write destination virtual page, and writes data to be written to the allocated real page.
  • a virtual page is a virtual storage area
  • a real page is a substantial storage area.
  • Patent Documents 1 and 2 are known as technologies related to this type of storage device.
  • Patent Document 1 if the number of real pages is zero, a physical storage device is added, and a logical disk is newly generated based on the physical storage device. By dividing the logical disk, a real page that can be allocated is newly generated.
  • the capacity of the virtual volume is determined regardless of the pool capacity. In general, the total capacity of one or more virtual volumes is larger than the total capacity of one or more pools.
  • an object of the present invention is to prevent a shortage of real pages that can be allocated.
  • a first status that means it has been initialized and can be assigned to a virtual page
  • a second status that means that it has been assigned to a virtual page
  • a third status that means that initialization is not possible because it cannot be assigned to a virtual page and a predetermined data is written.
  • the storage controller receives a write command for an unallocated virtual page in the virtual volume from a host (for example, a physical or virtual computer), and executes the first status from the pool with which the virtual volume is associated. Assign a page and change the status of the real page to the second status.
  • a host for example, a physical or virtual computer
  • the storage control device changes the status of the real page assigned to the virtual page to the third status at a certain timing.
  • the storage control device initializes the real page of the third status, and when the initialization is completed, changes the status of the real page to the first status.
  • the storage control device restricts the total virtual volume capacity, which is the total capacity of one or more virtual volumes associated with the pool, to be equal to or less than the capacity of the pool based on whether the pool has a real page with the third status. .
  • the storage control device may be a controller included in the storage device, or a device that relays communication between the storage device and the host (for example, a server device or an intelligent switch device).
  • Example 1 shows a configuration of a storage apparatus according to Embodiment 1 of the present invention.
  • the relationship between various storage areas in the storage apparatus 101 is shown.
  • FIG. 5A shows the control program 551.
  • FIG. 5B shows management information stored in the shared memory (SM) 309. Indicates the relationship between various information in the management information.
  • FIG. 7A shows the VOL management table 501.
  • FIG. 7B shows the mapping table 503.
  • FIG. 8A shows the free queue 505.
  • FIG. 8B shows the deletion queue 509.
  • FIG. 9A shows page information 701.
  • FIG. 9B shows the pool management table 504. The flow of processing when starting the control program 551 is shown.
  • FIG. 12A shows the VVOL list 1211.
  • FIG. 12B shows the pool list 1221.
  • the flow of VVOL association is shown.
  • the flow of a VVOL capacity check is shown.
  • the flow of zero writing check is shown.
  • the flow of VVOL association cancellation is shown.
  • the flow of zero writing processing is shown.
  • the flow of calculating the deletion capacity is shown.
  • a pool list 1901 is shown.
  • the flow of expansion of VVOL capacity is shown. A comparison is made between the difference between the number of real pages 5043 in the target pool and the number of zero-written pages in the target pool, and the sum of the total number of virtual pages 5047 in the target pool and the number of virtual pages for the expanded capacity.
  • FIG. 12A shows the VVOL list 1211.
  • FIG. 12B shows the pool list 1221.
  • the flow of VVOL association is shown.
  • the flow of zero writing check is shown.
  • the flow of VVOL association cancellation is shown.
  • the flow of zero writing processing is
  • FIG. 22A shows processing performed in Embodiment 2 of the present invention.
  • FIG. 22B shows processing performed in Embodiment 3 of the present invention.
  • the flow of the process performed in Example 4 of this invention is shown.
  • 10 shows a flow of zero writing processing according to Embodiment 5 of the present invention.
  • FIG. 25A shows an example of a situation before copying between VVOLs according to the sixth embodiment of the present invention.
  • FIG. 25B shows that copying between VVOLs is performed after the status of the real page assigned to the secondary VVOL is changed.
  • FIG. 25C shows a situation after the completion of inter-VVOL copy.
  • a tier management table 506 is shown.
  • xxx table or “xxx list”
  • various types of information may be described using the expression “xxx table” or “xxx list”, but the various types of information may be expressed using a data structure other than the table and the list.
  • the “xxx table” and “xxx list” can be referred to as “xxx information” to indicate that they are not dependent on the data structure.
  • numbers are used as identification information for various objects, but types of identification information other than numbers (for example, identifiers including alphabetic characters and codes) can also be used.
  • the process may be described using “program” as a subject.
  • the program is executed by a processor (for example, a CPU (Central Processing Unit)), so that a predetermined processing is appropriately performed.
  • a processor for example, a CPU (Central Processing Unit)
  • the subject of processing may be a processor.
  • the processing described with the program as the subject may be processing performed by the storage device or the storage control device.
  • the processor may include a hardware circuit that performs part or all of the processing performed by the processor.
  • the computer program may be installed on each computer from a program source.
  • the program source may be, for example, a program distribution server or a storage medium.
  • VOL a logical volume
  • VVOL a virtual logical volume
  • the target P having the number xx when expressed, it may be expressed as “P # xx”.
  • a VVOL with a VOL number of 01 may be expressed as “VVOL # 01”.
  • a virtual page and a real page have the same capacity (size), and therefore one real page is allocated to one virtual page.
  • the present invention is not limited to this, and a plurality of real pages may be assigned to one virtual page, or one real page may be assigned to a plurality of virtual pages.
  • the capacity (size) of the virtual page and the capacity of the real page are fixed, but may be variable.
  • FIG. 1 shows an outline according to Embodiment 1 of the present invention.
  • the storage device restricts the total capacity of the VVOL 111 that can be associated with the pool 113 to be equal to or less than the capacity of the pool 113.
  • the capacity of the pool # 01 is 100 GB (gigabytes).
  • the total capacity of one or more VVOLs associated with the pool 113 is referred to as “total VVOL capacity” for the pool 113.
  • the storage apparatus limits the total capacity of the VVOL 111 that can be associated with the pool 113 to be equal to or less than the capacity of the pool 113. At that time, the storage apparatus considers the status of the real pages constituting the pool 113. In this embodiment, the status of the real page is one of “free”, “allocated”, and “writing zero”.
  • Fig. 2 shows the status of the real page and the flow of the status transition.
  • Free means that a real page is not assigned to a virtual page, and the real page can be assigned to a virtual page.
  • the values of all the bits in the free real page are “0”. That is, a free real page is a real page that has been initialized (zero-written).
  • “Assigned” means that the real page has already been assigned to any virtual page, and therefore the real page cannot be assigned.
  • Zero writing means that the value of all bits in the real page should be “0” (for example, while the bit value “0” is being written from the beginning to the end of the real page). means. The real page being written zero is not allocated to the virtual page and cannot be allocated.
  • the flow of the status change of the real page is as follows, for example.
  • the storage apparatus allocates a free real page # 1 to the unallocated virtual page for writing to the unallocated virtual page.
  • the storage apparatus changes the status of the real page # 1 from “free” to “allocated”.
  • Data to be written is written to all or a part of the real page # 1.
  • the data to be written is 4-bit data, and all four bit values are “1”.
  • the storage apparatus changes the status of the real page # 1 from “allocated” to “writing zero”.
  • the transition is that a predetermined event corresponding to the fact that the data in the real page # 1 is unnecessary (for example, the association with the pool # 01 of the VVOL including the virtual page to which the real page # 1 is allocated is released) )).
  • the storage apparatus When the status of the real page # 1 is changed to “writing zero”, the storage apparatus writes zero to the real page # 1, thereby setting all the bit values in the real page # to “0”. Update. Specifically, the storage apparatus may write the bit value “0” in the entire area of the real page # 1, or may update only the bit value “1” in the real page # 1 to “0”. . (According to FIG. 2, “0” is being written to the real page # 1). The start timing of zero writing may be immediately after the status transitions to “writing zero”, or may be any timing after the status transits to “writing zero”.
  • the transition indicated by arrow 211 is also possible. That is, the storage apparatus searches for an “allocated” zero page regularly or irregularly. When the storage device finds the “allocated” zero page # 2, as indicated by the arrow 211, the status of the zero page # 2 is not changed from “allocated” to “zero writing”. Transition to “Free”. This is because the real page # 2 is already a zero page, and it is not necessary to perform zero writing.
  • the “unallocated virtual page” is a virtual page to which no real page is allocated.
  • a virtual page to which a real page is not allocated substantially for example, a predetermined page It may be a virtual page to which a predetermined real page in which data is written (for example, a predetermined zero page) is allocated.
  • the predetermined real page may be common to a plurality of unallocated virtual pages. In the case of writing to an unassigned virtual page, a free real page may be assigned to the virtual page instead of a predetermined real page.
  • the “free” real page and the “allocated” real page contribute to the VVOL 111. This is because a “free” real page can be assigned to an unassigned virtual page in the VVOL 111, and a “assigned” real page is data (data used by the host device) for the virtual page to which the real page is assigned. ) Is stored.
  • the storage apparatus restricts the total capacity of the VVOL 111 that can be associated with the pool 113 to be equal to or less than the capacity of the pool 113 based on whether the status of the real page in the pool 113 is “writing zero”.
  • FIG. 3 shows a configuration of the storage apparatus according to the first embodiment of the present invention.
  • One or more hosts 351 and the storage apparatus 101 are connected to the communication network 361.
  • the host 351 is a physical or virtual device (for example, a computer).
  • the host 351 transmits an access command having access destination information.
  • the access command is a write command or a read command.
  • the access destination information includes information indicating the access destination, for example, identification information associated with the VVOL 111 of the access destination (for example, LUN (Logical Unit Unit Number)) and an address belonging to the address range of the virtual page of the access destination (for example, LBA ( Logical Block Address)).
  • the storage apparatus 101 has a physical storage device group, a controller 131, and an SVP (Service Processor) 311.
  • SVP Service Processor
  • the physical storage device group is a set of a plurality of physical storage devices (hereinafter referred to as PDEV) 371 (for example, HDD (Hard Disk Disk Drive) or flash memory device (for example, SSD (Solid Disk State Drive)).
  • PDEV physical storage devices
  • HDD Hard Disk Disk Drive
  • flash memory device for example, SSD (Solid Disk State Drive)
  • RAID Redundant Array of Independent (or Inexpensive) Disks
  • the RAID group 375 is composed of two or more PDEVs 371, and stores data at a predetermined RAID level.
  • the pool 113 is based on the storage space of the RAID group 375.
  • the pool 113 is a set of one or more real volumes (substantial logical volumes based on one or more RAID groups 375), for example.
  • the real volume may be divided into two or more real pages 191.
  • the controller 131 includes a communication interface with the host 351, a communication interface with the PDEV 371, a memory, and a processor connected thereto.
  • the controller 131 includes a CHA 301, a DKA 303, a cache memory (hereinafter referred to as CM) 307, a shared memory (hereinafter referred to as SM) 309, and a switch device (hereinafter referred to as SW) 305.
  • the number of these elements is one or more.
  • the CHA 301 is a communication interface device with the host 351.
  • the CHA 301 has a port 302 and an MP (Micro Processor) 20.
  • the number of these elements is one or more.
  • the MP 20 processes a command from the host 351. For example, the MP 20 writes the write target data in the CM 307 in response to the write command received from the host 351 via the port 302.
  • the DKA 303 is a communication interface device with the PDEV 371.
  • the DKA 303 has one or more MP (Micro Processor) 30.
  • the MP 30 controls data input / output with respect to the PDEV 371. For example, the MP 30 writes the write target data stored in the CM 307 to the RAID group 375 based on the real page to which the data is written.
  • CM 307 is a memory shared by a plurality of MPs 20 and 30, and temporarily stores data input / output to / from the PDEV group.
  • SM 309 is a memory shared by a plurality of MPs 20 and 30, and stores management information.
  • CM 307 and SM 309 may be integrated instead of separate memories. That is, one memory may have an area used as a CM and an area used as an SM.
  • CHA301, DKA303, CM307, and SM309 are connected to SW305.
  • the SW 305 is, for example, a cross bus switch, and switches the connection between these elements.
  • the CHA 301, DKA 303, CM 307, and SM 309 may be connected to each other by a connection unit (for example, a bus) other than the SW 305.
  • the SVP 311 is one or more computers (management computers) used for maintenance or management of the storage apparatus 101, and is connected to the MPs 20 and 30 through, for example, a LAN (Local Area Network).
  • the SVP 311 may be outside the storage apparatus 101.
  • the SVP 311 may be configured with an input / output console (for example, an input device and a display device) and a control console (for example, a control board such as a motherboard). Both consoles may be in the storage apparatus 101, or the control console may be in the storage apparatus 101 and the input / output console may be in a location away from the storage apparatus 101.
  • FIG. 4 shows the relationship between various storage areas in the storage apparatus 101.
  • one or more RGs (RAID groups) 375, one or more pools 113, and one or more VVOLs 111 are managed from the lower level to the higher level.
  • One RG 375 is composed of the same type of PDEV.
  • the PDEV type is defined by, for example, performance.
  • the performance is, for example, the data access speed to the PDEV or the response time (the length of time from when the PDEV receives a command until it returns a response).
  • RG # 00 is composed of a plurality of SSDs
  • RG # 01 is composed of a plurality of HDD-SASs (Serial Attached SCSI)
  • RG # 02 is a plurality of HDD-SATAs (Serial ATA).
  • the capacities of a plurality of PDEVs constituting one RG are the same, for example.
  • the pool 113 is a set of real pages 231. Specifically, for example, the pool 113 is composed of one or more real volumes (RVOL) 205, and each RVOL 205 is composed of one or more real pages 231.
  • RVOL real volumes
  • the RVOL constituting the pool 113 is referred to as “pool VOL”.
  • Real pages 231 constituting one pool 113 are hierarchized. That is, a plurality of tiers 441 exist in one pool 113.
  • the tier 441 exists, for example, for each type of RVOL. For example, according to FIG. 4, since there are three types of RVOLs, the number of tiers 441 is also three. Therefore, one type of RVOL 205 corresponding to the tier belongs to one tier 441.
  • tier # 00 is a type of SSD, and an RVOL based on RG375 configured by SSD belongs to it.
  • Tier # 01 is a type of HDD-SAS, to which an RVOL based on RG375 configured by HDD-SAS belongs.
  • Tier # 03 is a type of HDD-SATA, to which an RVOL based on RG375 configured by HDD-SATA belongs. Note that the tier 441 is not necessarily provided strictly for each RVOL type, and a plurality of RVOLs 205 based on similar types of RGs may belong to the same tier 441.
  • the configuration of the pool 113 illustrated in FIG. 4 is an example, and the pool 113 may not have the multi-tier configuration as illustrated in FIG. That is, for example, the pool 113 may be configured by only the same type of pool VOL.
  • the controller 131 limits the total capacity of the VVOL 111 that can be associated with the pool 113 to be equal to or less than the capacity of the pool 113. Even when the VVOL total capacity is equal to or less than the capacity of the pool 113, it can be expected that the access load is distributed. This is because the pool 113 is a group of real pages based on a plurality of RGs. Therefore, even if accesses to one VVOL are concentrated, those accesses may be distributed to a plurality of real pages based on different RGs. Because it is expected.
  • control of writing or reading to a virtual page control of data relocation in the pool 113, control of allocation of the VVOL 111 to the pool 113, and control of capacity expansion of the VVOL 113 are performed. Is called.
  • These controls are performed, for example, when a control program (computer program) 551 shown in FIG. 5A is executed by a processor (for example, MP20).
  • the controller 131 is stored in a storage resource (for example, SM 309 or a memory (not shown) in the CHA 301) in the controller 131, read from the storage resource, and executed.
  • the process performed by executing the control program 551 is a process performed by the controller 131.
  • FIG. 5B shows management information stored in the SM 309.
  • a part of the management information may be stored in a memory (not shown) in the CHA 301 and / or a memory (not shown) in the DKA 303.
  • Management information includes, for example, a VOL management table 501, a mapping table 503, a pool management table 504, a tier management table 506, a free queue 505, a deletion queue 509, and page information 701.
  • the VOL management table 501 has information on all VOLs (logical volumes) that the storage apparatus 101 has.
  • the mapping table 503 exists for each VVOL.
  • the mapping table 503 represents the correspondence between virtual pages and real pages. Specifically, for example, in the mapping table 503, page information 701 of the real page is associated with the virtual page to which the real page is assigned.
  • the free queue 505 exists for each pool VOL.
  • the free queue 505 is a column of page information 701 corresponding to “free” real pages.
  • the deletion queue 509 exists for each pool 113.
  • the deletion queue 509 is a column of the mapping table 503 corresponding to the VVOL whose allocation to the pool 113 has been released.
  • the page information 701 exists for each real page.
  • the page information 701 includes information regarding the actual page.
  • the control program 551 identifies the actual page in the flow shown in FIG. (A)
  • the control program 551 specifies the mapping table 503 corresponding to the target VVOL based on the VOL management table 501.
  • the mapping table 503 specified in (A) is not associated with the deletion queue 509, and the page information 701 of the real page assigned to the target virtual page is associated with the table 503. If it is, the control program 551 identifies the page information 701.
  • the real page corresponding to the page information 701 is an “allocated” real page, specifically, a real page assigned to the target virtual page.
  • mapping table 503 specified in (A) When the mapping table 503 specified in (A) is not associated with the deletion queue 509 and the target virtual page is an unallocated virtual page, the control program 551 associates with the free queue 505.
  • the specified page information 701 is specified.
  • the real page corresponding to the page information 701 is a “free” real page.
  • the control program 551 identifies the page information 701 associated with the mapping table 503.
  • a real page corresponding to the page information 701 is a real page “writing zero”.
  • the “free” real page is called “free page”
  • the “zero-writing” real page is called “zero-written page”
  • the “allocated” real page is “allocated”. "Page”.
  • FIG. 7A shows the VOL management table 501.
  • the VOL management table 501 includes the following information for each VOL: (*) VOL number 5011 which is an identification number of VOL, (*) VOL type 5012 indicating the type of VOL, (*) An association flag 5013 indicating whether or not it is associated with the pool 113; (*) Capacity 5014 representing the capacity of VOL, (*) Pool number 5015 which is the identification number of the associated pool, (*) Pointer 5016 indicating the identification information of the table to be referred to, Have
  • VOL types include, for example, “virtual”, “pool”, and “normal”. “Virtual” means that the VOL is a VVOL. “Pool” means that the VOL is a pool VOL (a VOL not recognized by the host 351). “Normal” means that the VOL is not a pool VOL but an RVOL (real volume) recognized by the host.
  • association flag 5013 “ON” means that the VVOL 111 is associated with the pool 113, and “OFF” means that the VVOL 111 is not associated with the pool 113.
  • the association flag 5013 corresponding to a VOL other than the VVOL is an invalid value (for example, “NULL”).
  • the pointer 5016 corresponding to the VVOL 111 associated with the pool 113 is a valid value, for example, identification information of the mapping table 503 corresponding to the VVOL 111.
  • FIG. 7B shows the mapping table 503.
  • the mapping table 503 includes the following information for each virtual page included in the VVOL 111 corresponding to the table 503: (*) Virtual page number 5031 which is the identification number of the virtual page, (*) A pointer 5032 which is identification information of page information 701 corresponding to the real page assigned to the virtual page.
  • FIG. 8A shows the free queue 505.
  • the free queue 505 exists for each pool VOL.
  • the free queue 505 has, for example, a pointer that represents identification information of the first page information 701.
  • the page information 701 has a pointer (see FIG. 9A) that represents the identification information of the next page information 701. Thereby, the order of the page information 701 associated with the free queue 505 is known.
  • FIG. 8B shows the deletion queue 509.
  • the deletion queue 509 exists for each pool 113 as described above.
  • a mapping table 503 is associated with the deletion queue 509.
  • the deletion queue 509 has, for example, a pointer that represents the identification information of the top mapping table 503.
  • the pointer indicating the identification information of the next mapping table 503 is set in the mapping table 503. Thereby, the order of the mapping table 503 associated with the deletion queue 509 is known.
  • mapping table 503 is associated with page information 701 corresponding to the real page assigned to the VVOL 111 corresponding to the table 503.
  • the real page corresponding to the page information 701 associated with the mapping table 503 associated with the deletion queue 509 is a zero-written page.
  • FIG. 9A shows page information 701.
  • the page information 701 includes the following information about a real page corresponding to the page information 701 (hereinafter referred to as “target real page” in the description of FIG. 9A): (*) Next pointer 7011 which is identification information of the next page information 701 of the page information 701, (*) Pool VOL address indicating the location of the target real page (for example, an address including the VOL number of the pool VOL and the LBA in the pool VOL) 7012, (*) VVOL address indicating the location of the virtual page to which the target real page is allocated (for example, an address including the VOL number of the VVOL that includes the virtual page of the allocation destination and the LBA in the VVOL) 7013, (*) Status 7014 indicating the status of the target real page, Have The page information 701 may have a tier number to which the target real page belongs.
  • FIG. 9B shows the pool management table 504.
  • the pool management table 504 includes the following information for each pool 113: (*) Pool number 5041 which is an identification number of the pool 113, (*) Pool VOL number 5042 which is the number of pool VOLs constituting the pool 113, (*) Real page number 5043 which is the number of real pages constituting the pool 113, (*) The number of free pages 5044, which is the number of free pages among the real pages constituting the pool 113, (*) A threshold value 5045 that is a threshold value to be compared with the usage rate of the pool 113 (ratio of the number of allocated real pages to the total number of real pages constituting the pool 113).
  • VVOL number 5046 which is the number of VVOLs associated with the pool 113
  • Total number of virtual pages 5047 which is the number of virtual pages constituting one or more VVOLs associated with the pool 113
  • Have The table 504 may have a value indicating the capacity of the pool 113.
  • FIG. 26 shows a tier management table 506.
  • the tier management table 506 includes the following information for each tier for each pool: (*) Pool number 5061 which is the identification number of the pool having a tier, (*) Tier number 5062 which is the number of the tier, (*) PDEV type 5063, which is information indicating the type of PDEV that is the basis of the pool VOL belonging to the tier, (*) A page information pointer 5064 that is a pointer to page information corresponding to a real page belonging to the tier; Have From this table 506, page information 701 corresponding to a real page belonging to which tier of which pool can be specified.
  • control program 551 can perform the following processing.
  • the control program 551 receives a write command from the host 351.
  • the control program 551 identifies the write destination VVOL and the write destination virtual page based on the access destination information included in the received write command.
  • the control program 551 writes the data to be written in accordance with the write command to the CM 307 (the control program 551 may respond to the host 351 of the completion of writing at this stage).
  • the control program 551 Based on the mapping table 503 corresponding to the write destination VVOL specified in (a2), the control program 551 determines whether or not the write destination virtual page specified in (W2) is an unallocated virtual page. to decide.
  • control program 551 If the result of the determination in (a4) is affirmative, the control program 551 corresponds to the real page assigned to the write destination virtual page (page information 701 associated with the write destination virtual page). Write target data in the CM 307 to the actual page. (A6) If the result of the determination in (a4) is negative, the control program 551 identifies a free page from the free queue 505. Here, the control program 551 may specify a free page from the free queue 505 corresponding to the upper tier as much as possible. (A7) The control program 551 associates the free page specified in (a6) with the write destination virtual page.
  • the control program 551 writes the identification information of the page information 701 corresponding to the free page specified in (a6) as the pointer 5032 corresponding to the write destination virtual page in the mapping table 503. Further, the control program 551 removes the page information 701 corresponding to the identified free page from the free queue 505. Also, the control program 551 updates the page information 701 (for example, writes an invalid value (for example, “NULL”) as the next pointer 7011 and updates the status 7014 from “free” to “allocated”). (A8) The control program 551 writes the write target data in the CM 307 to the page specified in the above (a6) (the control program 551 may respond to the host 351 of completion of writing at this stage).
  • the control program 551 may update the access load information and / or the last access time corresponding to the write destination virtual page in (a5) or (a8).
  • the access load information is a value representing the load of access to the virtual page (for example, access frequency (number of accesses per unit time) or data transfer rate (amount of data input / output per unit time)).
  • the access load information is information that exists for each virtual page, and may be included in the mapping table 503, for example.
  • the control program 551 receives a read command from the host 351.
  • the control program 551 identifies the read source VVOL and the read source virtual page based on the access destination information included in the read command.
  • the control program 551 determines whether or not the data to be read remains in the CM 307.
  • the control program 551 transmits the read target data in the CM 307 to the host 351. In this case, the control program 551 may or may not update the access load information and / or the last access time corresponding to the read source virtual page.
  • control program 551 determines whether the read-source virtual page identified in (b2) is an unallocated virtual page based on the mapping table 503. Judging.
  • the control program 551 transmits predetermined data (for example, an error) to the host 351.
  • the control program 551 reads data from the real page assigned to the read source virtual page and writes the data to the CM 307. Then, the control program 551 transmits the data in the CM 307 to the host 351.
  • the control program 551 may update the access load information and / or the last access time corresponding to the read source virtual page in the above (b6).
  • the control program 551 determines whether to execute the rearrangement process based on the access load or the last access time corresponding to the allocated virtual page (virtual page to which the real page is allocated).
  • the control program 551 determines that an access load corresponding to a certain virtual page (hereinafter referred to as “target virtual page” in this paragraph) corresponds to a tier having a real page assigned to the target virtual page. If it belongs to the load range, it is determined not to perform the rearrangement process, and if not, it is determined to perform the rearrangement process. In the rearrangement process, the control program 551 migrates the data in the real page assigned to the target virtual page to a free page in the tier corresponding to the access load range to which the access load of the target page belongs. Then, the control program 551 assigns a migration-destination real page to the target virtual page instead of the migration-source real page.
  • target virtual page an access load corresponding to a certain virtual page
  • control program 551 determines to perform the rearrangement process when a predetermined time has elapsed from the last access time corresponding to a certain virtual page, and determines not to perform the rearrangement process otherwise. To do. In the rearrangement process, the control program 551 migrates the data in the real page assigned to the target virtual page to a free page in a tier lower than the tier having the real page. Then, the control program 551 assigns a migration-destination real page to the target virtual page instead of the migration-source real page.
  • FIG. 10 shows the flow of processing when the control program 551 is activated.
  • the control program 551 determines whether or not it is started for the first time after the control program is updated (for example, after version upgrade) (S1001). Specifically, for example, when the activated state is not set, the control program 551 determines that it is activated for the first time. When the activated state is set, the control program 551 determines that it is not the first activated state.
  • control program 551 executes the control program before update (a program that does not have a function of limiting the VVOL total capacity to the capacity of the pool 113 or less). Information necessary for limiting the VVOL total capacity to be equal to or less than the capacity of the pool 113 is prepared based on the information at the time when the data was stored. Specifically, the control program 551 performs VVOL total capacity calculation (see FIG. 11) (S1002).
  • control program 551 sets, for example, already started (S1003) and ends.
  • the determination result in S1001 is negative.
  • FIG. 11 shows the flow of calculating the VVOL total capacity.
  • the control program 551 performs S1101 for each VVOL (loop (A)).
  • loop (A) the processing in the loop (A) will be described by taking one VVOL (referred to as “target VVOL” in the description of FIG. 11) as an example.
  • control program 551 determines whether the target VVOL is associated with any pool 113 based on the VOL management table 501.
  • the control program 551 based on the capacity of the target VVOL, associates the target VVOL (referred to as “target pool” in the description of FIG. 11). For 113, the VVOL total capacity is updated. Specifically, the control program 551 performs the following processing. (S1102) The control program 551 acquires the capacity of the target VVOL from the VVOL capacity 5014 corresponding to the target VVOL. (S1103) The control program 551 acquires the identification number (pool number) of the pool associated with the target VVOL from the pool number 5015 corresponding to the target VVOL.
  • the control program 551 converts the capacity of the target VVOL acquired in S1102 into the number of virtual pages. A value obtained by dividing the capacity of the target VVOL by the capacity of the virtual page is the number of virtual pages of the target VVOL. (S1105) The control program 551 adds the number of virtual pages obtained in S1104 to the total number of virtual pages 5047 corresponding to the target pool (the pool number obtained in S1103).
  • the virtual page total number 5047 is created (updated) by the updated control program 551.
  • control program 551 does not perform S1102 to S1105 for the target VVOL.
  • VVOL total capacity calculation is completion of preparation of information necessary for limiting the VVOL total capacity to the capacity of the pool 113 or less.
  • the control program 551 may determine whether or not the updated virtual page total number 5047 is less than or equal to the actual page number 5043 (capacity of the target pool) of the target pool every time S1105 is performed. If the result of the determination is negative, the control program 551 may output a warning (for example, a warning may be output to the SVP 311).
  • the control program 551 selects one VVOL (referred to as “selected VVOL” in the description) associated with the first pool.
  • the control program 551 searches for a second pool in which the total number of virtual pages 5047 is equal to or less than the number of real pages 5043 even if the number of virtual pages of the selected VVOL is added to the total number of virtual pages 5047. If no such second pool is found, the VVOL migration process ends.
  • the control program 551 migrates the data included in the selected VVOL from the first pool to the found second pool in real page units.
  • the control program 551 releases the association of the selected VVOL with the first pool and associates the selected VVOL with the second pool.
  • the control program 551 subtracts the number of virtual pages of the selected VVOL from the total number of virtual pages 5047 in the first pool, and subtracts 1 from the number of VVOLs 5046 in the first pool.
  • the control program 551 changes the pool number 5015 corresponding to the selected VVOL from the identification number of the first pool to the identification number of the second pool.
  • the control program 551 adds the number of virtual pages of the selected VVOL to the total number of virtual pages 5047 in the second pool, and adds 1 to the number of VVOLs 5046 in the second pool.
  • the administrator uses the SVP 311 to associate an administrator-desired VVOL among one or more VVOLs not associated with the pool 113 with a desired pool 113 among the one or more pools 113 or cancel the association. Can be.
  • the SVP 311 receives information stored in the VOL management table 501 from the control program 551, and displays the VVOL list 1211 shown in FIG. 12A based on the information.
  • the VVOL list 1211 has information (VVOL number (VVOL VOL number), association flag, capacity, pool number) for each VVOL.
  • the SVP 311 accepts designation of a VVOL desired by the administrator. If the VVOL desired by the administrator is a VVOL with the association flag “OFF”, the administrator is inquired whether to perform association. If the VVOL desired by the administrator is a VVOL with the association flag “ON”, the administrator is inquired whether to cancel the association.
  • the SVP 311 When the SVP 311 receives an association from the administrator regarding the VVOL with the association flag “OFF”, the SVP 311 receives the information included in the pool management table 504 from the control program 551, and based on the information, the SVP 311 performs FIG.
  • the pool list 1221 is calculated based on information for each pool (pool number, pool capacity (for example, a value calculated based on the actual page number 5043), and used capacity (for example, the actual page number 5043 and the free page number 5044). Value), threshold).
  • the SVP 311 accepts designation of a pool desired by the administrator.
  • FIG. 13 shows the flow of VVOL association. This process is performed, for example, when the control program 551 is instructed by the administrator to associate a VVOL through the VVOL list 1211 (see FIG. 12A) and the pool list 1221 (see FIG. 12B).
  • the control program 551 acquires the identification number (pool number) of the pool (referred to as “target pool” in the description of FIGS. 13 and 14) designated by the administrator from the SVP 311 (S1301).
  • control program 551 acquires the identification number (VVOL number) of the VVOL (referred to as “target VVOL” in the description of FIGS. 13 and 14) designated by the administrator from the SVP 311 and corresponds to the VVOL number.
  • the capacity of the target VVOL is acquired from the capacity 5014 (S1302). Then, the control program 551 converts the VVOL capacity acquired in S1302 into the number of virtual pages (S1303).
  • control program 551 acquires the total number of virtual pages from the total number of virtual pages 5047 (total number of virtual pages in the target pool 5047) corresponding to the pool number acquired in S1301 (S1304).
  • the control program 551 checks the VVOL capacity based on the number of virtual pages after conversion in S1303 (the number of virtual pages in the target VVOL) and the total number of virtual pages acquired in S1304 (the total number of virtual pages in the target pool) (FIG. 14). (Refer to step S1305).
  • the control program 551 associates the target VVOL with the target pool (S1307). Specifically, the following processing is performed. (*) The control program 551 adds the number of virtual pages of the target VVOL to the total number of virtual pages 5047 of the target pool. (*) The control program 551 adds 1 to the VVOL number 5046 of the target pool. (*) The control program 551 updates the target VVOL pool number 5015 to the target pool identification number.
  • FIG. 14 shows the flow of the VVOL capacity check.
  • the control program 551 determines whether option # 1 is ON (S1401). “Option # 1” is a mode in which the total VVOL capacity is limited to the capacity of the pool 113 or less for all the pools 113 existing in the storage apparatus 101.
  • the control program 551 determines whether the sum of the number of virtual pages in the target VVOL and the total number of virtual pages in the target pool is equal to or less than the number of real pages 5043 in the target pool (S1404). (*) If the result of the determination in S1404 is negative, it means that the sum of the number of virtual pages in the target VVOL and the total number of virtual pages in the target pool exceeds the number of real pages 5043 in the target pool. In this case, the control program 551 outputs a return value indicating “abnormal” (S1407). As a result, as shown in FIG.
  • the target pool has zero-written pages. This is because there is a possibility that there are not more free pages than the number of virtual pages of the target VVOL.
  • control program 551 determines whether option # 2 is ON (S1402). “Option # 2” is a mode in which the VVOL total capacity is limited to the capacity of the pool 113 or less only for the pool 113 desired by the administrator among the pools 113 existing in the storage apparatus 101.
  • control program 551 If the result of the determination in S1402 is negative (S1402: NO), the control program 551 outputs a return value that means “normal” (S1408). This is because both option # 1 and option # 2 are OFF, and therefore it is not necessary to limit the VVOL total capacity below the target pool capacity for the target pool.
  • the control program 551 determines whether the target pool is a pool that needs to limit the VVOL total capacity to the pool capacity or less (S1403).
  • the target pool threshold 5045 is a valid value or greater than or equal to the first value
  • the result of the determination in S1403 is affirmative
  • the target pool threshold 5045 is an invalid value (eg, “ NULL ”) or less than the second value (the second value is equal to or less than the first value)
  • the result of the determination in S1403 is negative.
  • control program 551 When the result of the determination in S1403 is negative (S1403: NO), the control program 551 outputs a return value that means “normal” (S1408). This is because it is not necessary to limit the total VVOL capacity to the target pool capacity or less for the target pool.
  • control program 551 performs S1404 and subsequent steps. This is because it is necessary to limit the VVOL total capacity below the capacity of the target pool for the target pool.
  • option # 1 when both option # 1 and option # 2 are ON, option # 1 is given priority, but option # 2 may be given priority instead.
  • FIG. 15 shows the flow of zero writing check.
  • the control program 551 acquires the identification number (pool number) of the target pool (S1501).
  • the “target pool” referred to here may be the target pool in the description of FIGS. 13 and 14, or may be the pool associated with the capacity expansion target VVOL in the description of FIG. 20.
  • the control program 551 determines whether the mapping table 503 is associated with the deletion queue (referred to as “target deletion queue” in the description of FIG. 15) 509 corresponding to the target pool (S1502).
  • the control program 551 performs S1503. Specifically, the following processing is performed.
  • the control program 551 selects one mapping table (for example, the first mapping table) 503 associated with the target deletion queue 509.
  • the control program 551 adds the number of page information 701 associated with the mapping table 503 selected in (e1) to the number of zero-written pages.
  • the control program 551 removes the mapping table 503 selected in the latest (e1) from the target deletion queue 509.
  • the control program 551 removes the mapping table 503 from the target deletion queue 509 in S1503, and then performs S1502 again.
  • control program 551 determines whether or not the number of zero-written pages is zero (S1504).
  • control program 551 If the result of the determination in S1504 is affirmative (S1504: YES), the control program 551 outputs a determination result that there is no zero-written page (S1505).
  • control program 551 If the determination result in S1504 is negative (S1504: NO), the control program 551 outputs a determination result that there is a zero-written page (S1506).
  • FIG. 16 shows the flow of releasing the VVOL association. This process is performed, for example, when the control program 551 is instructed by the administrator to cancel the association of the VVOL through the VVOL list 1211 (see FIG. 12A).
  • the control program 551 acquires the VOL number (VVOL number) of the VVOL designated by the administrator (referred to as “target VVOL” in the description of FIG. 16) (S1601).
  • the control program 551 identifies a row in the VOL management table 501 having the VVOL number acquired in S1601 (S1602).
  • the control program 551 specifies the pointer 5016 in the line (S1603).
  • the control program 551 clears the specified pointer 5016 (S1604). For example, the control program 551 updates the pointer 5016 to an invalid value (for example, “NULL”).
  • the control program 551 associates the mapping table (mapping table corresponding to the target VVOL) 503 indicated by the pointer 5016 before clearing with the deletion queue 509 corresponding to the pool with which the target VVOL is associated (S1605).
  • the control program 551 performs zero write processing for each pool.
  • the control program 551 transfers the real page associated with the deletion queue 509 corresponding to the pool (more precisely, the page information 701 associated with the mapping table 503 associated with the deletion queue 509).
  • the bit value “0” is written in the corresponding real page.
  • the start timing of the zero writing process may be an arbitrary timing after the status of the real page becomes “zero writing”. Specifically, for example, the following can be considered. (*) When the control program 551 changes the status of the real page to “zero writing”, zero writing is performed on the real page.
  • the control program 551 determines whether or not there is a real page associated with the deletion queue 509 periodically or indefinitely, and if the result of the determination is affirmative, Write zero. (*) When the control program 551 writes to the virtual page in the VVOL and there is no free page in the pool associated with the VVOL, the control program 551 writes zero to the zero-written real page in the pool ( A real page that has been zero-written can be assigned as a free page to the virtual page of the write destination).
  • FIG. 17 shows the flow of zero writing process.
  • the control program 551 acquires the identification number (pool number) of the target pool for zero write processing (S1701).
  • the control program 551 has the information represented by the pointer held by the deletion queue (referred to as “target deletion queue” in the description of FIG. 17) 509 corresponding to the acquired pool number, or the pointer held by the mapping table 503 in the latest S1704. Information to represent is acquired (S1702).
  • control program 551 ends this process. This is because the mapping table 503 is not associated with the target deletion queue.
  • the control program 551 indicates that the pointer 5032 is page information from the first virtual page of the VVOL corresponding to the mapping table 503 to the last virtual page. The following processing is performed for each virtual page representing the identification information 701.
  • the control program 551 acquires the page information 701 based on the virtual page pointer 5032.
  • the control program 551 writes one or more bit values “0” so that the values of all the bits in the actual page corresponding to the acquired page information 701 become “0”.
  • S1706 The control program 551 waits for the sleep time after performing S1705.
  • control program 551 If the control program 551 has not checked the final virtual page (S1707: NO), the control program 551 performs S1704 for another virtual page associated with the page information 701, and has checked the final virtual page. If (S1707: YES), S1702 is performed.
  • the speed of the zero writing process can be adjusted by adjusting the length of the sleep time.
  • the control program 551 normally sets the sleep time as the first time length. Thereafter, if the number of free pages in the pool is less than or equal to a predetermined value (the predetermined value is an integer greater than or equal to 0), the control program 551 sets the sleep time corresponding to the pool to the second shorter than the first time length. Change to the length of time.
  • the control program 551 can calculate the deletion capacity for each pool and display the calculated deletion capacity on the SVP 311.
  • “Delete capacity” is the product of the number of zero-written pages and the capacity of actual pages.
  • FIG. 18 shows the flow of calculating the deleted capacity.
  • the control program 551 performs S1801 and S1802 for each deletion queue 509 (loop (A)), and performs S1801 for each mapping table associated with the deletion queue 509 (loop (B)).
  • the control program 551 grasps the number of page information 701 associated with the mapping table 503 associated with the deletion queue 509, and adds the number to the number of zero-written pages.
  • the control program 551 converts the number of zero-written pages corresponding to one deletion queue 509 (one pool) into a deletion capacity.
  • the control program 551 displays the deleted capacity for each pool in the pool list 1901 as shown in FIG. 19, for example (S1803).
  • FIG. 20 shows the flow of VVOL capacity expansion.
  • the control program 551 can expand the capacity of the VVOL desired by the administrator (referred to as “target VVOL” in the description of FIG. 20) in response to the VVOL expansion request from the SVP 311.
  • the VVOL expansion request includes, for example, information indicating the identification number of the target VVOL and the capacity (extended capacity) to be added to the capacity of the target VVOL.
  • processing similar to S1401 to S1406 in FIG. 14 is performed (S2001 to S2006).
  • the control program 551 can expand the capacity of the target VVOL. Whether or not (S2007). Specifically, the control program 551 determines whether or not the difference between the actual number of pages in the target pool and the number of zero-written pages is equal to or greater than the total number of virtual pages after capacity expansion. More specifically, the control program 551 determines whether or not the following value (P) is equal to or greater than the following value (Q) (see FIG. 21).
  • (P) A value obtained by subtracting the number of zero-written pages of the target pool (the total number of page information 701 associated with the deletion queue 509 corresponding to the target pool) from the actual number of pages 5043 of the target pool
  • (Q) A value obtained by adding the number of virtual pages for the expanded capacity (the number of virtual pages to be increased) to the total number of virtual pages 5047 in the target pool.
  • control program 551 does not expand the capacity of the target VVOL (S2008). For example, the control program 551 notifies the SVP 311 of an error.
  • control program 551 expands the capacity of the target VVOL in accordance with the above-mentioned VVOL expansion request (S2009).
  • control program 551 may perform S2008 without performing the determination in S2007.
  • a real page assigned to a VVOL whose association has been released from the pool eventually becomes a zero-written page.
  • VVOL association is not executed (cancelled).
  • VVOL association is not executed (cancelled).
  • the total capacity of the VVOL after capacity expansion is equal to the actual capacity of the pool (the capacity of the pool and the total capacity of one or more zero-written pages.
  • the VVOL capacity expansion is not executed (cancelled).
  • the capacity of the VVOL is expanded, it is possible to prevent a free page from being insufficient in the pool from being allocated to a write destination unallocated virtual page.
  • Example 2 of the present invention will be described. At that time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified.
  • the control program 551 determines that the VVOL total capacity after VVOL association is the real capacity ( If it does not exceed the difference between the pool capacity and the total capacity of one or more zero-written pages, the VVOL is associated with the pool.
  • the control program 551 determines whether or not the value of the following (X) exceeds the value of the following (Y) (S2201). .
  • (X) The sum of the total number of virtual pages 5047 in the target pool and the number of virtual pages in the target VVOL (association target VVOL),
  • (Y) A value obtained by subtracting the number of pages written to zero in the target pool (the total number of page information 701 associated with the deletion queue 509 corresponding to the target pool) from the actual number of pages 5043 in the target pool.
  • control program 551 If the result of the determination in S2201 is affirmative (S2201: YES), the control program 551 outputs a return value that means “abnormal” (S1407).
  • control program 551 If the result of the determination in S2201 is negative (S2201: NO), the control program 551 outputs a return value that means “normal” (S1408).
  • the second embodiment it is possible to prevent a free page to be allocated to an unallocated virtual page as a write destination from being insufficient in the pool, and to increase the possibility that the VVOL can be associated with the pool. be able to.
  • the control program 551 does not execute (cancel) the VVOL total capacity update (association of VVOL or capacity expansion of VVOL) in the case of (k) below.
  • S1408 output of a return value indicating “normal”) or S2009 (VVOL capacity expansion) is performed.
  • the updated VVOL total capacity (VVOL total capacity after associating VVOL or VVOL total capacity after VVOL capacity expansion) is less than or equal to the capacity of the pool, and the page has zero-written pages, or The updated VVOL total capacity exceeds the actual capacity of the pool (the difference between the pool capacity and the total capacity of one or more zero-written pages).
  • step S2211 the control program 551 performs the following (a) or (b).
  • the control program 551 associates the target VVOL (association target VVOL or VVOL whose capacity is expanded) with the first pool (VVOL association destination pool or the VVOL whose capacity is expanded). Associated with the second pool.
  • the second pool is a pool that satisfies the following conditions (v) and (w).
  • V The updated VVOL total capacity (the sum of the VVOL total capacity of the pool and the capacity of the VVOL to be associated or the capacity to be expanded) is equal to or less than the capacity of the pool.
  • W There is no zero-written page, or the updated VVOL total capacity is less than or equal to the real capacity of the pool (the difference between the pool capacity and the total capacity of one or more zero-written pages).
  • VVOL association or VVOL capacity expansion is achieved while preventing a free page to be allocated to a write destination unallocated virtual page from being insufficient in the pool.
  • the possibility of being able to perform can be increased.
  • control program 551 does not execute (cancel) the update of the VVOL total capacity (association of VVOL or capacity expansion of VVOL) even in the case (k) described in the third embodiment. Rather than performing S2301 in FIG. 23, S1408 (output of a return value indicating “normal”) or S2009 (VVOL capacity expansion) is performed.
  • control program 551 waits until the zero write processing is completed, and the pool in which the total capacity of the VVOL is updated (the pool to which the VVOL is associated or the pool to which the capacity is expanded is associated, Hereinafter, the zero writing process (refer to FIG. 17) for “target pool” in the description of the fourth embodiment is performed in preference to the zero writing process for other pools.
  • the control program 551 may minimize the sleep time in the zero writing process for the target pool.
  • VVOL association or VVOL capacity expansion is achieved while preventing a free page to be allocated to a write destination unallocated virtual page from being insufficient in the pool. It is possible to increase the possibility that it can be performed quickly.
  • the control program 551 in the zero writing process for the pool, preferentially performs zero writing (writing of the bit value “0”) to the zero writing page in the higher tier. Specifically, in this embodiment, the control program 551 performs the zero writing process shown in FIG. 24 instead of the zero writing process shown in FIG.
  • control program 551 selects the highest tier from among the target pools for zero write processing (referred to as “target pool” in the description of FIG. 25) (S2401).
  • the control program 551 determines whether there is a zero-written page in the selected tier (S2402). Specifically, for example, the control program 551 identifies page information 701 belonging to the selected tier based on the tier management table 506, and for each identified page information 701, an actual page corresponding to the page information 701 is found. It is determined whether the page is a zero-written page.
  • control program 551 updates the values of all bits in all zero-written pages in the selected tier to “0” (S2403).
  • S2403 After S2403 or when the result of the determination in S2402 is negative (S2402: NO), if there is an unselected tier in the target pool (S2404: NO), the control program 551 follows the recently selected tier. A higher tier is selected (S2404), and S2402 is performed. On the other hand, if there is no unselected tier in the target pool, that is, if the lowest tier has already been selected (S2404: YES), the control program 551 ends the zero write processing for the target pool.
  • the fifth embodiment it is possible to increase the number of free pages preferentially from the upper tier (that is, the tier with high performance). This is particularly effective when, for example, the initial allocation tier (the tier that is the source of a real page that is initially allocated to an unselected virtual page) is the highest tier.
  • control program 551 instead of preferentially writing zeros in higher tiers, instead of writing zero pages in the initial allocation tier, zero write pages in other tiers.
  • the zero writing may be performed with higher priority than the above.
  • control program 551 copies (replicates or migrates) data from the primary VVOL (hereinafter referred to as PVOL) to the secondary VVOL (hereinafter referred to as SVOL).
  • PVOL primary VVOL
  • SVOL secondary VVOL
  • the control program 551 is assigned to the SVOL.
  • a real page may be a free page. This is to eliminate the possibility of a shortage of free pages from the pool with which the SVOL is associated.
  • Example 6 will be described in detail with reference to FIGS. 25A to 25C.
  • the PVOL 111P is associated with the pool 113P
  • the SVOL 111S is associated with the pool 113S.
  • Pools 113P and 113S are different pools. This is because the data is not lost even if a failure occurs in the RG (RAID group) storing the data in the PVOL 111P.
  • the capacity of SVOL 111S is equal to or greater than the capacity of PVOL 111P.
  • the pool 113S is not a target pool for limiting the VVOL total capacity
  • the free pages are insufficient in the pool 113S.
  • a new real page cannot be allocated to the SVOL 111S.
  • the control program 551 may make all real pages allocated to the SVOL 113S free pages before copying all the data in the PVOL 111P to the SVOL 113S. Specifically, for example, the control program 551 performs the following processes (f1) to (f4). (F1) Based on the mapping table 503 corresponding to the PVOL 111P, the mapping table 503 corresponding to the SVOL 111S, and the pool management table 504, the control program 551 has more free pages than the number of real pages allocated to the PVOL 111P. It is determined whether or not it is in the pool 113S.
  • the control program 551 waits for copying of data from the PVOL 111P to the SVOL 111S until at least as many free pages as the number of real pages allocated to the PVOL 111P are created in the pool 113S.
  • the control program 551 changes the zero-written page to a free page by writing zero to the zero-written page in the pool 113S. That is, the control program 551 increases free pages in the pool 113S.
  • the control program 551 may minimize the sleep time (the length of time from zero writing to a zero-written page to the next zero writing to a zero-written page).
  • the same number of real pages as the number of real pages allocated to the PVOL 111P is allocated to the SVOL 111S from the pool 113S. If the data copy from the PVOL 111P to the SVOL 111S is migration, the control program 551 may change all the real pages assigned to the PVOL 111P to zero-written pages.
  • the compared capacity is the capacity expressed by the number of pages, but instead, the capacity expressed in other types of units such as megabytes or gigabytes. But it ’s okay.
  • the configuration of the controller 131 is not limited to the configuration shown in FIG.
  • a module (processor module) other than CHA and DKA may have MP.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 実領域のステータスとして、(1)初期化済みであり仮想領域に割当て可能であることを意味する第1ステータス、(2)仮想領域に割り当てられていることを意味する第2ステータス、及び、(3)仮想領域に割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがある。記憶制御装置は、プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、第3ステータスの実ページをプールが有するか否かを基に、そのプールの容量以下に制限する。

Description

プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置
 本発明は、Thin Provisioningに従う記憶制御に関する。
 Thin Provisioning(Dynamic Provisioningとも呼ばれる)が適用されたストレージ装置が知られている。そのストレージ装置は、一般に、複数の仮想ページで構成された仮想的な論理ボリューム(以下、仮想ボリューム)を提供し、複数の実ページで構成されたプールを有する。ストレージ装置は、未割当ての仮想ページに対するデータの書込みの場合に、書込み先の仮想ページに実ページをプールから割当て、割り当てた実ページに、書込み対象のデータを書き込む。仮想ページは、仮想的な記憶領域であり、実ページは、実体的な記憶領域である。
 この種のストレージ装置に関する技術として、例えば、特許文献1及び2に開示の技術が知られている。
 特許文献1によれば、実ページの数がゼロであるならば、物理的な記憶デバイスが追加され、その物理的な記憶デバイスを基に論理的なディスクが新たに生成される。その論理的なディスクが分割されることにより、割当て可能な実ページが新たに生成される。
 特許文献2によれば、ストレージ装置は、ホストから書込みコマンドを受信した場合に、割当て可能な実ページが無い場合、failがホストに返される。つまり、書込みの失敗となる。
米国特許第7032093号明細書 米国特許第6823442号明細書
 仮想ボリューム(VVOL)の容量は、プールの容量と無関係に決定される。一般に、1以上の仮想ボリュームの総容量は、1以上のプールの総容量よりも大きい。
 そして、未割当ての仮想ページに対する書込みの際に、割当て可能な実ページ(フリーの実ページ)がプールに無ければ、書込みの失敗となる。
 それを回避するための方法として、プール内のフリーの実ページの数を監視し、その数が所定数未満になった場合に、プールの容量を拡張する方法が考えられる。
 しかし、プールの容量の拡張が間に合わないケースがあり得る。そのケースとしては、フリーの実ページの数が所定数未満になった直後に未割当ての仮想ページに対する書込みが頻繁に行われるようなケースが考えられる。プールの容量の拡張が間に合わない場合には、書込みの失敗を回避することはできないと考えられる。
 そこで、本発明の目的は、割当て可能な実ページが不足しないようにすることにある。
 実ページのステータスとして、(1)初期化済みであり仮想ページに割当て可能であることを意味する第1ステータス、(2)仮想ページに割り当てられていることを意味する第2ステータス、及び、(3)仮想ページに割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがある。
 記憶制御装置は、ホスト(例えば、物理的又は仮想的な計算機)から仮想ボリューム内の未割当ての仮想ページに対するライトコマンドを受信し、その仮想ボリュームが関連付けられているプールから、第1ステータスの実ページを割り当て、その実ページのステータスを第2のステータスに変更する。
 また、記憶制御装置は、仮想ページに割り当てられている実ページのステータスを、或るタイミングで、第3ステータスに変更する。
 また、記憶制御装置は、第3ステータスの実ページを初期化し、その初期化が終了した場合に、その実ページのステータスを、第1ステータスに変更する。
 記憶制御装置は、プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、第3ステータスの実ページをプールが有するか否かを基に、そのプールの容量以下に制限する。
 記憶制御装置は、ストレージ装置が有するコントローラであっても良いし、ストレージ装置とホストとの間の通信を中継する装置(例えば、サーバ装置、或いは、インテリジェントなスイッチ装置)であっても良い。
本発明の実施例1に係る概要を示す。 実ページのステータス及びそのステータスの遷移の流れを示す。 本発明の実施例1に係るストレージ装置の構成を示す。 ストレージ装置101における各種記憶領域の関係を示す。 図5Aは、制御プログラム551を示す。図5Bは、共有メモリ(SM)309が記憶する管理情報を示す。 管理情報内の各種情報の関係を示す。 図7Aは、VOL管理テーブル501を示す。図7Bは、マッピングテーブル503を示す。 図8Aは、フリーキュー505を示す。図8Bは、削除キュー509を示す。 図9Aは、ページ情報701を示す。図9Bは、プール管理テーブル504を示す。 制御プログラム551の起動時の処理の流れを示す。 VVOL総容量算出の流れを示す。 図12Aは、VVOL一覧1211を示す。図12Bは、プール一覧1221を示す。 VVOL関連付けの流れを示す。 VVOL容量チェックの流れを示す。 ゼロ書きチェックの流れを示す。 VVOL関連付け解除の流れを示す。 ゼロ書き処理の流れを示す。 削除容量の算出の流れを示す。 プール一覧1901を示す。 VVOL容量の拡張の流れを示す。 対象プールの実ページ数5043と対象プールのゼロ書きページ数との差と、対象プールの仮想ページ総数5047と拡張容量分の仮想ページ数との和との比較を示す。 図22Aは、本発明の実施例2で行われる処理を示す。図22Bは、本発明の実施例3で行われる処理を示す。 本発明の実施例4で行われる処理の流れを示す。 本発明の実施例5に係るゼロ書き処理の流れを示す。 図25Aは、本発明の実施例6に係るVVOL間コピーの前の状況の一例を示す。図25Bは、セカンダリのVVOLに割り当てられている実ページのステータスを変更した後にVVOL間コピーを行うことを示す。図25Cは、VVOL間コピー完了後の状況を示す。 ティア管理テーブル506を示す。
 以下、図面を参照して、本発明の幾つかの実施例を説明する。
 なお、以下の説明では、「xxxテーブル」或いは「xxxリスト」の表現にて各種情報を説明することがあるが、各種情報は、テーブル及びリスト以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」及び「xxxリスト」を「xxx情報」と呼ぶことができる。
 また、以下の説明では、種々の対象の識別情報として、番号が使用されるが、番号以外種類の識別情報(例えば、英字や符号を含んだ識別子)も採用可能である。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェース装置(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、ストレージ装置或いは記憶制御装置が行う処理としても良い。また、プロセッサは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
 また、以下の説明では、論理ボリュームを「VOL」と記載し、仮想的な論理ボリュームを「VVOL」と記載することがある。
 また、以下の説明では、番号がxxである対象Pを表す場合、「P#xx」と表現することがある。例えば、VOL番号が01のVVOLを、「VVOL#01」と表現することがある。
 また、以下の説明では、仮想ページと実ページは、同じ容量(サイズ)であり、それ故、1個の仮想ページに1個の実ページが割り当てられる。しかし、それに限らず、1個の仮想ページに複数の実ページが割り当てられても良いし、複数の仮想ページに1個の実ページが割り当てられても良い。
 また、以下の説明では、仮想ページの容量(サイズ)と実ページの容量は、固定であるが、可変であっても良い。
 図1は、本発明の実施例1に係る概要を示す。
 ストレージ装置が、プール113に関連付け可能なVVOL111の総容量を、プール113の容量以下に制限する。以下、幾つかの例を説明する。なお、図1の説明において、プール#01の容量は、100GB(ギガバイト)であるとする。また、以下の説明では、プール113に関連付けられている1以上のVVOLの総容量を、そのプール113について、「VVOL総容量」と言う。
 (A)管理者が、ストレージ装置に、50GBのVVOL#01をプール#01に関連付けることを要求したとする。この場合、ストレージ装置は、その要求に応答して、VVOL#01をプール#01に関連付ける。なぜなら、VVOL#01の容量(50GB)は、プール#01の容量(100GB)以下のためである。
 (B)(A)の次に、管理者が、ストレージ装置に、40GBのVVOL#02をプール#01に関連付けることを要求したとする。この場合、ストレージ装置は、その要求に応答して、VVOL#02もプール#01に関連付ける。なぜなら、VVOL総容量(90GB(50GB+40GB))は、プール#01の容量(100GB)以下のためである。
 (C)(B)の次に、管理者が、ストレージ装置に、30GBのVVOL#03をプール#01に関連付けることを要求したとする。しかし、この場合、ストレージ装置は、その要求を断る(すなわち、VVOL#03をプール#01に関連付けない)。なぜなら、VVOL総容量(120GB(50GB+40GB+30GB))は、プール#01の容量(100GB)を越えてしまうためである。
 (D)(B)の次に、管理者が、ストレージ装置に、VVOL#01の容量を50GBから60GBに拡張することを要求したとする。この場合、ストレージ装置は、その要求に応答して、VVOL#01の容量を50GBから60GBに拡張する。なぜなら、VVOL#01の容量拡張後のVVOL総容量(100GB(60GB+40GB))は、プール#01の容量(100GB)以下のためである。
 (E)(B)の次に、管理者が、ストレージ装置に、VVOL#02の容量を40GBから80GBに拡張することを要求したとする。しかし、この場合、ストレージ装置は、その要求を断る(すなわち、VVOL#02の容量を40GBから80GBに拡張しない)。なぜなら、VVOL#02の容量拡張後のVVOL総容量(130GB(50GB+80GB))は、プール#01の容量(100GB)を越えてしまうためである。
 上述の通り、ストレージ装置は、プール113に関連付け可能なVVOL111の総容量を、プール113の容量以下に制限する。その際、ストレージ装置は、プール113を構成する実ページのステータスを考慮する。本実施例では、実ページのステータスは、「フリー」、「割当て済み」、及び「ゼロ書き中」のいずれかである。
 図2は、実ページのステータス及びそのステータスの遷移の流れを示す。
 「フリー」は、実ページが仮想ページに割り当てられておらず、且つ、その実ページを仮想ページに割当て可能であることを意味する。フリーの実ページ内の全てのビットの値は、“0”である。つまり、フリーの実ページは、初期化(ゼロ書き)済みの実ページである。
 「割当て済み」は、実ページがいずれかの仮想ページに既に割り当てられており、それ故、その実ページが割当て不可能であることを意味する。
 「ゼロ書き中」は、実ページ内の全ビットの値が“0”とされるべき(例えば、実ページの先頭から末端にかけてビット値“0”が書き込まれている最中)であることを意味する。ゼロ書き中の実ページは、仮想ページに割り当てられておらず、且つ、割当て不可能である。
 実ページのステータスの変化の流れは、例えば、下記の通りである。
 矢印201に示すように、ストレージ装置は、未割当ての仮想ページに対する書込みのために、未割当ての仮想ページにフリーの実ページ#1を割り当てる。この場合、ストレージ装置は、実ページ#1のステータスを、「フリー」から「割当て済み」に遷移させる。その実ページ#1の全部又は一部に、書込み対象のデータが書き込まれる。図2によれば、書込み対象のデータは、4ビットのデータであり、且つ、4つのビット値は全て“1”である。
 矢印202に示すように、ストレージ装置が、実ページ#1のステータスを、「割当て済み」から「ゼロ書き中」に遷移させる。その遷移は、実ページ#1内のデータが不要であることに該当する所定のイベント(例えば、実ページ#1が割り当てられている仮想ページを含んだVVOLのプール#01に対する関連付けが解除されたこと)を契機に、行われる。
 ストレージ装置は、実ページ#1のステータスを「ゼロ書き中」に遷移させた場合、実ページ#1に対してゼロ書きを行い、それにより、実ページ#内の全ビット値を“0”に更新する。具体的には、ストレージ装置は、実ページ#1の全域に、ビット値“0”を書き込んでも良いし、実ページ#1内のビット値“1”のみを“0”に更新しても良い。(図2によれば、実ページ#1に“0”が書き込まれている途中である)。ゼロ書きの開始タイミングは、ステータスが「ゼロ書き中」に遷移した直後であっても良いし、ステータスが「ゼロ書き中」に遷移した後の任意のタイミングであっても良い。
 「ゼロ書き中」の実ページ#1内の全ビットの値が“0”になったら、ストレージ装置は、矢印203に示すように、実ページ#1のステータスを、「ゼロ書き中」から「フリー」に遷移させる。実ページ#1が割当て可能となったためである。なお、以下の説明では、全ビットの値が“0”の実ページを、「ゼロページ」と言う。
 矢印201、202及び203に示した遷移の流れの他に、矢印211に示す遷移も可能である。すなわち、ストレージ装置は、定期的に又は不定期的に、「割当て済み」のゼロページを探す。ストレージ装置は、「割当て済み」のゼロページ#2を見つけた場合、矢印211に示すように、ゼロページ#2のステータスを、「割当て済み」から、「ゼロ書き中」に遷移させることなく、「フリー」に遷移させる。なぜなら、実ページ#2は既にゼロページであるため、ゼロ書きを行う必要が無いからである。
 以上が、実ページのステータス及びそのステータスの遷移の流れである。なお、本実施例では、「未割当ての仮想ページ」は、実ページが割り当てられていない仮想ページであるが、それに限らず、実質的に実ページが割り当てられていない仮想ページ、例えば、所定のデータが書き込まれている所定の実ページ(例えば、所定のゼロページ)が割り当てられている仮想ページであっても良い。その所定の実ページは、複数の未割当ての仮想ページに共通であって良い。未割当ての仮想ページに対する書込みの場合、その仮想ページに、所定の実ページに代えて、フリーの実ページが割り当てられて良い。
 図2の説明によれば、「フリー」の実ページ及び「割当て済み」の実ページは、VVOL111に貢献する。なぜなら、「フリー」の実ページは、VVOL111内の未割当て仮想ページに割当て可能であるし、「割当て済み」の実ページは、その実ページの割当先の仮想ページに対するデータ(ホスト装置が利用するデータ)を記憶しているからである。
 しかし、「ゼロ書き中」の実ページは、VVOL111に貢献しない。なぜなら、VVOL111内の未割当て仮想ページに割当て不可能であるからである。
 そこで、ストレージ装置は、プール113内の実ページのステータスが「ゼロ書き中」か否かを基に、プール113に関連付け可能なVVOL111の総容量をプール113の容量以下に制限する。
 以下、本実施例を詳細に説明する。
 図3は、本発明の実施例1に係るストレージ装置の構成を示す。
 通信ネットワーク361に、1以上のホスト351と、ストレージ装置101とが接続されている。
 ホスト351は、物理的又は仮想的な装置(例えば計算機)である。ホスト351は、アクセス先情報を有するアクセスコマンドを送信する。アクセスコマンドは、ライトコマンド又はリードコマンドである。アクセス先情報は、アクセス先を表す情報、例えば、アクセス先のVVOL111に関連付けられている識別情報(例えばLUN(Logical Unit Number))と、アクセス先の仮想ページのアドレス範囲に属するアドレス(例えばLBA(Logical Block Address))とを含む。
 ストレージ装置101は、物理記憶デバイス群と、コントローラ131と、SVP(Service Processor)311とを有する。
 物理記憶デバイス群は、複数の物理記憶デバイス(以下、PDEV)371(例えば、HDD(Hard Disk Drive)、又は、フラッシュメモリデバイス(例えばSSD(Solid State Drive))の集合である。PDEV群は、1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループ375を有する。RAIDグループ375は、2以上のPDEV371で構成されており、所定のRAIDレベルでデータを記憶する。プール113は、1以上のRAIDグループ375の記憶空間に基づいている。プール113は、例えば、1以上の実ボリューム(1以上のRAIDグループ375に基づく実体的な論理ボリューム)の集合であって、プール113内の各実ボリュームが、2以上の実ページ191に分割されて良い。
 コントローラ131は、ホスト351との通信インタフェースと、PDEV371との通信インタフェースと、メモリと、それらに接続されたプロセッサとを有する。具体的には、例えば、コントローラ131は、CHA301と、DKA303と、キャッシュメモリ(以下、CM)307と、共有メモリ(以下、SM)309と、スイッチ装置(以下、SW)305とを有する。これらの要素の数は1以上である。
 CHA301は、ホスト351との通信インタフェース装置である。CHA301は、ポート302と、MP(Micro Processor)20とを有する。これらの要素の数は1以上である。MP20は、ホスト351からのコマンドを処理する。例えば、MP20は、ホスト351からポート302を介して受信したライトコマンドに応答して、ライト対象のデータをCM307に書き込む。
 DKA303は、PDEV371との通信インタフェース装置である。DKA303は、1以上のMP(Micro Processor)30を有する。MP30は、PDEV371に対するデータの入出力を制御する。例えば、MP30は、CM307に記憶されているライト対象のデータを、そのデータのライト先の実ページに基づくRAIDグループ375に書き込む。
 CM307は、複数のMP20及び30に共有のメモリであり、PDEV群に入出力されるデータを一時的に記憶する。
 SM309は、複数のMP20及び30に共有のメモリであり、管理情報を記憶する。CM307とSM309は、別々のメモリでなく、一体であっても良い。つまり、1つのメモリが、CMとして使用される領域と、SMとして使用される領域とを有して良い。
 SW305に、CHA301、DKA303、CM307及びSM309が接続されている。SW305は、例えばクロスバススイッチであり、それらの要素間の接続を切り替える。SW305以外の接続部(例えばバス)で、CHA301、DKA303、CM307及びSM309が互いに接続されても良い。
 SVP311は、ストレージ装置101の保守又は管理に使用される1以上のコンピュータ(管理コンピュータ)であり、例えばLAN(Local Area Network)を通じて、各MP20及び30に接続されている。SVP311は、ストレージ装置101の外にあっても良い。また、SVP311は、入出力コンソール(例えば、入力装置と表示装置)と、制御コンソール(例えば、マザーボードのような制御基板)とで構成されて良い。両方のコンソールがストレージ装置101内にあっても良いし、制御コンソールがストレージ装置101内にあって入出力コンソールがストレージ装置101から離れた場所にあっても良い。
 図4は、ストレージ装置101における各種記憶領域の関係を示す。
 図4に示すように、下位から上位にかけて、1以上のRG(RAIDグループ)375、1以上のプール113、1以上のVVOL111が管理される。
 1つのRG375は、同一種類のPDEVで構成されている。PDEV種類は、例えば、性能で定義される。性能とは、例えば、PDEVに対するデータのアクセス速度、又は、レスポンスタイム(PDEVがコマンドを受けてから応答を返すまでの時間長)である。例えば、RG#00は、複数のSSDで構成されており、RG#01は、複数のHDD-SAS(Serial Attached SCSI)で構成されており、RG#02は、複数のHDD-SATA(Serial ATA)で構成されている。なお、1つのRGを構成する複数のPDEVの容量は、例えば同じである。
 プール113は、実ページ231の集合である。具体的には、例えば、プール113は、1以上の実ボリューム(RVOL)205で構成されており、各RVOL205が、1以上の実ページ231で構成されている。以下、プール113を構成するRVOLを、「プールVOL」と言う。
 1つのプール113を構成する実ページ231が階層化されている。すなわち、1つのプール113に、複数のティア441が存在する。ティア441は、例えば、RVOLの種類毎に存在する。例えば、図4によれば、RVOLの種類として3種類あるため、ティア441の数も3つである。このため、1つのティア441には、そのティアに対応した種類のRVOL205が属することになる。具体的には、例えば、ティア#00は、SSDという種類であり、SSDで構成されたRG375に基づくRVOLが属する。ティア#01は、HDD-SASという種類であり、HDD-SASで構成されたRG375に基づくRVOLが属する。ティア#03は、HDD-SATAという種類であり、HDD-SATAで構成されたRG375に基づくRVOLが属する。なお、ティア441は、必ずしも、厳密にRVOL種類毎に設けられる必要も無く、同一のティア441に、類似の種類のRGに基づく複数のRVOL205が属しても良い。
 図4に示すプール113の構成は、一例であり、プール113は、図4に示すようなマルチティア構成でなくても良い。すなわち、例えば、プール113は、同種のプールVOLのみで構成されていても良い。
 本実施例では、前述したように、コントローラ131が、プール113に関連付け可能なVVOL111の総容量を、プール113の容量以下に制限する。VVOL総容量がプール113の容量以下とされても、アクセスの負荷を分散することが期待できる。なぜなら、プール113は複数のRGに基づく実ページ群であり、それ故、1つのVVOLに対するアクセスが集中しても、それらのアクセスが、別々のRGに基づく複数の実ページに分散されることが期待されるからである。
 図4に示したような構成において、仮想ページに対する書込み又は読出しの制御や、プール113内のデータの再配置の制御や、VVOL111のプール113に対する割当ての制御や、VVOL113の容量拡張の制御が行われる。これらの制御は、例えば、図5Aに示す制御プログラム(コンピュータプログラム)551がプロセッサ(例えばMP20)で実行されることにより、行われる。コントローラ131は、例えば、コントローラ131内の記憶資源(例えば、SM309、又は、CHA301内のメモリ(図示せず))に記憶され、その記憶資源から読み出され、実行される。制御プログラム551が実行されることにより行われる処理は、コントローラ131が行う処理である。
 図5Bは、SM309が記憶する管理情報を示す。管理情報の一部が、CHA301内のメモリ(図示せず)、及び/又は、DKA303内のメモリ(図示せず)に記憶されても良い。
 管理情報は、例えば、VOL管理テーブル501、マッピングテーブル503、プール管理テーブル504、ティア管理テーブル506、フリーキュー505、削除キュー509及びページ情報701を含む。
 VOL管理テーブル501は、ストレージ装置101が有する全てのVOL(論理ボリューム)に関する情報を有する。
 マッピングテーブル503は、VVOL毎に存在する。マッピングテーブル503は、仮想ページと実ページとの対応関係を表す。具体的には、例えば、マッピングテーブル503には、実ページが割り当てられている仮想ページに、その実ページのページ情報701が関連付けられている。
 フリーキュー505は、プールVOL毎に存在する。フリーキュー505は、「フリー」の実ページに対応したページ情報701の列である。
 削除キュー509は、プール113毎に存在する。削除キュー509は、プール113に対する割当てが解除されたVVOLに対応するマッピングテーブル503の列である。
 ページ情報701は、実ページ毎に存在する。ページ情報701は、実ページに関する情報を有する。
 制御プログラム551は、図6に示す流れで、実ページを特定する。
(A)制御プログラム551は、VOL管理テーブル501を基に、対象のVVOLに対応したマッピングテーブル503を特定する。
(B1)(A)で特定されたマッピングテーブル503が、削除キュー509に関連付けられておらず、且つ、そのテーブル503に、対象の仮想ページに割り当てられている実ページのページ情報701が関連付けられている場合、制御プログラム551は、そのページ情報701を特定する。制御プログラム551は、そのページ情報701に対応する実ページが、「割当て済み」の実ページ、具体的には、対象の仮想ページに割り当てられている実ページである。
(B2)(A)で特定されたマッピングテーブル503が、削除キュー509に関連付けられておらず、且つ、対象の仮想ページが未割当ての仮想ページの場合、制御プログラム551は、フリーキュー505に関連付けられているページ情報701を特定する。そのページ情報701に対応する実ページが、「フリー」の実ページである。
(B3)(A)で特定されたマッピングテーブル503が、削除キュー509に関連付けられている場合、制御プログラム551は、そのマッピングテーブル503に関連付けられているページ情報701を特定する。そのページ情報701に対応する実ページが、「ゼロ書き中」の実ページである。
 以下、管理情報が有する各種情報を詳細に説明する。なお、以下の説明では、「フリー」の実ページを「フリーページ」と言い、「ゼロ書き中」の実ページを、「ゼロ書きページ」と言い、「割当て済み」の実ページを「割当て済みページ」と言うことがある。
 図7Aは、VOL管理テーブル501を示す。
 VOL管理テーブル501は、VOL毎に、下記の情報、
(*)VOLの識別番号であるVOL番号5011、
(*)VOLの種別を表すVOL種別5012、
(*)プール113に関連付けられているか否かを表す関連付けフラグ5013、
(*)VOLの容量を表す容量5014、
(*)関連付けられているプールの識別番号であるプール番号5015、
(*)参照すべきテーブルの識別情報を表すポインタ5016、
を有する。
 VOLの種別としては、例えば、「仮想」、「プール」及び「通常」がある。「仮想」は、VOLがVVOLであることを意味する。「プール」は、VOLがプールVOL(ホスト351に認識されないVOL)であることを意味する。「通常」は、VOLがプールVOLではなくホストに認識されるRVOL(実ボリューム)であることを意味する。
 関連付けフラグ5013について、「ON」が、VVOL111がプール113に関連付けられていることを意味し、「OFF」が、VVOL111がプール113に関連付けられていないことを意味する。VVOL以外のVOLに対応する関連付けフラグ5013は、無効な値(例えば「NULL」)である。
 プール113に関連付けられているVVOL111に対応するポインタ5016は、有効な値、例えば、そのVVOL111に対応するマッピングテーブル503の識別情報である。
 図7Bは、マッピングテーブル503を示す。
 マッピングテーブル503は、そのテーブル503に対応するVVOL111が有する仮想ページ毎に、下記の情報、
(*)仮想ページの識別番号である仮想ページ番号5031、
(*)仮想ページに割り当てられている実ページに対応したページ情報701の識別情報であるポインタ5032、
を有する。
 図8Aは、フリーキュー505を示す。
 フリーキュー505は、前述したように、プールVOL毎に存在する。フリーキュー505は、例えば、先頭のページ情報701の識別情報を表すポインタを有する。そして、ページ情報701が、次のページ情報701の識別情報を表すポインタ(図9A参照)を有する。これにより、フリーキュー505に関連付けられているページ情報701の順序がわかる。
 図8Bは、削除キュー509を示す。
 削除キュー509は、前述したように、プール113毎に存在する。削除キュー509には、マッピングテーブル503が関連付けられる。削除キュー509は、例えば、先頭のマッピングテーブル503の識別情報を表すポインタを有する。また、マッピングテーブル503には、図示しないが、次のマッピングテーブル503の識別情報を表すポインタが設定される。これにより、削除キュー509に関連付けられているマッピングテーブル503の順序がわかる。
 また、マッピングテーブル503には、図7Bに示したように、そのテーブル503に対応したVVOL111に割り当てられている実ページに対応したページ情報701が関連付けられている。削除キュー509に関連付けられているマッピングテーブル503に関連付けられているページ情報701に対応した実ページが、ゼロ書きページである。
 図9Aは、ページ情報701を示す。
 ページ情報701は、そのページ情報701に対応する実ページ(以下、図9Aの説明において「対象実ページ」と言う)について、以下の情報、
(*)そのページ情報701の次のページ情報701の識別情報である次ポインタ7011、
(*)対象実ページの場所を表すプールVOLアドレス(例えば、プールVOLのVOL番号と、そのプールVOLにおけるLBAとを含んだアドレス)7012、
(*)対象実ページの割当先の仮想ページの場所を表すVVOLアドレス(例えば、割当先の仮想ページを含んだVVOLのVOL番号と、そのVVOLにおけるLBAとを含んだアドレス)7013、
(*)対象実ページのステータスを表すステータス7014、
を有する。ページ情報701が、対象実ページが属するティアの番号を有していても良い。
 図9Bは、プール管理テーブル504を示す。
 プール管理テーブル504は、プール113毎に、下記の情報、
(*)プール113の識別番号であるプール番号5041、
(*)プール113を構成するプールVOLの数であるプールVOL数5042、
(*)プール113を構成する実ページの数である実ページ数5043、
(*)プール113を構成する実ページのうちのフリーページの数であるフリーページ数5044、
(*)プール113の使用率(プール113を構成する実ページの総数に対する割当て済み実ページの数の割合)と比較される閾値である閾値5045、
(*)プール113に関連付けられているVVOLの数であるVVOL数5046、
(*)プール113に関連付けられている1以上のVVOLを構成する仮想ページの数である仮想ページ総数5047、
を有する。テーブル504は、プール113の容量を表す値を有しても良い。
 図26は、ティア管理テーブル506を示す。
 ティア管理テーブル506は、各プールについて、ティア毎に、下記の情報、
(*)ティアを有するプールの識別番号であるプール番号5061、
(*)ティアの番号であるティア番号5062、
(*)ティアに属するプールVOLの基になっているPDEVの種類を表す情報であるPDEV種類5063、
(*)ティアに属する実ページに対応したページ情報へのポインタであるページ情報ポインタ5064、
を有する。このテーブル506から、どのプールのどのティアに属する実ページに対応したページ情報701を特定することができる。
 本実施例では、制御プログラム551は、以下の処理を行うことができる。
 <ライト処理>
(a1)制御プログラム551が、ライトコマンドをホスト351から受信する。
(a2)制御プログラム551が、受信したライトコマンドが有するアクセス先情報を基に、ライト先VVOLとライト先仮想ページとを特定する。
(a3)制御プログラム551が、ライトコマンドに従うライト対象のデータをCM307に書き込む(制御プログラム551は、この段階で、ホスト351にライト完了を応答して良い)。
(a4)制御プログラム551が、(a2)で特定されたライト先VVOLに対応するマッピングテーブル503を基に、上記(W2)で特定されたライト先仮想ページが未割当ての仮想ページか否かを判断する。
(a5)上記(a4)の判断の結果が肯定的であれば、制御プログラム551が、ライト先仮想ページに割り当てられている実ページ(ライト先仮想ページに関連付けられているページ情報701に対応した実ページ)に、CM307内のライト対象のデータを書き込む。
(a6)上記(a4)の判断の結果が否定的であれば、制御プログラム551が、フリーキュー505からフリーページを特定する。ここで、制御プログラム551は、なるべく上位のティアに対応したフリーキュー505からフリーページを特定して良い。
(a7)制御プログラム551が、上記(a6)で特定したフリーページをライト先仮想ページに対応付ける。具体的には、例えば、制御プログラム551は、マッピングテーブル503における、ライト先仮想ページに対応したポインタ5032として、上記(a6)で特定したフリーページに対応するページ情報701の識別情報を書き込む。また、制御プログラム551が、特定したフリーページに対応するページ情報701をフリーキュー505から外す。また、制御プログラム551が、そのページ情報701を更新する(例えば、次ポインタ7011として無効値(例えば「NULL」)を書込み、ステータス7014を「フリー」から「割当て済み」に更新する)。
(a8)制御プログラム551は、上記(a6)で特定したページに、CM307内のライト対象のデータを書き込む(制御プログラム551は、この段階で、ホスト351にライト完了を応答して良い)。
(a9)制御プログラム551は、は、上記(a5)又は(a8)において、ライト先仮想ページに対応したアクセス負荷情報及び/又は最終アクセス時刻を更新して良い。アクセス負荷情報は、仮想ページに対するアクセスの負荷(例えば、アクセス頻度(単位時間当りのアクセス回数)、或いは、データ転送速度(単位時間当たりに入出力されるデータの量))を表す値である。アクセス負荷情報は、仮想ページ毎に存在する情報であり、例えば、マッピングテーブル503に含まれていても良い。
 <リード処理>
(b1)制御プログラム551は、リードコマンドをホスト351から受信する。
(b2)制御プログラム551は、リードコマンドが有するアクセス先情報を基に、リード元VVOLとリード元仮想ページを特定する。
(b3)制御プログラム551が、リード対象のデータがCM307に残っているか否かを判断する。
(b4)上記(b3)の判断の結果が肯定的の場合、制御プログラム551は、CM307内のリード対象データを、ホスト351に送信する。この場合、制御プログラム551は、リード元仮想ページに対応したアクセス負荷情報及び/又は最終アクセス時刻を更新してもしなくても良い。
(b5)上記(b3)の判断の結果が否定的の場合、制御プログラム551は、マッピングテーブル503を基に、上記(b2)で特定されたリード元仮想ページが未割当ての仮想ページか否かを判断する。
(b6)上記(b5)の判断の結果が否定的であれば、制御プログラム551は、所定のデータ(例えばエラー)をホスト351に送信する。
(b7)上記(b5)の判断の結果が肯定的であれば、制御プログラム551は、リード元仮想ページに割り当てられている実ページからデータを読み出し、そのデータをCM307に書き込む。そして、制御プログラム551は、CM307内のそのデータをホスト351に送信する。
(b8)制御プログラム551は、上記(b6)において、リード元仮想ページに対応したアクセス負荷情報及び/又は最終アクセス時刻を更新して良い。
 <データの再配置処理に関する処理>。
 制御プログラム551は、割当て済みの仮想ページ(実ページが割り当てられている仮想ページ)に対応したアクセス負荷又は最終アクセス時刻を基に、再配置処理を実行するか否かを判断する。
 例えば、制御プログラム551は、或る仮想ページ(以下、この段落において、「対象仮想ページ」と言う)に対応したアクセス負荷が、対象仮想ページに割り当てられている実ページを有するティアに対応したアクセス負荷範囲に属している場合、再配置処理を行わないと判断し、そうではない場合、再配置処理を行うと判断する。再配置処理では、制御プログラム551は、対象仮想ページに割り当てられている実ページ内のデータを、対象ページのアクセス負荷が属するアクセス負荷範囲に対応したティア内のフリーページにマイグレーションする。そして、制御プログラム551は、対象仮想ページに、マイグレーション元の実ページに代えて、マイグレーション先の実ページを割り当てる。
 また、例えば、制御プログラム551は、或る仮想ページに対応した最終アクセス時刻から一定時間を経過している場合、再配置処理を行う判断し、そうではない場合、再配置処理を行わないと判断する。再配置処理では、制御プログラム551は、対象仮想ページに割り当てられている実ページ内のデータを、その実ページを有するティアよりも下位のティア内のフリーページにマイグレーションする。そして、制御プログラム551は、対象仮想ページに、マイグレーション元の実ページに代えて、マイグレーション先の実ページを割り当てる。
 <制御プログラム551の起動時の処理>。
 図10は、制御プログラム551の起動時の処理の流れを示す。
 制御プログラム551は、制御プログラムの更新後(例えばバージョンアップ後)に初めて起動したか否かを判断する(S1001)。具体的には、例えば、起動済みが設定されていない場合、制御プログラム551は、初めて起動したと判断し、起動済みが設定されている場合、初めての起動ではないと判断する。
 S1001の判断の結果が肯定的の場合(S1001:YES)、制御プログラム551は、更新前の制御プログラム(VVOL総容量をプール113の容量以下に制限する機能を有していないプログラム)が実行されていた時点にあった情報を基に、VVOL総容量をプール113の容量以下に制限するために必要な情報を準備する。具体的には、制御プログラム551は、VVOL総容量算出(図11参照)を行う(S1002)。
 その後、制御プログラム551は、例えば起動済みを設定し(S1003)、終了する。これにより、制御プログラム551の2回目以降の起動では、S1001の判断の結果が否定的となる。
 <VVOL総容量算出>。
 図11は、VVOL総容量算出の流れを示す。
 制御プログラム551は、VVOL毎に、S1101を行う(ループ(A))。以下、ループ(A)における処理を、1つのVVOL(図11の説明において、「対象VVOL」と言う)を例に採り、説明する。
 S1101で、制御プログラム551は、VOL管理テーブル501を基に、対象VVOLがいずれかのプール113に関連付けられているか否かを判断する。
 この判断の結果が肯定的の場合(S1101:YES)、制御プログラム551は、対象VVOLの容量を基に、対象VVOLが関連付けられているプール(図11の説明において、「対象プール」と言う)113について、VVOL総容量を更新する。具体的には、制御プログラム551は、以下の処理を行う。
(S1102)制御プログラム551は、対象VVOLに対応したVVOL容量5014から、対象VVOLの容量を取得する。
(S1103)制御プログラム551は、対象VVOLに対応したプール番号5015から、対象VVOLが関連付けられているプールの識別番号(プール番号)を取得する。
(S1104)制御プログラム551は、S1102で取得した、対象VVOLの容量を、仮想ページ数に変換する。対象VVOLの容量を仮想ページの容量で除算することにより得られた値が、対象VVOLの仮想ページ数である。
(S1105)制御プログラム551は、S1104で得られた仮想ページ数を、対象プール(S1103で取得されたプール番号)に対応する仮想ページ総数5047に加算する。
 つまり、VVOL総容量算出では、更新後の制御プログラム551によって、仮想ページ総数5047が作成される(更新される)。
 S1101の判断の結果が否定的の場合(S1101:NO)、制御プログラム551は、対象VVOLについて、S1102乃至S1105を行わない。
 全てのVVOLについて、S1101(S1101の判断の結果が肯定的の場合、S1102乃至S1105)が行われた場合、ループ(A)が終了する。
 VVOL総容量算出の完了が、VVOL総容量をプール113の容量以下に制限するために必要な情報の準備の完了である。
 なお、制御プログラム551は、S1105を行った都度に、更新後の仮想ページ総数5047が対象プールの実ページ数5043(対象プールの容量)以下であるか否かを判断しても良い。その判断の結果が否定的であれば、制御プログラム551は、警告を出力して良い(例えば、SVP311に警告を出力して良い)。
 また、例えば、制御プログラム551は、図11のループ(A)が終了した後、更新後の仮想ページ総数5047が実ページ数5043を超えているプール(この段落で「第1のプール」と言う)があるか否かを判断しても良い。その判断の結果が肯定的であれば、制御プログラム551は、第1のプールに関連付けられている1以上のVVOL内のデータを、更新後の仮想ページ総数5047が実ページ数5043より小さいプール(この段落で「第2のプール」と言う)にマイグレーションして良い。第1のプールについて、仮想ページ総数5047を実ページ数5043以下にするためである。具体的には、例えば、下記のVVOLマイグレーション処理が行なわれても良い。
(d1)制御プログラム551は、第1のプールに関連付けられている1つのVVOL(ここの説明において、「選択VVOL」と言う)を選択する。
(d2)制御プログラム551は、選択VVOLの仮想ページ数が仮想ページ総数5047に加算されても仮想ページ総数5047が実ページ数5043以下となる第2のプールを探す。そのような第2のプールが見つからなければ、VVOLマイグレーション処理が終了する。
(d3)制御プログラム551は、(d2)で第2のプールが見つかれば、選択VVOLが有するデータを、第1のプールから、実ページ単位で、見つかった第2のプールにマイグレーションする。
(d4)制御プログラム551は、選択VVOLの第1のプールに対する関連付けを解除し、選択VVOLを第2のプールに関連付ける。具体的には、以下の処理が行われる。
(d41)制御プログラム551は、第1のプールの仮想ページ総数5047から、選択VVOLの仮想ページ数を減算し、且つ、第1のプールのVVOL数5046から、1を減算する。
(d42)制御プログラム551は、選択VVOLに対応したプール番号5015を、第1のプールの識別番号から第2のプールの識別番号に変更する。
(d43)制御プログラム551は、第2のプールの仮想ページ総数5047に、選択VVOLの仮想ページ数を加算し、且つ、第2のプールのVVOL数5046に、1を加算する。
 <関連付け対象のVVOL、又は、関連付けの解除対象のVVOL、の指定>。
 管理者は、SVP311を用いて、プール113に関連付けられていない1以上のVVOLのうちの管理者所望のVVOLを、1以上のプール113のうちの所望のプール113に関連付けたり、関連付けを解除したりすることができる。
 例えば、SVP311が、制御プログラム551から、VOL管理テーブル501が有する情報を受信し、その情報を基に、図12Aに示すVVOL一覧1211を表示する。VVOL一覧1211は、VVOL毎の情報(VVOL番号(VVOLのVOL番号)、関連付けフラグ、容量、プール番号)を有する。SVP311は、管理者所望のVVOLの指定を受け付ける。管理者所望のVVOLが、関連付けフラグ「OFF」のVVOLであれば、関連付けを行うか否かを管理者に問い合わせる。管理者所望のVVOLが、関連付けフラグ「ON」のVVOLであれば、関連付けを解除するか否かを管理者に問い合わせる。
 SVP311は、関連付けフラグ「OFF」のVVOLについて関連付けを行うことを管理者から受けた場合、SVP311が、制御プログラム551から、プール管理テーブル504が有する情報を受信し、その情報を基に、図12Bに示すプール一覧1221を表示する。プール一覧1221は、プール毎の情報(プール番号、プール容量(例えば、実ページ数5043を基に算出された値)、使用容量(例えば、実ページ数5043とフリーページ数5044とを基に算出された値)、閾値)を有する。SVP311は、管理者所望のプールの指定を受け付ける。
 <VVOL関連付け>。
 図13は、VVOL関連付けの流れを示す。この処理は、例えば、制御プログラム551が、VVOL一覧1211(図12A参照)及びプール一覧1221(図12B参照)を通じて、VVOLの関連付けを管理者から指示された場合に、行われる。
 制御プログラム551が、管理者から指定されたプール(図13及び図14の説明において「対象プール」と言う)の識別番号(プール番号)を、SVP311から取得する(S1301)。
 また、制御プログラム551は、管理者から指定されたVVOL(図13及び図14の説明において「対象VVOL」と言う)の識別番号(VVOL番号)を、SVP311から取得し、そのVVOL番号に対応した容量5014から、対象VVOLの容量を取得する(S1302)。そして、制御プログラム551は、S1302で取得したVVOL容量を仮想ページ数に変換する(S1303)。
 また、制御プログラム551は、S1301で取得したプール番号に対応した仮想ページ総数5047(対象プールの仮想ページ総数5047)から、仮想ページの総数を取得する(S1304)。
 制御プログラム551は、S1303での変換後の仮想ページ数(対象VVOLの仮想ページ数)と、S1304で取得した仮想ページ総数(対象プールの仮想ページ総数)とを基に、VVOL容量チェック(図14参照)を行う(S1305)。
 VVOL容量チェックの戻り値が、「正常」を意味する場合(S1306:YES)、制御プログラム551は、対象VVOLを対象プールに関連付ける(S1307)。具体的には、以下の処理が行われる。
(*)制御プログラム551は、対象プールの仮想ページ総数5047に、対象VVOLの仮想ページ数を加算する。
(*)制御プログラム551は、対象プールのVVOL数5046に、1を加算する。
(*)制御プログラム551は、対象VVOLのプール番号5015を、対象プールの識別番号に更新する。
 VVOL容量チェックの戻り値が、「異常」を意味する場合(S1306:NO)、制御プログラム551は、S1307をスキップし、VVOL関連付けを終了する。
 <VVOL容量チェック>。
 図14は、VVOL容量チェックの流れを示す。
 制御プログラム551は、オプション#1がONか否かを判断する(S1401)。「オプション#1」は、VVOL総容量をプール113の容量以下に制限することを、ストレージ装置101に存在する全てのプール113について行うモードである。
 S1401の判断の結果が肯定的の場合(S1401:YES)、以下の処理が行われる。
(*)制御プログラム551は、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043以下か否かを判断する(S1404)。
(*)S1404の判断の結果が否定的であれば、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043を越えてしまうということである。この場合、制御プログラム551は、「異常」を意味する戻り値を出力する(S1407)。この結果、図13に示したように、S1307(対象VVOLの対象プールに対する関連付け)は行われない。
(*)S1404の判断の結果が肯定的であれば、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043を越えないということである。この場合、制御プログラム551は、ゼロ書きチェック(図15参照)を行う(S1405)。つまり、制御プログラム551は、対象プールにゼロ書きページが存在するか否かを調べる。
(*)S1405の結果、対象プールにゼロ書きページが無ければ(S1406:NO)、制御プログラム551は、「正常」を意味する戻り値を出力する(S1408)。なぜなら、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043を越えておらず、且つ、対象プールがゼロ書きページ(VVOLへの割当てが不可能な実ページ)を有していないが故に、対象プールが、対象VVOLの仮想ページ数以上のフリーページを有するからである。S1408の結果、図13に示したように、S1307(対象VVOLの対象プールに対する関連付け)が行われる。
(*)S1405の結果、対象プールにゼロ書きページがあれば(S1406:YES)、制御プログラム551は、「異常」を意味する戻り値を出力する(S1407)。なぜなら、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043を越えていなくても、対象プールがゼロ書きページを有しているが故に、対象プールが、対象VVOLの仮想ページ数以上のフリーページを有していない可能性があるからである。
 S1401の判断の結果が否定的の場合(S1401:NO)、制御プログラム551は、オプション#2がONか否かを判断する(S1402)。「オプション#2」は、VVOL総容量をプール113の容量以下に制限することを、ストレージ装置101に存在するプール113のうちの管理者所望のプール113についてのみ行うモードである。
 S1402の判断の結果が否定的の場合(S1402:NO)、制御プログラム551は、「正常」を意味する戻り値を出力する(S1408)。なぜなら、オプション#1及びオプション#2のいずれもOFFになっており、それ故、対象プールについて、VVOL総容量を対象プールの容量以下に制限する必要が無いからである。
 S1402の判断の結果が肯定的の場合(S1402:YES)、制御プログラム551は、対象プールが、VVOL総容量をプール容量以下に制限する必要のあるプールか否かを判断する(S1403)。ここでは、例えば、対象プールの閾値5045が、有効な値、又は、第1の値以上であれば、S1403の判断の結果が肯定的となり、対象プールの閾値5045が、無効な値(例えば「NULL」)、又は、第2の値未満(第2の値は第1の値以下)であれば、S1403の判断の結果が否定的となる。
 S1403の判断の結果が否定的の場合(S1403:NO)、制御プログラム551は、「正常」を意味する戻り値を出力する(S1408)。なぜなら、対象プールについて、VVOL総容量を対象プールの容量以下に制限する必要が無いからである。
 S1403の判断の結果が肯定的の場合(S1403:YES)、制御プログラム551は、前述したS1404以降を行う。なぜなら、対象プールについて、VVOL総容量を対象プールの容量以下に制限する必要があるからである。
 以上のVVOL容量チェックの流れによれば、オプション#1とオプション#2の両方がONの場合、オプション#1が優先されるが、それに代えて、オプション#2が優先されても良い。
 <ゼロ書きチェック>。
 図15は、ゼロ書きチェックの流れを示す。
 制御プログラム551は、対象プールの識別番号(プール番号)を取得する(S1501)。ここで言う「対象プール」は、図13及び図14の説明における対象プールであることもあれば、図20の説明における容量拡張の対象のVVOLに関連付けられているプールであることもある。
 制御プログラム551は、対象プールに対応した削除キュー(図15の説明において「対象削除キュー」と言う)509にマッピングテーブル503が関連付けられているか否かを判断する(S1502)。
 S1502の判断の結果が肯定的の場合(S1502:YES)、制御プログラム551は、S1503を行う。具体的には、以下の処理が行われる。
(e1)制御プログラム551は、対象削除キュー509に関連付けられている1つのマッピングテーブル(例えば先頭のマッピングテーブル)503を選択する。
(e2)制御プログラム551は、(e1)で選択したマッピングテーブル503に関連付けられているページ情報701の数を、ゼロ書きページ数に加算する。
(e3)制御プログラム551は、対象削除キュー509から、最近の(e1)で選択したマッピングテーブル503を除去する。
 制御プログラム551は、S1503でマッピングテーブル503を対象削除キュー509から除去した後、再び、S1502を行う。
 S1502の判断の結果が否定的の場合(S1502:NO)、制御プログラム551は、ゼロ書きページ数がゼロか否かを判断する(S1504)。
 S1504の判断の結果が肯定的であれば(S1504:YES)、制御プログラム551は、ゼロ書きページ無しという判断結果を出力する(S1505)。
 S1504の判断の結果が否定的であれば(S1504:NO)、制御プログラム551は、ゼロ書きページ有りという判断結果を出力する(S1506)。
 <VVOL関連付け解除>
 図16は、VVOL関連付け解除の流れを示す。この処理は、例えば、制御プログラム551が、VVOL一覧1211(図12A参照)を通じて、VVOLの関連付けの解除を管理者から指示された場合に、行われる。
 制御プログラム551が、管理者から指定されたVVOL(図16の説明において「対象VVOL」と言う)のVOL番号(VVOL番号)を取得する(S1601)。
 制御プログラム551が、S1601で取得したVVOL番号を有する、VOL管理テーブル501における行を特定する(S1602)。
 制御プログラム551が、その行におけるポインタ5016を特定する(S1603)。
 制御プログラム551が、特定したポインタ5016をクリアする(S1604)。例えば、制御プログラム551が、そのポインタ5016を、無効値(例えば「NULL」)に更新する。
 制御プログラム551が、クリア前のポインタ5016が表すマッピングテーブル(対象VVOLに対応したマッピングテーブル)503を、対象VVOLが関連付けられていたプールに対応する削除キュー509に関連付ける(S1605)。
 <ゼロ書き処理>。
 制御プログラム551は、プール毎に、ゼロ書き処理を行う。ゼロ書き処理では、制御プログラム551は、そのプールに対応した削除キュー509に関連付けられている実ページ(正確には、削除キュー509に関連付けられているマッピングテーブル503に関連付いているページ情報701に対応した実ページ)に、ビット値“0”を書き込む。ゼロ書き処理の開始のタイミングは、実ページのステータスが「ゼロ書き中」になった以降における任意のタイミングで良い。具体的には、例えば、下記が考えられる。
(*)制御プログラム551が、実ページのステータスを「ゼロ書き中」にしたら直ちに、その実ページに対するゼロ書きを行う。
(*)制御プログラム551が、定期的に又は不定的に、削除キュー509に関連付けられている実ページがあるか否かを判断し、その判断の結果が肯定的であれば、その実ページに対してゼロ書きを行う。
(*)制御プログラム551が、VVOL内の仮想ページに対する書込みの際に、そのVVOLが関連付けられているプールにフリーページが無い場合、そのプール内のゼロ書き実ページに対してゼロ書きを行う(ゼロ書きが済んだ実ページが、フリーページとして、書込み先の仮想ページに割り当てられて良い)。
 図17は、ゼロ書き処理の流れを示す。
 制御プログラム551が、ゼロ書き処理の対象のプールの識別番号(プール番号)を取得する(S1701)。
 制御プログラム551が、取得したプール番号に対応する削除キュー(図17の説明において「対象削除キュー」と言う)509が有するポインタが表す情報、又は、最近のS1704でのマッピングテーブル503が有するポインタが表す情報を取得する(S1702)。
 制御プログラム551は、S1702で取得した情報がNULLであれば(S1703:YES)、この処理を終了する。なぜなら、対象削除キューにマッピングテーブル503が関連付けられていないからである。
 制御プログラム551は、S1702で取得した情報がマッピングテーブル503を表していれば(S1703:NO)、そのマッピングテーブル503に対応するVVOLの先頭の仮想ページから最終の仮想ページにかけて、ポインタ5032がページ情報701の識別情報を表す仮想ページ毎に、以下の処理を行う。
(S1704)制御プログラム551は、仮想ページのポインタ5032を基に、ページ情報701を取得する。
(S1705)制御プログラム551は、取得したページ情報701に対応する実ページ内の全ビットの値が“0”になるよう、1以上のビット値“0”を書き込む。
(S1706)制御プログラム551は、S1705を行ってからスリープ時間待つ。
(S1707)制御プログラム551は、最終の仮想ページまでチェックしていなければ(S1707:NO)、ページ情報701が関連付けられている別の仮想ページについてS1704を行い、最終の仮想ページまでチェックしていれば(S1707:YES)、S1702を行う。
 図17に示した流れによれば、スリープ時間の長さを調節することで、ゼロ書き処理の速度を調整することができる。
 例えば、ホスト351からのアクセス先の実ページの基になっているRG(RAIDグループ)と、ビット値“0”の書込み先の実ページの基になっているRGとが同じ場合、そのRGを構成するPDEVの負荷が高くなり、それ故、ホスト351からのアクセスに悪影響がある。そこで、通常、制御プログラム551は、通常、スリープ時間を第1の時間長とする。その後、制御プログラム551は、プール内のフリーページの数が所定値以下(所定値は0以上の整数)であれば、そのプールに対応したスリープ時間を、第1の時間長よりも短い第2の時間長に変更する。
 <削除容量の算出>。
 制御プログラム551は、プール毎に、削除容量を算出し、算出された削除容量をSVP311に表示することができる。「削除容量」は、ゼロ書きページ数と実ページの容量との積である。
 図18は、削除容量の算出の流れを示す。
 制御プログラム551は、削除キュー509毎に、S1801及びS1802を行い(ループ(A))、削除キュー509に関連付けられているマッピングテーブル毎に、S1801を行う(ループ(B))。
(S1801)制御プログラム551は、削除キュー509に関連付けられているマッピングテーブル503に関連付いたページ情報701の数を把握し、その数を、ゼロ書きページ数に加算する。
(S1802)制御プログラム551は、1つの削除キュー509(1つのプール)に対応したゼロ書きページ数を、削除容量に変換する。
 制御プログラム551は、プール毎の削除容量を、例えば図19に示すように、プール一覧1901に含めて表示する(S1803)。
 <VVOL容量の拡張>。
 図20は、VVOL容量の拡張の流れを示す。
 制御プログラム551は、SVP311からのVVOL拡張要求に応答して、管理者所望のVVOL(図20の説明において「対象VVOL」と言う)の容量を拡張することができる。VVOL拡張要求は、例えば、対象VVOLの識別番号、対象VVOLの容量に追加する容量(拡張容量)を表す情報を有する。
 図20によれば、図14のS1401~S1406と同様の処理が行われる(S2001~S2006)。
 S2006の結果、対象VVOLが関連付けられているプール(図20の説明において「対象プール」と言う)にゼロ書きページがあれば(S2006:YES)、制御プログラム551は、対象VVOLの容量拡張が可能か否かを判断する(S2007)。具体的には、制御プログラム551は、対象プールの実ページ数とゼロ書きページ数との差が容量拡張後の仮想ページ総数以上か否かを判断する。より具体的には、制御プログラム551は、下記の(P)の値が下記の(Q)の値以上か否かを判断する(図21参照)。
(P)対象プールの実ページ数5043から対象プールのゼロ書きページ数(対象プールに対応した削除キュー509に関連付けられているページ情報701の総数)を減算した値、
(Q)対象プールの仮想ページ総数5047に拡張容量分の仮想ページ数(増加する仮想ページ数)を加算した値。
 S2007の判断の結果が否定的であれば(S2007:NO)、制御プログラム551は、対象VVOLの容量の拡張を行わない(S2008)。例えば、制御プログラム551は、エラーをSVP311に通知する。
 S2007の判断の結果が肯定的であれば(S2007:YES)、制御プログラム551は、上述のVVOL拡張要求に従って、対象VVOLの容量を拡張する(S2009)。
 なお、S2006:YESの場合、制御プログラム551は、S2007の判断を行うことなく、S2008を行っても良い。
 以上が、実施例1の説明である。
 実施例1によれば、プールから関連付けが解除されたVVOLに割り当てられていた実ページが、やがて、ゼロ書きページとなる。
 そして、実施例1によれば、更新後のVVOL総容量がプールの容量以下であっても、そのプールにゼロ書きページがある場合には、VVOLの関連付けが非実行(キャンセル)とされる。これにより、VVOLをプールに関連付けた後に、書込み先の未割当ての仮想ページに割り当てるためのフリーページがそのプールで不足するということが生じないようにすることができる。
 また、実施例1によれば、プールに関連付けられているVVOLの容量を拡張すると、容量拡張後のVVOL総容量が、そのプールの実質容量(プールの容量と1以上のゼロ書きページの総容量との差)を超えてしまう場合には、VVOLの容量拡張が非実行(キャンセル)とされる。これにより、VVOLの容量を拡張した後に、書込み先の未割当ての仮想ページに割り当てるためのフリーページがプールで不足するということが生じないようにすることができる。
 以下、本発明の実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する。
 実施例2では、制御プログラム551が、VVOL関連付け後のVVOL総容量がプールの容量以下の場合、そのプールにゼロ書きページがあっても、VVOL関連付け後のVVOL総容量がそのプールの実質容量(プールの容量と1以上のゼロ書きページの総容量との差)を超えていなければ、VVOLをプールに関連付ける。
 具体的には、図22Aに示すように、S1406:YESの場合、制御プログラム551は、下記の(X)の値が下記の(Y)の値を越えているか否かを判断する(S2201)。
(X)対象プールの仮想ページ総数5047と対象VVOL(関連付け対象のVVOL)の仮想ページ数との和、
(Y)対象プールの実ページ数5043から対象プールのゼロ書きページ数(対象プールに対応した削除キュー509に関連付けられているページ情報701の総数)を減算した値。
 S2201の判断の結果が肯定的の場合(S2201:YES)、制御プログラム551は、「異常」を意味する戻り値を出力する(S1407)。
 S2201の判断の結果が否定的の場合(S2201:NO)、制御プログラム551は、「正常」を意味する戻り値を出力する(S1408)。
 実施例2によれば、書込み先の未割当ての仮想ページに割り当てるためのフリーページがプールで不足するということが生じないようにすることを実現しつつ、VVOLをプールに関連付けられる可能性を高めることができる。
 本発明の実施例3では、制御プログラム551は、下記(k)のケースにおいて、VVOL総容量の更新(VVOLの関連付け、又は、VVOLの容量拡張)を非実行(キャンセル)とするのではなく、図22BのS2211を行った後に、S1408(「正常」を表す戻り値の出力)、又は、S2009(VVOLの容量拡張)を行う。
(k)更新後のVVOL総容量(VVOL関連付け後のVVOL総容量、又は、VVOLの容量拡張後のVVOL総容量)がプールの容量以下であり、且つ、そのプールにゼロ書きページがある、又は、更新後のVVOL総容量がそのプールの実質容量(プールの容量と1以上のゼロ書きページの総容量との差)を超えてしまう。
 S2211で、制御プログラム551は、下記の(a)又は(b)を行う。
(a)制御プログラム551は、ゼロ書き処理が終わるまで待つ。具体的には、例えば、制御プログラム551は、プールの実質容量(プール容量と1以上のゼロ書きページの総容量との差)が更新後のVVOL総容量以上になるぐらいに、プールからゼロ書きページが減るまで(プール内のゼロ書きページのステータスが「フリー」に遷移するまで)、待つ。制御プログラム551は、そのプール内のゼロ書きページの数がゼロになるまで、待っても良い。
(b)制御プログラム551は、対象VVOL(関連付け対象のVVOL、又は、容量が拡張されるVVOL)を、第1のプール(VVOLの関連付け先のプール、又は、容量が拡張されるVVOLが関連付けられているプール)に代えて、第2のプールに関連付ける。その第2のプールは、下記の条件(v)及び(w)を満たすプールである。
(v)更新後のVVOL総容量(プールのVVOL総容量と、関連付け対象のVVOLの容量、又は、拡張される容量との和)が、プールの容量以下である。
(w)ゼロ書きページが無い、又は、更新後のVVOL総容量がプールの実質容量(プールの容量と1以上のゼロ書きページの総容量との差)以下である。
 実施例3によれば、書込み先の未割当ての仮想ページに割り当てるためのフリーページがプールで不足するということが生じないようにすることを実現しつつ、VVOLの関連付け、又は、VVOLの容量拡張を行える可能性を高めることができる。
 本発明の実施例4では、制御プログラム551は、実施例3で述べたケース(k)においても、VVOL総容量の更新(VVOLの関連付け、又は、VVOLの容量拡張)を非実行(キャンセル)とするのではなく、図23のS2301を行った後に、S1408(「正常」を表す戻り値の出力)、又は、S2009(VVOLの容量拡張)を行う。
 S2301で、制御プログラム551は、ゼロ書き処理が終わるまで待ち、且つ、VVOLの総容量が更新されるプール(VVOLの関連付け先のプール、又は、容量が拡張されるVVOLが関連付けられているプール、以下、実施例4の説明において「対象プール」と言う)についてのゼロ書き処理(図17参照)を、他のプールについてのゼロ書き処理よりも優先して行う。また、制御プログラム551は、S2301で、対象プールについてのゼロ書き処理における、スリープ時間を、最短にして良い。
 実施例4によれば、書込み先の未割当ての仮想ページに割り当てるためのフリーページがプールで不足するということが生じないようにすることを実現しつつ、VVOLの関連付け、又は、VVOLの容量拡張を迅速に行える可能性を高めることができる。
 本発明の実施例5では、プールに対するゼロ書き処理において、制御プログラム551は、上位のティアほど、優先的に、ゼロ書きページに対するゼロ書き(ビット値“0”の書込み)を行う。具体的には、本実施例では、制御プログラム551は、図17に示したゼロ書き処理に代えて、図24に示すゼロ書き処理を行う。
 すなわち、制御プログラム551が、ゼロ書き処理の対象のプール(図25の説明において「対象プール」と言う)のうち、最上位のティアを選択する(S2401)。
 制御プログラム551は、選択されたティアにゼロ書きページがあるか否かを判断する(S2402)。具体的には、例えば、制御プログラム551は、ティア管理テーブル506を基に、選択されたティアに属するページ情報701を特定し、特定したページ情報701毎に、ページ情報701に対応する実ページがゼロ書きページであるか否かを判断する。
 S2402の判断の結果が肯定的であれば(S2402:YES)、制御プログラム551は、選択されたティア内の全てのゼロ書きページ内の全ビットの値を“0”に更新する(S2403)。
 S2403の後、又は、S2402の判断の結果が否定的の場合(S2402:NO)、制御プログラム551は、対象プールに未選択のティアがあれば(S2404:NO)、最近選択したティアの次に上位のティアを選択し(S2404)、S2402を行う。一方、対象プールに未選択のティアがなければ、つまり、最下位のティアまで選択済みであれば(S2404:YES)、制御プログラム551は、対象プールに対するゼロ書き処理を終了する。
 実施例5によれば、上位のティア(つまり性能の高いティア)から優先的にフリーページを増やしていくことができる。これは、例えば、初期割当て用のティア(未選択の仮想ページに初めに割り当てられる実ページのソースとなるティア)が、最上位のティアである場合に、特に有効である。
 なお、実施例5では、制御プログラム551は、上位のティアほど優先的にゼロ書きを行うことに代えて、初期割当て用のティア内のゼロ書きページに対して、他のティア内のゼロ書きページよりも優先的に、ゼロ書きを行っても良い。
 本発明の実施例6では、制御プログラム551は、プライマリのVVOL(以下、PVOL)からセカンダリのVVOL(以下、SVOL)にデータをコピー(レプリケーション又はマイグレーション)するが、その際に、SVOLに割り当てられている実ページをフリーページとすることがある。なぜなら、SVOLが関連付けられているプールからフリーページが不足してしまう可能性を無くすためである。
 以下、図25A~図25Cを参照して、実施例6を詳細に説明する。
 図25Aに示すように、PVOL111Pがプール113Pに関連付けられており、SVOL111Sがプール113Sに関連付けられている。プール113P及び113Sは、異なるプールである。なぜなら、PVOL111P内のデータを記憶しているRG(RAIDグループ)に障害が発生してもデータが無くならないようにするためである。
 また、SVOL111Sの容量は、PVOL111Pの容量以上である。
 図25Aに示すように、PVOL111Pにプール113P内の2つの実ページが割り当てられており、SVOL111Sにプール113S内の3つの実ページが割り当てられているとする。
 ここで、プール113Sが、VVOL総容量を制限する対象のプールでない場合、PVOL111P内の2ページ分のデータがSVOL111Sにコピーされると、プール113Sでフリーページが不足してしまう可能性がある。具体的には、例えば、図25Aに示した状況において、プール113Sにフリーページが無い場合、SVOL111Sに新たに実ページを割り当てることはできない。
 そこで、図25Bに示すように、制御プログラム551は、PVOL111P内の全てのデータをSVOL113Sにコピーする前に、SVOL113Sに割り当てられている全ての実ページをフリーページとすることがある。具体的には、例えば、制御プログラム551は、以下の処理(f1)~(f4)を行う。
(f1)制御プログラム551は、PVOL111Pに対応したマッピングテーブル503と、SVOL111Sに対応したマッピングテーブル503と、プール管理テーブル504とを基に、PVOL111Pに割り当てられている実ページの数以上のフリーページがプール113Sにあるか否かを判断する。
(f2)(f1)の判断の結果が肯定的の場合、制御プログラム551は、SVOL111Sに割り当てられている全ての実ページをゼロ書きページとし、且つ、PVOL111P内の全てのデータをSVOL111Sにコピーする。その際、SVOL111Sには、コピーの進捗に応じて、適宜にプール113Sからフリーページが割り当てられるが、フリーページが不足することはない。
(f3)(f2)の判断の結果が否定的の場合、制御プログラム551は、以下の処理を行う、
(f3-1)制御プログラム551は、SVOL111Sに割り当てられている全ての実ページをゼロ書きページとする。
(f3-2)制御プログラム551は、PVOL111PからSVOL111Sへのデータのコピーを、少なくとも、PVOL111Pに割り当てられている実ページの数と同数のフリーページがプール113Sにできるまで、待つ。
(f3-3)(f3-2)の間、制御プログラム551は、プール113S内のゼロ書きページにゼロ書きを行うことで、そのゼロ書きページをフリーページに変える。つまり、制御プログラム551は、プール113Sにフリーページを増やす。その際、制御プログラム551は、スリープ時間(或るゼロ書きページに対するゼロ書きを行ってから次にゼロ書きページに対するゼロ書きを行うまでの時間長)を最短にして良い。
(f4)(f3-3)により、PVOL111Pに割り当てられている実ページの数以上のフリーページがプール113Sにできた場合、制御プログラム551は、(f3-2)を終了し、PVOL111PからSVOL111Sへのデータのコピーを行う。
 PVOL111PからSVOL111Sへのデータのコピーが終了した場合、図25Cに示すように、SVOL111Sに、PVOL111Pに割り当てられていた実ページの数と同数の実ページがプール113Sから割り当てられていることになる。なお、PVOL111PからSVOL111Sへのデータのコピーがマイグレーションの場合、制御プログラム551は、PVOL111Pに割り当てられた全ての実ページを、ゼロ書きページに変更して良い。
 以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、実施例1乃至6のうちの2以上の実施例が組み合わされても良い。
 例えば、図20のS2007、及び/又は、図22AのS2201では、比較される容量は、ページ数で表れた容量であるが、それに代えて、メガバイト或いはギガバイトといった他種の単位で表現された容量でも良い。
 また、例えば、コントローラ131の構成は、図3に示した構成に限られない。例えば、CHA及びDKAが有するMP(マイクロプロセッサ)を有することに代えて、CHA及びDKAとは別のモジュール(プロセッサモジュール)がMPを有しても良い。
 101…ストレージ装置

Claims (15)

  1.  物理記憶デバイス群と、
     ホストと前記物理記憶デバイス群とに接続されたコントローラと
    を有し、
     Thin Provisioningが適用された仮想的な論理ボリュームであり複数の仮想領域で構成された仮想ボリュームがあり、
     前記物理記憶デバイス群に基づくプールがあり、前記プールは、複数の実領域で構成され、
     前記実領域のステータスとして、(1)初期化済みであり仮想領域に割当て可能であることを意味する第1ステータス、(2)仮想領域に割り当てられていることを意味する第2ステータス、及び、(3)仮想領域に割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがあり、
     前記コントローラは、下記の処理を行うようになっており、
    (a)前記ホストから前記仮想ボリューム内の未割当ての仮想領域に対するライトコマンドを受信し、前記仮想ボリュームが関連付けられているプールから、前記第1ステータスの実領域を割り当て、その実領域のステータスを前記第2のステータスに変更し、
    (b)前記仮想領域に割り当てられている実領域のステータスを、前記第3ステータスに変更し、
    (c)前記第3ステータスの実領域を初期化し、その初期化が終了した場合に、その実領域のステータスを、前記第1ステータスに変更し、
     前記コントローラが、前記プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、前記第3ステータスの実領域を前記プールが有するか否かを基に、前記プールの容量以下に制限する、
    ストレージ装置。
  2.  請求項1記載のストレージ装置であって、
     (f)前記コントローラは、仮想ボリューム総容量が増える増加処理の要求である増加要求を受信し、
     (g)前記コントローラは、下記(p)の値が下記(q)の値以上か否かを判断し、
    (p)前記プールの容量と、前記プール内の第3ステータスの実領域の総容量との差、
    (q)仮想ボリューム総容量の増加分の容量と、仮想ボリューム総容量との和、
     (h)前記コントローラは、前記(g)の判断の結果が肯定的の場合、前記増加処理を実行する、
    ストレージ装置。
  3.  請求項2記載のストレージ装置であって、
     前記コントローラが、1つの第3ステータスの実領域を初期化し、且つ、その実領域のステータスを第1ステータスに変更することで、前記プールから第3ステータスの実領域が1つ減り、
     (i)前記コントローラは、前記(g)の判断の結果が否定的の場合、前記(p)の値が前記(q)の値以上になるぐらいに、前記プールから前記第3ステータスの実領域が減るまで、待ち、その後、前記増加処理を実行する、
    ストレージ装置。
  4.  請求項3記載のストレージ装置であって、
     前記物理記憶デバイス群に基づく複数のプールがあり、
     前記コントローラは、前記(i)において、前記プール内の第3ステータスの実領域を初期化することを、前記複数のプールのうちの別のプール内の第3ステータスの実領域を初期化することよりも優先する、
    ストレージ装置。
  5.  請求項4記載のストレージ装置であって、
     前記コントローラは、スリープ時間周期で、前記プール内の1つの第3ステータスの実領域を初期化し、
     前記(i)の前、前記スリープ時間は、第1の時間であり、
     前記コントローラは、前記(i)において、前記スリープ時間を、前記第1の時間より短い第2の時間に変更する、
    ストレージ装置。
  6.  請求項5記載のストレージ装置であって、
     前記増加処理は、新たに仮想ボリュームを前記プールに関連付ける処理、又は、前記プールに関連付けられている仮想ボリュームの容量を拡張する処理である、
    ストレージ装置。
  7.  請求項2記載のストレージ装置であって、
     (j)前記コントローラは、前記(g)の判断の結果が否定的の場合、前記増加処理を実行しない、
    ストレージ装置。
  8.  請求項1記載のストレージ装置であって、
     (t)前記コントローラは、仮想ボリューム総容量が増える増加処理の要求である増加要求を受信し、
     (u)前記コントローラは、前記プールの容量が、仮想ボリューム総容量の増加分の容量と仮想ボリューム総容量との和以上か否かを判断し、
     (v)前記コントローラは、前記(u)の判断の結果が肯定的の場合、前記プールが第3ステータスの実領域を有するか否かを判断し、
     (w)前記コントローラは、前記(v)の判断の結果が否定的の場合、前記増加処理を実行する、
    ストレージ装置。
  9.  請求項8記載のストレージ装置であって、
     (x)前記コントローラは、前記(v)の判断の結果が肯定的の場合、前記増加処理を実行しない、
    ストレージ装置。
  10.  請求項1記載のストレージ装置であって、
     前記コントローラは、管理情報を記憶する記憶資源と、コンピュータプログラムを実行するプロセッサとを有し、
     前記管理情報は、前記仮想ボリュームの容量を表す情報と、前記プールに関連付けられている仮想ボリュームを表す情報と、前記プールの容量を表す情報と、前記プール内の各実ページのステータスを表す情報とを含み、
     前記プロセッサは、前記コンピュータプログラムを起動した場合、その起動が初めてか否かを判断し、その判断の結果が肯定的の場合、前記管理情報を基に、前記プールに関連付けられている仮想ボリュームの総容量を算出し、算出された仮想ボリューム総容量を表す情報を、前記管理情報に含める、
    ストレージ装置。
  11.  請求項1記載のストレージ装置であって、
     前記物理記憶デバイス群に基づく複数のプールがあり、
     第1のモードと、第2のモードがあり、
     前記第1のモードがONの場合、前記複数のプールの全てが、仮想ボリューム総容量がプール容量以下に制限され、
     前記第2のモードがONの場合、前記複数のプールのうち所定の条件を満たすプールだけが、仮想ボリューム総容量がプール容量以下に制限され、
     前記第1のモードと前記第2のモードの両方がONの場合、前記第1のモードが優先される、
    ストレージ装置。
  12.  請求項1記載のストレージ装置であって、
     第1及び第2のプールがあり、
     第1及び第2の仮想ボリュームがあり、
     前記第1のプールは、仮想ボリューム総容量がプール容量以下に制限されるプールであり、
     前記第2のプールは、仮想ボリューム総容量がプール容量以下に制限されないプールであり、
     前記第1の仮想ボリュームが、前記第1のプールに関連付けられており、
     前記第2の仮想ボリュームが、前記第2のプールに関連付けられており、
     (A)前記コントローラが、前記第2のプールから前記第2の仮想ボリュームに割り当てられている全ての実ページのステータスを、第3ステータスに変更し、
     (B)前記コントローラが、前記第1のプールから前記第1の仮想ボリュームに割り当てられている全ての実ページ内のデータを、前記第1の仮想ボリュームから前記第2の仮想ボリュームにコピーすることを、前記第2のプール内の第3ステータスの実ページが初期化され、且つ、その実ページのステータスが第1ステータスに変わるまで、待つ、
    ストレージ装置。
  13.  請求項1記載のストレージ装置であって、
     前記コントローラが、前記プール内の第3ステータスの実ページの総容量を算出し、算出された総容量を表示するための情報を出力する、
    ストレージ装置。
  14.  プールに関連付けられる仮想ボリュームの総容量を制限する方法であって、
     前記プールは、物理記憶デバイス群に基づく複数の実領域で構成されており、
     前記仮想ボリュームは、Thin Provisioningが適用された仮想的な論理ボリュームであり、複数の仮想領域で構成されており、
     前記実領域のステータスとして、(1)初期化済みであり仮想領域に割当て可能であることを意味する第1ステータス、(2)仮想領域に割り当てられていることを意味する第2ステータス、及び、(3)仮想領域に割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがあり、
     前記実領域のステータスは、下記のように遷移し、
    (a)ホストから前記仮想ボリューム内の未割当ての仮想領域に対するライトの際に、前記仮想ボリュームが関連付けられているプールから、前記第1ステータスの実領域が割り当てられ、その実領域のステータスが、前記第2のステータスに変更され、
    (b)前記仮想領域に割り当てられている実領域のステータスが、前記第3ステータスに変更され、
    (c)前記第3ステータスの実領域が初期化され、その初期化が終了した場合に、その実領域のステータスが、前記第1ステータスに変更され、
     前記方法が、前記プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、前記第3ステータスの実領域を前記プールが有するか否かを基に、前記プールの容量以下に制限する、
    方法。
  15.  ホストに対する通信インタフェース装置と、
     前記通信インタフェース装置に接続されたプロセッサと
    を有し、
     Thin Provisioningが適用された仮想的な論理ボリュームであり複数の仮想領域で構成された仮想ボリュームがあり、
     物理記憶デバイス群に基づくプールがあり、前記プールは、複数の実領域で構成され、
     前記実領域のステータスとして、(1)初期化済みであり仮想領域に割当て可能であることを意味する第1ステータス、(2)仮想領域に割り当てられていることを意味する第2ステータス、及び、(3)仮想領域に割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがあり、
     前記プロセッサは、下記の処理を行うようになっており、
    (a)前記ホストから前記仮想ボリューム内の未割当ての仮想領域に対するライトコマンドを受信し、前記仮想ボリュームが関連付けられているプールから、前記第1ステータスの実領域を割り当て、その実領域のステータスを前記第2のステータスに変更し、
    (b)前記仮想領域に割り当てられている実領域のステータスを、前記第3ステータスに変更し、
    (c)前記第3ステータスの実領域を初期化し、その初期化が終了した場合に、その実領域のステータスを、前記第1ステータスに変更し、
     前記プロセッサが、前記プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、前記第3ステータスの実領域を前記プールが有するか否かを基に、前記プールの容量以下に制限する、
    記憶制御装置。
PCT/JP2010/003018 2010-04-27 2010-04-27 プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置 WO2011135617A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2010/003018 WO2011135617A1 (ja) 2010-04-27 2010-04-27 プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置
JP2012512531A JP5303066B2 (ja) 2010-04-27 2010-04-27 プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置
US12/935,908 US8677080B2 (en) 2010-04-27 2010-04-27 Method of controlling total capacity of virtual volumes associated with pool and storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/003018 WO2011135617A1 (ja) 2010-04-27 2010-04-27 プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置

Publications (1)

Publication Number Publication Date
WO2011135617A1 true WO2011135617A1 (ja) 2011-11-03

Family

ID=44816768

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/003018 WO2011135617A1 (ja) 2010-04-27 2010-04-27 プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置

Country Status (3)

Country Link
US (1) US8677080B2 (ja)
JP (1) JP5303066B2 (ja)
WO (1) WO2011135617A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016129053A1 (ja) * 2015-02-10 2016-08-18 株式会社日立製作所 ストレージ装置の管理計算機
JP2017130132A (ja) * 2016-01-22 2017-07-27 Necプラットフォームズ株式会社 ストレージアクセス制御装置、ストレージアクセス制御システム、ストレージアクセス制御方法、及び、ストレージアクセス制御プログラム
JP2020060983A (ja) * 2018-10-10 2020-04-16 株式会社日立製作所 ストレージシステム及びストレージ制御方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8543786B2 (en) * 2010-09-29 2013-09-24 Hitachi, Ltd. Computer system and computer system management method for adding an unused real volume to a pool
US8495331B2 (en) * 2010-12-22 2013-07-23 Hitachi, Ltd. Storage apparatus and storage management method for storing entries in management tables
WO2014002162A1 (ja) * 2012-06-25 2014-01-03 富士通株式会社 ストレージ制御装置、情報処理装置、ストレージ制御プログラム、及びストレージ制御方法
US9104590B2 (en) * 2012-07-20 2015-08-11 Hitachi, Ltd. Storage system including multiple storage apparatuses and pool virtualization method
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
US9201598B2 (en) * 2012-09-14 2015-12-01 International Business Machines Corporation Apparatus and method for sharing resources between storage devices
US10248320B2 (en) * 2016-10-28 2019-04-02 International Business Machines Corporation Workload-aware thin-provisioning storage-allocation system
EP3695319B1 (en) * 2017-09-27 2022-11-23 Telefonaktiebolaget LM Ericsson (publ) Method and reallocation component for managing reallocation of information from source to target memory sled
US11249852B2 (en) 2018-07-31 2022-02-15 Portwonx, Inc. Efficient transfer of copy-on-write snapshots
US11354060B2 (en) 2018-09-11 2022-06-07 Portworx, Inc. Application snapshot for highly available and distributed volumes
US11494128B1 (en) 2020-01-28 2022-11-08 Pure Storage, Inc. Access control of resources in a cloud-native storage system
US11531467B1 (en) 2021-01-29 2022-12-20 Pure Storage, Inc. Controlling public access of resources in a secure distributed storage system
US11520516B1 (en) 2021-02-25 2022-12-06 Pure Storage, Inc. Optimizing performance for synchronous workloads
US11733897B1 (en) 2021-02-25 2023-08-22 Pure Storage, Inc. Dynamic volume storage adjustment
US11726684B1 (en) 2021-02-26 2023-08-15 Pure Storage, Inc. Cluster rebalance using user defined rules

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008097502A (ja) * 2006-10-16 2008-04-24 Hitachi Ltd 容量監視方法及び計算機システム
JP2010033261A (ja) * 2008-07-28 2010-02-12 Hitachi Ltd ストレージ装置及びその制御方法
JP2010073095A (ja) * 2008-09-22 2010-04-02 Hitachi Ltd 計算機システム及びその制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7032093B1 (en) 2002-08-08 2006-04-18 3Pardata, Inc. On-demand allocation of physical storage for virtual volumes using a zero logical disk
US6823442B1 (en) 2003-05-12 2004-11-23 3Pardata, Inc. Method of managing virtual volumes in a utility storage server system
US8918585B2 (en) * 2010-01-28 2014-12-23 Hitachi, Ltd. Management system calculating storage capacity to be installed/removed

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008097502A (ja) * 2006-10-16 2008-04-24 Hitachi Ltd 容量監視方法及び計算機システム
JP2010033261A (ja) * 2008-07-28 2010-02-12 Hitachi Ltd ストレージ装置及びその制御方法
JP2010073095A (ja) * 2008-09-22 2010-04-02 Hitachi Ltd 計算機システム及びその制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016129053A1 (ja) * 2015-02-10 2016-08-18 株式会社日立製作所 ストレージ装置の管理計算機
JP2017130132A (ja) * 2016-01-22 2017-07-27 Necプラットフォームズ株式会社 ストレージアクセス制御装置、ストレージアクセス制御システム、ストレージアクセス制御方法、及び、ストレージアクセス制御プログラム
WO2017126586A1 (ja) * 2016-01-22 2017-07-27 Necプラットフォームズ株式会社 ストレージアクセス制御装置、ストレージアクセス制御システム、ストレージアクセス制御方法、及び、ストレージアクセス制御プログラムが格納された記録媒体
JP2020060983A (ja) * 2018-10-10 2020-04-16 株式会社日立製作所 ストレージシステム及びストレージ制御方法
US11740823B2 (en) 2018-10-10 2023-08-29 Hitachi, Ltd. Storage system and storage control method

Also Published As

Publication number Publication date
US8677080B2 (en) 2014-03-18
US20110264868A1 (en) 2011-10-27
JP5303066B2 (ja) 2013-10-02
JPWO2011135617A1 (ja) 2013-07-18

Similar Documents

Publication Publication Date Title
JP5303066B2 (ja) プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置
JP5314772B2 (ja) 性能の異なる実領域群で構成されたプールを有するストレージシステムの管理システム及び方法
US8612704B2 (en) Storage system with virtual areas and method for managing storage system
JP5749803B2 (ja) 情報記憶システム及びストレージシステム管理方法
JP4684864B2 (ja) 記憶装置システム及び記憶制御方法
EP1837751B1 (en) Storage system, storage extent release method and storage apparatus
JP5080611B2 (ja) ThinProvisioningが適用されたストレージ装置
JP5706531B2 (ja) 計算機システム、及び情報管理方法
WO2012049711A1 (en) Data migration system and data migration method
US9250813B2 (en) Storage system coupled to a host computer and a management device
US20130036279A1 (en) Storage system using real data storage area dynamic allocation method
US20120297156A1 (en) Storage system and controlling method of the same
WO2013098960A1 (ja) 計算機システム、ファイル管理方法及び記憶媒体
JP2011070345A (ja) 計算機システム、計算機システムの管理装置、計算機システムの管理方法
JP5957520B2 (ja) データ管理システム及び方法
US7676644B2 (en) Data processing system, storage apparatus and management console
JP6772202B2 (ja) ストレージシステム及び記憶制御方法
JP6019169B2 (ja) 情報記憶システム
WO2017085792A1 (ja) ストレージシステム、及びストレージシステムの制御方法
JP7113698B2 (ja) 情報システム
JP2015111460A (ja) 管理計算機、計算機システム、及び管理方法
WO2018167950A1 (ja) ストレージシステム及び複製制御方法
JP2024079042A (ja) ストレージシステム及び記憶制御方法
JP2018169637A (ja) 情報処理装置,仮想化プログラムおよび仮想化方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 12935908

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10850640

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012512531

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10850640

Country of ref document: EP

Kind code of ref document: A1