US10846023B2 - Storage device and storage area management method for reducing garbage collection processing - Google Patents
Storage device and storage area management method for reducing garbage collection processing Download PDFInfo
- Publication number
- US10846023B2 US10846023B2 US16/330,944 US201716330944A US10846023B2 US 10846023 B2 US10846023 B2 US 10846023B2 US 201716330944 A US201716330944 A US 201716330944A US 10846023 B2 US10846023 B2 US 10846023B2
- Authority
- US
- United States
- Prior art keywords
- pool
- new data
- size
- compressed
- garbage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Definitions
- the present invention relates generally to storage area management.
- a storage device which allocates a real area (logical storage area) from a pool (real area group) to a write destination virtual area (logical address range) in a virtual volume (logical address space) and writes data in the real area, has been known.
- the data written in the real area is written in a physical storage area allocated to the real area. If the real area is allocated to the write destination virtual area, the storage device performs overwriting write processing, that is, overwrites new data (data to be written this time) over old data (data to be written last time).
- Patent Document 1 discloses a technique of enabling the garbage to be free capacity by executing garbage collection processing (hereinafter referred to as GC processing) when a certain amount of garbage is accumulated.
- the GC processing requires overhead.
- the size of the compressed new data is equal to or smaller than the size of the allocated real area, the compressed new data can be overwritten to the allocated real area, thereby avoiding generation of garbage.
- the generation of garbage cannot be reliably avoided since the size of the new data after compression is determined by attributes of the new data and a compression method (for example, compression algorithm).
- a storage device determines whether or not a size of the compressed new data is larger than a size of the allocated real area. In a case where the determination result is true, the storage device determines whether or not there is one or more real areas having a size equal to or larger than the size of the compressed new data and including a garbage area that is a real area serving as garbage. In a case where the determination result is true, the storage device selects the one or more real areas including the garbage area, allocates, instead of the allocated real area, the selected one or more real areas to the write destination virtual area, and manages the allocated real area as a garbage area.
- the data is compressed and then stored in the real area, and even in a case where the size of the compressed new data exceeds the size of the allocated real area, a possibility of increasing the garbage area can be reduced.
- FIG. 1 is a schematic diagram showing an overview of an example of an overwriting write processing according to a first embodiment, which is performed when a size of compressed new data exceeds a size of an allocated sub-pool page.
- FIG. 2 shows a configuration example of a computer system according to the first embodiment.
- FIG. 3 shows an example of programs and management information of a storage system.
- FIG. 4 shows a configuration example of a virtual volume table.
- FIG. 5 shows a configuration example of a pool management table.
- FIG. 6 shows a configuration example of a pool volume table.
- FIG. 7 shows an example of storage hierarchies in the storage system.
- FIG. 8 shows a first example of a relationship between a pool and a pool volume.
- FIG. 9 shows a second example of the relationship between the pool and the pool volume.
- FIG. 10 is a flowchart of a write processing.
- FIG. 11 is a flowchart of a sub-pool page selection processing according to the first embodiment.
- FIG. 12 is a flowchart of a sub-pool page selection processing according to a second embodiment.
- FIG. 13 is a flowchart of a sub-pool page selection processing according to a third embodiment.
- FIG. 14 is a schematic diagram showing an overview of an example of the overwriting write processing when the size of the compressed new data is equal to or smaller than the size of the allocated sub-pool page.
- FIG. 15 is a schematic diagram showing an overview of an example of the overwriting write processing when the size of the compressed new data exceeds the size of the allocated sub-pool page.
- FIG. 16 is a schematic diagram showing an overview of an example of an overwriting write processing according to a comparative example, which is performed when the size of the compressed new data exceeds the size of the allocated sub-pool page.
- aaa table or “aaa queue”
- various information may also be expressed by a data structure other than a table or a queue.
- the “aaa table” or “aaa queue” may be referred to as “aaa information” to indicate that the information does not depend on the data structure.
- an “interface unit” may include one or more interface devices, specifically, at least one of a user interface unit and a communication interface unit.
- the user interface unit may include at least one I/O device of one or more I/O devices (for example, an input device (such as a keyboard and a pointing device) and an output device (such as a display device) and a display computer.
- the communication interface unit may include one or more communication interface devices.
- One or more communication interface devices may be one or more communication interface devices of the same type (for example, one or more network interface cards (NIC)), or two or more communication interface devices of different types (for example, the NIC and a host bus adapter (HBA)).
- NIC network interface cards
- HBA host bus adapter
- a “storage unit” includes one or more memories. At least one memory of the storage unit may be a volatile memory.
- the storage unit is mainly used during a processing by a processor unit.
- the “processor unit” includes one or more processors. At least one processor is a typical microprocessor such as a central processing unit (CPU). The one or more processors may be single-core or multi-core.
- a processor may include a hardware circuit that performs a part or all of the processing.
- the processor unit may include a hardware circuit (for example, a field-programmable gate array (FPGA) or an application specific integrated circuit (ASIC)) that performs a part or all of the processing.
- FPGA field-programmable gate array
- ASIC application specific integrated circuit
- PDEV refers to a physical storage device, and typically may be a nonvolatile storage device (for example, an auxiliary storage device).
- the PDEV may be, for example, a hard disk drive (HDD) or a solid state drive (SSD). Different types of PDEVs may be mixed in a storage system.
- HDD hard disk drive
- SSD solid state drive
- RAID is an abbreviation for redundant array of independent (or inexpensive) disks.
- RAID group may be a group that includes a plurality of PDEVs and stores data according to an associated RAID level (RAID configuration), or may be a group that includes a plurality of physical storage areas and stores data according to the associated RAID level (RAID configuration).
- the storage device is the storage system having one or more PDEVs
- a PDEV can also be adopted as an example of the storage device.
- the storage device is a PDEV (for example, a flash memory device)
- the storage device includes one or more physical storage media (for example, flash memory chips) and a controller used to control I/O for the one or more physical storage media.
- the PDEV and the physical storage media is an example of a physical storage resource.
- a storage system 30 includes one or more PDEVs 34 and a controller 31 that controls data input/output (I/O) for the one or more PDEVs 34 .
- the controller 31 is configured to compress and decompress data.
- the controller 31 manages one or more pools 600 .
- the pool 600 is a logical storage space. At least a part of the pool 600 may be based on at least a part of a plurality of PDEVs 34 , and at least a part of the pool 600 may be based on a storage area provided by a storage system (not shown) external to the storage system 30 .
- the pool 600 includes a plurality of sub-pool pages (logical storage areas) 641 having different sizes.
- the controller 31 provides a virtual volume 501 (logical address space) to a higher hierarchy device such as a host computer 10 .
- a virtual volume 501 logical address space
- sub-pool pages 61 - 1 , 61 - 2 and 61 - 3 are respectively allocated to virtual pages (logical address ranges) 52 - 1 , 52 - 2 and 52 - 3 in a virtual volume 501
- compressed old data A, B and C are respectively stored in the sub-pool pages 61 - 1 , 61 - 2 , and 61 - 3 .
- the controller 31 receives a write request of new data D with the virtual page 52 - 1 as a write destination.
- the controller 31 compresses the new data D, and determines whether or not the size of the compressed new data D is equal to or smaller than the size of the sub-pool page 61 - 1 (or the size of compressed old data A stored in the sub-pool page 61 - 1 ) allocated to the write destination virtual page 52 - 1 . If the determination result is true, as shown in FIG. 14 , the controller 31 overwrites the compressed new data D in the allocated sub-pool page 61 - 1 .
- the controller 31 receives a write request of new data E with the virtual page 52 - 1 as the write destination.
- the controller 31 compresses the new data E, and determines whether or not the size of the compressed new data E is equal to or smaller than the size of the sub-pool page 61 - 1 (or the size of the compressed old data A stored in the sub-pool page 61 - 1 ) allocated to the write destination virtual page 52 - 1 . If the determination result is false, as shown in FIG.
- the controller 31 allocates, instead of the sub-pool page 61 - 1 , a sub-pool page 61 - 4 having a larger size to the write destination virtual page 52 - 1 , and writes the compressed new data E in the sub-pool page 61 - 4 .
- the sub-pool page 61 - 1 becomes garbage.
- the garbage is generated in the pool 600 .
- a total amount of the garbage in the pool 600 is suppressed as follows, and as a result, load of a garbage collection processing (GC processing) can be reduced.
- GC processing garbage collection processing
- the controller 31 receives a write request of new data F with the virtual page 52 - 3 as the write destination, as shown in FIG. 1 .
- the controller 31 compresses the new data F, and performs a first determination that whether or not the size of the compressed new data F is equal to or smaller than the size of the sub-pool page 61 - 3 (or the size of compressed old data C stored in the sub-pool page 61 - 3 ) allocated to the write destination virtual page 52 - 3 .
- the controller 31 performs a second determination that whether or not the size of the compressed new data F is equal to or smaller than any garbage (here, the sub-pool page 61 - 1 ) (or the size of the compressed data in the garbage). If the result of the second determination is true, as shown in FIG. 1 , the controller 31 allocates, instead of the sub-pool page 61 - 3 , the garbage sub-pool page 61 - 1 to the write destination virtual page 52 - 3 , and writes the compressed new data F in the allocated sub-pool page 61 - 1 . As a result, although the sub-pool page 61 - 3 becomes garbage, an increase in the number of garbage can be avoided.
- performance of the storage system 30 can be expected to be improved since garbage is used as the write destination of the compressed new data to be overwritten (in other words, since garbage can be reused without performing the GC process in which performance is degraded due to overhead.
- the second determination is not performed. That is, in a case where the result of the first determination is false, instead of the sub-pool page 61 - 3 , a sub-pool page 61 - 5 having a larger size is allocated to the write destination virtual page 52 - 3 , and the compressed new data F is written in the sub-pool page 61 - 5 . As a result, in addition to the sub-pool page 61 - 1 , the sub-pool page 61 - 3 becomes garbage. That is, the number of garbage is increased.
- FIG. 2 shows a configuration example of a computer system according to the present embodiment.
- a computer system 1 includes at least one host computer 10 (such as a general-purpose large-scale computer, a device including a server and a general-purpose hardware component, or a general-purpose server), at least one management device 20 (such as a management computer, a device including a server and a general-purpose hardware component, or a general-purpose server) and the storage system 30 to which these are connected.
- host computer 10 such as a general-purpose large-scale computer, a device including a server and a general-purpose hardware component, or a general-purpose server
- management device 20 such as a management computer, a device including a server and a general-purpose hardware component, or a general-purpose server
- the storage system 30 to which these are connected.
- the host computer 10 accesses a logical storage resource (for example, a logical address space) of the storage system 30 .
- the management device 20 manages configuration of storage areas of the storage system 30 .
- the storage system 30 stores data in the storage areas based on the one or more PDEVs 34 . At least one of the host computer 10 and the management device 20 may be plural.
- the storage system 30 includes the plurality of PDEVs 34 and the controller 31 .
- the controller 31 includes at least one cache memory 32 and at least one shared memory 33 externally. At least one of the cache memory 32 , the shared memory 33 and the controller 31 may be redundant. In addition, hardware configuration inside the controller 31 may also be redundant.
- the controller 31 controls storage of data to the storage areas based on the PDEVs 34 .
- the cache memory 32 temporarily stores data to be read and written from and in the PDEVs 34 .
- the shared memory 33 stores configuration information related to the controller 31 and the PDEVs 34 .
- the PDEV 34 may be any physical storage device, and may be, for example, an HDD or an SSD.
- the controller 31 includes a host adapter 310 , a network adapter 320 , a nonvolatile memory (NVMe) 330 , a memory 350 , a storage adapter 370 , a shared memory adapter 380 , a compression/decompression circuit (C/D) 390 and a processor 360 connected thereto.
- a host adapter 310 the network adapter 320 , the storage adapter 370 and the shared memory adapter 380 is an example of an interface unit.
- At least one of the nonvolatile memory 330 , the memory 350 , the cache memory 32 and the shared memory 33 is an example of a storage unit.
- the processor 360 is an example of a processor unit.
- the host adapter 310 transmits and receives data to and from the host computer 10 via storage area network (SAN) 121 .
- the network adapter 320 transmits and receives data necessary for system management (for example, management information) to and from the host computer 10 or the management device 20 via network 108 (for example, local area network (LAN)).
- system management for example, management information
- network 108 for example, local area network (LAN)
- the nonvolatile memory 330 is configured by, for example, a hard disk or a flash memory, and stores programs to be operated on the controller 31 , configuration information and the like.
- the memory 350 may be a volatile memory such as a random access memory (RAM), and stores programs, data and the like.
- RAM random access memory
- the processor 360 reads a program stored in the nonvolatile memory 330 into the memory 350 , and executes a processing defined by the program.
- the storage adapter 370 transmits and receives data to and from the PDEVs 34 and the cache memory 32 .
- the shared memory adapter 380 transmits and receives data to and from the shared memory 33 .
- the compression/decompression circuit 390 is a hardware circuit, and outputs input data after compression or decompression. At least one of the compression and decompression may be performed by the processor 360 executing a computer program instead of the hardware circuit.
- An external storage system may be connected from the network adapter 320 (or another adapter which is not shown) via the network 121 (or another network). At least a part of storage areas provided from the external storage system may be storage areas of at least a part of the above-described pool 600 .
- the management device 20 may not be connected.
- the storage system 30 may be a computer system including one or more physical computers (for example, general-purpose computers). At least one physical computer may execute a virtual computer (for example, a virtual machine (VM)) or a software-defined anything (SDx). As the SDx, for example, a software defined storage (SDS) (virtual storage system) or a software-defined data center (SDDC) can be adopted. In this case, the host computer 10 may be a virtual computer executed in the computer system.
- VM virtual machine
- SDx software-defined anything
- SDS software defined storage
- SDDC software-defined data center
- FIG. 3 shows an example of programs and management information stored in the storage system 30 .
- the programs and the management information are stored in the memory 350 , for example.
- the programs are executed by the processor 360 .
- the programs include, for example, an I/O processing program 352 and a pool management program 354 .
- the management information includes, for example, a virtual volume table 510 , a pool management table 610 and a pool volume table 660 . At least a part of operation of the controller 31 is controlled by the processor 360 executing the I/O processing program 352 and the pool management program 354 .
- the I/O processing program 352 is a program used to perform a processing related to I/O such as storing compressed data in a page.
- the pool management program 354 is a program used to perform a processing related to pool management such as page selection.
- the virtual volume table 510 is a table that holds information on a virtual volume.
- the pool management table 610 is a table that holds information on the pool 600 .
- the pool volume table 660 is a table that holds information on a pool volume.
- FIG. 4 shows a configuration example of the virtual volume table 510 .
- the virtual volume table 510 includes entries for each virtual page. Each entry stores information including a virtual volume # 511 , a virtual page # 512 , a size after compression 513 , a pool # 514 , a sub-pool # 515 and a sub-pool page # 516 .
- a virtual page a “target virtual page” in the description of FIG. 4 ) is taken as an example.
- the virtual volume # 511 is a number used to identify a virtual volume including the target virtual page.
- the virtual page # 512 is a number used to identify the target virtual page.
- the size after compression 513 indicates a size of compressed data obtained by data to be written being compressed by the compression/decompression circuit 390 .
- An appropriate sub-pool in the pool 600 (described below) can be selected with reference to the size after compression 513 .
- the pool # 514 is a number used to identify a pool including a sub-pool page allocated to the target virtual page.
- the sub-pool # 515 is a number used to identify a sub-pool including a sub-pool page allocated to the target virtual page.
- the sub-pool page # 516 is a number used to identify the sub-pool page allocated to the target virtual page.
- the value of the size after compression 513 , the pool # 514 , the sub-pool # 515 and the sub-pool page # 516 are values indicating that there is no data (for example, “N/A”).
- the virtual volume table 510 may have information indicating whether or not each virtual volume corresponds to compression. Accordingly, a processing can be distinctively performed based on whether a virtual volume unit corresponds to the compression function. For a virtual volume that does not correspond to compression, the controller 31 may write data to a sub-pool page (real page) without compressing the data.
- FIG. 5 shows a configuration example of the pool management table 610 .
- the storage system 30 includes one or more pools, and at least one pool includes a plurality of sub-pools having different sub-pool page sizes. Each sub-pool is a set of a plurality of sub-pool pages having the same sub-pool page size.
- the pool management table 610 includes entries for each sub-pool. Each entry stores information including a pool # 611 , a sub-pool # 612 , a sub-pool page size 613 , a use pointer (pointer to a use page queue) 614 and an unused pointer (a pointer to an unused page queue) 615 .
- one sub-pool (a “target sub-pool” in the description of FIG. 5 ) is taken as an example.
- the pool # 611 is a number used to identify a pool including a target sub-pool.
- the sub-pool # 612 is a number used to identify the target sub-pool.
- the sub-pool page size 613 indicates the size (length) of a sub-pool page in the target sub-pool.
- the use pointer 614 indicates a head address of a queue 620 (hereinafter referred to as a use queue) that manages use sub-pool pages (a sub-pool page allocated to any of the virtual pages) in the target sub-pool.
- the unused pointer 615 indicates a head address of a queue 630 (hereinafter referred to as an unused queue) that manages unused sub-pool pages (a sub-pool page that is not allocated to any of the virtual pages) in the target sub-pool.
- the use queue 620 and the unused queue 630 are used to manage the sub-pool pages (real pages), and management using queues is adopted in the present embodiment. However, the management may also be performed by a method not using a queue.
- the use queue 620 includes entries for each use sub-pool page. Each entry stores information including a sub-pool page # 621 , a pool volume # 622 and a real page # 623 .
- a sub-pool page (a “target use sub-pool page” in the description of FIG. 5 ) will be taken as an example.
- the sub-pool page # 621 is a number used to identify the target use sub-pool page.
- the pool volume # 622 is a number used to identify a pool volume having a real page associated with the target use sub-pool page.
- the real page # 623 is a number used to identify the real page associated with (mapped to) the target use sub-pool page.
- the unused queue 630 includes entries for each unused sub-pool page. Each entry stores information including a sub-pool page # 631 , a pool volume # 632 , a real page # 633 and a garbage flag 634 .
- a sub-pool page # 631 is a number used to identify the target unused sub-pool page.
- the pool volume # 632 is a number used to identify a pool volume having a real page associated with the target unused sub-pool page.
- the real page # 623 is a number used to identify the real page associated with (mapped to) the target unused sub-pool page.
- the garbage flag 634 indicates whether or not the target unused sub-pool page is garbage.
- the target unused sub-pool page that is not garbage is a free sub-pool page.
- the controller 31 updates the garbage flag 634 corresponding to the unused sub-pool page which is garbage from “garbage” (a value that means garbage) to “-” (a value that means free).
- FIG. 6 shows a configuration example of the pool volume table 660 .
- the pool volume table 660 includes entries for each real pool. Each entry stores information including a pool volume # 661 , a real page # 662 , a real page size 663 and a physical address 664 .
- a target real page in the description of FIG. 6 .
- the pool volume # 661 is a number used to identify a pool volume having a target real page.
- the real page # 662 is a number used to identify the target real page.
- the real page size 663 indicates the size of the target real page.
- the size of the target real page and the size of the sub-pool page associated with the target real page are typically the same.
- the physical address 664 indicates an address of a physical storage area (for example, an address of a logical address space provided by the PDEVs 34 ) associated with (mapped to) the target real page.
- FIG. 7 shows an example of storage hierarchies in the storage system 30 .
- the storage areas will be described in order from a lower layer.
- the plurality of PDEVs 34 configures a RAID group 301 .
- a stripe column 307 spans the plurality of PDEVs 34 .
- a virtual device 303 which is a virtual storage resource based on the RAID group 301 is provided with a higher hierarchy than the RAID group 301 .
- the virtual device 303 may be one logical device 306 .
- the logical device will be described as a logical volume.
- the pool 600 is provided with a higher hierarchy than the virtual device 303 .
- the pool 600 includes a plurality of sub-pools 601 (for example, n sub-pools 601 - 1 to 601 - n ).
- Each sub-pool 601 has a plurality of sub-pool pages 61 .
- the length (size) of the sub-pool page 61 is defined for each sub-pool 601 .
- the lengths of all sub-pool pages in one sub-pool 601 are the same.
- the sub-pool pages 641 are associated with real pages 651 of a plurality of pool volumes 650 .
- a combination of the sub-pool page 61 and the real page 651 (or the sub-pool page 61 ) may be an example of a real area.
- the pool volume 650 is associated with any logical volume.
- the pool volume 650 is not associated with a target device specified by the host computer 10 that serves as a higher hierarchy device since the pool volume 650 is an offline volume.
- the pool volume 650 includes a plurality of real pages 651 .
- the real page 651 and the stripe column 307 correspond to each other in a one-to-one way. Data stored in the real page 651 is stored in the stripe column 307 corresponding to the real page 651 .
- One real page 651 may also correspond to a plurality of stripe columns 307 .
- the virtual volume 501 is a logical address space provided to the host computer 10 , that is, an online volume.
- the virtual volume 501 includes a plurality of virtual pages 52 .
- the unused sub-pool page 61 (garbage or free sub-pool page) in the sub-pool 601 of the pool 600 is allocated to the virtual page 52 which is the write destination not allocated with a sub-pool page 61 .
- a target device 316 is provided with a higher hierarchy than the virtual volume 501 .
- One or more target devices 316 are associated with a communication port 314 of a certain communication interface device.
- the virtual volume 501 is associated with the target device 316 .
- FIG. 8 shows a first example of the relationship between the pool 600 and the pool volume 650 .
- the pool volume 650 includes the real pages 651 all having the same size.
- the sub-pool 601 and the pool volume 651 correspond to each other in a one-to-one manner.
- FIG. 9 shows a second example of the relationship between the pool 600 and the pool volume 650 .
- the pool volume 650 includes a plurality of real pages having different sizes.
- the sub-pool 601 and the pool volume 651 correspond in a many-to-many manner.
- FIG. 10 is a flowchart of a write processing performed when a write request is received.
- write destination information including a virtual volume identification number (for example, a logical unit number (LUN)) and a logical address range (for example, a logical block address (LBA) and a data length) is specified.
- the controller 31 specifies a write destination virtual page according to the write destination information (S 410 ).
- the controller 31 refers to the virtual volume table 510 and determines whether or not a sub-pool page is allocated to the write destination virtual page (S 420 ).
- the controller 31 compresses data to be written (data according to the write request) by the compression/decompression circuit 390 .
- the controller 31 stores the compressed data (data after compression by the compression/decompression circuit 390 ) in the cache memory 32 .
- the controller 31 refers to the pool management table 610 and specifies a free sub-pool page having a size equal to or larger than the size of the compressed data.
- the size of the specified free sub-pool page may be the smallest size among the sizes equal to or larger than the size of the compressed data, for example.
- the controller 31 allocates the specified free sub-pool page to the write destination virtual page (for example, transmits information of the sub-pool page from the unused queue 630 to the use queue 620 ). As a result, the sub-pool page becomes a use sub-pool page.
- the controller 31 writes the compressed data for writing on the cache memory 32 to the allocated sub-pool page at any timing after completion of the write request is returned to the host computer 10 (or before the completion is returned). At this time, the controller 31 refers to the pool management table 610 and the pool volume table 660 , and writes the compressed data in a physical address corresponding to the sub-pool page.
- the controller 31 performs an overwriting write processing including S 430 to S 460 .
- controller 31 performs the following steps in S 430 .
- the controller 31 refers to the pool volume table 660 , reads compressed old data from the sub-pool page allocated to the write destination virtual page (hereinafter, “allocated sub-pool page” in the description of FIG. 10 ) to the cache memory 32 , and decompresses the read compressed old data by the compression/decompression circuit 390 to obtain old data on the cache memory 32 .
- the controller 31 overwrites new data (data to be written according to the write request) over the old data in the cache memory 32 .
- the controller 31 compresses the new data by the compression/decompression circuit 390 to obtain the compressed new data on the cache memory 32 .
- the controller 31 determines whether or not the size of the compressed new data exceeds the size of the allocated sub-pool page (or the size of the compressed old data) in S 440 .
- the controller 31 refers to the pool management table 610 and specifies a free sub-pool page having a size equal to or larger than the size of the compressed new data.
- the size of the specified free sub-pool page may be the smallest size among the sizes equal to or larger than the size of the compressed new data, for example.
- the controller 31 allocates the specified free sub-pool page to the write destination virtual page instead of the allocated sub-pool page. Specifically, for example, the controller 31 transmits the information of the sub-pool page from the unused queue 630 to the use queue 620 , transmits information of the allocated sub-pool page from the use queue 620 to the unused queue 630 , and sets the garbage flag 634 corresponding to the allocated sub-pool page to “garbage”. As a result, the sub-pool page becomes a use sub-pool page, and the allocated sub-pool page becomes garbage.
- the controller 31 writes the compressed new data for writing on the cache memory 32 to the allocated sub-pool page at any timing after the completion of the write request is returned to the host computer 10 (or before the completion is returned).
- the controller 31 performs a sub-pool page selection processing.
- the controller 31 performs the following processing. That is, the controller 31 allocates the selected sub-pool page which is garbage to the write destination virtual page instead of the allocated sub-pool page. Specifically, for example, the controller 31 transmits the information of the sub-pool page (garbage) from the unused queue 630 to the use queue 620 , transmits the information of the allocated sub-pool page from the use queue 620 to the unused queue 630 , and sets the garbage flag 634 corresponding to the allocated sub-pool page to “garbage”. As a result, the garbage becomes a use sub-pool page, and the allocated sub-pool page becomes garbage. Thereafter, the controller 31 performs the same processing as in (S 450 - 4 ).
- FIG. 11 is a flowchart of the sub-pool page selection processing according to the present embodiment.
- the controller 31 refers to the pool management table 610 and selects a sub-pool from the pool 600 (S 461 ).
- a sub-pool including a sub-pool page having the smallest size is selected from sub-pools including sub-pool pages having a size equal to or larger than the size of the compressed new data.
- the controller 31 refers to the pool management table 610 and determines whether or not there is garbage in the sub-pool selected in S 461 (S 462 ).
- S 462 If the determination result is true in S 462 (S 462 : YES), the controller 31 selects any garbage from the sub-pool selected in S 461 (S 463 ).
- the controller 31 determines whether or not there is a sub-pool unselected in S 461 and including a sub-pool page having a size equal to or larger than the size of the compressed new data (S 464 ). If the determination result is true in S 464 (S 464 : YES), S 461 is performed. If the determination result is false in S 464 (S 464 : NO), the controller 31 selects a free sub-pool page from the sub-pool initially selected in step S 461 (for example, the sub-pool including a sub-pool page having the smallest size among the sizes equal to or larger than the size of the compressed new data) (S 465 ).
- the controller 31 compresses the data and then writes the compressed data in the sub-pool page, and even in a case where the size of the compressed new data exceeds the size of the allocated sub-pool page, the garbage can be reused (the garbage can be selected as a sub-pool page to be allocated to the write destination virtual page), so that a possibility of increasing the garbage can be reduced. Further, the garbage having a size closest to the size of the compressed new data is reused, so that capacity efficiency can be prevented from decreasing.
- a second embodiment will be described.
- points different from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified (the same for the third and subsequent embodiments).
- FIG. 12 is a flowchart of a sub-pool page selection processing according to the second embodiment.
- the sub-pool page selection processing of the write destination according to the second embodiment is different from the first embodiment in that S 464 is not performed. That is, if the determination result is false in S 462 (S 462 : NO), the controller 31 selects a free sub-pool page from the sub-pool selected in S 461 (S 465 ).
- the possibility of increasing the garbage can be reduced.
- capacity efficiency is preferably avoided from decreasing as compared with the first embodiment.
- FIG. 13 is a flowchart of a sub-pool page selection processing according to a third embodiment.
- the controller 31 refers to the pool management table 610 and determines whether or not a total pool use amount exceeds a threshold value (S 610 ).
- the “total pool use amount” is total pool use capacity or a total pool use ratio.
- the “total pool use capacity” is total capacity of the use sub-pool page.
- the “total pool use ratio” is a ratio of the total pool use capacity to pool capacity.
- S 610 If the determination result is true in S 610 (S 610 : YES), the controller 31 performs the sub-pool page selection processing shown in FIG. 11 or FIG. 12 (S 620 ).
- the controller 31 refers to the pool management table 610 , selects a sub-pool (for example, a sub-pool including a sub-pool page having the smallest size among the sizes equal to or larger than the compressed new data or more) from the pool 600 , and selects a free sub-pool page from the selected sub-pool (S 630 ).
- a sub-pool for example, a sub-pool including a sub-pool page having the smallest size among the sizes equal to or larger than the compressed new data or more
- the free sub-pool page is sufficient, it is considered that there is no problem even though garbage is not selected. In other words, it is considered that a situation should be avoided in which a sub-pool page able to be allocated is exhausted due to the increase in garbage when the GC processing is not carried out despite actual existence of free capacity.
- garbage is little in the pool, the garbage having a size close to the size of the compressed new data may not be found. In such a case, the following problems, for example, are considered in attempting to reuse the garbage.
- the capacity efficiency can be increased while reducing overhead since the garbage is reused when a certain amount of garbage that serves as candidate is accumulated.
- the “total pool use amount” can also be read as “total garbage amount”.
- the “total garbage amount” is total garbage capacity or a garbage ratio.
- the “total garbage capacity” is total capacity of the garbage.
- the “garbage ratio” is a ratio of the total garbage capacity to the pool capacity.
- a garbage queue is prepared instead of the unused queue 630 .
- the garbage queue is a queue of garbage information.
- One garbage queue may be prepared for each sub-pool page size, and may also be prepared for all sub-pool page sizes, or for each sub-pool page size range.
- a plurality of sub-pool pages may be allocated to one virtual page, and the compressed new data may be written into the plurality of sub-pool pages.
- the controller 31 may select a plurality of sub-pool pages such that a total size thereof is equal to or larger than the size of the compressed new data, and allocate the selected sub-pool pages to the write destination virtual page.
- the plurality of sub-pool pages may be a plurality of garbage, a plurality of free sub-pool pages or a combination of one or more garbage and one or more sub-pool pages.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
Description
-
- 30 . . . storage system
Claims (12)
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2017/022613 WO2018235149A1 (en) | 2017-06-20 | 2017-06-20 | Storage device and storage area management method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20190243582A1 US20190243582A1 (en) | 2019-08-08 |
| US10846023B2 true US10846023B2 (en) | 2020-11-24 |
Family
ID=64736915
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/330,944 Active US10846023B2 (en) | 2017-06-20 | 2017-06-20 | Storage device and storage area management method for reducing garbage collection processing |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US10846023B2 (en) |
| JP (1) | JP6696052B2 (en) |
| CN (1) | CN110199265B (en) |
| WO (1) | WO2018235149A1 (en) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11907206B2 (en) | 2021-07-19 | 2024-02-20 | Charles Schwab & Co., Inc. | Memory pooling in high-performance network messaging architecture |
| US12026098B1 (en) | 2022-02-10 | 2024-07-02 | Apple Inc. | Hardware-assisted page pool grow operation |
| US12204777B2 (en) | 2023-03-21 | 2025-01-21 | Lemon Inc. | Space manager for transparent block device compression |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5450577A (en) * | 1993-12-14 | 1995-09-12 | At&T Corp. | Zero-defect data integrity in high-capacity transaction systems |
| US5537658A (en) * | 1995-06-07 | 1996-07-16 | International Business Machines Corporation | Distributed directory method and structure for direct access storage device (DASD) data compression |
| US5764880A (en) * | 1996-09-10 | 1998-06-09 | International Business Machines Corporation | Method and system for rebuilding log-structured arrays |
| US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2002207634A (en) * | 2001-01-10 | 2002-07-26 | Fuji Xerox Co Ltd | Storage area managing method and storage device |
| EP2410419A4 (en) * | 2009-03-18 | 2013-02-27 | Hitachi Ltd | MEMORY CONTROLLER AND METHOD FOR CONTROLLING VIRTUAL VOLUME |
| JP5080611B2 (en) * | 2010-05-14 | 2012-11-21 | 株式会社日立製作所 | Storage device to which Thin Provisioning is applied |
| CN102929884B (en) * | 2011-08-10 | 2016-05-04 | 阿里巴巴集团控股有限公司 | A kind of method and device that shrinks virtual disk image file |
| JP6134857B2 (en) * | 2014-02-26 | 2017-05-24 | 株式会社日立製作所 | Storage device, apparatus having storage device, and storage control method |
-
2017
- 2017-06-20 US US16/330,944 patent/US10846023B2/en active Active
- 2017-06-20 JP JP2019524735A patent/JP6696052B2/en active Active
- 2017-06-20 CN CN201780083601.5A patent/CN110199265B/en active Active
- 2017-06-20 WO PCT/JP2017/022613 patent/WO2018235149A1/en not_active Ceased
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5450577A (en) * | 1993-12-14 | 1995-09-12 | At&T Corp. | Zero-defect data integrity in high-capacity transaction systems |
| US5537658A (en) * | 1995-06-07 | 1996-07-16 | International Business Machines Corporation | Distributed directory method and structure for direct access storage device (DASD) data compression |
| US5764880A (en) * | 1996-09-10 | 1998-06-09 | International Business Machines Corporation | Method and system for rebuilding log-structured arrays |
| US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
Also Published As
| Publication number | Publication date |
|---|---|
| CN110199265B (en) | 2022-11-01 |
| US20190243582A1 (en) | 2019-08-08 |
| CN110199265A (en) | 2019-09-03 |
| JPWO2018235149A1 (en) | 2019-11-07 |
| WO2018235149A1 (en) | 2018-12-27 |
| JP6696052B2 (en) | 2020-05-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20230315342A1 (en) | Memory system and control method | |
| CN109725846B (en) | Memory system and control method | |
| US10884630B2 (en) | Storage system | |
| US9183136B2 (en) | Storage control apparatus and storage control method | |
| US8832371B2 (en) | Storage system with multiple flash memory packages and data control method therefor | |
| US8688932B2 (en) | Virtual computer system and method of controlling the same | |
| US11762598B2 (en) | Memory system and method of controlling nonvolatile memory | |
| US10628088B2 (en) | Computer system | |
| US20130346689A1 (en) | Storage system and management method of control information therein | |
| US9256382B2 (en) | Interface for management of data movement in a thin provisioned storage system | |
| CN108139902A (en) | Method and apparatus for providing hybrid mode access to SSD drives | |
| US20070288712A1 (en) | Storage apparatus and storage apparatus control method | |
| JP2019057151A (en) | Memory system and control method | |
| US10310984B2 (en) | Storage apparatus and storage control method | |
| US10817205B2 (en) | Computer system and storage device | |
| US9229637B2 (en) | Volume copy management method on thin provisioning pool of storage subsystem | |
| US10846023B2 (en) | Storage device and storage area management method for reducing garbage collection processing | |
| US7676644B2 (en) | Data processing system, storage apparatus and management console | |
| JP6636159B2 (en) | Storage device | |
| US20200050388A1 (en) | Information system | |
| JP7337228B2 (en) | Memory system and control method | |
| US12124734B2 (en) | Method and system to process data delete in virtualized computing | |
| JP2022036263A (en) | Control method | |
| WO2017163322A1 (en) | Management computer, and management method for computer system | |
| WO2018051446A1 (en) | Computer system including storage system having optional data processing function, and storage control method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| AS | Assignment |
Owner name: HITACHI, LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SATOYAMA, AI;KAWAGUCHI, TOMOHIRO;YOSHII, YOSHIHIRO;SIGNING DATES FROM 20190118 TO 20190122;REEL/FRAME:048529/0811 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
| AS | Assignment |
Owner name: HITACHI VANTARA, LTD., JAPAN Free format text: COMPANY SPLIT;ASSIGNOR:HITACHI, LTD.;REEL/FRAME:069518/0761 Effective date: 20240401 |