WO2018116392A1 - 情報処理システム、及び、情報処理方法 - Google Patents
情報処理システム、及び、情報処理方法 Download PDFInfo
- Publication number
- WO2018116392A1 WO2018116392A1 PCT/JP2016/088031 JP2016088031W WO2018116392A1 WO 2018116392 A1 WO2018116392 A1 WO 2018116392A1 JP 2016088031 W JP2016088031 W JP 2016088031W WO 2018116392 A1 WO2018116392 A1 WO 2018116392A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- page
- data
- area
- flash
- pool
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/08—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
Definitions
- the present invention relates to an information processing system.
- flash drive There is a storage system that includes a drive composed of flash memory (referred to as a “flash drive”).
- a flash drive has characteristics different from an HDD (Hard Disk Drive) in that there is an upper limit (lifetime) in the number of times of writing and in that data cannot be directly overwritten. Therefore, when updating data stored in the flash drive, it is necessary to write new data in another area and invalidate the old data.
- reclamation processing is performed on the area where invalid data and valid data are stored, by copying the valid data in that area to another area and clearing that area so that new data can be written.
- wear leveling processing is performed to level out the lifetime between flash memory chips and extend the lifetime of the entire flash drive.
- a spare area is provided in the flash drive.
- a spare area typically, a spare area of 20% to 30% of the total capacity of the flash drive is provided.
- the flash drive shows the capacity of the area excluding the spare area to the host device. For example, in the case of a flash drive having a total capacity of 1 TB and 20% of which is a spare area, the flash drive shows 0.8 TB as an available capacity to the host device.
- An area excluding a spare area in the entire area of the flash drive is referred to as a user area. If the ratio of the spare area to the entire area is reduced, the user area increases, so the cost per unit capacity decreases.
- the reclamation process uses a spare area and an unused area in the user area.
- An area combining the spare area and the unused area in the user area is referred to as an empty area.
- Patent Document 1 when there are many random write accesses that tend to consume the life of the flash memory, the spare area is increased, and in the case of sequential write where the consumption of the life of the flash memory is less than the random write, by reducing the spare area, Techniques for optimizing flash life have been disclosed.
- An object of the present invention is to appropriately control a free area related to a flash memory and to suppress a cost per unit capacity.
- An information processing system includes a processor and a plurality of flash drives, and the plurality of flash drives have a user area for storing data and a spare area.
- the processor configures one or a plurality of disk groups from a plurality of flash drives, manages a pool configured from the disk groups, and provides a virtual volume to which pages as storage areas on the pool are allocated.
- the processor adjusts the capacity of the spare area of the flash drive that constitutes the first disk group when the first disk group of one or more disk groups is added to or removed from the pool.
- Explanatory drawing of the relationship between a flash drive, a pool, and a page A configuration example of a storage system.
- Example of flash drive configuration Explanatory drawing of the relationship between a flash drive, a parity group, a pool, a page, and a virtual volume.
- Example of control information and program An example of a PG table.
- Block table example The flowchart which shows the process example of a capacity
- FIG. 6 is an explanatory diagram of an outline of Example 2.
- the flowchart which shows the process example of a vacant area check program The flowchart which shows the process example of a page movement program.
- the flowchart which shows the process example of a movement page selection program Explanatory drawing of the outline
- program may be used as the subject. However, since the program performs processing determined by being executed by the processor, the description may be given using the processor as the subject. Further, the processing disclosed with the program as the subject may be processing performed by a processor that executes the program or an apparatus having the program (for example, a control device, a controller, or a storage system). Also, part or all of the processing performed by the processor executing the program may be performed by a hardware circuit instead of or in addition to the processor. Various programs may be installed in each computer by a program distribution server or a computer-readable storage medium.
- FIG. 1 is a diagram for explaining the relationship among the flash drive 240, the pool 400, and the page 402. The problem according to the present embodiment will be described with reference to FIG.
- the storage system includes one or more flash drives 240. However, here, for the sake of easy understanding, only one flash drive 240 is provided. However, a plurality of flash drives 240 may be grouped in units of parity groups (PG: Parity Group) to form a RAID (Redundant Arrays of Independent Disks), which is an example of a highly reliable technology.
- PG Parity Group
- RAID Redundant Arrays of Independent Disks
- a group composed of flash drives 240 such as a parity group and a RAID group is also called a disk group.
- the capacity virtualization function related to thin provisioning collectively manages the capacity of a plurality of physical storage devices (for example, flash memory) installed in the storage system as a pool.
- the capacity virtualization function provides a virtual volume to the host computer.
- the capacity virtualization function secures a free page in the pool, assigns the free page to the address of the virtual volume, and writes data to the free page .
- the size of one page is several MB to several hundred MB. As a result, the capacity of unallocated pages is not consumed, so that the entire capacity of the storage system can be used efficiently.
- the total capacity of the flash drive 240 is the sum of the capacity of the user area 310 and the capacity of the spare area 320.
- the capacity of the user area 310 is “0.8 TB”
- the capacity of the spare area 320 is “0.2 TB”
- the total capacity of the flash drive 240 is “1 TB” in total.
- the pool 400 is managed by the capacity virtualization function of the storage system.
- the capacity of the pool 400 is equal to “0.8 TB” of the capacity of the user area 310 of the flash drive 240.
- the page unallocated area 340 is always secured.
- the page unallocated area 340 corresponds to the area 341 (free area) of the flash drive 240.
- the page 402 is a unit of area allocated from the pool 400 to the virtual volume.
- the area 360 has already stored the write data, and the area 350 has not stored the write data.
- the area 351 (free area) of the flash drive 240 corresponds to the area 350 in which this write data is not stored.
- the free area in the flash drive 240 is the sum of the area 320, the area 341, and the area 351.
- the ratio of the free area of the flash drive 240 to the total capacity is 40% or more. That is, the cost per unit capacity becomes high.
- FIG. 2 shows a configuration example of the storage system 200.
- the storage system 200 includes one or more microprocessor packages (MPPK) 210, a memory unit 220, a back-end package (BE package) 230, and a front-end package (FE package) 260.
- MPPK microprocessor packages
- the MPPK 210, the memory unit 220, the BE package 230, and the FE package 260 are connected via an internal bus 280.
- the FE package 260 has a port 261 and a memory 262.
- the port 261 is connected to the host 100 via the network 120 and mediates communication with the host 100.
- the memory 262 stores various data necessary for processing of the FE package 260.
- the memory 262 temporarily stores data transferred from the host 100 or data transferred to the host 100.
- the memory 262 may be composed of a memory unit 220 described later.
- the memory unit 220 includes one or more memory devices.
- the memory unit 220 may include a control information unit 221 that stores control information, a program unit 222 that stores programs, and a cache unit 223 as an example of a cache memory that caches data.
- the capacity of the cache unit 223 is typically smaller than the capacity of the volume 250.
- the MPPK 210 includes a processor 211, a local memory 212, and a maintenance port 213.
- the processor 211, the local memory 212, and the maintenance port 213 are connected via an internal bus 214.
- the local memory 212 stores various data necessary for the MPPK 210.
- the maintenance port 213 mediates communication with the maintenance terminal 270.
- the processor 211 executes various processes.
- the processor 211 may execute various processes by executing various programs stored in the program unit 222 of the memory unit 220.
- the processor 211 may execute various processes using various information stored in the control information unit 221 of the memory unit 220.
- the BE package 230 has a port 231 and a memory 232.
- the port 231 is connected to a flash drive 240, which is an example of one or more physical storage devices, via a bus 283.
- the volume 250 for managing data may be composed of storage areas of one or more flash drives 240.
- the physical storage device is not limited to a flash drive, and may be, for example, an HDD, a DVD, an SCM (Storage Class Memory), or the like.
- the flash drive may be a NAND flash or a NOR flash.
- One or more flash drives 240 may be grouped in units called parity groups, and RAID, which is an example of a high reliability technology, may be used.
- the memory 232 may be composed of the memory unit 220.
- the maintenance terminal 270 for maintaining the storage system 200 may be connected to the storage system 200 via the bus 280.
- the maintenance terminal 270 includes a CPU 271, a memory 272, an input / output unit 274, and a maintenance port 275.
- the memory 272 stores a maintenance program (maintenance program) 273.
- the CPU 271 executes the maintenance program 273 to execute maintenance processing.
- the input / output unit 274 is configured with, for example, a mouse, a keyboard, a display, and the like, and receives various instructions input from an operator performing maintenance, and displays various information on the display.
- the maintenance port 275 mediates communication with the storage stem 200.
- the configuration in FIG. 2 is an example, and may be, for example, a software-based storage system in which software is installed on a server, or a storage system in which software is installed in a virtual machine operating on a cloud.
- FIG. 3 shows a configuration example of the flash drive 240.
- the flash drive 240 has a disk I / F 241, a processor 242, a memory 244, a flash I / F 245, a flash memory chip 246, and an internal network 243.
- the disk I / F 241, the flash I / F 245, the memory 244, and the processor 242 are connected via the internal network 243.
- the flash memory chip 246 is connected to the flash I / F 245. Furthermore, data compression and decompression circuits and the like may be connected via the internal network 243.
- the disk I / F 241 mediates communication with the storage system 200 (host device) that uses the flash drive 240.
- the flash I / F 245 mediates communication for accessing the flash memory chip 246.
- the processor 242 receives various requests (I / O requests, etc.) from the host device connected to the disk I / F 241 and executes processing corresponding to the requests.
- the memory 244 stores control information and programs necessary for the processor 242 to execute various processes.
- the flash drive 240 may be any device including one or more flash memory chips 246 and a processor 242 that controls the flash memory chips 246.
- the flash drive 240 is not limited to a form factor such as a general SSD (Solid State Drive).
- FIG. 3 shows the program and control information stored in the memory 244 of the flash drive 240 at the bottom of FIG.
- the memory 244 may store a spare area change program 247, a capacity report program 248, a spare area ratio table 249, a flash capacity table 281, a logical physical conversion table 282, and a block table 283.
- the memory 244 may store other programs (for example, an I / O processing program) and control information. In FIG. 3, programs and tables that are not directly related to the present embodiment are omitted.
- the spare area ratio table 249 is a table for managing the ratio (ratio) of the spare area 320 to the entire area of each flash drive 240.
- the flash capacity table 281 is a table for managing the physical capacity of each flash drive (the total of the user area 310 and the spare area 320).
- the logical / physical conversion table 282, the block table 283, and the spare area change program 247 will be described later.
- the capacity report program 248 When the capacity report program 248 receives a capacity report request from the storage system 200 or the like that uses the flash drive 240, the capacity report program 248 calculates the product of “1-spare area ratio” of the flash drive and “total capacity of the flash drive”. This is a program for reporting the calculation result as the usable capacity of the flash drive. Thus, as the spare area ratio changes, the reported usable capacity of the flash drive changes accordingly.
- FIG. 4 is a diagram showing the relationship among the flash drive 240, the parity group 401, the pool 400, the page 402, and the virtual volume 403.
- the capacity virtualization function will be described with reference to FIG.
- the virtual volume 403 is a virtualized volume.
- the one or more flash drives 240 are grouped in a unit called a parity group (PG: Parity Group) 401.
- PG Parity Group
- PG 401 is a resource having a physical capacity.
- a plurality of PGs 401 can belong to the pool 400.
- the capacity of PG 401 is divided in units of pages 402.
- the size of the page 402 is typically several MB to several hundred MB.
- One page 402 may straddle all the flash drives 240 in the PG 401. This is to efficiently use the capacity and performance of each flash drive 240.
- the virtual volume 403 is a virtual storage area and is recognized by a host device connected to the storage system 200. When an instruction to write data to a predetermined area of the virtual volume 403 is generated, a page 402 is allocated to that area.
- a capacity is allocated to the area including the address for which writing is instructed.
- a page 402 is not allocated to an unused area of the volume 403. In this case, the storage area of the flash drive 240 is not consumed.
- a volume called a pool volume may be created in the PG 401 and the capacity of the pool volume may be divided on the page 402.
- a hierarchy called a pool volume By providing a hierarchy called a pool volume, only a partial area of PG 401 can be added to the pool 400.
- the capacity of PG 401 is “1 TB”, and only “0.5 TB” can be added to the pool 400.
- the remaining capacity of the PG 401 can be used for other purposes.
- FIG. 5 shows an example in which PG1 is added to the pool 400 and PG1 is removed from the pool 400.
- the addition means adding a new PG to the pool 400
- PG1 the total capacity of PG1 is “1TB”, which is the sum of the capacity of the user area and the capacity of the spare area, and the capacity of the user area of PG1 is “0.8TB”.
- the storage system 200 can use the total capacity “1TB” of PG1 as the capacity of the pool.
- the total capacity of the pool 400 is “2TB”.
- the total capacity “2TB” of the pool may be confirmed by the administrator from the management screen of the storage system 200. That is, “2TB” worth of data can be stored.
- FIG. 6 shows an example of the control information stored in the control information unit 221 of the storage system 200 and the program stored in the program unit 222.
- the control information unit 221 stores a PG table 224, a pool table 225, a page table 226, and a volume table 227.
- FIG. 6 shows only control information related to the present embodiment, and the actual storage system 200 may store other control information.
- the actual storage system 200 may store a cache management table or the like.
- the program unit 222 stores a capacity increase / decrease setting program 290, a free space check program 291, a page movement program 292, a movement page selection program 293, a garbage collection program 294, and an in-PG data movement program 295.
- FIG. 6 shows only programs related to this embodiment, and the actual storage system 200 may store programs other than these (I / O programs and the like).
- FIG. 7 shows an example of the PG table 224.
- the PG table 224 manages the capacity of the PG 401, the configuration of the PG 401, information on the flash drive 240 belonging to the PG 401, and the like.
- the PG table 224 may manage records having PG number 500, size 502, RAID configuration 504, compression function presence / absence 506, and drive number 508 as field values.
- the PG number 500 is a number for identifying the PG 401.
- the PG number 500 is unique in the storage system 200.
- the size 502 is the capacity of the PG 401 with the PG number 500.
- the RAID configuration 504 is information indicating the RAID type and the number of drives of the PG 401 with the PG number 500.
- the compression function presence / absence 506 is information indicating whether or not the PG 401 with the PG number 500 has a compression function.
- the drive number 508 is the number of the flash drive included in the PG 401 with the PG number 500.
- the presence / absence of the compression function 506 may be managed in units of flash drives. Since there are few flash drives with different compression functions in one PG, in this embodiment, the presence or absence of the compression function is managed in units of PG 401. However, flash drives with different compression functions may be mixed in one PG 401. In this case, the compression function presence / absence 506 may be “present” only when all the flash drives in one PG 401 have the compression function, and the compression function presence / absence 506 may be “none” in other cases.
- FIG. 8 shows an example of the page table 226.
- the page table 226 manages the physical area corresponding to the page 402, the allocation status of the page 402, and the like.
- the page table 226 may manage records having a page number 520, a state 522, an assignment destination 524, a PG number 526, a drive number 528, and an address 530 as field values.
- the page number 520 is a number for uniquely identifying the page 402.
- the page number 520 may be a unique number within the pool, or may be uniquely identifiable within the pool in combination with the PG number as a unique number for each PG.
- the physical area of the page 402 with the page number 520 is specified by the PG number 526, the drive number 528, and the address 530.
- PG number 526 is a number for identifying PG 401.
- Address 530 is the start address of page 402 in PG 401 with PG number 526. If the page size is not a fixed length, the page table 226 may also manage the page size, end address, and the like.
- the physical area of the page 402 straddles each flash drive 240 in the PG 401.
- the address of the page 402 is different for each flash drive 240, it is necessary to manage the address 530 for each drive number 528.
- the physical area of the page 402 is specified by the combination of the drive number 528 and the address 530.
- the physical number of the page 402 can be specified only by the address 530 without providing the drive number 528.
- the status 522 is information indicating whether or not the page 402 with the page number 520 has been allocated.
- the allocation destination 524 is information indicating the allocation destination of the page 402 with the page number 520.
- the allocation destination 524 may be the number of the allocation destination volume.
- the allocation destination 524 may be “ ⁇ ” meaning no allocation destination.
- the storage system 200 When the storage system 200 receives the write request, the storage system 200 allocates a page 402. This processing may be realized by the storage system 200 searching the page 402 in an unallocated state with reference to the page table 226. In order to speed up the search process for unallocated pages, the page numbers of pages 402 that are not allocated may be listed in advance.
- FIG. 9 shows an example of the pool table 225.
- the pool table 225 manages the capacity of the pool 400, PG information belonging to the pool 400, page information, and the like.
- the pool table 225 may manage records having a pool number 540, a capacity 542, a PG number 544, and a page number 546 as field values.
- the pool number 540 is a number for uniquely identifying the pool 400.
- the capacity 542 is the capacity of the pool 400. That is, the capacity 542 is equal to the total capacity of the PGs 401 belonging to the pool 400.
- the PG number 544 is the number of the PG 401 belonging to the pool 400.
- the page number 546 is a page number included in the PG 401 with the PG number 544. Since the page number can be acquired by searching the page table 226 using the PG number 544, the pool table 225 may not have the page number 546.
- FIG. 10 shows an example of the volume table 227.
- the volume table 227 manages allocation of pages 402 to the virtual volume 403.
- the volume table 227 may be stored in the control information unit 221 of the memory unit 220.
- the volume table 227 may manage records having the volume number 560, the address 562, the page allocation state 564, and the page number 566 as field values.
- the volume number 560 is a number for identifying the virtual volume 403.
- the address 562 is the address of the virtual volume 403 with the volume number 560.
- the page allocation state 564 is information indicating whether or not the page 402 has been allocated to the address 562.
- the page number 566 is a page number assigned to the address 562.
- the top record of the volume table 227 in the example of FIG. 10 indicates that the page 402 with the page number “0” is allocated to the virtual volume address “0 to 24576000” with the volume number “0”. .
- FIG. 11 shows an example of the logical-physical conversion table 282.
- the logical / physical conversion table 282 may be stored in the memory 244 in the flash drive 240.
- the logical / physical conversion table 282 converts an address designated as an access destination address by the storage system 200 (higher level apparatus) using the flash drive 240 and an address of the flash memory chip 246 in the flash drive 240.
- An explanation will be given assuming that the address provided to the host device is a logical address and the address in the flash drive 240 is a physical address. Since the physical storage position of data changes in the flash drive 240 by reclamation processing or wear leveling processing, the logical-physical conversion table 282 is necessary.
- the logical-physical conversion table 282 may manage records having the logical address 580, the flash page status 582, the block number 584, and the flash page number 586 as field values.
- the logical address 580 is an address provided to a host device such as the storage system 200.
- the logical address 580 is used when the host device accesses the flash drive 240.
- the flash page state 582 is information indicating whether or not a flash page has been allocated to the area of the logical address 580.
- the flash page state 582 may be assigned upon a write trigger, and may be unassigned upon an area release trigger such as UNMAP.
- the flash memory chip 246 is divided into a plurality of blocks.
- a block is composed of one or more pages.
- a reclamation process for moving a valid page in a block to another block and reproducing the block so that it can be reused is executed in units of blocks. Note that the flash page is irrelevant to the page of the capacity virtualization function.
- the block number 584 is a number for uniquely identifying a block in the flash memory 240.
- the flash page number 586 is a number for uniquely identifying the flash page in the block. That is, a physical address can be specified by a set of a block number 584 and a flash page number 586.
- the block number 584 and the flash page number 586 are valid information only when the flash page state 582 is “allocated”. When the flash page state 582 is “unallocated”, the block number 584 and the flash page number 586 may be “ ⁇ ” meaning invalid.
- FIG. 11 indicates that the 8 kilobyte area “0 to 8191” of the logical address 580 corresponds to the flash page number 586 “0” of the block number 584 “0”.
- the page size may be 8 kilobytes.
- Storage system 200 receives a write request including a volume number, an address, and write data. Then, the storage system 200 refers to the volume table 227 and checks whether a page is allocated to the write target address 562. Here, it is not assigned. In the case of unallocated, the storage system 200 refers to the page table 226, searches for an unallocated page, and allocates it. At this time, the page allocation state 564 and the page number 566 of the volume table 227 are updated. Further, the state 522 and the assignment destination 524 of the page table 226 are updated.
- This process may be executed asynchronously with the write request using the cache of the storage system 200.
- the flash drive 240 receives a write request from the storage system 200. For example, when the write request is to write to page “0”, the write data is stored at addresses “0 to 8192000”. In this case, the flash drive 240 assigns a flash page to the logical address 580 “0 to 8192000” of the logical-physical conversion table 282, and stores the write data.
- an unused page is searched from the block table 283, and the block number and flash page number of the found block are stored in the block number 584 and flash page number 586 of the logical-physical conversion table 282. Thereafter, the flash drive 240 stores the write data in the assigned flash page.
- the size of one flash page is 8 kilobytes, 1000 pages are allocated.
- the other flash drives 240 constituting the PG store the write data from the storage system 200.
- the data writing unit may be other than that. For example, writing to a part of the page may be performed.
- FIG. 12 shows an example of the block table 283.
- the block table 283 may be stored in the memory 244 in the flash drive 240.
- the block table 283 manages the flash page information included in the block and the state of the block.
- the block table 283 may manage records having a block number 600, a flash page number 602, and a status 604 as field values.
- the block number 600 and the flash page number 602 are as described above.
- the status 604 indicates whether the page with the flash page number 602 is “in use” or “unused”.
- FIG. 13 is a flowchart showing a processing example of the capacity increasing / decreasing program 290 and the spare area changing program 247.
- These programs release the spare area 320 when receiving an instruction to increase the capacity to the pool 400. Further, when these programs receive a capacity reduction instruction to the pool 400, these programs secure the spare area 320.
- the capacity increasing / decreasing program 290 may be stored in the control information unit 221 of the storage system 200 and executed by the processor 211 of the storage system 200.
- the spare area change program 247 may be stored in the memory 244 of the flash drive 240 and executed by the processor 242 of the flash drive 240. Details will be described below.
- the capacity increase / decrease program 290 receives a capacity increase instruction or a capacity reduction instruction from the administrator (maintenance staff) through the management screen, console, or the like (S100). At this time, the capacity increasing / decreasing program 290 also receives PG information and pool 400 information.
- the capacity reduction program 290 determines whether a capacity reduction instruction has been received (S101). This is because processing is different between capacity expansion and capacity reduction.
- the capacity increasing / decreasing program 290 moves the data already stored in the instructed PG 401 to an empty area of another PG 401 (S102). If there is not enough free space in the other PG 401, an error may be reported and the process may be terminated.
- the capacity increasing / decreasing program 290 updates the pool table 225 (S103).
- the capacity increasing / decreasing program 290 deletes the information of the PG 401 designated as the reduction target from the pool table 225.
- the capacity increasing / decreasing program 290 instructs all the flash drives 240 belonging to the designated PG 401 (that is, the flash drives belonging to the PG to be removed) to secure the spare area 320 (S104). For example, the capacity increasing / decreasing program 290 instructs to reserve the spare area 320 of “20%”. Of course, the indicated value may be other than 20%. Then, the capacity increasing / decreasing program 290 waits for a response from the flash drive 240 (S104).
- the capacity increasing / decreasing program 290 instructs the flash drive 240 belonging to the designated PG 401 (that is, the flash drive belonging to the PG to be added) to reduce the spare area 320 (S105). For example, the capacity increasing / decreasing program 290 instructs to reduce the spare area 320 to “0%”.
- the indicated value may be any value that makes the spare area ratio smaller than that of a typical flash drive 240. Then, the capacity increasing / decreasing program 290 waits for a response from the flash drive 240 (S105).
- the reserve area changing program 247 When the reserve area changing program 247 receives the instruction of step S104 or S105 from the capacity increasing / decreasing program 290 (S106), it changes the reserve area ratio 320 to the ratio of the received instruction (S107). That is, the spare area ratio table 249 of the flash drive 240 is changed.
- the spare area changing program 247 reports completion to the capacity increasing / decreasing program 290 (S108), and ends the process (S109).
- the flash drive 240 changes the response to the capacity inquiry.
- the flash drive 240 receives the inquiry about the capacity, it calculates the size of the user area from the flash capacity 281 and the spare area ratio table 249 and returns the calculation result. That is, the calculation result (answer) may differ depending on the change contents of the preparation area ratio executed in step S107.
- the capacity increase / decrease program 290 determines whether the instruction received in step S100 is a capacity reduction instruction (S111).
- the capacity increase / decrease program 290 ends the process (S113).
- the capacity increasing / decreasing program 290 updates the pool table 225 (S112). That is, the capacity increasing / decreasing program 290 adds the information of the PG 401 designated as the expansion target to the pool table 225. Then, the capacity increase instruction program 290 ends the process (S113).
- the area of the PG 401 added to the pool 400 is newly used as the pool 400.
- the data originally stored in the expansion target PG 401 need not be maintained.
- the PG 401 removed from the pool 400 can be used for other purposes. Data originally stored in the PG to be removed may not be maintained. This is because the data originally stored in the reduction target PG has been moved to another PG 401 remaining in the pool 400 in S102.
- the spare area 320 in the flash drive 240 can be reduced in the environment of the capacity virtualization function. Thereby, it is possible to improve the problem that an excessive space area is secured in the environment of the capacity virtualization function.
- the total of unallocated pages in the pool and unwritten areas in the allocated pages is the free area. Therefore, in the capacity virtualization function environment, sufficient free space is often secured, so the spare area 320 of the flash drive 240 can be reduced.
- the free space in the capacity virtualization function is biased to a specific flash drive 240 or PG 401, the free space of some flash drives 240 may be 20% or less. In this case, the life of the flash drive 240 is shortened.
- FIG. 14 is a diagram for explaining the outline of the second embodiment.
- a necessary space area is secured in the flash drive 240 belonging to PG1 by moving the capacity virtualization function page 402 from PG1 to PG2.
- the page 402 may be moved so that the ratio of the free area of each PG 401 is approximately the same.
- the page 402 may be moved when the ratio of the free area of each flash drive 240 is equal to or less than a predetermined threshold. For example, when the percentage of the free area becomes 20% or less, the page 402 may be moved so that the percentage of the free area becomes 20% or more. According to this, even when the percentage of the free area is biased such as 40% or 50%, the page 402 does not move, so that the consumption of the life due to the movement of the page 402 can be suppressed.
- each of PG1 and PG2 includes three flash drives 240.
- the percentages of the free areas of the three flash drives 240 belonging to PG1 are 10%, 30%, and 30%, respectively.
- the ratios of the free areas of the three flash drives 240 belonging to PG2 are 30%, 50%, and 60%, respectively. That is, the percentage of the free area of PG1 is smaller than the percentage of the free area of PG2.
- the ratios of the free areas of the three flash drives 240 belonging to PG1 change to 20%, 40%, and 40%, respectively. Further, the percentages of the free areas of the three flash drives 240 belonging to PG2 are changed to 20%, 40%, and 50%, respectively. That is, the difference between the percentage of the free area of PG1 and the percentage of the free area of PG2 is small.
- the number of pages 402 to be moved may be one or plural.
- FIG. 15 is a flowchart showing an example of processing of the free space check program 291.
- the free space check program 291 is a program that checks the free space ratio of each flash device 240 and adjusts the free space ratio if there is a difference in the free space ratio between PGs.
- the free space check program 291 may be stored in the control information unit 221 of the storage system 200 and executed by the processor 211 of the storage system 200. Details of the processing will be described below.
- the free area check program 291 inquires the ratio of the free area to all the flash drives 240 belonging to the pool 400 (S202). By making an inquiry to the flash drive 240, the free space check program 291 can acquire a more accurate free space size considering an unwritten region in the allocated page. In the page table 226, an unwritten area in the allocated page may be managed. The management may be managed by written bitmap information associated with 1-bit information indicating whether or not writing is performed every 8 bytes.
- the free space check program 291 calculates the free space ratio of each PG 401 (S203).
- the ratio of the free area of PG 401 may be defined as the ratio of the minimum free area in each flash drive 240 constituting the PG 401.
- the flash drive 240 having the smallest free space ratio among the flash drives 240 constituting the PG 401 may be the page 402 migration source. Further, among the flash drives 240 constituting the PG 401, the flash drive 240 having the largest free area ratio may be the destination of the page 402.
- the percentage of the free area of the flash drive 240 that is the minimum percentage of the free area can be increased by eliminating the unevenness of the percentage of the free area between the flash drives 240 constituting the PG 401.
- the adjustment of the ratio of the free area in the PG will be described later. Even if the ratio of the free area between the PGs is adjusted, if there is sufficient free area in the pool 400, the adjustment to the flash drive 240 having the minimum free area ratio is performed for each flash drive 240. Sufficient free space can be secured.
- the free space check program 291 determines whether or not the difference in the free space ratio between the PGs 401 is equal to or greater than a predetermined threshold (S204).
- step S204 If the determination result in step S204 is negative (NO), the free space check program 291 skips step S205 and proceeds to step S206.
- step S204 If the determination result in step S204 is affirmative (YES), the free space check program 291 executes the page movement program 292 to adjust the free space ratio (S205), and proceeds to step S206.
- step S206 the free space check program 291 determines whether or not the average free space ratio is equal to or less than a predetermined ratio (for example, 20%) (S206).
- a predetermined ratio for example, 20%
- step S206 If the determination result in step S206 is affirmative (YES), the free space check program 291 raises an alert to notify the administrator that capacity addition is necessary (S207), and ends the process (S208).
- step S206 If the determination result in step S206 is negative (NO), the free space check program 291 skips step S207 and ends the process (S208).
- FIG. 16 is a flowchart showing an example of processing of the page movement program 292.
- the page movement program 292 eliminates the bias of the ratio of the free area between the PGs 401 by moving the page 402.
- the page movement program 292 may be stored in the control information unit 221 of the storage system 200 and executed by the processor 211 of the storage system 200. Details of the processing will be described below.
- the page movement program 292 calculates the average value of the percentage of free space in each PG 401 (S300). This average value is a target in adjusting the ratio of the free area.
- the page movement program 292 selects a PG whose free area ratio is equal to or less than the average value, and calculates the data movement amount necessary to obtain the average value (S301).
- the necessary amount of data movement may be calculated as, for example, “flash drive capacity ⁇ 100 (%) ⁇ (average value ⁇ percentage of free space)”.
- the page movement program 292 calculates the acceptable amount for PGs whose free area ratio is equal to or greater than the average value (S302).
- the acceptable amount is an amount in which the ratio of the free area is equal to or greater than the average value even if data movement is accepted from the copy source PG 401 in the copy destination PG.
- the acceptable amount may be calculated, for example, as “flash drive capacity ⁇ 100 (%) ⁇ (percentage of free space ⁇ average value)”.
- step S302 a step of determining whether or not there is a PG having an empty area ratio equal to or higher than the average value is obtained. If the determination result in this step is negative, the page moving program 292 Processing may be terminated.
- the page movement program 292 determines the destination PG 401 and the data movement amount (S303), and calls the movement page selection program 293 (S304).
- the page movement program 292 may select the PG 401 having the maximum acceptable amount as the movement destination PG.
- the page movement program 292 may use the smaller of the necessary data movement amount and the acceptable amount as the data movement amount.
- the page movement program 292 copies the data of the movement target page 402 of the movement source PG 401 to the movement destination PG 401. Along with this copy processing, the page number 566 of the volume table 227 and the state 522 of the page table 226 are updated (S305). The I / O after the table is updated is performed on the migration destination page 402.
- the page move program 292 issues an UNMAP instruction of an address corresponding to the page 402 to be moved to the flash drive 240 of the move source PG 401 (S306). Receiving this UNMAP instruction, the flash drive 240 updates the logical-physical conversion table 282 in the flash drive 240 and releases the area where the copied data is stored. This UNMAP is a process necessary for the flash drive 240 to release the area.
- the page movement program 292 determines whether or not the amount of data that has been moved is greater than or equal to the required amount of data movement (S307).
- step S307 If the determination result in step S307 is negative (NO), the page movement program 292 returns to step S302 and continues processing. At this time, if the receivable amount of the destination PG 401 is smaller than the required data movement amount, the page movement program 292 selects another PG 401 as the movement destination and moves the page 402 in the second loop. Also good.
- the transferred data amount may be calculated as “number of pages ⁇ page size ⁇ number of flash drives in PG”.
- the amount of data that has been moved may be smaller than the above calculation result.
- the free area ratio approaches the average value by periodically executing the free area check program 291, it is not necessary to consider the influence of this unwritten area.
- the page movement program 292 may check the data movement amount from the PG 401 having the smallest free area ratio in the PG 401 as accurately as possible. Then, the page movement program 292 may reselect another page 401 as a movement target when the amount of data movement from the PG 401 having the smallest free space ratio in the PG 401 is equal to or smaller than a predetermined threshold. This process may generate overhead for checking the contents of data.
- step S307 determines whether or not the processing has been completed for all PGs 401 to be moved (S308). This is a step for processing another PG 401 whose ratio of the free area is equal to or less than the average value.
- step S308 If the determination result of step S308 is negative (NO), the page movement program 292 returns to step S301, and executes the processing of steps S301 to S307 for another PG 401.
- step S308 If the determination result in step S308 is affirmative (YES), the page movement program 292 ends the process (S309).
- FIG. 17 is a flowchart showing an example of processing of the moving page selection program 293.
- the moving page selection program 293 is called from the page moving program 292 and selects the page 402 to be moved.
- Some flash drives 240 have a compression function. When the data that is effectively compressed moves from the flash drive 240 having the compression function to the flash drive 240 that does not have the compression function, the compressed data is expanded and the consumption of the flash drive 240 increases. That is, the remaining capacity of the pool 400 decreases.
- the movement data selection program 293 selects the page 402 to be moved in consideration of the presence or absence of the compression function.
- the moving page selection program 293 may be stored in the control information unit 221 of the storage system 200 and executed by the processor 211 of the storage system 200. Details of the processing will be described below.
- the migration page selection program 293 determines whether each of the migration source and migration destination flash drives 240 has a compression function (step S400).
- the moving page selection program 293 selects a page 402 in which data having a high compression effect is stored.
- the page to be moved is selected (S403), and the process proceeds to step S404.
- the moving page selection program 293 stores the page 402 in which data with low compression effect is stored. Is selected as the page to be moved (S401), and the process proceeds to step S404.
- the moving page selection program 293 randomly selects a page to be moved (S402), and proceeds to step S404.
- step S404 the moving page selection program 293 reports the page 402 to be moved to the caller, and ends the process (S404).
- the movement target page 402 is selected after the movement destination PG is selected. However, after the movement target page 402 is selected, the movement destination PG is selected. Also good. At this time, if the data of the page 402 selected as the movement target has high compression effect, the PG 401 having the compression function may be preferentially selected as the movement destination PG. On the other hand, when the data of the page 402 selected as the movement target has low compression effect, the PG 401 having no compression function may be preferentially selected as the movement destination PG.
- the page is moved so that the ratio of the free areas between the PGs is equal. However, only when the ratio of the free areas is equal to or less than the threshold, the free areas are transferred from the PG 401.
- the page movement may be performed for the PG 401 whose ratio is equal to or greater than the threshold.
- the free area ratio of each PG 401 is adjusted to 85% in the examples of FIGS.
- the original 80% is a ratio of a sufficient free area, page movement may not be performed.
- the same ratio as the spare area ratio of the flash drive may be set.
- steps in which processing is different in the flowcharts of FIGS. 15 and 16 when realizing this method will be described.
- step S204 in FIG. 15 the free space check program 291 determines whether there is a PG having a free space ratio less than the threshold value. If the determination result is affirmative, the flow proceeds to step S205, and a negative result is obtained. If yes, go to Step S206. The processing in other steps is the same.
- step S300 in FIG. 16 is deleted.
- step S301 in FIG. 16 the page movement program 292 selects a PG having a free area ratio of 20% or less, and calculates a data movement amount necessary to make the free area ratio 20% or more. To do.
- step S302 the page movement program 292 calculates the acceptable amount of PG having a free area ratio of 20% or more.
- the acceptable amount in this case is, for example, an amount in which the ratio of the free area is 20% or more even if data movement is accepted from the movement source PG 401.
- step S303 the page movement program 292 determines whether or not the movement destination PG exists. If the determination result is negative, the process is terminated (S309), and if the determination result is affirmative, the process proceeds to step S303.
- the processing from step S303 to S308 may be the same.
- FIG. 18 shows an outline of a method for moving data in the PG 401.
- FIG. 18 is an example in which three flash drives 240 exist in one PG 401 and the page 402 straddles the three flash drives 240. Although not shown in FIG. 18, other pages 402 may also straddle the three flash drives 402. In the example of FIG. 18, the data in the area of the flash drive A is moved to the area of the flash drive B in the page 402. Thereby, the data amount of the flash drive A can be reduced. Note that the data in the area of the flash drive A may be moved to another page 402 of the flash drive B.
- FIG. 19 shows another example of the volume table 227a.
- data movement in the PG 401 can be realized by dividing the page 402 into smaller areas and managing the divided areas and the corresponding volume 403 areas.
- the divided area is called a segment.
- FIG. 19 is an example of a volume table 227a corresponding to a segment.
- the volume table record corresponding to the segment has a segment address 568 as a new field value, as compared to the volume table of FIG.
- the segment address 568 may be associated in order from the smallest address of the drive having the smallest drive number. Thereby, it is possible to calculate which address in the page table the segment corresponds to.
- a pointer indicating an area corresponding to a deduplication unit in the volume 403 is required.
- the deduplication unit is a segment unit
- the table structure in the example of FIG. 19 is obtained. Therefore, when the data amount reduction function is applied, the data structure can be moved within the PG 401 by utilizing the table structure of the data amount reduction function. Furthermore, it is necessary to manage whether the segment is in use and unused. This can be realized by using the aforementioned written bitmap information.
- FIG. 20 is a flowchart showing an example of processing of the PG data movement program 295.
- the intra-PG data movement program 295 moves data within the PG 401 and eliminates the uneven proportion of the free area within the PG 401.
- the intra-PG data movement program 295 may be stored in the control information unit 221 of the storage system 200 and executed by the processor 211 of the storage system 200. Details of the processing will be described below.
- the PG data movement program 295 inquires the ratio of the free area to all the flash drives 240 belonging to the capacity pool 400 (S500).
- the PG data movement program 295 selects one PG 401 (S501). Then, the intra-PG data movement program 295 determines whether or not the difference in the percentage of free areas of the flash device 240 in the selected PG 401 is equal to or greater than a predetermined threshold (S502).
- step S502 If the determination result in step S502 is negative (NO), the PG data movement program 295 proceeds to step S507. That is, since the deviation of the ratio of the free areas is sufficiently small, it is determined that data movement is unnecessary.
- step S502 If the determination result in step S502 is affirmative (YES), the intra-PG data movement program 295 calculates the average data amount in the PG 401 (S503).
- the PG data movement program 295 stores the flash drive 240 storing a data amount less than the calculated average data amount from the flash drive 240 storing a data amount equal to or greater than the calculated average data amount.
- the data is copied (S504). For example, if there is an empty segment on the same page of the copy destination flash drive 240, the intra-PG data movement program 295 copies the data to the empty segment.
- the intra-PG data movement program 295 may acquire the segment availability from the written bitmap information.
- the PG data movement program 295 searches for another page 402 having an empty segment when there is no empty segment on the same page of the copy destination flash drive 240 and copies the data to the other page 402.
- the PG data movement program 295 updates the volume table 227a and the page table 226 (S505). That is, the intra-PG data movement program 295 changes the page number 566 and the segment address 568 in the volume table 227a. In the page table 226, the intra-PG data movement program 295 turns off the copy-source written bitmap information and turns on the copy-destination written bitmap information. By moving the data to a different page 402, there is a possibility that there is no valid data in the source page 401 and the source page 401 can be released. In this case, the PG data movement program 295 changes the state 522 of the page 402 to “unallocated” in the page table 226.
- the in-PG data movement program 295 After completing the data copy, the in-PG data movement program 295 issues an UNMAP instruction to the copy source area and releases the area of the flash drive 240 (S506). Then, the data movement program 295 within PG 401 proceeds to step S507.
- step S507 the intra-PG data movement program 295 determines whether or not the processing for all the PGs 401 has been completed. If the determination result is affirmative (YES), this processing ends (S508), and negative If YES (NO), the process returns to step S501.
- the process for adjusting the free area in the PG 401 has been described. This process is independent of the process of adjusting the free area by moving the page between PGs 401. Accordingly, it is possible to adjust the free area within the PG 401 and further adjust the free area between the PGs 401. For example, if sufficient free areas cannot be secured even if the free areas are equalized in the PG 401, the free areas may be adjusted between the PGs 401.
- 18 to 20 can be applied to a configuration in which the page 402 does not exist. For example, this is possible by storing information indicating the logical address of the flash drive 240 in the segment portion of FIG. In this case, there is no need to update the page table 226 in step S505.
- the spare area 320 in the flash drive 240 is reduced in the environment of the capacity virtualization function. Then, an empty area including the unallocated page 402 of the capacity virtualization function and the unwritten area in the allocated page is distributed and arranged in each flash drive 240. Thereby, an empty area is secured in each flash drive 240.
- an alert for capacity addition is raised when the ratio of the capacity of unallocated pages falls below a threshold (eg, 20%). However, if the capacity is not added without following this alert, the free space of the flash drive 240 is insufficient.
- the garbage collection process is a process of moving the valid data from a plurality of pages 402 in which valid data and invalid data are mixed to another page and increasing the free space.
- data may be stored in a log structure structure. In such a case, the storage system requires a garbage collection process.
- FIG. 21 is a flowchart showing an example of processing of the garbage collection program 294.
- the garbage collection program 294 may be stored in the control information unit 221 of the storage system 200 and executed by the processor 211 of the storage system 200. Details of the processing will be described below.
- the garbage collection program 294 searches for a plurality of pages 402 in which the ratio of invalid data is equal to or greater than a predetermined threshold (S600). This process may be realized using the previously written bitmap information.
- the garbage collection program 294 calculates the total amount of valid data in the plurality of pages 402 found by the search, and assigns a new page that can store the total amount of valid data (S601).
- the garbage collection program 294 moves the found valid data in the plurality of pages 402 to the new page 402 assigned in step S601 (S602).
- the garbage collection program 294 determines whether or not the percentage of free space is less than a predetermined threshold (S603). If the determination result is negative (S603: NO), the garbage collection program 294 ends this process (S605). This is because there is still enough free space. If the determination result is affirmative (S603: YES), the garbage collection program 294 changes the found page 402 to an “unallocated” state (S604), and ends this process (S605). This increases the percentage of free space.
- FIG. 21 illustrates a method for securing a free area in accordance with the garbage collection process when the free area is insufficient.
- a free area can be secured by another method.
- the storage media layering function has the flash drive 240 and HDD in one pool. Then, the access frequency to the page 402 is monitored, and the page 402 requiring a relatively high performance with a relatively large number of I / O requests is stored in the flash drive 240 having a relatively high I / O performance. The page 402 that has a relatively small number and does not require a relatively high performance is stored in an HDD having a relatively low I / O performance. Further, the page may be moved according to the fluctuation of the I / O request.
- I / O performance can be maximized by storing more pages in the flash drive 240.
- the free space is insufficient and the life of the flash drive 240 is shortened.
- the storage media hierarchization page is moved in consideration of the free space. If a sufficient free area cannot be secured in each flash drive 240 in the write data non-storage area 350 in the page, a page is moved from the flash drive 240 to the HDD so that a sufficient free area can be secured in the flash drive 240. Good. Furthermore, shortage of free space in the flash drive 240 may be suppressed by suppressing page movement from the HDD to the flash drive 240. For example, the page movement may be restricted in accordance with the change of the write data non-storage area 350 in the page.
- the parity is calculated with the same address of each drive constituting the PG. If a drive in the PG has a failure, the data stored in the drive in which the failure has occurred is extracted from the normal drive in the PG and stored in the spare drive. . Therefore, the spare drive is not used when no failure occurs.
- RAID technology that distributes data and parity to all drives in the system may be applied. For example, some data stores data and parity in the drives 1, 3, 5, and 7, and another data stores data and parity in the drives 1, 2, 5, and 6. Furthermore, the storage address of each data and parity on the drive is not necessarily the same. Such a technique is called distributed RAID. In the distributed RAID technology, each drive is divided into a certain size, and RAID is applied by combining the divided areas.
- the spare drive area can also be distributed in each drive.
- the recovery time can be shortened compared to the conventional RAID technology.
- Data may be distributed to all the flash drives 240 in the system, or a disk group is created like a PG using a plurality of flash drives 240, and the data is distributed and arranged in the created disk group. Also good.
- the present embodiment can also be applied to such a distributed RAID environment.
- the spare area is not used unless a failure occurs. That is, in the flash drive 240, the spare area is an empty area. In the flash drive 240, securing both the spare area and the spare area secures an excessive space area. Therefore, in this embodiment, when a PG is added to the pool, the size corresponding to the spare area may be reduced from the spare area of the flash drive. Thereby, it can suppress that an excessive empty area is ensured. When the PG is removed from the pool, the spare area of the flash drive 240 may be expanded by a size corresponding to the spare area.
- Storage system 211 Processor 240: Flash drive 310: User area 320: Spare area 400: Pool 401: Parity group (PG) 402: Page 403: Virtual volume
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
情報処理システムは、プロセッサと、複数のフラッシュドライブとを備え、複数のフラッシュドライブは、データを記憶するユーザ領域と予備領域とを有する。プロセッサは、複数のフラッシュドライブから1または複数のディスクグループを構成し、ディスクグループから構成されるプールを管理し、プール上の記憶領域であるページが割り当てられる仮想ボリュームを提供する。プロセッサは、1または複数のディスクグループのうち第1のディスクグループがプールに増設または減設されるとき、第1のディスクグループを構成するフラッシュドライブの予備領域の容量を調整する。
Description
本発明は、情報処理システムに関する。
フラッシュメモリで構成されるドライブ(「フラッシュドライブ」という)を備えるストレージシステムがある。フラッシュドライブは、書き込み回数に上限(寿命)がある点、データを直接上書きできない点などにおいてHDD(Hard Disk Drive)と異なる特徴を有する。したがって、フラッシュドライブに格納されているデータを更新する場合、別の領域に新データを書き込み、旧データを無効化するという処理が必要となる。また、フラッシュドライブでは、無効データ及び有効データが格納されている領域に対して、その領域の有効データを別領域にコピーし、その領域を新データを書き込めるようにクリアするリクラメーション処理が行われる。また、フラッシュメモリチップ間の寿命を平準化してフラッシュドライブ全体の寿命を延ばすウェアレベリング処理も行われる。
リクラメーション処理やウェアレベリング処理などを効率良く行うために、フラッシュドライブには予備領域が設けられている。典型的には、フラッシュドライブの全容量の20%~30%の予備領域が設けられている。そして、フラッシュドライブは、上位装置に対して、予備領域を除く領域の容量を見せる。例えば、全容量が1TBでその20%が予備領域であるフラッシュドライブの場合、フラッシュドライブは、上位装置に対して、0.8TBを利用可能な容量として見せる。フラッシュドライブの全領域の内の予備領域を除く領域を、ユーザ領域と呼ぶ。全領域に対する予備領域の割合を小さくすると、ユーザ領域が増加するので、単位容量当たりのコストは下がる。しかし、リクラメーション処理などの効率が低下するので、フラッシュドライブの寿命が短くなり得る。リクラメーション処理などは、予備領域とユーザ領域中の未使用領域とを用いる。予備領域とユーザ領域中の未使用領域とを合わせた領域を、空き領域と呼ぶ。
特許文献1には、フラッシュメモリの寿命を消費しやすいランダムライトアクセスが多い場合、予備領域を増やし、フラッシュメモリの寿命の消費がランダムライトよりも少ないシーケンシャルライトの場合、予備領域を減らすことにより、フラッシュの寿命を最適化する技術が開示されている。
例えば、シンプロビジョニングによる容量仮想化環境では、全体では未使用領域が十分に存在していることが多い。しかしこの場合であっても、各フラッシュドライブでは所定の割合(例えば20%)の予備領域が確保される。このように、空き領域が過剰に確保されると、単位容量当たりのコストが上がってしまう。
本発明の目的は、フラッシュメモリに係る空き領域を適切に制御し、単位容量当たりのコストを抑制することにある。
一実施例に係る情報処理システムは、プロセッサと、複数のフラッシュドライブとを備え、複数のフラッシュドライブは、データを記憶するユーザ領域と予備領域とを有する。プロセッサは、複数のフラッシュドライブから1または複数のディスクグループを構成し、ディスクグループから構成されるプールを管理し、プール上の記憶領域であるページが割り当てられる仮想ボリュームを提供する。プロセッサは、1または複数のディスクグループのうち第1のディスクグループがプールに増設または減設されるとき、第1のディスクグループを構成するフラッシュドライブの予備領域の容量を調整する。
本発明によれば、フラッシュメモリに係る空き領域を適切に制御し、単位容量当たりのコストを抑制することができる。
以下、図面を参照しながら実施例を説明する。
なお、以後の説明では「aaaテーブル」等の表現にて情報を説明するが、これら情報は、テーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等の情報を「aaa情報」と呼ぶことができる。
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理を行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は、そのプログラムを実行するプロセッサ又はそれを有する装置(例えば、制御デバイス、コントローラ、ストレージシステム)が行う処理としてもよい。また、プロセッサがプログラムを実行することにより行われる処理の一部または全ては、プロセッサに代えて又は加えてハードウェア回路によって行われても良い。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。
図1は、フラッシュドライブ240と、プール400と、ページ402との関係性を説明するための図である。図1を用いて、本実施例に係る課題を説明する。
ストレージシステムは、1つ以上のフラッシュドライブ240を備える。しかし、ここでは説明をわかりやすくするため、フラッシュドライブ240を1つとする。しかし、複数のフラッシュドライブ240をパリティグループ(PG:Parity Group)という単位でまとめて、高信頼化技術の一例であるRAID(Redundant Arrays of Independent Disks)を構成してもよい。パリティグループやRAIDグループのようなフラッシュドライブ240で構成されたグループをディスクグループともいう。
シンプロビジョニングに係る容量仮想化機能は、ストレージシステムに搭載されている複数の物理的な記憶デバイス(例えばフラッシュメモリ)の容量をまとめてプールとして管理する。そして、容量仮想化機能は、上位計算機に対して、仮想ボリュームを提供する。上位装置から仮想ボリュームの或るアドレスに対する書き込み要求を受領した場合、容量仮想化機能は、プールの空きページを確保し、その空きページを仮想ボリュームの当該アドレスに割り当て、当該空きページにデータを書き込む。典型的に、1ページのサイズは、数MB~数百MBである。これにより、未割り当てのページの分の容量は消費されないので、ストレージシステムの全容量を効率的に使用することができる。
フラッシュドライブ240の全容量は、ユーザ領域310の容量と予備領域320の容量との合計である。図1の例では、ユーザ領域310の容量が「0.8TB」であり、予備領域320の容量が「0.2TB」であり、フラッシュドライブ240の全容量は合計の「1TB」である。
プール400は、ストレージシステムの容量仮想化機能によって管理される。図1の例において、プール400の容量は、フラッシュドライブ240のユーザ領域310の容量の「0.8TB」に等しい。プール400では、典型的には、ページ未割当領域340が常時20%程度確保される。ページ未割当領域340は、フラッシュドライブ240の領域341(空き領域)に対応する。
ページ402は、プール400から仮想ボリュームに割り当てられる領域の単位である。図1のページ402において、領域360はライトデータが格納済みであり、領域350はライトデータが未格納である。フラッシュドライブ240の領域351(空き領域)は、このライトデータが未格納の領域350に対応する。
よって、フラッシュドライブ240における空き領域は、領域320、領域341及び領域351の合計となる。典型的には、フラッシュドライブ240の空き領域の全容量に対する割合は、40%以上となる。つまり、単位容量当たりのコストが高くなってしまう。
図2は、ストレージシステム200の構成例を示す。
ストレージシステム200は、1以上のマイクロプロセッサパッケージ(MPPK)210と、メモリユニット220と、バックエンドパッケージ(BEパッケージ)230と、フロントエンドパッケージ(FEパッケージ)260とを有する。MPPK210と、メモリユニット220と、BEパッケージ230と、FEパッケージ260とは、内部バス280を介して接続されている。
FEパッケージ260は、ポート261と、メモリ262とを有する。
ポート261は、ネットワーク120を介して、ホスト100と接続され、ホスト100との間の通信を仲介する。
メモリ262は、FEパッケージ260の処理に必要な各種データを記憶する。例えば、メモリ262は、ホスト100から転送されたデータ又はホスト100へ転送するデータを一時的に格納する。メモリ262は、後述するメモリユニット220で構成されてもよい。
メモリユニット220は、1以上のメモリデバイスにより構成される。メモリユニット220は、制御情報を記憶する制御情報部221と、プログラムを記憶するプログラム部222と、データをキャッシュするキャッシュメモリの一例としてのキャッシュ部223とを有してよい。キャッシュ部223の容量は、典型的には、ボリューム250の容量よりも小さい。
MPPK210は、プロセッサ211と、ローカルメモリ212と、保守ポート213とを有する。
プロセッサ211と、ローカルメモリ212と、保守ポート213とは、内部バス214を介して接続されている。
ローカルメモリ212は、MPPK210において必要な各種データを記憶する。
保守ポート213は、保守端末270との通信を仲介する。
プロセッサ211は、各種処理を実行する。プロセッサ211は、メモリユニット220のプログラム部222に格納された各種プログラムを実行することにより各種処理を実行してよい。プロセッサ211は、メモリユニット220の制御情報部221に格納されている各種情報を用いて各種処理を実行してよい。
BEパッケージ230は、ポート231と、メモリ232とを有する。
ポート231は、1以上の物理記憶デバイスの一例であるフラッシュドライブ240と、バス283を介して接続されている。
データを管理するボリューム250は、1以上のフラッシュドライブ240の記憶領域により構成されてよい。
物理記憶デバイスは、フラッシュドライブに限られず、例えば、HDD、DVD、SCM(Storage Class Memory)などであってもよい。フラッシュドライブは、NAND型フラッシュでもよいし、NOR型フラッシュでもよい。また、1つ以上のフラッシュドライブ240をパリティグループという単位でまとめて、高信頼化技術の一例であるRAIDを使用してもよい。
メモリ232は、メモリユニット220で構成されてもよい。
ストレージシステム200には、バス280を介して、ストレージシステム200を保守するための保守端末270が接続されてよい。
保守端末270は、CPU271と、メモリ272と、入出力部274と、保守ポート275とを有する。
メモリ272は、保守用のプログラム(保守プログラム)273を記憶する。CPU271は、保守プログラム273を実行して保守処理を実行する。
入出力部274は、例えば、マウス、キーボード、ディスプレイ等により構成され、保守を行うオペレータからの様々な指示の入力を受け付けるとともに、様々な情報をディスプレイに表示する。
保守ポート275は、ストレージステム200との間の通信を仲介する。
図2の構成は一例であり、例えば、サーバ上にソフトウェアをインストールしたソフトウェアベースのストレージシステムであってもよいし、クラウド上で動作する仮想マシンにソフトウェアをインストールしたストレージシステムであってもよい。
図3は、フラッシュドライブ240の構成例を示す。
フラッシュドライブ240は、ディスクI/F241、プロセッサ242、メモリ244、フラッシュI/F245、フラッシュメモリチップ246、及び内部ネットワーク243を有する。
ディスクI/F241、フラッシュI/F245、メモリ244、及びプロセッサ242は、内部ネットワーク243を介して接続される。
フラッシュメモリチップ246は、フラッシュI/F245に接続される。さらに、データ圧縮及び伸長回路なども、内部ネットワーク243を介して接続されてよい。
ディスクI/F241は、フラッシュドライブ240を利用するストレージシステム200(上位装置)との通信を仲介する。
フラッシュI/F245は、フラッシュメモリチップ246にアクセスするための通信を仲介する。
プロセッサ242は、ディスクI/F241に接続される上位装置から様々な要求(I/O要求など)を受領し、その要求に対応する処理を実行する。
メモリ244は、プロセッサ242が様々な処理を実行するために必要となる制御情報やプログラムなどを格納する。
図3の構成は一例であり、フラッシュドライブ240は、1つ以上のフラッシュメモリチップ246とそれを制御するプロセッサ242などから構成されるどのような装置であってもよい。フラッシュドライブ240は、一般的なSSD(Solid State Drive)のようなフォームファクタに限定されるものではない。
図3の下部に、フラッシュドライブ240のメモリ244に格納されているプログラム及び制御情報を示す。
メモリ244は、予備領域変更プログラム247、容量報告プログラム248、予備領域比率テーブル249、フラッシュ容量テーブル281、論理物理変換テーブル282、及び、ブロックテーブル283を格納してよい。メモリ244は、これ以外のプログラム(例えばI/O処理プログラム)及び制御情報なども格納してよい。図3では、本実施例に直接関連しないプログラムやテーブルなどは省略されている。
予備領域比率テーブル249は、各フラッシュドライブ240の全領域に対する予備領域320の割合(比率)を管理するためのテーブルである。
フラッシュ容量テーブル281は、各フラッシュドライブの物理容量(ユーザ領域310と予備領域320の合計)を管理するためのテーブルである。
論理物理変換テーブル282、ブロックテーブル283、及び、予備領域変更プログラム247については後述する。
容量報告プログラム248は、フラッシュドライブ240を利用するストレージシステム200などから容量の報告要求を受領すると、そのフラッシュドライブの「1-予備領域割合」と「フラッシュドライブの全容量」との積を算出し、その算出結果を、そのフラッシュドライブの使用可能な容量として報告するためのプログラムである。したがって、予備領域割合が変わると、それに伴い、報告されるフラッシュドライブの使用可能な容量も変わる。
図4は、フラッシュドライブ240、パリティグループ401、プール400、ページ402、仮想ボリューム403の関係を示す図である。図4を参照しながら、容量仮想化機能について説明する。
仮想ボリューム403は、仮想化されたボリュームである。
1つ以上のフラッシュドライブ240は、パリティグループ(PG:Parity Group)401という単位でまとめられている。
PG401は、物理的な容量を有するリソースである。プール400には、複数のPG401が属することができる。
PG401の容量は、ページ402という単位で分割される。ページ402のサイズは、典型的には、数MB~数百MBである。1つのページ402は、PG401内の全フラッシュドライブ240に跨ってよい。各フラッシュドライブ240の容量及び性能を効率的に使用するためである。
仮想ボリューム403は、仮想的な記憶領域であり、ストレージシステム200に接続される上位装置によって認識される。仮想ボリューム403の所定の領域に対するデータの書き込み指示が発生すると、その領域に対してページ402が割り当てられる。
書き込むデータのサイズよりもページのサイズの方が大きい場合は、書き込みが指示されたアドレスを含む領域に、容量が割り当てられる。ボリューム403の未使用領域には、ページ402が未割り当てである。この場合、フラッシュドライブ240の記憶領域は消費されていない。
なお、PG401内にプールボリュームと呼ばれるボリュームを作成し、当該プールボリュームの容量をページ402で分割してもよい。プールボリュームという階層を設けることで、PG401の一部の領域のみをプール400に追加することができる。例えば、PG401の容量が「1TB」であって、その内の「0.5TB」のみをプール400に追加することができる。そして、PG401の残りの容量は、他の用途に使うこともできる。
図5は、PG1をプール400に増設及びPG1をプール400から減設する例である。ここで、増設とはプール400に新たにPGを加えることをいい、減設とはプール400を構成しているPGを当該プールの構成から外すことをいう。
例えば、PG1の全容量をユーザ領域の容量と予備領域の容量との合計の「1TB」、PG1のユーザ領域の容量を「0.8TB」とする。
PG1をプール400に増設するとき、PG1内の予備領域は解放される。これにより、ストレージシステム200は、PG1の全容量「1TB」をプールの容量として使用することができる。
例えば、プール400にPG1とPG2とが含まれているとする。この場合、プール400の全容量は「2TB」となる。プールの全容量「2TB」は、ストレージシステム200の管理画面から管理者が確認することができてよい。つまり、「2TB」分のデータが格納可能となる。
PG1をプール400から減設するとき、PG1内に予備領域を確保する。なぜなら、上記の通り、PG1をプール400に増設するときにPG1の予備領域を解放しているからである。これにより、減設したPG1を容量仮想化機能を適用しない環境(つまり別の環境)で使用する際、PG1には既に予備領域320が確保されている。減設の際にPG1の予備領域320を確保しないと、予備領域の不足によってフラッシュドライブの寿命が早期に尽きてしまうおそれがある。
図6は、ストレージシステム200の制御情報部221に格納されている制御情報と、プログラム部222に格納されているプログラムとの例を示す。
制御情報部221には、PGテーブル224、プールテーブル225、ページテーブル226、及びボリュームテーブル227が格納されている。
図6には本実施例に関連する制御情報のみが示されており、実際のストレージシステム200にはこれら以外の制御情報も格納されてよい。例えば、実際のストレージシステム200には、キャッシュ管理テーブルなどが格納されてよい。
プログラム部222には、容量増減設プログラム290、空き領域チェックプログラム291、ページ移動プログラム292、移動ページ選択プログラム293、ガベージコレクションプログラム294、及び、PG内データ移動プログラム295が格納されている。図6には本実施例に関連するプログラムのみが示されており、実際のストレージシステム200にはこれら以外のプログラム(I/Oプログラムなど)も格納されてよい。
図7は、PGテーブル224の一例を示す。
PGテーブル224は、PG401の容量、PG401の構成、及び、PG401に属するフラッシュドライブ240の情報などを管理する。
PGテーブル224は、PG番号500、サイズ502、RAID構成504、圧縮機能有無506及びドライブ番号508をフィールド値として有するレコードを管理してよい。PG番号500は、PG401を識別するための番号である。PG番号500は、ストレージシステム200においてユニークである。サイズ502は、PG番号500のPG401の容量である。RAID構成504は、PG番号500のPG401のRAID種別およびドライブ台数を示す情報である。圧縮機能有無506は、PG番号500のPG401が圧縮機能を有するか否かを示す情報である。ドライブ番号508は、PG番号500のPG401に含まれるフラッシュドライブの番号である。
フラッシュドライブが圧縮機能を有する場合、圧縮機能有無506は、フラッシュドライブの単位で管理されてもよい。1つのPG内に圧縮機能有無の異なるフラッシュドライブを混在させることは少ないので、本実施例では、PG401の単位で圧縮機能有無を管理している。しかし、1つのPG401内に圧縮機能有無の異なるフラッシュドライブが混在してもよい。この場合、1つのPG401内の全てのフラッシュドライブが圧縮機能を有する場合のみ圧縮機能有無506を「有」とし、それ以外の場合には圧縮機能有無506を「無」としてもよい。
図8は、ページテーブル226の一例を示す。
ページテーブル226は、ページ402が対応する物理領域及びページ402の割り当て状況などを管理する。ページテーブル226は、ページ番号520、状態522、割り当て先524、PG番号526、ドライブ番号528及びアドレス530をフィールド値として有するレコードを管理してよい。
ページ番号520は、ページ402を一意に識別するための番号である。ページ番号520は、プール内でユニークな番号としてもよいし、PG毎にユニークな番号としてPG番号と組み合わせてプール内で一意に識別可能としてもよい。ページ番号520のページ402の物理的な領域は、PG番号526、ドライブ番号528及びアドレス530によって特定される。
PG番号526は、PG401を識別するための番号である。アドレス530は、PG番号526のPG401におけるページ402の開始アドレスである。ページサイズが固定長でない場合、ページテーブル226は、ページサイズや終了アドレスなども管理してよい。
ページ402の物理的な領域は、PG401内の各フラッシュドライブ240に跨っている。ページ402のアドレスが各フラッシュドライブ240で異なる場合、ドライブ番号528毎にアドレス530を管理する必要がある。図8の例は、ドライブ番号528及びアドレス530の組によって、ページ402の物理的な領域を特定している。ページ402のアドレスが各フラッシュドライブ240で同じ場合、ドライブ番号528を設けず、アドレス530のみでページ402の物理的な領域を特定することもできる。
状態522は、ページ番号520のページ402が、割り当て済みか否かを示す情報である。割り当て先524は、ページ番号520のページ402の割り当て先を示す情報である。
ページ番号520のページ402が割り当て済みの場合、割り当て先524は、割り当て先のボリュームの番号となってよい。ページ番号520のページ402が未割り当ての場合、割り当て先524は、割り当て先無しを意味する「-」となってよい。
ストレージシステム200は、ライト要求を受領すると、ページ402を割り当てる。この処理は、ストレージシステム200が、ページテーブル226を参照し、未割り当て状態のページ402を探索することによって実現されてよい。未割り当てページの探索処理を高速化するために、未割り当て状態のページ402のページ番号を予めリスト化しておいてもよい。
図9は、プールテーブル225の一例を示す。
プールテーブル225は、プール400の容量、プール400に属するPG情報、及びページ情報などを管理する。
プールテーブル225は、プール番号540、容量542、PG番号544及びページ番号546をフィールド値として有するレコードを管理してよい。プール番号540は、プール400を一意に識別するための番号である。容量542は、プール400の容量である。すなわち、容量542は、プール400に属する各PG401の容量の合計に等しくなる。PG番号544は、プール400に属するPG401の番号である。ページ番号546は、PG番号544のPG401に含まれるページの番号である。なお、PG番号544を用いてページテーブル226を検索することによってページ番号は取得できるため、プールテーブル225は、ページ番号546を有さなくてもよい。
図10は、ボリュームテーブル227の一例を示す。
ボリュームテーブル227は、仮想ボリューム403に対するページ402の割り当てを管理する。ボリュームテーブル227は、メモリユニット220の制御情報部221に格納されてよい。
ボリュームテーブル227は、ボリューム番号560、アドレス562、ページ割り当て状態564、及びページ番号566をフィールド値として有するレコードを管理してよい。ボリューム番号560は、仮想ボリューム403を識別するための番号である。アドレス562は、ボリューム番号560の仮想ボリューム403のアドレスである。ページ割り当て状態564は、アドレス562にページ402が割り当て済みか否かを示す情報である。ページ番号566は、アドレス562に割り当てられたページの番号である。
図10の例におけるボリュームテーブル227の一番上のレコードは、ボリューム番号「0」の仮想ボリュームのアドレス「0~24576000」には、ページ番号「0」のページ402が割り当てられていることを表す。
図11は、論理物理変換テーブル282の一例を示す。
論理物理変換テーブル282は、フラッシュドライブ240内のメモリ244に格納されてよい。論理物理変換テーブル282は、フラッシュドライブ240を利用するストレージシステム200(上位装置)がアクセス先のアドレスとして指定するアドレスと、フラッシュドライブ240内のフラッシュメモリチップ246のアドレスとを変換する。上位装置に提供するアドレスを論理アドレス、フラッシュドライブ240内のアドレスを物理アドレスとして説明する。フラッシュドライブ240内ではリクラメーション処理やウェアレベリング処理によってデータの物理的な格納位置が変化するため、論理物理変換テーブル282が必要である。
論理物理変換テーブル282は、論理アドレス580、フラッシュページ状態582、ブロック番号584及びフラッシュページ番号586をフィールド値として有するレコードを管理してよい。論理アドレス580は、ストレージシステム200などの上位装置に提供するアドレスである。論理アドレス580は、上位装置がフラッシュドライブ240にアクセスする際に使用される。フラッシュページ状態582は、論理アドレス580の領域にフラッシュページが割り当て済みであるか否かを示す情報である。フラッシュページ状態582は、ライト契機で割り当て済みとなり、UNMAPなどの領域解放の契機で未割り当てとなってよい。
ここで、ブロックおよびフラッシュページについて説明する。フラッシュメモリチップ246は、複数のブロックに分割されている。ブロックは、1つ以上のページから構成されている。ブロック内の有効ページを他のブロックに移動させ、そのブロックを再生して再利用可能な状態とするリクラメーション処理などは、ブロック単位で実行される。なお、フラッシュページは、容量仮想化機能のページとは無関係である。
ブロック番号584は、フラッシュメモリ240内のブロックを一意に識別するための番号である。フラッシュページ番号586は、ブロック内でフラッシュページを一意に識別するための番号である。すなわち、ブロック番号584とフラッシュページ番号586の組によって、物理アドレスが特定可能である。
ブロック番号584およびフラッシュページ番号586は、フラッシュページ状態582が「割り当て済み」の場合のみ、有効な情報である。フラッシュページ状態582が「未割り当て」の場合、ブロック番号584及びフラッシュページ番号586は、無効を意味する「-」であってよい。
図11の例は、論理アドレス580の「0~8191」の8キロバイトの領域が、ブロック番号584「0」のフラッシュページ番号586「0」と対応することを示す。この例では、ページのサイズは8キロバイトであってよい。
以下、ホスト100からライト要求を受領した場合に上述のテーブルがどのように更新されるかについて、簡単に説明する。
ストレージシステム200は、ボリューム番号、アドレス、及びライトデータを含むライト要求を受領する。そして、ストレージシステム200は、ボリュームテーブル227を参照し、ライト対象のアドレス562にページが割り当てられているか否かをチェックする。ここでは未割り当てとする。未割り当ての場合、ストレージシステム200は、ページテーブル226を参照し、未割り当て状態のページを探索し、割り当てる。このとき、ボリュームテーブル227のページ割り当て状態564及びページ番号566が更新される。また、ページテーブル226の状態522及び割り当て先524が更新される。
以下、ライトデータをフラッシュドライブに書き込む処理について説明する。この処理は、ストレージシステム200のキャッシュを用いて、ライト要求とは非同期に実行されてよい。
フラッシュドライブ240は、ストレージシステム200からライト要求を受領する。例えば、ライト要求がページ「0」に対する書き込みの場合、ライトデータはアドレス「0~8192000」に格納されることになる。この場合、フラッシュドライブ240は、論理物理変換テーブル282の論理アドレス580「0~8192000」にフラッシュページを割り当て、ライトデータを格納する。
例えば、ブロックテーブル283から未使用状態のページを探索し、発見したブロックのブロック番号及びフラッシュページ番号を、論理物理変換テーブル282のブロック番号584及びフラッシュページ番号586に格納する。その後、フラッシュドライブ240は、その割り当てたフラッシュページにライトデータを格納する。図11の例では、1つのフラッシュページのサイズが8キロバイトであるため、1000ページが割り当てられる。PGを構成する他のフラッシュドライブ240でも同様に、ストレージシステム200からの書き込みデータを格納する。
ここでは、フラッシュドライブ240に1つのページ「0」に対応するデータを書き込む例を説明したが、データの書き込み単位はそれ以外であってもよい。例えば、ページの一部に対する書き込みであってもよい。
図12は、ブロックテーブル283の一例を示す。
ブロックテーブル283は、フラッシュドライブ240内のメモリ244に格納されてよい。ブロックテーブル283は、ブロックに含まれるフラッシュページ情報、及びブロックの状態を管理する。
ブロックテーブル283は、ブロック番号600、フラッシュページ番号602及び状態604をフィールド値として有するレコードを管理してよい。ブロック番号600およびフラッシュページ番号602は、上記で説明した通りである。状態604は、フラッシュページ番号602のページが「使用中」又は「未使用」の何れであるかを示す。
図13は、容量増減設プログラム290および予備領域変更プログラム247の処理例を示すフローチャートである。
これらのプログラムは、プール400への容量増加指示を受領した場合、予備領域320を解放する。また、これらのプログラムは、プール400への容量減設指示を受領した場合、予備領域320を確保する。
容量増減設プログラム290は、ストレージシステム200の制御情報部221に格納され、ストレージシステム200のプロセッサ211によって実行されてよい。予備領域変更プログラム247は、フラッシュドライブ240のメモリ244に格納され、フラッシュドライブ240のプロセッサ242によって実行されてよい。以下、詳細を説明する。
容量増減設プログラム290は、管理画面やコンソールなどを通じて、管理者(保守員)から容量増設指示、又は、容量減設指示を受領する(S100)。このとき、容量増減設プログラム290は、PGの情報及びプール400の情報も合わせて受領する。
容量減設プログラム290は、容量減設指示を受領したか否かを判定する(S101)。容量増設と容量減設とでは処理が異なるためである。
以下、容量減設指示を受領した場合(S101:YES)について説明する。
容量増減設プログラム290は、指示されたPG401に格納済みであるデータを、他のPG401の空き領域に移動する(S102)。なお、他のPG401の空き領域が不足している場合は、エラーを報告して終了してよい。
そして、容量増減設プログラム290は、プールテーブル225を更新する(S103)。ここで、容量増減設プログラム290は、減設対象として指定されたPG401の情報を、プールテーブル225から削除する。
そして、容量増減設プログラム290は、指示されたPG401に属する全てのフラッシュドライブ240(つまり、減設対象のPGに属するフラッシュドライブ)に対して、予備領域320の確保を指示する(S104)。例えば、容量増減設プログラム290は、「20%」の予備領域320を確保する旨を指示する。なお、この指示する値は、もちろん20%以外であってもよい。そして、容量増減設プログラム290は、フラッシュドライブ240からの応答を待つ(S104)。
以下、容量増設指示を受領した場合(S101:NO)について説明する。
容量増減設プログラム290は、指示されたPG401に属するフラッシュドライブ240(つまり、増設対象のPGに属するフラッシュドライブ)に対して、予備領域320の削減を指示する(S105)。例えば、容量増減設プログラム290は、予備領域320を「0%」に削減する旨を指示する。なお、この指示する値は、典型的なフラッシュドライブ240よりも予備領域割合が小さくなるどのような値であってよい。そして、容量増減設プログラム290は、フラッシュドライブ240からの応答を待つ(S105)。
以下、予備領域変更プログラム247の処理を説明する。
予備領域変更プログラム247は、容量増減設プログラム290からステップS104又はS105の指示を受領すると(S106)、予備領域割合320を、その受領した指示の割合に変更する(S107)。すなわち、フラッシュドライブ240の予備領域比率テーブル249を変更する。
そして、予備領域変更プログラム247は、容量増減設プログラム290に完了を報告し(S108)、処理を終了する(S109)。
この処理以降、フラッシュドライブ240は、容量の問い合わせに対する回答を変更する。すなわち、フラッシュドライブ240は、容量の問い合わせを受領すると、フラッシュ容量281と予備領域比率テーブル249とからユーザ領域のサイズを算出し、その算出結果を回答する。つまり、ステップS107で実行された備領域比率の変更内容によって、算出結果(回答)は異なり得る。
以下、容量増減設プログラム290の処理を説明する。
容量増減設プログラム290は、対象PG401に属する全てのフラッシュドライブ240から完了の報告を受領すると(S110)、ステップS100で受領した指示が容量減設指示であったか否かを判定する(S111)。
この受領した指示が容量減設指示であった場合(S111:YES)、容量増減設プログラム290は、処理を終了する(S113)。
この受領した指示が容量増設指示であった場合(S110:NO)、容量増減設プログラム290は、プールテーブル225を更新する(S112)。すなわち、容量増減設プログラム290は、増設対象として指定されたPG401の情報を、プールテーブル225に追加する。そして、容量増設指示プログラム290は、処理を終了する(S113)。
プール400に増設されたPG401の領域はプール400として新たに使用される。増設対象のPG401に元々格納されていたデータは維持されなくてよい。
また、プール400から減設されるPG401は別の用途に利用され得る。減設対象のPGに元々格納されていたデータは維持されなくてよい。なぜなら、減設対象のPGに元々格納されていたデータは、S102において、プール400に残っている他のPG401に移動済みだからである。
上述した処理により、容量仮想化機能の環境でフラッシュドライブ240内の予備領域320を削減することができる。これにより、容量仮想化機能の環境において過剰に空き領域が確保されてしまう課題を改善することができる。
容量仮想化機能においては、プール内の未割り当てページと割り当て済みページ内の未ライト領域の合計が空き領域となる。よって、容量仮想化機能の環境では、十分な空き領域が確保済みであることが多いため、フラッシュドライブ240の予備領域320を削減することができる。
しかし、容量仮想化機能における空き領域が特定のフラッシュドライブ240やPG401に偏っている場合、一部のフラッシュドライブ240の空き領域が20%以下となる可能性がある。この場合、当該フラッシュドライブ240の寿命が短くなってしまう。
そこで、実施例2では、プール400の空き領域を各フラッシュドライブ240に分散する方法を説明する。
図14は、実施例2の概要を説明するための図である。
図14の例では、容量仮想化機能のページ402をPG1からPG2へ移動させることにより、PG1に属するフラッシュドライブ240に必要な空き領域を確保している。
各PG401の空き領域の割合が同程度になるように、ページ402を移動させてもよい。
また、各フラッシュドライブ240の空き領域の割合が所定の閾値以下になった場合に、ページ402を移動させてもよい。例えば、空き領域の割合が20%以下となった場合、空き領域の割合が20%以上となるように、ページ402を移動させてよい。これによれば、空き領域の割合が40%や50%など偏っている場合であってもページ402の移動が発生しないため、ページ402の移動による寿命の消費を抑制することができる。
図14の例では、PG1およびPG2は、それぞれ、3つのフラッシュドライブ240から構成されている。
PG1に属する3つのフラッシュドライブ240の空き領域の割合は、それぞれ、10%、30%、30%である。PG2に属する3つのフラッシュドライブ240の空き領域の割合は、それぞれ、30%、50%、60%である。すなわち、PG1の空き領域の割合がPG2の空き領域の割合よりも小さい状態である。
ここで、ページ402をPG1からPG2へ移動させると、PG1に属する3つのフラッシュドライブ240の空き領域の割合は、それぞれ、20%、40%、40%に変わる。また、PG2に属する3つのフラッシュドライブ240の空き領域の割合は、それぞれ、20%、40%、50%に変わる。すなわち、PG1の空き領域の割合とPG2の空き領域の割合との差が小さくなっている。なお、移動させるページ402は、1つであっても良いし、複数であってもよい。
図15は、空き領域チェックプログラム291の処理の例を示すフローチャートである。
空き領域チェックプログラム291は、各フラッシュデバイス240の空き領域の割合をチェックして、PG間で空き領域の割合に差があれば、空き領域の割合を調整するプログラムである。空き領域チェックプログラム291は、ストレージシステム200の制御情報部221に格納され、ストレージシステム200のプロセッサ211によって実行されてよい。以下、処理の詳細を説明する。
空き領域チェックプログラム291は、プール400に属する全フラッシュドライブ240に対して、空き領域の割合を問い合わせる(S202)。フラッシュドライブ240に問い合わせることにより、空き領域チェックプログラム291は、割り当て済みページ内の未ライト領域を考慮した、より正確な空き領域サイズを取得することができる。なお、ページテーブル226において、割り当て済みページ内の未ライト領域を管理してもよい。当該管理は、8バイト毎にライト済みか否かを示す1ビットの情報が対応付けられているライト済みビットマップ情報によって管理されてよい。
次に、空き領域チェックプログラム291は、各PG401の空き領域の割合を計算する(S203)。
PG401の空き領域の割合は、PG401を構成する各フラッシュドライブ240の内の最小の空き領域の割合として定義されてよい。
ページ402の移動の目的は、空き領域の割合の少ないフラッシュドライブ240の空き領域の割合を増やすことである。したがって、PG401を構成する各フラッシュドライブ240の内、最小の空き領域の割合のフラッシュドライブ240をページ402の移動元としてよい。また、PG401を構成する各フラッシュドライブ240の内、最大の空き領域の割合のフラッシュドライブ240をページ402の移動先としてよい。
なお、PG401を構成するフラッシュドライブ240間の空き領域の割合の偏りを解消することにより、最小の空き領域の割合のフラッシュドライブ240の空き領域の割合を増やすことができる。このPG内における空き領域の割合の調整については後述する。なお、PG間における空き領域の割合の調整であっても、プール400に十分な空き領域があれば、最小の空き領域の割合のフラッシュドライブ240に合わせて調整する際に、各フラッシュドライブ240に十分な空き領域を確保することができる。
次に、空き領域チェックプログラム291は、PG401間の空き領域の割合の差が所定の閾値以上であるか否かを判定する(S204)。
ステップS204の判定結果が否定的(NO)な場合、空き領域チェックプログラム291は、ステップS205をスキップし、ステップS206へ進む。
ステップS204の判定結果が肯定的(YES)な場合、空き領域チェックプログラム291は、空き領域の割合を調整するためにページ移動プログラム292を実行し(S205)、ステップS206へ進む。
ステップS206において、空き領域チェックプログラム291は、空き領域の割合の平均が所定の割合(例えば20%)以下であるか否かを判定する(S206)。
ステップS206の判定結果が肯定的(YES)な場合、空き領域チェックプログラム291は、容量追加が必要である旨を管理者に伝えるためのアラートを挙げ(S207)、処理を終了する(S208)。
ステップS206の判定結果が否定的(NO)な場合、空き領域チェックプログラム291は、ステップS207をスキップし、処理を終了する(S208)。
図16は、ページ移動プログラム292の処理の例を示すフローチャートである。
ページ移動プログラム292は、ページ402を移動させることで、PG401間の空き領域の割合の偏りを解消する。ページ移動プログラム292は、ストレージシステム200の制御情報部221に格納され、ストレージシステム200のプロセッサ211によって実行されてよい。以下、処理の詳細を説明する。
ページ移動プログラム292は、各PG401の空き領域の割合の平均値を計算する(S300)。この平均値は、空き領域の割合の調整における目標となる。
ページ移動プログラム292は、空き領域の割合が平均値以下のPGを選択し、平均値にするために必要なデータ移動量を計算する(S301)。
必要なデータ移動量は、例えば、「フラッシュドライブの容量÷100(%)×(平均値-空き領域の割合)」として計算されてよい。
ページ移動プログラム292は、空き領域の割合が平均値以上のPGについて、受入可能量を計算する(S302)。
受入可能量とは、コピー先のPGにおいて、コピー元のPG401からデータ移動を受け入れたとしても、空き領域の割合が平均値以上となる量である。
受入可能量は、例えば、「フラッシュドライブの容量÷100(%)×(空き領域の割合-平均値)」として計算されてよい。
なお、ステップS302の前に、空き領域の割合が平均値以上のPGが存在するか否かを判定するステップを追加し、当該ステップにおける判定結果が否定的な場合、ページ移動プログラム292は、本処理を終了してもよい。
次に、ページ移動プログラム292は、移動先のPG401とデータ移動量とを決定し(S303)、移動ページ選択プログラム293をコールする(S304)。
ページ移動プログラム292は、受入可能量が最大のPG401を、移動先のPGに選択してよい。ページ移動プログラム292は、必要なデータ移動量と受入可能量の何れか小さい方をデータ移動量としてよい。
ページ移動プログラム292は、移動元のPG401の移動対象のページ402のデータを、移動先のPG401へコピーする。このコピー処理に伴い、ボリュームテーブル227のページ番号566、及び、ページテーブル226の状態522が更新される(S305)。テーブルが更新された後のI/Oは、移行先のページ402に対して行われる。
ページ移動プログラム292は、移動対象のページ402に対応するアドレスのUNMAP指示を、移動元のPG401のフラッシュドライブ240に対して発行する(S306)。このUNMAP指示を受領したフラッシュドライブ240は、フラッシュドライブ240内の論理物理変換テーブル282を更新し、コピーされたデータが格納されている領域を解放する。このUNMAPは、フラッシュドライブ240が領域を解放するために必要な処理である。
ページ移動プログラム292は、移動済みデータ量が必要なデータ移動量以上となったか否かを判定する(S307)。
ステップS307の判定結果が否定的(NO)な場合、ページ移動プログラム292は、ステップS302へ戻り、処理を続ける。このとき、ページ移動プログラム292は、移動先のPG401の受入可能量が必要なデータ移動量より小さい場合、2回目のループでは、別のPG401を移動先に選択して、ページ402を移動させてもよい。
移動済みデータ量は、「ページ数×ページサイズ÷PG内フラッシュドライブ数」として計算されてもよい。移動対象のページ402内に未ライト領域が存在する場合、移動済みデータ量は、上記の計算結果よりも小さくなる場合がある。しかし、空き領域チェックプログラム291を定期的に実行することによって空き領域の割合は平均値に近づくので、この未ライト領域の影響については考慮しなくてもよい。
なお、ページ移動プログラム292は、移動対象のページを選択したとき、PG401内で空き領域の割合が最小のPG401からのデータ移動量をできるだけ正確にチェックしてもよい。そして、ページ移動プログラム292は、PG401内で空き領域の割合が最小のPG401からのデータ移動量が所定の閾値以下の場合、別のページ401を移動対象に選択し直してよい。なお、この処理は、データの中身をチェックするためのオーバヘッドを発生させ得る。
ステップS307の判定結果が肯定的(YES)な場合、ページ移動プログラム292は、移動対象の全てのPG401について処理を完了したか否かを判定する(S308)。これは、空き領域の割合が平均値以下であった別のPG401を処理するためのステップである。
ステップS308の判定結果が否定的(NO)な場合、ページ移動プログラム292は、ステップS301に戻り、別のPG401について、ステップS301からS307の処理を実行する。
ステップS308の判定結果が肯定的(YES)な場合、ページ移動プログラム292は、処理を終了する(S309)。
図17は、移動ページ選択プログラム293の処理の例を示すフローチャートである。
移動ページ選択プログラム293は、ページ移動プログラム292からコールされ、移動対象のページ402を選択する。フラッシュドライブ240には、圧縮機能を有するものが存在する。効果的に圧縮されているデータが、圧縮機能を有するフラッシュドライブ240から圧縮機能を有さないフラッシュドライブ240へ移動すると、圧縮データが伸張され、フラッシュドライブ240の消費量が増加する。すなわち、プール400の残容量が減少する。
そこで、移動データ選択プログラム293は、圧縮機能の有無を考慮して、移動対象のページ402を選択する。移動ページ選択プログラム293は、ストレージシステム200の制御情報部221に格納され、ストレージシステム200のプロセッサ211によって実行されてよい。以下、処理の詳細を説明する。
移動ページ選択プログラム293は、移動元及び移動先のフラッシュドライブ240のそれぞれについて、圧縮機能を有しているか否かを判定する(ステップS400)。
移動元が圧縮機能を有さず、移動先が圧縮機能を有する場合(S400:元;無し、先;有り)、移動ページ選択プログラム293は、圧縮効果の高いデータが格納されているページ402を、移動対象のページに選択し(S403)、ステップS404へ進む。
移動元が圧縮機能を有し、移動先が圧縮機能を有さない場合(S400:元;有り、先;無し)、移動ページ選択プログラム293は、圧縮効果の低いデータが格納されているページ402を、移動対象のページに選択し(S401)、ステップS404へ進む。
それ以外の場合(S400:その他)、移動ページ選択プログラム293は、移動対象のページをランダムに選択し(S402)、ステップS404へ進む。
ステップS404において、移動ページ選択プログラム293は、移動対象のページ402を、コール元に報告し、処理を終了する(S404)。
上述の処理によれば、ページ402の移動効率が向上する。しかし、当該処理は必須ではない。
なお、図16及び図17の例では、移動先PGが選択された後に、移動対象のページ402が選択されているが、移動対象のページ402が選択された後に、移動先PGが選択されてもよい。このとき、移動対象に選択されたページ402のデータが圧縮効果の高いものである場合、圧縮機能を有するPG401が優先的に移動先PGに選択されてもよい。反対に、移動対象に選択されたページ402のデータが圧縮効果の低いものである場合、圧縮機能を有さないPG401が優先的に移動先PGに選択されてもよい。
また、図15及び16の例では、PG間の空き領域の割合が同等になるようにページ移動が行われているが、空き領域の割合が閾値以下となった場合にのみ、PG401から空き領域の割合が閾値以上のPG401に対してページ移動が行われてもよい。
例えば、空き領域の割合が80%と空き領域の割合が90%の2つのPG401がある場合、図15及び16の例では、各PG401の空き領域の割合は85%に調整される。しかし、元々の80%は十分な空き領域の割合であるため、ページ移動は行われなくてもよい。
例えば、フラッシュドライブの予備領域割合と同じ割合が設定されてもよい。次に、この方式を実現する際に、図15及び16のフローチャートにおいて処理が異なるステップについて説明する。
図15のステップS204において、空き領域チェックプログラム291は、空き領域の割合が閾値未満のPGが存在するか否かを判定し、当該判定結果が肯定的な場合、ステップS205へ進み、否定的な場合、ステップS206へ進む。その他のステップにおける処理については、同様である。
そして、図16のステップS300の処理を削除する。そして、図16のステップS301の処理において、ページ移動プログラム292は、空き領域の割合が20%以下のPGを選択し、空き領域の割合を20%以上にするために必要なデータ移動量を計算する。次に、ステップS302において、ページ移動プログラム292は、空き領域の割合が20%以上のPGの受入可能量を計算する。この場合の受入可能量は、例えば、移動元PG401からデータ移動を受け入れたとしても、空き領域の割合が20%以上となる量である。
次に、ページ移動プログラム292は、移動先PGが存在するか否かを判定し、当該判定結果が否定的な場合、処理を終了し(S309)、肯定的な場合、ステップS303へ進む。ステップS303からS308の処理については同様であってよい。
上述では、PG401間でページ402を移動することにより、各フラッシュデバイス240に空き領域を確保する方式を説明した。次に、1つのPG401内でデータを移動することにより、各フラッシュデバイス240に空き領域を確保する方式を説明する。この方式によれば、PG401を1つしか搭載しないストレージシステムにおいても、各フラッシュドライブ240に空き領域を分散することができる。
図18は、PG401内でデータを移動する方式の概要を示す。
図18は、1つのPG401に3つのフラッシュドライブ240が存在し、ページ402が3つのフラッシュドライブ240に跨っている例である。なお、図18には示さないが、他のページ402も3つのフラッシュドライブ402に跨っていてよい。図18の例では、ページ402内において、フラッシュドライブAの領域のデータを、フラッシュドライブBの領域へ移動している。これにより、フラッシュドライブAのデータ量を減らすことができる。なお、フラッシュドライブAの領域のデータを、フラッシュドライブBの別のページ402に移動してもよい。
図19は、ボリュームテーブル227aの別の一例を示す。
例えば、ページ402をより小さい領域に分割し、当該分割した領域と、対応するボリューム403の領域とを管理することにより、PG401内でのデータ移動を実現することができる。本実施例では、分割した領域をセグメントと呼ぶ。
図19は、セグメントに対応するボリュームテーブル227aの例である。セグメントに対応するボリュームテーブルのレコードは、図10のボリュームテーブルと比べて、セグメントアドレス568を新規フィールド値として有する。
図19のボリュームテーブル227は、ボリューム番号560「0」のアドレス562「0~24575999」が、ページ番号566「0」に対応しており、8キロバイト単位に分割されていることを示す。セグメントサイズが8キロバイトであり、セグメントアドレス568によってページ内のオフセットを管理する。このセグメントアドレス568は、ページテーブルでは、ドライブ番号の小さいドライブの小さいアドレスから順番に対応付けられてよい。これにより、セグメントが、ページテーブルの何れのアドレスと対応するのかを計算することができる。
ストレージシステム200に重複排除などのデータ量削減機能を適用する場合、ボリューム403内の重複排除単位に対応する領域を示すポインタが必要となる。重複排除単位をセグメント単位とすると、図19の例のテーブル構造と同様となる。よって、データ量削減機能を適用している場合、データ量削減機能のテーブル構造を活用し、PG401内でデータを移動することができる。さらに、セグメントの使用中、及び、未使用を管理する必要もある。これは、前述のライト済みビットマップ情報を用いることで実現可能である。
図20は、PG内データ移動プログラム295の処理の例を示すフローチャートである。
PG内データ移動プログラム295は、PG401内でデータを移動し、PG401内の空き領域の割合の偏りを解消する。PG内データ移動プログラム295は、ストレージシステム200の制御情報部221に格納され、ストレージシステム200のプロセッサ211によって実行されてよい。以下、処理の詳細を説明する。
PG内データ移動プログラム295は、容量プール400に属する全フラッシュドライブ240に対して、空き領域の割合を問い合わせる(S500)。
次に、PG内データ移動プログラム295は、PG401を1つ選択する(S501)。そして、PG内データ移動プログラム295は、その選択したPG401内のフラッシュデバイス240の空き領域の割合の差が所定の閾値以上であるか否かを判定する(S502)。
ステップS502の判定結果が否定的(NO)な場合、PG内データ移動プログラム295は、ステップS507へ進む。すなわち、空き領域の割合の偏りが十分に小さいので、データ移動は不要と判断する。
ステップS502の判定結果が肯定的(YES)な場合、PG内データ移動プログラム295は、PG401内の平均のデータ量を算出する(S503)。
そして、PG内データ移動プログラム295は、その算出した平均のデータ量以上のデータ量を格納しているフラッシュドライブ240から、その算出した平均のデータ量未満のデータ量を格納しているフラッシュドライブ240へ、データをコピーする(S504)。例えば、PG内データ移動プログラム295は、コピー先のフラッシュドライブ240の同一ページに空きセグメントが存在する場合、その空きセグメントにデータをコピーする。PG内データ移動プログラム295は、ライト済みビットマップ情報からセグメントの空き状況を取得してよい。
PG内データ移動プログラム295は、コピー先のフラッシュドライブ240の同一ページに空きセグメントが存在しない場合、空きセグメントを有する別ページ402を探索し、その別ページ402にデータをコピーする。
PG内データ移動プログラム295は、ボリュームテーブル227aおよびページテーブル226を更新する(S505)。すなわち、PG内データ移動プログラム295は、ボリュームテーブル227aにおいて、ページ番号566及びセグメントアドレス568を変更する。PG内データ移動プログラム295は、ページテーブル226において、コピー元のライト済みビットマップ情報をオフし、コピー先のライト済みビットマップ情報をオンする。データを異なるページ402に移動することにより、移動元ページ401に有効データが存在しなくなり移動元ページ401を解放できる可能性がある。その場合は、PG内データ移動プログラム295は、ページテーブル226において、ページ402の状態522を「未割り当て」に変更する。
データコピーを完了後、PG内データ移動プログラム295は、コピー元の領域に対してUNMAP指示を発行し、フラッシュドライブ240の領域を解放する(S506)。そして、PG401内データ移動プログラム295は、ステップS507へ進む。
ステップS507において、PG内データ移動プログラム295は、全てのPG401についての処理を完了したか否かを判定し、当該判定結果が肯定的(YES)ならば、本処理を終了し(S508)、否定的(NO)ならば、ステップS501へ戻る。
図18~20では、PG401内で空き領域を調整する処理について説明した。この処理は、PG401間のページ移動によって空き領域を調整する処理とは独立している。したがって、PG401内で空き領域を調整し、さらに、PG401間で空き領域を調整することもできる。例えば、PG401内で空き領域を均等化したとしても十分な空き領域を確保できない場合、PG401間で空き領域を調整してもよい。
図18~20の方式は、ページ402が存在しない構成に対しても適用することができる。例えば、図19のセグメント部分に、フラッシュドライブ240の論理アドレスを示す情報を格納することによって可能となる。この場合は、ステップS505のページテーブル226を更新する処理は不要である
本実施例では、容量仮想化機能の環境において、フラッシュドライブ240内の予備領域320を削減する。そして、容量仮想化機能の未割り当てページ402及び割り当て済みページ内の未ライト領域からなる空き領域を、各フラッシュドライブ240に分散配置する。これにより、各フラッシュドライブ240に空き領域を確保する。容量仮想化機能では、未割り当てページの容量の割合が閾値(例えば20%)以下になると、容量追加のアラートが挙がる。しかし、このアラートに従わず容量を追加しない場合、フラッシュドライブ240の空き領域が不足する。
そこで、図21を用いて、ガベージコレクション処理によって空き領域を確保する処理について説明する。ガベージコレクション処理は、有効データおよび無効データが混在する複数のページ402から有効データを別のページに移動し、空き領域を増やす処理である。ストレージシステムが圧縮機能などのデータ量削減機能を行う場合、ログストラクチャ構造でデータが格納されてよい。ストレージシステムでは、このような場合にガベージコレクション処理が必要となる。
例えば、2つのページ402のそれぞれに有効データが50%格納されている場合、それらの有効データを別の1つのページ402に移動させる。そして、これら2つのページ402を解放する。これにより、1ページ分の空き領域を増やすことができる。この1ページ分の空き領域をユーザ領域とせず、容量仮想化機能が内部的に保持することにより、空き領域を増やすことができる。
図21は、ガベージコレクションプログラム294の処理の一例を示すフローチャートである。
ガベージコレクションプログラム294は、ストレージシステム200の制御情報部221に格納され、ストレージシステム200のプロセッサ211によって実行されてよい。以下、処理の詳細を説明する。
ガベージコレクションプログラム294は、無効データの割合が所定の閾値以上である複数のページ402を探索する(S600)。この処理は、前述のライト済みビットマップ情報を用いて実現されてよい。
ガベージコレクションプログラム294は、その探索により発見した複数のページ402内の有効データの合計量を算出し、その有効データの合計量を格納可能な新規ページを割り当てる(S601)。
ガベージコレクションプログラム294は、その発見した複数のページ402内の有効データを、ステップS601で割り当てた新規ページ402に移動させる(S602)。
ガベージコレクションプログラム294は、空き領域の割合が所定の閾値未満であるか否かを判定する(S603)。当該判定結果が否定的(S603:NO)な場合、ガベージコレクションプログラム294は、本処理を終了する(S605)。まだ空き領域が十分に存在しているからである。当該判定結果が肯定的(S603:YES)な場合、ガベージコレクションプログラム294は、その発見したページ402を「未割り当て」の状態に変更し(S604)、本処理を終了する(S605)。これにより空き領域の割合が増加する。
図21では、空き領域が不足した場合に、ガベージコレクション処理に合わせて空き領域を確保する方法を説明した。なお、記憶メディア階層化機能が適用されている場合、他の方法によって空き領域を確保することができる。
記憶メディア階層化機能は、1つのプールにフラッシュドライブ240やHDDを有する。そして、ページ402に対するアクセス頻度をモニタし、I/O要求が比較的多く比較的高い性能が要求されるページ402を、I/O性能が比較的高いフラッシュドライブ240に格納し、I/O要求が比較的少なく比較的高い性能が要求されないページ402を、I/O性能が比較的低いHDDに格納する。さらに、I/O要求の変動に応じてページを移動させてよい。
記憶メディア階層化機能では、フラッシュドライブ240に、より多くのページを格納することで、I/O性能を最大化することができる。しかし、空き領域が不足し、フラッシュドライブ240の寿命が短くなる可能性がある。
そこで、空き領域を考慮して、記憶メディア階層化機能のページ移動を行う。ページ内のライトデータ未格納領域350では各フラッシュドライブ240に十分な空き領域を確保できない場合は、フラッシュドライブ240からHDDにページを移動させ、フラッシュドライブ240に十分な空き領域を確保できるようにしてよい。さらに、HDDからフラッシュドライブ240へのページ移動を抑制することにより、フラッシュドライブ240における空き領域の不足を抑制してもよい。例えば、ページ内のライトデータ未格納領域350の変化に合わせて、ページ移動が制限されてもよい。
これにより、記憶メディア階層化機能の環境においても、フラッシュドライブ240に十分な空き領域を確保することができる。
従来のRAID技術では、PG内を構成する各ドライブの同一アドレスでパリティを計算する。そして、スペアドライブを搭載しており、PG内のドライブに障害が発生した場合、その障害が発生したドライブに格納されていたデータを、PG内の正常なドライブから抽出してスペアドライブに格納する。したがって、スペアドライブは、障害が発生しない場合、使用されない。
近年、データおよびパリティをシステム内の全ドライブに分散配置するRAID技術が適用されることがある。例えば、あるデータは、ドライブ1、3、5、7にデータとパリティを格納し、別のデータはドライブ1、2、5、6にデータとパリティを格納する。さらに各データとパリティのドライブ上での格納アドレスは、必ずしも同一とは限らない。このような技術を分散RAIDと呼ぶ。分散RAID技術では、各ドライブを一定のサイズに分割し、当該分割された領域を組み合わせてRAIDを適用する。
この場合、スペアドライブの領域も、各ドライブに分散配置することができる。これにより、障害が発生した場合、多数のドライブに分散配置されているデータを並列に読み出し、多数のドライブに分散配置されているスペア領域に対して復旧データを並列に書き込むことができる。この実施例によれば、復旧時間を従来のRAID技術よりも短縮することができる。
システム内の全フラッシュドライブ240にデータを分散配置してもよいし、複数台のフラッシュドライブ240を用いてPGのようにディスクグループを作成し、その作成したディスクグループ内でデータを分散配置してもよい。本実施例は、このような分散RAID環境にも適用可能である。
障害が発生しない限り、スペア領域は使用されない。すなわち、フラッシュドライブ240においてスペア領域は空き領域となる。フラッシュドライブ240において、予備領域とスペア領域の両方を確保しておくことは、過剰に空き領域を確保することになる。そこで、本実施例では、プールにPGが増設されたとき、スペア領域に相当するサイズをフラッシュドライブの予備領域から削減してよい。これにより、過剰な空き領域が確保されることを抑制することができる。また、プールからPGが減設されたとき、フラッシュドライブ240の予備領域を、スペア領域に相当するサイズ分、拡張してよい。
以上、本発明の実施例を説明したが、本発明は、この実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
200:ストレージシステム 211:プロセッサ 240:フラッシュドライブ 310:ユーザ領域 320:予備領域 400:プール 401:パリティグループ(PG) 402:ページ 403:仮想ボリューム
Claims (12)
- プロセッサと、複数のフラッシュドライブとを備え、
前記複数のフラッシュドライブは、データを記憶するユーザ領域と予備領域とを有し、
前記プロセッサは、
前記複数のフラッシュドライブから1または複数のディスクグループを構成し、
前記ディスクグループから構成されるプールを管理し、
前記プール上の記憶領域であるページが割り当てられる仮想ボリュームを提供し、
前記プロセッサは、前記1または複数のディスクグループのうち第1のディスクグループが前記プールに増設または減設されるとき、前記第1のディスクグループを構成するフラッシュドライブの前記予備領域の容量を調整する
情報処理システム。 - 前記プロセッサは、前記プールに前記第1のディスクグループに増設するとき、前記第1のディスクグループを構成するフラッシュドライブの前記予備領域の容量を減らす
請求項1に記載の情報処理システム。 - 前記プロセッサは、前記プールから前記第1のディスクドライブを減設するとき、前記第1のディスクグループを構成するフラッシュドライブの前記予備領域の容量を増やす
請求項1に記載の情報処理システム。 - 前記プロセッサは、前記プールに属する複数のディスクグループのうち、空き領域の割合の差分が所定の閾値以上となる2つ以上のディスクグループ間において、空き領域の割合の小さいディスクグループに格納されているデータを、空き領域の割合の大きいディスクグループに移動させる
請求項1に記載の情報処理システム。 - 前記ディスクグループの空き領域の割合とは、前記ディスクグループに属する各フラッシュドライブの空き領域の割合のうち、最小の空き領域の割合である
請求項4に記載の情報処理システム。 - 前記プロセッサは、前記プールに属する各ディスクグループの空き領域の割合の平均値に基づいて、前記ディスクグループ間のデータの移動量を算出する
請求項4に記載の情報処理システム。 - 前記プロセッサは、
移動対象のデータが格納されているフラッシュドライブがデータ圧縮機能を有しており、データの移動先のフラッシュドライブがデータ圧縮機能を有していない場合、圧縮効果の小さいデータを移動対象に選択し、
移動対象のデータが格納されているフラッシュドライブがデータ圧縮機能を有しておらず、データの移動先のフラッシュドライブがデータ圧縮機能を有している場合、圧縮効果の大きいデータを移動対象に選択する
請求項4に記載の情報処理システム。 - 前記ディスクグループは複数のフラッシュドライブによるRAID構成であり、
前記プールは複数のページから構成されており、
前記仮想ボリュームのアドレスと前記プールのページとが対応付けられており、
前記プロセッサは、ディスクグループ間でデータを移動させたとき、前記仮想ボリュームのアドレスとの対応付けを、移動元のデータを含むページから、移動先のデータを含むページに切り替える
請求項4に記載の情報処理システム。 - 前記プロセッサは、ディスクグループに属する複数のフラッシュドライブのうち、空き領域の割合の差分が所定の閾値以上となる2つ以上のフラッシュドライブ間において、空き領域の割合の小さいフラッシュドライブに格納されているデータを、空き領域の割合の大きいフラッシュドライブに移動させる
請求項5に記載の情報処理システム。 - 前記プロセッサは、前記ディスクグループに属する各フラッシュドライブの空き領域の割合の平均値に基づいて、前記フラッシュドライブ間のデータの移動量を算出する
請求項9に記載の情報処理システム。 - 前記プロセッサは、前記ディスクグループ内に空き領域の割合が所定の閾値未満のフラッシュドライブが存在しない場合、少なくとも1つのフラッシュドライブに対してガベージコレクションを実行する
請求項9に記載の情報処理システム。 - 複数のフラッシュドライブは、データを記憶するユーザ領域と予備領域とを有するフラッシュドライブへのデータ格納を制御する記憶制御方法であって、
前記複数のフラッシュドライブから1または複数のディスクグループを構成し、
前記ディスクグループから構成されるプールを管理し、
前記プール上の記憶領域であるページが割り当てられる仮想ボリュームを提供し、
前記1または複数のディスクグループのうち第1のディスクグループが前記プールに増設または減設されるとき、前記第1のディスクグループを構成するフラッシュドライブの前記予備領域の容量を調整する
記憶制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/088031 WO2018116392A1 (ja) | 2016-12-21 | 2016-12-21 | 情報処理システム、及び、情報処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/088031 WO2018116392A1 (ja) | 2016-12-21 | 2016-12-21 | 情報処理システム、及び、情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018116392A1 true WO2018116392A1 (ja) | 2018-06-28 |
Family
ID=62626043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2016/088031 WO2018116392A1 (ja) | 2016-12-21 | 2016-12-21 | 情報処理システム、及び、情報処理方法 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2018116392A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010033261A (ja) * | 2008-07-28 | 2010-02-12 | Hitachi Ltd | ストレージ装置及びその制御方法 |
WO2015052811A1 (ja) * | 2013-10-10 | 2015-04-16 | 株式会社日立製作所 | ストレージシステムおよびデータ記憶方法 |
JP2016012287A (ja) * | 2014-06-30 | 2016-01-21 | 富士通株式会社 | ストレージ制御装置、およびストレージ制御プログラム |
JP2016503925A (ja) * | 2013-09-24 | 2016-02-08 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データマイグレーション方法、データマイグレーション装置及びストレージデバイス |
-
2016
- 2016-12-21 WO PCT/JP2016/088031 patent/WO2018116392A1/ja active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010033261A (ja) * | 2008-07-28 | 2010-02-12 | Hitachi Ltd | ストレージ装置及びその制御方法 |
JP2016503925A (ja) * | 2013-09-24 | 2016-02-08 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データマイグレーション方法、データマイグレーション装置及びストレージデバイス |
WO2015052811A1 (ja) * | 2013-10-10 | 2015-04-16 | 株式会社日立製作所 | ストレージシステムおよびデータ記憶方法 |
JP2016012287A (ja) * | 2014-06-30 | 2016-01-21 | 富士通株式会社 | ストレージ制御装置、およびストレージ制御プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11487619B2 (en) | Distributed storage system | |
US8447946B2 (en) | Storage apparatus and hierarchical data management method for storage apparatus | |
JP5124551B2 (ja) | ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法 | |
US8762639B2 (en) | Storage system, storage apparatus, and optimization method of storage areas of storage system | |
JP5792313B2 (ja) | ストレージシステム | |
US8612704B2 (en) | Storage system with virtual areas and method for managing storage system | |
US9400618B2 (en) | Real page migration in a storage system comprising a plurality of flash packages | |
JP4684864B2 (ja) | 記憶装置システム及び記憶制御方法 | |
US10168945B2 (en) | Storage apparatus and storage system | |
JP2011108258A (ja) | 仮想ディスク・ドライブのシステムおよび方法 | |
US20180275894A1 (en) | Storage system | |
WO2018142622A1 (ja) | 計算機 | |
WO2018116392A1 (ja) | 情報処理システム、及び、情報処理方法 | |
WO2019026221A1 (ja) | ストレージシステム及びストレージ制御方法 | |
JP5768118B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム | |
JP6605762B2 (ja) | 記憶ドライブの故障により消失したデータを復元する装置 | |
JP2015201231A (ja) | 複数のフラッシュパッケージを有するストレージシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16924842 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 16924842 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |