WO2017175285A1 - 計算機システム、物理記憶デバイスの制御方法、および記録媒体 - Google Patents

計算機システム、物理記憶デバイスの制御方法、および記録媒体 Download PDF

Info

Publication number
WO2017175285A1
WO2017175285A1 PCT/JP2016/061057 JP2016061057W WO2017175285A1 WO 2017175285 A1 WO2017175285 A1 WO 2017175285A1 JP 2016061057 W JP2016061057 W JP 2016061057W WO 2017175285 A1 WO2017175285 A1 WO 2017175285A1
Authority
WO
WIPO (PCT)
Prior art keywords
physical storage
mapping information
mapping
logical
physical
Prior art date
Application number
PCT/JP2016/061057
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 US16/081,389 priority Critical patent/US10678470B2/en
Priority to JP2018510036A priority patent/JP6663482B2/ja
Priority to PCT/JP2016/061057 priority patent/WO2017175285A1/ja
Publication of WO2017175285A1 publication Critical patent/WO2017175285A1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0689Disk arrays, e.g. RAID, JBOD

Definitions

  • the present invention relates to a computer system.
  • a storage system that configures a RAID (Redundant Array of Independent (or Independent) Disks) group by a plurality of storage devices and provides a logical volume created based on the RAID group to a higher-level device (for example, a host computer) is known. ing.
  • RAID Redundant Array of Independent (or Independent) Disks
  • Patent Document 1 discloses a technique for managing a stripe column including normal data and redundant data for restoring normal data by distributing it to a plurality of storage devices that provide a storage area for a capacity pool.
  • a so-called distributed RAID system is disclosed.
  • the distributed RAID system In addition to the distributed RAID system, generally, when a capacity is added to a storage system configured by a RAID group having redundant data, that is, when an additional drive is added, the added drive has the same redundancy as the existing area. Is secured in units of the number of drives constituting the RAID group. However, since one set of RAID group may be composed of 20 or more drives, the high cost of adding capacity becomes a problem.
  • the storage media in the system is an AFA (All Flash Array) consisting only of SSD (Solid State Drive) with a high bit cost or a storage system with a small number of installed drives, the impact of this problem Is remarkable.
  • AFA All Flash Array
  • SSD Solid State Drive
  • a computer system is such that d is an integer greater than or equal to 2, d physical storage devices, and a computer connected to the d physical storage devices; Is provided.
  • n is an integer of 2 or more
  • v is an integer of 1 or more
  • n ⁇ v ⁇ d physical storage areas are created in each physical storage device.
  • Mapping information for creating a storage area creating v ⁇ d logical chunks each having a size of n physical storage areas, and associating n physical storage areas with each logical chunk, Stores the mapping information created under the mapping condition that the n physical storage areas associated with the chunk are included in n physical storage devices, and r is an integer equal to or greater than 1, r When d + r physical storage devices are connected to the computer by connecting the physical storage devices to the computer, v ⁇ r logical chunks are added and n ⁇ v in each additional storage device are added.
  • mapping information is changed to mapping information that associates n physical storage areas with each of v ⁇ (d + r) logical chunks, and in response to a user data write request, Redundant data based on user data is created, a first logical chunk corresponding to the write request is determined, and n element data including the user data and the redundant data are determined based on the mapping information.
  • Each of the n physical storage areas corresponding to the logical chunk is written.
  • Redundancy can be ensured even if physical storage devices are added in units smaller than the physical storage devices constituting one RAID group. This makes it possible to minimize the cost of adding capacity even in an AFA (All Flash Array) configured only with an SSD having a high bit cost, or in a storage system with a small number of installed drives or less in the mid range.
  • AFA All Flash Array
  • the degree of freedom of expansion can be increased by arbitrarily selecting the number of drives to be expanded in consideration of performance and cost.
  • the minimum number of drives when the distributed RAID system is applied can be reduced to 1 parity group + 1 unit, and the initial installation cost can be minimized.
  • FIG. 2 shows a hardware configuration of a computer system according to the present embodiment.
  • 2 shows a logical configuration of a computer system according to the present embodiment.
  • the data structure of a physical storage drive is shown.
  • the page mapping of a virtual volume is shown.
  • Fig. 4 shows parcel mapping between VPG and PPG.
  • An example of parcel mapping in the first configuration case in which the number of physical drives is an integer multiple of N is shown.
  • An example of parcel mapping in the second configuration case in which the number of physical drives is not an integer multiple of N is shown.
  • An example of rebuild operation when one drive in the first configuration case fails will be described.
  • a pool management table is shown.
  • a drive status management table is shown. Indicates a page mapping table.
  • 7 shows a SWAP pointer table.
  • a mapping correction table is shown.
  • the mapping reverse correction table is shown.
  • the 1st extension case of a single extension process is shown.
  • the concept of the mapping pattern generation method in a 1st extension case is shown.
  • the 2nd expansion case of a single expansion process is shown. Indicates a single expansion process.
  • a single extension mapping generation process is shown.
  • An exact match pair SWAP process is shown.
  • the partially matched pair SWAP process is shown.
  • the mismatch pair SWAP process is shown.
  • the parcel rebalancing process is shown.
  • the concept of page allocation processing is shown.
  • the page allocation process is shown.
  • An LP conversion process is shown.
  • the PL conversion process is shown.
  • the mapping correction process is shown.
  • the mapping reverse correction process is shown.
  • various types of information may be described using the expression “aaa table”, but the various types of information may be expressed using a data structure other than a table.
  • the “aaa table” can also be referred to as “aaa information” to indicate that it does not depend on the data structure.
  • the process may be described using “program” as a subject. However, the program is executed by a processor (for example, a CPU (Central Processing Unit)) so that a predetermined process can be appropriately performed. Since the processing is performed using a storage resource (for example, a memory) and / or a communication interface device (for example, a port), the subject of the processing may be a program.
  • a processor for example, a CPU (Central Processing Unit)
  • a storage resource for example, a memory
  • a communication interface device for example, a port
  • the processing described with the program as the subject may be processing performed by a processor or a computer having the processor (for example, a management computer, a host computer, a controller, etc.).
  • the controller storage controller
  • the program may be installed in each controller from a program source.
  • the program source may be, for example, a program distribution server or a computer-readable storage medium.
  • an ID is used as element identification information, but other types of identification information may be used instead of or in addition thereto.
  • a reference number or a common number in the reference number is used, and when a description is made by distinguishing the same type of element, the reference number of the element is used.
  • an ID assigned to the element may be used instead of the reference code.
  • an I / O (Input / Output) request is a write request or a read request, and may be called an access request.
  • the RAID group may be called a PG (Parity Group).
  • FIG. 1 shows an outline of mapping between a virtual storage area and a physical storage area in the computer system of this embodiment.
  • the upper part of this figure shows the virtual storage area, and the lower part of this figure shows the physical storage area.
  • the computer system of this embodiment provides a virtual volume to the host and allocates a virtual storage area provided by the virtual storage drive 402 to the virtual volume.
  • the virtual storage area is, for example, a page.
  • a virtual parity group (VPG) 204 including a plurality of virtual storage drives 402 is configured.
  • four virtual storage drives 402 constitute one virtual parity group 204.
  • three virtual parity groups 204 are shown, and VPG # (number) is given to each.
  • Each drive belonging to each virtual parity group 204 is given a VCDEV (Virtual Column Device) # indicating a position in the virtual parity group.
  • four virtual storage drives 402 are shown in each virtual parity group 204, and different VCDEV # are given to each.
  • the virtual parity group 204 is a RAID (Redundant Array of Inexpensive Disks) group, and stores a redundant data set across a plurality of virtual storage drives 402.
  • the redundant data set is a data set for rebuilding data in RAID, and includes data from the host and redundant data.
  • the virtual storage area is divided into virtual stripes 405 of a predetermined size.
  • a virtual stripe 405 having a specific logical address in each of the plurality of virtual storage drives 402 in the virtual parity group 204 constitutes a virtual stripe column 406.
  • four virtual stripes 405 constitute one virtual stripe column 406.
  • the virtual stripe column 406 stores redundant data sets.
  • the redundant data set includes data D from the host and parity P based on the data D.
  • Each virtual stripe 405 in one virtual stripe column 406 stores data D or parity P in the corresponding redundant data set.
  • the data D may be referred to as user data.
  • the parity P may be referred to as redundant data.
  • Data stored in each virtual stripe in the redundant data set may be referred to as element data.
  • one virtual stripe 405 or a predetermined number of virtual stripes 405 with continuous logical addresses constitute one virtual parcel 400.
  • two virtual stripes 405 having consecutive logical addresses constitute one virtual parcel 400.
  • a predetermined number of virtual stripe columns 406 having continuous logical addresses constitute a virtual chunk (Vchunk) 401.
  • the virtual chunk 401 is one virtual parcel string.
  • the virtual parcel string is composed of virtual parcels 400 having specific logical addresses in each of the plurality of virtual storage drives 402 in one virtual parity group 204.
  • one virtual chunk 401 is composed of one or more virtual stripe columns 406 having continuous logical addresses.
  • one virtual chunk 401 is composed of two virtual stripe columns 406 having continuous logical addresses.
  • 12 virtual chunks 401 are shown, and Vchunk # in the VPG 204 is assigned to each.
  • the virtual parcel 400 is composed of one virtual stripe 405
  • the virtual chunk 401 is composed of one virtual stripe column 406.
  • a pair of numbers written in each virtual parcel 400 is a Vchunk identifier represented by VPG # and Vchunk #.
  • the virtual storage area is mapped to the physical storage area provided by the physical storage drive 170.
  • a physical parity group (PPG: Physical Parity Group) 205 including a plurality of physical storage drives 170 is configured.
  • PPG Physical Parity Group
  • four physical storage drives 170 constitute one physical parity group 205.
  • three physical parity groups 205 are shown, each assigned a PPG #.
  • the mapping between the virtual storage area and the physical storage area may be referred to as parcel mapping.
  • a PCDEV (Physical Column Device) # indicating a position in the physical parity group is given to each drive belonging to each physical parity group 205.
  • four physical storage drives 170 are shown in each physical parity group 205, and different PCDEV # s are assigned to each.
  • Each virtual parcel 400 in the virtual chunk 401 is mapped to the physical parcel 701 in the physical storage area.
  • a number in each physical parcel 701 indicates a Vchunk identifier (VPG # and Vchunk #) to which the corresponding virtual parcel 400 belongs, and “S” indicates a spare area.
  • a physical chunk (Pchunk: Physical chunk) 501 is configured in the physical storage area.
  • the physical chunk 501 includes a physical parcel 701 having a specific physical address in each of a plurality of physical storage drives 170 in one physical parity group 205.
  • Pchunk # is given to each.
  • Each physical chunk 501 is identified by Pchunk # and PPG #.
  • a plurality of virtual parcels 400 in the virtual chunk 401 are mapped to a plurality of different physical storage drives 170 for failure recovery.
  • the plurality of virtual stripes 405 in the virtual stripe column 406 are also mapped to a plurality of different physical storage drives 170.
  • the redundant data set includes element data (data D or parity P) of the number of physical storage drives in the physical parity group, which are respectively written to the physical storage drives 170 of the number of physical storage drives in the physical parity group. It is.
  • a plurality of virtual parcels 400 included in the virtual chunk 401 are distributed and mapped to one or more physical parity groups 205. That is, the virtual stripes 405 constituting each virtual chunk 401 can be distributed and mapped to a plurality of physical parity groups 205.
  • the computer system reduces the concentration of the I / O processing load on the specific physical storage drive 170.
  • Parcel mapping satisfies the mapping conditions.
  • the mapping condition is that each virtual chunk 401 is mapped to a plurality of physical storage drives 170.
  • the mapping condition is that a plurality of physical parcels 701 in one physical storage drive 170 are not mapped to the same virtual chunk 401.
  • a physical chunk 501 of a predetermined Pchunk # is assigned to a spare area, and in the example of this figure, a physical chunk 501 whose Pchunk # is 0 is assigned to a spare area.
  • Patent Document 1 the configuration shown in Patent Document 1 is used as an example for realizing the present embodiment, but the present embodiment is not limited to the configuration shown in Patent Document 1.
  • FIG. 2 shows a hardware configuration of the computer system according to this embodiment.
  • the computer system 1 includes one or more host computers (hereinafter referred to as hosts) 10, a management server 20, a storage controller 100, and a drive enclosure 160.
  • hosts The host computer 10, the management server 20, and the storage controller 100 are connected via a network 30.
  • the drive enclosure 160 is connected to the storage controller 100.
  • the network 30 may be a local area network (LAN: Local Area Network) or a wide area network (WAN: Wide Area Network).
  • the host 10 and the storage controller 100 may be a single computer. Each of the host 10 and the storage controller 100 may be a virtual machine.
  • the host 10 is, for example, a computer that executes an application, reads data used by the application from the storage controller 100, and writes data created by the application to the storage controller 100.
  • Management server 20 is a computer used by an administrator.
  • the management server 20 may include an input device for inputting information and an output device for displaying information.
  • the management server 20 receives the setting of the type of data restoration processing for data restoration by the operation of the administrator with respect to the input device, and sets the storage controller 100 to execute the received data restoration processing.
  • the storage system includes a storage controller 100 and a drive enclosure 160, for example.
  • the drive enclosure 160 includes a plurality of physical storage drives 170 (also simply referred to as drives).
  • the physical storage drive 170 includes one or more storage media.
  • the storage medium is, for example, a magnetic disk, flash memory, or other nonvolatile semiconductor memory (PRAM, ReRAM, etc.).
  • the storage controller 100 includes one or more front-end packages (FEPK: Front End PacKage) 110, a maintenance interface (maintenance I / F) 112, one or more CPUs 120, and one or more cache memory packages (CMPK: CM PacKage) 130. And one or more back-end packages (BEPK: BackEnd PacKage) 140 and an internal network 150.
  • FEPK Front End PacKage
  • maintenance interface maintenance I / F
  • CMPK cache memory packages
  • BEPK BackEnd PacKage
  • the FEPK 110, the maintenance I / F 112, the CPU 120, the CMPK 130, and the BEPK 140 are connected via the internal network 150.
  • the BEPK 140 is connected to the drive enclosure 160 via a plurality of paths.
  • the FEPK 110 is an example of an interface with the host 10 and has one or more ports 111.
  • the port 111 connects the storage controller 100 to various devices via the network 30 or the like.
  • the maintenance I / F 112 is an interface for connecting the storage controller 100 to the management server 20.
  • the CPU 120 is a control unit, and includes one or more cores 121 and a local memory (LM) 122.
  • the Core 121 executes various processes by executing a program stored in the LM 122.
  • the Core 121 transmits various commands (for example, a READ command and a WRITE command in SCSI) to the physical storage drive 170 in the drive enclosure 160 via the BEPK 140.
  • the LM 122 stores various programs and various information.
  • the CMPK 130 has one or more cache memories (CMs) 131.
  • the CM 131 temporarily stores data (write data) to be written from the host 10 to the physical storage drive 170 and data (read data) read from the physical storage drive 170.
  • the BEPK 140 is an example of an interface with the drive enclosure 160 and has one or more ports 111.
  • the drive enclosure 160 has a plurality of physical storage drives 170.
  • the storage controller 100 manages a capacity pool (hereinafter simply referred to as “pool”) composed of storage areas of a plurality of physical storage drives 170.
  • the storage controller 100 configures a RAID group using storage areas in the pool. That is, the storage controller 100 forms a plurality of virtual parity groups (VPGs) using a plurality of physical storage drives 170.
  • VPG is a virtual RAID group.
  • the VPG storage area is composed of a plurality of sub storage area columns.
  • Each sub storage area column is composed of a plurality of sub storage areas.
  • the plurality of sub storage areas extend over the plurality of physical storage drives 170 constituting the VPG, and correspond to the plurality of physical storage drives 170, respectively.
  • one sub storage area is referred to as a “stripe”
  • a sub storage area column is referred to as a “stripe column”.
  • a storage area of the RAID group is configured by a plurality of stripe columns.
  • RAID levels There are several levels of RAID (hereinafter referred to as “RAID levels”). For example, in RAID5, write target data designated by a host computer corresponding to RAID5 is divided into data of a predetermined size (hereinafter referred to as “data unit” for convenience). Each data unit is divided into a plurality of data elements. A plurality of data elements are respectively written in a plurality of stripes in the same stripe array.
  • parity redundant information
  • Redundant code Redundant codes are also written to stripes in the same stripe column as a plurality of data elements.
  • the number of physical storage drives 170 constituting a RAID group is 4, three data elements constituting a data unit are written in three stripes corresponding to three physical storage drives 170 among them.
  • the redundancy code is written in the stripe corresponding to the remaining one physical storage drive 170.
  • the data element and the redundant code are not distinguished from each other, they may be referred to as stripe data elements.
  • RAID 6 two types of redundant codes (P parity and Q parity) are generated for each data unit, and each redundant code is written in a stripe in the same stripe column. Thereby, when two data elements out of a plurality of data elements constituting a data unit cannot be read, these two data elements can be restored.
  • RAID levels other than those described above for example, RAID 1 to 4
  • a data redundancy technique there are a triple mirror (Triplication), a triple parity technique using three parities, and the like.
  • the redundant code generation technique there are various techniques such as a Reed-Solomon code using Galois operation and EVEN-ODD.
  • RAID 5 or 6 will be mainly described, but the redundancy technique can be replaced with the method described above.
  • the storage controller 100 restores the data elements stored in the failed physical storage drive 170 when any one of the physical storage drives 170 fails.
  • the Core 121 in the CPU (Central Processing Unit) 120 stores the stripe data elements (for example, other data elements and parity) necessary for restoring the data elements stored in the failed physical storage drive 170 as the data. Obtained from a plurality of stored physical storage drives 170.
  • the Core 121 stores the acquired stripe data element in a cache memory (CM: Cache Memory) 131 via an interface device (for example, BEPK140). Thereafter, the data element is restored based on the stripe data element of the cache memory 131, and the data element is stored in the predetermined physical storage drive 170.
  • CM Cache Memory
  • the Core 121 For a data unit of a RAID group configured with RAID 5, the Core 121 generates P parity by taking an exclusive OR (XOR) of a plurality of data elements constituting the data unit. For the data unit of the RAID group configured with RAID 6, the Core 121 further multiplies a plurality of data elements constituting the data unit by a predetermined coefficient, and then performs exclusive OR of the respective data. Q parity is generated.
  • XOR exclusive OR
  • the operation of the Core 121 may be described as the operation of the storage controller 100.
  • FIG. 3 shows a logical configuration of the computer system according to the present embodiment.
  • the storage controller 100 forms a physical parity group (PPG) 205 by bundling a plurality of, for example, four drives 170.
  • the storage controller 100 constitutes a DG (Distribution Group) 207 including one or more physical parity groups 205 and one or more virtual parity groups (VPG) 204 corresponding thereto.
  • DG Distribution Group
  • the storage controller 100 allocates a partial storage area of the plurality of PPGs 205 in the DG 207 to the VPG 204 in the same DG 207.
  • the virtual stripe column that is a virtual stripe column in the VPG 204 is distributed to the plurality of PPG 205 drives within the range of the DG 207. That is, an access to the drive 170 that exceeds the range of the DG 207 to which the VPG 204 belongs is not executed by an I / O request to the VPG 204.
  • a pool 200 that is a set of logical storage capacities includes one or more DGs 207.
  • the storage controller 100 may have a plurality of types of drives having different performance characteristics, such as a flash memory drive, a SAS drive, and a SATA drive, as the drive 170, for example.
  • the drive 170 is classified into a tier 206 according to different characteristics. Since the Tier 206 has different performance characteristics, if the DG 207 is configured with the drives 170 belonging to different Tiers 206, a drive with low performance becomes a bottleneck. For this reason, the DG 207 is preferably configured to include only the drive 170 belonging to a single Tier 206.
  • VVOL Virtual VOLume
  • the VVOL 201 is a virtual storage device and can be referenced from the host 10.
  • the management server 20 causes the storage controller 100 to create a VVOL 201 of an arbitrary size via the maintenance I / F 112. The size does not depend on the actual total capacity of the drive 170.
  • the storage controller 100 dynamically allocates the storage area (VPG page 203) in the VPG 203 to the storage area (VVOL page 202) in the VVOL 201 indicated by the I / O request (host I / O) from the host 10. Assign to.
  • the storage controller 100 may record the access frequency for each VVOL page 202 and allocate a high-performance VPG page 203 to the high-frequency VVOL page 202.
  • the high-performance VPG page 203 is a VPG page 203 belonging to the VPG 204 in the Tier 206 configured by a high-performance flash memory drive.
  • the storage controller 100 may continuously monitor the load on the VVOL page 202 and periodically change the allocation of the VPG page 203.
  • FIG. 4 shows the data structure of the physical storage drive.
  • the physical storage drive 170 exchanges data with a higher-level device such as the storage controller 100 in units of the sub-block 300 that is the minimum unit (for example, 512 bytes) of SCSI command processing.
  • the slot 301 is a management unit when data is cached on the cache memory 131, and is, for example, 256 KB.
  • the slot 301 is composed of a set of a plurality of continuous sub blocks 300.
  • the physical stripe 302 stores a plurality of (for example, two) slots 301.
  • FIG. 5 shows page mapping of the virtual volume.
  • the VVOL 201 that can be recognized by the host 10 is composed of a plurality of VVOL pages 202.
  • the VVOL 201 has a unique identifier (VVOL number).
  • the storage controller 100 allocates the VPG page 203 in the VPG 204 to the VVOL page 202. This relationship is called page mapping 403.
  • the page mapping 403 is dynamically managed by the storage controller 100.
  • a plurality of VVOL pages having continuous VVOL pages # are given addresses of continuous VVOL spaces.
  • the VPG 204 includes one or more virtual chunks (Vchunk) 401.
  • the Vchunk 401 is composed of a plurality of virtual parcels 400. In the example of this figure, the Vchunk 401 is composed of eight virtual parcels 400.
  • the virtual parcel 400 is composed of continuous areas in one virtual storage drive 402.
  • the virtual parcel 400 is composed of one or a plurality of virtual stripes 405.
  • the virtual parcel 400 is composed of eight virtual stripes 405.
  • the number of virtual stripes 405 in the virtual parcel 400 is not particularly limited. Since the virtual parcel 400 includes a plurality of virtual stripes 405, processing efficiency can be improved.
  • the VPG 204 has a 6D + 2P configuration of RAID 6, that is, six data elements (D) constituting a data unit and two parities (P, Q) corresponding to these data elements are different from each other.
  • the Vchunk 401 is composed of, for example, virtual parcels 400 of eight different physical storage drives 170.
  • the Vchunk 401 is composed of a plurality of virtual stripe columns 406, and in the example of this figure, is composed of eight virtual stripe columns 406. Since the Vchunk 401 includes a plurality of virtual stripe columns 406, processing efficiency can be improved. Note that the Vchunk 401 may be composed of one virtual stripe column 406.
  • the Vchunk 401 includes a plurality of (for example, four) VPG pages 203.
  • the VPG page 203 can store a plurality of (for example, two) continuous stripe data elements of the virtual stripe column 406. For example, by setting the plurality of data units to several MB, the sequential performance of the host I / O can be kept constant even when the drive 170 is a magnetic disk or the like.
  • those having the same number before “_”, such as 1_D1, 1_D2, 1_D3, 1_D4, 1_D5, 1_D6, 1_P, 1_Q, indicate the stripe data elements of the same virtual stripe column 406. Note that the size of each stripe data element is the size of the physical stripe 302.
  • the VPG 204 has a unique identifier (VPG number) in the upper storage system.
  • VPG number a unique identifier
  • Each of the N virtual storage drives 402 in each VPG 204 is given a drive number (VCDEV number). This is an identifier for addressing a storage area in the VPG 204, and is an identifier for representing a correspondence relationship with a drive in the PPG 205 described later. N may be referred to as the number of PG drives.
  • Each VVOL 201 is accessed from the host 10 using an identifier representing the VVOL 201 and an LBA. As shown in this figure, the VVOL page 202 is given to the VVOL page 202 from the top of the VVOL 201.
  • VVOLPage # can be calculated by the following formula.
  • Floor (x) is a symbol indicating a maximum integer equal to or smaller than x with respect to the real number x.
  • Each of LBA and VVOLPagesize may be represented by the number of subblocks.
  • VVOLPage # Floor (LBA / VVOLPagesize)
  • each of the VVOL page 202 and the VPG page 203 is composed of a plurality of virtual stripes.
  • the host 10 since the host 10 is not allowed to access parity data, the parity cannot be seen on the VVOL 201.
  • the VPG page 203 including 8 ⁇ 2 virtual stripes in the space of the VPG 204 appears as a VVOL page 202 including 6 ⁇ 2 virtual stripes in the space of the VVOL 201.
  • the storage controller 100 corrects the space of the VPG 204 and the space of the VVOL 201, thereby combining the page mapping 401 and the VCDEV # and Vchunk # in the VPG # corresponding to the LBA on the VVOL201 side, and the offset address in the virtual parcel 400 Can be calculated.
  • the storage controller 100 can also calculate the VCDEV # and Vchunk # in the VPG # of the parity area corresponding to the host I / O, and the offset address in the virtual parcel 400.
  • RAID 6 (6D + 2P), but the number of D may be increased, for example, 14D + 2P, or RAID 5 or RAID 1 may be used.
  • a virtual parcel with only parity such as RAID 4 may be created.
  • RAID4 there is a merit that the logical design of the upper layer can be simplified, but access is concentrated on the parity drive at the time of Write, so there is a demerit that the parity drive tends to become a bottleneck, but in the case of a distributed RAID configuration Since the data in the parity drive on the VPG 204 is distributed to the plurality of physical drives 170 on the PPG 205, the influence of the disadvantages can be minimized. Further, the encoding of Q parity in RAID 6 may use other generally known methods such as the EVEN-ODD method other than the Galois operation.
  • FIG. 6 shows parcel mapping between VPG and PPG.
  • the Vchunk 401 is continuous in the storage area space of the VPG 204 as described above.
  • the consecutive c Vchunks 401 constitute a Vchunk period 504.
  • the PPG 205 includes one or more physical chunks (Pchunk) 501.
  • the Pchunk 501 is composed of a plurality of physical parcels. In the example of this figure, the Pchunk 501 is composed of eight physical parcels.
  • Pchunk cycle 505. c is called the period Vchunk number.
  • Pchunk 501b is a spare area, and Pchunk 501a is a data area.
  • One Vchunk period 504 corresponds to one Pchunk period 505.
  • Parcel mapping 500 is periodic. That is, parcel mapping 500 is common to each pair of Vchunk period 504 and Pchunk period 505. Since the parcel mapping 500 between the virtual storage area and the physical storage area is periodic, data can be appropriately distributed to a plurality of physical storage areas, and efficient management of the parcel mapping 500 is realized. Note that aperiodic, that is, parcel mapping of only one period may be employed.
  • Vcycle # The identifier of Vchunk 401 in each Vchunk cycle 504 is represented by Vcycle #. Therefore, Vcycle # takes a value from 0 to c-1.
  • An identifier of the Pchunk 501 in the Pchunk cycle 505 is represented by Pcycle #.
  • Pcycle # takes a value from 0 to c + m ⁇ 1, where m is the number of spare Pchunks in one Pchunk cycle 505.
  • the storage controller 100 allocates a Pchunk 501a belonging to one or more PPGs 205 to one Vchunk cycle 504. Conversely, the storage controller 100 assigns one Pchunk cycle 505 to Vchunks 401 belonging to one or more VPGs 204. A plurality of physical parcels over a plurality of Pchunks 501a are allocated to data entities of a plurality of virtual parcels in one Vchunk 401.
  • the number of chunks in the Pchunk cycle 505 is one or more than the number of chunks in the Vchunk cycle 504.
  • the Pchunk # Pchunk 501b is used as a spare. It is an area.
  • the spare area is a reserved area used as a restoration destination of the rebuild process when a drive in the DG 207 to which the PPG 205 belongs fails.
  • the spare Pchunk 501b Two or more Pchunks 501b may be defined per Pchunk period 505. That is, when the number of spare Pchunks 501b per Pchunk cycle 505 is m (m is an integer equal to or greater than 1), the number of chunks in the Pchunk cycle 505 is m more than the number of chunks in the Vchunk cycle 504.
  • Pchunk # k (c + 1) to k (c + 1) + m ⁇ 1
  • the Pchunk # Pchunk 501b is a spare area.
  • the virtual spare drive (VSD: Virtual Spare Drive) 502 is a drive that does not actually exist corresponding to the failed drive.
  • a spare area (Pcycle # 0 to m ⁇ 1), which is a part of the Pchunk 501b, is assigned to the virtual spare drive 502. This assignment is called spare mapping 503.
  • the spare mapping 503 will be described later.
  • c is the number of Vchunks in the Vchunk period 504
  • N is the number of drives in the parity group (VPG 204 and PPG 205)
  • G is the number of parity groups in the DG.
  • the parcel mapping is repeatedly arranged for each combination of the Vchunk period 504 and the Pchunk period 505, thereby reducing the size of the mapping pattern and reducing the load of generating the mapping pattern and the load of address conversion. .
  • FIG. 7 shows an example of parcel mapping in the first configuration case in which the number of drives is an integer multiple of N.
  • FIG. 8 shows an example of parcel mapping in the second configuration case where the number of drives is not an integer multiple of N.
  • Vchunk identifier “xy” recorded in the virtual parcel 400 in the virtual storage drive 402 in the VPG 204 x represents VPG # and y represents Vchunk #.
  • the same Vchunk identifier is written in the physical parcel assigned to the virtual parcel 400.
  • Each drive 170 in the PPG 205 has a spare area 501b (indicated as “S”) defined therein.
  • S spare area 501b
  • the mapping pattern is represented by a Vchunk identifier corresponding to each physical parcel within one Pchunk period 505.
  • the mapping pattern of each Pchunk cycle 505 is common.
  • all physical parcels except the spare area are assigned to virtual parcels in one Vchunk cycle 504.
  • physical parcels are assigned to all virtual parcels.
  • the storage controller 100 does not allocate all the Vchunks in the VPG 204 to the page, but the specific VPG 204 for the virtual stripes for the fraction. Only a part of Vchunk is assigned.
  • the number of drives in the DG is (G ⁇ 1) ⁇ N + h (h is an integer from 1 to N ⁇ 1)
  • the number of Vchunks that can be assigned to one Vchunk cycle 504 is h ⁇ c / N.
  • c 4, but in an arbitrary case where the number of drives 170 is not an integer multiple of N, c may be an integer multiple of N in order to appropriately set the mapping between VPG and PPG.
  • the redundancy can be expressed as xD + yP. According to the present embodiment, the redundancy does not change even after the expansion, and is xD + yP.
  • the number N of virtual storage drives in the VPG is equal to the number N of physical storage drives in the PPG, and the number of V chunks in the V chunk period 504 is an integer multiple of N, so that the number of physical storage drives in the DG is Even if it is not an integer multiple of N, the physical parcel in the added physical storage drive can be assigned to Vchunk, and the same redundancy as when the number of physical storage drives in the DG is an integer multiple of N can be maintained. it can.
  • FIG. 9 shows an example of rebuild operation when one drive in the first configuration case fails.
  • a virtual parcel for example, virtual parcel 400a
  • a spare area for example, 700a (update of management table).
  • Rebuild processing is executed for the assigned spare area 700.
  • the storage controller 100 can restore the lost data of the failed drive to the spare areas 700a, 700b, 700c, and 700d by reading the two parcels from the normal drive 170b other than the failed drive 170a.
  • the storage controller 100 selects the virtual parcels of the two normal drives 170b from among the three normal drives 170b in which each virtual parcel 400 exists so that the deviation between all the normal drives 170b is reduced.
  • the maximum read amount from one drive 170b in one Pchunk cycle can be limited to two parcels.
  • the maximum read amount from one drive corresponding to one Pchunk cycle corresponds to 4 parcels. Therefore, in this example, the read performance at the time of rebuilding is doubled compared to the conventional RAID method. Can be improved.
  • the rebuilt data is written to one drive, whereas in the example in this figure, the rebuilt data is distributed and written to a plurality of drives. Can also be improved.
  • the computer system according to the present embodiment can improve the rebuild performance by distributing the virtual chunk stripe data elements to a plurality of drives 170.
  • the storage controller 100 reads 16 physical parcels 701 surrounded by dotted lines from the normal drive 170b in order to restore the data of 8 physical parcels in the failed drive 170a.
  • FIG. 10 shows the contents of the shared memory.
  • the shared memory 1000 is configured using, for example, at least one storage area of the physical storage drive 170, the CM 131, and the LM 122. Note that the storage controller 100 may configure the logical shared memory 1000 using a plurality of storage areas in the physical storage drive 170, the CM 131, and the LM 122, and perform cache management for various types of information. .
  • the shared memory 1000 includes a pool management table 1001, a drive status management table 1002, a page mapping table 1003, a SWAP pointer table 1004, a mapping correction table 1005, a mapping reverse correction table 1006, and a VCDEV mapping table (SEED table).
  • a Vcycle mapping table (V2P table) 1008, a Pcycle mapping table (P2V table) 1009, a spare conversion table 1010, a spare reverse conversion table 1011 and a virtual spare management table 1012 are stored.
  • the VCDEV mapping table 1007, the Vcycle mapping table 1008, the Pcycle mapping table 1009, the spare conversion table 1010, the spare reverse conversion table 1011 and the virtual spare management table 1012 are the same as the tables shown in Patent Document 1. .
  • the VCDEV mapping table 1007 stores SEED values corresponding to combinations of VPG # and VCDEV #.
  • the SEED value is determined by a pseudo random number generation method such as a linear congruential method.
  • the Vcycle mapping table 1008 indicates a Pchunk corresponding to Vchunk, and indicates a Vchunk represented by a combination of VPG # and Vcycle #, and a Pchunk represented by a combination of PPG # and Pcycle #.
  • a Pcycle mapping table 1009 is a reverse lookup table of the Vcycle mapping table 1008 and indicates a Vchunk corresponding to Pchunk.
  • the spare conversion table 1010 indicates a drive allocated to a virtual chunk in the virtual spare drive.
  • the spare reverse conversion table 1011 is a reverse lookup table of the spare conversion table 1010 and indicates virtual chunks in the virtual spare drive corresponding to the drive.
  • the virtual spare management table 1012 includes a state indicating whether or not a virtual spare drive is in use, and a copy pointer indicating an LBA for which rebuilding has been completed during rebuilding of the virtual spare drive. Details of other tables will be described later.
  • a mapping pattern when the number of drives in the DG is an integer multiple of N is referred to as a Goal mapping pattern.
  • the Goal mapping pattern is represented by a VCDEV mapping table 1007, a Vcycle mapping table 1008, and a Pcycle mapping table 1009.
  • a mapping pattern when the number of drives in the DG is not an integer multiple of N is represented by a Goal mapping pattern and a correction pattern for the Goal mapping pattern.
  • the correction pattern is represented by a mapping correction table 1005 and a mapping reverse correction table 1006.
  • the mapping pattern before the extension is called a current mapping pattern (Current)
  • the mapping pattern after the extension is called a target mapping pattern (Target). That is, at the time of adding a single unit, the shared memory 1000 stores a current mapping correction table 1005 and a mapping reverse correction table 1006, and a target mapping correction table 1005 and a mapping reverse correction table 1006.
  • Spare mapping is managed by a spare conversion table 1010, a spare reverse conversion table 1011 and a virtual spare management table 1012.
  • FIG. 11 shows the contents of the local memory.
  • the local memory 122 includes a single expansion processing program 1101, a single expansion mapping generation processing program 1102, a complete matching pair SWAP processing program 1103, a partial matching pair SWAP processing program 1104, a non-matching pair SWAP processing program 1105, and a single expansion parcel.
  • a rebalance processing program 1106, a page allocation processing program 1107, an LP conversion processing program 1108, a PL conversion processing program 1109, and a mapping correction processing program 1110 are stored. Specific uses of each process will be described later.
  • FIG. 12 shows a pool management table
  • the pool management table 1001 is information indicating a correspondence relationship between the pool 200, the Tier 206, the DG 207, and the VPG 204.
  • the pool management table 1001 includes fields of Pool # 1200, Tier # 1201, DG # 1202, VPG # 1203, and the number of assignable Vchunks 1204.
  • This table allows the storage controller 100 to check the identifier of the DG 207 belonging to each Tier 206 of the pool 200, the identifier of the VPG 204 belonging to each DG 207, and the number of assignable Vchunks of 204 to each VPG. Since the numbers (identifiers) of the VPG 204 and the PPG 205 in the DG 207 are equal, the PPG # belonging to the target DG 207 can also be known. For example, when VPG # 0, 1, 3 belongs to a certain DG 207, it can be seen that PPG # 0, 1, 3 belongs to the DG 207.
  • the assignable Vchunk number 1203 values up to the Vchunk cycle 504 (c) are stored based on the number of drives of the corresponding PPG 205. In the VPG 204 indicated by the VPG # 1203, a page cannot be allocated to the Vchunk # exceeding the allocatable Vchunk number 1203 per Vchunk period 504.
  • the assignable Vchunk number 1203 is set according to the following criteria. The last VPG assignable Vchunk number 1203 is set to c when D is an integer multiple of N, and when D is not an integer multiple of N, the formula (D mod N) * c / A value represented by N is set.
  • D mod N * c / A value represented by N is set.
  • C is set in the remaining VPG assignable Vchunk number 1203.
  • FIG. 13 shows a drive status management table
  • the drive status management table 1002 is a table for managing the status of the physical storage drives 170 constituting the PPG 205.
  • the drive status table 1002 includes fields of PPG # 1205, PCDEV # 1206, and status 1207.
  • PPG # 1205 stores PPG #.
  • PCDEV # 1206 stores the number of the physical storage drive 170 (physical storage drive number) constituting the PPG 205 of PPG # 1205, that is, a value from 0 to N-1.
  • the state 1207 stores the state of the physical storage drive 170 corresponding to PPG # 1205 and PCDEV # 1206.
  • the state of the physical storage drive 170 is “normal” indicating that the physical storage drive 170 can be read and written and is normal, or read or write access is not possible due to a failure of the physical storage drive 170 or the like.
  • “Inaccessible” indicating “not installed” and “not mounted” indicating that the drive is not mounted are set.
  • FIG. 14 shows a page mapping table
  • the page mapping table 1003 is information indicating a correspondence relationship between the VVOL 201 page and the VPG 204 page.
  • the page mapping table 1003 includes fields of pool # 1300, VVOL # 1301, VVOL page # 1302, VPG # 1303, and VPG page # 1304.
  • Pool # 1300, VVOL # 1301, and VVOL page # 1302 indicate VVOL pages.
  • VPG # 1303 and VPG page # 1304 indicate VPG pages allocated to the VVOL page. In the VPG # 1303 and the VPG page # 1304 corresponding to the unused VVOL page # 1302, a value corresponding to “unallocated” is stored.
  • FIG. 15 shows a SWAP pointer table.
  • the SWAP pointer table 1004 includes fields of Pool # 1305, DG # 1306, PG expansion SWAP pointer 1307, and single expansion SWAP pointer 1308. With this table, the storage controller 100 can refer to the value of each SWAP pointer when the target DG is being added.
  • the PG expansion SWAP pointer 1307 is the same as the SWAP pointer disclosed in Patent Document 1, and represents the LBA in the VPG space of the corresponding DG.
  • the PG expansion SWAP pointer 1307 is used when adding in units of PG, and the LBA data before the PG expansion SWAP pointer indicates that the data SWAP has been completed in the PG expansion processing.
  • the storage controller 100 When accessing the address of the VPG space during the PG expansion process, the storage controller 100 performs address conversion using the mapping pattern after expansion if the address of the designated VPG space is before the PG expansion SWAP pointer. If the address of the designated VPG space is after the SWAP pointer for PG expansion, address conversion is performed using the mapping pattern before expansion.
  • the single expansion SWAP pointer 1308 represents the LBA in the VPG space of the corresponding DG.
  • the single expansion SWAP pointer 1308 is used when adding in units of drives, and the LBA data before the single expansion SWAP pointer indicates that the SWAP of the data in the single expansion processing has been completed.
  • the storage controller 100 When accessing the address of the VPG space during the single expansion process, the storage controller 100 performs address conversion using the mapping pattern after expansion if the designated VPG space address is before the single expansion SWAP pointer. If the address of the designated VPG space is after the single expansion SWAP pointer, address conversion is performed using the mapping pattern before expansion.
  • each SWAP pointer When the value of each SWAP pointer is an invalid value, it indicates that expansion has not been performed or has been completed.
  • the value of each SWAP pointer is initialized to 0 at the start of the expansion process.
  • FIG. 16 shows a mapping correction table
  • the mapping correction table 1005 includes fields of PPG # 1400, PCDEV # 1401, and Pcycle # 1402 as Index #, and fields of PPG # 1403, PCDEV # 1404, and Pcycle # 1405 as corresponding values. And the field of the SWAP flag 1406 is included.
  • Index # indicates a SWAP-source physical parcel
  • Value indicates a SWAP-destination physical parcel.
  • the value of the SWAP flag 1406 is updated during the expansion process. Specifically, when the storage controller 100 determines that the physical parcel corresponding to the Index # is a SWAP target during the expansion process, the storage controller 100 sets the SWAP flag 1406 to ON, and the data SWAP of the physical parcel. When the processing is completed, the SWAP flag 1406 is set to OFF.
  • FIG. 17 shows a mapping reverse correction table
  • the mapping reverse correction table 1006 includes fields of PPG # 1407, PCDEV # 1408, and Pcycle # 1409 as indexes, and fields of PPG # 1410, PCDEV # 1411, and Pcycle # 1412 as corresponding values. including.
  • Index # indicates the physical parcel of the SWAP destination indicated in the mapping correction table 1005
  • Value indicates the physical parcel of the SWAP source indicated in the mapping correction table 1005.
  • the storage controller 100 sets an entry in the mapping correction table 1005, the storage controller 100 sets the information in the corresponding entry in the mapping reverse correction table 1006.
  • FIG. 18 shows a first extension case of the single extension process.
  • the drive unit expansion process is called a single unit expansion process.
  • P1 indicates a current mapping pattern that is an initial mapping pattern before adding a drive.
  • only one Pchunk period 505 is shown for simplicity.
  • the number 3 of spare areas in the normal drive in the PPG for restoring the data of that drive is less than the number 4 of data areas in the blocked drive. Become. Therefore, at the stage P1, the storage controller 100 cannot store data yet.
  • P2 indicates the current mapping pattern immediately after the drive is added.
  • four physical parcels in the newly added drive 170b and one virtual chunk indicated by the Vchunk identifier “1-0” are added to the current mapping pattern.
  • the current mapping pattern indicates that the four added physical parcels are allocated to the added virtual chunk.
  • P2a is a mapping pattern that is a target when performing a parcel rebalance process to be described later.
  • the mapping pattern is referred to as “Goal mapping pattern (or simply referred to as Goal mapping, Goal)”.
  • the method of creating the Goal mapping pattern may be the method disclosed in Patent Document 1, or may be a distributed RAID mapping method in which expansion is performed in units of other PGs.
  • the storage controller 100 may generate a Goal mapping pattern by determining a physical parcel to be allocated to a virtual parcel based on generation of a pseudo-random number or a preset random number table.
  • the Goal mapping pattern may be set in the storage controller 100 in advance.
  • the placement of the virtual chunks on the plurality of drives 170 according to the Goal mapping pattern optimally distributes the I / O load to the plurality of drives 170.
  • the layout is suitable for speeding up the rebuild process.
  • the storage controller 100 generates a mapping pattern of P3 by using a post-addition mapping pattern generation method, which will be described later, based on the mapping information 1500 in the range corresponding to the number of drives after the addition in the Goal mapping pattern. .
  • the storage controller 100 performs a data SWAP process for moving data according to the mapping pattern, and completes the expansion process.
  • the storage controller 100 permits all VPG pages in the virtual chunk corresponding to the expansion target DG 207 to be allocated to the VVOL page.
  • the minimum configuration in the conventional distributed RAID system cannot be operated by one PG for the reason described in P1, and becomes two PGs.
  • the minimum configuration of the computer system of this embodiment is one PG and one drive as indicated by P2 and P3. Thereby, the initial cost can be reduced.
  • FIG. 19 shows the concept of the mapping pattern generation method in the first extension case.
  • P2-0 indicates the initial current mapping pattern.
  • P2a indicates a Goal mapping pattern.
  • the storage controller 100 selects a physical parcel pair that is two physical parcels, acquires two Vchunk identifiers respectively associated with the two physical parcels from the current mapping pattern, and SWAPs the two Vchunk identifiers A physical parcel pair in which both Vchunk identifiers match the Goal mapping pattern is searched, and when such a physical parcel pair exists, the physical parcel pair is SWAPed.
  • the physical parcel 1600a is associated with the Vchunk identifier “1-0” in the current mapping pattern, and is associated with the Vchunk identifier “0-0” in the Goal mapping pattern.
  • the physical parcel 1600b is associated with the Vchunk identifier “0-0” in the current mapping pattern, and is associated with the Vchunk identifier “1-1” in the Goal mapping pattern. Therefore, the storage controller 100 performs SWAP on the physical parcel pair (1600a, 1600b) because the Vchunk identifier corresponding to both can match the Goal mapping pattern.
  • the storage controller 100 Even if the physical parcel pair that satisfies the condition of P2-1 is SWAP for all physical parcels, if two or more physical parcels have one or more drives 170 corresponding to the same Vchunk identifier, the storage controller 100 Then, a physical parcel pair in which only one Vchunk identifier after SWAP matches a Goal mapping pattern is searched, and when such a physical parcel pair exists, the physical parcel pair is SWAPed.
  • the physical parcel 1601a is associated with the Vchunk identifier “1-0” in the current mapping pattern, and is associated with the Vchunk identifier “1-1” in the Goal mapping pattern.
  • the physical parcel 1600b is associated with the Vchunk identifier “0-1” in the current mapping pattern, and is associated with the Vchunk identifier “1-0” in the Goal mapping pattern. Therefore, the storage controller 100 can make the Vchunk identifier corresponding to the physical parcel 1601b coincide with the Goal mapping pattern by performing the SWAP on the physical parcel pair (1601a, 1601b).
  • the storage controller 100 can match the Vchunk identifier corresponding to the physical parcel 1602a with the Goal mapping pattern by SWAP the physical parcel pair (1602a, 1602b). SWAP this.
  • the storage controller 100 does not select a matching physical parcel pair whose Vchunk identifier before SWAP is a Goal mapping pattern as a SWAP target.
  • the storage controller 100 can generate the added mapping pattern by performing the process of P2-2. If SWAP is performed on a physical parcel pair that satisfies the condition of P2-2 among all physical parcels, if two or more physical parcels have one or more drives 170 corresponding to the same Vchunk identifier, the storage controller 100 searches for a physical parcel pair in which both Vchunk identifiers after SWAP do not match the Goal mapping pattern, and SWAPs the physical parcel pair.
  • the storage controller 100 does not select any physical parcel whose Vchunk identifier before SWAP matches the Goal mapping pattern as the SWAP target.
  • the storage controller 100 generates the current mapping pattern of P3 through the above processing.
  • a distributed RAID system such as Patent Document 1 is premised on the case where the number of drives is an integer multiple of N. Therefore, when the number of drives is an integer multiple of N, the distribution of load and the like during I / O is optimized. Designed to be. On the other hand, in the distributed RAID system of this embodiment, when the number of drives is not an integer multiple of N, the distribution of the load at the time of I / O is slightly optimized.
  • the number of drives is not an integer multiple of N.
  • the above-described optimization effect can be obtained with a minimum movement amount when the number of drives is an integral multiple of N.
  • FIG. 20 shows a second expansion case of the single expansion process.
  • the first expansion case described above was expanded in units of drives from the case where the number of drives is an integer multiple of N. Even in the case where the number of drives is not an integer multiple of N as in the second expansion case in this figure, it is possible to carry out expansion in units of drives by the same method as in the first expansion case.
  • P1 indicates the current mapping pattern before expansion.
  • the number of DG drives before expansion is 5, and is not an integer multiple of N.
  • the mapping pattern after addition shown in P3 is changed to P2a by the mapping generation process described above. It is possible to completely match the Goal mapping pattern 1700 shown.
  • FIG. 21 shows a single extension process
  • the single expansion processing program 1101 performs single expansion processing when a drive is expanded in units of drives. After adding an expansion drive to the system, the administrator inputs an instruction for adding a drive unit for the DG to the management server 20. The storage controller 100 executes the single expansion process when the expansion instruction is received from the management server 20.
  • the single expansion processing program 1101 selects any one of the expansion drives as a target drive (step 1801).
  • steps 1802 to 1804 are referred to as drive expansion processing.
  • the single expansion processing program 1101 may select the target drives in the order from the smallest physical drive # in the system from among the expansion drives that have not been subjected to the drive expansion processing.
  • the single extension processing program 1101 performs a single extension mapping generation process (step 1802).
  • the single extension mapping generation process will be described later.
  • the single expansion processing program 1101 performs single expansion parcel rebalancing processing (step 1803).
  • the single extension parcel rebalancing process will be described later.
  • the single expansion processing program 1101 permits the allocation of the Vchunk corresponding to the target drive to the virtual volume (step 1804).
  • the single expansion processing program 1101 determines whether the drive expansion processing has been completed for all the expansion drives added to the system (step 1805). If drive extension processing has not been completed for all extension drives (No in step 1805), the single extension processing program 1101 returns to step 1801, performs the same processing for the next target drive, and performs all extension If the drive expansion process has been completed for the drive (Yes in step 1805), the process ends.
  • FIG. 22 shows a single extension mapping generation process.
  • the single expansion mapping generation processing program 1102 executes single expansion mapping generation processing for generating a mapping pattern after expansion in step 1802 of the single expansion processing described above.
  • the single extension mapping generation processing program 1102 generates a mapping in the extension drive in the Target after copying the current mapping pattern (Current) before the extension to the mapping pattern (Target) (step 1901).
  • the mapping pattern in the extension drive is generated, data loss occurs when the extension drive is blocked. Therefore, the Vchunk corresponding to the extension drive cannot be assigned to the virtual volume.
  • the single extension mapping generation processing program 1102 generates a Goal mapping pattern (Goal) (Step 1902).
  • the single extension mapping generation processing program 1102 performs a complete match pair SWAP process that SWAPs the Vchunk identifier of a physical parcel pair (perfect match pair) in which both of the two Vchunk identifiers after SWAP match with Goal (step 1903). ). Details of the exact match pair SWAP process will be described later.
  • the SWAP of the Vchunk identifier is an update process of the mapping correction table and the mapping reverse correction table, and the SWAP of the actual physical parcel pair data is executed by a single expansion parcel rebalance process described later.
  • the single extension mapping generation processing program 1102 determines whether or not a plurality of physical parcels in one drive are assigned to the same Vchunk (step 1904). If there is no drive in which a plurality of physical parcels in one drive are assigned to the same Vchunk (No in step 1904), the single additional mapping generation processing program 1102 ends the process.
  • the single additional mapping generation processing program 1102 selects one of the two Vchunk identifiers after SWAP.
  • a partial match pair SWAP process is performed to SWAP the Vchunk identifier of the physical parcel pair (partial match pair) that matches with Goal (step 1905). Details of the partially matched pair SWAP process will be described later.
  • the single extension mapping generation processing program 1102 determines whether or not a plurality of physical parcels in one drive are assigned to the same Vchunk (step 1906). If there is no drive in which a plurality of physical parcels in one drive are assigned to the same Vchunk (No in step 1906), the single additional mapping generation processing program 1102 ends the process.
  • the single additional mapping generation processing program 1102 uses both of the two Vchunk identifiers after SWAP. Unmatched pair SWAP processing is performed to SWAP the Vchunk identifier of a physical parcel pair (mismatched pair) that does not match Goal (step 1907). Details of the mismatch pair SWAP process will be described later.
  • FIG. 23 shows exact match pair SWAP processing.
  • the complete match pair SWAP processing program 1103 performs the complete match pair SWAP processing in step 1903 of the above-described single extension mapping generation processing.
  • the exact match pair SWAP processing program 1103 selects the first physical parcel (step 2001).
  • the PDG #, PCDEV #, and Pcycle # are selected in order from the youngest physical parcel in the target DG.
  • the exact match pair SWAP processing program 1103 selects a second physical parcel that is a physical parcel that forms a target pair with the first physical parcel selected in step 2001 (step 2002).
  • the first physical parcel selected in Step 2001 is excluded from the target DG, and the physical parcels with the youngest PPG #, PCDEV #, and Pcycle # are selected in order.
  • the exact match pair SWAP processing program 1103 acquires Vt0 that is Target (a0, b0, c0) and Vt1 that is Target (a1, b1, c1) from Target, and Goal (a0) from Goal. , B0, c0) and Vg1 which is Goal (a1, b1, c1) are acquired (step 2003).
  • the exact match pair SWAP processing program 1103 determines whether or not Vt0 and Vt1 match (step 2004). If Vt0 and Vg1 match (No in step 2004), there is no change in the mapping pattern even if the target pair is SWAP, so the complete match pair SWAP processing program 1103 returns to step 2002, and the second Reselect the physical parcel.
  • the completely matched pair SWAP processing program 1103 determines whether Vt0 and Vg1 match and Vt1 and Vg0 match (step 2005). If at least one of Vt0 and Vg1 match and Vt1 and Vg0 match does not hold (No in step 2005), the target pair is not a perfect match pair, so the perfect match pair SWAP processing program 1103 Returning to step 2002, the second physical parcel is reselected.
  • the complete match pair SWAP processing program 1103 performs Vchunk duplication determination (step 2006).
  • Vchunk duplication determination determines that a plurality of physical parcels in a certain drive do not correspond to the same Vchunk when the mapping condition is satisfied.
  • Target it is determined whether all of Target (a0, b0, *) are inconsistent with Vg1, and all of Target (a1, b1, *) are inconsistent with Vg0.
  • Target (a0, b0, *) indicates a Vchunk identifier corresponding to all Pcycle # s in which PPG # is a0 and PCDEV # is B0. If any of Target (a0, b0, *) matches Vg1, and any of Target (a1, b1, *) matches Vg0 (No in step 2006) ), The exact match pair SWAP processing program 1103 returns to step 2002 and reselects the second physical parcel.
  • exact match pair SWAP processing program 1103 executes Target (a0, b0). , C0) and Target (a1, b1, c1) are SWAP (step 2007). Specifically, the exact match pair SWAP processing program 1103 sets the value in the entry whose Index # is (a0, b0, c0) to (a1, b1, c1) in the mapping correction table 1005 and the mapping reverse correction table 1006. Then, the Value in the entry whose Index # is (a1, b1, c1) is set to (a0, b0, c0). Further, the exact match pair SWAP processing program 1103 sets the SWAP flag of the entry of the first physical parcel to ON in the mapping correction table 1005.
  • the exact match pair SWAP processing program 1103 determines whether or not the processing in steps 2001 to 2007 has been performed on all physical parcels in the target DG (step 2008). When there is a physical parcel that has not been subjected to this processing (No in step 2008), the exact match pair SWAP processing program 1103 returns to step 2001, selects the next first physical parcel, and continues the processing. If there is no unexecuted physical parcel (Yes in step 2008), the exact match pair SWAP processing program 1103 ends the process.
  • FIG. 24 shows a partially matched pair SWAP process.
  • the partially matched pair SWAP processing program 1104 performs a partially matched pair SWAP process in step 1905 of the above-described single extension mapping generation process.
  • Step 2101 to Step 2104 in the partially matched pair SWAP process are the same as Step 2001 to Step 2004 in the completely matched pair SWAP process, description thereof will be omitted.
  • the partially matched pair SWAP processing program 1104 determines whether Vt0 and Vg0 are mismatched and Vt1 and Vg1 are mismatched (Step 2105). If at least one of Vt0 and Vg0 match and Vt1 and Vg1 match (No in step 2105), Target and Goal of at least one physical parcel match. Therefore, the target pair does not require SWAP, and the partially matched pair SWAP processing program 1104 returns to Step 2102 and reselects the second physical parcel.
  • step 2105 If Vt0 and Vg0 do not match and Vt1 and Vg1 do not match (Yes in step 2105), the partially matched pair SWAP processing program 1104 indicates that Vt0 and Vg1 match or Vt1 and Vg0 match. (Step 2106). A pair in which Vt0 and Vg1 match and Vt1 and Vg0 match does not exist at the time of step 2106 because it has already been SWAPed in the complete match pair SWAP process.
  • Vt0 and Vg1 do not match and Vt1 and Vg0 do not match (No in step 2106)
  • the target pair is not a partially matched pair, so the partially matched pair SWAP processing program 1104 returns to step 2102, and sets the SWAP pair parcel. Reselect.
  • the partially matching pair SWAP processing program 1104 performs the processing of the following steps 2107 to 2109. Since these processes are the same as steps 2006 to 2008 in the completely matched pair SWAP process, description thereof will be omitted.
  • FIG. 25 shows the mismatched pair SWAP process.
  • the non-matching pair SWAP processing program 1105 performs the non-matching pair SWAP processing in step 1907 of the above-described single extension mapping generation processing.
  • Steps 2201 to 2208 in the inconsistent pair SWAP process are the same as steps 2001 to 2005, step 2006, and step 2007 in the completely matched pair SWAP process, respectively, and thus description thereof is omitted.
  • the mismatch pair SWAP processing program 1105 determines whether or not the same Vchunk identifier is assigned to a plurality of physical parcels in one drive (step 2208). If one or more drives to which the same Vchunk identifier is assigned to a plurality of physical parcels in one drive (Yes in Step 2208), the mismatched pair SWAP processing program 1105 returns to Step 2201, and this state disappears. Repeat until. If there is no drive to which the same Vchunk identifier is assigned to a plurality of physical parcels in one drive (No in step 2208), the mismatched pair SWAP processing program 1105 ends the process.
  • the storage controller 100 performs a completely matched pair SWAP process, a partially matched pair SWAP process, and a mismatched pair SWAP process, so that a Target that satisfies the mapping condition and is close to the Goal mapping pattern is obtained.
  • a mapping correction table 1005 and a mapping reverse correction table 1006 representing the difference between the Goal mapping pattern and Target can be created.
  • the storage controller 100 may sequentially select virtual chunks or virtual parcels instead of sequentially selecting physical parcels.
  • FIG. 26 shows a single expansion parcel rebalancing process.
  • the single expansion parcel rebalancing processing program 1106 performs the single expansion parcel rebalancing processing in S1805 of the unit expansion processing described above.
  • the single expansion parcel rebalancing process changes the data arrangement indicated by the current mapping pattern (Current) to the data arrangement indicated by the target mapping pattern (Target) by executing data SWAP processing described later. .
  • the single expansion parcel rebalancing processing program 1106 sequentially selects one physical parcel in the expansion target DG as the target physical parcel (step 2301). For example, the stand-alone expansion parcel rebalancing processing program 1106 selects physical parcels for which data SWAP processing has not been performed in order from the smallest physical drive # and Pcycle # in the system among the physical parcels in all the drives in the DG. The target physical parcel may be selected.
  • the single expansion parcel rebalance processing program 1106 determines whether the target physical parcel is a SWAP target (step 2302). Specifically, the mapping correction table 1005 is referred to, and the SWAP flag of the entry whose Index # is the target physical parcel is referred to to determine whether this is ON. If the SWAP flag of the target physical parcel is ON, it means that the target physical parcel is a SWAP target. In this case, a pair of the target physical parcel and the SWAP destination physical parcel indicated in the Value of the entry is set as the SWAP target pair.
  • the single expansion parcel rebalancing processing program 1106 selects two Vchunks to which the SWAP target pair is assigned as the target Vchunk pair, and the target The virtual stripes in the Vchunk pair are sequentially selected as the target stripe pair (step 2303).
  • the single expansion parcel rebalancing processing program 1106 performs the data SWAP processing for the target stripe pair (step 2304).
  • the data SWAP process is the same as the process disclosed in Patent Document 1.
  • the data SWAP process when at least one of the target stripe pairs stores valid data, the data is swapped between the target stripe pairs.
  • the data SWAP processing when at least one virtual stripe of the target stripe pair is assigned to the VVOL page, data is transferred from the physical stripe corresponding to the virtual stripe to the target cache slot corresponding to the VVOL page in Current. Staging is performed, destage of the target cache slot (writing from the CM 131 to the drive 170) is suppressed, and the target cache slot is set to be dirty.
  • destage suppression is canceled after the data SWAP processing, the data stored in the target cache slot is asynchronously destaged to a physical stripe corresponding to the virtual stripe in the target.
  • the single expansion parcel rebalancing processing program 1106 determines whether or not there is a stripe (unswapped area) for which data SWAP processing has not been performed in the target physical parcel (step 2305). If there is an unswap area (No in step 2305), the single additional parcel rebalancing processing program 1106 returns to step 2303 and performs the same processing on the next physical stripe in the target physical parcel.
  • the single additional parcel rebalancing processing program 1106 displays the SWAP pointer.
  • the single extension SWAP pointer 1308 for the target DG in the table 1004 is updated to the next physical parcel (step 2306).
  • SWAP pointer may be updated when the SWAP of the target physical parcel is completed, or may be updated when the SWAP of a certain area is completed.
  • the single extension parcel rebalancing processing program 1106 sets the SWAP flag of the entry whose index # is the target physical parcel in the mapping correction table 1005 to OFF (2307).
  • the single expansion parcel rebalancing processing program 1106 cancels the destage suppression of the target cache slot that has been subjected to the destage suppression in step 2304 (step 2308).
  • the single expansion parcel rebalancing processing program 1106 determines whether or not all physical parcels in the expansion target DG have been selected as target physical parcels (step 2309). If there is an unselected physical parcel (No in step 2309), the single additional parcel rebalancing processing program 1106 returns to step 2301 and selects the next target physical parcel.
  • SWAP target physical parcel may be arbitrarily determined in accordance with I / O processing or the like. Normally, data allocation cannot be performed for an area that has not been subjected to data SWAP processing. However, for example, data SWAP processing for a physical parcel corresponding to an area that has received a write request from a host is preferentially performed. It may be possible to immediately assign data to the expansion area.
  • the write data is held as dirty data in the cache memory, and destaging of the drive is permitted when the data SWAP processing of the target area is completed.
  • Step 2309 If there is no unselected physical parcel (Yes in Step 2309), the single additional parcel rebalancing processing program 1106 replaces Current with Target (Step 2310), and ends the processing.
  • the storage controller 100 when valid data is stored in the Vchunk corresponding to the SWAP target physical parcel, the storage controller 100 is valid from the physical parcel corresponding to the Vchunk based on the current. Data is read, and valid data is written to the physical parcel corresponding to the Vchunk based on the Target. Thereby, the storage controller 100 can move data according to the change of the mapping pattern from Current to Target.
  • FIG. 27 shows the concept of page allocation processing.
  • a VPG page 203 of the VPG 204 is allocated to the VVOL page 202 in the VVOL 201.
  • two VVOL pages 202 are allocated per Vchunk, but the number of VVOL page allocations per Vchunk is variable depending on the page size defined in the system and the parcel size.
  • VPG # 2 includes a Vchunk that cannot be assigned to a page because it corresponds to a PPG in which the number of drives in the PPG is not N.
  • VPG pages in Vchunks # 1 to # 3 and # 5 to # 7 of VPG # 2 cannot be assigned to VVOL pages.
  • VPG pages in Vchunk # 0 and # 4 of VPG # 2 can be assigned to VVOL pages.
  • FIG. 28 shows page allocation processing
  • the page allocation processing program 1107 executes the page allocation processing when the VPG page is not allocated to the write target VVOL page as part of the write processing from the host 10.
  • the page allocation processing program 1107 determines whether the VPG page has been allocated to the target VVOL page or not allocated based on the page mapping table 1003. If the VPG page is not allocated to the target VVOL page, information such as “unallocated” or “Not-Allocate” is stored in the VPG # 1303 field of the page mapping table 1003. Therefore, the page allocation processing program 1107 Can determine whether the target page is unallocated. In the initial state of the system (a state in which no host I / O has been executed for the virtual volume 201), all pages in the virtual volume 201 are “Not-Allocated”.
  • the page allocation processing program 1107 acquires the target DG # (step 2501).
  • the method of selecting the target DG is, for example, determining whether there is a free page in the order of the high tier (high performance) of the target pool 200, and for the tier 206 with the free page, select the DG 207 with the least page usage rate Or the DG 207 having the lowest I / O load per unit time, the DG 207 having the lowest utilization rate, or the DG 207 having the largest free capacity is selected as the target DG.
  • the page allocation processing program 1107 acquires the target VPG # (step 2502).
  • the method of selecting the target VPG is, for example, selecting the VPG with the lowest usage rate as the target VPG, or setting the allocation priority to VPG for each VVOL and selecting the VPG with the highest allocation priority as the target VPG. To do.
  • the page allocation processing program 1107 determines whether the target VPG is mounted in the target DG by referring to the pool management table 1001 (step 2503).
  • step 2503 If the target VPG is not mounted in the target DG (NO in step 2503), the page allocation processing program 1107 returns to step 2502, selects a different target VPG #, and performs the determination in step 2503 again.
  • the page allocation processing program 1107 determines whether there is a free page in the target VPG (step 2504).
  • the page allocation processing program 1107 refers to the page mapping table 1003 and determines whether there is an unallocated VPG page 1304 in the target VPG.
  • step 2504 If there is no empty page (NO in step 2504), the page allocation processing program 1107 returns to step 2502, selects a different target VPG #, and performs the determination in step 2503 and step 2504 again. If there is a free page (YES in step 2504), the page allocation processing program 1107 selects the target VPG page from the target VPG (step 2505). As a method for selecting the target VPG page, for example, the page with the youngest VPG page # among the empty pages in the target VPG is selected as the target VPG page.
  • step 2506 If the page allocation processing program 1107 fails to select the target VPG page even if the above processing is executed for all VPGs in the target DG (NO in step 2506), the page allocation processing instructor indicates that allocation is not possible. A response is made (step 2508), and the process ends.
  • the page allocation processing program 1107 registers the target VPG page in the entry of the target VVOL page in the page mapping table. (Step 2507) The process is terminated.
  • the storage controller 100 can efficiently use the VPG space by allocating necessary VPG pages to VVOL pages. Further, since it is not necessary to match the host access data unit and the distributed RAID unit, each of the host access and the distributed RAID can be performed efficiently.
  • the storage controller 100 may provide a VPG space to the host 10 instead of the VVOL space. In this case, the storage controller 100 may not use the page mapping table.
  • FIG. 29 shows LP conversion processing
  • LP conversion is a conversion process from an address of a logical storage area to an address of a physical storage area. LP conversion processing is called from page conversion processing when an I / O request is received from the host 10. The page conversion process converts an address in the virtual volume designated by the I / O request into an address in the VPG space.
  • the address of the VPG space (VPG #, VCDEV #, Vchunk #), which is a designated virtual address, is converted into the address of the PPG space (PPG #, PCDEV #, Pchunk #).
  • the area indicated by the address of the designated VPG space is called a target logical storage area
  • the area indicated by the address of the converted PPG space is called a target physical storage area.
  • Vcycle # Vchunk # mod c.
  • the LP conversion processing program 1108 executes a VP (Virtual-Physical) conversion process (step 2602).
  • VP conversion process for example, the method disclosed in Patent Document 1 is used.
  • the LP conversion processing program 1108 refers to the Goal mapping patterns (the VCDEV mapping table 1007 and the Vcycle mapping table 1008), and thereby the regular PPG space addresses corresponding to the VPG #, VCDEV #, and Vcycle #. Is calculated.
  • the regular PPG space address is PPG #, PCDEV #, Pcycle # corresponding to VPG #, VCDEV #, Vcycle # when the number of drives in the DG is an integral multiple of N and no drive has failed.
  • the LP conversion processing program 1108 refers to the mapping correction table 1005 and corrects PPG #, PCDEV #, and Pcycle # calculated in Step 2602 (Step 2603). Details of the mapping correction processing will be described later.
  • the LP conversion processing program 1108 refers to the drive status management table 1002 and acquires the status 1207 of the target drive, that is, the drive corresponding to the PPG # and PCDEV # calculated in step 2603 (step 2604). The LP conversion processing program 1108 determines whether the status 1207 of the target drive is “inaccessible” (step 2605).
  • the LP conversion processing program 1108 calculates a spare destination address. In this case, the LP conversion processing program 1108 obtains the VSD # (identifier of the virtual spare drive 502) corresponding to the PPG # and PCDEV # from the virtual spare management table 1012 (step 2606).
  • the LP conversion processing program 1108 executes spare conversion processing (step 2607).
  • the LP conversion processing program 1108 refers to the spare conversion table 1010, and acquires the PPG #, PCDEV #, and Pcycle # of the corresponding spare area from the Pcycle # and the VSD # calculated in step 2606. Thereafter, the LP conversion processing program 1108 performs Step 2604 again for the calculated PPG #, PCDEV #, and Pcycle #. If the spare destination is further saved in the spare area, the LP conversion processing program 1108 repeats steps 2606 and 2607.
  • the LP conversion processing program 1108 calculates Pchunk # from the regular physical address (step 2608) and ends the process.
  • FIG. 30 shows the PL conversion process
  • the PL conversion is a conversion process from a physical storage area to a logical storage area.
  • the PL conversion is a process used to specify data corresponding to a physical storage area that has failed in a rebuild process, for example.
  • the PPG space address (PPG #, PCDEV #, Pchunk #) that is the storage location of the specified physical data is changed to the VPG space address (VPG #, VCDEV #, Vchunk) that is a virtual address. #)
  • the PL conversion corresponds to the inverse conversion of the LP conversion. In other words, after performing LP conversion and performing PL conversion as a result, the same address is returned. The reverse is also true.
  • the area indicated by the designated PPG space address is called a target physical storage area
  • the area indicated by the converted VPG space address is called a target logical storage area.
  • the PL conversion processing program 1109 calculates Pcycle # from Pchunk # (step 2701).
  • the PL conversion processing program 1109 executes PV (Physical-Virtual) conversion processing (step 2702).
  • PV conversion process for example, the method disclosed in Patent Document 1 is used.
  • the PL conversion processing program 1109 refers to the Goal mapping patterns (Pcycle mapping table 1009 and VCDEV mapping table 1007), and calculates regular VPG space addresses corresponding to the PPG #, PCDEV #, and Pcycle #.
  • the regular VPG space address is VPG #, VCDEV #, and Vcycle # corresponding to PPG #, PCDEV #, and Pcycle # when the number of drives in the DG is an integer multiple of N and no drive has failed.
  • the PL conversion processing program 1109 refers to the mapping reverse correction table 1006 and corrects the input PPG #, PCDEV #, and Pcycle # calculated in Step 2701 (Step 2703). Details of the mapping correction processing will be described later.
  • the PL conversion processing program 1109 determines whether the target physical storage area is a spare area (step 2705). If Pcycle # is zero, the PL conversion processing program 1109 determines that the target area is a spare area.
  • the PL conversion processing program 1109 executes a spare reverse conversion process (step 2706).
  • the PL conversion processing program 1109 refers to the spare reverse conversion table 1011 and acquires the VSD # and Pcycle # from the PPG #, PCDEV #, and Pcycle #.
  • the PL conversion processing program 1109 acquires the PPG # and PCDEV # corresponding to the VSD # from the virtual spare management table 1012 (step 2708).
  • the PL conversion processing program 1109 determines the PV conversion processing in Step 2702 again for the calculated PPG #, PCDEV #, and Pcycle #. This process is repeated until an area other than the spare area is calculated.
  • Vchunk # Floor (Pchunk # / (c + m)) * c + Vcycle # -1. *
  • FIG. 31 shows the mapping correction process
  • the mapping correction process program 1110 executes the mapping correction process in step 2603 of the above-described LP conversion process.
  • the mapping correction process converts the address of the physical storage area that is the SWAP source into the address of the physical storage area that is the SWAP destination.
  • the mapping correction processing program 1110 refers to the number of drives in the DG and determines whether the number of drives is an integer multiple of N (step 2801). If the number of drives is an integer multiple of N (Yes in step 2801), the mapping correction processing program 1110 ends the processing (outputs the input value as it is) because the mapping correction processing is unnecessary.
  • mapping correction processing program 1110 refers to the mapping correction table 1005 and corresponds to the input values PPG # 1400, PCDEV # 1401, and Pcycle # 1402. PPG # 1403, PCDEV # 1404, and Pcycle # 1405 are calculated and set as output values (step 2802).
  • the storage controller 100 can convert the address of the VPG space based on the I / O request to the address of the PPG space and access the PPG space. Further, when the number of drives is an integer multiple of N, the storage controller 100 can perform optimal load distribution by performing address conversion using the Goal mapping pattern, and the number of drives is not an integer multiple of N. In this case, by correcting the Goal mapping pattern using the mapping correction table, the address conversion can be performed with a slight correction.
  • FIG. 32 shows mapping reverse correction processing
  • the mapping correction processing program 1110 executes the mapping reverse correction processing in step 2703 of the above-described PL conversion processing.
  • the mapping reverse correction process converts the address of the physical storage area that is the SWAP destination into the address of the physical storage area that is the SWAP source.
  • the mapping correction processing program 1110 refers to the number of drives in the DG and determines whether the number of drives is an integer multiple of N (step 2803). If the number of drives is an integer multiple of N (Yes in Step 2803), the mapping reverse correction process is unnecessary, so the mapping correction processing program 1110 ends the process (outputs the input value as it is).
  • mapping correction processing program 1110 refers to the mapping reverse correction table 1006 and corresponds to the input values PPG # 1407, PCDEV # 1408, and Pcycle # 1409. PPG # 1410, PCDEV # 1411, and Pcycle # 1412 to be calculated are set as output values (step 2804).
  • the storage controller 100 converts the PPG space address of the faulty drive 170 to the VPG space address in the rebuild process, and specifies the data necessary for the rebuild. can do. Further, when the number of drives is an integer multiple of N, the storage controller 100 can perform optimal load distribution by performing address conversion using the Goal mapping pattern, and the number of drives is not an integer multiple of N. In this case, by correcting the Goal mapping pattern using the mapping correction table, the address conversion can be performed with a slight correction.
  • Patent Document 1 discloses a mapping method between VPG and PPG in a storage system configured in PG units.
  • a mapping pattern having a PG unit configuration is defined as a target mapping pattern, and virtual parcels associated with two physical parcels are SWAPed so as to be as close as possible to the target mapping pattern.
  • Vchunk data can be distributed to a plurality of drives as much as possible, and the performance of I / O processing and rebuild processing can be brought close to the performance of the PG unit configuration. Moreover, the cost of one expansion can be suppressed by adding drives in units smaller than PG.
  • the physical storage device corresponds to the physical storage drive 170 or the like.
  • the computer corresponds to the storage controller 100, a computer having a storage controller function, and the like.
  • the logical storage area corresponds to a virtual parcel, a virtual stripe, or the like.
  • the physical storage area corresponds to a physical parcel, a physical stripe, or the like.
  • the logical parity group corresponds to a virtual parity group or the like.
  • the mapping information corresponds to a mapping pattern or the like.
  • the reference mapping information corresponds to a Goal mapping pattern or the like.
  • the correction mapping information corresponds to a mapping correction table, a mapping reverse correction table, and the like.
  • the spare physical storage area corresponds to a spare area or the like.
  • D corresponds to the number D of physical storage drives in the DG.
  • n corresponds to the number N of virtual storage drives in the virtual parity group, the number N of physical storage drives in the physical parity group, and the like.
  • m corresponds to the number of spare Pchunks m in the Pchunk period.
  • v corresponds to c / N or the like.
  • n ⁇ v corresponds to the number of Vchunks (cycle Vchunk number) c in the Vchunk period.
  • w corresponds to the number of Vchunk periods in the DG, the number of Pchunk periods in the DG, and the like.
  • r corresponds to the number of physical storage drives to be added.
  • e corresponds to the number of virtual storage devices after expansion.

Abstract

一つのRAIDグループを構成する物理記憶デバイスより少ない単位で物理記憶デバイスを増設しても、冗長性を確保する。 計算機は、r個の物理記憶デバイスが計算機に接続されることでd+r個の物理記憶デバイスが計算機に接続される場合、v×r個の論理チャンクを追加し、各追加記憶デバイス内のn×v個の物理記憶領域を追加し、マッピング条件の下で、マッピング情報を、v×(d+r)個の論理チャンクの夫々にn個の物理記憶領域を関連付けるマッピング情報に変更し、ユーザデータのライト要求に応じて、ユーザデータに基づく冗長データを作成し、ライト要求に対応する第1論理チャンクを決定し、マッピング情報に基づいて、ユーザデータ及び冗長データを含むn個の要素データを、第1論理チャンクに対応するn個の物理記憶領域へ夫々書き込む。

Description

計算機システム、物理記憶デバイスの制御方法、および記録媒体
 本発明は、計算機システムに関する。
 複数のストレージ装置により、RAID(Redundant Array of Inexpensive(またはIndependent) Disks)グループを構成し、RAIDグループに基づいて作成された論理ボリュームを、上位装置(例えばホストコンピュータ)へ提供するストレージシステムが知られている。
 RAIDに関する技術として、特許文献1には、通常データと、通常データを復元するための冗長データとを含むストライプ列を、容量プールに記憶領域を提供する複数のストレージ装置に分散させて管理する技術、所謂分散RAID方式が開示されている。
国際公開第2014/115320号
 分散RAID方式に限らず、一般的に、冗長データを有するRAIDグループによって構成されるストレージシステムに対して容量追加を行う、即ちドライブを増設する場合、増設したドライブについても既存領域と同等の冗長性を確保するためには、RAIDグループを構成するドライブ台数の単位での増設が行われる。しかし、1組のRAIDグループは20台以上のドライブで構成されることもあるため、容量追加時のコストの高さが問題となる。
 また、例えば特許文献1のような分散RAID方式を採用する場合、システムの最小ドライブ台数は2パリティグループ以上である必要がある。そのため、初期導入時のコストの高さも問題となる。
 特に、システム内の記憶メディアが、ビットコストの高いSSD(Solid State Drive)のみで構成されたAFA(All Flash Array)や、搭載ドライブ台数の少ないミッドレンジ以下のストレージシステムにおいては、当該問題による影響が顕著である。
 上記課題を解決するために、本発明の一態様である計算機システムは、dが2以上の整数であり、d個の物理記憶デバイスと、前記d個の物理記憶デバイスに接続される計算機と、を備える。前記計算機は、nが2以上の整数であり、vが1以上の整数であり、各物理記憶デバイス内にn×v個の物理記憶領域を作成することで、n×v×d個の物理記憶領域を作成し、夫々がn個の物理記憶領域のサイズを有する、v×d個の論理チャンクを作成し、各論理チャンクにn個の物理記憶領域を関連付けるマッピング情報であって、各論理チャンクに関連付けられた前記n個の物理記憶領域がn個の物理記憶デバイスに夫々含まれるというマッピング条件の下で作成された前記マッピング情報を格納し、rが1以上の整数であり、r個の物理記憶デバイスが前記計算機に接続されることでd+r個の物理記憶デバイスが前記計算機に接続される場合、v×r個の論理チャンクを追加し、各追加記憶デバイス内のn×v個の物理記憶領域を追加し、前記マッピング条件の下で、前記マッピング情報を、v×(d+r)個の論理チャンクの夫々にn個の物理記憶領域を関連付けるマッピング情報に変更し、ユーザデータのライト要求に応じて、前記ユーザデータに基づく冗長データを作成し、前記ライト要求に対応する第1論理チャンクを決定し、前記マッピング情報に基づいて、前記ユーザデータ及び前記冗長データを含むn個の要素データを、前記第1論理チャンクに対応するn個の物理記憶領域へ夫々書き込む、ように構成されている。
 一つのRAIDグループを構成する物理記憶デバイスより少ない単位で物理記憶デバイスを増設しても、冗長性を確保することができる。これにより、ビットコストの高いSSDのみで構成されたAFA(All Flash Array)や、搭載ドライブ台数の少ないミッドレンジ以下のストレージシステムにおいても、容量追加時のコストを最小限に抑えることができる。また、性能やコストを考慮しながら増設するドライブ台数を任意に選択することにより、増設の自由度を上げることができる。
 加えて、分散RAID方式を適用した場合の最小ドライブ台数を1パリティグループ+1台に削減することが可能となり、初期導入時のコストを最小限に抑えることができる。
本実施例の計算機システムにおける、仮想記憶領域と物理記憶領域との間のマッピングの概要を示す。 本実施例に係る計算機システムのハードウェア構成を示す。 本実施例に係る計算機システムの論理構成を示す。 物理記憶ドライブのデータ構成を示す。 仮想ボリュームのページマッピングを示す。 VPGとPPGの間のパーセルマッピングを示す。 物理ドライブ数がNの整数倍である第1構成ケースのパーセルマッピングの例を示す。 物理ドライブ数がNの整数倍でない第2構成ケースのパーセルマッピングの例を示す。 第1構成ケースの1台のドライブの故障時におけるリビルドの動作例を示す。 共有メモリの内容を示す。 ローカルメモリの内容を示す。 プール管理テーブルを示す。 ドライブ状態管理テーブルを示す。 ページマッピングテーブルを示す。 SWAPポインタテーブルを示す。 マッピング補正テーブルを示す。 マッピング逆補正テーブルを示す。 単体増設処理の第1増設ケースを示す。 第1増設ケースにおけるマッピングパターン生成方法の概念を示す。 単体増設処理の第2増設ケースを示す。 単体増設処理を示す。 単体増設マッピング生成処理を示す。 完全一致ペアSWAP処理を示す。 部分一致ペアSWAP処理を示す。 不一致ペアSWAP処理を示す。 パーセルリバランス処理を示す。 ページ割当処理の概念を示す。 ページ割当処理を示す。 LP変換処理を示す。 PL変換処理を示す。 マッピング補正処理を示す。 マッピング逆補正処理を示す。
 以下では、幾つかの実施例を、図面を参照して説明する。
 なお、以下の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶこともできる。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェースデバイス(例えばポート)を用いながら行うため、処理の主語がプログラムとされても良い。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する計算機(例えば、管理計算機、ホスト計算機、コントローラ等)が行う処理としても良い。また、コントローラ(ストレージコントローラ)は、プロセッサそれ自体であっても良いし、コントローラが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから各コントローラにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又はコンピュータ読取可能な記憶メディアであっても良い。
 また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
 また、以下の説明では、I/O(Input/Output)要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
 RAIDグループは、PG(Parity Group)と呼ばれてもよい。
 図1は、本実施例の計算機システムにおける、仮想記憶領域と物理記憶領域との間のマッピングの概要を示す。
 この図の上部は、仮想記憶領域を示し、この図の下部は、物理記憶領域を示す。
 本実施例の計算機システムは、仮想ボリュームをホストに提供し、仮想記憶ドライブ402により提供される仮想記憶領域を仮想ボリュームに割り当てる。仮想記憶領域は、例えばページである。
 さらに、複数の仮想記憶ドライブ402を含む仮想パリティグループ(VPG:Virtual Parity Group)204が構成される。この図の例においては、4個の仮想記憶ドライブ402が、一つの仮想パリティグループ204を構成する。この図の例においては、3個の仮想パリティグループ204が示されており、それぞれにVPG#(番号)が与えられている。また、各仮想パリティグループ204に属するドライブには、それぞれ仮想パリティグループ内の位置を示すVCDEV(Virtual Column DEVice)#が与えられる。この図の例においては、各仮想パリティグループ204内に4個の仮想記憶ドライブ402が示されており、それぞれに異なるVCDEV#が与えられている。
 仮想パリティグループ204は、RAID(Redundant Array of Inexpensive Disks)グループであり、複数の仮想記憶ドライブ402に跨る冗長データセットを格納する。冗長データセットは、RAIDにおいてデータをリビルドするためのデータセットであり、ホストからのデータと冗長データとを含む。
 仮想記憶領域は、所定サイズの仮想ストライプ405に分割されている。仮想パリティグループ204内の複数の仮想記憶ドライブ402のそれぞれの中の特定の論理アドレスの仮想ストライプ405は、仮想ストライプ列406を構成する。この図の例においては、4個の仮想ストライプ405が一つの仮想ストライプ列406を構成する。仮想ストライプ列406は、冗長データセットを格納する。冗長データセットは、ホストからのデータDと、データDに基づくパリティPとを含む。一つの仮想ストライプ列406内の各仮想ストライプ405は、対応する冗長データセット内のデータD又はパリティPを格納する。
 なお、データDを、ユーザデータと呼ぶことがある。パリティPを、冗長データと呼ぶことがある。冗長データセット内の各仮想ストライプに格納されるデータを要素データと呼ぶことがある。
 一つの仮想記憶ドライブ402において、一つの仮想ストライプ405、又は論理アドレスが連続する所定数の仮想ストライプ405が、一つの仮想パーセル400を構成する。この図の例においては、連続する論理アドレスを有する2個の仮想ストライプ405が、一つの仮想パーセル400を構成する。
 さらに、連続する論理アドレスを有する所定数の仮想ストライプ列406は、仮想チャンク(Vchunk:Virtual chunk)401を構成する。仮想チャンク401は、一つの仮想パーセル列である。仮想パーセル列は、一つの仮想パリティグループ204内の複数の仮想記憶ドライブ402のそれぞれの中の特定の論理アドレスの仮想パーセル400で構成される。言い換えれば、一つの仮想チャンク401は連続する論理アドレスを有する1以上の仮想ストライプ列406で構成されている。この図の例においては、一つの仮想チャンク401は、連続する論理アドレスを有する2個の仮想ストライプ列406で構成されている。この図の例においては、12個の仮想チャンク401が示されており、それぞれにVPG204内のVchunk#が与えられている。仮想パーセル400が一つの仮想ストライプ405で構成される場合、仮想チャンク401は一つの仮想ストライプ列406で構成される。
 この図の例においては、各仮想パーセル400内に記された数字のペアは、VPG#とVchunk#で表されるVchunk識別子である。例えば、Vchunk識別子が“0-1”である仮想パーセル400は、VPG#=0、Vchunk#=1に属することを示す。
 仮想記憶領域は、物理記憶ドライブ170が提供する物理記憶領域にマッピングされている。複数の物理記憶ドライブ170を含む物理パリティグループ(PPG:Physical Parity Group)205が構成される。この図の例においては、4個の物理記憶ドライブ170が、一つの物理パリティグループ205を構成する。この図の例においては、3個の物理パリティグループ205が示されており、それぞれにPPG#が与えられている。仮想記憶領域と物理記憶領域の間のマッピングをパーセルマッピングと呼ぶことがある。また、各物理パリティグループ205に属するドライブには、それぞれ物理パリティグループ内の位置を示すPCDEV(Physical Column DEVice)#が与えられる。この図の例においては、各物理パリティグループ205内に4個の物理記憶ドライブ170が示されており、それぞれに異なるPCDEV#が与えられている。
 仮想チャンク401内の各仮想パーセル400は、物理記憶領域における物理パーセル701にマッピングされる。各物理パーセル701内の数字は、対応する仮想パーセル400が属するVchunk識別子(VPG#とVchunk#)を示し、“S”はスペア領域を示す。
 仮想チャンク401と同様に、物理記憶領域において物理チャンク(Pchunk:Physical chunk)501が構成されている。物理チャンク501は、一つの物理パリティグループ205内の複数の物理記憶ドライブ170のそれぞれの中の特定の物理アドレスの物理パーセル701で構成される。この図の例においては、15個の物理チャンク501が示されており、それぞれにPchunk#が与えられている。各物理チャンク501は、Pchunk#とPPG#で同定される。
 この図の例においては、仮想チャンク401内の複数の仮想パーセル400は、障害回復のため、それぞれ異なる複数の物理記憶ドライブ170にマッピングされる。言い換えれば、仮想ストライプ列406内の複数の仮想ストライプ405も、それぞれ異なる複数の物理記憶ドライブ170にマッピングされる。これにより、冗長データセットは、物理パリティグループ内の物理記憶ドライブ数の要素データ(データD又はパリティP)を含み、それらは、物理パリティグループ内の物理記憶ドライブ数の物理記憶ドライブ170にそれぞれ書き込まれる。
 また、仮想チャンク401に含まれる複数の仮想パーセル400は、1以上の物理パリティグループ205に分散してマッピングされる。つまり、各仮想チャンク401を構成する仮想ストライプ405は、複数の物理パリティグループ205に分散してマッピングされうる。これにより、計算機システムは、I/O処理の負荷が特定の物理記憶ドライブ170に集中することを低減する。
 パーセルマッピングは、マッピング条件を満たす。マッピング条件は、各仮想チャンク401が複数の物理記憶ドライブ170にマッピングされることである。言い換えれば、マッピング条件は、一つの物理記憶ドライブ170内の複数の物理パーセル701が同一の仮想チャンク401にマッピングされないことである。
 物理記憶領域においては、所定のPchunk#の物理チャンク501は、スペア領域に割り当てられており、この図の例においては、Pchunk#が0である物理チャンク501は、スペア領域に割り当てられている。
 以下、実施例に係る計算機システムを説明する。以下では、本実施例を実現するための一例として特許文献1に示された構成を用いて説明することがあるが、本実施例は特許文献1に示された構成に限定されない。
 図2は、本実施例に係る計算機システムのハードウェア構成を示す。
 計算機システム1は、1以上のホスト計算機(以下、ホストという)10と、管理サーバ20と、ストレージコントローラ100と、ドライブエンクロージャ160とを含む。ホスト計算機10と、管理サーバ20と、ストレージコントローラ100とは、ネットワーク30を介して接続されている。ドライブエンクロージャ160は、ストレージコントローラ100と接続されている。ネットワーク30は、ローカルエリアネットワーク(LAN:Local Area Network)であっても良く、ワイドエリアネットワーク(WAN:Wide Area Network)であってもよい。ホスト10とストレージコントローラ100が一つの計算機であってもよい。また、ホスト10とストレージコントローラ100のそれぞれが仮想マシンであってもよい。
 ホスト10は、例えば、アプリケーションを実行する計算機であり、アプリケーションにより利用されるデータをストレージコントローラ100から読み出し、アプリケーションにより作成されたデータをストレージコントローラ100へ書き込む。
 管理サーバ20は、管理者により使用される計算機である。管理サーバ20は、情報を入力するための入力デバイスと、情報を表示するための出力デバイスとを含んでもよい。管理サーバ20は、入力デバイスに対する管理者の操作により、データの復元のためのデータ復元処理の種類の設定を受け付け、ストレージコントローラ100に受け付けたデータ復元処理を実行させるように設定する。
 ストレージシステムは、例えば、ストレージコントローラ100、及びドライブエンクロージャ160を含む。ドライブエンクロージャ160には、物理記憶ドライブ170(単にドライブとも呼ぶ)が複数含まれている。物理記憶ドライブ170は、1以上の記憶媒体を含む。記憶媒体は、例えば、磁気ディスク、フラッシュメモリ、その他の不揮発性半導体メモリ(PRAM、ReRAM等)である。
 ストレージコントローラ100は、1以上のフロントエンドパッケージ(FEPK:FrontEnd PacKage)110と、保守インタフェース(保守I/F)112と、1以上のCPU120と、1以上のキャッシュメモリパッケージ(CMPK:CM PacKage)130と、1以上のバックエンドパッケージ(BEPK:BackEnd PacKage)140と、内部ネットワーク150とを有する。
 FEPK110、保守I/F112、CPU120、CMPK130、及びBEPK140は、内部ネットワーク150を介して接続されている。BEPK140は、複数系統のパスを介してドライブエンクロージャ160と接続されている。
 FEPK110は、ホスト10とのインタフェースの一例であり、1以上のポート111を有する。ポート111は、ストレージコントローラ100を、ネットワーク30等を介して種々の装置と接続する。保守I/F112は、ストレージコントローラ100を、管理サーバ20と接続するためのインタフェースである。
 CPU120は制御部であって、1以上のCore121と、ローカルメモリ(LM:Local Memory)122とを有する。Core121は、LM122に格納されたプログラムを実行して各種処理を実行する。Core121は、BEPK140を介して、各種コマンド(例えばSCSIにおけるREADコマンドやWRITEコマンドなど)をドライブエンクロージャ160内の物理記憶ドライブ170に送信する。LM122は、各種プログラムや、各種情報を記憶する。
 CMPK130は、1以上のキャッシュメモリ(CM)131を有する。CM131は、ホスト10から物理記憶ドライブ170に書き込むデータ(ライトデータ)や、物理記憶ドライブ170から読み出したデータ(リードデータ)を一時的に格納する。
 BEPK140は、ドライブエンクロージャ160とのインタフェースの一例であり、1以上のポート111を有する。
 ドライブエンクロージャ160は、複数の物理記憶ドライブ170を有する。
 ストレージコントローラ100は、複数の物理記憶ドライブ170の記憶領域で構成される容量プール(以下、単にプールという)を管理する。ストレージコントローラ100は、プール内の記憶領域を用いてRAIDグループを構成する。すなわち、ストレージコントローラ100は、複数の物理記憶ドライブ170を用いて、複数の仮想パリティグループ(VPG)を構成する。VPGは、仮想的なRAIDグループである。
 VPGの記憶領域は、複数のサブ記憶領域列で構成されている。各サブ記憶領域列は、複数のサブ記憶領域で構成されている。複数のサブ記憶領域は、VPGを構成する複数の物理記憶ドライブ170に跨っており、複数の物理記憶ドライブ170にそれぞれ対応している。ここで、一つのサブ記憶領域を、「ストライプ」と呼び、サブ記憶領域列を、「ストライプ列」と呼ぶ。複数のストライプ列によって、RAIDグループの記憶領域が構成されている。
 RAIDには、いくつかのレベル(以下、「RAIDレベル」という)がある。例えば、RAID5では、RAID5に対応したホストコンピュータから指定されたライト対象のデータは、所定サイズのデータ(以下、便宜上「データ単位」という)に分割される。各データ単位は、複数のデータ要素に分割される。複数のデータ要素は、同一のストレイプ列内の複数のストライプにそれぞれ書き込まれる。
 RAID5では、物理記憶ドライブ170に障害が発生したことにより、その物理記憶ドライブ170から読み出せなくなったデータ要素をリビルドするために、各データ単位に対して、“パリティ”と呼ばれる冗長な情報(以下、「冗長コード」)が生成される。冗長コードも、複数のデータ要素と同一のストライプ列内のストライプに書き込まれる。
 例えば、RAIDグループを構成する物理記憶ドライブ170の数が4である場合、そのうちの3個の物理記憶ドライブ170に対応する3個のストライプに、データ単位を構成する3個のデータ要素が書き込まれ、残りの一つの物理記憶ドライブ170に対応するストライプに、冗長コードが書き込まれる。以下、データ要素と冗長コードとを区別しない場合には、両者をそれぞれストライプデータ要素ということもある。
 RAID6では、各データ単位に対して、2種類の冗長コード(Pパリティ、Qパリティという)が生成されて、それぞれの冗長コードが同一のストライプ列内のストライプに書き込まれる。これにより、データ単位を構成する複数のデータ要素のうちの2個のデータ要素を読み出すことができない場合に、これら2個のデータ要素を復元することができる。
 上記に説明した以外にもRAIDレベルは存在する(例えばRAID1~4)。データの冗長化技術として、3重ミラー(Triplication)や、パリティを3個用いたトリプルパリティ技術等もある。冗長コードの生成技術についても、ガロア演算を用いたReed-solomon符号や、EVEN-ODD等さまざまな技術が存在する。以下においては、主にRAID5又は6について説明するが、冗長化技術を上述した方法に置き換え可能である。
 ストレージコントローラ100は、物理記憶ドライブ170のうちいずれかの物理記憶ドライブ170が故障した場合に、故障した物理記憶ドライブ170に格納されているデータ要素を復元する。
 CPU(Central Processing Unit)120内のCore121は、故障した物理記憶ドライブ170に格納されていたデータ要素を復元するために必要なストライプデータ要素(例えば、他のデータ要素及びパリティ)を、当該データを格納している複数の物理記憶ドライブ170から取得する。Core121は、インタフェースデバイス(例えば、BEPK140)を介して、取得したストライプデータ要素をキャッシュメモリ(CM:Cache Memory)131に格納する。その後、キャッシュメモリ131のストライプデータ要素に基づいてデータ要素を復元し、当該データ要素を所定の物理記憶ドライブ170に格納する。
 例えば、RAID5で構成されたRAIDグループのデータ単位に対して、Core121は、データ単位を構成する複数のデータ要素の排他的論理和(XOR)をとることによってPパリティを生成する。RAID6で構成されたRAIDグループのデータ単位に対して、Core121は、更に、データ単位を構成する複数のデータ要素に所定の係数を掛けた後、それぞれのデータの排他的論理和をとることによって、Qパリティを生成する。
 以下、Core121の動作をストレージコントローラ100の動作として説明することがある。
 図3は、本実施例に係る計算機システムの論理構成を示す。
 ストレージコントローラ100は、複数、たとえば、4個のドライブ170を束ねて、物理パリティグループ(PPG)205を構成する。ストレージコントローラ100は、1以上の物理パリティグループ205とそれに対応する1以上の仮想パリティグループ(VPG)204とを含むDG(Distribution Group)207を構成する。
 ストレージコントローラ100は、DG207内の複数のPPG205の一部記憶領域を、同一DG207内のVPG204へ割り当てる。これにより、VPG204内の仮想的なストライプ列である仮想ストライプ列は、DG207の範囲で、複数のPPG205のドライブに分散される。つまり、VPG204へのI/O要求によって、そのVPG204が所属するDG207の範囲を超えたドライブ170へのアクセスは実行されない。DG207内に、VPG204とPPG205は同数存在し、DG207内に存在するその識別番号も同じである。論理的な記憶容量の集合であるプール200は、1以上のDG207を含む。
 前述したように、ストレージコントローラ100は、ドライブ170として、例えば、フラッシュメモリドライブ、SASドライブ、SATAドライブなど、性能特性が異なる複数種類のドライブを持つ場合がある。ドライブ170は、異なる特性に応じて階層(Tier)206に分類される。Tier206はそれぞれ性能特性が異なるため、DG207が異なるTier206に属するドライブ170で構成されていた場合、性能の低いドライブがボトルネックとなってしまう。そのため、DG207は、単一のTier206に属するドライブ170のみを含むように構成されることが望ましい。
 プール200内には複数の仮想ボリューム(VVOL:Virtual VOLume)201が存在する。VVOL201は、仮想的な記憶デバイスであり、ホスト10から参照されることができる。ストレージコントローラ100の管理者からの指示に応じて、管理サーバ20は、保守I/F112を介して、ストレージコントローラ100に任意のサイズのVVOL201を作成させる。サイズは、実際のドライブ170の合計容量に依存しない。ストレージコントローラ100は、ホスト10からのI/O要求(ホストI/O)により示されたVVOL201内の記憶領域(VVOLページ202)に対して、VPG203内の記憶領域(VPGページ203)を動的に割り当てる。
 ストレージコントローラ100は、VVOLページ202毎にアクセス頻度を記録し、高頻度のVVOLページ202に対して、高性能なVPGページ203を割り当てるようにしてもよい。例えばこの図において、高性能なVPGページ203は、高性能なフラッシュメモリドライブで構成されたTier206内のVPG204に属するVPGページ203である。ストレージコントローラ100は、継続的にVVOLページ202の負荷を監視して、周期的にVPGページ203の割り当てを変更してもよい。
 図4は、物理記憶ドライブのデータ構成を示す。
 物理記憶ドライブ170は、ストレージコントローラ100等の上位の装置との間で、SCSIコマンド処理の最小単位(例えば、512Byte)であるサブブロック300を単位として、データの受け渡しを行う。スロット301は、キャッシュメモリ131上でのデータをキャッシュする際の管理単位であり、例えば、256KBである。スロット301は、連続する複数のサブブロック300の集合で構成される。物理ストライプ302は、複数(例えば、2個)のスロット301を格納する。
 図5は、仮想ボリュームのページマッピングを示す。
 ホスト10により認識可能なVVOL201は、複数のVVOLページ202で構成される。VVOL201は、ユニークな識別子(VVOL番号)を持つ。ストレージコントローラ100は、VVOLページ202に、VPG204内のVPGページ203を割り当てる。この関係をページマッピング403と呼ぶ。ページマッピング403は、ストレージコントローラ100により動的に管理される。連続するVVOLページ#を持つ複数のVVOLページには、連続するVVOL空間のアドレスが与えられる。
 VPG204は、1以上の仮想チャンク(Vchunk)401を含む。Vchunk401は、複数の仮想パーセル400で構成される。この図の例では、Vchunk401は、8個の仮想パーセル400で構成されている。
 仮想パーセル400は、一つの仮想記憶ドライブ402内の連続した領域で構成されている。仮想パーセル400は、1又は複数の仮想ストライプ405で構成されている。この図の例において、仮想パーセル400は、8個の仮想ストライプ405で構成されている。仮想パーセル400における仮想ストライプ405の数は特に限定されない。仮想パーセル400が複数の仮想ストライプ405を含むことで、処理の効率化が実現される。
 この図の例において、VPG204は、RAID6の6D+2P構成である、すなわち、データ単位を構成する6つのデータ要素(D)と、これらデータ要素に対応する2つのパリティ(P、Q)とをそれぞれ異なる物理記憶ドライブ170に格納する。この場合、Vchunk401は、例えば、8個の異なる物理記憶ドライブ170の仮想パーセル400で構成される。
 言い換えれば、Vchunk401は、複数の仮想ストライプ列406で構成されており、この図の例においては、8個の仮想ストライプ列406で構成されている。Vchunk401が複数の仮想ストライプ列406を含むことで、処理の効率化が実現される。なお、Vchunk401は、一つの仮想ストライプ列406で構成されてもよい。
 Vchunk401は、複数(例えば、4個)のVPGページ203を含む。VPGページ203は、複数(例えば、2個)の連続する仮想ストライプ列406のストライプデータ要素を格納することができる。例えば、この複数のデータ単位を数MBとすることで、ドライブ170が磁気ディスクなどである場合でも、ホストI/Oのシーケンシャル性能を一定に保つことができる。
 この図においては、1_D1、1_D2、1_D3、1_D4、1_D5、1_D6、1_P、1_Qのように、「_」の前の数字が共通するものが、同一の仮想ストライプ列406のストライプデータ要素を示す。なお、各ストライプデータ要素のサイズは、物理ストライプ302のサイズである。
 VPG204は上位ストレージシステムにおいて、ユニークな識別子(VPG番号)を持つ。また、各VPG204内のN個の仮想記憶ドライブ402のそれぞれには、ドライブ番号(VCDEV番号)が与えられている。これは、VPG204内の記憶領域のアドレッシングのための識別子で、後述するPPG205内のドライブとの対応関係を表すための識別子である。NをPGドライブ数と呼ぶことがある。
 各VVOL201は、ホスト10から、VVOL201を表す識別子とLBAとを用いてアクセスされる。この図に示すように、VVOLページ202には、VVOL201の先頭からVVOLPage#が与えられる。ホストI/Oにより指定されたLBAに対して、以下の式によりVVOLPage#を算出することが出来る。ここで、Floor(x)は、実数xに対してx以下の最大の整数を示す記号である。LBA及びVVOLPagesizeのそれぞれは、サブブロック数で表されてもよい。
 VVOLPage#=Flооr(LBA/VVOLPagesize)
 また、VVOLページ202及びVPGページ203のそれぞれは、複数の仮想ストライプで構成されている。ただし、ホスト10にパリティのデータをアクセスさせないため、VVOL201上ではパリティが見えない。例えば、この図で示している6D+2Pの場合、VPG204の空間において8×2個の仮想ストライプを含むVPGページ203は、VVOL201の空間において6×2個の仮想ストライプを含むVVOLページ202として見える。
 ストレージコントローラ100は、VPG204の空間とVVOL201の空間を補正することにより、ページマッピング401と合わせて、VVOL201側のLBAに対応するVPG#でのVCDEV#とVchunk#、及び仮想パーセル400内のオフセットアドレスを算出することが出来る。もちろん、ストレージコントローラ100は、ホストI/Oに対応したパリティ領域のVPG#でのVCDEV#とVchunk#、及び仮想パーセル400内のオフセットアドレスも算出可能である。
 この図は、RAID6(6D+2P)を用いるケースを示すが、例えば14D+2Pなど、D数を増やしてもよいし、RAID5やRAID1を用いてもよい。また、RAID4のようにパリティのみの仮想パーセルを作成してもよい。通常のRAID4の場合、上位層の論理設計を簡略化できるというメリットがある一方、Write時にパリティドライブにアクセスが集中するため、パリティドライブがボトルネック化しやすいというデメリットがあるが、分散RAID構成の場合、VPG204上のパリティドライブ内のデータは、PPG205上では複数の物理ドライブ170に分散されているため、当該デメリットの影響を最小化することができる。また、RAID6におけるQパリティのエンコーディングはガロア演算以外でも、EVEN-ODD法など他の一般的に知られた方法を使ってもよい。
 図6は、VPGとPPGの間のパーセルマッピングを示す。
 Vchunk401は、前述のとおり、VPG204の記憶領域の空間において連続的である。連続するc個のVchunk401は、Vchunk周期504を構成する。PPG205は、1以上の物理チャンク(Pchunk)501を含む。Pchunk501は、複数の物理パーセルで構成される。この図の例では、Pchunk501は、8個の物理パーセルで構成されている。
 連続する一つ以上のPchunk501bとc個のPchunk501aとは、Pchunk周期505を構成する。cを周期Vchunk数と呼ぶ。Pchunk501bはスペア領域であり、Pchunk501aはデータ領域である。一つのVchunk周期504は、一つのPchunk周期505に対応する。また、パーセルマッピング500は周期的である。すなわち、Vchunk周期504とPchunk周期505の各ペアにおいてパーセルマッピング500は共通である。仮想記憶領域と物理記憶領域との間のパーセルマッピング500が周期的であることで、データを複数の物理記憶領域へ適切に分散できると共に、パーセルマッピング500の効率的な管理が実現される。なお、非周期的、即ち1周期のみのパーセルマッピングが採用されてもよい。
 各Vchunk周期504内のVchunk401の識別子をVcycle#で表す。したがって、Vcycle#は、0からc-1までの値を取る。Pchunk周期505内のPchunk501の識別子を、Pcycle#で表す。Pcycle#は、一つのPchunk周期505内のスペア用Pchunk数をmとすると、0からc+m-1までの値を取る。
 ストレージコントローラ100は、一つのVchunk周期504に対して、1以上のPPG205に属するPchunk501aを割り当てる。ストレージコントローラ100は、逆に一つのPchunk周期505を、1以上のVPG204に属するVchunk401に割り当てる。一つのVchunk401内の複数の仮想パーセルのデータ実体には、複数のPchunk501aに亘る複数の物理パーセルが割り当てられる。
 上述のように、Pchunk周期505はスペア用のPchunk501bを持つため、Pchunk周期505のチャンク数は、Vchunk周期504のチャンク数よりも1以上多い。この図の例では、式Pchunk# mod (c+1)=0が成立する場合、即ち、Pchunk#=k(c+1)(kは0以上の整数)の場合に、そのPchunk#のPchunk501bは、スペア用の領域である。当該スペア領域は、PPG205が属するDG207内のドライブが故障した場合に、リビルド処理の復元先として使用される予約領域である。
 なお、この図の例では、一つのドライブ170におけるスペア用のPchunk501bは、一つのPchunk周期505に一つのみ存在しているが、システム全体に占めるスペア領域の割合を増やしたい場合は、当該スペア用のPchunk501bをPchunk周期505あたり2個以上定義してもよい。即ち、Pchunk周期505あたりのスペア用Pchunk501bをm個(mは1以上の整数)とした場合、Pchunk周期505内のチャンク数は、Vchunk周期504内のチャンク数に比べてm個多くなる。また、Pchunk#=k(c+1)~k(c+1)+m-1の場合に、そのPchunk#のPchunk501bは、スペア用の領域である。
 仮想スペアドライブ(VSD:Virtual Spare Drive)502は、故障ドライブと対応する、実体としては存在しないドライブである。仮想スペアドライブ502には、領域として、Pchunk501bの一部であるスペア領域(Pcycle#=0~m-1)が割り当てられる。当該割り当てをスペアマッピング503と呼ぶ。スペアマッピング503については、後ほど説明する。
 次に、VPG204とPPG205のパーセルマッピング500について、c=4、N=4、G=3の例について説明する。cはVchunk周期504内のVchunk数、Nはパリティグループ(VPG204及びPPG205)内のドライブ数、GはDG内のパリティグループ数である。
 このように、パーセルマッピングを、Vchunk周期504及びPchunk周期505の組み合わせ毎に、繰り返し配置することで、マッピングパターンの規模を減少させると共にマッピングパターンの生成の負荷やアドレス変換の負荷を抑えることができる。
 図7は、ドライブ数がNの整数倍である第1構成ケースのパーセルマッピングの例を示す。図8は、ドライブ数がNの整数倍でない第2構成ケースのパーセルマッピングの例を示す。
 VPG204内の仮想記憶ドライブ402内の仮想パーセル400に記されているVchunk識別子“x-y”のうち、xは、VPG#を表し、yはVchunk#を表している。その仮想パーセル400に割り当てられた物理パーセルには、同じVchunk識別子が記している。PPG205内の各ドライブ170には、スペア領域501b(“S”と表記)が定義されている。パーセルマッピングにおいて、一つのVchunk周期504内の複数の仮想パーセル400と、一つのPchunk周期505内の複数の物理パーセルとの間の対応関係を、マッピングパターンと呼ぶ。例えば、マッピングパターンは一つのPchunk周期505内の各物理パーセルに対応するVchunk識別子で表される。各Pchunk周期505のマッピングパターンは、共通である。
 第1構成ケース及び第2構成ケースにおいては、2個のVchunk周期504と、2個のPchunk周期505とを示す。各Pchunk周期505(c+1=5個のPchunk)は、3個のPPG205に亘る。一つのPchunk周期505のうち、スペア領域を除く全ての物理パーセルは、一つのVchunk周期504内の仮想パーセルに割り当てられる。第1構成ケースにおいては、全ての仮想パーセルに物理パーセルが割り当てられる。
 第2構成ケースのように、ドライブ170の台数がNの整数倍でないケースにおいて、ストレージコントローラ100は、VPG204内の全Vchunkをページに割り当てるのではなく、端数分の仮想ストライプについては、特定のVPG204の一部のVchunkのみ割当を行う。DG内のドライブ数が(G-1)×N+h(hは1~N-1の整数)である場合、一つのVchunk周期504に割り当て可能なVchunk数は、h×c/N個となる。第2構成ケースでは、c=4、N=4であるため、Vchunk周期504あたり1個のVchunkが割り当て可能となっている。
 ここではc=4としているが、ドライブ170の台数がNの整数倍でない任意のケースにおいて、VPG-PPG間のマッピングを適切に設定するために、cはNの整数倍であればよい。増設前において、VPG内のデータDのドライブ数をxとし、VPG内のパリティPのドライブ数をyとすると、冗長度をxD+yPと表すことができる。本実施例によれば、増設後も冗長度は変わらず、xD+yPである。このように、VPG内の仮想記憶ドライブ数Nが、PPG内の物理記憶ドライブ数Nと等しく、Vchunk周期504内のVchunk数がNの整数倍であることにより、DG内の物理記憶ドライブ数がNの整数倍でない場合でも、増設された物理記憶ドライブ内の物理パーセルをVchunkに割り当てることができ、DG内の物理記憶ドライブ数がNの整数倍である場合と同じ冗長度を維持することができる。
 図9は、第1構成ケースの1台のドライブの故障時におけるリビルドの動作例を示す。
 ここでは、ドライブ170a(PPG#0のPCDEV#0)が故障した場合、リビルド動作を示している。
 まず、スペア領域(例えば700a)に、故障したドライブに含まれている物理パーセルに対応する仮想パーセル(例えば仮想パーセル400a)を配置する(管理テーブルの更新)。割り当てたスペア領域700に対して、リビルド処理を実行する。2D+2P構成では、故障ドライブ170a内の仮想パーセル400a、400b、400c、400dのそれぞれに対して、同一仮想チャンクに属する3個の正常仮想パーセルが存在する。ストレージコントローラ100は、このうち2パーセルを、故障ドライブ170a以外の正常ドライブ170bからリードすれば、故障ドライブの喪失データをスペア領域700a、700b、700c、700dへ復元できる。そのため、ストレージコントローラ100は、各仮想パーセル400が存在する3台の正常ドライブ170bの中から、全正常ドライブ170b間の偏りが少なくなるように2台の正常ドライブ170bの仮想パーセルを選択することにより、一つのPchunk周期の一つのドライブ170bからの最大リード量を2パーセル分に制限できる。従来RAID方式では、一つのPchunk周期に対応する一つのドライブからの最大リード量が4パーセル分に相当するため、この図の例では、従来RAID方式と比較し、リビルド時のリード性能を2倍に向上できる。同様に、従来RAID方式では、リビルドされたデータを一つのドライブへライトするのに対し、この図の例では、リビルドされたデータを複数のドライブへ分散してライトするため、リビルド時のライト性能も向上できる。このように、本実施例の計算機システムは、仮想チャンクのストライプデータ要素を分散して複数のドライブ170に配置することにより、リビルド性能を向上させることができる。
 この図の例においてストレージコントローラ100は、故障ドライブ170a内の8個の物理パーセルのデータを復元するために、正常ドライブ170bから、点線で囲まれた16個の物理パーセル701をリードする。
 図10は、共有メモリの内容を示す。
 共有メモリ1000は、例えば、物理記憶ドライブ170、CM131、及びLM122の少なくともいずれか1個の記憶領域を用いて構成される。なお、ストレージコントローラ100は、物理記憶ドライブ170、CM131、及びLM122の内の複数の構成の記憶領域を用いて論理的な共有メモリ1000を構成し、各種情報についてキャッシュ管理を行うようにしてもよい。
 共有メモリ1000は、プール管理テーブル1001と、ドライブ状態管理テーブル1002と、ページマッピングテーブル1003と、SWAPポインタテーブル1004と、マッピング補正テーブル1005と、マッピング逆補正テーブル1006と、VCDEVマッピングテーブル(SEEDテーブル)1007と、Vcycleマッピングテーブル(V2Pテーブル)1008と、Pcycleマッピングテーブル(P2Vテーブル)1009と、スペア変換テーブル1010と、スペア逆変換テーブル1011と、仮想スペア管理テーブル1012とを格納する。
 VCDEVマッピングテーブル1007と、Vcycleマッピングテーブル1008と、Pcycleマッピングテーブル1009と、スペア変換テーブル1010と、スペア逆変換テーブル1011と、仮想スペア管理テーブル1012は、特許文献1に示されたテーブルと同様である。VCDEVマッピングテーブル1007は、VPG#及びVCDEV#の組み合わせに対応するSEED値を格納する。SEED値は、例えば線形合同法等の疑似乱数生成方式により決定される。Vcycleマッピングテーブル1008は、Vchunkに対応するPchunkを示し、VPG#とVcycle#の組み合わせで表されるVchunkと、PPG#とPcycle#の組み合わせで表されるPchunkとを示す。Pcycleマッピングテーブル1009は、Vcycleマッピングテーブル1008の逆引きテーブルであり、Pchunkに対応するVchunkを示す。スペア変換テーブル1010は、仮想スペアドライブ内の仮想チャンクに割り当てられるドライブを示す。スペア逆変換テーブル1011は、スペア変換テーブル1010の逆引きテーブルであり、ドライブに対応する仮想スペアドライブ内の仮想チャンクを示す。仮想スペア管理テーブル1012は、仮想スペアドライブが使用中であるか否かを示す状態と、仮想スペアドライブのリビルド中にリビルドが完了したLBAを示すコピーポインタとを含む。その他の各テーブルの詳細については後述する。
 パーセルマッピングにおいて、DG内のドライブ数がNの整数倍である場合のマッピングパターンを、Goalマッピングパターンと呼ぶ。Goalマッピングパターンは、VCDEVマッピングテーブル1007と、Vcycleマッピングテーブル1008と、Pcycleマッピングテーブル1009とにより表される。DG内のドライブ数がNの整数倍でない場合のマッピングパターンは、GoalマッピングパターンとGoalマッピングパターンに対する補正パターンとで表される。補正パターンは、マッピング補正テーブル1005と、マッピング逆補正テーブル1006とにより表される。
 また、ドライブの増設時、増設前のマッピングパターンを現行マッピングパターン(Current)と呼び、増設後のマッピングパターンを目標マッピングパターン(Target)と呼ぶ。即ち、単体増設時、共有メモリ1000は、Currentのマッピング補正テーブル1005及びマッピング逆補正テーブル1006と、Targetのマッピング補正テーブル1005及びマッピング逆補正テーブル1006とを格納する。
 スペアマッピングは、スペア変換テーブル1010と、スペア逆変換テーブル1011と、仮想スペア管理テーブル1012とにより管理される。
 図11は、ローカルメモリの内容を示す。
 ローカルメモリ122は、単体増設処理プログラム1101と、単体増設マッピング生成処理プログラム1102と、完全一致ペアSWAP処理プログラム1103と、部分一致ペアSWAP処理プログラム1104と、不一致ペアSWAP処理プログラム1105と、単体増設パーセルリバランス処理プログラム1106と、ページ割り当て処理プログラム1107と、LP変換処理プログラム1108と、PL変換処理プログラム1109と、マッピング補正処理プログラム1110とを格納する。各処理の具体的な用途については後述する。
 図12は、プール管理テーブルを示す。
 プール管理テーブル1001は、プール200と、Tier206と、DG207と、VPG204の対応関係を示す情報である。プール管理テーブル1001は、Pool#1200と、Tier#1201と、DG#1202と、VPG#1203と、割当可能Vchunk数1204のフィールドを含む。
 本テーブルにより、ストレージコントローラ100は、プール200の各Tier206に属するDG207の識別子と、各DG207に属するVPG204の識別子と、各VPGに204の割当可能Vchunk数を調べることができる。DG207内のVPG204とPPG205の数(識別子)は等しいため、対象DG207に属するPPG#も知ることができる。例えばあるDG207内にVPG#0、1、3が属していた場合、当該DG207内にはPPG#0、1、3が属していることがわかる。
 割当可能Vchunk数1203には、対応するPPG205のドライブ数をもとに、Vchunk周期504(c)までの値が格納される。VPG#1203で示されたVPG204においては、各Vchunk周期504あたり、その割当可能Vchunk数1203を超えるVchunk#にページを割り当てることができない。DG1202内のドライブ数をD個とした場合、割当可能Vchunk数1203は、以下の基準で設定される。最後に増設されたVPGの割当可能Vchunk数1203には、DがNの整数倍の場合にはcが設定され、DがNの整数倍でない場合には、式(D mod N)*c/Nで表される値が設定される。ここで、cはNの整数倍であるので、上記式の結果は必ず整数となる。残りのVPGの割当可能Vchunk数1203には、cが設定される。
 図13は、ドライブ状態管理テーブルを示す。
 ドライブ状態管理テーブル1002は、PPG205を構成する物理記憶ドライブ170の状態を管理するテーブルである。ドライブ状態テーブル1002は、PPG#1205と、PCDEV#1206と、状態1207とのフィールドを含む。PPG#1205には、PPG#が格納される。PCDEV#1206には、PPG#1205のPPG205を構成する物理記憶ドライブ170の番号(物理記憶ドライブ番号)、即ち0~N-1までの値が格納される。
 状態1207には、PPG#1205、PCDEV#1206に対応する物理記憶ドライブ170の状態が格納される。物理記憶ドライブ170の状態としては、物理記憶ドライブ170がリード及びライトアクセスが可能で正常であることを示す「正常」、又は物理記憶ドライブ170の故障等によりリードまたはライトアクセスが不可能なことを示す「アクセス不可」、ドライブが未実装であることを示す「未実装」が設定される。
 図14は、ページマッピングテーブルを示す。
 ページマッピングテーブル1003は、VVOL201のページと、VPG204のページとの対応関係を示す情報である。ページマッピングテーブル1003は、プール#1300と、VVOL#1301と、VVOLページ#1302と、VPG#1303と、VPGページ#1304とのフィールドを含む。プール#1300と、VVOL#1301と、VVOLページ#1302とは、VVOLページを示す。VPG#1303と、VPGページ#1304とは、当該VVOLページに割り当てられたVPGページを示す。未使用のVVOLページ#1302に対応するVPG#1303及びVPGページ#1304には、「未割当」に相当する値が格納される。
 図15は、SWAPポインタテーブルを示す。
 SWAPポインタテーブル1004は、Pool#1305と、DG#1306と、PG増設用SWAPポインタ1307と、単体増設用SWAPポインタ1308のフィールドを含む。本テーブルにより、ストレージコントローラ100は、対象のDGが増設中である場合、各SWAPポインタの値を参照することが出来る。
 PG増設用SWAPポインタ1307は、特許文献1に示されたSWAPポインタと同様であり、対応するDGのVPG空間内のLBAを表す。PG増設用SWAPポインタ1307は、PG単位で増設する場合に使用され、PG増設用SWAPポインタより前のLBAのデータは、PG増設処理における、データのSWAPが完了していることを表している。ストレージコントローラ100は、PG増設処理中にVPG空間のアドレスにアクセスする場合、指定されたVPG空間のアドレスがPG増設用SWAPポインタより前であれば、増設後のマッピングパターンを用いてアドレス変換を行い、指定されたVPG空間のアドレスがPG増設用SWAPポインタ以降であれば、増設前のマッピングパターンを用いてアドレス変換を行う。
 単体増設用SWAPポインタ1308は、対応するDGのVPG空間内のLBAを表す。単体増設用SWAPポインタ1308は、ドライブ単位で増設する場合に使用され、単体増設用SWAPポインタより前のLBAのデータは、単体増設処理における、データのSWAPが完了していることを表している。ストレージコントローラ100は、単体増設処理中にVPG空間のアドレスにアクセスする場合、指定されたVPG空間のアドレスが単体増設用SWAPポインタより前であれば、増設後のマッピングパターンを用いてアドレス変換を行い、指定されたVPG空間のアドレスが単体増設用SWAPポインタ以降であれば、増設前のマッピングパターンを用いてアドレス変換を行う。
 各SWAPポインタの値は、無効値である場合、増設が実施されていない又は完了済みの状態を表す。また、各SWAPポインタの値は、増設処理の開始時に0に初期化される。
 図16は、マッピング補正テーブルを示す。
 マッピング補正テーブル1005は、Index#として、PPG#1400と、PCDEV#1401と、Pcycle#1402とのフィールドを含み、対応するValueとして、PPG#1403と、PCDEV#1404と、Pcycle#1405とのフィールドを含み、SWAPフラグ1406のフィールドを含む。
 マッピング補正テーブル1005の各エントリにおいて、Index#は、SWAP元の物理パーセルを示し、Valueは、SWAP先の物理パーセルを示す。Valueに対応するドライブが存在しない場合、Valueに「無効」に相当する値が格納される。
 また、SWAPフラグ1406は、増設処理中に値が更新される。具体的には、ストレージコントローラ100は、増設処理の実行中において、Index#に対応する物理パーセルがSWAP対象であると判定した場合にそのSWAPフラグ1406をONに設定し、その物理パーセルのデータSWAP処理が終了した時点でそのSWAPフラグ1406をOFFに設定する。
 図17は、マッピング逆補正テーブルを示す。
 マッピング逆補正テーブル1006は、Indexとして、PPG#1407と、PCDEV#1408と、Pcycle#1409とのフィールドを含み、対応するValueとして、PPG#1410と、PCDEV#1411と、Pcycle#1412とのフィールドを含む。
 マッピング逆補正テーブル1006の各エントリにおいて、Index#は、マッピング補正テーブル1005に示されたSWAP先の物理パーセルを示し、Valueは、マッピング補正テーブル1005に示されたSWAP元の物理パーセルを示す。Index#に対応するドライブが存在しない場合は、当該ドライブに対応する物理パーセルのIndex#に「無効」に相当する値が格納される。
 ストレージコントローラ100は、マッピング補正テーブル1005のエントリを設定すると、その情報を、マッピング逆補正テーブル1006の対応するエントリに設定する。
 図18は、単体増設処理の第1増設ケースを示す。
 ドライブ単位の増設処理を単体増設処理と呼ぶ。第1増設ケースは、c=4、N=4の構成において、PG=1、ドライブ数=4の状態から、1台のドライブを増設し、PG=2、ドライブ数=5に変更する例を示す。
 P1は、ドライブ増設前の初期のマッピングパターンである現行マッピングパターンを示す。なお、この図の例は、簡単のため、一つのPchunk周期505のみを記す。この状態においては、1台のドライブが閉塞した場合に、そのドライブのデータを復旧するためのPPG内の正常ドライブ内のスペア領域の数3が、閉塞したドライブ内のデータ領域の数4より少なくなる。そのため、P1の段階において、ストレージコントローラ100は、まだデータを格納することができない。
 P2は、ドライブ増設直後の現行マッピングパターンを示す。この状態において現行マッピングパターンには、新規追加ドライブ170b内の4個の物理パーセルと、Vchunk識別子“1-0”で示される1個の仮想チャンクが現行マッピングパターンに追加される。また、現行マッピングパターンは、追加された4個の物理パーセルを、追加された仮想チャンクに割り当てることを示す。当該仮想チャンクをVVOLページへ割り当てることを許可した場合、新規追加ドライブ170bが閉塞した時点で当該仮想チャンクに割り当てられたデータがロストしてしまう。そのため、P2の段階において、ストレージコントローラ100は、新規追加ドライブ170bに対応する仮想チャンクをVVOLページへ割り当てることができない。
 なお、この図の例は、c=Nの場合であるため、ドライブ増設直後のP2において、増設対象ドライブ170bには一つのVchunkしか割り当てられていないが、c=kN(kは1以上の任意の整数)の場合、初期状態における増設対象ドライブ170bには、k個のVchunkが割り当てられる。
 P2aは、後述するパーセルリバランス処理を行う際の目標となるマッピングパターンである。以降当該マッピングパターンを「Goalマッピングパターン(或いは単にGoalマッピング、Goalとも呼称する)」と呼称する。当該Goalマッピングパターンは、ドライブ数=N×{増設後のPG数}の条件で生成されたマッピングパターンである。この図の例は、PG=2、ドライブ数=8の場合のGoalマッピングパターンを示す。Goalマッピングパターンの作成方法は、特許文献1に示された方法であってもよいし、その他のPG単位で増設を行う分散RAID方式のマッピング方式であっても良い。例えば、ストレージコントローラ100は、疑似乱数の生成や予め設定された乱数テーブルに基づいて、仮想パーセルに割り当てる物理パーセルを決定することで、Goalマッピングパターンを生成してもよい。Goalマッピングパターンは、ストレージコントローラ100に予め設定されていてもよい。Goalマッピングパターンによる、複数のドライブ170への仮想チャンクの配置は、I/Oの負荷を複数のドライブ170に最適に分散させる。また、リビルド処理を高速化するために適した配置となっている。
 その後、ストレージコントローラ100は、Goalマッピングパターンのうち、増設後のドライブ台数に相当する範囲のマッピング情報1500をもとに、後述の増設後マッピングパターン生成方法を用いて、P3のマッピングパターンを生成する。ストレージコントローラ100は、このマッピングパターン生成後、マッピングパターンに従ってデータを移動させるデータSWAP処理を行い、増設処理を完了する。但し、P3の状態では、まだデータが格納されていないので、実際のデータの移動は行われない。この状態は、PG単位で増設した場合と同じ冗長度を確保でき、どのドライブが故障してもそのドライブのデータをリビルドできる。ストレージコントローラ100は、データSWAP処理の完了後、増設対象DG207に対応する仮想チャンク内の全VPGページを、VVOLページへ割り当てることを許可する。
 従来の分散RAID方式における最小構成は、P1で述べた理由により、1個のPGでは運用できず、2個のPGになる。一方、本実施例の計算機システムの最小構成は、P2及びP3で示したように、1個のPGと1個のドライブになる。これにより、初期コストを低減できる。
 図19は、第1増設ケースにおけるマッピングパターン生成方法の概念を示す。
 P2-0は初期の現行マッピングパターンを示す。P2aはGoalマッピングパターンを示す。
 まず、ストレージコントローラ100は、二つの物理パーセルである物理パーセルペアを選択し、現行マッピングパターンから二つの物理パーセルにそれぞれ対応付けられた二つのVchunk識別子を取得し、二つのVchunk識別子をSWAPした場合の両方のVchunk識別子がGoalマッピングパターンと一致する物理パーセルペアを検索し、そのような物理パーセルペアが存在した場合、その物理パーセルペアをSWAPする。
 P2-1において、物理パーセル1600aは現行マッピングパターンではVchunk識別子“1-0”に対応付けられており、GoalマッピングパターンではVchunk識別子“0-0”に対応付けられている。一方、物理パーセル1600bは、現行マッピングパターンではVchunk識別子“0-0”に対応付けられており、GoalマッピングパターンではVchunk識別子“1-1”に対応付けられている。従って、ストレージコントローラ100は、当該物理パーセルペア(1600a、1600b)をSWAPすることで、その両方に対応するVchunk識別子をGoalマッピングパターンと一致させることが可能となるため、これをSWAPする。
 全物理パーセルに対してP2-1の条件を満たす物理パーセルペアをSWAPしても、2個以上の物理パーセルが同一のVchunk識別子に対応するドライブ170が1つ以上存在する場合、ストレージコントローラ100は、SWAP後の一方のVchunk識別子だけがGoalマッピングパターンと一致する物理パーセルペアを検索し、そのような物理パーセルペアが存在した場合、その物理パーセルペアをSWAPする。
 P2-2の1回目において、物理パーセル1601aは、現行マッピングパターンではVchunk識別子“1-0”に対応付けられており、GoalマッピングパターンではVchunk識別子“1-1”に対応付けられている。一方、物理パーセル1600bは、現行マッピングパターンではVchunk識別子“0-1”に対応付けられており、GoalマッピングパターンではVchunk識別子“1-0”に対応付けられている。従って、ストレージコントローラ100は、当該物理パーセルペア(1601a、1601b)をSWAPすることで、物理パーセル1601bに対応するVchunk識別子をGoalマッピングパターンと一致させることが可能となるため、これをSWAPする。
 同様にP2-2の2回目において、ストレージコントローラ100は、物理パーセルペア(1602a、1602b)をSWAPすることで、物理パーセル1602aに対応するVchunk識別子をGoalマッピングパターンと一致させることが可能となるため、これをSWAPする。
 なお、P2-1及びP2-2において、ストレージコントローラ100は、SWAP前の何れかのVchunk識別子がGoalマッピングパターンとしている一致する物理パーセルペアをSWAP対象として選択しない。
 この図の例では、ストレージコントローラ100は、P2-2の処理を行うことで増設後のマッピングパターンを生成することが可能となる。もし、全物理パーセルのうちP2-2の条件を満たす物理パーセルペアのSWAPを行っても、2個以上の物理パーセルが同一のVchunk識別子に対応するドライブ170が1つ以上存在する場合、ストレージコントローラ100は、SWAP後の両方のVchunk識別子がGoalマッピングパターンと一致しない物理パーセルペアを検索し、その物理パーセルペアをSWAPする。
 なお、本処理においても、P2-2と同様に、ストレージコントローラ100は、SWAP前の何れかのVchunk識別子がGoalマッピングパターンと一致する物理パーセルをSWAP対象として選択しない。ストレージコントローラ100は、以上の処理によってP3の現行マッピングパターンを生成する。
 例えば特許文献1のような分散RAIDシステムは、ドライブ数がNの整数倍である場合を前提としているため、ドライブ数がNの整数倍の場合、I/O時の負荷等の分散が最適化されるように設計されている。一方、本実施例の分散RAIDシステムにおいて、ドライブ数がNの整数倍でない場合は、I/O時の負荷等の分散がわずかながら最適化されない。
 しかし、本実施例のように、ストレージコントローラ100が、Goalマッピングパターンを設定し、当該Goalマッピングパターンに出来るだけ一致するように現行マッピングパターンを生成することにより、ドライブ数がNの整数倍でない場合の分散の効果を最適に近づけると共に、ドライブ数がNの整数倍になった場合に最小の移動量で上記最適化の効果を得ることができる。
 図20は、単体増設処理の第2増設ケースを示す。
 前述の第1増設ケースは、ドライブ数がNの整数倍の場合からドライブ単位で増設を行った。この図の第2増設ケースのようにドライブ数がNの整数倍でない場合からも、第1増設ケースと同様の方法によってドライブ単位の増設を実施することが可能である。
 P1は、増設前の現行マッピングパターンを示す。増設前のDGのドライブ数は、5であり、Nの整数倍ではない。P2に示すように、3台のドライブ170bを増設することで、増設後のドライブ数がNの整数倍になる場合、前述のマッピング生成処理により、P3に示す増設後のマッピングパターンは、P2aに示すGoalマッピングパターン1700と完全に一致させることが可能となる。
 以下、ストレージコントローラ100の動作の詳細について説明する。
 図21は、単体増設処理を示す。
 単体増設処理プログラム1101は、ドライブ単位でドライブを増設する場合に単体増設処理を行う。管理者は、システムに対して増設用のドライブを追加した後、DGに対するドライブ単位の増設指示を管理サーバ20へ入力する。ストレージコントローラ100は、その増設指示を管理サーバ20から受領した契機で、単体増設処理を実行する。
 まず、単体増設処理プログラム1101は、増設ドライブの中から、任意の一台を対象ドライブとして選択する(ステップ1801)。ここで、ステップ1802~1804をドライブ増設処理と呼ぶ。例えば、単体増設処理プログラム1101は、増設ドライブのうち、ドライブ増設処理を未実施のドライブから、システム内の物理的なドライブ#が若い順に、対象ドライブを選んでもよい。
 次に、単体増設処理プログラム1101は、単体増設マッピング生成処理を実施する(ステップ1802)。単体増設マッピング生成処理については後述する。
 次に、単体増設処理プログラム1101は、単体増設パーセルリバランス処理を実施する(ステップ1803)。単体増設パーセルリバランス処理については後述する。
 次に、単体増設処理プログラム1101は、対象ドライブに対応するVchunkを仮想ボリュームへ割り当てることを許可する(ステップ1804)。
 なお、本図の例では、増設ドライブ全体のパーセルリバランス処理が完了した後に、増設ドライブ全体のデータ割当を許可しているが、単体ドライブ内の一定領域のパーセルリバランスが完了する毎に、当該領域のデータ割当を許可するようにしてもよい。
 次に、単体増設処理プログラム1101は、システムに対して追加した全増設ドライブに対してドライブ増設処理が完了しているかを判定する(ステップ1805)。全増設ドライブに対してドライブ増設処理が完了していない場合(ステップ1805でNo)、単体増設処理プログラム1101は、ステップ1801に戻り、次の対象ドライブに対して同様の処理を実施し、全増設ドライブに対してドライブ増設処理が完了している場合(ステップ1805でYes)は、処理を終了する。
 図22は、単体増設マッピング生成処理を示す。
 単体増設マッピング生成処理プログラム1102は、前述の単体増設処理のステップ1802において、増設後のマッピングパターンを生成する単体増設マッピング生成処理を実行する。
 まず、単体増設マッピング生成処理プログラム1102は、増設前の現行マッピングパターン(Current)を、マッピングパターン(Target)にコピーした後、Targetにおける増設ドライブ内のマッピングを生成する(ステップ1901)。本実施例において、周期Vchunk数cはNの整数倍であるため、kを整数としてc=kNとした場合、増設ドライブには、スペア用パーセルを除き、Pchunk周期あたりkN個の物理パーセルが作成される。前述の通り、増設ドライブ内のマッピングパターンを生成した時点では、当該増設ドライブが閉塞するとデータロストが発生してしまうため、当該増設ドライブに対応するVchunkを仮想ボリュームへ割り当てることはできない。
 次に、単体増設マッピング生成処理プログラム1102は、Goalマッピングパターン(Goal)を生成する(ステップ1902)。Goalマッピングパターンは、目標となるマッピングパターンであり、ドライブ数=N×{増設後のPG数}の条件で生成されたマッピングパターンである。
 次に、単体増設マッピング生成処理プログラム1102は、SWAP後の二つのVchunk識別子の両方がGoalと一致する物理パーセルペア(完全一致ペア)のVchunk識別子をSWAPする完全一致ペアSWAP処理を行う(ステップ1903)。完全一致ペアSWAP処理の詳細は後述する。なお、Vchunk識別子のSWAPとは、マッピング補正テーブル及びマッピング逆補正テーブルの更新処理であり、実際の物理パーセルペアのデータのSWAPは、後述する単体増設パーセルリバランス処理で実施する。
 次に、単体増設マッピング生成処理プログラム1102は、一つのドライブ内の複数の物理パーセルが同一Vchunkに割り当てられているか否かの判定を行う(ステップ1904)。一つのドライブ内の複数の物理パーセルが同一Vchunkに割り当てられているドライブが存在しない場合(ステップ1904でNo)、単体増設マッピング生成処理プログラム1102は、処理を終了する。
 一つのドライブ内の複数の物理パーセルが同一Vchunkに割り当てられているドライブが1つ以上存在する場合(ステップ1904でYes)、単体増設マッピング生成処理プログラム1102は、SWAP後の二つのVchunk識別子の一方がGoalと一致する物理パーセルペア(部分一致ペア)のVchunk識別子をSWAPする部分一致ペアSWAP処理を行う(ステップ1905)。部分一致ペアSWAP処理の詳細は後述する。
 次に、単体増設マッピング生成処理プログラム1102は、一つのドライブ内の複数の物理パーセルが同一Vchunkに割り当てられているか否かの判定を行う(ステップ1906)。一つのドライブ内の複数の物理パーセルが同一Vchunkに割り当てられているドライブが存在しない場合(ステップ1906でNo)、単体増設マッピング生成処理プログラム1102は、処理を終了する。
 一つのドライブ内の複数の物理パーセルが同一Vchunkに割り当てられているドライブが1つ以上存在する場合(ステップ1906でYes)、単体増設マッピング生成処理プログラム1102は、SWAP後の二つのVchunk識別子の両方がGoalと一致しない物理パーセルペア(不一致ペア)のVchunk識別子をSWAPする不一致ペアSWAP処理を行う(ステップ1907)。不一致ペアSWAP処理の詳細は後述する。
 図23は、完全一致ペアSWAP処理を示す。
 完全一致ペアSWAP処理プログラム1103は、前述の単体増設マッピング生成処理のステップ1903において、完全一致ペアSWAP処理を行う。
 まず、完全一致ペアSWAP処理プログラム1103は、第1物理パーセルを選択する(ステップ2001)。第1物理パーセルを選択する方法は、例えば対象DG内で、PPG#、PCDEV#、Pcycle#の若い物理パーセルから順に選択する。以下では、第1物理パーセルを、(PPG#,PCDEV#,Pcycle#)=(a0,b0,c0)と置く。また、以下では、マッピングパターンXXXのうち(PPG#,PCDEV#,Pcycle#)=(A,B,C)の物理パーセルに対応するVchunk識別子を、XXX(A,B,C)と呼ぶ(例えばTarget(a0,b0,c0))。
 次に、完全一致ペアSWAP処理プログラム1103は、ステップ2001で選択した第1物理パーセルと対象ペアを成す物理パーセルである第2物理パーセルを選択する(ステップ2002)。第2物理パーセルを選択する方法は、例えば対象DG内で、ステップ2001で選択した第1物理パーセルを除き、PPG#、PCDEV#、Pcycle#の若い物理パーセルから順に選択する。以下では、第2物理パーセルを、(PPG#,PCDEV#,Pcycle#)=(a1,b1,c1)と置く。
 次に、完全一致ペアSWAP処理プログラム1103は、Targetから、Target(a0,b0,c0)であるVt0と、Target(a1,b1,c1)であるVt1とを取得し、Goalから、Goal(a0,b0,c0)であるVg0と、及びGoal(a1,b1,c1)であるVg1とを取得する(ステップ2003)。
 次に、完全一致ペアSWAP処理プログラム1103は、Vt0とVt1が一致しているか否かを判定する(ステップ2004)。Vt0とVg1が一致している場合(ステップ2004でNo)、対象ペアをSWAPしてもマッピングパターン上は何も変更がないため、完全一致ペアSWAP処理プログラム1103は、ステップ2002に戻り、第2物理パーセルを再選択する。
 次に、完全一致ペアSWAP処理プログラム1103は、Vt0とVg1が一致し、かつVt1とVg0が一致しているか否かを判定する(ステップ2005)。Vt0とVg1が一致することと、Vt1とVg0が一致することとの少なくとも何れかが成立しない場合(ステップ2005でNo)、対象ペアが完全一致ペアでないため、完全一致ペアSWAP処理プログラム1103は、ステップ2002に戻り、第2物理パーセルを再選択する。
 Vt0とVg1が一致し、かつVt1とVg0が一致している場合(ステップ2005でYes)、完全一致ペアSWAP処理プログラム1103は、Vchunk重複判定を行う(ステップ2006)。あるドライブ内の複数の物理パーセルが同一Vchunkに対応する場合、当該Vchunkの冗長度が低下してしまうため、ストレージコントローラ100は、Vchunk識別子のSWAPを行う際、SWAP後の一つのドライブに対応するVchunk識別子が重複しないようにする。言い換えれば、Vchunk重複判定において、完全一致ペアSWAP処理プログラム1103は、マッピング条件を満たす場合、あるドライブ内の複数の物理パーセルが同一Vchunkに対応しないと判定する。
 具体的には、Targetにて、Target(a0,b0,*)の全てがVg1と不一致であり、かつTarget(a1,b1,*)の全てがVg0と不一致であるか否かを判定する。Target(a0,b0,*)は、PPG#がa0で、PCDEV#がB0である、全Pcycle#に対応するVchunk識別子を示す。Target(a0,b0,*)の何れかがVg1と一致することと、かつTarget(a1,b1,*)の何れかがVg0と一致することとの何れかが成立した場合(ステップ2006でNo)、完全一致ペアSWAP処理プログラム1103は、ステップ2002に戻り、第2物理パーセルを再選択する。
 Target(a0,b0,*)の全てがVg1と不一致であり、かつTarget(a1,b1,*)の全てがVg0と不一致である場合、完全一致ペアSWAP処理プログラム1103は、Target(a0,b0,c0)とTarget(a1,b1,c1)をSWAPする(ステップ2007)。具体的には、完全一致ペアSWAP処理プログラム1103は、マッピング補正テーブル1005及びマッピング逆補正テーブル1006において、Index#が(a0,b0,c0)であるエントリにおけるValueを(a1,b1,c1)に設定し、Index#が(a1,b1,c1)であるエントリにおけるValueを(a0,b0,c0)に設定する。更に、完全一致ペアSWAP処理プログラム1103は、マッピング補正テーブル1005において、第1物理パーセルのエントリのSWAPフラグをONに設定する。
 次に、完全一致ペアSWAP処理プログラム1103は、対象DG内の全物理パーセルに対してステップ2001~ステップ2007の処理を実施済みかの判定を行う(ステップ2008)。当該処理を未実施の物理パーセルが存在する場合(ステップ2008でNo)、完全一致ペアSWAP処理プログラム1103は、ステップ2001に戻り、次の第1物理パーセルを選択し、処理を継続する。未実施の物理パーセルが存在しない場合(ステップ2008でYes)、完全一致ペアSWAP処理プログラム1103は、処理を終了する。
 図24は、部分一致ペアSWAP処理を示す。
 部分一致ペアSWAP処理プログラム1104は、前述の単体増設マッピング生成処理のステップ1905において、部分一致ペアSWAP処理を行う。
 部分一致ペアSWAP処理におけるステップ2101~ステップ2104は、完全一致ペアSWAP処理におけるステップ2001~ステップ2004とそれぞれ同様であるため、説明を省略する。
 ステップ2104でYESと判定された場合、部分一致ペアSWAP処理プログラム1104は、Vt0とVg0が不一致であり、かつVt1とVg1が不一致であるかを判定する(ステップ2105)。Vt0とVg0が一致していることと、Vt1とVg1が一致していることとの少なくとも何れかが成立する場合(ステップ2105でNo)、少なくとも一方の物理パーセルのTargetとGoalが一致していることになるため、対象ペアは、SWAP不要であり、部分一致ペアSWAP処理プログラム1104は、ステップ2102に戻り、第2物理パーセルを再選択する。
 Vt0とVg0が不一致であり、かつVt1とVg1が不一致である場合(ステップ2105でYes)、部分一致ペアSWAP処理プログラム1104は、Vt0とVg1が一致している、またはVt1とVg0が一致しているかを判定する(ステップ2106)。なお、Vt0とVg1が一致している、かつVt1とVg0が一致しているペアは、すでに完全一致ペアSWAP処理にてSWAP済みであるため、ステップ2106の時点では存在しない。
 Vt0とVg1が不一致で、かつVt1とVg0が不一致である場合(ステップ2106でNo)、対象ペアが部分一致ペアでないため、部分一致ペアSWAP処理プログラム1104は、ステップ2102に戻り、SWAPペアパーセルを再選択する。
 Vt0とVg1が一致する、またはVt1とVg0が一致する場合(ステップ2106でYes)、部分一致ペアSWAP処理プログラム1104は、以降のステップ2107~ステップ2109の処理を実施する。これらの処理は、完全一致ペアSWAP処理におけるステップ2006~ステップ2008とそれぞれ同様であるため、説明を省略する。
 図25は、不一致ペアSWAP処理を示す。
 不一致ペアSWAP処理プログラム1105は、前述の単体増設マッピング生成処理のステップ1907において、不一致ペアSWAP処理を行う。
 不一致ペアSWAP処理におけるステップ2201~ステップ2208は、完全一致ペアSWAP処理におけるステップ2001~ステップ2005及びステップ2006、ステップ2007とそれぞれ同様であるため、説明を省略する。
 次に、不一致ペアSWAP処理プログラム1105は、一つのドライブ内の複数の物理パーセルに同一Vchunk識別子が割り当てられているか否かの判定を行う(ステップ2208)。一つのドライブ内の複数の物理パーセルに同一Vchunk識別子が割り当てられているドライブが1つ以上存在する場合(ステップ2208でYes)、不一致ペアSWAP処理プログラム1105は、ステップ2201に戻り、この状態がなくなるまで繰り返す。一つのドライブ内の複数の物理パーセルに同一Vchunk識別子が割り当てられているドライブが存在しない場合(ステップ2208でNo)、不一致ペアSWAP処理プログラム1105は、処理を終了する。
 以上の単体増設マッピング生成処理によれば、ストレージコントローラ100は、完全一致ペアSWAP処理、部分一致ペアSWAP処理、不一致ペアSWAP処理を行うことにより、マッピング条件を満たし、且つGoalマッピングパターンに近いTargetを作成することができ、GoalマッピングパターンとTargetの間の差分を表すマッピング補正テーブル1005及びマッピング逆補正テーブル1006を作成することができる。
 なお、完全一致ペアSWAP処理、部分一致ペアSWAP処理、不一致ペアSWAP処理において、ストレージコントローラ100は、物理パーセルを順次選択する代わりに、仮想チャンクや仮想パーセルを順次選択してもよい。
 図26は、単体増設パーセルリバランス処理を示す。
 単体増設パーセルリバランス処理プログラム1106は、前述の単位増設処理のS1805において、単体増設パーセルリバランス処理を行う。単体増設パーセルリバランス処理は、後述のデータSWAP処理を実行することで、現行マッピングパターン(Current)で示されたデータの配置を、目標マッピングパターン(Target)で示されたデータの配置に変更する。
 まず、単体増設パーセルリバランス処理プログラム1106は、増設対象のDG内の一つの物理パーセルを対象物理パーセルとして順次選択する(ステップ2301)。例えば、単体増設パーセルリバランス処理プログラム1106は、DG内の全ドライブ内の物理パーセルのうち、システム内の物理ドライブ#、Pcycle#が若いものから順に、データSWAP処理が未実施である物理パーセルを、対象物理パーセルとして選べばよい。
 次に、単体増設パーセルリバランス処理プログラム1106は、対象物理パーセルがSWAP対象であるかを判定する(ステップ2302)。具体的には、マッピング補正テーブル1005を参照し、Index#が対象物理パーセルであるエントリのSWAPフラグを参照し、これがONであるかを判定する。対象物理パーセルのSWAPフラグがONである場合、対象物理パーセルがSWAP対象であることを意味する。この場合、対象物理パーセルと、そのエントリのValueに示されたSWAP先物理パーセルとのペアをSWAP対象ペアとする。対象物理パーセルがSWAP対象であると判定された場合(ステップ2302でYes)、単体増設パーセルリバランス処理プログラム1106は、SWAP対象ペアが割り当てられている二つのVchunkを対象Vchunkペアとして選択し、対象Vchunkペア内の仮想ストライプを対象ストライプペアとして順に選択する(ステップ2303)。
 次に、単体増設パーセルリバランス処理プログラム1106は、対象ストライプペアに対するデータSWAP処理を実施する(ステップ2304)。データSWAP処理は、特許文献1に示されている処理と同様である。データSWAP処理は、対象ストライプペアの少なくとも一つが有効データを格納している場合、対象ストライプペアの間でデータを入れ替える。例えば、データSWAP処理は、対象ストライプペアの少なくとも一つの仮想ストライプがVVOLページに割り当てられている場合、Currentにおいて当該仮想ストライプに対応する物理ストライプから、当該VVOLページに対応する対象キャッシュスロットへデータをステージングし、対象キャッシュスロットのデステージ(CM131からドライブ170への書き込み)を抑止し、対象キャッシュスロットをダーティに設定する。データSWAP処理後にデステージ抑止を解除されると、対象キャッシュスロットに格納されたデータは、非同期で、Targetにおいて当該仮想ストライプに対応する物理ストライプへデステージされる。
 次に、単体増設パーセルリバランス処理プログラム1106は、対象物理パーセル内に、データSWAP処理が行われていないストライプ(未SWAP領域)が存在するかを判定する(ステップ2305)。未SWAP領域が存在する場合(ステップ2305でNo)、単体増設パーセルリバランス処理プログラム1106は、ステップ2303に戻り、対象物理パーセル内の次の物理ストライプに対して同様の処理を実施する。
 未SWAP領域が存在しないと判定された場合(ステップ2305でYes)、または対象物理パーセルがSWAP対象でないと判定された場合(ステップ2302でNo)、単体増設パーセルリバランス処理プログラム1106は、SWAPポインタテーブル1004内の対象DGの単体増設用SWAPポインタ1308を次の物理パーセルに更新する(ステップ2306)。
 なお、当該SWAPポインタは、対象物理パーセルのSWAPが完了した段階で更新されてもよいし、一定領域のSWAPが完了した段階で更新されてもよい。
 次に単体増設パーセルリバランス処理プログラム1106は、マッピング補正テーブル1005においてIndex#が対象物理パーセルであるエントリのSWAPフラグをOFFに設定する(2307)。
 次に、単体増設パーセルリバランス処理プログラム1106は、ステップ2304でデステージ抑止を施されていた対象キャッシュスロットのデステージ抑止を解除する(ステップ2308)。
 次に、単体増設パーセルリバランス処理プログラム1106は、増設対象のDG内の全物理パーセルを対象物理パーセルとして選択したか否かを判定する(ステップ2309)。未選択である物理パーセルが存在する場合(ステップ2309でNo)、単体増設パーセルリバランス処理プログラム1106は、ステップ2301に戻って、次の対象物理パーセルを選択する。
 なお、SWAP対象物理パーセルは、I/O処理等に応じて任意に決定してもよい。データSWAP処理を実施していない領域に対しては、通常、データ割当を行うことはできないが、例えばホストからWrite要求を受けた領域に対応する物理パーセルのデータSWAP処理を優先的に行うことで増設領域に対して即時データ割当可能としてもよい。
 この場合、対象領域のデータSWAP処理中は、キャッシュメモリ上にダーティデータとして当該Writeデータを保持しておき、対象領域のデータSWAP処理が完了した時点でドライブに対するデステージを許可すればよい。
 未選択である物理パーセルが存在しない場合(ステップ2309でYes)、単体増設パーセルリバランス処理プログラム1106は、CurrentをTargetに置き換え(ステップ2310)、処理を終了する。
 以上の単体増設パーセルリバランス処理によれば、ストレージコントローラ100は、SWAP対象の物理パーセルに対応するVchunkに有効データが格納されている場合、Currentに基づいて、当該Vchunkに対応する物理パーセルから有効データを読み出し、Targetに基づいて、当該Vchunkに対応する物理パーセルへ有効データを書き込む。これにより、ストレージコントローラ100は、CurrentからTargetへのマッピングパターンの変更に合わせて、データを移動させることができる。
 図27は、ページ割当処理の概念を示す。
 この図は、VVOL数=4、c=4、N=4、PG=3、ドライブ数=9の例を示している。即ち、ドライブ数は、Nの倍数ではない。VVOL201内のVVOLページ202には、VPG204のVPGページ203が割り当てられる。この図の例では、Vchunkあたり2個のVVOLページ202を割り当てているが、一つのVchunkあたりのVVOLページ割当数は、システムで定義されているページサイズと、パーセルのサイズによって可変である。
 この図の例において、VPG#2は、PPG内ドライブ数がNではないPPGに対応するため、ページ割当が不可能なVchunkを含む。この図の例では、VPG#2のVchunk#1~#3、及び#5~#7内のVPGページをVVOLページに割り当てることはできない。一方、VPG#2のVchunk#0、#4内のVPGページはVVOLページに割り当てることができる。
 図28は、ページ割当処理を示す。
 ページ割当処理プログラム1107は、ホスト10からのライト処理の一環として、ライトの対象VVOLページにVPGページが未割当であった場合に、ページ割当処理を実行する。
 ページ割当処理プログラム1107は、ページマッピングテーブル1003に基づいて、対象VVOLページにVPGページが割当済か未割当かの判定を行う。対象VVOLページにVPGページが未割当である場合、ページマッピングテーブル1003のVPG#1303フィールドに、“未割当”、または“Not-Allocate”などの情報が格納されているため、ページ割当処理プログラム1107は、対象ページが未割当かどうかを判定できる。システムの初期状態(仮想ボリューム201に対して一度もホストI/Oが実行されていない状態)では、その仮想ボリューム201内の全てのページが“未割当(Not-Allocate)”である。
 まず、ページ割当処理プログラム1107は、対象DG#を取得する(ステップ2501)。対象DGを選ぶ方法は、例えば、対象プール200の高Tier(性能が高い)順に、空きページがあるかを判定し、空きページのあるTier206について、最もページの使用率が少ないDG207を、対象DGとして選択する、又は、単位時間あたりで最もI/O負荷の低いDG207や、利用率の最も低いDG207や、空き容量の最も多いDG207を、対象DGとして選択する。
 DG207を選択した後、ページ割当処理プログラム1107は、対象VPG#を取得する(ステップ2502)。対象VPGを選ぶ方法は、例えば利用率の最も低いVPGを、対象VPGとして選択する、又は、VVOL毎に、割当優先度をVPGに設定し、割当優先度が最も高いVPGを、対象VPGとして選択する。
 次に、ページ割当処理プログラム1107は、プール管理テーブル1001を参照することにより、対象VPGが対象DG内に実装されているか否かを判定する(ステップ2503)。
 対象VPGが対象DG内に実装されていない場合(ステップ2503でNO)、ページ割当処理プログラム1107は、ステップ2502に戻り、異なる対象VPG#を選択して、再度ステップ2503の判定を実施する。
 対象VPGが対象DG内に実装されている場合(ステップ2503でYES)、ページ割当処理プログラム1107は、対象VPGに空きページが存在するかどうかの判定を行う(ステップ2504)。ここでページ割当処理プログラム1107は、ページマッピングテーブル1003を参照し、対象VPGに未割当のVPGページ1304が存在するかを判定する。
 空きページが存在しない場合(ステップ2504でNO)、ページ割当処理プログラム1107は、ステップ2502に戻り、異なる対象VPG#を選択して、再度ステップ2503、及びステップ2504の判定を実施する。空きページが存在する場合(ステップ2504でYES)、ページ割当処理プログラム1107は、対象VPG内から対象VPGページを選択する(ステップ2505)。対象VPGページを選ぶ方法は、例えば対象VPG内の空きページのうち、最もVPGページ#の若いページを、対象VPGページとして選択する。
 ページ割当処理プログラム1107は、以上の処理を対象DG内の全VPGに対して実行しても対象VPGページを選択できなかった場合(ステップ2506でNO)、ページ割当処理の指示元に割当不可を応答(ステップ2508)し、処理を終了する。
 対象VPGページを選択できた場合(ステップ2506でYES)、対象VPGページをVVOLページに割り当てるために、ページ割当処理プログラム1107は、ページマッピングテーブル内の対象VVOLページのエントリに対象VPGページを登録し(ステップ2507)処理を終了する。
 以上のページ割当処理によれば、ストレージコントローラ100は、必要なVPGページをVVOLページへ割り当てることで、VPG空間を効率的に利用することができる。また、ホストアクセスのデータの単位と、分散RAIDの単位とを一致させる必要がないため、ホストアクセスと分散RAIDのそれぞれを効率よく行うことができる。
 なお、ストレージコントローラ100は、VVOL空間の代わりにVPG空間をホスト10へ提供してもよい。この場合、ストレージコントローラ100は、ページマッピングテーブルを用いなくてもよい。
 図29は、LP変換処理を示す。
 LP(Logical-Physical)変換処理は、LP変換処理プログラム1108により実行される。LP変換は、論理記憶領域のアドレスから物理記憶領域のアドレスへの変換処理である。LP変換処理は、ホスト10からI/O要求を受領した場合のページ変換処理などから呼び出される。ページ変換処理は、I/O要求により指定された仮想ボリューム内のアドレスを、VPG空間のアドレスに変換する。LP変換処理は、指定された仮想的なアドレスであるVPG空間のアドレス(VPG#、VCDEV#、Vchunk#)を、物理的なデータの格納先であるPPG空間のアドレス(PPG#、PCDEV#、Pchunk#)に変換する。ここでは、指定されたVPG空間のアドレスで示される領域を対象論理記憶領域と呼び、変換後のPPG空間のアドレスで示される領域を対象物理記憶領域と呼ぶ。
 まず、LP変換処理プログラム1108は、Vchunk#から、Vcycle#を算出する(ステップ2601)。Vcycle#は、Vcycle# = Vchunk# mod cで算出できる。
 次に、LP変換処理プログラム1108は、VP(Virtual-Physical)変換処理を実行する(ステップ2602)。VP変換処理は、例えば特許文献1に示された方法を用いる。例えばVP変換処理において、LP変換処理プログラム1108は、Goalマッピングパターン(VCDEVマッピングテーブル1007、及びVcycleマッピングテーブル1008)を参照することにより、当該VPG#、VCDEV#、Vcycle#に対応するレギュラーPPG空間アドレスを算出する。レギュラーPPG空間アドレスは、DG内のドライブ数がNの整数倍であり、かつ何れのドライブも故障していない場合の、VPG#、VCDEV#、Vcycle#に対応するPPG#、PCDEV#、Pcycle#であり、マッピング補正テーブル1005による補正前のPPG空間アドレスである。
 次に、LP変換処理プログラム1108は、マッピング補正テーブル1005を参照し、ステップ2602で算出したPPG#、PCDEV#、Pcycle#を補正する(ステップ2603)。マッピング補正処理の詳細については後述する。
 次に、LP変換処理プログラム1108は、ドライブ状態管理テーブル1002を参照し、対象ドライブ、即ちステップ2603で算出したPPG#及びPCDEV#に対応するドライブの状態1207を取得する(ステップ2604)。LP変換処理プログラム1108は、対象ドライブの状態1207が“アクセス不可“となっているかどうかを判定する(ステップ2605)。
 対象ドライブの状態1207が“アクセス不可“となっている場合(ステップ2605でYES)、当該データはスペア領域に退避されている。したがって、LP変換処理プログラム1108は、スペア先のアドレスを算出する。この場合、LP変換処理プログラム1108は、仮想スペア管理テーブル1012から、当該PPG#及びPCDEV#に対応するVSD#(仮想スペアドライブ502の識別子)を取得する(ステップ2606)。
 次に、LP変換処理プログラム1108は、スペア変換処理を実行する(ステップ2607)。ここでLP変換処理プログラム1108は、スペア変換テーブル1010を参照し、当該Pcycle#及びステップ2606で算出したVSD#から、対応するスペア領域のPPG#、PCDEV#、Pcycle#を取得する。その後、LP変換処理プログラム1108は、当該算出したPPG#、PCDEV#、Pcycle#について、再度ステップ2604を行う。スペア先が更にスペア領域に退避されている場合、LP変換処理プログラム1108は、ステップ2606、2607を繰り返す。
 対象ドライブの状態1207が“正常”、即ちアクセス可能である場合(ステップ2605でNO)、レギュラー物理アドレスのPPG#、PCDEV#、Pcycle#はデータの格納先として使用されている。したがって、LP変換処理プログラム1108は、レギュラー物理アドレスからPchunk#を算出(ステップ2608)して処理を終了する。当該Pchunk#は、Pchunk# = Floor(Vchunk#/c)*(c+1)+Pcycle#で算出できる。
 なお、スペア用Pchunkがm個(mは1以上の整数)の場合、当該Pchunk#は、Pchunk# = Floor(Vchunk#/c)*(c+m)+Pcycle#で算出できる。
 図30は、PL変換処理を示す。
 PL(Physical-Logical)変換処理は、PL変換処理プログラム1109により実行される。PL変換は、物理記憶領域から、論理記憶領域への変換処理である。PL変換は、例えば、リビルド処理で故障した物理記憶領域に対応するデータを特定するためなどに用いられる処理である。PL変換は、指定された物理的なデータの格納先であるPPG空間のアドレス(PPG#、PCDEV#、Pchunk#)を、仮想的なアドレスであるVPG空間のアドレス(VPG#、VCDEV#、Vchunk#)に変換する。PL変換は、LP変換の逆変換に相当する。つまり、LP変換を実施した後に、その結果でPL変換を実施すると、同じアドレスが返却されることになる。また、逆も同じである。ここでは、指定されたPPG空間のアドレスで示される領域を対象物理記憶領域と呼び、変換後のVPG空間のアドレスで示される領域を対象論理記憶領域と呼ぶ。
 以下では、Pchunk周期505あたりのスペア用Pchunk501b数mを1とした場合の例を示す。
 まず、PL変換処理プログラム1109は、Pchunk#から、Pcycle#を算出する(ステップ2701)。Pcycle#は、Pcycle# = Pchunk# mod (c+1)で算出できる。
 なお、スペア用Pchunkがm個(mは1以上の整数)の場合、当該Pcycle#は、Pcycle# = Pchunk# mod (c+m)で算出できる。
 次に、PL変換処理プログラム1109は、PV(Physical-Virtual)変換処理を実行する(ステップ2702)。PV変換処理は、例えば特許文献1にも示された方法を用いる。例えばPV変換処理においてPL変換処理プログラム1109は、Goalマッピングパターン(Pcycleマッピングテーブル1009、及びVCDEVマッピングテーブル1007)を参照し、当該PPG#、PCDEV#、Pcycle#に対応するレギュラーVPG空間アドレスを算出する。レギュラーVPG空間アドレスは、DG内のドライブ数がNの整数倍であり、かつ何れのドライブも故障していない場合の、PPG#、PCDEV#、Pcycle#に対応するVPG#、VCDEV#、Vcycle#であり、マッピング補正テーブル1005による補正前のVPG空間アドレスである。
 次に、PL変換処理プログラム1109は、マッピング逆補正テーブル1006を参照し、入力であるPPG#、PCDEV#、及びステップ2701で算出したPcycle#を補正する(ステップ2703)。マッピング補正処理の詳細については後述する。
 次に、PL変換処理プログラム1109は、対象物理記憶領域がスペア領域であるかを判定する(ステップ2705)。ここでPcycle#がゼロである場合、PL変換処理プログラム1109は、対象領域がスペア領域と判定する。
 対象物理記憶領域がスペア領域である場合(ステップ2705でYES)、PL変換処理プログラム1109は、スペア逆変換処理を実行する(ステップ2706)。PL変換処理プログラム1109は、スペア逆変換テーブル1011を参照し、当該PPG#、PCDEV#、Pcycle#から、VSD#、及びPcycle#を取得する。
 その後、PL変換処理プログラム1109は、仮想スペア管理テーブル1012から、当該VSD#に対応するPPG#、及びPCDEV#を取得する(ステップ2708)。PL変換処理プログラム1109は、当該算出したPPG#、PCDEV#、及びPcycle#について、再度ステップ2702のPV変換処理の判定を行う。当該処理はスペア領域以外の領域が算出されるまで繰り返される。
 対象領域がスペア領域ではない場合(ステップ2705でNO)、PL変換処理プログラム1109は、Vchunk#を算出(ステップ2709)して処理を終了する。Vchunk#は、Vchunk#=Floor(Pchunk#/(c+1))*c+Vcycle#-1で算出される。
 なお、スペア用Pchunkがm個(mは1以上の整数)の場合、当該Vchunk#は、Vchunk#=Floor(Pchunk#/(c+m))*c+Vcycle#-1で算出される。 
 図31は、マッピング補正処理を示す。
 マッピング補正処理プログラム1110は、前述のLP変換処理のステップ2603においてマッピング補正処理を実行する。マッピング補正処理は、SWAP元である物理記憶領域のアドレスを、SWAP先となる物理記憶領域のアドレスに変換する。
 まず、マッピング補正処理プログラム1110は、DG内のドライブ台数を参照し、ドライブ台数がNの整数倍であるかを判定する(ステップ2801)。ドライブ台数がNの整数倍である場合(ステップ2801でYes)、マッピング補正処理は不要であるため、マッピング補正処理プログラム1110は、処理を終了する(入力値をそのまま出力する)。
 ドライブ数がNの整数倍ではない場合(ステップ2801でNo)、マッピング補正処理プログラム1110は、マッピング補正テーブル1005を参照し、入力値であるPPG#1400、PCDEV#1401、Pcycle#1402に対応するPPG#1403、PCDEV#1404、Pcycle#1405を算出し、これを出力値とする(ステップ2802)。
 以上のマッピング補正処理及びLP変換処理によれば、ストレージコントローラ100は、I/O要求に基づくVPG空間のアドレスを、PPG空間のアドレスへ変換し、PPG空間にアクセスすることができる。また、ストレージコントローラ100は、ドライブ数がNの整数倍である場合、Goalマッピングパターンを用いてアドレス変換を行うことで、最適な負荷分散を行うことができ、ドライブ数がNの整数倍ではない場合、Goalマッピングパターンを、マッピング補正テーブルを用いて補正することで、わずかな補正でアドレス変換を行うことができる。
 図32は、マッピング逆補正処理を示す。
 マッピング補正処理プログラム1110は、前述のPL変換処理のステップ2703においてマッピング逆補正処理を実行する。マッピング逆補正処理は、SWAP先となる物理記憶領域のアドレスを、SWAP元である物理記憶領域のアドレスに変換する。
 まず、マッピング補正処理プログラム1110は、DG内のドライブ台数を参照し、ドライブ台数がNの整数倍であるかを判定する(ステップ2803)。ドライブ台数がNの整数倍である場合(ステップ2803でYes)、マッピング逆補正処理は不要であるため、マッピング補正処理プログラム1110は、処理を終了する(入力値をそのまま出力する)。
 ドライブ数がNの整数倍ではない場合(ステップ2803でNo)、マッピング補正処理プログラム1110は、マッピング逆補正テーブル1006を参照し、入力値であるPPG#1407、PCDEV#1408、Pcycle#1409に対応するPPG#1410、PCDEV#1411、Pcycle#1412を算出し、これを出力値とする(ステップ2804)。
 以上のマッピング逆補正処理及びPL変換処理によれば、ストレージコントローラ100は、リビルド処理において、障害があるドライブ170のPPG空間のアドレスを、VPG空間のアドレスへ変換し、リビルドに必要なデータを特定することができる。また、ストレージコントローラ100は、ドライブ数がNの整数倍である場合、Goalマッピングパターンを用いてアドレス変換を行うことで、最適な負荷分散を行うことができ、ドライブ数がNの整数倍ではない場合、Goalマッピングパターンを、マッピング補正テーブルを用いて補正することで、わずかな補正でアドレス変換を行うことができる。
 なお、本実施例ではドライブ単体の増設方法について説明したが、同様の考え方を用いることにより、ドライブ単体での減設処理を行うこともできる。
 減設時には、まず減設対象ドライブに対する新規Writeを禁止した後、減設対象ドライブに格納されているデータを、減設対象以外のドライブに移行する。その後、図19または図20に示す方法を逆に実行することで減設後のマッピングパターンを生成する。減設時のGoalマッピングパターンは、ドライブ数=N×{減設後のPG数}の条件で生成されたマッピングパターンである。
 減設後のマッピングパターン生成後は、図26のパーセルリバランス処理を実施し、パーセルリバランス完了後に減設対象ドライブをシステムから抜去する。
 本実施例の計算機システムは、分散RAID方式において、ドライブ単位での増設を可能にする。一つのVPGの一つのVchunk周期に含まれるVchunk数cが、一つのPPGに含まれるドライブ数Nの整数倍であることにより、ドライブ単位で増設した場合においても、追加容量分の冗長性を確保することができる。特許文献1には、PG単位で構成されたストレージシステムにおける、VPG-PPG間のマッピング方法が開示されている。本実施例では、PG単位の構成のマッピングパターンを目標マッピングパターンと定義し、目標マッピングパターンに出来るだけ近づくように二つの物理パーセルに関連付けられた仮想パーセルをSWAPする。これにより、Vchunkのデータを複数のドライブにできるだけ分散させることができ、I/O処理やリビルド処理の性能をPG単位の構成の性能に近づけることができる。また、PGより小さい単位でドライブを増設することで、一回の増設のコストを抑えることができる。
 用語について説明する。物理記憶デバイスは、物理記憶ドライブ170等に対応する。計算機は、ストレージコントローラ100、ストレージコントローラの機能を有する計算機等に対応する。論理記憶領域は、仮想パーセル、仮想ストライプ等に対応する。物理記憶領域は、物理パーセル、物理ストライプ等に対応する。論理パリティグループは、仮想パリティグループ等に対応する。マッピング情報は、マッピングパターン等に対応する。基準マッピング情報は、Goalマッピングパターン等に対応する。補正マッピング情報は、マッピング補正テーブル及びマッピング逆補正テーブル等に対応する。スペア物理記憶領域は、スペア領域等に対応する。
 dは、DG内の物理記憶ドライブ数D等に対応する。nは、仮想パリティグループ内の仮想記憶ドライブ数N、物理パリティグループ内の物理記憶ドライブ数N等に対応する。mは、Pchunk周期内のスペア用Pchunk数m等に対応する。vは、c/N等に対応する。n×vは、Vchunk周期内のVchunk数(周期Vchunk数)c等に対応する。wは、DG内のVchunk周期数、DG内のPchunk周期数等に対応する。rは、増設される物理記憶ドライブ数等に対応する。eは、増設後の仮想記憶デバイス数等に対応する。
 以上、本発明の実施例を説明したが、以上の実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、本発明は、必ずしも説明した全ての構成を備えるものに限定されるものではない。ある例の構成の一部を他の例の構成に置き換えることが可能であり、ある例の構成に他の例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。図の構成は説明上必要と考えられるものを示しており、製品上必ずしも全ての構成を示しているとは限らない。
 10…ホスト、 20…管理サーバ、 30…ネットワーク、 100…ストレージコントローラ、 110…FEPK、 111…ポート、 112…保守インタフェース、 120…CPU、 121…Core、 122…LM、 130…CMPK、 131…CM、 140…BEPK、 150…内部ネットワーク、 160…ドライブエンクロージャ、 161…スイッチ

Claims (12)

  1.  dが2以上の整数であり、d個の物理記憶デバイスと、
     前記d個の物理記憶デバイスに接続される計算機と、
    を備え、
     前記計算機は、
      nが2以上の整数であり、vが1以上の整数であり、各物理記憶デバイス内にn×v個の物理記憶領域を作成することで、n×v×d個の物理記憶領域を作成し、
      夫々がn個の物理記憶領域のサイズを有する、v×d個の論理チャンクを作成し、
      各論理チャンクにn個の物理記憶領域を関連付けるマッピング情報であって、各論理チャンクに関連付けられた前記n個の物理記憶領域がn個の物理記憶デバイスに夫々含まれるというマッピング条件の下で作成された前記マッピング情報を格納し、
      rが1以上の整数であり、r個の物理記憶デバイスが前記計算機に接続されることでd+r個の物理記憶デバイスが前記計算機に接続される場合、v×r個の論理チャンクを追加し、各追加記憶デバイス内のn×v個の物理記憶領域を追加し、前記マッピング条件の下で、前記マッピング情報を、v×(d+r)個の論理チャンクの夫々にn個の物理記憶領域を関連付けるマッピング情報に変更し、
      ユーザデータのライト要求に応じて、前記ユーザデータに基づく冗長データを作成し、前記ライト要求に対応する第1論理チャンクを決定し、前記マッピング情報に基づいて、前記ユーザデータ及び前記冗長データを含むn個の要素データを、前記第1論理チャンクに対応するn個の物理記憶領域へ夫々書き込む、
    ように構成されている、
    計算機システム。
  2.  前記計算機は、前記変更により関連付けが変更される第2論理チャンクに有効データが格納されている場合、前記変更前のマッピング情報に基づいて、前記第2論理チャンクに対応する第1物理記憶領域に格納されている有効データを読み出し、前記変更後のマッピング情報に基づいて、前記第2論理チャンクに対応する第2物理記憶領域へ前記有効データを書き込む、
    請求項1に記載の計算機システム。
  3.  前記計算機は、eがd+r以上の最小のnの倍数であり、e個の物理記憶デバイスが前記計算機に接続される場合の、e×v個の論理チャンクとn×v×e個の物理記憶領域との関連付けを示す基準マッピング情報を格納するように構成されており、
     前記計算機は、d+rがnの倍数でない場合、前記マッピング条件の下、前記変更前のマッピング情報にn×v個の物理記憶領域とv×r個の論理チャンクとを示す情報を追加することで前記変更前のマッピング情報を拡張し、前記拡張されたマッピング情報の一部を前記基準マッピング情報の一部に合わせることで、前記変更後のマッピング情報を算出する、
    請求項2に記載の計算機システム。
  4.  前記計算機は、d+rがnの倍数である場合、前記基準マッピング情報を前記変更後のマッピング情報として用いる、
    請求項3に記載の計算機システム。
  5.  前記計算機は、d+rがnの倍数でない場合、前記マッピング条件の下、前記n×v×d個の物理記憶領域から二つの物理記憶領域を順次選択し、前記二つの物理記憶領域に夫々関連付けられている二つの論理チャンクを交換することで、前記拡張されたマッピング情報の一部を前記基準マッピング情報の一部に合わせ、前記交換を示す補正マッピング情報を作成し、前記基準マッピング情報と前記補正マッピング情報を前記変更後のマッピング情報として用いる、
    請求項4に記載の計算機システム。
  6.  前記計算機は、d+rがnの倍数でない場合、前記マッピング条件の下、交換前の二つの論理チャンクの少なくとも一方が前記基準マッピング情報と一致せず、且つ交換後の二つの論理チャンクの両方が前記基準マッピング情報と一致する二つの論理チャンクに夫々対応する二つの第1物理記憶領域を順次選択し、前記二つの第1物理記憶領域に夫々関連付けられている二つの論理チャンクを交換し、前記マッピング条件の下、交換前の二つの論理チャンクの少なくとも一方が前記基準マッピング情報と一致せず、且つ交換後の二つの論理チャンクの一方だけが前記基準マッピング情報と一致する、二つの論理チャンクに夫々対応する二つの第2物理記憶領域を順次選択し、前記二つの第2物理記憶領域に夫々関連付けられている二つの論理チャンクを交換し、交換前の二つの論理チャンクの少なくとも一方が前記基準マッピング情報と一致せず、且つ交換後の二つの論理チャンクの両方が前記基準マッピング情報と一致しない、二つの論理チャンクに夫々対応する二つの第3物理記憶領域を順次選択し、前記二つの第3物理記憶領域に夫々関連付けられている二つの論理チャンクを交換する、
    請求項5に記載の計算機システム。
  7.  前記計算機は、
      mが1以上の整数であり、各物理記憶デバイス内にm×v個のスペア物理記憶領域を更に作成するように構成されており、
      何れかの物理記憶デバイスの障害を検出した場合、前記障害を持つ物理記憶デバイスに含まれる障害物理記憶領域を特定し、前記マッピング情報に基づいて、前記障害物理記憶領域に対応する復元論理チャンクを特定し、前記マッピング情報に基づいて、前記復元論理チャンクに対応するn個の物理記憶領域のうち前記障害物理記憶領域を除く正常物理記憶領域を選択し、前記正常物理記憶領域内のデータに基づいて、前記障害を持つ物理記憶デバイス内のデータを復元し、前記障害を持つ物理記憶デバイスを除く複数の物理記憶デバイス内のスペア物理記憶領域へ、前記復元されたデータを書き込む、
    請求項6に記載の計算機システム。
  8.  前記計算機は、
      仮想ボリュームを作成し、前記仮想ボリューム内に仮想記憶領域を作成し、論理チャンクの少なくとも一部を、前記仮想記憶領域に関連付ける仮想記憶領域マッピング情報を作成し、
      I/O要求に応じて、前記仮想記憶領域マッピング情報に基づいて、前記I/O要求に示された前記仮想ボリューム内のアドレスに対応する論理チャンクを決定する、
    ように構成されている、
    請求項7に記載の計算機システム。
  9.  前記計算機は、前記変更において、e個の論理記憶デバイスを作成し、夫々がn個の論理記憶デバイスを含む、e/n個の論理パリティグループを作成し、各論理パリティグループ内にn×v個の論理チャンクを作成する、
    請求項8に記載の計算機システム。
  10.  前記計算機は、
      wが2以上の整数であり、各論理パリティグループ内にn×v×w個の論理チャンクを作成し、
      各物理記憶デバイス内にn×v×w個の物理記憶領域を作成し、
      前記マッピング情報を、各論理記憶デバイス内のアドレスと、各物理記憶デバイス内のアドレスとに対して、周期的に用いる、
    ように構成されている、
    請求項9に記載の計算機システム。
  11.  dが2以上の整数であり、計算機に接続されるd個の物理記憶デバイスの制御方法であって、
      nが2以上の整数であり、vが1以上の整数であり、各物理記憶デバイス内にn×v個の物理記憶領域を作成することで、n×v×d個の物理記憶領域を作成し、
      夫々がn個の物理記憶領域のサイズを有する、v×d個の論理チャンクを作成し、
      各論理チャンクにn個の物理記憶領域を関連付けるマッピング情報であって、各論理チャンクに関連付けられた前記n個の物理記憶領域がn個の物理記憶デバイスに夫々含まれるというマッピング条件の下で作成された前記マッピング情報を格納し、
      rが1以上の整数であり、r個の物理記憶デバイスが前記計算機に接続されることでd+r個の物理記憶デバイスが前記計算機に接続される場合、v×r個の論理チャンクを追加し、各追加記憶デバイス内のn×v個の物理記憶領域を追加し、前記マッピング条件の下で、前記マッピング情報を、v×(d+r)個の論理チャンクの夫々にn個の物理記憶領域を関連付けるマッピング情報に変更し、
      ユーザデータのライト要求に応じて、前記ユーザデータに基づく冗長データを作成し、前記ライト要求に対応する第1論理チャンクを決定し、前記マッピング情報に基づいて、前記ユーザデータ及び前記冗長データを含むn個の要素データを、前記第1論理チャンクに対応するn個の物理記憶領域へ夫々書き込む、
    ことを備える制御方法。
  12.  dが2以上の整数である、d個の物理記憶デバイスに接続される計算機に制御プロセスを実行させるプログラムを格納する、計算機読取可能な記録媒体であって、
     前記制御プロセスは、
      nが2以上の整数であり、vが1以上の整数であり、各物理記憶デバイス内にn×v個の物理記憶領域を作成することで、n×v×d個の物理記憶領域を作成し、
      夫々がn個の物理記憶領域のサイズを有する、v×d個の論理チャンクを作成し、
      各論理チャンクにn個の物理記憶領域を関連付けるマッピング情報であって、各論理チャンクに関連付けられた前記n個の物理記憶領域がn個の物理記憶デバイスに夫々含まれるというマッピング条件の下で作成された前記マッピング情報を格納し、
      rが1以上の整数であり、r個の物理記憶デバイスが前記計算機に接続されることでd+r個の物理記憶デバイスが前記計算機に接続される場合、v×r個の論理チャンクを追加し、各追加記憶デバイス内のn×v個の物理記憶領域を追加し、前記マッピング条件の下で、前記マッピング情報を、v×(d+r)個の論理チャンクの夫々にn個の物理記憶領域を関連付けるマッピング情報に変更し、
      ユーザデータのライト要求に応じて、前記ユーザデータに基づく冗長データを作成し、前記ライト要求に対応する第1論理チャンクを決定し、前記マッピング情報に基づいて、前記ユーザデータ及び前記冗長データを含むn個の要素データを、前記第1論理チャンクに対応するn個の物理記憶領域へ夫々書き込む、
    ことを備える、
    記録媒体。
PCT/JP2016/061057 2016-04-05 2016-04-05 計算機システム、物理記憶デバイスの制御方法、および記録媒体 WO2017175285A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/081,389 US10678470B2 (en) 2016-04-05 2016-04-05 Computer system,control method for physical storage device,and recording medium
JP2018510036A JP6663482B2 (ja) 2016-04-05 2016-04-05 計算機システム、物理記憶デバイスの制御方法、および記録媒体
PCT/JP2016/061057 WO2017175285A1 (ja) 2016-04-05 2016-04-05 計算機システム、物理記憶デバイスの制御方法、および記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/061057 WO2017175285A1 (ja) 2016-04-05 2016-04-05 計算機システム、物理記憶デバイスの制御方法、および記録媒体

Publications (1)

Publication Number Publication Date
WO2017175285A1 true WO2017175285A1 (ja) 2017-10-12

Family

ID=60000333

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/061057 WO2017175285A1 (ja) 2016-04-05 2016-04-05 計算機システム、物理記憶デバイスの制御方法、および記録媒体

Country Status (3)

Country Link
US (1) US10678470B2 (ja)
JP (1) JP6663482B2 (ja)
WO (1) WO2017175285A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021515298A (ja) * 2018-02-26 2021-06-17 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理
JP2021096645A (ja) * 2019-12-17 2021-06-24 株式会社日立製作所 ストレージシステムおよびストレージ管理方法
US11275511B2 (en) 2020-02-07 2022-03-15 Hitachi, Ltd. Storage apparatus and data processing method for storage apparatus
JP2022135629A (ja) * 2021-03-05 2022-09-15 株式会社日立製作所 ストレージシステム及びストレージ管理方法
JP2022142632A (ja) * 2021-03-16 2022-09-30 Necプラットフォームズ株式会社 ディスクアレイ装置、情報システム及び記憶領域の構築方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535065A (zh) * 2020-04-14 2021-10-22 伊姆西Ip控股有限责任公司 在存储系统中管理条带的方法、设备和计算机程序产品
JP2022175427A (ja) * 2021-05-13 2022-11-25 株式会社日立製作所 ストレージシステム及びストレージ管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1063441A (ja) * 1996-08-19 1998-03-06 Ekushingu:Kk ディスクアレイにおける論理記憶領域統合方法およびディスクアレイ装置
WO2009130848A1 (ja) * 2008-04-25 2009-10-29 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
WO2014115320A1 (ja) * 2013-01-25 2014-07-31 株式会社日立製作所 ストレージシステム及びデータ管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615352A (en) * 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
JP3702231B2 (ja) * 2002-01-31 2005-10-05 株式会社東芝 ディスクアレイ装置及び同装置における動的記憶容量拡張方法
JP2008009767A (ja) * 2006-06-29 2008-01-17 Hitachi Ltd データ処理システム及びその方法並びにストレージ装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1063441A (ja) * 1996-08-19 1998-03-06 Ekushingu:Kk ディスクアレイにおける論理記憶領域統合方法およびディスクアレイ装置
WO2009130848A1 (ja) * 2008-04-25 2009-10-29 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
WO2014115320A1 (ja) * 2013-01-25 2014-07-31 株式会社日立製作所 ストレージシステム及びデータ管理方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021515298A (ja) * 2018-02-26 2021-06-17 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理
JP7139435B2 (ja) 2018-02-26 2022-09-20 インターナショナル・ビジネス・マシーンズ・コーポレーション データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理
JP2021096645A (ja) * 2019-12-17 2021-06-24 株式会社日立製作所 ストレージシステムおよびストレージ管理方法
US11150820B2 (en) 2019-12-17 2021-10-19 Hitachi, Ltd. Storage system and storage management method
JP7191003B2 (ja) 2019-12-17 2022-12-16 株式会社日立製作所 ストレージシステムおよびストレージ管理方法
US11275511B2 (en) 2020-02-07 2022-03-15 Hitachi, Ltd. Storage apparatus and data processing method for storage apparatus
JP2022135629A (ja) * 2021-03-05 2022-09-15 株式会社日立製作所 ストレージシステム及びストレージ管理方法
JP7374944B2 (ja) 2021-03-05 2023-11-07 株式会社日立製作所 ストレージシステム及びストレージ管理方法
JP2022142632A (ja) * 2021-03-16 2022-09-30 Necプラットフォームズ株式会社 ディスクアレイ装置、情報システム及び記憶領域の構築方法
JP7294691B2 (ja) 2021-03-16 2023-06-20 Necプラットフォームズ株式会社 ディスクアレイ装置、情報システム及び記憶領域の構築方法

Also Published As

Publication number Publication date
JP6663482B2 (ja) 2020-03-11
US10678470B2 (en) 2020-06-09
JPWO2017175285A1 (ja) 2018-11-01
US20200057563A1 (en) 2020-02-20

Similar Documents

Publication Publication Date Title
US11327661B2 (en) Storage system and data management method
JP6663482B2 (ja) 計算機システム、物理記憶デバイスの制御方法、および記録媒体
JP6039699B2 (ja) ストレージシステム及びデータ管理方法
WO2016142998A1 (ja) 計算機システム
US20220027070A1 (en) Storage system and storage management method
JP6807457B2 (ja) ストレージシステム及びストレージシステムの制御方法
KR102133316B1 (ko) 메모리 시스템 관리
JPH09288547A (ja) アレイ型記憶装置
US11880278B2 (en) Storage system and storage administration method
JP7374944B2 (ja) ストレージシステム及びストレージ管理方法
US11467904B2 (en) Storage system and control method of the same

Legal Events

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

Ref document number: 2018510036

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

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

Ref document number: 16897844

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 16897844

Country of ref document: EP

Kind code of ref document: A1