US20170351457A1 - Storage controller, storage system, and storage control method - Google Patents
Storage controller, storage system, and storage control method Download PDFInfo
- Publication number
- US20170351457A1 US20170351457A1 US15/586,592 US201715586592A US2017351457A1 US 20170351457 A1 US20170351457 A1 US 20170351457A1 US 201715586592 A US201715586592 A US 201715586592A US 2017351457 A1 US2017351457 A1 US 2017351457A1
- Authority
- US
- United States
- Prior art keywords
- logical
- block
- physical
- management information
- data
- 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.)
- Granted
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
- 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
- G06F3/0641—De-duplication techniques
-
- 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/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; 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/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/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
Definitions
- the embodiments discussed herein are related to a storage controller, a storage system, and a storage control method.
- a technique called “de-duplication”, which removes duplicate data at the time of storing data in a storage device in order to improve the use efficiency of a storage area is known. For example, in this technique, when a write request of data is issued, a comparison is made of the hash value calculated based on the data and the hash value based on data that is already stored in a storage controller. If the hash values are the same, the storage controller determines that the data is duplicate data, and does not store the write-requested data in the storage device.
- a storage controller includes a memory configured to store first management information indicating enablement of data writing to each of a plurality of logical blocks corresponding to a plurality of physical blocks of a storage device, and a processor coupled to the memory and configured to receive a write request of write data to a first logical block among the plurality of logical blocks, assign a first physical block among the plurality of physical blocks to the first logical block, write the write data in the first physical block, record in the first management information that data has been written in the first logical block, identify a second logical block in which data has been written among the plurality of logical blocks based on the first management information, write addresses of the plurality of physical blocks assigned to the corresponding plurality of logical blocks in the storage device as second management information, read an address of the second physical block assigned to the second logical block based on the second management information, and release the second physical block of the read address.
- FIG. 1 is a diagram illustrating a storage controller according to a first embodiment
- FIG. 2 is a diagram illustrating a storage system according to a second embodiment
- FIG. 3 is a diagram illustrating an example of hardware of a CM
- FIG. 4 is a diagram illustrating an example of address corresponding tables
- FIG. 5 is a diagram illustrating an example of hash value management tables
- FIG. 6 is a diagram illustrating a comparative example (1 of 2);
- FIG. 7 is a diagram illustrating a comparative example (2 of 2).
- FIG. 8 is a diagram illustrating a specific example of (1 of 2) of the second embodiment
- FIG. 9 is a diagram illustrating a specific example of (2 of 2) of the second embodiment.
- FIG. 10 is a diagram illustrating an example of the functions of the CM
- FIG. 11 is a flowchart illustrating an example of processing at the time of creating a logical volume
- FIG. 12 is a flowchart illustrating an example of write processing
- FIG. 13 is a flowchart illustrating an example of read processing
- FIG. 14 is a flowchart illustrating an example of deletion processing of a logical volume.
- the de-duplication technique described above is one kind of virtual memory technique for assigning physical storage areas to only logical blocks in which data has been written among the logical blocks of a logical storage area.
- management information is used that indicates a corresponding relationship between each logical block of a logical volume and a physical block assigned from a physical storage area. Also, this management information has a large amount of data, and thus the management information is sometimes stored not in a storage controller, but in a storage device that provides the physical storage area.
- “release” processing for returning the physical block that is assigned to each logical block of a logical volume to a reusable unassigned area is performed.
- the storage controller searches all the records of the above-described management information, determines whether or not a physical block is assigned to each logical block, and obtains the assigned physical block.
- the management information is stored in the storage device, the number of access times to the storage device increases in order to search all the records in the management information. As a result, there is a problem in that deletion processing of a logical volume takes a long time.
- a storage controller a storage system, and a storage control method that are capable of shortening processing time for deleting a logical volume.
- FIG. 1 is a diagram illustrating a storage controller according to a first embodiment.
- a storage device 20 and a host device 30 are coupled to a storage controller 10 illustrated in FIG. 1 .
- the storage controller 10 and the storage device 20 are realized, for example, as a storage device mounted in one case. Also, it may be thought that the storage controller 10 and the storage device 20 constitute a storage system.
- the storage controller 10 controls access to the storage device 20 in response to a request from the host device 30 .
- the storage controller 10 creates a logical volume 12 a that is realized by the storage area of the storage device 20 .
- the storage controller 10 then controls access to the logical volume 12 a in response to an access request from the host device 30 .
- the storage device 20 stores management information 21 in which the address of an assigned physical block is stored from a plurality of physical blocks produced by dividing the storage area of the storage device 20 for each of a plurality of logical blocks produced by dividing the logical volume 12 a.
- the management information 21 stores records corresponding to all the logical blocks of the logical volume 12 a.
- physical blocks are assigned to only logical blocks in which data has been written. Accordingly, the address of a physical block does not have to be stored in all the records of the management information 21 .
- the management information 21 includes the records corresponding to all the logical blocks of the logical volume 12 a, and thus has a large amount of data. Accordingly, the management information 21 is stored not in the storage controller 10 , but in the storage device 20 that provides a physical storage area of the logical volume 12 a.
- the logical volume 12 a includes four logical blocks that are individually identified by logical addresses XA 1 to XA 4 in order to simplify the description.
- the storage controller 10 includes a memory 11 and a control unit 12 .
- the memory 11 is a volatile storage device, such as a random access memory (RAM), or the like.
- the control unit 12 is, for example, a processor.
- the processor may include a central processing unit (CPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or the like.
- the control unit 12 may be a multiprocessor.
- the memory 11 stores management information indicating whether or not data is written for each logical block of the logical volume 12 a.
- a bit map 11 a that includes a bit corresponding to each logical block of the logical volume 12 a is stored.
- the bit map 11 a if a bit value is 0, it indicates that data is not written in the corresponding logical block. Also, if a bit value is 1, it indicates that data is written in the corresponding logical block.
- FIG. 1 a bit map 11 a that includes a bit corresponding to each logical block of the logical volume 12 a is stored.
- bits 11 aa, 11 ab, 11 ac, and 11 ad in the bit map 11 a correspond to the respective logical blocks that are identified by logical addresses XA 1 , XA 2 , XA 3 , and XA 4 .
- the control unit 12 selects one unassigned physical block from a plurality of physical blocks of the storage device 20 .
- the control unit 12 assigns the selected physical block to the specified logical block and stores the write data in the selected physical block. In this manner, the control unit 12 assigns a physical block to only a logical block in which data is written among the logical blocks of the logical volume 12 a.
- the control unit 12 assigns a physical block of a physical address of YA 1 to the logical block of the logical address XA 1 .
- the data D 1 is then written in the physical block of the physical address YA 1 .
- the control unit 12 assigns a physical block of a physical address YA 2 to the logical block of the logical address XA 3 .
- the data D 2 is then written in the physical block of the physical address YA 2 .
- control unit 12 performs the assigning processing of a physical block as described above, and records that data has been written in the specified logical block in the bit map 11 a.
- the control unit 12 updates the bit of the area 11 aa corresponding to the logical address XA 1 to 1 among the bits of the bit map 11 a in response to the write request of the data D 1 .
- the control unit 12 updates the bit of the area 11 ac corresponding to the logical address XA 3 to 1 among the bits of the bit map 11 a in response to the write request of the data D 2 .
- control unit 12 performs the processing as follows at the time of deleting the logical volume 12 a.
- the control unit 12 identifies a logical block in which data is written among the logical blocks of the logical volume 12 a based on the bit map 11 a. In the example in FIG. 1 , the logical blocks corresponding to the respective logical addresses XA 1 and XA 3 are identified.
- the control unit 12 reads the addresses of the physical blocks assigned to the identified logical blocks from the management information 21 . In the example in FIG. 1 , the physical addresses YA 1 and YA 3 are read.
- the control unit 12 performs release processing for releasing the physical addresses YA 1 and YA 3 .
- the “release” refers to returning a physical address to a reusable unallocated area.
- the release processing for example, the physical addresses YA 1 and YA 3 are added to the management information by which unassigned physical addresses in the storage device 20 are managed.
- the release processing may determine whether or not it is possible to release the physical block corresponding to the physical addresses YA 1 and YA 3 . For example, if another logical block is assigned to the physical block, it is not possible to release the physical block.
- the control unit 12 refers to the bit map 11 a stored in the memory 11 before referring to the management information 21 stored in the storage device 20 , and identifies a logical block in which data is written. Accordingly, it is possible for the control unit 12 to read the address of the recorded physical block from the records corresponding to the identified logical block without searching all the records of the management information 21 . Thereby, it is possible to reduce the number of times the storage device 20 is accessed and the access time in the deletion processing. As a result, it is possible to shorten the time taken for the deletion processing.
- FIG. 2 is a diagram illustrating a storage system according to the second embodiment.
- the storage system illustrated in FIG. 2 includes a storage device 100 and a host device 400 .
- the storage device 100 and the host device 400 are coupled via a Storage Area Network (SAN) using, for example, a fibre channel (FC), Internet Small Computer System Interface (iSCSI), or the like.
- SAN Storage Area Network
- FC fibre channel
- iSCSI Internet Small Computer System Interface
- the storage device 100 includes a controller module (CM) 200 and a device enclosure (DE) 300 .
- the CM 200 controls the entire storage device 100 .
- the DE 300 includes a plurality of storage devices mounted thereon.
- the DE 300 is a disk array device including HDDs as storage devices.
- the storage devices that are mounted on the DE 300 may be another kind of storage devices, such as a solid state drive (SSD), or the like.
- the CM 200 controls access to the storage devices mounted on the DE 300 in response to a request from the host device 400 .
- the CM 200 creates one or more logical volumes that are realized by the storage area of the storage devices in the DE 300 .
- a logical unit number (LUN) is assigned to each logical volume.
- each logical volume is divided into logical blocks having a fixed size, and each logical block is given a logical block address (LBA).
- LBA logical block address
- the CM 200 receives an access request specifying the LUN of the logical volume and the LBA of the logical block from the host device 400 .
- the CM 200 accesses the data stored in the V in response to the access request.
- the CM 200 performs control such that duplicate data is removed when data of the logical volume is stored in the storage area of the storage devices in the DE 300 .
- the CM 200 sets one or more pool volumes using the storage area of the storage devices in the DE 300 .
- Each of the pool volumes may be realized as a simple set of the storage areas of one or more storage devices in the DE 300 or a logical storage area realized by a plurality of storage devices that are controlled by a redundant array of inexpensive disks (RAID). It is possible for the CM 200 to set one or more logical volumes to one pool volume.
- the CM 200 then stores the data in all the logical volumes that are set in the one pool volume in the pool volume so as to remove duplicate data.
- each of the pool volumes is divided into blocks having the same size as the logical blocks of the logical volume, and each block is given an LBA.
- an LBA of a logical block in a logical volume is referred to as a “logical address”
- an LBA of a block in a pool volume is referred to as a “physical address”.
- FIG. 3 is a diagram illustrating an example of hardware of a CM.
- the CM 200 includes a processor 201 , a RAM 202 , an SSD 203 , a channel adapter (CA) 204 and a device interface (DI) 205 .
- CA channel adapter
- DI device interface
- the processor 201 controls information processing of the CM 200 .
- the processor 201 may be a multiprocessor including a plurality of processing elements.
- the RAM 202 is the main memory of the CM 200 .
- the RAM 202 temporarily stores the program of the operating system (OS) and at least a part of the application programs executed by the processor 201 . Also, the RAM 202 stores various kinds of data to be used for processing by the processor 201 .
- OS operating system
- the RAM 202 stores various kinds of data to be used for processing by the processor 201 .
- the SSD 203 is an auxiliary memory of the CM 200 .
- the SSD 203 is a nonvolatile semiconductor memory.
- the SSD 203 stores the OS program, the application programs, and the various kinds of data.
- the CM 200 may include an HDD in place of the SSD 203 as the auxiliary memory.
- the CA 204 is an interface for communicating with the host device 400 .
- the DI 205 is an interface for communicating with the DE 300 .
- FIG. 4 is a diagram illustrating an example of address corresponding tables.
- the address corresponding tables are stored in the storage device in the DE 300 .
- An address corresponding table is created for each logical volume.
- the address corresponding tables 301 a, 301 b, and 301 c in FIG. 4 correspond to the respective logical volumes.
- the address corresponding tables are sometimes referred to as an address corresponding table 301 in general.
- the address corresponding table 301 includes items of a logical address and a physical address.
- the item of a logical address includes information indicating the LUN and the LBA of a logical volume.
- the item of an LUN stores information indicating an LUN.
- the item of an LBA stores the LBA of a logical volume.
- the item of a physical address stores identification information of a block that is assigned from the pool volume to the logical address. Specifically, the item of a physical address stores information indicating a pool identifier (ID) of a pool volume and an LBA. The item of a pool ID stores identification information of a poor volume. The item of an LBA stores the LBA of a pool volume.
- the address corresponding tables 301 a to 301 c include records corresponding to all the logical blocks in the respective logical volumes. Accordingly, the address corresponding tables 301 a to 301 c have a large amount of data. Thus, the address corresponding tables 301 a to 301 c are not stored in the RAM 202 , but stored in the storage device in the DE 300 . Also, only some of the records (for example, the records corresponding to the logical blocks having a high access frequency) of the address corresponding tables 301 a to 301 c may be stored in the RAM 202 .
- FIG. 5 is a diagram illustrating an example of hash value management tables.
- the hash value management tables include information for removing duplication and are included in the RAM 202 .
- a hash value management table is created for each pool volume.
- the hash value management tables 211 a, 211 b, and 211 c in FIG. 5 individually correspond to the respective pool volumes.
- the hash value management tables are sometimes referred to as a hash value management table 211 in general.
- the hash value management table 211 includes items of a hash value, a physical address, and a reference count.
- the item of a hash value stores information indicating a hash value.
- the item of a physical address stores identification information of the pool volume block in which data corresponding to the hash value is stored. Specifically, the item of a physical address stores the pool ID of the pool volume, and information indicating an LBA.
- the item of the pool ID stores identification information of a pool volume.
- the item of an LBA stores the LBA of a pool volume.
- the item of a reference count stores the number of logical addresses that are assigned to a physical address. The value of the reference count value is increased or decreased in accordance with the assignment state of the physical address. If the value of the reference count becomes 0, the pool volume block indicated by the corresponding physical address is returned to the unallocated area and becomes reusable. That is to say, this block is released.
- a physical address is assigned to a logical address
- the reference count indicates the number of logical addresses that refer to physical addresses.
- FIGS. 6 and 7 a comparative example is illustrated in FIGS. 6 and 7 , and the problems of the comparative example are described. After that, a description will be given of the processing according to the second embodiment. In this regard, in the comparative example, it is assumed that each of the devices described in FIG. 2 is used.
- FIG. 6 is a diagram illustrating a comparative example (1 of 2).
- the CM 200 creates logical volumes 320 and 330 .
- LUN 1 is assigned to the logical volume 320 .
- LUN 2 is assigned to the logical volume 330 .
- the CM 200 creates the logical volumes 320 and 330 , and then creates the address corresponding table 301 a corresponding to the logical volume 320 and the address corresponding table 301 b corresponding to the logical volume 330 .
- information indicating that an LUN and an LBA is stored in the item of the logical address is stored, and the item of the physical address is blank (or “NULL” is stored).
- a pool volume 310 is set to the storage area that is assigned to the logical volumes 320 and 330 .
- the hash value management table 211 a is stored in the RAM 202 of the CM 200 .
- the hash value management table 211 a is shared between the logical volumes 320 and 330 .
- the address corresponding tables 301 a and 301 b are stored in the storage device of the DE 300 .
- the host device 400 issued a write request of the data specified by the logical address (LUN, LBA).
- the write request is made for each data block.
- the amount of data of a data block is 4 kilobytes (KB), and this is the same size as that of the logical block.
- the CM 200 receives the logical address (LUN 1 , LBA 1 ) of a write destination and the data block from the host device 400 .
- the CM 200 determines whether or not the received data block is duplicated with a data block stored in the pool volume 310 .
- the determination is made of whether or not the hash value calculated based on the received data block is stored in the hash value management table 211 a.
- the hash value is calculated using, for example, the hash function of Secure Hash Algorithm 1 (SHA-1).
- the received data block is determined to be duplicated. Also, it is assumed that a determination is made that the same data block as the data block received from the hash value management table 211 a is stored in the physical address (PV 1 , PA 1 ) of the pool volume 310 .
- PV 1 is a pool ID
- PA 1 is an LBA.
- the CM 200 does not store the received data block in the pool volume 310 , but stores the relationship between the logical address (LUN 1 , LBA 1 ) and the physical address (PV 1 , PA 1 ) in the address corresponding table 301 a.
- the CM 200 After the CM 200 stores the relationship, the CM 200 changes the reference count corresponding to the physical address (PV 1 , PA 1 ) from 1 to 2 in the hash value management table 211 a. Thereby, the fact that the two logical addresses, the logical address (LUN 1 , LBA 1 ) and the logical address (LUN 2 , LBA 11 ) refer to the physical address (PV 1 , PA 1 ) is stored.
- FIG. 7 is a diagram illustrating a comparative example (2 of 2).
- FIG. 7 illustrates the state where the CM 200 deletes the logical volume 320 by an instruction from the host device 400 in the state of FIG. 6 .
- the CM 200 receives a deletion instruction of the logical volume 320 from the host device 400 and starts the deletion processing of the logical volume 320 .
- the CM 200 subtracts from the reference count stored in the hash value management table 211 a with the deletion of the logical volume 320 .
- the CM 200 searches all the logical addresses stored in the address corresponding table 301 a for which logical address refers to which physical address.
- the CM 200 refers to the, address corresponding table 301 a, and identifies that the logical address (LUN 1 , LBA 1 ) refers to the physical address (PV 1 , PA 1 ).
- the CM 200 refers to the hash value management table 211 a, and subtracts from the value of the reference count corresponding to the physical address (PV 1 , PA 1 ).
- the CM 200 refers to the address corresponding table 301 a, and identifies that the logical address (LUN 1 , LBA 2 ) refers to the physical address (PV 1 , PA 2 ).
- the CM 200 refers to the hash value management table 211 a, and subtracts from the value of the reference count corresponding to the physical address (PV 1 , PA 2 ). Next, the CM 200 refers to the address corresponding table 301 a, and determines that the logical address (LUN 1 , LBA 3 ) does not refer to any physical addresses. In this manner, the CM 200 searches all the logical addresses.
- FIG. 8 is a diagram illustrating a specific example of (1 of 2) of the second embodiment.
- the difference between FIG. 8 and FIGS. 6 and 7 is that bit maps 212 a and 212 b are newly created.
- bit maps 212 a and 212 b are newly created.
- a description will be given mainly of the bit maps 212 a and 212 b.
- the bit maps 212 a and 212 b are stored in the RAM 202 .
- the bit map 212 a has bits corresponding to the respective logical blocks of the logical volume 320 .
- the bit map 212 b has bits corresponding to the respective logical blocks of the logical volume 330 .
- Each of the bits of the bit maps 212 a and 212 b manages whether or not data is written in the corresponding logical block. For example, a bit corresponding to a logical block in which the host device 400 has not requested to write data is set to “0”. When a write request is made to the logical block, the bit corresponding to the logical block is set to “1”.
- FIG. 8 illustrates the case where the host device 400 issued a write request of a data block by specifying a logical address (LUN, LBA).
- the CM 200 receives the logical address (LUN 1 , LBA 1 ) of a write destination, and a data block from the host device 400 .
- the CM 200 determines whether or not the received data block and the data block stored in the pool volume 310 are duplicate using a hash value calculated based on the received data block.
- the CM 200 does not store the received data block in the pool volume 310 and stores the relationship between the logical address (LUN 1 , LBA 1 ) and the physical address (PV 1 , PA 1 ) in the address corresponding table 301 a.
- the CM 200 changes the reference count corresponding to the physical address (PV 1 , PA 1 ) in the hash value management table 211 a from 1 to 2.
- the CM 200 stores that data is written in the area 212 a 1 corresponding to the logical address (LUN 1 , LBA 1 ) of the bit map 212 a. Thereby, the bit of the area 212 a 1 is changed from 0 to 1.
- FIG. 9 is a diagram illustrating a specific example of (2 of 2) of the second embodiment.
- FIG. 9 illustrates the case where the CM 200 deletes the logical volume 320 by an instruction from the host device 400 from the state in FIG. 8 .
- the CM 200 receives a deletion instruction of the logical volume 320 from the host device 400 , and starts the deletion processing of the logical volume 320 .
- the CM 200 deletes the logical volume 320 , the number of logical blocks that reference the blocks of the pool volume 310 is reduced. Accordingly, the CM 200 subtracts from the reference count value stored in the hash value management table 211 a.
- the CM 200 refers to the bit map 212 a corresponding to the logical volume 320 , and identifies the logical address (LUN 1 , LBA 1 ) whose bit is 1.
- the CM 200 refers to the record corresponding to the identified logical address (LUN 1 , LBA 1 ) among the records of the address corresponding table 301 a and reads the physical address (PV 1 , PA 1 ) from the record.
- the CM 200 refers to the hash value management table 211 a and changes the value of the reference count corresponding to the read physical address (PV 1 , PA 1 ) from 2 to 1.
- the CM 200 refers to the bit map 212 a, and identifies the logical address (LUN 1 , LBA 2 ) whose bit is 1.
- the CM 200 refers to the record corresponding to the identified logical address (LUN 1 , LBA 2 ) among the records of the address corresponding table 301 a, and reads the physical address (PV 1 , PA 2 ) from the record.
- the CM 200 refers to the hash value management table 211 a and changes the value of the reference count corresponding to the read physical address (PV 1 , PA 2 ) from 1 to 0.
- the CM 200 identifies the logical block whose bit is 1 based on the bit map 212 a in sequence, and reads the physical address corresponding to the identified logical address from the address corresponding table 301 a and subtracts from the value of the corresponds reference count.
- the CM 200 completes such subtraction processing of the reference count, the CM 200 deletes the address corresponding table 301 a, the bit map 212 a, and the logical volume 320 .
- the CM 200 refers to the hash value management table 211 a, and releases the physical address whose reference count value is 0. In the example in FIG. 9 , the block indicated by the physical address (PV 1 , PA 2 ) is released and is returned to the unassigned block.
- CM 200 searches the address corresponding table 301 a only for a logical address having a bit of 1 in the bit map 212 a. That is to say, the CM 200 does not search the address corresponding table 301 a for a logical address whose bit is “0”. For example, the logical address (LUN 1 , LBA 3 ) is not searched. In this manner, not all the logical addresses stored in the address corresponding table 301 a are searched, and only the logical addresses whose bit in the bit map 212 a is “1” are searched, and thus the number of access times to the storage device 20 is reduced. As a result, it is possible to reduce the processing time for deleting the logical volume.
- FIG. 10 is, a diagram illustrating a functional example of the CM.
- the CM 200 includes a memory 210 , a creation unit 220 , an access control unit 230 and a deletion processing unit 240 .
- the memory 210 is implemented, for example, as a storage area provided in the RAM 202 .
- the memory 210 stores the hash value management table 211 and the bit maps exemplified in FIGS. 8 and 9 . Also, the information indicating the corresponding relationship between the bits of the bit maps and the logical addresses is stored in the memory 210 . Further, the management information indicating the empty state of the blocks in each pool volume is also stored in the memory 210 . Also, the memory 210 may store part of the information of the address corresponding table 301 .
- At least part of the processing of the creation unit 220 , the access control unit 230 and the deletion processing unit 240 are realized, for example, by the processor 201 executing a predetermined program.
- the creation unit 220 creates a logical volume.
- the creation unit 220 creates the bit map corresponding to the logical volume and the address corresponding table 301 corresponding to the logical volume.
- the access control unit 230 receives an access request to the logical volume from the host device 400 , and performs access control in accordance with the request. For example, when the access control unit 230 receives a write request and a data block from the host device 400 , the access control unit 230 determines whether or not the received data block is already stored in the corresponding pool volume. If the data block is not stored, the access control unit 230 stores the data block in the pool volume. On the other hand, if the data block is stored, the access control unit 230 does not store the data block in the pool volume.
- the access control unit 230 sets the bit of the bit map corresponding to the logical address to which a write request is issued to 1. Also, the access control unit 230 stores the relationship between the logical address to which the write request is issued and the physical address in the address corresponding table 301 . Further, the access control unit 230 updates the reference count of the hash value management table 211 .
- the access control unit 230 when the access control unit 230 receives a read request from the host device 400 , the access control unit 230 performs read processing of a data block.
- the deletion processing unit 240 When the deletion processing unit 240 receives a deletion instruction of a logical volume from the host device 400 , the deletion processing unit 240 performs the processing accompanied by the deletion of the logical volume with reference to the bit map. More specifically, the deletion processing unit 240 identifies a logical address whose bit in the bit map is “1”, and reads a physical address associated with the identified logical address from the address corresponding table 301 . The deletion processing unit 240 refers to the hash value management table 211 and subtracts from the reference count corresponding to the read physical address. Also, when the deletion processing unit 240 completes the subtraction processing of all the reference counts, the deletion processing unit 240 deletes the address corresponding table 301 and the bit map that are corresponding to the logical volume to be deleted. Also, the deletion processing unit 240 deletes the logical volume to be deleted.
- FIG. 11 is a flowchart illustrating an example of processing at the time of creating a logical volume. In the following, a description will be given of the processing illustrated in FIG. 11 with reference to the step numbers.
- the creation unit 220 creates a logical volume by an instruction from the host device 400 .
- a pool volume is assigned to the created logical volume.
- the creation unit 220 creates a bit map corresponding to the created logical volume and stores the bit map in the memory 210 . Specifically, the creation unit 220 creates the bit map in accordance with the capacity of the created logical volume. For example, the creation unit 220 creates the bit map including the number of bits calculated by “the capacity of the logical volume/the capacity of the logical block (4 kilobytes)”.
- the creation unit 220 initializes the created bit map. That to say, the creation unit 220 sets all the bits of the bit map to 0.
- the creation unit 220 creates an address corresponding table 301 corresponding to the created logical volume.
- the creation unit 220 creates the records corresponding to all the logical blocks of the created logical volume in the address corresponding table 301 , stores information indicating an LUN and an LBA in the items of each record, and leaves the item of the physical address blank.
- the creation unit 220 stores the created address corresponding table 301 in the storage device of the DE 300 . The processing then is terminated.
- FIG. 12 is a flowchart illustrating an example of write processing.
- the hash value management table 211 referenced in FIG. 12 is the hash value management table 211 corresponding to the pool volume assigned to the logical volume in which data is to be written.
- the address corresponding table 301 referenced in FIG. 12 is the address corresponding table 301 corresponding to the logical volume in which data is to be written.
- the access control unit 230 receives a write request and a data block from the host device 400 .
- the write request includes information indicating an LUN and an LBA.
- the access control unit 230 calculates a hash value of the write requested data block using the hash function of SHA-1.
- the access control unit 230 determines whether or not the received data block and the data block stored in the pool volume 310 are duplicate depending on whether or not the calculated hash value is stored in the hash value management table 211 .
- step S 24 If the calculated hash value is not stored in the hash value management table 211 (not duplicated), the processing proceeds to step S 24 .
- the calculated hash value is stored in the hash value management table 211 (duplicated), the processing proceeds to step S 22 . In, this case, the access control unit 230 skips the processing (corresponding to step S 24 ) for storing the received data block in the pool volume 310 .
- the access control unit 230 stores the relationship between the physical address in which the data block determined to be duplicated and the logical address at which data is requested to be written in the address corresponding table 301 .
- the stored physical address is the physical address associated with the same hash value with the calculated hash value in the hash value management table 211 .
- update if another physical address has been stored before a physical address is stored in the item of the physical address of the address corresponding table 301 , this case is referred to as update.
- the access control unit 230 refers to the hash value management table 211 , and adds one to the reference count corresponding to the physical address at which the data block determined to be duplicated is stored.
- the access control unit 230 determines the physical address that was stored before storing in the item of the physical address in step S 22 in the record to be stored in step S 22 in the address corresponding table 301 .
- the access control unit 230 subtracts one from the reference count associated with the determined physical address in the hash value management table 211 . The processing then proceeds to step S 27 .
- the access control unit 230 releases the block in the pool volume 310 indicated by the physical address associated with the reference count. For example, the access control unit 230 stores the physical block in the management information in which empty areas in the pool volume 310 are managed as an unassigned block. Also, the access control unit 230 deletes the record including the subtracted reference count from the hash value management table 211 .
- the access control unit 230 selects an unassigned physical address from the corresponding pool volume 310 .
- the access control unit 230 stores the received data block in the block indicated by the physical address selected from the pool volume 310 .
- the access control unit 230 stores the relationship between the physical address to which the data block is written and the logical address to which the write request is issued in the address corresponding table 301 .
- update if another physical address has been stored in the item of the physical address before the physical address is stored in the item of the address corresponding table 301 , that case is referred to as update.
- the access control unit 230 adds a new record to the hash value management table 211 .
- the access control unit 230 stores the physical address at which the data block is stored in the item of the physical address of the added record.
- the access control unit 230 stores the hash value calculated in step S 21 in the item of the hash value of the added record.
- the access control unit 230 stores 1 in the item of the reference count of the added record.
- the access control unit 230 determines the physical address having been stored in the item of the physical address before storing the physical address in the address corresponding table 301 in step S 25 .
- the access control unit 230 subtracts 1 from the reference count associated with the determined physical address in the hash value management table 211 .
- the access control unit 230 releases the corresponding block in the pool volume 310 in the same procedure described in step S 22 , and deletes the corresponding record in the hash value management table 211 .
- New writing refers to the case where a physical address has not been stored in the item of the physical address in the record in which writing is to be performed in step S 22 or step S 25 in the address corresponding table 301 . In this regard, in this case, a determination may be made not by the fact that a physical address is stored in the record, but by the fact that the bit corresponding to the record in the bit map is 0. In the case of new writing, the processing proceeds to step S 28 . In the case of not new writing, the processing is terminated.
- the access control unit 230 sets the bit corresponding to the logical address (LUN and LBA) at which writing is requested in the bit map to 1. The processing then is terminated.
- FIG. 13 is a flowchart illustrating an example of read processing. In the following, a description will be given of the processing illustrated in FIG. 13 along the step numbers.
- the access control unit 230 receives a read request from the host device 400 .
- the read request includes an LUN and an LBA indicating the logical address of a reading source.
- the access control unit 230 determines whether or not the bit corresponding to the logical address (LUN and LBA) of the reading source in the bit map is 0. If the bit is 0, the processing proceeds to step S 33 . If the bit is 1, the processing proceeds to step S 32 .
- the access control unit 230 performs read processing of the data block. More specifically, the access control unit 230 refers to the address corresponding table 301 and identifies a physical address corresponding to the logical address of the reading source. The access control unit 230 reads the data block stored in the block of the pool volume 310 , which is indicated by the identified physical address. The access control unit 230 transmits the read data block to the host device 400 . The processing then is terminated.
- the access control unit 230 transmits zero data to the host device 400 .
- zero data is data that indicates nonexistence of data, and is for example, a sequence of bit value 0. The processing then is terminated.
- the access control unit 230 does not access the storage device in the DE 300 . That is to say, the access control unit 230 does not have to refer to the address corresponding table 301 stored in the storage device in the DE 300 in order to confirm that read requested data does not exist in the storage device of the DE 300 . Accordingly, it is possible to increase the response speed to a read request using the bit map.
- FIG. 14 is a flowchart illustrating an example of deletion processing of a logical volume. In the following, a description will be given of the processing illustrated in FIG. 14 along the step numbers.
- the deletion processing unit 240 receives a deletion instruction of a logical volume from the host device 400 .
- a deletion instruction includes an LUN indicating the logical volume to be deleted.
- the deletion processing unit 240 reads the beginning bit of the bit map, which corresponds to the logical volume to be deleted.
- the deletion processing unit 240 determines whether or not the bit is 1. If the bit is 1, the processing proceeds to step S 43 . If the bit is 0, the processing proceeds to step S 44 .
- the deletion processing unit 240 refers to the address corresponding table 301 , and identifies the physical address associated with the logical address that is managed by the bit determined in step S 42 .
- the deletion processing unit 240 refers to the hash value management table 211 and subtracts from the reference count corresponding to the identified physical address.
- the deletion processing unit 240 releases the block of the pool volume 310 , which is indicated by the physical address associated with the reference count. Also, the deletion processing unit 240 deletes the record including the subtracted reference count from the hash value management table 211 .
- the deletion processing unit 240 determines whether or not all the bits in the bit map have been read. If all the bits have not been read, the processing proceeds to step S 45 . If all the bits have been read, the processing proceeds to step S 46 .
- the deletion processing unit 240 deletes the bit map corresponding to the logical volume to be deleted and the address corresponding table 301 . Also, the deletion processing unit 240 deletes the other management information regarding the logical volume to be deleted so as to delete this logical volume. The processing then is terminated.
- the program that realizes the functions corresponding to the creation unit 220 , the access control unit 230 , and the deletion processing unit 240 may be divided into separate programs, and the individual programs may be distributed separately.
- the functions of the creation unit 220 , the access control unit 230 , and the deletion processing unit 240 may be realized by separate computers respectively.
- the computer for example, may store (install) the program recorded on a recording medium in the RAM 202 or the SSD 203 , and may read the program from the storage device, and execute the program.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2016-111767, filed on Jun. 3, 2016, the entire contents of which are incorporated herein by reference.
- The embodiments discussed herein are related to a storage controller, a storage system, and a storage control method.
- A technique called “de-duplication”, which removes duplicate data at the time of storing data in a storage device in order to improve the use efficiency of a storage area is known. For example, in this technique, when a write request of data is issued, a comparison is made of the hash value calculated based on the data and the hash value based on data that is already stored in a storage controller. If the hash values are the same, the storage controller determines that the data is duplicate data, and does not store the write-requested data in the storage device.
- Related-art techniques are disclosed in Japanese Laid-open Patent Publication No. 2010-182302, and International Publication Pamphlet No. WO 2011/121905.
- According to an aspect of the invention, a storage controller includes a memory configured to store first management information indicating enablement of data writing to each of a plurality of logical blocks corresponding to a plurality of physical blocks of a storage device, and a processor coupled to the memory and configured to receive a write request of write data to a first logical block among the plurality of logical blocks, assign a first physical block among the plurality of physical blocks to the first logical block, write the write data in the first physical block, record in the first management information that data has been written in the first logical block, identify a second logical block in which data has been written among the plurality of logical blocks based on the first management information, write addresses of the plurality of physical blocks assigned to the corresponding plurality of logical blocks in the storage device as second management information, read an address of the second physical block assigned to the second logical block based on the second management information, and release the second physical block of the read address.
- The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims.
- It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed.
-
FIG. 1 is a diagram illustrating a storage controller according to a first embodiment; -
FIG. 2 is a diagram illustrating a storage system according to a second embodiment; -
FIG. 3 is a diagram illustrating an example of hardware of a CM; -
FIG. 4 is a diagram illustrating an example of address corresponding tables; -
FIG. 5 is a diagram illustrating an example of hash value management tables; -
FIG. 6 is a diagram illustrating a comparative example (1 of 2); -
FIG. 7 is a diagram illustrating a comparative example (2 of 2); -
FIG. 8 is a diagram illustrating a specific example of (1 of 2) of the second embodiment; -
FIG. 9 is a diagram illustrating a specific example of (2 of 2) of the second embodiment; -
FIG. 10 is a diagram illustrating an example of the functions of the CM; -
FIG. 11 is a flowchart illustrating an example of processing at the time of creating a logical volume; -
FIG. 12 is a flowchart illustrating an example of write processing; -
FIG. 13 is a flowchart illustrating an example of read processing; and -
FIG. 14 is a flowchart illustrating an example of deletion processing of a logical volume. - The de-duplication technique described above is one kind of virtual memory technique for assigning physical storage areas to only logical blocks in which data has been written among the logical blocks of a logical storage area. In such a virtual memory technique, management information is used that indicates a corresponding relationship between each logical block of a logical volume and a physical block assigned from a physical storage area. Also, this management information has a large amount of data, and thus the management information is sometimes stored not in a storage controller, but in a storage device that provides the physical storage area.
- Here, when a logical volume as described above is deleted, “release” processing for returning the physical block that is assigned to each logical block of a logical volume to a reusable unassigned area is performed. In order to perform the release processing, the storage controller searches all the records of the above-described management information, determines whether or not a physical block is assigned to each logical block, and obtains the assigned physical block. However, if the management information is stored in the storage device, the number of access times to the storage device increases in order to search all the records in the management information. As a result, there is a problem in that deletion processing of a logical volume takes a long time.
- According to an aspect of the present disclosure, it is desirable to provide a storage controller, a storage system, and a storage control method that are capable of shortening processing time for deleting a logical volume.
- In the following, descriptions will be given of embodiments with reference to the drawings.
-
FIG. 1 is a diagram illustrating a storage controller according to a first embodiment. Astorage device 20 and a host device 30 are coupled to astorage controller 10 illustrated inFIG. 1 . Thestorage controller 10 and thestorage device 20 are realized, for example, as a storage device mounted in one case. Also, it may be thought that thestorage controller 10 and thestorage device 20 constitute a storage system. - The
storage controller 10 controls access to thestorage device 20 in response to a request from the host device 30. For example, thestorage controller 10 creates alogical volume 12 a that is realized by the storage area of thestorage device 20. Thestorage controller 10 then controls access to thelogical volume 12 a in response to an access request from the host device 30. - The
storage device 20stores management information 21 in which the address of an assigned physical block is stored from a plurality of physical blocks produced by dividing the storage area of thestorage device 20 for each of a plurality of logical blocks produced by dividing thelogical volume 12 a. Themanagement information 21 stores records corresponding to all the logical blocks of thelogical volume 12 a. However, as described later, in thelogical volume 12 a, physical blocks are assigned to only logical blocks in which data has been written. Accordingly, the address of a physical block does not have to be stored in all the records of themanagement information 21. - Also, as described above, the
management information 21 includes the records corresponding to all the logical blocks of thelogical volume 12 a, and thus has a large amount of data. Accordingly, themanagement information 21 is stored not in thestorage controller 10, but in thestorage device 20 that provides a physical storage area of thelogical volume 12 a. - In this regard, it is assumed that, in
FIG. 1 , thelogical volume 12 a includes four logical blocks that are individually identified by logical addresses XA1 to XA4 in order to simplify the description. - The
storage controller 10 includes amemory 11 and acontrol unit 12. Thememory 11 is a volatile storage device, such as a random access memory (RAM), or the like. Thecontrol unit 12 is, for example, a processor. The processor may include a central processing unit (CPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or the like. Also, thecontrol unit 12 may be a multiprocessor. - The
memory 11 stores management information indicating whether or not data is written for each logical block of thelogical volume 12 a. In the example inFIG. 1 , as such management information, abit map 11 a that includes a bit corresponding to each logical block of thelogical volume 12 a is stored. In thebit map 11 a, if a bit value is 0, it indicates that data is not written in the corresponding logical block. Also, if a bit value is 1, it indicates that data is written in the corresponding logical block. In this regard, inFIG. 1 ,areas 11 aa, 11 ab, 11 ac, and 11 ad in thebit map 11 a correspond to the respective logical blocks that are identified by logical addresses XA1, XA2, XA3, and XA4. - When a write request of write data in a specified logical block in the
logical volume 12 a is issued from the host device 30, thecontrol unit 12 selects one unassigned physical block from a plurality of physical blocks of thestorage device 20. Thecontrol unit 12 assigns the selected physical block to the specified logical block and stores the write data in the selected physical block. In this manner, thecontrol unit 12 assigns a physical block to only a logical block in which data is written among the logical blocks of thelogical volume 12 a. - In
FIG. 1 , for example, if a write request of data D1 in the logical block of the logical address XA1 is issued, thecontrol unit 12 assigns a physical block of a physical address of YA1 to the logical block of the logical address XA1. The data D1 is then written in the physical block of the physical address YA1. Also, if a write request of data D2 in a logical block of a logical address XA3 is issued, thecontrol unit 12 assigns a physical block of a physical address YA2 to the logical block of the logical address XA3. The data D2 is then written in the physical block of the physical address YA2. - Also, the
control unit 12 performs the assigning processing of a physical block as described above, and records that data has been written in the specified logical block in thebit map 11 a. InFIG. 1 , for example, thecontrol unit 12 updates the bit of thearea 11 aa corresponding to the logical address XA1 to 1 among the bits of thebit map 11 a in response to the write request of the data D1. Also, thecontrol unit 12 updates the bit of thearea 11 ac corresponding to the logical address XA3 to 1 among the bits of thebit map 11 a in response to the write request of the data D2. - Also, the
control unit 12 performs the processing as follows at the time of deleting thelogical volume 12 a. Thecontrol unit 12 identifies a logical block in which data is written among the logical blocks of thelogical volume 12 a based on thebit map 11 a. In the example inFIG. 1 , the logical blocks corresponding to the respective logical addresses XA1 and XA3 are identified. Next, thecontrol unit 12 reads the addresses of the physical blocks assigned to the identified logical blocks from themanagement information 21. In the example inFIG. 1 , the physical addresses YA1 and YA3 are read. - The
control unit 12 performs release processing for releasing the physical addresses YA1 and YA3. The “release” refers to returning a physical address to a reusable unallocated area. In the release processing, for example, the physical addresses YA1 and YA3 are added to the management information by which unassigned physical addresses in thestorage device 20 are managed. Also, for example, when data is stored in thestorage device 20 so that duplicate data is removed, the release processing may determine whether or not it is possible to release the physical block corresponding to the physical addresses YA1 and YA3. For example, if another logical block is assigned to the physical block, it is not possible to release the physical block. - In the above deletion processing of the
logical volume 12 a, thecontrol unit 12 refers to thebit map 11 a stored in thememory 11 before referring to themanagement information 21 stored in thestorage device 20, and identifies a logical block in which data is written. Accordingly, it is possible for thecontrol unit 12 to read the address of the recorded physical block from the records corresponding to the identified logical block without searching all the records of themanagement information 21. Thereby, it is possible to reduce the number of times thestorage device 20 is accessed and the access time in the deletion processing. As a result, it is possible to shorten the time taken for the deletion processing. - Next, a description will be given of an example of a storage system using a de-duplication technique as a second embodiment.
-
FIG. 2 is a diagram illustrating a storage system according to the second embodiment. The storage system illustrated inFIG. 2 includes astorage device 100 and ahost device 400. Thestorage device 100 and thehost device 400 are coupled via a Storage Area Network (SAN) using, for example, a fibre channel (FC), Internet Small Computer System Interface (iSCSI), or the like. - The
storage device 100 includes a controller module (CM) 200 and a device enclosure (DE) 300. TheCM 200 controls theentire storage device 100. - The
DE 300 includes a plurality of storage devices mounted thereon. TheDE 300 is a disk array device including HDDs as storage devices. In this regard, the storage devices that are mounted on theDE 300 may be another kind of storage devices, such as a solid state drive (SSD), or the like. - In the
storage device 100, theCM 200 controls access to the storage devices mounted on theDE 300 in response to a request from thehost device 400. In particular, theCM 200 creates one or more logical volumes that are realized by the storage area of the storage devices in theDE 300. A logical unit number (LUN) is assigned to each logical volume. Also, each logical volume is divided into logical blocks having a fixed size, and each logical block is given a logical block address (LBA). TheCM 200 then receives an access request specifying the LUN of the logical volume and the LBA of the logical block from thehost device 400. TheCM 200 accesses the data stored in the V in response to the access request. - Also, the
CM 200 performs control such that duplicate data is removed when data of the logical volume is stored in the storage area of the storage devices in theDE 300. Specifically, theCM 200 sets one or more pool volumes using the storage area of the storage devices in theDE 300. Each of the pool volumes may be realized as a simple set of the storage areas of one or more storage devices in theDE 300 or a logical storage area realized by a plurality of storage devices that are controlled by a redundant array of inexpensive disks (RAID). It is possible for theCM 200 to set one or more logical volumes to one pool volume. TheCM 200 then stores the data in all the logical volumes that are set in the one pool volume in the pool volume so as to remove duplicate data. - In this regard, each of the pool volumes is divided into blocks having the same size as the logical blocks of the logical volume, and each block is given an LBA. In the following description, an LBA of a logical block in a logical volume is referred to as a “logical address”, and an LBA of a block in a pool volume is referred to as a “physical address”.
- Next, a description will be given of hardware of the
CM 200. -
FIG. 3 is a diagram illustrating an example of hardware of a CM. TheCM 200 includes aprocessor 201, aRAM 202, anSSD 203, a channel adapter (CA) 204 and a device interface (DI) 205. - The
processor 201 controls information processing of theCM 200. Theprocessor 201 may be a multiprocessor including a plurality of processing elements. - The
RAM 202 is the main memory of theCM 200. TheRAM 202 temporarily stores the program of the operating system (OS) and at least a part of the application programs executed by theprocessor 201. Also, theRAM 202 stores various kinds of data to be used for processing by theprocessor 201. - The
SSD 203 is an auxiliary memory of theCM 200. TheSSD 203 is a nonvolatile semiconductor memory. TheSSD 203 stores the OS program, the application programs, and the various kinds of data. In this regard theCM 200 may include an HDD in place of theSSD 203 as the auxiliary memory. - The
CA 204 is an interface for communicating with thehost device 400. TheDI 205 is an interface for communicating with theDE 300. -
FIG. 4 is a diagram illustrating an example of address corresponding tables. The address corresponding tables are stored in the storage device in theDE 300. An address corresponding table is created for each logical volume. For example, the address corresponding tables 301 a, 301 b, and 301 c inFIG. 4 correspond to the respective logical volumes. In the following, the address corresponding tables are sometimes referred to as an address corresponding table 301 in general. - The address corresponding table 301 includes items of a logical address and a physical address. The item of a logical address includes information indicating the LUN and the LBA of a logical volume. The item of an LUN stores information indicating an LUN. The item of an LBA stores the LBA of a logical volume.
- The item of a physical address stores identification information of a block that is assigned from the pool volume to the logical address. Specifically, the item of a physical address stores information indicating a pool identifier (ID) of a pool volume and an LBA. The item of a pool ID stores identification information of a poor volume. The item of an LBA stores the LBA of a pool volume.
- The address corresponding tables 301 a to 301 c include records corresponding to all the logical blocks in the respective logical volumes. Accordingly, the address corresponding tables 301 a to 301 c have a large amount of data. Thus, the address corresponding tables 301 a to 301 c are not stored in the
RAM 202, but stored in the storage device in theDE 300. Also, only some of the records (for example, the records corresponding to the logical blocks having a high access frequency) of the address corresponding tables 301 a to 301 c may be stored in theRAM 202. -
FIG. 5 is a diagram illustrating an example of hash value management tables. The hash value management tables include information for removing duplication and are included in theRAM 202. A hash value management table is created for each pool volume. For example, the hash value management tables 211 a, 211 b, and 211 c inFIG. 5 individually correspond to the respective pool volumes. In the following, the hash value management tables are sometimes referred to as a hash value management table 211 in general. - The hash value management table 211 includes items of a hash value, a physical address, and a reference count. The item of a hash value stores information indicating a hash value. The item of a physical address stores identification information of the pool volume block in which data corresponding to the hash value is stored. Specifically, the item of a physical address stores the pool ID of the pool volume, and information indicating an LBA. The item of the pool ID stores identification information of a pool volume. The item of an LBA stores the LBA of a pool volume. The item of a reference count stores the number of logical addresses that are assigned to a physical address. The value of the reference count value is increased or decreased in accordance with the assignment state of the physical address. If the value of the reference count becomes 0, the pool volume block indicated by the corresponding physical address is returned to the unallocated area and becomes reusable. That is to say, this block is released.
- In this regard, in the following description, the fact that a physical address is assigned to a logical address is sometimes expressed by the expression “a logical address refers to a physical address”. In the case of using this expression, the reference count indicates the number of logical addresses that refer to physical addresses.
- Next, a comparative example is illustrated in
FIGS. 6 and 7 , and the problems of the comparative example are described. After that, a description will be given of the processing according to the second embodiment. In this regard, in the comparative example, it is assumed that each of the devices described inFIG. 2 is used. -
FIG. 6 is a diagram illustrating a comparative example (1 of 2). TheCM 200 createslogical volumes logical volume 320. LUN2 is assigned to thelogical volume 330. TheCM 200 creates thelogical volumes logical volume 320 and the address corresponding table 301 b corresponding to thelogical volume 330. In the initial state of the address corresponding tables 301 a and 301 b, information indicating that an LUN and an LBA is stored in the item of the logical address is stored, and the item of the physical address is blank (or “NULL” is stored). - Also, a
pool volume 310 is set to the storage area that is assigned to thelogical volumes - The hash value management table 211 a is stored in the
RAM 202 of theCM 200. The hash value management table 211 a is shared between thelogical volumes DE 300. - In
FIG. 6 , the case where thehost device 400 issued a write request of the data specified by the logical address (LUN, LBA). The write request is made for each data block. For example, the amount of data of a data block is 4 kilobytes (KB), and this is the same size as that of the logical block. - The
CM 200 receives the logical address (LUN1, LBA1) of a write destination and the data block from thehost device 400. TheCM 200 then determines whether or not the received data block is duplicated with a data block stored in thepool volume 310. The determination is made of whether or not the hash value calculated based on the received data block is stored in the hash value management table 211 a. In this regard, the hash value is calculated using, for example, the hash function of Secure Hash Algorithm 1 (SHA-1). - Here, it is assumed that the received data block is determined to be duplicated. Also, it is assumed that a determination is made that the same data block as the data block received from the hash value management table 211 a is stored in the physical address (PV1, PA1) of the
pool volume 310. In this regard, PV1 is a pool ID, and PA1 is an LBA. In this case, theCM 200 does not store the received data block in thepool volume 310, but stores the relationship between the logical address (LUN1, LBA1) and the physical address (PV1, PA1) in the address corresponding table 301 a. After theCM 200 stores the relationship, theCM 200 changes the reference count corresponding to the physical address (PV1, PA1) from 1 to 2 in the hash value management table 211 a. Thereby, the fact that the two logical addresses, the logical address (LUN1, LBA1) and the logical address (LUN2, LBA11) refer to the physical address (PV1, PA1) is stored. -
FIG. 7 is a diagram illustrating a comparative example (2 of 2).FIG. 7 illustrates the state where theCM 200 deletes thelogical volume 320 by an instruction from thehost device 400 in the state ofFIG. 6 . - The
CM 200 receives a deletion instruction of thelogical volume 320 from thehost device 400 and starts the deletion processing of thelogical volume 320. TheCM 200 subtracts from the reference count stored in the hash value management table 211 a with the deletion of thelogical volume 320. Here, in order to subtract from the reference count theCM 200 searches all the logical addresses stored in the address corresponding table 301 a for which logical address refers to which physical address. - For example, the
CM 200 refers to the, address corresponding table 301 a, and identifies that the logical address (LUN1, LBA1) refers to the physical address (PV1, PA1). TheCM 200 refers to the hash value management table 211 a, and subtracts from the value of the reference count corresponding to the physical address (PV1, PA1). Next, theCM 200 refers to the address corresponding table 301 a, and identifies that the logical address (LUN1, LBA2) refers to the physical address (PV1, PA2). TheCM 200 refers to the hash value management table 211 a, and subtracts from the value of the reference count corresponding to the physical address (PV1, PA2). Next, theCM 200 refers to the address corresponding table 301 a, and determines that the logical address (LUN1, LBA3) does not refer to any physical addresses. In this manner, theCM 200 searches all the logical addresses. - However, in this manner, if all the logical addresses are searched for, the address corresponding table 301 a is referenced, and thus the number of access times to the storage device in the
DE 300 increases. As a result, it takes a longer time to perform the deletion processing of the logical volume. - Thus, in the second embodiment, only the records that are demanded in the address corresponding table 301 a is referenced so that the number of access times to the storage device in the
DE 300 is reduced. As a result, the processing time for deleting thelogical volume 320 is shortened. A description will be given of the second embodiment using a specific example. -
FIG. 8 is a diagram illustrating a specific example of (1 of 2) of the second embodiment. The difference betweenFIG. 8 andFIGS. 6 and 7 is that bit maps 212 a and 212 b are newly created. Thus, a description will be given mainly of the bit maps 212 a and 212 b. - The bit maps 212 a and 212 b are stored in the
RAM 202. Thebit map 212 a has bits corresponding to the respective logical blocks of thelogical volume 320. Thebit map 212 b has bits corresponding to the respective logical blocks of thelogical volume 330. Each of the bits of the bit maps 212 a and 212 b manages whether or not data is written in the corresponding logical block. For example, a bit corresponding to a logical block in which thehost device 400 has not requested to write data is set to “0”. When a write request is made to the logical block, the bit corresponding to the logical block is set to “1”. -
FIG. 8 illustrates the case where thehost device 400 issued a write request of a data block by specifying a logical address (LUN, LBA). TheCM 200 receives the logical address (LUN1, LBA1) of a write destination, and a data block from thehost device 400. TheCM 200 determines whether or not the received data block and the data block stored in thepool volume 310 are duplicate using a hash value calculated based on the received data block. - Here, it is assumed that a determination is made that the data blocks are duplicate as in the case of
FIG. 6 , and the same data block as the received data block is stored in the physical address (PV1, PA1) of thepool volume 310. In this case, theCM 200 does not store the received data block in thepool volume 310 and stores the relationship between the logical address (LUN1, LBA1) and the physical address (PV1, PA1) in the address corresponding table 301 a. After the storage device, theCM 200 changes the reference count corresponding to the physical address (PV1, PA1) in the hash value management table 211 a from 1 to 2. - Further, the
CM 200 stores that data is written in thearea 212 a 1 corresponding to the logical address (LUN1, LBA1) of thebit map 212 a. Thereby, the bit of thearea 212 a 1 is changed from 0 to 1. -
FIG. 9 is a diagram illustrating a specific example of (2 of 2) of the second embodiment.FIG. 9 illustrates the case where theCM 200 deletes thelogical volume 320 by an instruction from thehost device 400 from the state inFIG. 8 . - The
CM 200 receives a deletion instruction of thelogical volume 320 from thehost device 400, and starts the deletion processing of thelogical volume 320. When theCM 200 deletes thelogical volume 320, the number of logical blocks that reference the blocks of thepool volume 310 is reduced. Accordingly, theCM 200 subtracts from the reference count value stored in the hash value management table 211 a. - The
CM 200 refers to thebit map 212 a corresponding to thelogical volume 320, and identifies the logical address (LUN1, LBA1) whose bit is 1. TheCM 200 refers to the record corresponding to the identified logical address (LUN1, LBA1) among the records of the address corresponding table 301 a and reads the physical address (PV1, PA1) from the record. TheCM 200 refers to the hash value management table 211 a and changes the value of the reference count corresponding to the read physical address (PV1, PA1) from 2 to 1. - Also, the
CM 200 refers to thebit map 212 a, and identifies the logical address (LUN1, LBA2) whose bit is 1. TheCM 200 refers to the record corresponding to the identified logical address (LUN1, LBA2) among the records of the address corresponding table 301 a, and reads the physical address (PV1, PA2) from the record. TheCM 200 refers to the hash value management table 211 a and changes the value of the reference count corresponding to the read physical address (PV1, PA2) from 1 to 0. - By the above procedure, the
CM 200 identifies the logical block whose bit is 1 based on thebit map 212 a in sequence, and reads the physical address corresponding to the identified logical address from the address corresponding table 301 a and subtracts from the value of the corresponds reference count. When theCM 200 completes such subtraction processing of the reference count, theCM 200 deletes the address corresponding table 301 a, thebit map 212 a, and thelogical volume 320. Also, theCM 200 refers to the hash value management table 211 a, and releases the physical address whose reference count value is 0. In the example inFIG. 9 , the block indicated by the physical address (PV1, PA2) is released and is returned to the unassigned block. - In this manner, in the second embodiment,
CM 200 searches the address corresponding table 301 a only for a logical address having a bit of 1 in thebit map 212 a. That is to say, theCM 200 does not search the address corresponding table 301 a for a logical address whose bit is “0”. For example, the logical address (LUN1, LBA3) is not searched. In this manner, not all the logical addresses stored in the address corresponding table 301 a are searched, and only the logical addresses whose bit in thebit map 212 a is “1” are searched, and thus the number of access times to thestorage device 20 is reduced. As a result, it is possible to reduce the processing time for deleting the logical volume. - Next, a detailed description will be given of the
CM 200, -
FIG. 10 is, a diagram illustrating a functional example of the CM. TheCM 200 includes amemory 210, acreation unit 220, anaccess control unit 230 and adeletion processing unit 240. - The
memory 210 is implemented, for example, as a storage area provided in theRAM 202. Thememory 210 stores the hash value management table 211 and the bit maps exemplified inFIGS. 8 and 9 . Also, the information indicating the corresponding relationship between the bits of the bit maps and the logical addresses is stored in thememory 210. Further, the management information indicating the empty state of the blocks in each pool volume is also stored in thememory 210. Also, thememory 210 may store part of the information of the address corresponding table 301. - At least part of the processing of the
creation unit 220, theaccess control unit 230 and thedeletion processing unit 240 are realized, for example, by theprocessor 201 executing a predetermined program. - The
creation unit 220 creates a logical volume. Thecreation unit 220 creates the bit map corresponding to the logical volume and the address corresponding table 301 corresponding to the logical volume. - The
access control unit 230 receives an access request to the logical volume from thehost device 400, and performs access control in accordance with the request. For example, when theaccess control unit 230 receives a write request and a data block from thehost device 400, theaccess control unit 230 determines whether or not the received data block is already stored in the corresponding pool volume. If the data block is not stored, theaccess control unit 230 stores the data block in the pool volume. On the other hand, if the data block is stored, theaccess control unit 230 does not store the data block in the pool volume. - The
access control unit 230 sets the bit of the bit map corresponding to the logical address to which a write request is issued to 1. Also, theaccess control unit 230 stores the relationship between the logical address to which the write request is issued and the physical address in the address corresponding table 301. Further, theaccess control unit 230 updates the reference count of the hash value management table 211. - Also, when the
access control unit 230 receives a read request from thehost device 400, theaccess control unit 230 performs read processing of a data block. - When the
deletion processing unit 240 receives a deletion instruction of a logical volume from thehost device 400, thedeletion processing unit 240 performs the processing accompanied by the deletion of the logical volume with reference to the bit map. More specifically, thedeletion processing unit 240 identifies a logical address whose bit in the bit map is “1”, and reads a physical address associated with the identified logical address from the address corresponding table 301. Thedeletion processing unit 240 refers to the hash value management table 211 and subtracts from the reference count corresponding to the read physical address. Also, when thedeletion processing unit 240 completes the subtraction processing of all the reference counts, thedeletion processing unit 240 deletes the address corresponding table 301 and the bit map that are corresponding to the logical volume to be deleted. Also, thedeletion processing unit 240 deletes the logical volume to be deleted. - Next, a description will be given of the processing executed by the
CM 200 using a flowchart. -
FIG. 11 is a flowchart illustrating an example of processing at the time of creating a logical volume. In the following, a description will be given of the processing illustrated inFIG. 11 with reference to the step numbers. - (S11) The
creation unit 220 creates a logical volume by an instruction from thehost device 400. A pool volume is assigned to the created logical volume. - (S12) The
creation unit 220 creates a bit map corresponding to the created logical volume and stores the bit map in thememory 210. Specifically, thecreation unit 220 creates the bit map in accordance with the capacity of the created logical volume. For example, thecreation unit 220 creates the bit map including the number of bits calculated by “the capacity of the logical volume/the capacity of the logical block (4 kilobytes)”. - (S13) The
creation unit 220 initializes the created bit map. That to say, thecreation unit 220 sets all the bits of the bit map to 0. - (S14) The
creation unit 220 creates an address corresponding table 301 corresponding to the created logical volume. Thecreation unit 220 creates the records corresponding to all the logical blocks of the created logical volume in the address corresponding table 301, stores information indicating an LUN and an LBA in the items of each record, and leaves the item of the physical address blank. Thecreation unit 220 stores the created address corresponding table 301 in the storage device of theDE 300. The processing then is terminated. -
FIG. 12 is a flowchart illustrating an example of write processing. In the following, a description will be given of the processing illustrated inFIG. 12 along the step numbers. In this regard, the hash value management table 211 referenced inFIG. 12 is the hash value management table 211 corresponding to the pool volume assigned to the logical volume in which data is to be written. Also, the address corresponding table 301 referenced inFIG. 12 is the address corresponding table 301 corresponding to the logical volume in which data is to be written. - (S21) The
access control unit 230 receives a write request and a data block from thehost device 400. The write request includes information indicating an LUN and an LBA. Theaccess control unit 230 calculates a hash value of the write requested data block using the hash function of SHA-1. Theaccess control unit 230 determines whether or not the received data block and the data block stored in thepool volume 310 are duplicate depending on whether or not the calculated hash value is stored in the hash value management table 211. - If the calculated hash value is not stored in the hash value management table 211 (not duplicated), the processing proceeds to step S24. On the other hand, the calculated hash value is stored in the hash value management table 211 (duplicated), the processing proceeds to step S22. In, this case, the
access control unit 230 skips the processing (corresponding to step S24) for storing the received data block in thepool volume 310. - (S22) The
access control unit 230 stores the relationship between the physical address in which the data block determined to be duplicated and the logical address at which data is requested to be written in the address corresponding table 301. In this regard, the stored physical address is the physical address associated with the same hash value with the calculated hash value in the hash value management table 211. - Here, if another physical address has been stored before a physical address is stored in the item of the physical address of the address corresponding table 301, this case is referred to as update.
- (S23) The
access control unit 230 refers to the hash value management table 211, and adds one to the reference count corresponding to the physical address at which the data block determined to be duplicated is stored. - Also, in the case of update, the
access control unit 230 determines the physical address that was stored before storing in the item of the physical address in step S22 in the record to be stored in step S22 in the address corresponding table 301. Theaccess control unit 230 subtracts one from the reference count associated with the determined physical address in the hash value management table 211. The processing then proceeds to step S27. - In this regard, if the reference count after the subtraction becomes 0, the
access control unit 230 releases the block in thepool volume 310 indicated by the physical address associated with the reference count. For example, theaccess control unit 230 stores the physical block in the management information in which empty areas in thepool volume 310 are managed as an unassigned block. Also, theaccess control unit 230 deletes the record including the subtracted reference count from the hash value management table 211. - (S24) The
access control unit 230 selects an unassigned physical address from the correspondingpool volume 310. Theaccess control unit 230 stores the received data block in the block indicated by the physical address selected from thepool volume 310. - (S25) The
access control unit 230 stores the relationship between the physical address to which the data block is written and the logical address to which the write request is issued in the address corresponding table 301. - Here, if another physical address has been stored in the item of the physical address before the physical address is stored in the item of the address corresponding table 301, that case is referred to as update.
- (S26) The
access control unit 230 adds a new record to the hash value management table 211. Theaccess control unit 230 stores the physical address at which the data block is stored in the item of the physical address of the added record. Theaccess control unit 230 stores the hash value calculated in step S21 in the item of the hash value of the added record. Theaccess control unit 230stores 1 in the item of the reference count of the added record. - Also, in the case of update, the
access control unit 230 determines the physical address having been stored in the item of the physical address before storing the physical address in the address corresponding table 301 in step S25. Theaccess control unit 230 subtracts 1 from the reference count associated with the determined physical address in the hash value management table 211. - In this regard, if the reference count after the subtraction becomes 0, the
access control unit 230 releases the corresponding block in thepool volume 310 in the same procedure described in step S22, and deletes the corresponding record in the hash value management table 211. - (S27) The
access control unit 230 determines whether or not new writing is performed. New writing refers to the case where a physical address has not been stored in the item of the physical address in the record in which writing is to be performed in step S22 or step S25 in the address corresponding table 301. In this regard, in this case, a determination may be made not by the fact that a physical address is stored in the record, but by the fact that the bit corresponding to the record in the bit map is 0. In the case of new writing, the processing proceeds to step S28. In the case of not new writing, the processing is terminated. - (S28) The
access control unit 230 sets the bit corresponding to the logical address (LUN and LBA) at which writing is requested in the bit map to 1. The processing then is terminated. -
FIG. 13 is a flowchart illustrating an example of read processing. In the following, a description will be given of the processing illustrated inFIG. 13 along the step numbers. - (S31) The
access control unit 230 receives a read request from thehost device 400. The read request includes an LUN and an LBA indicating the logical address of a reading source. Theaccess control unit 230 determines whether or not the bit corresponding to the logical address (LUN and LBA) of the reading source in the bit map is 0. If the bit is 0, the processing proceeds to step S33. If the bit is 1, the processing proceeds to step S32. - (S32) The
access control unit 230 performs read processing of the data block. More specifically, theaccess control unit 230 refers to the address corresponding table 301 and identifies a physical address corresponding to the logical address of the reading source. Theaccess control unit 230 reads the data block stored in the block of thepool volume 310, which is indicated by the identified physical address. Theaccess control unit 230 transmits the read data block to thehost device 400. The processing then is terminated. - (S33) The
access control unit 230 transmits zero data to thehost device 400. In this regard, zero data is data that indicates nonexistence of data, and is for example, a sequence ofbit value 0. The processing then is terminated. - In this manner, if the bit corresponding to the logical address of the reading source in the bit map is 0, the
access control unit 230 does not access the storage device in theDE 300. That is to say, theaccess control unit 230 does not have to refer to the address corresponding table 301 stored in the storage device in theDE 300 in order to confirm that read requested data does not exist in the storage device of theDE 300. Accordingly, it is possible to increase the response speed to a read request using the bit map. -
FIG. 14 is a flowchart illustrating an example of deletion processing of a logical volume. In the following, a description will be given of the processing illustrated inFIG. 14 along the step numbers. - (S41) The
deletion processing unit 240 receives a deletion instruction of a logical volume from thehost device 400. A deletion instruction includes an LUN indicating the logical volume to be deleted. Thedeletion processing unit 240 reads the beginning bit of the bit map, which corresponds to the logical volume to be deleted. - (S42) The
deletion processing unit 240 determines whether or not the bit is 1. If the bit is 1, the processing proceeds to step S43. If the bit is 0, the processing proceeds to step S44. - (S43) The
deletion processing unit 240 refers to the address corresponding table 301, and identifies the physical address associated with the logical address that is managed by the bit determined in step S42. Thedeletion processing unit 240 refers to the hash value management table 211 and subtracts from the reference count corresponding to the identified physical address. - Here, if the reference, count becomes 0 after the subtraction, the
deletion processing unit 240 releases the block of thepool volume 310, which is indicated by the physical address associated with the reference count. Also, thedeletion processing unit 240 deletes the record including the subtracted reference count from the hash value management table 211. - (S41) The
deletion processing unit 240 determines whether or not all the bits in the bit map have been read. If all the bits have not been read, the processing proceeds to step S45. If all the bits have been read, the processing proceeds to step S46. - (S45) The
deletion processing unit 240 reads the next bit in the bit map. The processing then proceeds to step S42. - (S46) The
deletion processing unit 240 deletes the bit map corresponding to the logical volume to be deleted and the address corresponding table 301. Also, thedeletion processing unit 240 deletes the other management information regarding the logical volume to be deleted so as to delete this logical volume. The processing then is terminated. - Also, it is possible to realize the information processing according to the first embodiment by causing the processor used for the
storage controller 10 to execute the program. It is possible to realize the information processing according to the second embodiment by causing theprocessor 201 to execute the program. It is possible to record the program in a computer-readable recording medium. - For example, it is possible to circulate the program by distributing a recording medium on which the program is recorded. Also, the program that realizes the functions corresponding to the
creation unit 220, theaccess control unit 230, and thedeletion processing unit 240 may be divided into separate programs, and the individual programs may be distributed separately. The functions of thecreation unit 220, theaccess control unit 230, and thedeletion processing unit 240 may be realized by separate computers respectively. The computer, for example, may store (install) the program recorded on a recording medium in theRAM 202 or theSSD 203, and may read the program from the storage device, and execute the program. - All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
Claims (6)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016-111767 | 2016-06-03 | ||
JP2016111767A JP2017219913A (en) | 2016-06-03 | 2016-06-03 | Storage control device, storage system and storage control program |
Publications (2)
Publication Number | Publication Date |
---|---|
US20170351457A1 true US20170351457A1 (en) | 2017-12-07 |
US10365846B2 US10365846B2 (en) | 2019-07-30 |
Family
ID=60483191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/586,592 Expired - Fee Related US10365846B2 (en) | 2016-06-03 | 2017-05-04 | Storage controller, system and method using management information indicating data writing to logical blocks for deduplication and shortened logical volume deletion processing |
Country Status (2)
Country | Link |
---|---|
US (1) | US10365846B2 (en) |
JP (1) | JP2017219913A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11307980B2 (en) * | 2018-04-20 | 2022-04-19 | Seagate Technology Llc | Distributed data storage system with passthrough operations |
US11755499B2 (en) * | 2018-05-31 | 2023-09-12 | Secturion Systems, Inc. | Locally-stored remote block data integrity |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6988445B2 (en) * | 2017-12-20 | 2022-01-05 | 富士通株式会社 | Storage system, control device and control method |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030018864A1 (en) * | 2001-07-19 | 2003-01-23 | Fujitsu Limited | Storage controller and control method thereof |
US20080281879A1 (en) * | 2007-05-11 | 2008-11-13 | Shunji Kawamura | Storage controller, and control method of the same |
US20090254722A1 (en) * | 2008-04-03 | 2009-10-08 | Fujitsu Limited | Data storage apparatus |
US20110016152A1 (en) * | 2009-07-16 | 2011-01-20 | Lsi Corporation | Block-level data de-duplication using thinly provisioned data storage volumes |
US20110231594A1 (en) * | 2009-08-31 | 2011-09-22 | Hitachi, Ltd. | Storage system having plurality of flash packages |
US20120158674A1 (en) * | 2010-12-20 | 2012-06-21 | Mark David Lillibridge | Indexing for deduplication |
US20140052947A1 (en) * | 2012-08-20 | 2014-02-20 | Fujitsu Limited | Data storage device and method of controlling data storage device |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005031929A (en) * | 2003-07-11 | 2005-02-03 | Hitachi Ltd | Management server for assigning storage area to server, storage device system, and program |
US20100199065A1 (en) | 2009-02-04 | 2010-08-05 | Hitachi, Ltd. | Methods and apparatus for performing efficient data deduplication by metadata grouping |
JP5464269B2 (en) | 2010-03-29 | 2014-04-09 | 日本電気株式会社 | File storage device, data storage method, and data storage program |
US9069657B2 (en) * | 2011-12-12 | 2015-06-30 | Apple Inc. | LBA bitmap usage |
US10747440B2 (en) * | 2014-09-24 | 2020-08-18 | Hitachi, Ltd. | Storage system and storage system management method |
-
2016
- 2016-06-03 JP JP2016111767A patent/JP2017219913A/en active Pending
-
2017
- 2017-05-04 US US15/586,592 patent/US10365846B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030018864A1 (en) * | 2001-07-19 | 2003-01-23 | Fujitsu Limited | Storage controller and control method thereof |
US20080281879A1 (en) * | 2007-05-11 | 2008-11-13 | Shunji Kawamura | Storage controller, and control method of the same |
US20090254722A1 (en) * | 2008-04-03 | 2009-10-08 | Fujitsu Limited | Data storage apparatus |
US20110016152A1 (en) * | 2009-07-16 | 2011-01-20 | Lsi Corporation | Block-level data de-duplication using thinly provisioned data storage volumes |
US20110231594A1 (en) * | 2009-08-31 | 2011-09-22 | Hitachi, Ltd. | Storage system having plurality of flash packages |
US20120158674A1 (en) * | 2010-12-20 | 2012-06-21 | Mark David Lillibridge | Indexing for deduplication |
US20140052947A1 (en) * | 2012-08-20 | 2014-02-20 | Fujitsu Limited | Data storage device and method of controlling data storage device |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11307980B2 (en) * | 2018-04-20 | 2022-04-19 | Seagate Technology Llc | Distributed data storage system with passthrough operations |
US11755499B2 (en) * | 2018-05-31 | 2023-09-12 | Secturion Systems, Inc. | Locally-stored remote block data integrity |
Also Published As
Publication number | Publication date |
---|---|
US10365846B2 (en) | 2019-07-30 |
JP2017219913A (en) | 2017-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10430286B2 (en) | Storage control device and storage system | |
US10402339B2 (en) | Metadata management in a scale out storage system | |
US10176212B1 (en) | Top level tier management | |
US10248623B1 (en) | Data deduplication techniques | |
US9652173B2 (en) | High read block clustering at deduplication layer | |
JP6526233B2 (en) | Method for deduplication in a storage system, storage system and controller | |
US10037161B2 (en) | Tiered storage system, storage controller, and method for deduplication and storage tiering | |
US20180203637A1 (en) | Storage control apparatus and storage control program medium | |
US9971527B2 (en) | Apparatus and method for managing storage for placing backup data into data blocks based on frequency information | |
WO2015162758A1 (en) | Storage system | |
US10162746B2 (en) | Allocating additional requested storage space for a data set in a first managed space in a second managed space | |
US20130138908A1 (en) | Storage system and pool capacity scale-down control method | |
WO2017149592A1 (en) | Storage device | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
CN107562367B (en) | Method and device for reading and writing data based on software storage system | |
US11461287B2 (en) | Managing a file system within multiple LUNS while different LUN level policies are applied to the LUNS | |
US10365846B2 (en) | Storage controller, system and method using management information indicating data writing to logical blocks for deduplication and shortened logical volume deletion processing | |
KR20190094098A (en) | Storage control device and storage control method | |
JP2019028954A (en) | Storage control apparatus, program, and deduplication method | |
JP2017211920A (en) | Storage control apparatus, storage system, storage control method and storage control program | |
US11474750B2 (en) | Storage control apparatus and storage medium | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
US11157198B2 (en) | Generating merge-friendly sequential IO patterns in shared logger page descriptor tiers | |
US11513702B2 (en) | Placement of metadata on data storage drives in a first storage enclosure of a data storage system | |
US10853257B1 (en) | Zero detection within sub-track compression domains |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: FUJITSU LIMITED, JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:USUI, KAZUHIKO;REEL/FRAME:042447/0042 Effective date: 20170420 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
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 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20230730 |