[go: up one dir, main page]

WO2018061161A1 - Storage apparatus and method for controlling same - Google Patents

Storage apparatus and method for controlling same Download PDF

Info

Publication number
WO2018061161A1
WO2018061161A1 PCT/JP2016/078938 JP2016078938W WO2018061161A1 WO 2018061161 A1 WO2018061161 A1 WO 2018061161A1 JP 2016078938 W JP2016078938 W JP 2016078938W WO 2018061161 A1 WO2018061161 A1 WO 2018061161A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
area
storage
compressed
write
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.)
Ceased
Application number
PCT/JP2016/078938
Other languages
French (fr)
Japanese (ja)
Inventor
俊哉 関
竹内 久治
義裕 吉井
恭男 渡辺
高岡 伸光
和衛 弘中
智大 川口
井上 浩伸
健一 澤
純 宮下
剛士 小田
純 月岡
友輔 斉藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to PCT/JP2016/078938 priority Critical patent/WO2018061161A1/en
Publication of WO2018061161A1 publication Critical patent/WO2018061161A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Definitions

  • the present invention relates to a storage apparatus and a control method therefor, and is suitable for application to a storage apparatus equipped with both a data compression function and a deduplication function, for example.
  • the storage apparatus has a plurality of storage devices for storing data and a storage controller for controlling these storage devices, and aims to provide a large capacity data storage space to the host computer.
  • Storage devices are required to store large amounts of data at low cost.
  • a technique for recording data by lossless compression hereinafter simply referred to as compression
  • compression a technique for recording data by lossless compression
  • Deduplication technology is another technology that reduces the amount of data to be stored.
  • the storage apparatus detects that a plurality of data having the same content exists in the storage apparatus, the deduplication technology leaves only one of them in the storage device in the storage apparatus and stores the remaining data in the storage device. This is a technique to prevent storage.
  • Patent Document 1 discloses a storage device that performs deduplication processing on data that is duplicated among data transferred from a host device and compresses data that has not been deduplicated.
  • the data compression processing unit affects the overhead when decompressing the data. For example, when data is compressed in a large capacity unit, even if only a part of the data is to be read, the data must be decompressed in that capacity unit, and extra overhead is generated. descend. On the other hand, if the data compression processing unit is made too small, the amount of management information increases, and the utilization efficiency of the storage area for storing the management information deteriorates.
  • the compression ratio changes depending on the data content. For this reason, after the storage system compresses the data and stores it in the storage device, when the update data of the data is received from the host device, the size of the update data after compression is smaller than the size of the compressed data stored in the storage device Can also be large. In this case, the compressed update data cannot be overwritten on the area where the compressed data before update is stored, and a different storage method is required.
  • the present invention has been made in view of the above points, and intends to propose a highly useful storage apparatus and control method thereof that can solve the above-mentioned various problems associated with data compression at once. .
  • a virtual volume that is a virtual storage space is provided to a host, and is dynamically stored in response to a data write request to the virtual volume from the host.
  • the storage apparatus to which the area is allocated one or a plurality of storage devices and the storage area of the storage device are dynamically allocated to the virtual volume, and the write target data given from the host together with the write request is stored in the virtual volume.
  • a storage controller that writes to the storage area allocated to the storage device, and the storage controller manages the storage area of the storage device separately into an overwrite area that permits overwriting and an additional writing area that additionally stores data.
  • An overwrite area is allocated, the data to be written is written in the allocated overwrite area, and the data written in the overwrite area is compressed in a second capacity unit smaller than the first capacity and compressed. The data is stored in the additional writing area.
  • a virtual volume that is a virtual storage space is provided to a host, and a storage area is dynamically allocated according to a data write request from the host to the virtual volume.
  • the storage apparatus dynamically allocates one or a plurality of storage devices and a storage area of the storage device to the virtual volume, and writes write target data given from the host together with the write request.
  • a storage controller that writes to the storage area allocated to the virtual volume, and the storage controller includes an overwrite area that allows overwriting, and an additional write area that additionally stores the storage area of the storage device.
  • the storage controller is configured to manage the virtual volume.
  • the capacity unit for allocating the overwrite area to the virtual volume and the capacity unit for compressing the data written to the virtual volume are divided into the second capacity that is a unit for compressing the data. Is made smaller than the first capacity, which is a unit for allocating the overwrite area to the virtual volume, while reducing the amount of extra decompression processing (overhead) when reading compressed data, An increase in management information for managing the area can be prevented. Therefore, it is possible to prevent an increase in the amount of management information while preventing a decrease in access performance of the storage apparatus due to such overhead.
  • the uncompressed data is written in the overwrite area and the compressed data is stored in the additional write area. Can be stored in the storage device without any problem.
  • FIG. 1 is a configuration example of a computer system including a storage device according to an embodiment. It is a figure showing the relationship between a virtual volume and a page. It is a list of management information. It is a structural example of a page management table. It is a structural example of a pool management table. It is a structural example of a virtual volume management table. It is a structural example of a write-once space mapping table. It is an example of a structure of LP conversion table. It is an example of composition of FPMQ and FPTD. It is a list of programs that the storage device has. It is a flowchart of a read process. It is a flowchart of a write process. It is a flowchart of a buffer update program.
  • the processing executed in the storage apparatus may be described using “program” as the subject.
  • the processor (CPU) included in the storage apparatus executes the program to perform the process described in the program. Therefore, the main subject of the process is the processor (CPU), but the explanation becomes redundant. In order to prevent this, the contents of processing may be explained using the program as the subject. Further, part or all of the program may be realized by dedicated hardware.
  • Various programs described below may be provided by a storage medium that can be read by a program distribution server or a computer, and may be installed in each device that executes the program.
  • the computer-readable storage medium is a non-transitory computer-readable medium such as a non-volatile storage medium such as an IC card, an SD card, or a DVD.
  • compression means a process of reducing the data size while maintaining the meaning of the data using a reversible compression algorithm such as the LZW algorithm.
  • data written from the host to the storage apparatus may be compressed.
  • compressed data Data that has been reduced in size as a result of compression processing performed by the storage device
  • uncompressed data data that has not been subjected to compression processing by the storage device
  • decompression The process of returning the compressed data to the original data size using the lossless compression algorithm.
  • “Volume” means a storage space provided by a target device such as a storage device or storage device to an initiator device such as a host computer.
  • the initiator device issues a data write request to a certain position (address) in the storage space, the data is stored in the storage area assigned to that address.
  • the storage apparatus provides a virtual volume formed by so-called Thin Provisioning technology to a host as a volume. In a virtual volume in its initial state (immediately after the virtual volume is defined), no storage area is allocated to each address on the virtual volume.
  • the storage apparatus receives a data write request for an address in the storage space from the initiator device (host), the storage apparatus dynamically determines a storage area to be allocated to the address.
  • Block means an area on the volume.
  • a block is an area having a size equal to the minimum access unit when an initiator device accesses a volume, and has a fixed length.
  • the block size is 512 bytes.
  • LBA Logical Block Address
  • the LBA of the first block of the volume is 0, and subsequent blocks are 1, 2,. . .
  • the serial number is attached.
  • the storage apparatus may use an address other than the LBA as an address for specifying an area on the volume. This will be described in the embodiment.
  • “Duplicate elimination process” is a process of leaving only one data in the storage apparatus and deleting other data from the storage apparatus when there are a plurality of data of the same content in the storage apparatus.
  • the process of determining whether data with the same content exists in the storage device is referred to as a “duplication determination” process.
  • the deduplication processing is processing including duplication determination processing.
  • duplication determination is performed for each data of a predetermined size called a chunk.
  • a chunk In the following embodiment, an example in which the chunk size is 8 KB will be described. However, the chunk size may be other than 8 KB. Data (or chunks) with the same content is called “duplicate data (or duplicate chunks)”.
  • an apparatus that performs duplication determination is characterized by a small size (for example, about 8 bytes) that is calculated based on data to be compared, such as a hash value that is calculated using a hash function.
  • a check code consisting of a quantity is generated, and duplication is determined using the generated check code.
  • a check code generated from data is referred to as “FingerPrint Key”. FingerPrint Key may be abbreviated as FPK.
  • FPK of data A if the value of FPK calculated from data A is H, value H is referred to as FPK of data A. Conversely, data A may be referred to as “data having FPK H”.
  • ⁇ “ Duplicate exclusion range ” means the data search range when determining the presence or absence of duplicate data.
  • the deduplication range is “storage device”
  • the storage device compares the data A with all data in the storage device when determining whether the same data as the data A exists.
  • the scope of deduplication is limited to a part of the storage devices in the storage apparatus (herein referred to as “storage groups”)
  • the storage apparatus The presence or absence of duplicate data is searched from only the data inside.
  • Updating the storage area means rewriting (overwriting) the contents of the data stored in the storage area with new contents.
  • Data that has been stored in a storage area before it is updated is referred to as “pre-update data”.
  • pre-update data data that has been stored in a storage area before it is updated
  • update data data newly written in the storage area
  • Log-structured write or “log-structured” means an operation of sequentially writing data to an unused area of a storage area.
  • a storage area for additional writing is provided.
  • data is written in order from the beginning of the storage area for additional writing.
  • the storage device stores the end address to which data has been written in the immediately preceding write process, and writes data from the address next to this end address when performing the write process.
  • FIG. 1 shows a configuration example of a computer system including a storage apparatus 1 according to this embodiment.
  • the storage device 1 includes a storage controller 10 and a plurality of storage devices 20 connected to the storage controller 10.
  • the storage device 20 is used for the storage device 1 to store write data from a host device such as the host 2.
  • a host device such as the host 2.
  • an HDD (Hard Disk Drive) 22 using a magnetic disk as a storage medium or an SSD (Solid State Drive) 21 adopting a nonvolatile semiconductor memory such as a flash memory as a storage medium is used.
  • the storage device 20 is connected to the storage controller 10 by a transmission line (SAS link) conforming to the SAS (Serial Attached SCSI) standard, a transmission line (PCI link) conforming to the PCI (Peripheral Component Interconnect) standard, or the like.
  • One or more hosts 2 are connected to the storage controller 10.
  • a management host 5 is connected to the storage controller 10.
  • the storage controller 10 and the host 2 are connected via a SAN (Storage Area Network) 3 formed using a fiber channel as an example.
  • the storage controller 10 and the management host 5 are connected via a LAN (Local Area Network) 6 formed using Ethernet (registered trademark) as an example.
  • the storage controller 10 includes at least a processor (also referred to as a CPU) 11, a host interface (also referred to as “host I / F”) 12, a device interface (also referred to as “device I / F”) 13, a cache memory 14, a management I / O. F15 and local memory 16 are provided.
  • the CPU 11, host I / F 12, device I / F 13, cache memory 14, and management I / F 15 are interconnected via an internal switch (also referred to as an internal SW) 17.
  • an internal switch also referred to as an internal SW
  • the device I / F 13 has at least an interface controller and a transfer circuit.
  • the interface controller is a component for converting a protocol (SAS in one example) used in the storage device 20 into a communication protocol (PCI-Express as an example) used in the storage controller 10.
  • the transfer circuit is used when the storage controller 10 transfers data (read, write) to the storage device 20.
  • the host I / F 12 has at least an interface controller and a transfer circuit, like the device I / F 13.
  • the interface controller of the host I / F 12 converts the communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and the communication protocol used in the storage controller 10. Is to do.
  • the CPU 11 performs various controls of the storage device 1.
  • the local memory 16 stores a program executed by the CPU 11 (referred to as a storage control program). Further, the CPU 11 uses a part of the storage area on the local memory 16 as a kind of work area when performing data compression processing.
  • a volatile storage medium such as DRAM or SRAM is used. However, as another embodiment, a nonvolatile memory may be used.
  • the cache memory 14 is used for temporarily storing I / O target data for the storage device 20. Further, it is used for storing various management information of the storage apparatus 1 used by the CPU 11.
  • a volatile storage medium such as DRAM or SRAM is used.
  • the cache memory 14 may be configured using a nonvolatile memory.
  • an auxiliary power source such as a battery may be mounted on the storage device 1 so that the stored contents of the cache memory 14 can be maintained during a power failure.
  • the CPU 11 is configured to be able to access both the local memory 16 and the cache memory 14. However, when the CPU 11 accesses the cache memory 14, it accesses via the internal switch 17. Therefore, the response time when the CPU 11 accesses the cache memory 14 is longer than the response time when the CPU 11 accesses the local memory 16.
  • the management host 5 is a computer for performing management operations of the storage apparatus 1.
  • the management host 5 includes input / output devices (not shown) such as a keyboard and a display, and a user (administrator) can issue a setting instruction to the storage apparatus 1 using the input / output devices.
  • the management host 5 can also display information such as the status of the storage apparatus 1 on an output device such as a display.
  • the storage apparatus 1 can compress data stored in the storage device 20.
  • Data compression is performed by the CPU 11 (compression is performed by executing a program code for performing data compression by the CPU 11).
  • the storage controller 10 may be provided with dedicated hardware for performing data compression, and the storage controller 10 may be configured to perform data compression using this hardware.
  • the one or more storage devices 20 included in the storage apparatus 1 according to the present embodiment provide the storage controller 10 with a storage space of a predetermined size. However, the storage controller 10 does not directly provide the storage space provided by the storage device 20 to the host 2.
  • the storage controller 10 provides the host 2 with one or more virtual storage spaces different from the storage space provided by the storage device 20. This virtual storage space is called a “virtual volume”.
  • a virtual volume (a storage space provided to the host 2) may be referred to as an “overwrite space”.
  • the virtual volume is a volume that is formed using a known Thin Provisioning technology.
  • the storage apparatus 1 receives an access request for an area on the virtual volume from the host 2, the storage apparatus 1 allocates (maps) the storage area of the storage device 20 to the area.
  • the storage device 20 that can be allocated to the virtual volume belongs to a management unit called “pool”.
  • the storage device 1 manages the storage space of the storage device 20 belonging to the pool by dividing it into partial areas of a predetermined size (42 MB as an example). In the present embodiment, this partial area is referred to as “page” or “physical page”.
  • a plurality of pools may be provided in the storage device 1. Each pool is assigned an identification number that is unique within the storage apparatus 1, and this identification number is called a pool number (pool #). A pool with pool #k is denoted as “pool #k”.
  • the storage device 1 allocates the storage area of the storage device 20 to the virtual volume, it allocates for each page. Therefore, the storage apparatus 1 manages the virtual volume by dividing it into an area having the same size as the page.
  • An area of the same size as a page on the virtual volume is called a “virtual page” or “overwrite page”.
  • the size of the virtual page is 42 MB will be described.
  • the size of the virtual page may be other than this.
  • the host 2 When the host 2 accesses the virtual volume, the host 2 issues an access request (read request, write request, etc.) to the storage device 1.
  • the read request and write request include an identifier (Logical Unit Unit Number (LUN) or the like) for specifying the virtual volume to be accessed and information for specifying an area on the virtual volume.
  • the information specifying the area on the virtual volume includes information on the LBA and the length of the area.
  • the storage apparatus 1 receives a write request from the host 2, the storage apparatus 1 specifies a virtual page to be accessed from information (LBA and area length) that specifies an area on the virtual volume included in the write request. .
  • the storage apparatus 1 selects an unused page (a page that has not been allocated to the virtual page) among the pages belonging to the pool, and sets it as the virtual page to be accessed. Assign (map) the selected page. Write data from the host 2 is stored in a page mapped to this access target virtual page.
  • the storage device 1 also stores the correspondence (mapping) between the virtual page and the page assigned to the virtual page in a mapping table (such as a virtual volume management table 300 described later with reference to FIG. 6).
  • a mapping table such as a virtual volume management table 300 described later with reference to FIG. 6.
  • FIG. 2 is a conceptual diagram showing the relationship between a virtual volume and a storage area (page) allocated to the virtual volume.
  • a rectangular object 40 shown in FIG. 2 represents a virtual volume (overwriting space).
  • the cylindrical object 50 represents a pool.
  • the storage device 1 has a storage space different from the virtual volume (overwrite space) 40.
  • This storage space is called “write-once space”.
  • a rectangular object 60 shown in FIG. 2 represents a write-once space.
  • the write-once space 60 is not a storage space that can be accessed by the host 2 but a storage space that can be used only by the storage controller 10.
  • the write-once space 60 is used for the CPU 11 of the storage controller 10 to store the compressed data in the storage device 20.
  • Each virtual page is assigned a unique identification number (a non-negative integer value is used for the identification number) called a virtual page number (sometimes referred to as VP #).
  • a virtual page with a virtual page number n (n is a non-negative integer value) is denoted as “VP # n”.
  • each physical page is given a unique identification number in the storage apparatus 1 called a physical page number (or page #) (this identification number is also a non-negative integer value).
  • page #n a physical page whose physical page number is n (n is a non-negative integer value) is denoted as “page #n”.
  • FIG. 2 an example in which page # 0 is mapped to VP # 0 is shown.
  • VP # 1 and VP # 2 will be described later.
  • the storage apparatus 1 When the storage apparatus 1 receives a write request (and write data) for an area (one or a plurality of blocks) in the virtual page from the host 2, the write data is stored in the block in the physical page mapped to the virtual page. Is done.
  • the storage apparatus 1 manages the correspondence (mapping) between virtual pages and physical pages by storing them in a virtual volume management table 300 described later with reference to FIG.
  • the storage apparatus 1 when the storage apparatus 1 according to the present embodiment receives a data write request from the head of the virtual page to the nth block (except for the case of compressed data storage described later), the data is mapped to the virtual page. Stored in the nth block from the top of the physical page. In order to avoid redundant description, in the following, the storage apparatus 1 stores data in a physical page allocated to a virtual page, and “stores data in a virtual page (or overwrite space)”. It expresses.
  • the write-once space is a storage space formed by so-called Thin Provisioning technology.
  • the storage controller 10 dynamically assigns a page (physical page) to an area on the write-once space, and data is written to the physical page assigned to the write-once space.
  • the storage device 1 manages the write-once space by dividing it into an area having the same size as the physical page. This area is called “additional page”.
  • a unique identification number called an additional page number is also attached to the additional page.
  • the additional page number may be written as an additional page #.
  • the storage device 1 manages the correspondence (mapping) between the additional page and the physical page by storing it in an additional space mapping table 350 (FIG. 7) described later. Further, in order to avoid redundant description, in the following description, the storage apparatus 1 writes data to a physical page assigned to an additional page, and “writes data to the additional page (or additional space). ".
  • the data written in the write-once space is compressed data. Further, an additional write space is provided for each virtual volume. When there are n virtual volumes, there are n additional write spaces.
  • As the physical page allocated to the write-once space an unused physical page is selected from the pool, similarly to the physical page allocated to the virtual page.
  • the physical page allocated to the write-in space is a physical page of pool #k.
  • the storage device 1 performs compression processing on data (uncompressed data) written from the host 2 to the virtual page as necessary.
  • the compressed data generated by the compression process is moved to a location different from the physical page storing the non-compressed data, specifically, to the write-once space. At this time, the presence / absence of duplicate data is also determined.
  • the storage apparatus 1 divides the area in the virtual page into 8 KB partial areas in order from the top of the virtual page, and performs data compression for each partial area.
  • this 8 KB partial area (or data stored in this partial area) is called a “chunk”.
  • a size other than 8 KB may be adopted as the size of the chunk.
  • Data generated by compressing a chunk is called a “compression chunk”.
  • the size of the compressed chunk varies depending on the data contents, but is 512 bytes at the minimum and 8 KB at the maximum. Further, the storage device 1 according to the present embodiment generates a compressed chunk having an integer multiple of 512 bytes.
  • the storage controller 10 When the storage controller 10 (the CPU 11 thereof) generates a compressed chunk, the storage controller 10 adds the compressed chunk to the additional write space.
  • the page assigned to the virtual page When all the chunks of a certain virtual page are compressed and all the compressed chunks are written to the write-once space, the page assigned to the virtual page is discarded. Specifically, the page assigned to the virtual page is changed to an unused state (a state not assigned to the virtual page). As a result, the data written to the overwrite space is moved to the additional write space.
  • a plurality of virtual page chunks may be stored in the physical page allocated to the write-once space. This is because the chunk size is reduced by the compression, and data of a plurality of virtual pages may be accommodated in one physical page.
  • the storage apparatus 1 manages the correspondence (mapping) between the chunks in the overwrite space and the compressed chunks in the write-once space by storing them in an LP conversion table 500 described later with reference to FIG.
  • the storage apparatus 1 again allocates a physical page to the virtual page in the overwrite space, expands the data moved to the write-once space, and expands the data expanded to the physical page allocated to the virtual page. You may make it write back and update (overwrite) the data on this physical page.
  • LA An address used by the storage apparatus 1 to identify a chunk on the overwrite space.
  • LA is an address assigned to each chunk.
  • LA LBA ⁇ 16 Are in a relationship.
  • the LA of the chunk located at the top of the overwrite space is 0, and the LA of the subsequent chunks are 1, 2,. . . It becomes the serial number.
  • the compressed chunk on the write-once space has a variable length and a minimum size of 512 bytes
  • an address is assigned to each 512-byte area (block) on the write-once space. This address is called PA.
  • the PA in the 512-byte area located at the head of the write-once space is 0, and the PA in the subsequent area is 1, 2,. . .
  • the serial number is used.
  • FIG. 3 shows the management information that the storage apparatus 1 has.
  • the storage apparatus 1 has a page management table 200, a virtual volume management table 300, an additional write space mapping table 350, a logical-physical conversion table (LP conversion table) 500, an FPMQ (FingerPrint Match400Queue) 400, and an FPTD (FingerPrint) on the cache memory 14.
  • Table Directory 450 and pool management information 600.
  • FIG. 4 shows an example of a page management table 200 that is information for managing pages belonging to the pool.
  • the page management table 200 is a table provided for each pool.
  • the storage apparatus 1 has n page management tables 200.
  • Each row (record) of the page management table 200 stores physical page information in the pool.
  • Each record has columns of page # (201), DEV # (202), Addr (203), and use (204).
  • Page number (201) stores the page number of the physical page. That is, the record of page # (201) n is a record for managing information of page #n.
  • a page is an area on the storage device 20.
  • DEV # (202) and Addr (203) the identification number of the storage device 20 where the physical page exists and the address in the storage device are stored.
  • the record managing the information of page # 1 stores 0 in DEV # (202) and 0x15000 in Addr (203). Therefore, page # 1 represents that it corresponds to a 42 MB area (an area equal to the size of one physical page) of the storage device 20 with the identification number 0 starting from address 0x15000.
  • Use (204) stores information indicating the usage status of the physical page.
  • “1” is stored in the use (204).
  • “0” is stored in use (204).
  • a page whose use (204) is “1” is called a page in use, and conversely, a page whose use (204) is “0” is called an unused page.
  • the identification number and address of the storage device 20 are registered in the page management table 200 and each page corresponds to a storage area in one storage device 20.
  • other pool (or page) configuration methods may be employed.
  • the storage apparatus 1 forms a single logical storage device (referred to as a logical device) from a plurality of storage devices 20 using RAID (Redundant Arrays of Independent (or Inexpensive) Disks) technology
  • a storage area of a predetermined size for example, 42 MB
  • the DEV # (202) and Addr (203) of the page management table 200 may store the logical device identification number and the address in the logical device.
  • FIG. 5 shows an example of the pool management information 600.
  • the pool management information 600 is a table for storing information about virtual volumes belonging to each pool.
  • the storage apparatus 1 causes each virtual volume to belong to one of the pools.
  • the storage apparatus 1 selects an unused physical page in the pool to which the virtual volume belongs and allocates the physical page to the virtual page.
  • each record of the pool management information 600 information on the pool number (601), virtual volume # (603), and last write position (602) is stored.
  • the pool number (601) stores the pool number.
  • Virtual volume # (603) stores the identification number (referred to as a virtual volume number) of the virtual volume belonging to the pool.
  • a plurality of virtual volume numbers are stored in the virtual volume # (603).
  • the last write position (602) corresponds to each virtual volume that belongs to the corresponding pool (each virtual volume whose virtual volume number is stored in virtual volume # (603) in the same row) and corresponds to that virtual volume.
  • the additional page number of the additional page to which the compressed chunk is written at the end in the attached additional space is stored.
  • the last write position is specified by referring to the final write position (602).
  • FIG. 6 shows an example of the virtual volume management table 300.
  • a virtual volume management table 300 is also stored in the cache memory 14.
  • Each record of the virtual volume management table 300 stores information about virtual pages in the virtual volume. Specifically, information of virtual page # (301), last update time (302), page type (303), page # (304), and pool # (305) is stored in each record.
  • the virtual page number (301) stores the virtual page number of the virtual page.
  • the page # (304) stores the page # of the physical page assigned to the virtual page.
  • Pool # (305) is the pool number of the pool to which the physical page assigned to the virtual page belongs.
  • the storage apparatus 1 stores the time when the write request is received as the last update time (302) of the virtual page.
  • page # (304) and pool # (305) have invalid values (referred to as null, specifically, values such as “ ⁇ 1” that are not used for page # or pool #).
  • null specifically, values such as “ ⁇ 1” that are not used for page # or pool #.
  • each record of the virtual volume management table 300 includes information for specifying a virtual volume (for example, a virtual volume number) in addition to the information such as the virtual page # (301) described above. ) May be included.
  • FIG. 7 shows an example of the write-once space mapping table 350.
  • the write-once space mapping table 350 is management information for managing physical pages mapped to the write-once space. Since the additional write space is provided for each virtual volume, the additional write space mapping table 350 also exists for each virtual volume. In each line's additional page # (351), additional page numbers are stored in ascending order. Each record of the additional space mapping table 350 indicates that the page specified by the page # (352) and the pool # (353) is allocated to the additional page specified by the additional page # (351). Represents. When no page is assigned to the additional writing page, null is stored in page # (352) and pool # (353) of the additional writing page.
  • the relative address of the block in which the compressed chunk is written last among the blocks in the additional write page is stored.
  • the relative address is an address of a block when the address of the first block in the page is set to 0.
  • the storage device 1 refers to the final write position (354) in the page and the final write position (354) of the pool management information 600 to write the compressed chunk. Is identified.
  • the logical-physical conversion table 500 is a table for managing the movement destination of each chunk when the chunk on the overwrite space is compressed and moved to the write-once space.
  • FIG. 8 shows an example of the logical-physical conversion table 500.
  • the logical-physical conversion table 500 may be expressed as an LP conversion table 500.
  • the record of the LP conversion table 500 represents information on the correspondence (mapping) between the chunk on the virtual volume and the recording position of the compressed chunk.
  • Each record is stored in an area of length (504) starting from the address specified by PA (503) after the 8 KB area (chunk) specified by LA (501) of the record is compressed. It represents that.
  • the storage apparatus 1 since the storage apparatus 1 according to the present embodiment performs the deduplication processing, in principle, control is performed so that a plurality of chunks having the same contents are not stored in the write-once space.
  • the outline of the deduplication processing will be described again with reference to FIG.
  • the storage apparatus 1 When the chunk A and chunk B of the VP # 1 of the virtual volume are stored in the write-once space as the compressed chunk a and the compressed chunk b, the storage apparatus 1 additionally writes the VP # 2 chunk. Assume that the process of moving to space is started. If the contents of the chunk D are the same as the chunk B, the compressed chunk of the chunk D is not written to the write-once space. Instead, the storage apparatus 1 uses the same value as the PA (503) of the record storing the chunk B information in the LP conversion table 500, and the PA of the record storing the chunk D information in the LP conversion table 500. (503).
  • FKP is information having a size of 8 bytes.
  • the FKP may have a size other than 8 bytes. A specific calculation method of FKP in the present embodiment will be described later.
  • the storage device 1 records the correspondence between the FPK generated from the chunk and the LA of the chunk in the management information.
  • This management information is called FingerPrint Match Queue (hereinafter referred to as “FPMQ”).
  • FIG. 9 shows an example of the FPMQ 400.
  • the FPMQ 400 is a table having columns of FPK (401) and LA (402), and an FPK generated from an 8 KB area (chunk) starting from LA (402) is stored in the FPK (401). Each row (record) stored in the FPMQ 400 is sorted in the ascending order of the FPK (401).
  • a record of the FPMQ 400 that is, a set of the FPK (401) and the LA (402) may be referred to as “chunk metadata” (or simply “metadata”).
  • FPMQ 400 is provided for each virtual volume. For example, when the storage device 1 moves a chunk of the virtual volume #n (overwrite space) to the write-once space (this chunk is called “chunk A”), by referring to the FPMQ 400 for the virtual volume #n, It is determined whether the same chunk (compressed chunk) as chunk A already exists in the write-once space. When the same FPK as the FPK of the chunk A does not exist in the FPMQ 400 for the virtual volume #n, it can be determined that the same chunk (compressed chunk) as the chunk A does not exist in the additional write space for the pool #n. In the storage apparatus 1 according to this embodiment, the deduplication range is a virtual volume. Therefore, the same chunk (compressed chunk) as chunk A does not exist in virtual volume #n, but if it exists in a virtual volume other than virtual volume #n, chunk A (compressed chunk) is written to virtual volume #n.
  • the storage apparatus 1 has management information that records addresses (addresses on the cache memory 14) in which some records in the FPMQ 400 are stored. .
  • This management information is called FingerPrint Table Directory.
  • FPTD FingerPrint Table Directory
  • FIG. 9 shows an example of FPTD450.
  • the FPTD 450 is also provided for each virtual volume.
  • the FPMQ storage address (452) stores the record having the smallest FPK401 among the records of the FPMQ400, in which the upper 32 bits of the FPK stored in the FPK401 are equal to the first 32 bits (451) of the FPK.
  • An address (address on the cache memory 14) is stored.
  • the FPK 401 having the smallest value among the records having the upper 32 bits of the FPK 401 being “0x00000001” is “0x0000000100000001”.
  • the address storing the record “0x0000000100000001” in the FPK 401 is “ADR2”
  • the FPTD 450 has a record in which the first 32 bits (451) of the FPK is “0x00000001” and the FPMQ storage address 452 is “ADR2”. Is recorded.
  • the deduplication program 1000 After calculating the FPK of the chunk, a process of determining whether the same value as the FPK is stored in the FPK (401) of the FPMQ 400 is performed. Since the search takes time when the number of records stored in the FPMQ 400 is very large, the FPTD 450 is used.
  • the deduplication program 1000 when searching for a record in which “0x0000000100000001” is stored, the deduplication program 1000 refers to the FPTD 450 so that the FPMQ storage address (452) with the FPK leading 32 bits (451) “0x00000001” is “ADR2”. Recognize that there is. Subsequently, the deduplication program 1000 searches the records in the FPMQ 400 for records in which “0x0000000100000001” is stored in order from the record at the address “ADR2” (this is the address on the cache memory 14).
  • the FPTD 450 is information for improving the search speed of information in the FPQ 400, and thus the FPTD 450 is not essential information.
  • the FPMQ 400 stores chunk metadata for each chunk. If there are many chunks that have generated FPK, the size of the FPMQ 400 increases, and the storage area of the cache memory 14 is consumed. In order to avoid excessive consumption of the storage area of the cache memory 14, the storage apparatus 1 according to the present embodiment performs control not to store the chunk metadata in the FPMQ 400 for chunks that satisfy a predetermined condition. Details of this control will be described later.
  • the FPK upper 32 bits (502) and FPMQ registration (505) in FIG. 8 will be described.
  • the upper 32 bits of the FPK of the chunk are stored in the FPK upper 32 bits (502) of the LP conversion table 500.
  • the FPMQ registration (505) is information indicating whether or not the chunk metadata is registered in the FPMQ 400.
  • the storage device 1 registers the metadata of the chunk specified by the LA (501) in the FPMQ 400, “1” is recorded in the FPMQ registration (505), and otherwise “0” in the FPMQ registration (505). Is recorded.
  • the FPK generated from the chunk (and the LA of the chunk) is registered in the FPMQ 400, the FPK and the LA of the chunk may be deleted from the FPMQ 400. Also in this case, the storage apparatus 1 records “0” in the FPMQ registration (505).
  • the local memory 16 is provided with operation information 300 ′ and a buffer 700.
  • the buffer 700 is a memory area used when the CPU 11 performs compression processing or decompression processing.
  • the operation information 300 ′ is information in which a part of the information stored in the virtual volume management table 300 (FIG. 6) is stored. Specifically, the operation information 300 ′ has only the virtual page # (301) and the last update time (302) among the records of the virtual volume management table 300. Therefore, the operation information 300 ′ is not shown in this specification.
  • FIG. 11 shows the flow of read processing executed by the I / O program 100 when the storage apparatus 1 receives a read request as an I / O request from the host 2.
  • FIG. 11 illustrates an example of a case where the data in the area specified by the read request does not exist in the cache memory 14 (case of cache miss).
  • Step 11 Upon receiving a read request from the host 2, the I / O program 100 converts the read destination address (LBA) included in the read request into a virtual page number.
  • LBA read destination address
  • the virtual page number of the read destination area is p will be described.
  • the read destination area specified in the read request does not extend over a plurality of virtual pages will be described.
  • Step 12 The I / O program 100 refers to the virtual volume management table 300 and determines whether the page type (303) of the virtual page number (p) obtained in Step 11 is “1”. If the page type (303) is “1” (step 12: Yes), then step 13 is performed. If not (step 12: No), then step 15 is performed.
  • Step 13 The I / O program 100 refers to the virtual volume management table 300 and identifies the page number (304) of the physical page assigned to the virtual page (VP # p). Further, the I / O program 100 refers to the page management table 200 to identify the DEV # (202) and Addr (203) of the storage device 20 in which the physical page exists.
  • Step 14 The I / O program 100 reads data from the storage device 20 specified in step 13, returns the read data to the host 2, and ends the processing. Note that the data read here may be stored in the cache memory 14. Then, when the read request for the data is received again later, the I / O program 100 can return the data to the host 2 without accessing the storage device 20.
  • Step 15 When step 15 is executed, since the data in the area specified by the read request has been moved to the additional write space, the I / O program 100 stores the read target data (compressed chunk). It is necessary to calculate the address (PA) on the write-once space.
  • PA address
  • the chunk I / O program 100 converts the read destination address (LBA) included in the read request into LA.
  • Step 16 The I / O program 100 refers to the LP conversion table 500, identifies a record in which LA (501) is equal to the LA identified in step 15, and identifies PA (502) and Length (503) of the record. To do. Further, the I / O program 100 calculates the additional page number from the identified PA, and refers to the additional space mapping table 350 to thereby determine the page # of the physical page assigned to the identified additional page. (352) and specify the pool # (353). Further, the I / O program 100 refers to the page management table 200 to identify the DEV # (202) and Addr (203) of the storage device 20 in which the physical page exists.
  • Step 17 The I / O program 100 reads the data (compressed chunk) requested to be read from the storage device 20 specified in Step 16, stores the data in the buffer 700, and decompresses the compressed chunk stored in the buffer 700.
  • the data decompression process to be returned to the host 2 is executed. Details of the data decompression process will be described later. Thereafter, the I / O program 100 ends the process. Note that the data read here may be stored in the cache memory 14.
  • Step 101 Upon receiving a write request from the host 2, the I / O program 100 secures an area on the cache memory 14 in order to receive data to be written by the write request.
  • the I / O program 100 stores the write target data in the secured area. Since this is a process performed also in a known storage device, detailed description thereof is omitted.
  • the I / O program 100 converts the address (LBA) of the write destination area specified in the write request into a virtual page #.
  • LBA address
  • Step 102 The I / O program 100 responds to the host 2 that the write processing has been completed.
  • Step 103 The I / O program 100 updates the last update time (p) of the record whose virtual page # (301) is p among the records of the operation information 300 ′ (FIG. 10) held in the local memory 16 (FIG. 10). 302) stores the current time (the time when step 103 is executed).
  • the I / O program 100 writes the data stored in the cache memory 14 to the storage device 20 at a predetermined opportunity (step 110).
  • This process is called destage.
  • data written to a virtual page (assuming this is VP # p) is destaged, if a physical page is allocated to the virtual page, the data is de-stored in the storage device 29 where the allocated physical page exists. Stage. If no physical page is allocated, the physical page is allocated to the virtual page before destage.
  • the I / O program 100 adds data to the write-once space. Details of this processing will be described later.
  • step 110 need not be performed immediately after step 103, and may be performed at any time. For example, it may be executed when the load on the CPU 11 of the storage device 1 is low, or when the amount of data stored in the cache memory 14 exceeds a predetermined threshold.
  • the buffer update program 150 is a program that is periodically executed.
  • the buffer update program 150 When the execution of the buffer update program 150 is started, the buffer update program 150 reflects the contents of the operation information 300 ′ in the virtual volume management table 300. The flow of processing will be described with reference to FIG.
  • Step 151 The buffer update program 150 selects one record of the operation information 300 '.
  • the value of the virtual page # (101) of this record is p will be described as an example.
  • Step 152 The buffer update program 150 records the last update time of the record of the selected operation information 300 ′ at the last update time (302) of the record whose virtual page # (301) is p in the virtual volume management table 300. .
  • Step 153 The buffer update program 150 deletes the record of the operation information 300 'selected in Step 151 from the local memory 16.
  • Step 154 When the processing up to step 153 is completed for all the records of the operation information 300 '(step 154: Yes), the processing is terminated. When the record of the operation information 300 ′ still remains in the local memory 16 (Step 154: No), the buffer update program 150 repeats the processing from Step 151.
  • the storage apparatus 1 Since the storage apparatus 1 according to this embodiment performs access via the internal switch 17 when the CPU 11 accesses the cache memory 14, the access performance (response time) is the performance when the CPU 11 accesses the local memory 16. It is not good (becomes longer) than. Therefore, the storage apparatus 1 according to the present embodiment temporarily records the information of the last update time in the operation information 300 ′ on the local memory 16, and regularly reflects the contents on the virtual volume management table 300 on the cache memory 14. Take control.
  • the storage apparatus 1 when the storage apparatus 1 has only the local memory 16 and the virtual volume management table 300 is stored in the local memory 16, it is not necessary to perform such control, and I / O
  • the program 100 may directly update the last update time (302) of the virtual volume management table 300 in step 103.
  • the storage apparatus 1 has only the cache memory 14 and all the information is stored in the cache memory 14, it is not necessary to perform the control described above, and the I / O program 100 is executed in step 103.
  • the virtual volume management table 300 on the cache memory 14 may be updated.
  • the deduplication program 1000 performs a process of moving data written in the overwrite space from the host 2 (this data is stored in a physical page once assigned to the overwrite space) to a page assigned to the additional write space. It is a program. As described above, when data (chunk) is moved to a page allocated to the write-once space, the chunk is compressed. Deduplication processing may be performed.
  • Step 1010 The deduplication program 1000 refers to the virtual volume management table 300 and selects a virtual page for moving data to the write-once space.
  • the virtual page selection criteria may be arbitrary. As an example, a virtual page with a page type (303) of “1” is selected such that the difference between the current time and the last update time (302) is equal to or greater than a predetermined threshold and the last update time (302) is the oldest. Good. Since the data (chunk) stored in the write-once space is compressed, the response time at the time of access becomes long. Therefore, it is preferable that data with low access frequency is arranged in the write-once space rather than data with high access frequency.
  • Step 1020 The deduplication program 1000 reads the data of the virtual page selected in Step 1010 from the storage device 20 onto the cache memory 14. If such virtual page data already exists on the cache memory 14, this step 1020 need not be executed.
  • Step 1030 The deduplication program 1000 selects a chunk from the data read onto the cache memory 14 in step 1020.
  • the method for selecting chunks is arbitrary. For example, you may make it select in order from the chunk with small LA.
  • Step 1040 The deduplication program 1000 transfers the chunk selected in step 1030 (or step 1080 described later) to the buffer 700.
  • Step 1050 The deduplication program 1000 calculates the FPK of the chunk transferred to the buffer 700, stores it in the LP conversion table 300, and generates a compressed chunk by compressing the data of the chunk. Details of this processing (hereinafter referred to as FPK calculation / data compression processing) will be described later.
  • the compressed chunk generated here is temporarily stored in the buffer 700.
  • Step 1060 In step 1050, it is determined whether or not data compression is successful. If the data compression is successful (step 1060: Yes), step 1070 is performed next. If not (step 1060: No), step 1080 is performed next.
  • Step 1070 In this step, the deduplication program 1000 stores the compressed chunk in the write-once space 60. In addition, deduplication processing is also performed as necessary. Details of this processing will be described later.
  • Step 1080 The deduplication program 1000 selects the next chunk (chunk that has not yet been processed in steps 1040 to 1070) from the data read onto the cache memory in step 1020.
  • Step 1090 If the next chunk cannot be selected in Step 1080, that is, if the processing of Step 1040 to Step 1070 for all the chunks is completed (Step 1090: Yes), Step 1100 is performed next. If the next chunk can be selected in Step 1080 (Step 1090: No), the deduplication program 1000 performs the processing from Step 1040 again.
  • Step 1100 The deduplication program 1000 discards the data in the overwrite space. Specifically, the deduplication program 1000 updates the contents of the virtual volume management table 300 so that the page allocated to the virtual page selected in step 1010 is not allocated to the virtual page (this virtual The page type (303) of the page is “0”, and “null” is stored in page # (304) and pool # (305). Further, the deduplication program 1000 sets the value of the use (204) of the allocated physical page of the records of the page management table 200 for this physical page to make the allocated physical page unused. Is updated to “0”.
  • step 1070 the details of the processing performed in step 1070 will be described with reference to FIG.
  • Step 6010 The deduplication program 1000 searches whether the same FPK as the FPK obtained in step 1050 is stored in the FPMQ 400. As described above, the deduplication program 1000 searches the FPMQ 400 record in which the same FPK as the FPK obtained in step 1050 is stored by referring to the FPTD 450 and the FPMQ 400.
  • Step 6020 If the same FPK as the FPK obtained in step 1050 is stored in the FPMQ 400 (step 6020: Yes), the deduplication program 1000 next performs step 6030. If the same FPK as the FPK obtained in step 1050 is not stored in the FPQM 400 (step 6020: No), step 6070 is performed next.
  • Step 6030 The deduplication program 1000 refers to the FPMQ 400, the LP conversion table 500, the write space mapping table 350, and the page management table 200, so that a chunk (compression chunk) having the same FPK as the FPK obtained in Step 1050 is obtained. Are read from the storage device 20.
  • the deduplication program 1000 first refers to the FPMQ 400 and the LP conversion table 500 to determine the PA in which the chunk (compression chunk) having the same FPK as the FPK obtained in step 1050 is stored and its length. Identify.
  • this chunk is referred to as “overlapping candidate chunk”, and the PA of the overlapping candidate chunk is referred to as “PA1”.
  • the deduplication program 1000 identifies the page number of the page (physical page) where the duplication candidate chunk is stored by referring to the write-once space mapping table 350, and further refers to the page management table 200.
  • the storage device 20 and the address where the page storing the duplicate candidate chunk exists are specified. This is the same processing as step 16 performed by the I / O program 100.
  • the duplicate elimination program 1000 reads duplicate candidate chunks from the specified storage device 20.
  • Step 6040 The deduplication program 1000 compares the chunk read in step 6030 (compressed chunk) with the contents of the chunk compressed in step 1060, and determines whether or not they are the same. At the time of comparison, both are in a compressed state, but the deduplication program 1000 compares the compressed chunks in byte units. However, as another embodiment, the deduplication program 1000 may temporarily decompress the compressed chunk and compare the decompressed data. As a result of the comparison, if the two match (step 6040: Yes), step 6050 is performed next. When both are different (step 6040: No), step 6070 is performed next.
  • Step 6050 The deduplication program 1000 registers the chunk FPK and the chunk LA in the FPMQ 400. Further, the deduplication program 1000 stores “1” in the FPMQ registration (505) of the record whose LA (501) matches the LA of the processing target chunk among the records of the LP conversion table 500.
  • Step 6060 The duplicate elimination program 1000 stores the PA (503) of the duplicate candidate chunk in the PA (503) of the record whose LA (501) matches the LA of the processing target chunk among the records of the LP conversion table 500. Then, the length of the duplication candidate chunk is stored in Length (504). In this case, the compressed chunk is not stored in the write-once space. Thereafter, the deduplication program 1000 performs the processing after step 1080.
  • Step 6070 The processing content of this step is the same as step 6050.
  • Step 6080 The deduplication program 1000 writes the compressed chunk temporarily stored in the buffer 700 to the write-once space, and deletes the compressed chunk in the buffer 700.
  • the deduplication program 1000 when the deduplication program 1000 writes a compressed chunk in the write-once space, it additionally writes it in the write-once space.
  • the flow of the process of adding the compressed chunk to the additional writing space will be described with reference to FIG.
  • the deduplication program 1000 determines the address (PA) on the write-once space where the compressed chunk is to be added (step 51).
  • the storage apparatus 1 holds information on the final write position of the write space in the pool management information 600 and the write space mapping table 350.
  • the deduplication program 1000 refers to the last write position (602) of the corresponding virtual volume in the pool management information 600, thereby adding the last page to be written in the write space corresponding to the virtual volume. Specify writing page #. Hereinafter, this is referred to as AP1.
  • the deduplication program 1000 refers to the additional write space mapping table 350 to identify the final write position (354) in the page of the record of the additional write page # (351). Hereinafter, this is denoted as RA1.
  • the deduplication program 1000 calculates “AP1 ⁇ page size (42 MB) ⁇ 512 + RA1 + 1” to obtain an address (PA) on the additional write space where the compressed chunk is to be written.
  • PA address
  • the deduplication program 1000 determines whether a physical page is allocated to the additional page including the PA (PA2) determined in step 51 (step 52). For this purpose, the deduplication program 1000 obtains the additional page # of the additional page including PA2 by dividing PA2 by the page size (42 MB) (hereinafter, the additional page # obtained here is “ AP2 "). Further, the deduplication program 1000 refers to the write space mapping table 350, so that a valid value (a value other than null) is stored in the page # (352) of the record of AP2 for the write page # (351). judge. When a valid value is stored in page # (352), a physical page is assigned to the additional page including PA2.
  • a valid value is stored in page # (352)
  • a physical page is assigned to the additional page including PA2.
  • the deduplication program 1000 allocates the physical page to the additional page (step 53). Specifically, the deduplication program 1000 selects one unused physical page from the page management table 200, and each page # and the pool # of the pool to which the page belongs are added to the additional page # (351) as AP2. Are stored in page # (352) and pool # (353). The deduplication program 1000 stores “1” in the use (204) of the physical page selected from the page management table 200. Conversely, if a physical page is assigned to PA2 (step 52: Yes), step 53 is not performed.
  • step 54 the deduplication program 1000 refers to the write space mapping table 350 and the page management table 200 to calculate the address of the storage device 20 to which the compressed chunk is written. Subsequently, the deduplication program 1000 writes the compressed chunk at the address calculated in step 54 (step 55). In step 56, the deduplication program 1000 substitutes the additional write page # of the additional write page in which the compressed chunk has been written this time for the final write position (602) of the pool management information 600, and in the last written write page. Is substituted into the last write position (354) in the page of the additional write space mapping table 350, and the process ends.
  • step 6080 The above is the processing performed in step 6080. Returning to the description of FIG.
  • Step 6090 The deduplication program 1000 stores the compression chunk PA (that is, PA2) in the PA (502) of the record whose LA (501) matches the LA of the processing target chunk among the records of the LP conversion table 500. , Length (503) stores the length (L2) of the compressed chunk. Thereafter, the deduplication program 1000 performs the processing after step 1080.
  • Step 5010 The I / O program 100 selects data to be processed from each data stored in the cache memory 14.
  • There are various methods for selecting data As an example, there is a method of selecting data with the oldest time written from the host 2. In this case, the storage controller 10 needs to store the time written from the host 2 for each data stored in the cache memory 14.
  • a plurality of chunks for example, a plurality of chunks continuous on the virtual volume may be selected.
  • Step 5020 The I / O program 100 specifies the virtual page to which the data selected in Step 5010 is written. Hereinafter, an example in which VP # p is specified in step 5020 will be described. Then, the I / O program 100 refers to the virtual volume management table 300 and determines whether the page type (303) is “0” or “1” for the record whose virtual page # (301) is “p”. If the page type (303) is “1” (step 5020: No), the data write destination is the overwrite space, so step 5110 is executed next. If the page type (303) is “0” (step 5020: Yes), then step 5030 is performed.
  • Step 5030 When this step is executed, it means that the data written in VP # p has been moved to the write-once space. In this case, the I / O program 100 determines whether the data of VP # p that has been moved to the write-once space is returned to the overwrite space again.
  • the I / O program 100 determines to return the data of VP # p that has been moved to the write-once space to the overwrite space again.
  • the I / O program 100 determines to return the data of VP # p that has been moved to the write-once space to the overwrite space again.
  • this determination method is only an example, and it may be determined whether or not the data of VP # p that has been moved to the write-once space is returned to the overwrite space by another determination method. If the determination at step 5030 is negative, then step 5040 is performed, and if the determination at step 5030 is positive, then step 5210 is performed.
  • Step 5040 The I / O program 100 compresses the processing target data. This is the same as the processing performed in steps 1040 to 1060 in FIG. Similar to steps 1040 to 1060, the I / O program 100 also calculates FPK.
  • Step 5050 The I / O program 100 stores the processing target data (compressed chunk) in the write-once space. This process is the same as step 1080 in FIG. That is, the processing from step 6010 to step 6090 in FIG. 15 is performed. After step 5050, the processing target data is deleted from the cache memory 14, and the processing target data and its compressed chunk are deleted from the buffer 700, and the destage processing ends.
  • Step 5210 When it is determined that the data of VP # p that has been moved to the write-once space is returned to the overwrite space, the I / O program 100 stores the data of VP # p that has been moved to the write-once space. All are read from the storage device 20, decompressed data, and temporarily stored in the cache memory 14. For this, the same processing as that described with reference to FIG. 11 may be performed.
  • Step 5220 The I / O program 100 allocates a physical page to VP # p. Specifically, the I / O program 100 selects one unused physical page from the page management table 200, and each of the page # and the pool # of the pool to which the page belongs are stored in the virtual volume management table 300. The virtual page # (301) is stored in the page # (304) and the pool # (305) of the record of p. The I / O program 100 stores “1” in the use (204) of the physical page selected from the page management table 200.
  • Step 5230 The I / O program 100 stores the data read in Step 5210 in the physical page assigned to VP # p. Specifically, the I / O program 100 refers to the page management table 200 as in Step 13 of FIG. 11, and the DEV # (202) of the storage device 20 in which the physical page allocated to VP # p exists. , Addr (203) is specified. The I / O program 100 stores the data read in step 5210 in the specified storage device.
  • Step 5240 The I / O program 100 overwrites the processing target data on the physical page assigned to VP # p, and ends the destage processing.
  • Step 5110 The I / O program 100 allocates a physical page if no physical page is allocated to VP # p. This is the same processing as in step 5220. However, if a physical page has already been allocated to VP # p, it is not necessary to allocate a physical page.
  • Step 5120 Similar to step 5240, the I / O program 100 overwrites the processing target data on the physical page assigned to VP # p, and ends the destage processing.
  • the destage processing described here is an example, and processing different from the processing described above may be performed.
  • the write-once space may be necessarily added without performing the determination in step 5030.
  • control when returning data from the write-once space to the overwrite space, control may be performed to reduce the amount of data to be returned. For example, when a request to update the entire page of VP # p is received from the host 2, data for one page of VP # p is stored in the cache memory 14. In this state, even if data is returned from the write-once space to the overwrite space, if the data stored in the cache memory 14 is destaged, the data written back from the write-once space to the overwrite space is overwritten. Therefore, in such a case, it is more efficient to prevent data from being returned from the write-once space to the overwrite space.
  • DIF Data Integrity Field
  • Step 7010 Each guarantee added to every 512 bytes of data 1100 of the chunk (hereinafter referred to as a target chunk) transferred to the buffer 700 (FIG. 10) of the local memory 16 (FIG. 10) in Step 1040 of FIG. As shown in FIG. 19B, zero padding is executed to fill the LA 1220 of the code 1200 with “0” (replace it with “0”).
  • the reason why the LA 1220 of the target chunk is zero-patented is that the value of the LA 1120 differs depending on the data writing position. Therefore, when the compression processing is performed on the data 1100 with the LA 1120 added to the write target data 1100, This is because even if the data has the same contents, different compression results are obtained, and the same data cannot be deduplicated. Further, when the LA 1220 is compressed without zero padding, the compression effect may be reduced. Therefore, in the present embodiment, when the write target data 1100 is compressed, first, a process of zero-padding the LA 1220 is executed. Thus, the compression effect is expected to be improved by zero-padding LA1220.
  • a predetermined hash function for example, SHA-1
  • Step 7030 As shown in FIG. 19C, the deduplication program 1000 deletes all CRCs 1210 assigned to each 512 bytes of the data of the target chunk stored in the buffer 700 from the data of the target chunk. .
  • Step 7040 The deduplication program 1000 compresses the data of the target chunk stored in the buffer 700 (including the zero-padded LA 1220 represented by reference numeral 1220 ′ in FIG. 19C). Generate compressed chunks. The compressed chunk is temporarily stored in the buffer 700 together with the data before the target chunk is compressed.
  • the reason for compressing the data of the target chunk while adding the zero-padded LA 1220 is to improve the performance.
  • the LA 1220 is deleted from the data of the target chunk and left-justified, it is necessary to create a gap for re-inserting the LA 1220 for every 512 bytes of the decompressed data after decompressing the data.
  • the LA 1220 is not deleted, it is only necessary to rewrite the LA 1220 after decompressing the read data, and the overhead required for memory copy can be reduced.
  • Step 7050 The deduplication program 1000 decompresses the compressed chunk obtained in step 7040.
  • Step 7060 The deduplication program 1000 uses the data obtained by decompressing the compressed chunk in Step 7050 (hereinafter referred to as decompressed data), the data before compression of the target chunk stored in the buffer 700, and Compare This comparison is performed by sequentially comparing the decompressed data and the data before compression of the target chunk in units of 1 bit or 1 byte. By such comparison, it is possible to confirm whether or not the original data can be restored when the data of the target chunk is compressed and decompressed, and it is possible to ensure reliability with respect to data compression and decompression.
  • Step 7070 As a result of the comparison in Step 7060, when the decompressed data matches the data before compression of the target chunk (Step 7070: Yes), Step 7080 is performed next, otherwise (Step 7070: No) Next, step 7100 is performed.
  • Step 7080 The deduplication program 1000 calculates a new CRC for the compression chunk of the target chunk stored in the buffer 700, and the calculated CRC and the logical address of the compression chunk on the buffer 700 (hereinafter referred to as LA ′). To the compressed chunk.
  • the deduplication program 1000 divides the compressed chunk of the target chunk into 512 bytes, and as shown in FIG. 19D, the data of these 512 byte compressed chunks (hereinafter referred to as compressed chunk classified data). ) For each 1110, calculate the CRC 1230 of the compressed chunk classification data 1110. The deduplication program 1000 uses the compressed chunk partition data corresponding to the CRC 1230 for each compressed chunk partition data 1110 calculated in this way and the logical address (LA ′) 1240 of the compressed chunk partition data 1110 on the buffer 700. It is added to 1110. Note that LA ′ 1240 added to the compressed chunk partition data 1110 at this time, as shown in FIG. 19 (E), when the compressed chunk partition data 1110 of the target chunk is subsequently written to the additional write space (see FIG. 19). 16 step 55), the address (LA ′′) 1250 in the write-once additional write space is rewritten.
  • Step 7090 The deduplication program 1000 registers the FPK of the target chunk calculated in step 7020 in the FPK upper 32 bits (502) of the corresponding record in the LP conversion table 500 (FIG. 8), and thereafter ends this processing. .
  • Step 7100 It is determined that the data of the target chunk is handled without being compressed, and thereafter, this processing is terminated.
  • Step 8010 The I / O program 100 compresses the read target data (based on the DEV # (202) and Addr (203) of the storage device 20 specified in step 16 of the read process described above with reference to FIG. (Compressed data) is read from the storage device 20 into the buffer 700.
  • Step 8020 The I / O program 100 determines the integrity of the compressed data read out to the buffer 700 based on the CRC included in every 512 bytes (corresponding to the new CRC 1230 in FIG. 19E).
  • a CRC check to be checked is executed (502). Specifically, as shown in FIG. 21 (A), the I / O program 100, for every 512 bytes of each compressed chunk constituting the read compressed data (that is, for each compressed chunk division data 1110 described above) The CRC is calculated based on the compressed chunk partition data 1110, and the calculated CRC is compared with the CRC 1230 added to the compressed chunk partition data 1110.
  • Step 8030 As a result of the CRC check in Step 8020, the I / O program 100 adds one of the compressed chunk partition data to the CRC calculated based on the compressed chunk partition data 1110 and the compressed chunk partition data 1110. It is determined whether or not a CRC error that does not match the CRC 1230 has occurred. If the CRC calculated based on the compressed chunk partition data 1110 and the CRC 1230 added to the compressed chunk partition data 1110 match for all the compressed chunk partition data 1110 (step 8030: Yes). Next, Step 8100 is performed, and the CRC calculated based on the compressed chunk partition data 1110 does not match the CRC 1230 added to the compressed chunk partition data 1110 for any one of the compressed chunk partition data. If this is the case (step 8030: No), then step 8040 is performed.
  • Step 8040 As shown in FIG. 21B, the I / O program 100 adds a CRC 1230 that is added to every 512 bytes of the compressed data (that is, every compressed chunk division data 1110) from the compressed data read in Step 8010. And LA ′′ are deleted, and the compressed data is decompressed.
  • the I / O program 100 uses the hash function used when calculating the FPK in step 7020 of the FPK calculation / data compression processing from the CRC group for each chunk obtained in this way to obtain a 20-byte hash value. For each chunk, the upper 8 bytes of the calculated hash value are extracted as the FPK of the chunk.
  • Step 8060 For each chunk, the FPK generated in step 8050 is compared with the FPK stored in the FPK upper 32 bits (502) of the LP conversion table for the chunk.
  • Step 8070 For all chunks, if the FPK generated in step 8050 matches the FPK stored in the FPK upper 32 bits (502) of the LP conversion table 500 for that chunk (step 8070: Yes), Next, Step 8080 is performed. If not (Step 8070: No), Step 8120 is performed next.
  • Step 8080 The I / O program 100, as shown in FIG. 21C, provides an error correction code for each 512 bytes of the decompressed data calculated in the decompression process of Step 8040 (hereinafter referred to as CRC (Cyclic Redundancy Code)). 1260 is added to the corresponding 512-byte data (step 8080).
  • CRC Cyclic Redundancy Code
  • the I / O program 100 also stores in the LA 1270 storing the data that the host 2 recognizes LA ′′ (see FIG. 19E) added every 512 bytes of the data. Write back.
  • Step 8090 The I / O program 100 returns the decompressed data 1120 to which the CRC 1260 and LA 1270 are added every 512 bytes in step 8080 to the host 2 and ends the process.
  • Step 8100 The I / O program 100 executes an error response for notifying the host 2 that has transmitted the read request that a read error has occurred, and ends the process.
  • an overwrite space is allocated to a virtual volume in units of 42 MB virtual pages, and data written to the virtual volume is chunked in 8 KB. Since compression is performed in units, decompression processing of the compressed data is performed in units of 8 KB chunks. For example, compared to data compression in units of virtual pages, even unnecessary data at the time of decompression processing of compressed data It is possible to significantly reduce the amount of extra overhead that is extended. Even if the data compression unit is 8 KB, the virtual volume can be managed in units of 42 MB virtual pages. Thus, it is possible to prevent an increase in the amount of management information while preventing a decrease in access performance of the storage apparatus due to such overhead.
  • the storage device 1 since the uncompressed data is written in the overwrite area and the compressed data is stored in the additional write area, the data size after compression of the updated data is larger than that before the update. Even when it becomes larger, it can be stored in the storage device 20 without any problem.
  • the present invention can be applied to a storage apparatus equipped with a data compression function.
  • SYMBOLS 1 ... Storage device, 2 ... Host, 10 ... Storage controller, 11 ... CPU, 14 ... Cache memory, 16 ... Local memory, 20 ... Storage device, 40 ... Overwrite space, 60 ... Additional Write space, 100 ... I / O program, 700 ... Buffer, 500 ... LP conversion table, 1000 ... Deduplication 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

[Problem] To propose a highly useful storage apparatus and a method for controlling same. [Solution] A storage apparatus provided with one or a plurality of memory devices and a storage controller for dynamically allocating memory areas of the memory devices to virtual volumes and writing the data to be written that is given from a host along with a write request into the memory areas allocated to the virtual volumes. The storage controller manages the memory areas of the memory devices separately for an area for overwrites that permits overwriting and an area for additional writes for storing postscripts, allocates the area for overwrites in units of a prescribed first size to areas in the virtual volumes, writes the data to be written into the allocated area for overwrites, compresses the data written into the area for overwrites in units of a second size smaller than the first size, and stores the compressed data to the area for additional writes.

Description

ストレージ装置およびその制御方法Storage apparatus and control method thereof

 本発明は、ストレージ装置およびその制御方法に関し、たとえば、データの圧縮機能および重複排除機能の双方が搭載されたストレージ装置に適用して好適なものである。 The present invention relates to a storage apparatus and a control method therefor, and is suitable for application to a storage apparatus equipped with both a data compression function and a deduplication function, for example.

 ストレージ装置は、データを格納する複数の記憶デバイスと、これら記憶デバイスを制御するストレージコントローラとを有しており、ホスト計算機に大容量のデータ格納空間を提供することを目的としている。 The storage apparatus has a plurality of storage devices for storing data and a storage controller for controlling these storage devices, and aims to provide a large capacity data storage space to the host computer.

 ストレージ装置には、低コストで大量のデータを保存することが求められる。こうした要求を満たすために、データを可逆圧縮(以降、単に圧縮と記す)して記録する技術が知られている。圧縮によりデータサイズを縮小してから記憶デバイスに記録すると、データを圧縮せずに記憶デバイスに記録するよりも多くのデータをストレージ装置に格納できる。そのため、データの保持ホスト(記憶媒体のビットコスト、ストレージ装置の消費電力コスト等)を削減できる。 Storage devices are required to store large amounts of data at low cost. In order to satisfy such a requirement, a technique for recording data by lossless compression (hereinafter simply referred to as compression) is known. If the data size is reduced by compression and then recorded in the storage device, more data can be stored in the storage device than if the data is recorded in the storage device without being compressed. Therefore, it is possible to reduce the data holding host (such as the bit cost of the storage medium and the power consumption cost of the storage device).

 格納すべきデータ量を削減するもう一つの技術として、重複排除技術がある。重複排除技術は、ストレージ装置内に同内容のデータ複数個存在していることをストレージ装置が検出したときに、そのうちの1つだけをストレージ装置内の記憶デバイスに残し、残りのデータを記憶デバイスに格納しないようにする技術である。 Deduplication technology is another technology that reduces the amount of data to be stored. When the storage apparatus detects that a plurality of data having the same content exists in the storage apparatus, the deduplication technology leaves only one of them in the storage device in the storage apparatus and stores the remaining data in the storage device. This is a technique to prevent storage.

 圧縮技術と重複排除技術は併用可能である。たとえば特許文献1には、上位装置から転送されてきたデータの中で重複しているデータについては重複排除処理を行い、重複排除の行われなかったデータを圧縮するストレージ装置が開示されている。 Compression technology and deduplication technology can be used together. For example, Patent Document 1 discloses a storage device that performs deduplication processing on data that is duplicated among data transferred from a host device and compresses data that has not been deduplicated.

特許第521691号明細書Japanese Patent No. 521691

 ところで、データ圧縮の処理単位はそのデータの伸長時のオーバヘッドに影響する。たとえば、大きな容量単位でデータの圧縮を行った場合、その一部だけを読み出したい場合でも、その容量単位でデータの伸長を行わなければならず、余計なオーバヘッドが発生するためデータに対するアクセス性能が低下する。一方で、データ圧縮の処理単位を小さくし過ぎると、その管理情報の情報量が増えて管理情報を格納しておく記憶領域の利用効率が悪化する。 By the way, the data compression processing unit affects the overhead when decompressing the data. For example, when data is compressed in a large capacity unit, even if only a part of the data is to be read, the data must be decompressed in that capacity unit, and extra overhead is generated. descend. On the other hand, if the data compression processing unit is made too small, the amount of management information increases, and the utilization efficiency of the storage area for storing the management information deteriorates.

 またデータを圧縮する場合、データ内容に依存して圧縮比率が変化する。このため、ストレージシステムがデータを圧縮して記憶デバイスに格納した後、そのデータの更新データを上位装置から受領した場合、更新データの圧縮後のサイズは記憶デバイスに格納された圧縮データのサイズよりも大きくなることがある。この場合、圧縮された更新データを、更新前の圧縮データの記憶されている領域に上書きすることはできず、異なる格納方法が必要となる。 Also, when compressing data, the compression ratio changes depending on the data content. For this reason, after the storage system compresses the data and stores it in the storage device, when the update data of the data is received from the host device, the size of the update data after compression is smaller than the size of the compressed data stored in the storage device Can also be large. In this case, the compressed update data cannot be overwritten on the area where the compressed data before update is stored, and a different storage method is required.

 本発明は以上の点を考慮してなされたもので、データの圧縮に伴う上述のような各種課題を一気に解決し得る、有用性の高いストレージ装置およびその制御方法を提案しようとするものである。 The present invention has been made in view of the above points, and intends to propose a highly useful storage apparatus and control method thereof that can solve the above-mentioned various problems associated with data compression at once. .

 かかる課題を解決するため本発明の一実施形態においては、ホストに対して仮想的な記憶空間である仮想ボリュームを提供し、前記ホストから前記仮想ボリュームに対するデータのライト要求に応じて動的に記憶領域を割り当てるストレージ装置において、1又は複数の記憶デバイスと、前記記憶デバイスの記憶領域を動的に前記仮想ボリュームに割り当て、前記ライト要求と共に前記ホストから与えられた書込み対象のデータを、前記仮想ボリュームに割り当てた前記記憶領域に書き込むストレージコントローラとを設け、前記ストレージコントローラが、前記記憶デバイスの記憶領域を、上書きを許す上書き用領域と、追記格納するための追書き用領域とに分けて管理し、前記仮想ボリューム上の領域に対して所定の第1の容量単位で前記上書き用領域を割り当て、割り当てた前記上書き用領域に前記書込み対象のデータを書き込み、前記上書き用領域に書き込んだデータを前記第1の容量よりも小さい第2の容量単位で圧縮し、圧縮したデータを前記追書き用領域に格納するようにした。 In order to solve this problem, in one embodiment of the present invention, a virtual volume that is a virtual storage space is provided to a host, and is dynamically stored in response to a data write request to the virtual volume from the host. In the storage apparatus to which the area is allocated, one or a plurality of storage devices and the storage area of the storage device are dynamically allocated to the virtual volume, and the write target data given from the host together with the write request is stored in the virtual volume. A storage controller that writes to the storage area allocated to the storage device, and the storage controller manages the storage area of the storage device separately into an overwrite area that permits overwriting and an additional writing area that additionally stores data. , In a predetermined first capacity unit for the area on the virtual volume An overwrite area is allocated, the data to be written is written in the allocated overwrite area, and the data written in the overwrite area is compressed in a second capacity unit smaller than the first capacity and compressed. The data is stored in the additional writing area.

 また本発明の他の実施形態においては、ホストに対して仮想的な記憶空間である仮想ボリュームを提供し、前記ホストから前記仮想ボリュームに対するデータのライト要求に応じて動的に記憶領域を割り当てるストレージ装置の制御方法において、前記ストレージ装置は、1又は複数の記憶デバイスと、前記記憶デバイスの記憶領域を動的に前記仮想ボリュームに割り当て、前記ライト要求と共に前記ホストから与えられた書込み対象のデータを、前記仮想ボリュームに割り当てた前記記憶領域に書き込むストレージコントローラとを有し、前記ストレージコントローラは、前記記憶デバイスの記憶領域を、上書きを許す上書き用領域と、追記格納するための追書き用領域とに分けて管理し、前記ストレージコントローラが、前記仮想ボリューム上の領域に対して所定の第1の容量単位で前記上書き用領域を割り当て、割り当てた前記上書き用領域に前記書込み対象のデータを書き込む第1のステップと、前記ストレージコントローラが、前記上書き用領域に書き込んだデータを前記第1の容量よりも小さい第2の容量単位で圧縮し、圧縮したデータを前記追書き用領域に格納する第2のステップとを設けるようにした。 In another embodiment of the present invention, a virtual volume that is a virtual storage space is provided to a host, and a storage area is dynamically allocated according to a data write request from the host to the virtual volume. In the apparatus control method, the storage apparatus dynamically allocates one or a plurality of storage devices and a storage area of the storage device to the virtual volume, and writes write target data given from the host together with the write request. A storage controller that writes to the storage area allocated to the virtual volume, and the storage controller includes an overwrite area that allows overwriting, and an additional write area that additionally stores the storage area of the storage device. The storage controller is configured to manage the virtual volume. A first step of allocating the area for overwriting in a predetermined first capacity unit to an area on a storage area, and writing the data to be written into the allocated area for overwriting; And a second step of compressing the data written in the area for use in a second capacity unit smaller than the first capacity and storing the compressed data in the area for additional writing.

 本発明のストレージ装置およびその制御方法では、仮想ボリュームに上書き用領域を割り当てる容量単位と、仮想ボリュームに書き込まれたデータを圧縮する容量単位とを分け、データを圧縮する単位である第2の容量を仮想ボリュームに上書き用領域を割り当てる単位である第1の容量よりも小さくしているため、圧縮したデータを読み出す際の余計な伸長処理(オーバヘッド)の発生量を低減しながら、仮想ボリューム上の領域を管理するための管理情報の増加を防止することができる。従って、かかるオーバヘッドに起因するストレージ装置のアクセス性能の低下を防止しつつ、管理情報の情報量の増加をも防止することができる。 In the storage apparatus and control method thereof according to the present invention, the capacity unit for allocating the overwrite area to the virtual volume and the capacity unit for compressing the data written to the virtual volume are divided into the second capacity that is a unit for compressing the data. Is made smaller than the first capacity, which is a unit for allocating the overwrite area to the virtual volume, while reducing the amount of extra decompression processing (overhead) when reading compressed data, An increase in management information for managing the area can be prevented. Therefore, it is possible to prevent an increase in the amount of management information while preventing a decrease in access performance of the storage apparatus due to such overhead.

 また本発明のストレージ装置およびその制御方法では、非圧縮データを上書き用領域に書き込み、圧縮データを追書き用領域に格納するため、更新されたデータの圧縮後のデータサイズが更新前のものよりも大きくなった場合においても、問題なく記憶デバイスに格納することができる。 In the storage apparatus and the control method thereof according to the present invention, the uncompressed data is written in the overwrite area and the compressed data is stored in the additional write area. Can be stored in the storage device without any problem.

 本発明によれば、有用性の高いストレージ装置およびその制御方法を実現できる。 According to the present invention, a highly useful storage apparatus and its control method can be realized.

実施形態に係るストレージ装置を含む、計算機システムの構成例である。1 is a configuration example of a computer system including a storage device according to an embodiment. 仮想ボリュームとページの関係を表した図である。It is a figure showing the relationship between a virtual volume and a page. 管理情報の一覧である。It is a list of management information. ページ管理テーブルの構成例である。It is a structural example of a page management table. プール管理テーブルの構成例である。It is a structural example of a pool management table. 仮想ボリューム管理テーブルの構成例である。It is a structural example of a virtual volume management table. 追書き空間マッピングテーブルの構成例である。It is a structural example of a write-once space mapping table. LP変換テーブルの構成例である。It is an example of a structure of LP conversion table. FPMQおよびFPTDの構成例である。It is an example of composition of FPMQ and FPTD. ストレージ装置の有するプログラムの一覧である。It is a list of programs that the storage device has. リード処理のフローチャートである。It is a flowchart of a read process. ライト処理のフローチャートである。It is a flowchart of a write process. バッファ更新プログラムのフローチャートである。It is a flowchart of a buffer update program. 重複排除プログラムのフローチャート(1)である。It is a flowchart (1) of a deduplication program. 重複排除プログラムのフローチャート(2)である。It is a flowchart (2) of a deduplication program. 追書き空間に追記する処理のフローチャートである。It is a flowchart of the process which adds to an additional writing space. デステージ処理のフローチャートである。It is a flowchart of a destage process. FPK算出・データ圧縮処理のフローチャートである。It is a flowchart of FPK calculation and data compression processing. (A)-(E)は、FPK算出・データ圧縮処理の説明に供する図である。(A)-(E) are diagrams for explaining FPK calculation / data compression processing. データ伸長処理のフローチャートである。It is a flowchart of a data expansion process. (A)-(C)は、データ伸長処理の説明に供する図である。(A)-(C) are diagrams for explaining data decompression processing.

 以下図面について、本発明の一実施形態を詳述する。 Hereinafter, an embodiment of the present invention will be described in detail with reference to the drawings.

 なお、以下の実施形態において、ストレージ装置内で実行される処理について、「プログラム」を主語として説明を行う場合がある。実際には、ストレージ装置が有するプロセッサ(CPU)がプログラムを実行することによって、プログラムに記述された処理が行われるため、処理の主体はプロセッサ(CPU)であるが、説明が冗長になることを防ぐため、プログラムを主語にして処理の内容を説明することがある。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、以下で説明される各種プログラムは、プログラム配布サーバや計算機が読み取り可能な記憶メディアによって提供され、プログラムを実行する各装置にインストールされてもよい。計算機が読み取り可能な記憶メディアとは、非一時的なコンピュータ可読媒体で、例えばICカード、SDカード、DVD等の不揮発性記憶媒体である。 In the following embodiments, the processing executed in the storage apparatus may be described using “program” as the subject. Actually, the processor (CPU) included in the storage apparatus executes the program to perform the process described in the program. Therefore, the main subject of the process is the processor (CPU), but the explanation becomes redundant. In order to prevent this, the contents of processing may be explained using the program as the subject. Further, part or all of the program may be realized by dedicated hardware. Various programs described below may be provided by a storage medium that can be read by a program distribution server or a computer, and may be installed in each device that executes the program. The computer-readable storage medium is a non-transitory computer-readable medium such as a non-volatile storage medium such as an IC card, an SD card, or a DVD.

 実施形態の説明に入る前に、本実施形態で用いられる各種用語について説明する。 Prior to describing the embodiment, various terms used in the present embodiment will be described.

 本明細書において、「圧縮」とはLZWアルゴリズム等の可逆圧縮アルゴリズムを用いて、データの意味を保ったままデータサイズを縮小する処理のことを意味する。本実施形態に係るストレージ装置では、ホストからストレージ装置に対して書き込まれるデータの圧縮を行うことがある。ストレージ装置で圧縮処理が行われたことによりサイズの縮小されたデータのことを、「圧縮データ」と呼び、ストレージ装置で圧縮処理が施されていないデータの事を「非圧縮データ」と呼ぶ。また可逆圧縮アルゴリズムを用いて、圧縮データを元のデータサイズに戻す処理のことを、「伸長」と呼ぶ。 In this specification, “compression” means a process of reducing the data size while maintaining the meaning of the data using a reversible compression algorithm such as the LZW algorithm. In the storage apparatus according to the present embodiment, data written from the host to the storage apparatus may be compressed. Data that has been reduced in size as a result of compression processing performed by the storage device is referred to as “compressed data”, and data that has not been subjected to compression processing by the storage device is referred to as “uncompressed data”. The process of returning the compressed data to the original data size using the lossless compression algorithm is called “decompression”.

 「ボリューム」とは、ストレージ装置や記憶デバイス等のターゲットデバイスが、ホスト計算機等のイニシエータデバイスに提供する記憶空間のことを意味する。イニシエータデバイスが記憶空間上のある位置(アドレス)に対するデータの書き込み要求を発行すると、そのアドレスに割り当てられている記憶領域にデータが格納される。本実施形態に係るストレージ装置はボリュームとして、いわゆるThin Provisioning技術により形成される仮想ボリュームをホストに提供する。仮想ボリュームは、その初期状態(仮想ボリュームが定義された直後)では、仮想ボリューム上の各アドレスに記憶領域が割り当てられていない。ストレージ装置は、イニシエータデバイス(ホスト)から記憶空間上のアドレスに対するデータ書き込み要求を受領した時点で、そのアドレスに割り当てられるべき記憶領域を動的に決定する。 “Volume” means a storage space provided by a target device such as a storage device or storage device to an initiator device such as a host computer. When the initiator device issues a data write request to a certain position (address) in the storage space, the data is stored in the storage area assigned to that address. The storage apparatus according to this embodiment provides a virtual volume formed by so-called Thin Provisioning technology to a host as a volume. In a virtual volume in its initial state (immediately after the virtual volume is defined), no storage area is allocated to each address on the virtual volume. When the storage apparatus receives a data write request for an address in the storage space from the initiator device (host), the storage apparatus dynamically determines a storage area to be allocated to the address.

 「ブロック」とは、ボリューム上の領域を意味する。また、以下で説明する実施形態では、ブロックはイニシエータデバイスがボリュームにアクセスする時の最小アクセス単位と等しいサイズの領域で、固定長である。ブロックのサイズは一例として512バイトである。イニシエータデバイスがボリューム上の領域にアクセスする際には、各ブロックにアサインされているアドレスを指定することでアクセスする。このアドレスは、論理ブロックアドレス(以下、これをLBA(Logical Block Address)と呼ぶ)と呼ばれる。ボリュームの先頭ブロックのLBAが0で、それ以降のブロックには順に1,2,...の連続番号が付される。また、以下の実施形態では、ストレージ装置はボリューム上の領域を特定するアドレスとして、LBA以外のアドレスを用いることがある。これについては、実施形態中で説明する。 “Block” means an area on the volume. In the embodiment described below, a block is an area having a size equal to the minimum access unit when an initiator device accesses a volume, and has a fixed length. As an example, the block size is 512 bytes. When the initiator device accesses the area on the volume, the access is made by designating the address assigned to each block. This address is called a logical block address (hereinafter referred to as LBA (Logical Block Address)). The LBA of the first block of the volume is 0, and subsequent blocks are 1, 2,. . . The serial number is attached. In the following embodiments, the storage apparatus may use an address other than the LBA as an address for specifying an area on the volume. This will be described in the embodiment.

 「重複排除処理」とは、ストレージ装置内に同内容のデータが複数存在する場合、1つだけをストレージ装置に残し、それ以外のデータをストレージ装置から削除する処理である。ストレージ装置内に同内容のデータが存在するか判定する処理のことを、「重複判定」処理と呼ぶ。なお、特に断りのない限り、重複排除処理は重複判定処理を含む処理である。 “Duplicate elimination process” is a process of leaving only one data in the storage apparatus and deleting other data from the storage apparatus when there are a plurality of data of the same content in the storage apparatus. The process of determining whether data with the same content exists in the storage device is referred to as a “duplication determination” process. Unless otherwise specified, the deduplication processing is processing including duplication determination processing.

 以下で説明する実施形態に係るストレージ装置では、チャンクと呼ばれる所定サイズのデータ毎に重複判定を行う。以下の実施形態では、チャンクのサイズが8KBの例について説明されるが、チャンクのサイズは8KB以外のサイズであってもよい。同内容のデータ(またはチャンク)のことを「重複データ(または重複チャンク)」と呼ぶ。 In the storage apparatus according to the embodiment described below, duplication determination is performed for each data of a predetermined size called a chunk. In the following embodiment, an example in which the chunk size is 8 KB will be described. However, the chunk size may be other than 8 KB. Data (or chunks) with the same content is called “duplicate data (or duplicate chunks)”.

 重複判定の際、2つのデータをビット単位あるいはバイト単位で比較すると、判定処理に長時間を要することになる。そのため一般的には重複判定を行う装置は、比較対象のデータについて、たとえばハッシュ関数を利用して算出するハッシュ値などの、そのデータに基づいて算出される小サイズ(たとえば8バイト程度)の特徴量でなるチェックコードを生成し、生成したチェックコードを用いて重複判定を行う。以下の実施形態では、データから生成されるチェックコードのことを、「FingerPrint Key」と呼ぶ。FingerPrint Keyは、FPKと略記されることもある。 When comparing two data in bit units or byte units, it takes a long time for the determination process. Therefore, in general, an apparatus that performs duplication determination is characterized by a small size (for example, about 8 bytes) that is calculated based on data to be compared, such as a hash value that is calculated using a hash function. A check code consisting of a quantity is generated, and duplication is determined using the generated check code. In the following embodiment, a check code generated from data is referred to as “FingerPrint Key”. FingerPrint Key may be abbreviated as FPK.

 以下で説明する実施形態では、データAから算出されたFPKの値がHであった場合、値HはデータAのFPKと呼ばれる。逆にデータAのことを、「FPK Hを持つデータ」と呼ぶことがある。 In the embodiment described below, if the value of FPK calculated from data A is H, value H is referred to as FPK of data A. Conversely, data A may be referred to as “data having FPK H”.

 「重複排除の範囲」とは、重複データの有無を判定する時のデータの探索範囲のことを意味する。たとえば重複排除の範囲が「ストレージ装置」の場合、ストレージ装置はデータAと同一のデータが存在するか判定する際に、データAとストレージ装置内の全データとを比較する。一方、重複排除の範囲がストレージ装置内の一部の記憶デバイス(ここではこれを「記憶グループ」と呼ぶ)に限定されている場合、ストレージ装置は重複データの有無を判定する際に、記憶グループ内のデータのみの中から重複データの有無を検索する。 「“ Duplicate exclusion range ”means the data search range when determining the presence or absence of duplicate data. For example, when the deduplication range is “storage device”, the storage device compares the data A with all data in the storage device when determining whether the same data as the data A exists. On the other hand, when the scope of deduplication is limited to a part of the storage devices in the storage apparatus (herein referred to as “storage groups”), the storage apparatus The presence or absence of duplicate data is searched from only the data inside.

 記憶領域の「更新」とは、記憶領域に格納されているデータの内容を新しい内容に書き換える(上書きする)ことを意味する。ある記憶領域が更新される前に、その記憶領域に格納されていたデータは、「更新前データ」と呼ばれる。一方その記憶領域に新たに書き込まれるデータのことは、「更新データ」または「更新後データ」と呼ばれる。 “Updating” the storage area means rewriting (overwriting) the contents of the data stored in the storage area with new contents. Data that has been stored in a storage area before it is updated is referred to as “pre-update data”. On the other hand, data newly written in the storage area is called “update data” or “updated data”.

 「追書き(log-structured write)」または「追記(log-structured)」とは、データを記憶領域の未使用領域に対してシーケンシャルに書き込む動作のことを意味する。以下の実施形態におけるストレージ装置では、追書き用の記憶領域が設けられる。ストレージ装置が追書き処理を行う場合、追書き用の記憶領域の先頭から順にデータを書き込んでいく。ストレージ装置は、直前に行われた追書き処理でデータが書き込まれた終端アドレスを記憶しており、追書き処理を行う際には、この終端アドレスの次のアドレスから、データを書き込む。 “Log-structured write” or “log-structured” means an operation of sequentially writing data to an unused area of a storage area. In the storage device in the following embodiment, a storage area for additional writing is provided. When the storage device performs additional writing processing, data is written in order from the beginning of the storage area for additional writing. The storage device stores the end address to which data has been written in the immediately preceding write process, and writes data from the address next to this end address when performing the write process.

(1)システム構成
 図1は、本実施形態に係るストレージ装置1を含む計算機システムの構成例を示している。ストレージ装置1は、ストレージコントローラ10と、ストレージコントローラ10に接続された複数の記憶デバイス20を有する。
(1) System Configuration FIG. 1 shows a configuration example of a computer system including a storage apparatus 1 according to this embodiment. The storage device 1 includes a storage controller 10 and a plurality of storage devices 20 connected to the storage controller 10.

 記憶デバイス20は、ストレージ装置1がホスト2などの上位装置からのライトデータを記憶するために用いられる。記憶デバイスとしては、たとえば磁気ディスクを記憶媒体として用いるHDD(Hard Disk Drive)22や、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として採用したSSD(Solid State Drive)21が用いられる。記憶デバイス20は一例として、SAS(Serial Attached SCSI)規格に従う伝送線(SASリンク)や、PCI(Peripheral Component Interconnect)規格に従う伝送線(PCIリンク)などによって、ストレージコントローラ10と接続される。 The storage device 20 is used for the storage device 1 to store write data from a host device such as the host 2. As the storage device, for example, an HDD (Hard Disk Drive) 22 using a magnetic disk as a storage medium or an SSD (Solid State Drive) 21 adopting a nonvolatile semiconductor memory such as a flash memory as a storage medium is used. For example, the storage device 20 is connected to the storage controller 10 by a transmission line (SAS link) conforming to the SAS (Serial Attached SCSI) standard, a transmission line (PCI link) conforming to the PCI (Peripheral Component Interconnect) standard, or the like.

 ストレージコントローラ10には、1以上のホスト2が接続される。またストレージコントローラ10には、管理ホスト5が接続される。ストレージコントローラ10とホスト2とは、一例としてファイバチャネルを用いて形成されるSAN(Storage Area Network)3を介して接続される。ストレージコントローラ10と管理ホスト5とは、一例としてイーサネット(登録商標)を用いて形成されるLAN(Local Area Network)6を介して接続される。 One or more hosts 2 are connected to the storage controller 10. A management host 5 is connected to the storage controller 10. The storage controller 10 and the host 2 are connected via a SAN (Storage Area Network) 3 formed using a fiber channel as an example. The storage controller 10 and the management host 5 are connected via a LAN (Local Area Network) 6 formed using Ethernet (registered trademark) as an example.

 ストレージコントローラ10は少なくとも、プロセッサ(CPUとも呼ばれる)11、ホストインタフェース(「ホストI/F」とも呼ばれる)12、デバイスインタフェース(「デバイスI/F」とも呼ばれる)13、キャッシュメモリ14、管理用I/F15、ローカルメモリ16を有する。そしてCPU11、ホストI/F12、デバイスI/F13、キャッシュメモリ14、管理用I/F15は、内部スイッチ(内部SWとも呼ばれる)17を介して相互接続されている。図1ではこれらの構成要素がそれぞれ1つだけ示されているが、高性能化及び高可用性の確保のため、これらの構成要素のそれぞれがストレージコントローラ10内に複数搭載されていてもよい。また内部SW17ではなく、共通バスを介して各構成要素が相互接続された構成にしてもよい。 The storage controller 10 includes at least a processor (also referred to as a CPU) 11, a host interface (also referred to as “host I / F”) 12, a device interface (also referred to as “device I / F”) 13, a cache memory 14, a management I / O. F15 and local memory 16 are provided. The CPU 11, host I / F 12, device I / F 13, cache memory 14, and management I / F 15 are interconnected via an internal switch (also referred to as an internal SW) 17. Although only one of these components is shown in FIG. 1, a plurality of these components may be mounted in the storage controller 10 in order to ensure high performance and high availability. In addition, each component may be connected to each other via a common bus instead of the internal SW 17.

 デバイスI/F13は少なくとも、インタフェースコントローラと転送回路を有する。インタフェースコントローラは、記憶デバイス20で用いられているプロトコル(一例ではSAS)をストレージコントローラ10内部で用いられている通信プロトコル(一例としてPCI-Express)に変換するためのコンポーネントである。転送回路は、ストレージコントローラ10が、記憶デバイス20に対してデータの転送(リード、ライト)を行う際に用いられる。 The device I / F 13 has at least an interface controller and a transfer circuit. The interface controller is a component for converting a protocol (SAS in one example) used in the storage device 20 into a communication protocol (PCI-Express as an example) used in the storage controller 10. The transfer circuit is used when the storage controller 10 transfers data (read, write) to the storage device 20.

 ホストI/F12は、デバイスI/F13と同様に、少なくともインタフェースコントローラと転送回路を有する。ホストI/F12が有するインタフェースコントローラは、ホスト2とストレージコントローラ10との間のデータ転送経路で用いられている通信プロトコル(たとえばファイバチャネル)と、ストレージコントローラ10内部で用いられている通信プロトコルを変換するためのものである。 The host I / F 12 has at least an interface controller and a transfer circuit, like the device I / F 13. The interface controller of the host I / F 12 converts the communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and the communication protocol used in the storage controller 10. Is to do.

 CPU11は、ストレージ装置1の各種制御を行う。ローカルメモリ16には、CPU11が実行するプログラム(ストレージ制御プログラムと呼ぶ)が格納される。またCPU11は、データの圧縮処理を行う際に、ローカルメモリ16上の記憶領域の一部を、一種の作業用領域として使用する。ローカルメモリ16には、DRAM、SRAM等の揮発性記憶媒体が用いられるが、別の実施形態として、不揮発性メモリが用いられてもよい。 The CPU 11 performs various controls of the storage device 1. The local memory 16 stores a program executed by the CPU 11 (referred to as a storage control program). Further, the CPU 11 uses a part of the storage area on the local memory 16 as a kind of work area when performing data compression processing. As the local memory 16, a volatile storage medium such as DRAM or SRAM is used. However, as another embodiment, a nonvolatile memory may be used.

 キャッシュメモリ14は、記憶デバイス20に対するI/O対象データを一時的に記憶するために用いられる。またCPU11が使用する、ストレージ装置1の各種管理情報を記憶するために用いられる。キャッシュメモリ14には、DRAM、SRAM等の揮発性記憶媒体が用いられるが、別の実施形態として、不揮発性メモリを用いてキャッシュメモリ14を構成してもよい。また、キャッシュメモリ14に揮発性記憶媒体が用いられる場合、ストレージ装置1にバッテリ等の補助電源を搭載し、停電時にキャッシュメモリ14の記憶内容を維持できるように構成されていてもよい。 The cache memory 14 is used for temporarily storing I / O target data for the storage device 20. Further, it is used for storing various management information of the storage apparatus 1 used by the CPU 11. As the cache memory 14, a volatile storage medium such as DRAM or SRAM is used. However, as another embodiment, the cache memory 14 may be configured using a nonvolatile memory. When a volatile storage medium is used for the cache memory 14, an auxiliary power source such as a battery may be mounted on the storage device 1 so that the stored contents of the cache memory 14 can be maintained during a power failure.

 本実施形態に係るストレージ装置1において、CPU11は、ローカルメモリ16とキャッシュメモリ14の何れにもアクセス可能に構成されている。ただしCPU11がキャッシュメモリ14にアクセスする際、内部スイッチ17を経由してアクセスすることになる。そのため、CPU11がキャッシュメモリ14にアクセスした時の応答時間は、CPU11がローカルメモリ16にアクセスした時の応答時間よりも長くなる。 In the storage apparatus 1 according to the present embodiment, the CPU 11 is configured to be able to access both the local memory 16 and the cache memory 14. However, when the CPU 11 accesses the cache memory 14, it accesses via the internal switch 17. Therefore, the response time when the CPU 11 accesses the cache memory 14 is longer than the response time when the CPU 11 accesses the local memory 16.

 管理ホスト5は、ストレージ装置1の管理操作を行うための計算機である。管理ホスト5は、キーボードやディスプレイ等の入出力デバイス(非図示)を備え、ユーザ(管理者)は入出力デバイスを用いてストレージ装置1に対する設定指示を行うことができる。また管理ホスト5は、ストレージ装置1の状態等の情報をディスプレイ等の出力デバイスに表示することもできる。 The management host 5 is a computer for performing management operations of the storage apparatus 1. The management host 5 includes input / output devices (not shown) such as a keyboard and a display, and a user (administrator) can issue a setting instruction to the storage apparatus 1 using the input / output devices. The management host 5 can also display information such as the status of the storage apparatus 1 on an output device such as a display.

 本実施形態に係るストレージ装置1は、記憶デバイス20に格納されるデータを圧縮することができる。データの圧縮は、CPU11が実行する(CPU11でデータ圧縮を行うためのプログラムコードが実行されることで、圧縮が行われる)。ただし別の実施形態として、ストレージコントローラ10にデータ圧縮を行う専用のハードウェアを設け、ストレージコントローラ10がこのハードウェアを用いてデータ圧縮を行うように構成されていてもよい。 The storage apparatus 1 according to the present embodiment can compress data stored in the storage device 20. Data compression is performed by the CPU 11 (compression is performed by executing a program code for performing data compression by the CPU 11). However, as another embodiment, the storage controller 10 may be provided with dedicated hardware for performing data compression, and the storage controller 10 may be configured to perform data compression using this hardware.

(2)記憶領域の管理
 続いて、本実施形態に係るストレージ装置1が管理する記憶領域について説明する。本実施形態に係るストレージ装置1が有する1以上の記憶デバイス20は、所定サイズの記憶空間をストレージコントローラ10に提供する。ただしストレージコントローラ10は、記憶デバイス20の提供する記憶空間を直接ホスト2には提供しない。ストレージコントローラ10はホスト2に、記憶デバイス20の提供する記憶空間とは異なる、1以上の仮想的な記憶空間を提供する。この仮想的な記憶空間を「仮想ボリューム」と呼ぶ。また、仮想ボリューム(ホスト2に提供される記憶空間)のことを、「上書き空間」と呼ぶこともある。
(2) Storage Area Management Next, storage areas managed by the storage apparatus 1 according to the present embodiment will be described. The one or more storage devices 20 included in the storage apparatus 1 according to the present embodiment provide the storage controller 10 with a storage space of a predetermined size. However, the storage controller 10 does not directly provide the storage space provided by the storage device 20 to the host 2. The storage controller 10 provides the host 2 with one or more virtual storage spaces different from the storage space provided by the storage device 20. This virtual storage space is called a “virtual volume”. A virtual volume (a storage space provided to the host 2) may be referred to as an “overwrite space”.

 仮想ボリュームは、公知のThin Provisioning技術を用いて形成されるボリュームである。ストレージ装置1は、ホスト2から仮想ボリューム上の領域に対するアクセス要求を受け付けた時点で、その領域に記憶デバイス20の記憶領域を割り当てる(マップする)。 The virtual volume is a volume that is formed using a known Thin Provisioning technology. When the storage apparatus 1 receives an access request for an area on the virtual volume from the host 2, the storage apparatus 1 allocates (maps) the storage area of the storage device 20 to the area.

 本実施形態では、ストレージ装置1が有する複数の記憶デバイス20のうち、仮想ボリュームに割り当てることができる記憶デバイス20を「プール」という管理単位に所属させる。ストレージ装置1は、プールに所属する記憶デバイス20の記憶空間を、所定サイズ(一例として42MB)の部分領域に分割して管理する。本実施形態では、この部分領域のことを「ページ」または「物理ページ」と呼ぶ。なお、ストレージ装置1内にプールは複数設けられて良い。各プールにはストレージ装置1内で一意な識別番号が付されており、この識別番号はプール番号(プール#)と呼ばれる。またプール#がkのプールは、「プール#k」と表記される。 In the present embodiment, among the plurality of storage devices 20 included in the storage apparatus 1, the storage device 20 that can be allocated to the virtual volume belongs to a management unit called “pool”. The storage device 1 manages the storage space of the storage device 20 belonging to the pool by dividing it into partial areas of a predetermined size (42 MB as an example). In the present embodiment, this partial area is referred to as “page” or “physical page”. A plurality of pools may be provided in the storage device 1. Each pool is assigned an identification number that is unique within the storage apparatus 1, and this identification number is called a pool number (pool #). A pool with pool #k is denoted as “pool #k”.

 ストレージ装置1が仮想ボリュームに記憶デバイス20の記憶領域を割り当てる時、ページ毎に割り当てる。そのためストレージ装置1は、仮想ボリュームもページと同サイズの領域に分割して管理する。仮想ボリューム上の、ページと同サイズの領域のことは、「仮想ページ」または「上書きページ」と呼ばれる。なお、本実施形態では仮想ページのサイズが42MBの場合の例を説明するが、仮想ページのサイズはこれ以外のサイズでもよい。 When the storage device 1 allocates the storage area of the storage device 20 to the virtual volume, it allocates for each page. Therefore, the storage apparatus 1 manages the virtual volume by dividing it into an area having the same size as the page. An area of the same size as a page on the virtual volume is called a “virtual page” or “overwrite page”. In this embodiment, an example in which the size of the virtual page is 42 MB will be described. However, the size of the virtual page may be other than this.

 ホスト2が仮想ボリュームにアクセスする時、ホスト2はストレージ装置1にアクセス要求(リード要求、ライト要求等)を発行する。リード要求やライト要求には、アクセス対象の仮想ボリュームを特定するための識別子(Logical Unit Number(LUN)等)と、仮想ボリューム上の領域を特定する情報とが含まれる。仮想ボリューム上の領域を特定する情報には、LBAと領域の長さの情報が含まれる。ストレージ装置1がホスト2からライト要求を受信すると、ストレージ装置1はライト要求に含まれる、仮想ボリューム上の領域を特定する情報(LBAと領域の長さ)から、アクセス対象の仮想ページを特定する。アクセス対象の仮想ページにまだページが割り当てられていない場合、ストレージ装置1はプールに属するページのうち未使用のページ(まだ仮想ページに割り当てられていないページ)を選択し、アクセス対象の仮想ページに、選択されたページを割り当てる(マップする)。ホスト2からのライトデータは、このアクセス対象仮想ページにマップされたページに格納される。 When the host 2 accesses the virtual volume, the host 2 issues an access request (read request, write request, etc.) to the storage device 1. The read request and write request include an identifier (Logical Unit Unit Number (LUN) or the like) for specifying the virtual volume to be accessed and information for specifying an area on the virtual volume. The information specifying the area on the virtual volume includes information on the LBA and the length of the area. When the storage apparatus 1 receives a write request from the host 2, the storage apparatus 1 specifies a virtual page to be accessed from information (LBA and area length) that specifies an area on the virtual volume included in the write request. . When a page is not yet allocated to the virtual page to be accessed, the storage apparatus 1 selects an unused page (a page that has not been allocated to the virtual page) among the pages belonging to the pool, and sets it as the virtual page to be accessed. Assign (map) the selected page. Write data from the host 2 is stored in a page mapped to this access target virtual page.

 またストレージ装置1は、仮想ページと、仮想ページに割り当てられたページとの対応関係(マッピング)をマッピングテーブル(図6について後述する仮想ボリューム管理テーブル300など)に記憶している。仮想ページに対するリード要求を受け付けた時には、ストレージ装置1はマッピングテーブルを参照することで、仮想ページに割り当てられたページを特定し、特定されたページからデータを読み出す。 The storage device 1 also stores the correspondence (mapping) between the virtual page and the page assigned to the virtual page in a mapping table (such as a virtual volume management table 300 described later with reference to FIG. 6). When a read request for a virtual page is received, the storage apparatus 1 refers to the mapping table to identify a page assigned to the virtual page and reads data from the identified page.

 図2は、仮想ボリュームと、仮想ボリュームに割り当てられる記憶領域(ページ)との関係を表した概念図である。図2に示されている長方形状のオブジェクト40は、仮想ボリューム(上書き空間)を表す。一方、円柱状のオブジェクト50はプールを表している。 FIG. 2 is a conceptual diagram showing the relationship between a virtual volume and a storage area (page) allocated to the virtual volume. A rectangular object 40 shown in FIG. 2 represents a virtual volume (overwriting space). On the other hand, the cylindrical object 50 represents a pool.

 さらにストレージ装置1は、仮想ボリューム(上書き空間)40とは異なる記憶空間を有する。この記憶空間は「追書き空間」と呼ばれる。図2に示されている長方形状のオブジェクト60が追書き空間を表している。追書き空間60は、ホスト2がアクセスできる記憶空間ではなく、ストレージコントローラ10だけが使用可能な記憶空間である。追書き空間60は、ストレージコントローラ10のCPU11が圧縮データを記憶デバイス20に格納するために用いられる。 Furthermore, the storage device 1 has a storage space different from the virtual volume (overwrite space) 40. This storage space is called “write-once space”. A rectangular object 60 shown in FIG. 2 represents a write-once space. The write-once space 60 is not a storage space that can be accessed by the host 2 but a storage space that can be used only by the storage controller 10. The write-once space 60 is used for the CPU 11 of the storage controller 10 to store the compressed data in the storage device 20.

 まず、上書き空間の仮想ページと物理ページの関係について説明する。各仮想ページには、仮想ページ番号(VP#と表記されることもある)と呼ばれる、一意な識別番号(識別番号には非負の整数値が用いられる)が付される。以下では、仮想ページ番号がn(nは非負の整数値)の仮想ページのことを、「VP#n」と表記する。同様に各物理ページには、物理ページ番号(またはページ#)と呼ばれる、ストレージ装置1内で一意な識別番号が付される(この識別番号も非負の整数値である)。以下では、物理ページ番号がn(nは非負の整数値)の物理ページのことを、「ページ#n」と表記する。図2の例では、VP#0にページ#0がマップされた例が示されている。VP#1,VP#2については後述する。 First, the relationship between the virtual page and the physical page in the overwrite space will be described. Each virtual page is assigned a unique identification number (a non-negative integer value is used for the identification number) called a virtual page number (sometimes referred to as VP #). Hereinafter, a virtual page with a virtual page number n (n is a non-negative integer value) is denoted as “VP # n”. Similarly, each physical page is given a unique identification number in the storage apparatus 1 called a physical page number (or page #) (this identification number is also a non-negative integer value). Hereinafter, a physical page whose physical page number is n (n is a non-negative integer value) is denoted as “page #n”. In the example of FIG. 2, an example in which page # 0 is mapped to VP # 0 is shown. VP # 1 and VP # 2 will be described later.

 ストレージ装置1がホスト2から、仮想ページ内の領域(1または複数のブロック)に対するライト要求(及びライトデータ)を受け付けた場合、仮想ページにマップされている物理ページ内のブロックにライトデータが格納される。ストレージ装置1は、仮想ページと物理ページの対応関係(マッピング)を、図6について後述する仮想ボリューム管理テーブル300に格納して管理する。 When the storage apparatus 1 receives a write request (and write data) for an area (one or a plurality of blocks) in the virtual page from the host 2, the write data is stored in the block in the physical page mapped to the virtual page. Is done. The storage apparatus 1 manages the correspondence (mapping) between virtual pages and physical pages by storing them in a virtual volume management table 300 described later with reference to FIG.

 本実施形態に係るストレージ装置1は原則として(後述する、圧縮データ格納のケースを除いて)、仮想ページの先頭からn番目のブロックへのデータライト要求を受領すると、データは仮想ページにマップされている物理ページの先頭からn番目のブロックに格納される。なお、説明が冗長になることを避けるため、以下では、ストレージ装置1が仮想ページに割り当てられている物理ページにデータを格納することを、「仮想ページ(または上書き空間)にデータを格納する」と表現する。 In principle, when the storage apparatus 1 according to the present embodiment receives a data write request from the head of the virtual page to the nth block (except for the case of compressed data storage described later), the data is mapped to the virtual page. Stored in the nth block from the top of the physical page. In order to avoid redundant description, in the following, the storage apparatus 1 stores data in a physical page allocated to a virtual page, and “stores data in a virtual page (or overwrite space)”. It expresses.

 追書き空間も上書き空間と同じく、いわゆるThin Provisioning技術により形成される記憶空間である。ストレージコントローラ10は、追書き空間上の領域に、動的にページ(物理ページ)を割り当て、データは追書き空間に割り当てられた物理ページに書き込まれる。上書き空間と同じく、ストレージ装置1は追書き空間を物理ページと同サイズの領域に分割して管理する。この領域は「追書きページ」と呼ばれる。また追書きページにも追書きページ番号と呼ばれる一意な識別番号が付される。追書きページ番号は、追書きページ#と表記されることもある。ストレージ装置1は、追書きページと物理ページの対応関係(マッピング)を、後述する追書き空間マッピングテーブル350(図7)に格納して管理する。また、説明が冗長になることを避けるため、以下では、ストレージ装置1が追書きページに割り当てられている物理ページにデータを書き込む処理を、「追書きページ(または追書き空間)にデータを書き込む」と表現する。 As with the overwrite space, the write-once space is a storage space formed by so-called Thin Provisioning technology. The storage controller 10 dynamically assigns a page (physical page) to an area on the write-once space, and data is written to the physical page assigned to the write-once space. Similar to the overwrite space, the storage device 1 manages the write-once space by dividing it into an area having the same size as the physical page. This area is called “additional page”. A unique identification number called an additional page number is also attached to the additional page. The additional page number may be written as an additional page #. The storage device 1 manages the correspondence (mapping) between the additional page and the physical page by storing it in an additional space mapping table 350 (FIG. 7) described later. Further, in order to avoid redundant description, in the following description, the storage apparatus 1 writes data to a physical page assigned to an additional page, and “writes data to the additional page (or additional space). ".

 先にも述べたが、追書き空間に書き込まれるデータは、圧縮データである。また追書き空間は仮想ボリュームごとに設けられ、仮想ボリュームがn個ある場合には追書き空間はn個存在する。追書き空間に割り当てられる物理ページは、仮想ページに割り当てられる物理ページと同じく、プールから未使用の物理ページが選択される。プール#kの物理ページが割り当てられる仮想ボリュームのチャンクが追書き空間に移動される時、その追書き空間に割り当てられる物理ページは、プール#kの物理ページである。 As described above, the data written in the write-once space is compressed data. Further, an additional write space is provided for each virtual volume. When there are n virtual volumes, there are n additional write spaces. As the physical page allocated to the write-once space, an unused physical page is selected from the pool, similarly to the physical page allocated to the virtual page. When a chunk of a virtual volume to which a physical page of pool #k is allocated is moved to the write-once space, the physical page allocated to the write-in space is a physical page of pool #k.

 ストレージ装置1は、ホスト2から仮想ページに書き込まれたデータ(非圧縮データ)について、必要に応じて圧縮処理を行う。圧縮処理により生成された圧縮データは、非圧縮データの格納された物理ページとは異なる場所、具体的には追書き空間に移動される。またこの時、重複データの有無の判定なども行われる。 The storage device 1 performs compression processing on data (uncompressed data) written from the host 2 to the virtual page as necessary. The compressed data generated by the compression process is moved to a location different from the physical page storing the non-compressed data, specifically, to the write-once space. At this time, the presence / absence of duplicate data is also determined.

 本実施形態に係るストレージ装置1は、仮想ページ内の領域を、仮想ページの先頭から順に8KBの部分領域に区分し、この部分領域ごとにデータ圧縮を行う。本実施形態では、この8KBの部分領域(あるいはこの部分領域に格納されているデータ)のことを「チャンク」と呼ぶ。なお、チャンクの大きさには、8KB以外の大きさが採用されてもよい。また、チャンクを圧縮することで生成されたデータのことを「圧縮チャンク」と呼ぶ。圧縮チャンクの大きさはデータの内容に依存して変動するが、最小で512バイト、最大で8KBである。また本実施形態に係るストレージ装置1は、512バイトの整数倍のサイズの圧縮チャンクを生成する。 The storage apparatus 1 according to the present embodiment divides the area in the virtual page into 8 KB partial areas in order from the top of the virtual page, and performs data compression for each partial area. In the present embodiment, this 8 KB partial area (or data stored in this partial area) is called a “chunk”. Note that a size other than 8 KB may be adopted as the size of the chunk. Data generated by compressing a chunk is called a “compression chunk”. The size of the compressed chunk varies depending on the data contents, but is 512 bytes at the minimum and 8 KB at the maximum. Further, the storage device 1 according to the present embodiment generates a compressed chunk having an integer multiple of 512 bytes.

 ストレージコントローラ10(のCPU11)が圧縮チャンクを生成すると、ストレージコントローラ10は圧縮チャンクを追書き空間に追記する。ある仮想ページのチャンクがすべて圧縮されて、圧縮チャンクが全て追書き空間に書き込まれると、仮想ページに割り当てられていたページは破棄される。具体的には、その仮想ページに割り当てられていたページは、未使用状態(仮想ページに割り当てられていない状態)に変更される。これにより、上書き空間に対して書き込まれたデータが、追書き空間に移動されたことになる。なお、追書き空間に割り当てられた物理ページには、複数の仮想ページのチャンク(圧縮チャンク)が格納されることもある。圧縮によりチャンクのサイズは小さくなり、複数の仮想ページのデータが1物理ページに収容可能になることもあるからである。またストレージ装置1は、上書き空間上のチャンクと追書き空間上の圧縮チャンクの対応関係(マッピング)を、図8について後述するLP変換テーブル500に格納して管理する。 When the storage controller 10 (the CPU 11 thereof) generates a compressed chunk, the storage controller 10 adds the compressed chunk to the additional write space. When all the chunks of a certain virtual page are compressed and all the compressed chunks are written to the write-once space, the page assigned to the virtual page is discarded. Specifically, the page assigned to the virtual page is changed to an unused state (a state not assigned to the virtual page). As a result, the data written to the overwrite space is moved to the additional write space. Note that a plurality of virtual page chunks (compressed chunks) may be stored in the physical page allocated to the write-once space. This is because the chunk size is reduced by the compression, and data of a plurality of virtual pages may be accommodated in one physical page. Also, the storage apparatus 1 manages the correspondence (mapping) between the chunks in the overwrite space and the compressed chunks in the write-once space by storing them in an LP conversion table 500 described later with reference to FIG.

 ホスト2から書き込まれたデータが追書き空間に移動された仮想ページに対して、ホスト2から更新データの書き込み要求(つまり更新要求)があった場合、更新データは圧縮され、追書き空間に追記される。ただし別の実施形態として、ストレージ装置1は再び上書き空間の仮想ページに物理ページを割り当て、追書き空間に移動されたデータを伸長して、仮想ページに割り当てられた物理ページに伸長されたデータを書き戻し、そしてこの物理ページ上のデータを更新(上書き)するようにしてもよい。 If there is an update data write request (that is, an update request) from the host 2 to the virtual page in which the data written from the host 2 has been moved to the write space, the update data is compressed and added to the write space. Is done. However, as another embodiment, the storage apparatus 1 again allocates a physical page to the virtual page in the overwrite space, expands the data moved to the write-once space, and expands the data expanded to the physical page allocated to the virtual page. You may make it write back and update (overwrite) the data on this physical page.

 ストレージ装置1が、上書き空間上のチャンクを特定するために使用するアドレスをLAと呼ぶ。LAはチャンクごとに付されるアドレスで、
 LA=LBA÷16
の関係にある。
An address used by the storage apparatus 1 to identify a chunk on the overwrite space is called LA. LA is an address assigned to each chunk.
LA = LBA ÷ 16
Are in a relationship.

 そのため、上書き空間上の先頭に位置するチャンクのLAは0で、後続のチャンクのLAは順に、1,2,...の連続番号になる。 Therefore, the LA of the chunk located at the top of the overwrite space is 0, and the LA of the subsequent chunks are 1, 2,. . . It becomes the serial number.

 一方追書き空間上の圧縮チャンクは可変長で、最小512バイトのサイズであるので、追書き空間上の512バイトの領域(ブロック)ごとにアドレスが付される。このアドレスをPAと呼ぶ。追書き空間上の先頭に位置する512バイト領域のPAが0で、後続の領域のPAには、順に1,2,...の連続番号が用いられる。 On the other hand, since the compressed chunk on the write-once space has a variable length and a minimum size of 512 bytes, an address is assigned to each 512-byte area (block) on the write-once space. This address is called PA. The PA in the 512-byte area located at the head of the write-once space is 0, and the PA in the subsequent area is 1, 2,. . . The serial number is used.

(3)管理情報
 続いて、上で述べたプール、仮想ボリューム(上書き空間)、追書き空間の管理に用いられる管理情報の内容について説明する。なお、本明細書や図面で、数値の先頭に文字列“0x”が付されているものがあるが、これはその数値が16進数で表記されていることを意味する。
(3) Management Information Next, the contents of management information used for managing the pool, virtual volume (overwrite space), and write-once space described above will be described. In this specification and drawings, there is a character string “0x” added to the beginning of a numerical value, which means that the numerical value is expressed in hexadecimal.

 図3にストレージ装置1が有する管理情報を示す。ストレージ装置1は、キャッシュメモリ14上にページ管理テーブル200、仮想ボリューム管理テーブル300、追書き空間マッピングテーブル350、論理物理変換テーブル(LP変換テーブル)500、FPMQ(FingerPrint Match Queue)400、FPTD(FingerPrint Table Directory)450、プール管理情報600を有する。 FIG. 3 shows the management information that the storage apparatus 1 has. The storage apparatus 1 has a page management table 200, a virtual volume management table 300, an additional write space mapping table 350, a logical-physical conversion table (LP conversion table) 500, an FPMQ (FingerPrint Match400Queue) 400, and an FPTD (FingerPrint) on the cache memory 14. Table Directory) 450 and pool management information 600.

 図4はプールに属するページを管理するための情報である、ページ管理テーブル200の例を示している。ページ管理テーブル200はプールごとに設けられるテーブルで、プールがn個設けられている場合には、ストレージ装置1はn個のページ管理テーブル200を有する。 FIG. 4 shows an example of a page management table 200 that is information for managing pages belonging to the pool. The page management table 200 is a table provided for each pool. When n pools are provided, the storage apparatus 1 has n page management tables 200.

 ページ管理テーブル200の各行(レコード)には、プール内の物理ページの情報が格納される。各レコードは、ページ#(201)、DEV#(202)、Addr(203)、use(204)の欄を有する。ページ#(201)には、物理ページのページ番号が格納される。つまりページ#(201)がnのレコードは、ページ#nの情報を管理するレコードである。 Each row (record) of the page management table 200 stores physical page information in the pool. Each record has columns of page # (201), DEV # (202), Addr (203), and use (204). Page number (201) stores the page number of the physical page. That is, the record of page # (201) n is a record for managing information of page #n.

 先に述べたが、ページ(物理ページ)は記憶デバイス20上の領域である。DEV#(202)とAddr(203)には、物理ページの存在する記憶デバイス20の識別番号及び記憶デバイス内のアドレスが格納される。図4の場合、ページ#1の情報を管理するレコードには、DEV#(202)に0、Addr(203)に0x15000が格納されている。そのため、ページ#1は、識別番号が0の記憶デバイス20の、アドレス0x15000から始まる42MBの領域(1物理ページのサイズに等しい領域)に相当することを表している。 As described above, a page (physical page) is an area on the storage device 20. In DEV # (202) and Addr (203), the identification number of the storage device 20 where the physical page exists and the address in the storage device are stored. In the case of FIG. 4, the record managing the information of page # 1 stores 0 in DEV # (202) and 0x15000 in Addr (203). Therefore, page # 1 represents that it corresponds to a 42 MB area (an area equal to the size of one physical page) of the storage device 20 with the identification number 0 starting from address 0x15000.

 use(204)には、物理ページの使用状況を表す情報が格納される。物理ページが仮想ボリュームまたは追書き空間にマップされている場合、use(204)には“1”が格納される。逆に物理ページが仮想ボリュームまたは追書き空間にマップされていない場合、use(204)には“0”が格納される。use(204)が“1”であるページは、使用中のページと呼ばれ、逆にuse(204)が“0”のページは、未使用のページと呼ばれる。 Use (204) stores information indicating the usage status of the physical page. When the physical page is mapped to the virtual volume or the write-once space, “1” is stored in the use (204). Conversely, when the physical page is not mapped to the virtual volume or the write-once space, “0” is stored in use (204). A page whose use (204) is “1” is called a page in use, and conversely, a page whose use (204) is “0” is called an unused page.

 なお、本実施形態では、ページ管理テーブル200に、記憶デバイス20(たとえばHDD)の識別番号とアドレスが登録され、各ページが1つの記憶デバイス20内の記憶領域に相当する例が説明されている。ただし、これ以外のプール(またはページ)の構成方法が採用されてもよい。たとえばストレージ装置1がRAID(Redundant Arrays of Independent (or Inexpensive) Disks)技術を用いて、複数の記憶デバイス20から1つの論理的な記憶デバイス(論理デバイスと呼ぶ)を形成する場合、論理デバイス上の所定サイズ(たとえば42MB)の記憶領域をページとして扱ってよい。その場合、ページ管理テーブル200のDEV#(202)とAddr(203)には、論理デバイスの識別番号と、論理デバイス内のアドレスが格納されるとよい。 In the present embodiment, an example is described in which the identification number and address of the storage device 20 (for example, HDD) are registered in the page management table 200 and each page corresponds to a storage area in one storage device 20. . However, other pool (or page) configuration methods may be employed. For example, when the storage apparatus 1 forms a single logical storage device (referred to as a logical device) from a plurality of storage devices 20 using RAID (Redundant Arrays of Independent (or Inexpensive) Disks) technology, A storage area of a predetermined size (for example, 42 MB) may be handled as a page. In this case, the DEV # (202) and Addr (203) of the page management table 200 may store the logical device identification number and the address in the logical device.

 図5にプール管理情報600の例を示す。プール管理情報600は、各プールに属する仮想ボリュームに関する情報などを格納するためのテーブルである。プールが複数存在する場合、ストレージ装置1は各仮想ボリュームを、いずれか1つのプールに所属させる。ストレージ装置1は、仮想ボリュームの仮想ページに物理ページを割り当てる際、仮想ボリュームが属しているプール内の未使用物理ページを選択して、仮想ページに物理ページを割り当てる。 FIG. 5 shows an example of the pool management information 600. The pool management information 600 is a table for storing information about virtual volumes belonging to each pool. When there are a plurality of pools, the storage apparatus 1 causes each virtual volume to belong to one of the pools. When allocating a physical page to a virtual page of a virtual volume, the storage apparatus 1 selects an unused physical page in the pool to which the virtual volume belongs and allocates the physical page to the virtual page.

 プール管理情報600の各レコードには、プール番号(601)、仮想ボリューム#(603)、最終書き込み位置(602)の情報が格納される。プール番号(601)は、プール番号が格納される。仮想ボリューム#(603)には、プールに属する仮想ボリュームの識別番号(仮想ボリューム番号と呼ぶ)が格納される。プールに属する仮想ボリュームが複数存在する場合には、仮想ボリューム#(603)には複数の仮想ボリューム番号が格納される。 In each record of the pool management information 600, information on the pool number (601), virtual volume # (603), and last write position (602) is stored. The pool number (601) stores the pool number. Virtual volume # (603) stores the identification number (referred to as a virtual volume number) of the virtual volume belonging to the pool. When there are a plurality of virtual volumes belonging to the pool, a plurality of virtual volume numbers are stored in the virtual volume # (603).

 最終書き込み位置(602)には、対応するプールに属する各仮想ボリューム(同じ行の仮想ボリューム#(603)に仮想ボリューム番号が格納された各仮想ボリューム)にそれぞれ対応させて、その仮想ボリュームと対応付けられた追書き空間内の最後に圧縮チャンクが書き込まれた追書きページの追書きページ番号が格納される。ストレージコントローラ10が追書きページに圧縮チャンクを書き込む際、最終書き込み位置(602)を参照することで、最後に書き込みが行われた追書きページを特定する。 The last write position (602) corresponds to each virtual volume that belongs to the corresponding pool (each virtual volume whose virtual volume number is stored in virtual volume # (603) in the same row) and corresponds to that virtual volume. The additional page number of the additional page to which the compressed chunk is written at the end in the attached additional space is stored. When the storage controller 10 writes the compressed chunk on the additional write page, the last write position is specified by referring to the final write position (602).

 図6は、仮想ボリューム管理テーブル300の例を示している。仮想ボリューム管理テーブル300もキャッシュメモリ14に格納されている。仮想ボリューム管理テーブル300の各レコードには、仮想ボリューム内の仮想ページについての情報が格納される。具体的には各レコードには、仮想ページ#(301)、最終更新時刻(302)、ページ種別(303)、ページ#(304)、プール#(305)の情報が格納される。 FIG. 6 shows an example of the virtual volume management table 300. A virtual volume management table 300 is also stored in the cache memory 14. Each record of the virtual volume management table 300 stores information about virtual pages in the virtual volume. Specifically, information of virtual page # (301), last update time (302), page type (303), page # (304), and pool # (305) is stored in each record.

 仮想ページ#(301)には、仮想ページの仮想ページ番号が格納される。一方ページ#(304)には、仮想ページに割り当てられた物理ページのページ#が格納される。プール#(305)は、仮想ページに割り当てられた物理ページが属するプールのプール番号である。 The virtual page number (301) stores the virtual page number of the virtual page. On the other hand, the page # (304) stores the page # of the physical page assigned to the virtual page. Pool # (305) is the pool number of the pool to which the physical page assigned to the virtual page belongs.

 最終更新時刻(302)には、最後に仮想ページに対してライト要求を受け付けた時刻が格納される。ストレージ装置1はある仮想ページに対してライト要求を受け付けるたびに、その仮想ページの最終更新時刻(302)にライト要求を受け付けた時刻を格納する。 In the last update time (302), the time when the last write request is received for the virtual page is stored. Each time the storage apparatus 1 receives a write request for a certain virtual page, the storage apparatus 1 stores the time when the write request is received as the last update time (302) of the virtual page.

 ページ種別(303)には、1または0が格納される。初期状態では、全仮想ページのページ種別(303)は1に設定されている。 1 or 0 is stored in the page type (303). In the initial state, the page type (303) of all virtual pages is set to 1.

 ページ種別(303)に0が格納されている場合、仮想ページに対して書き込まれたデータは圧縮されて、追書き空間に移動されたことを表す。この場合には、ページ#(304)とプール#(305)には無効値(nullと呼ぶ。具体的には“-1”などの、ページ#やプール#に用いられない値である)が格納される。また移動されたデータ(圧縮チャンク)の格納場所は、後述するLP変換テーブル500(図8)等に記録される。 When 0 is stored in the page type (303), this indicates that the data written to the virtual page is compressed and moved to the write-once space. In this case, page # (304) and pool # (305) have invalid values (referred to as null, specifically, values such as “−1” that are not used for page # or pool #). Stored. The storage location of the moved data (compressed chunk) is recorded in an LP conversion table 500 (FIG. 8) to be described later.

 一方ページ種別(303)に1が格納されている場合、仮想ページに対して書き込まれたデータはまだ追書き空間に移動されていないか、あるいはその仮想ページに対してまだホスト2からの書き込み要求が発生していないことを表す。ページ種別(303)が1で、ページ#(304)とプール#(305)に有効な値(nullでない値)が格納されている場合、その仮想ページに対して物理ページが割り当てられており、その物理ページにホスト2からのライトデータが格納されていることを示す。逆にページ種別(303)が1で、ページ#(304)とプール#(305)がnullの場合、その仮想ページに対してまだホスト2からの書き込み要求が発生しておらず、物理ページが割り当てられていないことを表す。 On the other hand, when 1 is stored in the page type (303), the data written to the virtual page has not yet been moved to the write-once space, or the write request from the host 2 has not yet been sent to the virtual page. This means that has not occurred. If the page type (303) is 1 and a valid value (a non-null value) is stored in the page # (304) and the pool # (305), a physical page is allocated to the virtual page, This indicates that write data from the host 2 is stored in the physical page. Conversely, when the page type (303) is 1 and the page # (304) and the pool # (305) are null, a write request from the host 2 has not yet occurred for the virtual page, and the physical page is Indicates not assigned.

 なお、仮想ボリューム管理テーブル300は仮想ボリューム毎に作成されるため、仮想ボリュームが複数存在する場合、仮想ボリューム管理テーブル300は複数存在する。また仮想ボリュームが複数存在する場合、仮想ボリューム管理テーブル300の各レコードには、上で説明した仮想ページ#(301)等の情報に加えて、仮想ボリュームを特定するための情報(たとえば仮想ボリューム番号)が含まれてもよい。 Since the virtual volume management table 300 is created for each virtual volume, when there are a plurality of virtual volumes, a plurality of virtual volume management tables 300 exist. When there are a plurality of virtual volumes, each record of the virtual volume management table 300 includes information for specifying a virtual volume (for example, a virtual volume number) in addition to the information such as the virtual page # (301) described above. ) May be included.

 図7は、追書き空間マッピングテーブル350の例を示している。追書き空間マッピングテーブル350は、追書き空間にマッピングされる物理ページを管理するための管理情報である。追書き空間は仮想ボリュームごとに設けられるので、追書き空間マッピングテーブル350も仮想ボリュームごとに存在する。各行の追書きページ#(351)には、追書きページ番号が昇順に格納されている。追書き空間マッピングテーブル350の各レコードは、追書きページ#(351)で特定される追書きページに、ページ#(352)とプール#(353)で特定されるページが割り当てられていることを表している。追書きページにページが割り当てられていない場合、その追書きページのページ#(352)とプール#(353)にはnullが格納される。 FIG. 7 shows an example of the write-once space mapping table 350. The write-once space mapping table 350 is management information for managing physical pages mapped to the write-once space. Since the additional write space is provided for each virtual volume, the additional write space mapping table 350 also exists for each virtual volume. In each line's additional page # (351), additional page numbers are stored in ascending order. Each record of the additional space mapping table 350 indicates that the page specified by the page # (352) and the pool # (353) is allocated to the additional page specified by the additional page # (351). Represents. When no page is assigned to the additional writing page, null is stored in page # (352) and pool # (353) of the additional writing page.

 ページ内最終書き込み位置(354)は、追書きページ内のブロックのうち、最後に圧縮チャンクが書き込まれたブロックの相対アドレスが格納される。相対アドレスとは具体的には、ページ内の先頭ブロックのアドレスを0と定めた時の、ブロックのアドレスである。図7の例では、追書きページ#(351)が“2”のレコードのページ内最終書き込み位置(354)は“0x00005”であるので、この追書きページ#が“2”の追書きページに割り当てられているページには、ページ先頭から6番目のブロックまで圧縮チャンクが書き込まれていることを表している。ストレージ装置1は追書き空間に圧縮チャンクを追記する際に、このページ内最終書き込み位置(354)とプール管理情報600の最終書き込み位置(354)とを参照することで、圧縮チャンクを書き込むべき位置を特定する。 In the last write position (354) in the page, the relative address of the block in which the compressed chunk is written last among the blocks in the additional write page is stored. Specifically, the relative address is an address of a block when the address of the first block in the page is set to 0. In the example of FIG. 7, since the last write position (354) in the page of the record with the additional write page # (351) of “2” is “0x00005”, the additional write page # is changed to the additional write page with “2”. This indicates that a compressed chunk is written in the allocated page from the top of the page to the sixth block. When the storage apparatus 1 adds a compressed chunk to the additional write space, the storage device 1 refers to the final write position (354) in the page and the final write position (354) of the pool management information 600 to write the compressed chunk. Is identified.

 続いて論理物理変換テーブル500について説明する。論理物理変換テーブル500は、上書き空間上のチャンクが圧縮されて追書き空間に移動された場合、各チャンクの移動先を管理するためのテーブルである。図8に論理物理変換テーブル500の例を示す。論理物理変換テーブル500はLP変換テーブル500と表記されることもある。 Next, the logical / physical conversion table 500 will be described. The logical-physical conversion table 500 is a table for managing the movement destination of each chunk when the chunk on the overwrite space is compressed and moved to the write-once space. FIG. 8 shows an example of the logical-physical conversion table 500. The logical-physical conversion table 500 may be expressed as an LP conversion table 500.

 LP変換テーブル500のレコードは、仮想ボリューム上のチャンクと圧縮チャンクの記録位置との対応関係(マッピング)についての情報を表す。各レコードは、レコードのLA(501)で特定される8KBの領域(チャンク)が圧縮された後、PA(503)で特定されるアドレスから始まる、長さがLength(504)の領域に格納されたことを表す。 The record of the LP conversion table 500 represents information on the correspondence (mapping) between the chunk on the virtual volume and the recording position of the compressed chunk. Each record is stored in an area of length (504) starting from the address specified by PA (503) after the 8 KB area (chunk) specified by LA (501) of the record is compressed. It represents that.

 先に述べたとおり、本実施形態に係るストレージ装置1は重複排除処理を行うので、原則として、同内容の複数のチャンクが追書き空間に格納されないように制御される。再び図2を用いて重複排除処理の概略を説明する。仮想ボリュームのVP#1のチャンクA、チャンクBのそれぞれが、圧縮チャンクa、圧縮チャンクbとして追書き空間上に格納されている状態にあるとき、ストレージ装置1がVP#2のチャンクを追書き空間に移動する処理を開始した場合を想定する。もしチャンクDの内容がチャンクBと同一だった場合、チャンクDの圧縮チャンクは追書き空間に書き込まれない。代わりにストレージ装置1は、LP変換テーブル500のチャンクBの情報を格納しているレコードのPA(503)と同一の値を、LP変換テーブル500のチャンクDの情報を格納しているレコードのPA(503)に格納する。 As described above, since the storage apparatus 1 according to the present embodiment performs the deduplication processing, in principle, control is performed so that a plurality of chunks having the same contents are not stored in the write-once space. The outline of the deduplication processing will be described again with reference to FIG. When the chunk A and chunk B of the VP # 1 of the virtual volume are stored in the write-once space as the compressed chunk a and the compressed chunk b, the storage apparatus 1 additionally writes the VP # 2 chunk. Assume that the process of moving to space is started. If the contents of the chunk D are the same as the chunk B, the compressed chunk of the chunk D is not written to the write-once space. Instead, the storage apparatus 1 uses the same value as the PA (503) of the record storing the chunk B information in the LP conversion table 500, and the PA of the record storing the chunk D information in the LP conversion table 500. (503).

 また、ストレージ装置1が重複排除処理を行うとき、チャンクごとに、そのチャンクのデータに応じた値のチェックコードを算出する。上述のように本実施形態では、このチェックコードをFPK(FingerPrint Key)と呼ぶ。本実施形態の場合、FKPは8バイトのサイズの情報である。ただしFKPは8バイト以外のサイズであってもよい。本実施の形態におけるFKPの具体的な算出手法については、後述する。 In addition, when the storage apparatus 1 performs the deduplication processing, a check code having a value corresponding to the chunk data is calculated for each chunk. As described above, in this embodiment, this check code is called FPK (FingerPrint Key). In the present embodiment, FKP is information having a size of 8 bytes. However, the FKP may have a size other than 8 bytes. A specific calculation method of FKP in the present embodiment will be described later.

 ストレージ装置1は、チャンクから生成されるFPKとチャンクのLAの対応関係を管理情報に記録する。この管理情報はFingerPrint Match Queue(以下では“FPMQ”と呼ばれる)と呼ぶ。図9にFPMQ400の例を示す。FPMQ400は、FPK(401)とLA(402)のカラムを有するテーブルで、LA(402)から始まる8KBの領域(チャンク)から生成されたFPKが、FPK(401)に格納される。FPMQ400に格納される各行(レコード)は、FPK(401)の昇順にソートされている。以下では、FPMQ400のレコード、つまりFPK(401)とLA(402)のセットのことを、「チャンクのメタデータ」(あるいは単に「メタデータ」)と呼ぶことがある。 The storage device 1 records the correspondence between the FPK generated from the chunk and the LA of the chunk in the management information. This management information is called FingerPrint Match Queue (hereinafter referred to as “FPMQ”). FIG. 9 shows an example of the FPMQ 400. The FPMQ 400 is a table having columns of FPK (401) and LA (402), and an FPK generated from an 8 KB area (chunk) starting from LA (402) is stored in the FPK (401). Each row (record) stored in the FPMQ 400 is sorted in the ascending order of the FPK (401). Hereinafter, a record of the FPMQ 400, that is, a set of the FPK (401) and the LA (402) may be referred to as “chunk metadata” (or simply “metadata”).

 FPMQ400は仮想ボリュームごとに設けられる。ストレージ装置1は、たとえば仮想ボリューム#n(上書き空間)のチャンクを追書き空間に移動する時(仮にこのチャンクを“チャンクA”と呼ぶ)、仮想ボリューム#n用のFPMQ400を参照する事で、チャンクAと同一のチャンク(圧縮チャンク)が既に追書き空間に存在するか判定する。チャンクAのFPKと同一のFPKが、仮想ボリューム#n用のFPMQ400に存在しない場合、チャンクAと同一のチャンク(圧縮チャンク)はプール#n用の追書き空間に存在しないと判定できる。本実施例に係るストレージ装置1では、重複排除の範囲は仮想ボリュームである。そのためチャンクAと同一のチャンク(圧縮チャンク)が仮想ボリューム#nにはないが、仮想ボリューム#n以外の仮想ボリュームに存在した場合、チャンクA(の圧縮チャンク)は仮想ボリューム#nに書き込まれる。 FPMQ 400 is provided for each virtual volume. For example, when the storage device 1 moves a chunk of the virtual volume #n (overwrite space) to the write-once space (this chunk is called “chunk A”), by referring to the FPMQ 400 for the virtual volume #n, It is determined whether the same chunk (compressed chunk) as chunk A already exists in the write-once space. When the same FPK as the FPK of the chunk A does not exist in the FPMQ 400 for the virtual volume #n, it can be determined that the same chunk (compressed chunk) as the chunk A does not exist in the additional write space for the pool #n. In the storage apparatus 1 according to this embodiment, the deduplication range is a virtual volume. Therefore, the same chunk (compressed chunk) as chunk A does not exist in virtual volume #n, but if it exists in a virtual volume other than virtual volume #n, chunk A (compressed chunk) is written to virtual volume #n.

 また、FPMQ400内の情報の検索を効率的に行えるようにするために、ストレージ装置1はFPMQ400内のいくつかのレコードが格納されているアドレス(キャッシュメモリ14上アドレス)を記録した管理情報を有する。この管理情報は、FingerPrint Table Directoryと呼ばれる。また以下ではこれを、“FPTD”と呼ぶこともある。 Further, in order to make it possible to efficiently search for information in the FPMQ 400, the storage apparatus 1 has management information that records addresses (addresses on the cache memory 14) in which some records in the FPMQ 400 are stored. . This management information is called FingerPrint Table Directory. Hereinafter, this may be referred to as “FPTD”.

 図9にFPTD450の例を示す。FPTD450もFPMQ400と同様に、仮想ボリュームごとに設けられる。FPMQ格納アドレス(452)には、FPMQ400のレコードのうち、FPK401に格納されているFPKの上位32bitが、FPK先頭32bit(451)と等しいレコードの中で、FPK401が最も小さいレコードが格納されているアドレス(キャッシュメモリ14上アドレス)が格納される。 FIG. 9 shows an example of FPTD450. As with the FPMQ 400, the FPTD 450 is also provided for each virtual volume. The FPMQ storage address (452) stores the record having the smallest FPK401 among the records of the FPMQ400, in which the upper 32 bits of the FPK stored in the FPK401 are equal to the first 32 bits (451) of the FPK. An address (address on the cache memory 14) is stored.

 たとえばFPMQ400内で、FPK401の上位32bitが“0x00000001”であるレコードのうち、値が最小のレコードのFPK401が“0x0000000100000001”だった場合を想定する。この時FPK401が“0x0000000100000001”のレコードが格納されているアドレスが“ADR2”だった場合には、FPTD450には、FPK先頭32bit(451)が“0x00000001”、FPMQ格納アドレス452が“ADR2”のレコードが記録される。 For example, in the FPMQ 400, it is assumed that the FPK 401 having the smallest value among the records having the upper 32 bits of the FPK 401 being “0x00000001” is “0x0000000100000001”. At this time, if the address storing the record “0x0000000100000001” in the FPK 401 is “ADR2”, the FPTD 450 has a record in which the first 32 bits (451) of the FPK is “0x00000001” and the FPMQ storage address 452 is “ADR2”. Is recorded.

 後述する重複排除プログラム1000では、チャンクのFPKを算出してから、そのFPKと同じ値がFPMQ400のFPK(401)に格納されているか判定する処理が行われる。FPMQ400に格納されているレコード数が非常に多い場合、検索に時間がかかるため、FPTD450が用いられる。 In the deduplication program 1000 to be described later, after calculating the FPK of the chunk, a process of determining whether the same value as the FPK is stored in the FPK (401) of the FPMQ 400 is performed. Since the search takes time when the number of records stored in the FPMQ 400 is very large, the FPTD 450 is used.

 たとえば、“0x0000000100000001”の格納されているレコードを検索する場合、重複排除プログラム1000はFPTD450を参照することで、FPK先頭32bit(451)が“0x00000001”のFPMQ格納アドレス(452)が“ADR2”であることを認識する。続いて重複排除プログラム1000は、FPMQ400内のレコードのうち、アドレス“ADR2”(これはキャッシュメモリ14上のアドレスである)のレコードから順に、“0x0000000100000001”の格納されているレコードを探索する。なお、FPTD450は、FPMQ400内の情報の検索速度を向上させるための情報であるから、FPTD450は必須の情報ではない。 For example, when searching for a record in which “0x0000000100000001” is stored, the deduplication program 1000 refers to the FPTD 450 so that the FPMQ storage address (452) with the FPK leading 32 bits (451) “0x00000001” is “ADR2”. Recognize that there is. Subsequently, the deduplication program 1000 searches the records in the FPMQ 400 for records in which “0x0000000100000001” is stored in order from the record at the address “ADR2” (this is the address on the cache memory 14). The FPTD 450 is information for improving the search speed of information in the FPQ 400, and thus the FPTD 450 is not essential information.

 FPMQ400には、チャンクごとに、チャンクのメタデータが格納される。FPKを生成したチャンクが多いと、FPMQ400のサイズが増大し、キャッシュメモリ14の記憶領域を多く消費することになる。キャッシュメモリ14の記憶領域を過剰に消費することを避けるために、本実施例に係るストレージ装置1は、所定の条件に該当するチャンクについては、FPMQ400にチャンクのメタデータを格納しない制御を行う。この制御の詳細は後述する。 The FPMQ 400 stores chunk metadata for each chunk. If there are many chunks that have generated FPK, the size of the FPMQ 400 increases, and the storage area of the cache memory 14 is consumed. In order to avoid excessive consumption of the storage area of the cache memory 14, the storage apparatus 1 according to the present embodiment performs control not to store the chunk metadata in the FPMQ 400 for chunks that satisfy a predetermined condition. Details of this control will be described later.

 図8のFPK上位32bit(502)とFPMQ登録(505)について説明する。LP変換テーブル500のFPK上位32bit(502)には、チャンクのFPKの上位32ビットが格納される。FPMQ登録(505)は、チャンクのメタデータがFPMQ400に登録されているかいないかを表す情報である。ストレージ装置1がLA(501)で特定されるチャンクのメタデータをFPMQ400に登録した場合、FPMQ登録(505)に“1”が記録され、そうでない場合にはFPMQ登録(505)に“0”が記録される。また、チャンクから生成されたFPK(及びそのチャンクのLA)をFPMQ400に登録した後、FPMQ400からFPK及びそのチャンクのLAを削除することもある。その場合にもストレージ装置1はFPMQ登録(505)に“0”を記録する。 FPK upper 32 bits (502) and FPMQ registration (505) in FIG. 8 will be described. The upper 32 bits of the FPK of the chunk are stored in the FPK upper 32 bits (502) of the LP conversion table 500. The FPMQ registration (505) is information indicating whether or not the chunk metadata is registered in the FPMQ 400. When the storage device 1 registers the metadata of the chunk specified by the LA (501) in the FPMQ 400, “1” is recorded in the FPMQ registration (505), and otherwise “0” in the FPMQ registration (505). Is recorded. In addition, after the FPK generated from the chunk (and the LA of the chunk) is registered in the FPMQ 400, the FPK and the LA of the chunk may be deleted from the FPMQ 400. Also in this case, the storage apparatus 1 records “0” in the FPMQ registration (505).

(4)処理の流れ
 続いて、本実施形態に係るストレージ装置1が実施する処理の流れの説明を行う。図10に示されているように、本実施形態に係るストレージ装置1のローカルメモリ16には少なくとも、I/Oプログラム100、バッファ更新プログラム150、重複排除プログラム1000が格納されており、CPU11がこれらのプログラムを実行する。またローカルメモリ16には、稼働情報300’、バッファ700が設けられる。バッファ700は、CPU11が圧縮処理または伸長処理を行う時に使用するメモリ領域である。
(4) Process Flow Next, a process flow executed by the storage apparatus 1 according to this embodiment will be described. As shown in FIG. 10, at least the I / O program 100, the buffer update program 150, and the deduplication program 1000 are stored in the local memory 16 of the storage apparatus 1 according to the present embodiment. Run the program. The local memory 16 is provided with operation information 300 ′ and a buffer 700. The buffer 700 is a memory area used when the CPU 11 performs compression processing or decompression processing.

 稼働情報300’は、仮想ボリューム管理テーブル300(図6)に格納される情報のうち、一部の情報が格納された情報である。具体的には稼働情報300’は、仮想ボリューム管理テーブル300の各レコードのうち、仮想ページ#(301)、最終更新時刻(302)のみを有する。そのため、本明細書では稼働情報300’の図示は略す。 The operation information 300 ′ is information in which a part of the information stored in the virtual volume management table 300 (FIG. 6) is stored. Specifically, the operation information 300 ′ has only the virtual page # (301) and the last update time (302) among the records of the virtual volume management table 300. Therefore, the operation information 300 ′ is not shown in this specification.

 まず、図11~図13を参照してI/Oプログラム100が実行する処理の流れを説明する。なお、以下で説明される各図において、参照番号の前に付されているアルファベットの“S”は、「ステップ」を意味する。 First, the flow of processing executed by the I / O program 100 will be described with reference to FIGS. In each drawing described below, the alphabet “S” attached before the reference number means “step”.

(4-1)リード処理
 ストレージ装置1がホスト2からI/O要求を受領すると、I/Oプログラム100の実行が開始される。図11は、ホスト2からのI/O要求としてリード要求をストレージ装置1が受領したときに、I/Oプログラム100が実行するリード処理の流れを示す。なお、図11では、リード要求で指定された領域のデータがキャッシュメモリ14に存在しなかった場合(キャッシュミスのケース)の例を説明する。
(4-1) Read Processing When the storage apparatus 1 receives an I / O request from the host 2, execution of the I / O program 100 is started. FIG. 11 shows the flow of read processing executed by the I / O program 100 when the storage apparatus 1 receives a read request as an I / O request from the host 2. FIG. 11 illustrates an example of a case where the data in the area specified by the read request does not exist in the cache memory 14 (case of cache miss).

 ステップ11:I/Oプログラム100は、ホスト2からリード要求を受領すると、リード要求に含まれている、リード先のアドレス(LBA)を、仮想ページ番号に変換する。以下ではリード先の領域の仮想ページ番号がpであった場合の例を説明する。また以下では、リード要求で指定されているリード先の領域が、複数の仮想ページに跨っていない場合の例を説明する。 Step 11: Upon receiving a read request from the host 2, the I / O program 100 converts the read destination address (LBA) included in the read request into a virtual page number. Hereinafter, an example in which the virtual page number of the read destination area is p will be described. In the following, an example in which the read destination area specified in the read request does not extend over a plurality of virtual pages will be described.

 ステップ12:I/Oプログラム100は仮想ボリューム管理テーブル300を参照し、ステップ11で求められた仮想ページ番号(p)のページ種別(303)が“1”か判定する。ページ種別(303)が“1”の場合(ステップ12:Yes)、次にステップ13が行われ、そうでない場合には(ステップ12:No)、次にステップ15が行われる。 Step 12: The I / O program 100 refers to the virtual volume management table 300 and determines whether the page type (303) of the virtual page number (p) obtained in Step 11 is “1”. If the page type (303) is “1” (step 12: Yes), then step 13 is performed. If not (step 12: No), then step 15 is performed.

 ステップ13:I/Oプログラム100は仮想ボリューム管理テーブル300を参照し、仮想ページ(VP#p)に割り当てられている物理ページのページ番号(304)を特定する。さらにI/Oプログラム100はページ管理テーブル200を参照することで、その物理ページの存在する記憶デバイス20のDEV#(202)、Addr(203)を特定する。 Step 13: The I / O program 100 refers to the virtual volume management table 300 and identifies the page number (304) of the physical page assigned to the virtual page (VP # p). Further, the I / O program 100 refers to the page management table 200 to identify the DEV # (202) and Addr (203) of the storage device 20 in which the physical page exists.

 ステップ14:I/Oプログラム100は、ステップ13で特定された記憶デバイス20からデータを読み出し、ホスト2に読み出されたデータを返送し、処理を終了する。なお、ここで読み出されたデータは、キャッシュメモリ14に格納しておいてもよい。そうすると、後でそのデータに対するリード要求を再び受領した際、I/Oプログラム100は記憶デバイス20にアクセスすることなく、ホスト2にデータを返却できる。 Step 14: The I / O program 100 reads data from the storage device 20 specified in step 13, returns the read data to the host 2, and ends the processing. Note that the data read here may be stored in the cache memory 14. Then, when the read request for the data is received again later, the I / O program 100 can return the data to the host 2 without accessing the storage device 20.

 ステップ15:ステップ15が実行される場合、リード要求で指定されている領域のデータは追書き空間に移動されているので、I/Oプログラム100は、リード対象データ(圧縮チャンク)の格納されている、追書き空間上のアドレス(PA)を算出する必要がある。なお、以下では、リード要求で指定されている領域のサイズが1チャンク(8KB)と同じで、かつこの領域がチャンク境界に一致している場合の例を説明する。ステップ15ではチャンクI/Oプログラム100は、リード要求に含まれているリード先のアドレス(LBA)を、LAに変換する。 Step 15: When step 15 is executed, since the data in the area specified by the read request has been moved to the additional write space, the I / O program 100 stores the read target data (compressed chunk). It is necessary to calculate the address (PA) on the write-once space. Hereinafter, an example will be described in which the size of the area specified in the read request is the same as one chunk (8 KB) and this area matches the chunk boundary. In step 15, the chunk I / O program 100 converts the read destination address (LBA) included in the read request into LA.

 ステップ16:I/Oプログラム100はLP変換テーブル500を参照し、LA(501)がステップ15で特定されたLAに等しいレコードを特定し、そのレコードのPA(502)及びLength(503)を特定する。さらにI/Oプログラム100は、特定されたPAから追書きページ番号を算出し、そして追書き空間マッピングテーブル350を参照することで、特定された追書きページに割り当てられている物理ページのページ#(352)、プール#(353)を特定する。さらにI/Oプログラム100はページ管理テーブル200を参照することで、その物理ページの存在する記憶デバイス20のDEV#(202)、Addr(203)を特定する。 Step 16: The I / O program 100 refers to the LP conversion table 500, identifies a record in which LA (501) is equal to the LA identified in step 15, and identifies PA (502) and Length (503) of the record. To do. Further, the I / O program 100 calculates the additional page number from the identified PA, and refers to the additional space mapping table 350 to thereby determine the page # of the physical page assigned to the identified additional page. (352) and specify the pool # (353). Further, the I / O program 100 refers to the page management table 200 to identify the DEV # (202) and Addr (203) of the storage device 20 in which the physical page exists.

 ステップ17:I/Oプログラム100は、ステップ16で特定された記憶デバイス20からリード要求のあったデータ(圧縮チャンク)を読み出し、バッファ700に格納すると共に、バッファ700に格納した圧縮チャンクを伸長してホスト2に返却するデータ伸長処理を実行する。このデータ伸長処理の詳細については、後述する。そしてI/Oプログラム100は、この後、処理を終了する。なお、ここで読み出されたデータは、キャッシュメモリ14に格納しておいてもよい。 Step 17: The I / O program 100 reads the data (compressed chunk) requested to be read from the storage device 20 specified in Step 16, stores the data in the buffer 700, and decompresses the compressed chunk stored in the buffer 700. The data decompression process to be returned to the host 2 is executed. Details of the data decompression process will be described later. Thereafter, the I / O program 100 ends the process. Note that the data read here may be stored in the cache memory 14.

(4-2)ライト処理
 図12を参照して、ホスト2からのI/O要求がライト要求であったときに、I/Oプログラム100が実行するライト処理の流れを説明する。
(4-2) Write Processing With reference to FIG. 12, the flow of write processing executed by the I / O program 100 when the I / O request from the host 2 is a write request will be described.

 ステップ101:I/Oプログラム100は、ホスト2からのライト要求を受領すると、ライト要求でライト対象となっているデータを受領するために、キャッシュメモリ14上の領域を確保する。そしてI/Oプログラム100は、確保された領域にライト対象のデータを格納する。これは公知のストレージ装置でも行われる処理のため、詳細の説明は略す。なおステップ101でI/Oプログラム100は、ライト要求で指定されている、ライト先の領域のアドレス(LBA)を、仮想ページ#に変換する。以下ではライト先の領域の仮想ページ#がpであった場合の例を説明する。 Step 101: Upon receiving a write request from the host 2, the I / O program 100 secures an area on the cache memory 14 in order to receive data to be written by the write request. The I / O program 100 stores the write target data in the secured area. Since this is a process performed also in a known storage device, detailed description thereof is omitted. In step 101, the I / O program 100 converts the address (LBA) of the write destination area specified in the write request into a virtual page #. Hereinafter, an example in which the virtual page # in the write destination area is p will be described.

 ステップ102:I/Oプログラム100は、ホスト2に対し、ライト処理が完了した旨を応答する。 Step 102: The I / O program 100 responds to the host 2 that the write processing has been completed.

 ステップ103:I/Oプログラム100は、ローカルメモリ16(図10)に保持している稼働情報300’(図10)のレコードのうち、仮想ページ#(301)がpのレコードの最終更新時刻(302)に、現在時刻(ステップ103が実行される時点の時刻)を格納する。 Step 103: The I / O program 100 updates the last update time (p) of the record whose virtual page # (301) is p among the records of the operation information 300 ′ (FIG. 10) held in the local memory 16 (FIG. 10). 302) stores the current time (the time when step 103 is executed).

 ステップ103の後、I/Oプログラム100は所定の契機でキャッシュメモリ14に格納したデータを、記憶デバイス20に書き込む(ステップ110)。この処理はデステージと呼ばれる。仮想ページ(仮にこれをVP#pとする)に書き込まれたデータをデステージする時、仮想ページに物理ページが割り当てられている場合、割り当てられた物理ページの存在する記憶デバイス29にデータをデステージする。また物理ページが割り当てられていない場合には、デステージ前に仮想ページに物理ページが割り当てられる。またVP#pのチャンクが追書き空間に移動されている場合、I/Oプログラム100は追書き空間にデータを追記する。この処理の詳細は後述する。 After step 103, the I / O program 100 writes the data stored in the cache memory 14 to the storage device 20 at a predetermined opportunity (step 110). This process is called destage. When data written to a virtual page (assuming this is VP # p) is destaged, if a physical page is allocated to the virtual page, the data is de-stored in the storage device 29 where the allocated physical page exists. Stage. If no physical page is allocated, the physical page is allocated to the virtual page before destage. When the VP # p chunk has been moved to the write-once space, the I / O program 100 adds data to the write-once space. Details of this processing will be described later.

 また、ステップ110は、ステップ103の直後に行われる必要はなく、任意の時刻に行われてよい。たとえばストレージ装置1のCPU11の負荷が低い時、或いはキャッシュメモリ14に格納されたデータ量が所定の閾値を超過したときなどに実行されるとよい。 Also, step 110 need not be performed immediately after step 103, and may be performed at any time. For example, it may be executed when the load on the CPU 11 of the storage device 1 is low, or when the amount of data stored in the cache memory 14 exceeds a predetermined threshold.

(4-3)バッファ更新処理
 ステップ103で稼働情報300’に記録された情報は、バッファ更新プログラム150によって、キャッシュメモリ14上の仮想ボリューム管理テーブル300に反映される。バッファ更新プログラム150は定期的に実行されるプログラムである。
(4-3) Buffer Update Processing Information recorded in the operation information 300 ′ in step 103 is reflected in the virtual volume management table 300 on the cache memory 14 by the buffer update program 150. The buffer update program 150 is a program that is periodically executed.

 バッファ更新プログラム150の実行が開始されると、バッファ更新プログラム150は稼働情報300’の内容を、仮想ボリューム管理テーブル300に反映する。図13を用いて処理の流れを説明する。 When the execution of the buffer update program 150 is started, the buffer update program 150 reflects the contents of the operation information 300 ′ in the virtual volume management table 300. The flow of processing will be described with reference to FIG.

 ステップ151:バッファ更新プログラム150は稼働情報300’のレコードを1つ選択する。以下では、このレコードの仮想ページ#(101)の値がpの場合を例にとって説明する。 Step 151: The buffer update program 150 selects one record of the operation information 300 '. Hereinafter, a case where the value of the virtual page # (101) of this record is p will be described as an example.

 ステップ152:バッファ更新プログラム150は、仮想ボリューム管理テーブル300における仮想ページ#(301)がpのレコードの最終更新時刻(302)に、選択された稼働情報300’のレコードの最終更新時刻を記録する。 Step 152: The buffer update program 150 records the last update time of the record of the selected operation information 300 ′ at the last update time (302) of the record whose virtual page # (301) is p in the virtual volume management table 300. .

 ステップ153:バッファ更新プログラム150は、ローカルメモリ16からステップ151で選択した稼働情報300’のレコードを削除する。 Step 153: The buffer update program 150 deletes the record of the operation information 300 'selected in Step 151 from the local memory 16.

 ステップ154:稼働情報300’の全レコードに対してステップ153までの処理が終了した場合(ステップ154:Yes)、処理を終了する。まだローカルメモリ16に稼働情報300’のレコードが残っている場合(ステップ154:No)、バッファ更新プログラム150はステップ151から処理を繰り返す。 Step 154: When the processing up to step 153 is completed for all the records of the operation information 300 '(step 154: Yes), the processing is terminated. When the record of the operation information 300 ′ still remains in the local memory 16 (Step 154: No), the buffer update program 150 repeats the processing from Step 151.

 本実施形態に係るストレージ装置1は、CPU11がキャッシュメモリ14にアクセスするとき、内部スイッチ17を経由したアクセスを行うため、アクセス性能(応答時間)が、CPU11がローカルメモリ16にアクセスするときの性能に比べて良くない(長くなる)。そのため本実施形態に係るストレージ装置1は、最終更新時刻の情報をローカルメモリ16上の稼働情報300’に一時記録し、定期的にその内容をキャッシュメモリ14上の仮想ボリューム管理テーブル300に反映する制御を行う。 Since the storage apparatus 1 according to this embodiment performs access via the internal switch 17 when the CPU 11 accesses the cache memory 14, the access performance (response time) is the performance when the CPU 11 accesses the local memory 16. It is not good (becomes longer) than. Therefore, the storage apparatus 1 according to the present embodiment temporarily records the information of the last update time in the operation information 300 ′ on the local memory 16, and regularly reflects the contents on the virtual volume management table 300 on the cache memory 14. Take control.

 ただし別の実施形態として、ストレージ装置1がローカルメモリ16のみを有し、仮想ボリューム管理テーブル300がローカルメモリ16上に格納される構成の場合、このような制御を行う必要がなく、I/Oプログラム100はステップ103で直接仮想ボリューム管理テーブル300の最終更新時刻(302)の更新を行ってもよい。またストレージ装置1がキャッシュメモリ14のみを有し、全ての情報がキャッシュメモリ14上に格納される構成の場合も、上で説明した制御を行う必要がなく、I/Oプログラム100はステップ103で、キャッシュメモリ14上の仮想ボリューム管理テーブル300の更新を行ってもよい。 However, as another embodiment, when the storage apparatus 1 has only the local memory 16 and the virtual volume management table 300 is stored in the local memory 16, it is not necessary to perform such control, and I / O The program 100 may directly update the last update time (302) of the virtual volume management table 300 in step 103. In the case where the storage apparatus 1 has only the cache memory 14 and all the information is stored in the cache memory 14, it is not necessary to perform the control described above, and the I / O program 100 is executed in step 103. The virtual volume management table 300 on the cache memory 14 may be updated.

(4-4)重複排除処理
 続いて、重複排除プログラム1000の処理について、図14、図15を用いて説明する。重複排除プログラム1000は、ホスト2から上書き空間に書き込まれたデータ(このデータは一旦上書き空間に割り当てられた物理ページに格納される)を、追書き空間に割り当てられたページに移動する処理を行うプログラムである。先に述べたとおり、追書き空間に割り当てられたページにデータ(チャンク)が移動されるとき、チャンクは圧縮される。そして重複排除処理が行われることもある。
(4-4) Deduplication Processing Next, the processing of the deduplication program 1000 will be described with reference to FIGS. The deduplication program 1000 performs a process of moving data written in the overwrite space from the host 2 (this data is stored in a physical page once assigned to the overwrite space) to a page assigned to the additional write space. It is a program. As described above, when data (chunk) is moved to a page allocated to the write-once space, the chunk is compressed. Deduplication processing may be performed.

 ステップ1010:重複排除プログラム1000は、仮想ボリューム管理テーブル300を参照し、追書き空間にデータを移動する仮想ページを選択する。仮想ページの選択基準は任意で良い。一例として、ページ種別(303)が“1”の仮想ページのうち、現在時刻と最終更新時刻(302)との差が所定の閾値以上で、かつ最終更新時刻(302)が最も古いものを選ぶとよい。追書き空間に格納されるデータ(チャンク)は圧縮されているため、アクセス時の応答時間が長くなる。そのため、アクセス頻度の高いデータよりも、アクセス頻度の低いデータが追書き空間に配置される方が好ましいからである。 Step 1010: The deduplication program 1000 refers to the virtual volume management table 300 and selects a virtual page for moving data to the write-once space. The virtual page selection criteria may be arbitrary. As an example, a virtual page with a page type (303) of “1” is selected such that the difference between the current time and the last update time (302) is equal to or greater than a predetermined threshold and the last update time (302) is the oldest. Good. Since the data (chunk) stored in the write-once space is compressed, the response time at the time of access becomes long. Therefore, it is preferable that data with low access frequency is arranged in the write-once space rather than data with high access frequency.

 ステップ1020:重複排除プログラム1000は、ステップ1010で選択した仮想ページのデータを、記憶デバイス20からキャッシュメモリ14上に読み出す。もし既にかかる仮想ページのデータがキャッシュメモリ14上に存在する場合には、このステップ1020は実行される必要がない。 Step 1020: The deduplication program 1000 reads the data of the virtual page selected in Step 1010 from the storage device 20 onto the cache memory 14. If such virtual page data already exists on the cache memory 14, this step 1020 need not be executed.

 ステップ1030:重複排除プログラム1000は、ステップ1020でキャッシュメモリ14上に読み出したデータの中から、チャンクを選択する。チャンクの選択方法は任意である。たとえばLAが小さいチャンクから順に選択するようにしてもよい。 Step 1030: The deduplication program 1000 selects a chunk from the data read onto the cache memory 14 in step 1020. The method for selecting chunks is arbitrary. For example, you may make it select in order from the chunk with small LA.

 ステップ1040:重複排除プログラム1000は、ステップ1030(または後述するステップ1080)で選択したチャンクを、バッファ700に転送する。 Step 1040: The deduplication program 1000 transfers the chunk selected in step 1030 (or step 1080 described later) to the buffer 700.

 ステップ1050:重複排除プログラム1000は、バッファ700に転送したチャンクのFPKを算出してLP変換テーブル300に格納すると共に、そのチャンクのデータを圧縮することで圧縮チャンクを生成する。この処理(以降、FPK算出・データ圧縮処理と記す)の詳細は後述する。ここで生成された圧縮チャンクは、一旦バッファ700に保存される。 Step 1050: The deduplication program 1000 calculates the FPK of the chunk transferred to the buffer 700, stores it in the LP conversion table 300, and generates a compressed chunk by compressing the data of the chunk. Details of this processing (hereinafter referred to as FPK calculation / data compression processing) will be described later. The compressed chunk generated here is temporarily stored in the buffer 700.

 ステップ1060:ステップ1050でデータの圧縮が成功したか否かを判定する。データの圧縮が成功した場合(ステップ1060:Yes)、次にステップ1070が行われ、そうでない場合には(ステップ1060:No)、次にステップ1080が行われる。 Step 1060: In step 1050, it is determined whether or not data compression is successful. If the data compression is successful (step 1060: Yes), step 1070 is performed next. If not (step 1060: No), step 1080 is performed next.

 ステップ1070:このステップで重複排除プログラム1000は、圧縮チャンクを追書き空間60に格納する。また、必要に応じて重複排除処理も行われる。この処理の詳細は後述する。 Step 1070: In this step, the deduplication program 1000 stores the compressed chunk in the write-once space 60. In addition, deduplication processing is also performed as necessary. Details of this processing will be described later.

 ステップ1080:重複排除プログラム1000は、ステップ1020でキャッシュメモリ上に読み出したデータの中から、次のチャンク(ステップ1040~ステップ1070の処理をまだ行っていないチャンク)を選択する。 Step 1080: The deduplication program 1000 selects the next chunk (chunk that has not yet been processed in steps 1040 to 1070) from the data read onto the cache memory in step 1020.

 ステップ1090:もしステップ1080で、次のチャンクを選択できなかった場合、つまりすべてのチャンクに対するステップ1040~ステップ1070の処理が完了した場合(ステップ1090:Yes)、次にステップ1100が行われる。ステップ1080で、次のチャンクが選択できた場合(ステップ1090:No)、重複排除プログラム1000は再びステップ1040からの処理を行う。 Step 1090: If the next chunk cannot be selected in Step 1080, that is, if the processing of Step 1040 to Step 1070 for all the chunks is completed (Step 1090: Yes), Step 1100 is performed next. If the next chunk can be selected in Step 1080 (Step 1090: No), the deduplication program 1000 performs the processing from Step 1040 again.

 ステップ1100:重複排除プログラム1000は、上書き空間のデータを破棄する。具体的には重複排除プログラム1000は、ステップ1010で選択した仮想ページに割り当てられているページが、仮想ページに割り当てられていない状態になるよう、仮想ボリューム管理テーブル300の内容を更新する(この仮想ページのページ種別(303)は“0”に、そしてページ#(304)とプール#(305)には“null”が格納される)。また重複排除プログラム1000は、割り当てられていた物理ページを未使用の状態にするために、この物理ページについて、ページ管理テーブル200のレコードのうち、割り当てられていた物理ページのuse(204)の値を“0”に更新する。 Step 1100: The deduplication program 1000 discards the data in the overwrite space. Specifically, the deduplication program 1000 updates the contents of the virtual volume management table 300 so that the page allocated to the virtual page selected in step 1010 is not allocated to the virtual page (this virtual The page type (303) of the page is “0”, and “null” is stored in page # (304) and pool # (305). Further, the deduplication program 1000 sets the value of the use (204) of the allocated physical page of the records of the page management table 200 for this physical page to make the allocated physical page unused. Is updated to “0”.

 ここで、ステップ1070で行われる処理の詳細を、図15を参照しながら説明する。 Here, the details of the processing performed in step 1070 will be described with reference to FIG.

 ステップ6010:重複排除プログラム1000は、ステップ1050で求めたFPKと同じFPKが、FPMQ400に格納されているか探索する。先に述べたとおり、重複排除プログラム1000はFPTD450とFPMQ400を参照することで、ステップ1050で求めたFPKと同じFPKの格納されている、FPMQ400のレコードを探索する。 Step 6010: The deduplication program 1000 searches whether the same FPK as the FPK obtained in step 1050 is stored in the FPMQ 400. As described above, the deduplication program 1000 searches the FPMQ 400 record in which the same FPK as the FPK obtained in step 1050 is stored by referring to the FPTD 450 and the FPMQ 400.

 ステップ6020:もし、ステップ1050で求めたFPKと同じFPKが、FPMQ400に格納されている場合(ステップ6020:Yes)、重複排除プログラム1000は次にステップ6030を行う。ステップ1050で求めたFPKと同じFPKが、FPQM400にも格納されていない場合(ステップ6020:No)、次にステップ6070が行われる。 Step 6020: If the same FPK as the FPK obtained in step 1050 is stored in the FPMQ 400 (step 6020: Yes), the deduplication program 1000 next performs step 6030. If the same FPK as the FPK obtained in step 1050 is not stored in the FPQM 400 (step 6020: No), step 6070 is performed next.

 ステップ6030:重複排除プログラム1000は、FPMQ400、LP変換テーブル500、追書き空間マッピングテーブル350、ページ管理テーブル200を参照することで、ステップ1050で求められたFPKと同じFPKを持つチャンク(圧縮チャンク)を記憶デバイス20から読み出す。 Step 6030: The deduplication program 1000 refers to the FPMQ 400, the LP conversion table 500, the write space mapping table 350, and the page management table 200, so that a chunk (compression chunk) having the same FPK as the FPK obtained in Step 1050 is obtained. Are read from the storage device 20.

 具体的には重複排除プログラム1000は、まずFPMQ400とLP変換テーブル500を参照することで、ステップ1050で求めたFPKと同じFPKを持つチャンク(圧縮チャンク)の格納されているPA及びその長さを特定する。以下、このチャンクを“重複候補チャンク”と呼び、重複候補チャンクのPAを“PA1”と呼ぶ。続いて重複排除プログラム1000は追書き空間マッピングテーブル350を参照することで、重複候補チャンクが格納されているページ(物理ページ)のページ番号を特定し、さらにページ管理テーブル200を参照することで、重複候補チャンクが格納されているページが存在する記憶デバイス20及びアドレスを特定する。これはI/Oプログラム100が行うステップ16と同様の処理である。そして重複排除プログラム1000は特定した記憶デバイス20から、重複候補チャンクを読み出す。 Specifically, the deduplication program 1000 first refers to the FPMQ 400 and the LP conversion table 500 to determine the PA in which the chunk (compression chunk) having the same FPK as the FPK obtained in step 1050 is stored and its length. Identify. Hereinafter, this chunk is referred to as “overlapping candidate chunk”, and the PA of the overlapping candidate chunk is referred to as “PA1”. Subsequently, the deduplication program 1000 identifies the page number of the page (physical page) where the duplication candidate chunk is stored by referring to the write-once space mapping table 350, and further refers to the page management table 200. The storage device 20 and the address where the page storing the duplicate candidate chunk exists are specified. This is the same processing as step 16 performed by the I / O program 100. Then, the duplicate elimination program 1000 reads duplicate candidate chunks from the specified storage device 20.

 ステップ6040:重複排除プログラム1000は、ステップ6030で読み出したチャンク(圧縮チャンク)とステップ1060で圧縮したチャンクの内容を比較し、両者が同一か否か判定する。比較の際、両者はいずれも圧縮された状態にあるが、重複排除プログラム1000は圧縮されたチャンク同士をバイト単位で比較する。ただし別の実施形態として、重複排除プログラム1000は圧縮したチャンクを一旦伸長し、伸長したデータの比較を行ってもよい。比較の結果、両者が一致している場合(ステップ6040:Yes)、次にステップ6050が行われる。両者が異なる場合(ステップ6040:No)、次にステップ6070が行われる。 Step 6040: The deduplication program 1000 compares the chunk read in step 6030 (compressed chunk) with the contents of the chunk compressed in step 1060, and determines whether or not they are the same. At the time of comparison, both are in a compressed state, but the deduplication program 1000 compares the compressed chunks in byte units. However, as another embodiment, the deduplication program 1000 may temporarily decompress the compressed chunk and compare the decompressed data. As a result of the comparison, if the two match (step 6040: Yes), step 6050 is performed next. When both are different (step 6040: No), step 6070 is performed next.

 ステップ6050:重複排除プログラム1000は、FPMQ400にチャンクのFPKとチャンクのLAを登録する。また重複排除プログラム1000は、LP変換テーブル500のレコードのうち、LA(501)が処理対象チャンクのLAに一致するレコードのFPMQ登録(505)に“1”を格納する。 Step 6050: The deduplication program 1000 registers the chunk FPK and the chunk LA in the FPMQ 400. Further, the deduplication program 1000 stores “1” in the FPMQ registration (505) of the record whose LA (501) matches the LA of the processing target chunk among the records of the LP conversion table 500.

 ステップ6060:重複排除プログラム1000は、LP変換テーブル500のレコードのうち、LA(501)が処理対象チャンクのLAに一致するレコードのPA(503)に、重複候補チャンクのPA(つまりPA1)を格納し、Length(504)に重複候補チャンクの長さを格納する。この場合、追書き空間への圧縮チャンク格納は行われない。その後重複排除プログラム1000は、ステップ1080以降の処理を行う。 Step 6060: The duplicate elimination program 1000 stores the PA (503) of the duplicate candidate chunk in the PA (503) of the record whose LA (501) matches the LA of the processing target chunk among the records of the LP conversion table 500. Then, the length of the duplication candidate chunk is stored in Length (504). In this case, the compressed chunk is not stored in the write-once space. Thereafter, the deduplication program 1000 performs the processing after step 1080.

 ステップ6070:このステップの処理内容はステップ6050と同じである。 Step 6070: The processing content of this step is the same as step 6050.

 ステップ6080:重複排除プログラム1000は、バッファ700に一時保存されている圧縮チャンクを追書き空間に書き込み、バッファ700内の圧縮チャンクを削除する。先に述べたとおり、重複排除プログラム1000は追書き空間に圧縮チャンクを書き込むとき、追書き空間に追記する。ここで圧縮チャンクを追書き空間に追記する処理の流れを、図16を用いて説明する。 Step 6080: The deduplication program 1000 writes the compressed chunk temporarily stored in the buffer 700 to the write-once space, and deletes the compressed chunk in the buffer 700. As described above, when the deduplication program 1000 writes a compressed chunk in the write-once space, it additionally writes it in the write-once space. Here, the flow of the process of adding the compressed chunk to the additional writing space will be described with reference to FIG.

 まず、重複排除プログラム1000は、圧縮チャンクを追記すべき追書き空間上のアドレス(PA)を決定する(ステップ51)。ストレージ装置1は、プール管理情報600と追書き空間マッピングテーブル350に、追書き空間の最終書き込み位置の情報を保持している。重複排除プログラム1000は、プール管理情報600の対応する仮想ボリュームの最終書き込み位置(602)を参照することで、その仮想ボリュームに対応する追書き空間における最後に書き込みが行われた追書きページの追書きページ#を特定する。以下、これをAP1と表記する。続いて重複排除プログラム1000は追書き空間マッピングテーブル350を参照することで、追書きページ#(351)がAP1のレコードのページ内最終書き込み位置(354)を特定する。以下ではこれをRA1と表記する。そして重複排除プログラム1000は、“AP1×ページのサイズ(42MB)÷512+RA1+1”を算出することで、圧縮チャンクを書き込むべき追書き空間上のアドレス(PA)を求める。以下では、圧縮チャンク書き込み先のPAが“PA2”と決定され、また圧縮チャンクの長さが“L2”であった場合について説明する。 First, the deduplication program 1000 determines the address (PA) on the write-once space where the compressed chunk is to be added (step 51). The storage apparatus 1 holds information on the final write position of the write space in the pool management information 600 and the write space mapping table 350. The deduplication program 1000 refers to the last write position (602) of the corresponding virtual volume in the pool management information 600, thereby adding the last page to be written in the write space corresponding to the virtual volume. Specify writing page #. Hereinafter, this is referred to as AP1. Subsequently, the deduplication program 1000 refers to the additional write space mapping table 350 to identify the final write position (354) in the page of the record of the additional write page # (351). Hereinafter, this is denoted as RA1. Then, the deduplication program 1000 calculates “AP1 × page size (42 MB) ÷ 512 + RA1 + 1” to obtain an address (PA) on the additional write space where the compressed chunk is to be written. Hereinafter, a case where the PA to which the compressed chunk is written is determined as “PA2” and the length of the compressed chunk is “L2” will be described.

 続いて重複排除プログラム1000は、ステップ51で決定されたPA(PA2)を含む追書きページに物理ページが割り当てられているか判定する(ステップ52)。このために重複排除プログラム1000は、PA2をページのサイズ(42MB)で割ることで、PA2を含む追書きページの追書きページ#を求める(以下、ここで求められた追書きページ#は、“AP2”と表記する)。さらに重複排除プログラム1000は追書き空間マッピングテーブル350を参照することで、追書きページ#(351)がAP2のレコードのページ#(352)に有効な値(null以外の値)が格納されているか判定する。ページ#(352)に有効な値が格納されている場合、PA2を含む追書きページには物理ページが割り当てられている。 Subsequently, the deduplication program 1000 determines whether a physical page is allocated to the additional page including the PA (PA2) determined in step 51 (step 52). For this purpose, the deduplication program 1000 obtains the additional page # of the additional page including PA2 by dividing PA2 by the page size (42 MB) (hereinafter, the additional page # obtained here is “ AP2 "). Further, the deduplication program 1000 refers to the write space mapping table 350, so that a valid value (a value other than null) is stored in the page # (352) of the record of AP2 for the write page # (351). judge. When a valid value is stored in page # (352), a physical page is assigned to the additional page including PA2.

 PA2を含む追書きページに物理ページが割り当てられていない場合(ステップ52:No)、重複排除プログラム1000は、追書きページに物理ページを割り当てる(ステップ53)。具体的には重複排除プログラム1000は、ページ管理テーブル200から未使用の物理ページを1つ選択し、そのページ#及びそのページの属するプールのプール#をそれぞれ、追書きページ#(351)がAP2のレコードのページ#(352)とプール#(353)に格納する。また重複排除プログラム1000は、ページ管理テーブル200から選択された物理ページのuse(204)に“1”を格納する。逆に、PA2に物理ページが割り当てられている場合(ステップ52:Yes)は、ステップ53は行われない。 When the physical page is not allocated to the additional page including PA2 (step 52: No), the deduplication program 1000 allocates the physical page to the additional page (step 53). Specifically, the deduplication program 1000 selects one unused physical page from the page management table 200, and each page # and the pool # of the pool to which the page belongs are added to the additional page # (351) as AP2. Are stored in page # (352) and pool # (353). The deduplication program 1000 stores “1” in the use (204) of the physical page selected from the page management table 200. Conversely, if a physical page is assigned to PA2 (step 52: Yes), step 53 is not performed.

 ステップ54では、重複排除プログラム1000は追書き空間マッピングテーブル350とページ管理テーブル200を参照することで、圧縮チャンクの書き込み先の記憶デバイス20のアドレスを算出する。続いて重複排除プログラム1000は、ステップ54で算出されたアドレスに、圧縮チャンクを書き込む(ステップ55)。ステップ56で重複排除プログラム1000は、今回圧縮チャンクを書き込んだ追書きページの追書きページ#をプール管理情報600の最終書き込み位置(602)に代入し、また最後に書き込みを行った追書きページ内の相対アドレスを追書き空間マッピングテーブル350のページ内最終書き込み位置(354)に代入し、処理を終了する。 In step 54, the deduplication program 1000 refers to the write space mapping table 350 and the page management table 200 to calculate the address of the storage device 20 to which the compressed chunk is written. Subsequently, the deduplication program 1000 writes the compressed chunk at the address calculated in step 54 (step 55). In step 56, the deduplication program 1000 substitutes the additional write page # of the additional write page in which the compressed chunk has been written this time for the final write position (602) of the pool management information 600, and in the last written write page. Is substituted into the last write position (354) in the page of the additional write space mapping table 350, and the process ends.

 以上が、ステップ6080で行われる処理である。再び図15の説明に戻る。 The above is the processing performed in step 6080. Returning to the description of FIG.

 ステップ6090:重複排除プログラム1000は、LP変換テーブル500のレコードのうち、LA(501)が処理対象チャンクのLAに一致するレコードのPA(502)に、圧縮チャンクのPA(つまりPA2)を格納し、Length(503)に圧縮チャンクの長さ(L2)を格納する。その後重複排除プログラム1000は、ステップ1080以降の処理を行う。 Step 6090: The deduplication program 1000 stores the compression chunk PA (that is, PA2) in the PA (502) of the record whose LA (501) matches the LA of the processing target chunk among the records of the LP conversion table 500. , Length (503) stores the length (L2) of the compressed chunk. Thereafter, the deduplication program 1000 performs the processing after step 1080.

(4-5)デステージ処理
 図12のステップ110でI/Oプログラム100が実行するデステージ処理の流れを、図17を用いて説明する。
(4-5) Destage Processing The flow of destage processing executed by the I / O program 100 at step 110 in FIG. 12 will be described with reference to FIG.

 ステップ5010:I/Oプログラム100は、キャッシュメモリ14に格納された各データの中から、処理対象のデータを選択する。データの選択方法は、様々な方法がありえる。一例として、ホスト2からライトされた時刻が最も古いデータを選択する方法がある。その場合、ストレージコントローラ10は、キャッシュメモリ14に格納された各データについて、ホスト2からライトされた時刻を記憶しておく必要がある。以下では、ここで1チャンク分のデータが選択された場合の例を説明する。ただし別の実施形態として、複数のチャンク、たとえば仮想ボリューム上で連続している複数のチャンクが選択されてもよい。 Step 5010: The I / O program 100 selects data to be processed from each data stored in the cache memory 14. There are various methods for selecting data. As an example, there is a method of selecting data with the oldest time written from the host 2. In this case, the storage controller 10 needs to store the time written from the host 2 for each data stored in the cache memory 14. Hereinafter, an example in which data for one chunk is selected will be described. However, as another embodiment, a plurality of chunks, for example, a plurality of chunks continuous on the virtual volume may be selected.

 ステップ5020:I/Oプログラム100は、ステップ5010で選択されたデータの書き込み先仮想ページを特定する。以下では、ステップ5020でVP#pが特定された場合の例を説明する。そしてI/Oプログラム100は仮想ボリューム管理テーブル300を参照し、仮想ページ#(301)が“p”のレコードについて、ページ種別(303)が“0”か“1”かを判定する。ページ種別(303)が“1”の場合(ステップ5020:No)、データの書き込み先は上書き空間であるので、次にステップ5110が実行される。ページ種別(303)が“0”の場合(ステップ5020:Yes)、次にステップ5030が行われる。 Step 5020: The I / O program 100 specifies the virtual page to which the data selected in Step 5010 is written. Hereinafter, an example in which VP # p is specified in step 5020 will be described. Then, the I / O program 100 refers to the virtual volume management table 300 and determines whether the page type (303) is “0” or “1” for the record whose virtual page # (301) is “p”. If the page type (303) is “1” (step 5020: No), the data write destination is the overwrite space, so step 5110 is executed next. If the page type (303) is “0” (step 5020: Yes), then step 5030 is performed.

 ステップ5030:このステップが実行される場合、VP#pに書き込まれたデータは追書き空間に移動されていることを意味する。この場合I/Oプログラム100は、追書き空間に移動されているVP#pのデータを、再び上書き空間に戻すか否かを判定する。 Step 5030: When this step is executed, it means that the data written in VP # p has been moved to the write-once space. In this case, the I / O program 100 determines whether the data of VP # p that has been moved to the write-once space is returned to the overwrite space again.

 たとえばVP#p内のほぼ全てのチャンクが更新された場合、I/Oプログラム100は、追書き空間に移動されているVP#pのデータを再び上書き空間に戻すと決定する。この場合、VP#pが今後も頻繁に更新される可能性があるため、デステージのたびにデータを圧縮して格納すると、ライト処理のオーバヘッドが大きくなるためである。ただしこの判定方法は一例であり、これ以外の判定方法によって、追書き空間に移動されているVP#pのデータを、再び上書き空間に戻すか否かが判定されてもよい。ステップ5030の判定が否定的な場合、次にステップ5040が行われ、ステップ5030の判定が肯定的な場合、次にステップ5210が行われる。 For example, when almost all chunks in VP # p are updated, the I / O program 100 determines to return the data of VP # p that has been moved to the write-once space to the overwrite space again. In this case, since VP # p may be frequently updated in the future, if data is compressed and stored every time destage is performed, the overhead of write processing increases. However, this determination method is only an example, and it may be determined whether or not the data of VP # p that has been moved to the write-once space is returned to the overwrite space by another determination method. If the determination at step 5030 is negative, then step 5040 is performed, and if the determination at step 5030 is positive, then step 5210 is performed.

 ステップ5040:I/Oプログラム100は、処理対象データを圧縮する。これは図14のステップ1040~ステップ1060で行われる処理と同じである。ステップ1040~ステップ1060と同様に、I/Oプログラム100はFPKの算出も行う。 Step 5040: The I / O program 100 compresses the processing target data. This is the same as the processing performed in steps 1040 to 1060 in FIG. Similar to steps 1040 to 1060, the I / O program 100 also calculates FPK.

 ステップ5050:I/Oプログラム100は、処理対象データ(圧縮チャンク)を追書き空間に格納する。この処理は図14のステップ1080と同様な処理である。つまり図15のステップ6010~ステップ6090の処理が行われる。ステップ5050の後、キャッシュメモリ14から処理対象データを削除し、またバッファ700から処理対象データ及びその圧縮チャンクを削除し、デステージ処理は終了する。 Step 5050: The I / O program 100 stores the processing target data (compressed chunk) in the write-once space. This process is the same as step 1080 in FIG. That is, the processing from step 6010 to step 6090 in FIG. 15 is performed. After step 5050, the processing target data is deleted from the cache memory 14, and the processing target data and its compressed chunk are deleted from the buffer 700, and the destage processing ends.

 ステップ5210:追書き空間に移動されているVP#pのデータを、再び上書き空間に戻すと決定された場合、I/Oプログラム100は、追書き空間に移動されているVP#pのデータを全て、記憶デバイス20から読み出し、データを伸長し、一旦キャッシュメモリ14に格納する。これは図11を用いて説明した処理と同様の処理が行われればよい。 Step 5210: When it is determined that the data of VP # p that has been moved to the write-once space is returned to the overwrite space, the I / O program 100 stores the data of VP # p that has been moved to the write-once space. All are read from the storage device 20, decompressed data, and temporarily stored in the cache memory 14. For this, the same processing as that described with reference to FIG. 11 may be performed.

 ステップ5220:I/Oプログラム100は、VP#pに物理ページを割り当てる。具体的には、I/Oプログラム100はページ管理テーブル200から未使用の物理ページを1つ選択し、そのページ#及びそのページの属するプールのプール#をそれぞれ、仮想ボリューム管理テーブル300内の、仮想ページ#(301)がpのレコードのページ#(304)とプール#(305)に格納する。またI/Oプログラム100は、ページ管理テーブル200から選択された物理ページのuse(204)に“1”を格納する。 Step 5220: The I / O program 100 allocates a physical page to VP # p. Specifically, the I / O program 100 selects one unused physical page from the page management table 200, and each of the page # and the pool # of the pool to which the page belongs are stored in the virtual volume management table 300. The virtual page # (301) is stored in the page # (304) and the pool # (305) of the record of p. The I / O program 100 stores “1” in the use (204) of the physical page selected from the page management table 200.

 ステップ5230:I/Oプログラム100は、VP#pに割り当てられた物理ページに、ステップ5210で読み出されたデータを格納する。具体的にはI/Oプログラム100は、図11のステップ13と同様に、ページ管理テーブル200を参照することでVP#pに割り当てられた物理ページの存在する記憶デバイス20のDEV#(202)、Addr(203)を特定する。そしてI/Oプログラム100は、特定された記憶デバイスに、ステップ5210で読み出されたデータを格納する。 Step 5230: The I / O program 100 stores the data read in Step 5210 in the physical page assigned to VP # p. Specifically, the I / O program 100 refers to the page management table 200 as in Step 13 of FIG. 11, and the DEV # (202) of the storage device 20 in which the physical page allocated to VP # p exists. , Addr (203) is specified. The I / O program 100 stores the data read in step 5210 in the specified storage device.

 ステップ5240:I/Oプログラム100は、VP#pに割り当てられた物理ページに、処理対象データを上書きし、デステージ処理を終了する。 Step 5240: The I / O program 100 overwrites the processing target data on the physical page assigned to VP # p, and ends the destage processing.

 ステップ5110:I/Oプログラム100は、VP#pに物理ページが割り当てられていない場合、物理ページを割り当てる。これはステップ5220と同様の処理である。ただしVP#pに既に物理ページが割り当てられている場合には、物理ページの割り当ては必要ない。 Step 5110: The I / O program 100 allocates a physical page if no physical page is allocated to VP # p. This is the same processing as in step 5220. However, if a physical page has already been allocated to VP # p, it is not necessary to allocate a physical page.

 ステップ5120:ステップ5240と同様に、I/Oプログラム100はVP#pに割り当てられた物理ページに、処理対象データを上書きし、デステージ処理を終了する。 Step 5120: Similar to step 5240, the I / O program 100 overwrites the processing target data on the physical page assigned to VP # p, and ends the destage processing.

 なお、ここで説明したデステージ処理は一例であり、上で説明した処理と異なる処理が行われてもよい。たとえば、VP#pのデータが追書き空間に移動されている場合、ステップ5030の判定を行わずに、必ず追書き空間に追記するようにしてもよい。 Note that the destage processing described here is an example, and processing different from the processing described above may be performed. For example, when the data of VP # p has been moved to the write-once space, the write-once space may be necessarily added without performing the determination in step 5030.

 あるいは、追書き空間から上書き空間にデータを戻す場合、戻すデータの量が少なくなるような制御が行われてもよい。たとえばホスト2からVP#pのページ全体を更新する要求を受け付けた場合、キャッシュメモリ14にはVP#pの1ページ分のデータが格納される。この状態の場合、追書き空間から上書き空間にデータを戻しても、キャッシュメモリ14に格納されたデータをデステージすると、追書き空間から上書き空間に書き戻されたデータは上書きされてしまう。そのため、このような場合には、追書き空間から上書き空間にデータを戻さないようにする方が、効率がよい。 Alternatively, when returning data from the write-once space to the overwrite space, control may be performed to reduce the amount of data to be returned. For example, when a request to update the entire page of VP # p is received from the host 2, data for one page of VP # p is stored in the cache memory 14. In this state, even if data is returned from the write-once space to the overwrite space, if the data stored in the cache memory 14 is destaged, the data written back from the write-once space to the overwrite space is overwritten. Therefore, in such a case, it is more efficient to prevent data from being returned from the write-once space to the overwrite space.

(4-6)FPK算出・データ圧縮処理
 次に、図14のステップ1050で重複排除プログラム1000が実行するFPK算出・データ圧縮処理の流れを、図18、図19を用いて説明する。なお、以下においては、ライト対象のデータには、図19(A)に示すように、ホスト2により512バイトのデータ1100ごとにDIF(Data Integrity Field)と呼ばれる8バイトの保証コード1200が付加されるものとして説明を進める。DIF1200は、2バイトの誤り訂正符号(以降、CRC(Cyclic Redundancy Code)と記す)1210と、ホスト2側が管理するそのデータの書込み先のアドレスを表す6バイトのLA1220とから構成される情報である。
(4-6) FPK Calculation / Data Compression Processing Next, the flow of the FPK calculation / data compression processing executed by the deduplication program 1000 in step 1050 of FIG. 14 will be described with reference to FIGS. In the following, as shown in FIG. 19A, an 8-byte guarantee code 1200 called DIF (Data Integrity Field) is added to the 512-byte data 1100 by the host 2 as shown in FIG. The explanation will proceed as if The DIF 1200 is information composed of a 2-byte error correction code (hereinafter referred to as CRC (Cyclic Redundancy Code)) 1210 and a 6-byte LA 1220 indicating the address of the data write destination managed by the host 2 side. .

 ステップ7010:図14のステップ1040でローカルメモリ16(図10)のバッファ700(図10)に転送されたチャンク(以降、対象チャンクと記す)のデータ1100の512バイトごとに付加されている各保証コード1200のLA1220を図19(B)のように「0」で埋める(「0」に置き換える)ゼロパディングを実行する。 Step 7010: Each guarantee added to every 512 bytes of data 1100 of the chunk (hereinafter referred to as a target chunk) transferred to the buffer 700 (FIG. 10) of the local memory 16 (FIG. 10) in Step 1040 of FIG. As shown in FIG. 19B, zero padding is executed to fill the LA 1220 of the code 1200 with “0” (replace it with “0”).

 なお対象チャンクのLA1220をゼロパティングする理由は、LA1120の値はそのデータの書込み位置ごとに異なるため、かかるLA1120がライト対象のデータ1100に付加された状態でデータ1100に対する圧縮処理を実行した場合、同じ内容のデータであっても異なる圧縮結果が得られることとなり、同一データの重複排除を行うことができないからである。また、LA1220をゼロパティングすることなく圧縮した場合、圧縮効果が低くなる可能性がある。そこで、本実施形態では、ライト対象のデータ1100を圧縮するに際して、まず、LA1220をゼロパディングする処理を実行する。このようにLA1220をゼロパディングすることにより、圧縮効果の向上が見込まれる。 The reason why the LA 1220 of the target chunk is zero-patented is that the value of the LA 1120 differs depending on the data writing position. Therefore, when the compression processing is performed on the data 1100 with the LA 1120 added to the write target data 1100, This is because even if the data has the same contents, different compression results are obtained, and the same data cannot be deduplicated. Further, when the LA 1220 is compressed without zero padding, the compression effect may be reduced. Therefore, in the present embodiment, when the write target data 1100 is compressed, first, a process of zero-padding the LA 1220 is executed. Thus, the compression effect is expected to be improved by zero-padding LA1220.

 ステップ7020:重複排除プログラム1000は、対象チャンクのデータのFPKを算出する。具体的に、重複排除プログラム1000は、対象チャンクの512バイト毎に付加された上述のCRC1210を1つにまとめたCRC群を生成する。本実施形態の場合、512バイトにつき2バイトのCRC1210が付加されているため、1チャンク分(8KB)のデータごとに2バイト×16サブブロック=32バイトのCRC群が得られる。32バイトのままではデータ量が大きいため、所定のハッシュ関数(たとえばSHA-1)を用いて32バイトのCRC群から20バイトのハッシュ値を算出し、さらにこの20バイトのハッシュ値の上位8バイトのみを取り出して、これを対象チャンクのFPKとする。このように対象チャンクの512バイト毎に付加されたCRCを用いてその対象チャンクのFPKを算出することにより、対象チャンク全体のデータを用いてFPKを算出する場合と比べて対象チャンクの内容に応じたFPKを効率良く算出することができる。 Step 7020: The deduplication program 1000 calculates the FPK of the data of the target chunk. Specifically, the deduplication program 1000 generates a CRC group in which the above-described CRC 1210 added every 512 bytes of the target chunk is combined. In the present embodiment, since 2 bytes of CRC 1210 are added per 512 bytes, a CRC group of 2 bytes × 16 sub-blocks = 32 bytes is obtained for each chunk (8 KB) of data. Since the amount of data is large with 32 bytes, a 20-byte hash value is calculated from a 32-byte CRC group using a predetermined hash function (for example, SHA-1), and the upper 8 bytes of the 20-byte hash value are further calculated. Is taken out, and this is used as the FPK of the target chunk. In this way, by calculating the FPK of the target chunk using the CRC added to every 512 bytes of the target chunk, it is more suitable for the content of the target chunk than when calculating the FPK using the data of the entire target chunk. The FPK can be calculated efficiently.

 ステップ7030:重複排除プログラム1000は、図19(C)に示すように、バッファ700に格納されている対象チャンクのデータの512バイトごとにそれぞれ付与されたすべてのCRC1210を対象チャンクのデータから削除する。 Step 7030: As shown in FIG. 19C, the deduplication program 1000 deletes all CRCs 1210 assigned to each 512 bytes of the data of the target chunk stored in the buffer 700 from the data of the target chunk. .

 ステップ7040:重複排除プログラム1000は、バッファ700に格納されている対象チャンクのデータ(図19(C)で符号1220’で表すゼロパティングされたLA1220を含む)を圧縮することにより、その対象チャンクの圧縮チャンクを生成する。圧縮チャンクは、対象チャンクの圧縮する前のデータと共にバッファ700に一時的に保存される。 Step 7040: The deduplication program 1000 compresses the data of the target chunk stored in the buffer 700 (including the zero-padded LA 1220 represented by reference numeral 1220 ′ in FIG. 19C). Generate compressed chunks. The compressed chunk is temporarily stored in the buffer 700 together with the data before the target chunk is compressed.

 ここで、ゼロパティングされたLA1220を付加したまま対象チャンクのデータを圧縮する理由は、性能向上のためである。実際上、対象チャンクのデータからLA1220を削除して前詰めにしてしまうと、データを伸長した後に伸長したデータの512バイトごとにLA1220を再度挿入するための隙間をメモリコピーによって作る必要がある。これに対して、LA1220を削除しない場合、リードしたデータを伸長した後にLA1220を書き換えるだけで済み、メモリコピーに要するオーバヘッドを削減することができる。たとえば、上述のようにLA1220を0パディングする場合、8KBにつき、6B×16サブブロック=96Bのデータライトで済むが、対象チャンクのデータからLA1220を削除して前詰めする場合には、514バイト×16サブブロック=8224バイトのメモリコピーが発生することに加えて、データを伸長した後にも同じだけのメモリコピーが発生することになる。 Here, the reason for compressing the data of the target chunk while adding the zero-padded LA 1220 is to improve the performance. In practice, if the LA 1220 is deleted from the data of the target chunk and left-justified, it is necessary to create a gap for re-inserting the LA 1220 for every 512 bytes of the decompressed data after decompressing the data. On the other hand, when the LA 1220 is not deleted, it is only necessary to rewrite the LA 1220 after decompressing the read data, and the overhead required for memory copy can be reduced. For example, when LA1220 is padded with 0 as described above, data write of 6B × 16 subblocks = 96B is sufficient for 8 KB, but when LA1220 is deleted from the data of the target chunk and left-justified, 514 bytes × In addition to the memory copy of 16 sub-blocks = 8224 bytes, the same memory copy is generated after decompressing the data.

 ステップ7050:重複排除プログラム1000は、ステップ7040で得られた圧縮チャンクを伸長する。 Step 7050: The deduplication program 1000 decompresses the compressed chunk obtained in step 7040.

 ステップ7060:重複排除プログラム1000は、圧縮チャンクをステップ7050で伸長することにより得られたデータ(以下、これを伸長データと呼ぶ)と、バッファ700に保存している対象チャンクの圧縮前のデータとを比較する。この比較は、伸長データと、対象チャンクの圧縮前のデータとを1ビット単位または1バイト単位で順番に比較することにより行われる。このような比較により、対象チャンクのデータを圧縮及び伸長した場合に元のデータを復元できるか否かを確認することができ、データ圧縮及び伸長に対する信頼性を確保することができる。 Step 7060: The deduplication program 1000 uses the data obtained by decompressing the compressed chunk in Step 7050 (hereinafter referred to as decompressed data), the data before compression of the target chunk stored in the buffer 700, and Compare This comparison is performed by sequentially comparing the decompressed data and the data before compression of the target chunk in units of 1 bit or 1 byte. By such comparison, it is possible to confirm whether or not the original data can be restored when the data of the target chunk is compressed and decompressed, and it is possible to ensure reliability with respect to data compression and decompression.

 ステップ7070:ステップ7060の比較の結果、伸長データと、対象チャンクの圧縮前のデータとが一致した場合(ステップ7070:Yes)、次にステップ7080が行われ、そうでない場合には(ステップ7070:No)、次にステップ7100が行われる。 Step 7070: As a result of the comparison in Step 7060, when the decompressed data matches the data before compression of the target chunk (Step 7070: Yes), Step 7080 is performed next, otherwise (Step 7070: No) Next, step 7100 is performed.

 ステップ7080:重複排除プログラム1000は、バッファ700に保存されている対象チャンクの圧縮チャンクに対する新たなCRCを計算し、算出したCRCと、バッファ700上の当該圧縮チャンクの論理アドレス(以降、LA’と記す)とを圧縮チャンクに付加する。 Step 7080: The deduplication program 1000 calculates a new CRC for the compression chunk of the target chunk stored in the buffer 700, and the calculated CRC and the logical address of the compression chunk on the buffer 700 (hereinafter referred to as LA ′). To the compressed chunk.

 具体的に、重複排除プログラム1000は、対象チャンクの圧縮チャンクを512バイトごとに区分し、図19(D)に示すように、これら512バイトの圧縮チャンクのデータ(以降、圧縮チャンク区分データと記す)1110毎に、その圧縮チャンク区分データ1110のCRC1230をそれぞれ算出する。そして重複排除プログラム1000は、このようにして算出した圧縮チャンク区分データ1110ごとのCRC1230と、バッファ700上のその圧縮チャンク区分データ1110の論理アドレス(LA’)1240とをそれぞれ対応する圧縮チャンク区分データ1110に付加する。なお、このとき圧縮チャンク区分データ1110に付加されたLA’1240は、図19(E)に示すように、この後、その対象チャンクの圧縮チャンク区分データ1110が追書き空間書き込まれる際に(図16のステップ55)、書込み先の追書き空間上のアドレス(LA’’)1250に書き換えられる。 Specifically, the deduplication program 1000 divides the compressed chunk of the target chunk into 512 bytes, and as shown in FIG. 19D, the data of these 512 byte compressed chunks (hereinafter referred to as compressed chunk classified data). ) For each 1110, calculate the CRC 1230 of the compressed chunk classification data 1110. The deduplication program 1000 uses the compressed chunk partition data corresponding to the CRC 1230 for each compressed chunk partition data 1110 calculated in this way and the logical address (LA ′) 1240 of the compressed chunk partition data 1110 on the buffer 700. It is added to 1110. Note that LA ′ 1240 added to the compressed chunk partition data 1110 at this time, as shown in FIG. 19 (E), when the compressed chunk partition data 1110 of the target chunk is subsequently written to the additional write space (see FIG. 19). 16 step 55), the address (LA ″) 1250 in the write-once additional write space is rewritten.

 ステップ7090:重複排除プログラム1000は、ステップ7020で算出した対象チャンクのFPKをLP変換テーブル500(図8)の対応するレコードのFPK上位32bit(502)に登録し、この後、この処理を終了する。 Step 7090: The deduplication program 1000 registers the FPK of the target chunk calculated in step 7020 in the FPK upper 32 bits (502) of the corresponding record in the LP conversion table 500 (FIG. 8), and thereafter ends this processing. .

 ステップ7100:対象チャンクのデータを非圧縮のまま取り扱うことを決定し、この後、この処理を終了する。 Step 7100: It is determined that the data of the target chunk is handled without being compressed, and thereafter, this processing is terminated.

(4-7)データ伸長処理
 次に、図12のステップ17でI/Oプログラム100が実行するデータ伸長処理の流れを、図20および図21を用いて説明する。
(4-7) Data Expansion Processing Next, the flow of data expansion processing executed by the I / O program 100 at step 17 in FIG. 12 will be described using FIG. 20 and FIG.

 ステップ8010:I/Oプログラム100は、図11について上述したリード処理のステップ16において特定した、記憶デバイス20のDEV#(202)、Addr(203)に基づいて、圧縮されたリード対象のデータ(圧縮データ)をその記憶デバイス20からバッファ700に読み出す。 Step 8010: The I / O program 100 compresses the read target data (based on the DEV # (202) and Addr (203) of the storage device 20 specified in step 16 of the read process described above with reference to FIG. (Compressed data) is read from the storage device 20 into the buffer 700.

 ステップ8020:I/Oプログラム100は、バッファ700に読み出した圧縮データについて、その512バイト毎に含まれるCRC(図19(E)の新CRC1230に相当)に基づいて、当該圧縮データの完全性をチェックするCRCチェックを実行する(502)。具体的に、I/Oプログラム100は、図21(A)に示すように、読み出した圧縮データを構成する各圧縮チャンクの512バイト毎(つまり上述の圧縮チャンク区分データ1110毎に)に、その圧縮チャンク区分データ1110に基づいてCRCを算出し、算出したCRCを、その圧縮チャンク区分データ1110に付加されていたCRC1230と比較する。 Step 8020: The I / O program 100 determines the integrity of the compressed data read out to the buffer 700 based on the CRC included in every 512 bytes (corresponding to the new CRC 1230 in FIG. 19E). A CRC check to be checked is executed (502). Specifically, as shown in FIG. 21 (A), the I / O program 100, for every 512 bytes of each compressed chunk constituting the read compressed data (that is, for each compressed chunk division data 1110 described above) The CRC is calculated based on the compressed chunk partition data 1110, and the calculated CRC is compared with the CRC 1230 added to the compressed chunk partition data 1110.

 ステップ8030:I/Oプログラム100は、ステップ8020のCRCチェックの結果、いずれかの圧縮チャンク区分データについて、その圧縮チャンク区分データ1110に基づいて算出したCRCと、その圧縮チャンク区分データ1110に付加されていたCRC1230とが一致しないCRCエラーが発生したか否かを判定する。そして、すべての圧縮チャンク区分データ1110について、その圧縮チャンク区分データ1110に基づいて算出したCRCと、その圧縮チャンク区分データ1110に付加されていたCRC1230とが一致した場合には(ステップ8030:Yes)、次にステップ8100が行われ、いずれかの圧縮チャンク区分データについて、その圧縮チャンク区分データ1110に基づいて算出したCRCと、その圧縮チャンク区分データ1110に付加されていたCRC1230とが一致しなかった場合には(ステップ8030:No)、次にステップ8040が行われる。 Step 8030: As a result of the CRC check in Step 8020, the I / O program 100 adds one of the compressed chunk partition data to the CRC calculated based on the compressed chunk partition data 1110 and the compressed chunk partition data 1110. It is determined whether or not a CRC error that does not match the CRC 1230 has occurred. If the CRC calculated based on the compressed chunk partition data 1110 and the CRC 1230 added to the compressed chunk partition data 1110 match for all the compressed chunk partition data 1110 (step 8030: Yes). Next, Step 8100 is performed, and the CRC calculated based on the compressed chunk partition data 1110 does not match the CRC 1230 added to the compressed chunk partition data 1110 for any one of the compressed chunk partition data. If this is the case (step 8030: No), then step 8040 is performed.

 ステップ8040:I/Oプログラム100は、図21(B)に示すように、ステップ8010で読み出した圧縮データから、当該圧縮データの512バイト毎(つまり圧縮チャンク区分データ1110毎)に付加されたCRC1230およびLA’’を削除した上で、当該圧縮データを伸長する。 Step 8040: As shown in FIG. 21B, the I / O program 100 adds a CRC 1230 that is added to every 512 bytes of the compressed data (that is, every compressed chunk division data 1110) from the compressed data read in Step 8010. And LA ″ are deleted, and the compressed data is decompressed.

 ステップ8050:I/Oプログラム100は、ステップ8010の伸長処理で得られた伸長データのチャンク毎のFPKを生成する。具体的に、I/Oプログラム100は、伸長データの512バイトごとにそのデータのCRCをそれぞれ算出し、算出したCRCを1つにまとめたCRC群を生成する。本実施形態の場合、512バイトにつき2バイトのCRCが付加されているため、1チャンク(8KB)のデータごとに2バイト×16サブブロック=32バイトのCRC群が得られる。またI/Oプログラム100は、このようにして得られたチャンクごとのCRC群からFPK算出・データ圧縮処理のステップ7020でFPKを算出する際に使用したハッシュ関数を用いて20バイトのハッシュ値をそれぞれ算出し、チャンク毎に、算出したハッシュ値の上位8バイトをそのチャンクのFPKとして取り出す。 Step 8050: The I / O program 100 generates an FPK for each chunk of decompressed data obtained by the decompression process in Step 8010. Specifically, the I / O program 100 calculates a CRC for each 512 bytes of decompressed data, and generates a CRC group that combines the calculated CRCs into one. In the present embodiment, since a CRC of 2 bytes is added per 512 bytes, a CRC group of 2 bytes × 16 subblocks = 32 bytes is obtained for each chunk (8 KB) of data. In addition, the I / O program 100 uses the hash function used when calculating the FPK in step 7020 of the FPK calculation / data compression processing from the CRC group for each chunk obtained in this way to obtain a 20-byte hash value. For each chunk, the upper 8 bytes of the calculated hash value are extracted as the FPK of the chunk.

 ステップ8060:チャンク毎に、ステップ8050で生成したFPKと、そのチャンクについてLP変換テーブルのFPK上位32bit(502)に格納されているFPKとをそれぞれ比較する。 Step 8060: For each chunk, the FPK generated in step 8050 is compared with the FPK stored in the FPK upper 32 bits (502) of the LP conversion table for the chunk.

 ステップ8070:すべてのチャンクについて、ステップ8050で生成したFPKと、そのチャンクについてLP変換テーブル500のFPK上位32bit(502)に格納されているFPKとが一致した場合には(ステップ8070:Yes)、次にステップ8080が行われ、そうでない場合には(ステップ8070:No)、次にステップ8120が行われる。 Step 8070: For all chunks, if the FPK generated in step 8050 matches the FPK stored in the FPK upper 32 bits (502) of the LP conversion table 500 for that chunk (step 8070: Yes), Next, Step 8080 is performed. If not (Step 8070: No), Step 8120 is performed next.

 ステップ8080:I/Oプログラム100は、図21(C)に示すように、ステップ8040の伸長処理において算出した伸長データの512バイト毎の誤り訂正符号(以降、CRC(Cyclic Redundancy Code)と記す)1260をそれぞれ対応する512バイトのデータに付加する(ステップ8080)。またI/Oプログラム100は、これと併せて、かかるデータの512バイトごとに付加されているLA’’(図19(E)参照)をホスト2が認識するそのデータが格納されているLA1270に書き戻す。 Step 8080: The I / O program 100, as shown in FIG. 21C, provides an error correction code for each 512 bytes of the decompressed data calculated in the decompression process of Step 8040 (hereinafter referred to as CRC (Cyclic Redundancy Code)). 1260 is added to the corresponding 512-byte data (step 8080). In addition, the I / O program 100 also stores in the LA 1270 storing the data that the host 2 recognizes LA ″ (see FIG. 19E) added every 512 bytes of the data. Write back.

 ステップ8090:I/Oプログラム100は、ステップ8080において512バイトごとにCRC1260およびLA1270をそれぞれ付加した伸長データ1120をホスト2に返送し、処理を終了する。 Step 8090: The I / O program 100 returns the decompressed data 1120 to which the CRC 1260 and LA 1270 are added every 512 bytes in step 8080 to the host 2 and ends the process.

 ステップ8100:I/Oプログラム100は、リード要求を送信してきたホスト2に対して読出しエラーが発生した旨の通知を行うエラー応答を実行し、処理を終了する。 Step 8100: The I / O program 100 executes an error response for notifying the host 2 that has transmitted the read request that a read error has occurred, and ends the process.

(5)本実施形態の効果
 以上述べたように、本実施形態に係るストレージ装置1では、仮想ボリュームに42MBの仮想ページ単位で上書き空間を割り当てると共に、仮想ボリュームに書き込まれたデータを8KBのチャンク単位で圧縮するため、圧縮されたデータの伸長処理が8KBのチャンク単位で行われることになり、たとえば仮想ページ単位でデータ圧縮を行う場合に比べて、圧縮データの伸長処理時に不要なデータまでもが伸長されるという余計なオーバヘッドの発生量を格段的に低減させることができる。またデータの圧縮単位は8KBであっても、仮想ボリュームを42MBの仮想ページ単位で管理することができる。これにより、かかるオーバヘッドに起因するストレージ装置のアクセス性能の低下を防止しながら、管理情報の情報量の増加をも防止することができる。
(5) Effects of this Embodiment As described above, in the storage apparatus 1 according to this embodiment, an overwrite space is allocated to a virtual volume in units of 42 MB virtual pages, and data written to the virtual volume is chunked in 8 KB. Since compression is performed in units, decompression processing of the compressed data is performed in units of 8 KB chunks. For example, compared to data compression in units of virtual pages, even unnecessary data at the time of decompression processing of compressed data It is possible to significantly reduce the amount of extra overhead that is extended. Even if the data compression unit is 8 KB, the virtual volume can be managed in units of 42 MB virtual pages. Thus, it is possible to prevent an increase in the amount of management information while preventing a decrease in access performance of the storage apparatus due to such overhead.

 さらに本実施形態に係るストレージ装置1では、非圧縮データを上書き用領域に書き込み、圧縮データを追書き用領域に格納するため、更新されたデータの圧縮後のデータサイズが更新前のものよりも大きくなった場合においても、問題なく記憶デバイス20に格納することができる。 Further, in the storage device 1 according to the present embodiment, since the uncompressed data is written in the overwrite area and the compressed data is stored in the additional write area, the data size after compression of the updated data is larger than that before the update. Even when it becomes larger, it can be stored in the storage device 20 without any problem.

 従って、本実施形態によれば、有用性の高いストレージ装置を実現することができる。 Therefore, according to the present embodiment, a highly useful storage apparatus can be realized.

 本発明はデータ圧縮機能が搭載されたストレージ装置に適用することができる。 The present invention can be applied to a storage apparatus equipped with a data compression function.

 1……ストレージ装置、2……ホスト、10……ストレージコントローラ、11……CPU、14……キャッシュメモリ、16……ローカルメモリ、20……記憶デバイス、40……上書き空間、60……追書き空間、100……I/Oプログラム、700……バッファ、500……LP変換テーブル、1000……重複排除プログラム。 DESCRIPTION OF SYMBOLS 1 ... Storage device, 2 ... Host, 10 ... Storage controller, 11 ... CPU, 14 ... Cache memory, 16 ... Local memory, 20 ... Storage device, 40 ... Overwrite space, 60 ... Additional Write space, 100 ... I / O program, 700 ... Buffer, 500 ... LP conversion table, 1000 ... Deduplication program.

Claims (12)

 ホストに対して仮想的な記憶空間である仮想ボリュームを提供し、前記ホストから前記仮想ボリュームに対するデータのライト要求に応じて動的に記憶領域を割り当てるストレージ装置において、
 1又は複数の記憶デバイスと、
 前記記憶デバイスの記憶領域を動的に前記仮想ボリュームに割り当て、前記ライト要求と共に前記ホストから与えられた書込み対象のデータを、前記仮想ボリュームに割り当てた前記記憶領域に書き込むストレージコントローラと
 を備え、
 前記ストレージコントローラは、
 前記記憶デバイスの記憶領域を、上書きを許す上書き用領域と、追記格納するための追書き用領域とに分けて管理し、
 前記仮想ボリューム上の領域に対して所定の第1の容量単位で前記上書き用領域を割り当て、割り当てた前記上書き用領域に前記書込み対象のデータを書き込み、前記上書き用領域に書き込んだデータを前記第1の容量よりも小さい第2の容量単位で圧縮し、圧縮したデータを前記追書き用領域に格納する
 ことを特徴とするストレージ装置。
In a storage apparatus that provides a virtual volume, which is a virtual storage space, to a host, and dynamically allocates a storage area in response to a data write request to the virtual volume from the host.
One or more storage devices;
A storage controller that dynamically allocates a storage area of the storage device to the virtual volume, and writes data to be written given from the host together with the write request to the storage area allocated to the virtual volume, and
The storage controller
The storage area of the storage device is divided into an overwrite area allowing overwriting and an additional writing area for additionally writing and managing,
The overwriting area is allocated to the area on the virtual volume in a predetermined first capacity unit, the data to be written is written to the allocated overwriting area, and the data written to the overwriting area is A storage apparatus, comprising: compressing in a second capacity unit smaller than one capacity, and storing the compressed data in the additional write area.
 前記ストレージコントローラは、
 圧縮前の前記データのチェックコードを前記第2の容量単位でそれぞれ算出し、算出した前記第2の容量単位のデータの各前記チェックコードをそれぞれ記憶し、当該第2の容量単位のデータを圧縮して前記追書き用領域に格納し、
 前記ホストからのリード要求に応じて前記追書き用領域に格納したデータを前記追書き用領域から読み出して伸長し、伸長した当該データのチェックコードを前記第2の容量単位でそれぞれ算出し、算出した前記チェックコードを、記憶している圧縮前の対応する前記チェックコードと比較し、両者が一致する場合に、伸長した前記データを前記ホストに返送する
 ことを特徴とする請求項1に記載のストレージ装置。
The storage controller
The check code of the data before compression is calculated in the second capacity unit, the check code of the calculated data in the second capacity unit is stored, and the data in the second capacity unit is compressed. And store it in the area for additional writing,
In response to a read request from the host, the data stored in the additional writing area is read out from the additional writing area and decompressed, and a check code of the decompressed data is calculated for each second capacity unit, and is calculated. The check code is compared with the corresponding check code stored before compression, and when the two match, the decompressed data is returned to the host. Storage device.
 前記ストレージコントローラは、
 前記ホストからのデータに所定単位で付加されている誤り訂正符号に基づいて前記チェックコードを算出する
 ことを特徴とする請求項2に記載のストレージ装置。
The storage controller
The storage apparatus according to claim 2, wherein the check code is calculated based on an error correction code added to data from the host in a predetermined unit.
 前記ストレージコントローラは、
 前記ホストからのデータに付加された前記誤り訂正符号をすべて削除すると共に、当該誤り訂正符号と併せて当該データに前記所定単位で付加された前記ホストが管理する当該データの書込み先のアドレスをゼロパディングし、ゼロパディングした前記アドレスと共に前記データを圧縮して前記追書き用領域に書き込み、
 前記追書き用領域に格納した前記データを前記ホストからのリード要求に応じて前記追書き用領域から読み出して伸長し、伸長した前記データに前記所定単位で付加されているゼロパティングされた前記アドレスを、前記ホストが管理する当該データの書込み先の前記アドレスに書き換えて前記ホストに返送する
 ことを特徴とする請求項3に記載のストレージ装置。
The storage controller
All of the error correction code added to the data from the host is deleted, and the address of the write destination of the data managed by the host added to the data in the predetermined unit together with the error correction code is zero. Padded, compressed with the zero padded address and written to the additional write area,
The address stored in the additional writing area is read out from the additional writing area in response to a read request from the host and expanded, and the zero-padded address added to the expanded data in the predetermined unit The storage apparatus according to claim 3, wherein the address is rewritten to the address of the data write destination managed by the host and returned to the host.
 前記ストレージコントローラは、
 算出した圧縮前の前記第2の容量単位のデータの前記チェックコードと、追書き用領域に圧縮されて格納されている他のデータの圧縮前の前記チェックコードとを比較し、
 前記第2の容量単位のデータの前記チェックコードが、圧縮されて前記追書き用領域に格納されている他のいずれのデータの前記チェックコードとも一致しない場合には、前記第2の容量単位のデータを圧縮して前記追書き用領域に格納する一方、
 前記第2の容量単位のデータの前記チェックコードが、圧縮されて前記追書き用領域に格納されている他のいずれかのデータの前記チェックコードと一致した場合には、前記第2の容量単位のデータの圧縮データを前記追書き用領域には格納せず、前記追書き用領域における前記第2の容量単位のデータの格納位置を、前記追書き用領域における前記チェックコードが一致した他のデータの格納位置として管理する
 ことを特徴とする請求項2に記載のストレージ装置。
The storage controller
Comparing the calculated check code of the second capacity unit data before compression with the check code before compression of other data stored in the additional writing area after being compressed;
If the check code of the second capacity unit data does not match the check code of any other data compressed and stored in the additional write area, the second capacity unit data While compressing the data and storing it in the additional write area,
When the check code of the second capacity unit data matches the check code of any other data compressed and stored in the additional write area, the second capacity unit The compressed data of the data is not stored in the additional write area, and the storage position of the data in the second capacity unit in the additional write area is the same as the other check code in the additional write area. The storage apparatus according to claim 2, wherein the storage apparatus is managed as a data storage location.
 前記ストレージコントローラは、
 前記上書き用領域に書き込んだデータを、前記第2の容量単位で圧縮した後に伸長し、伸長したデータと、圧縮したデータとを比較して、両者が一致している場合に圧縮したデータを前記追書き用領域に格納する
 ことを特徴とする請求項1に記載のストレージ装置。
The storage controller
The data written in the overwriting area is compressed after being compressed in the second capacity unit, the expanded data is compared with the compressed data, and if the two match, the compressed data is The storage device according to claim 1, wherein the storage device is stored in a write-once area.
 ホストに対して仮想的な記憶空間である仮想ボリュームを提供し、前記ホストから前記仮想ボリュームに対するデータのライト要求に応じて動的に記憶領域を割り当てるストレージ装置の制御方法において、
 前記ストレージ装置は、
 1又は複数の記憶デバイスと、
 前記記憶デバイスの記憶領域を動的に前記仮想ボリュームに割り当て、前記ライト要求と共に前記ホストから与えられた書込み対象のデータを、前記仮想ボリュームに割り当てた前記記憶領域に書き込むストレージコントローラと
 を有し、
 前記ストレージコントローラは、
 前記記憶デバイスの記憶領域を、上書きを許す上書き用領域と、追記格納するための追書き用領域とに分けて管理し、
 前記ストレージコントローラが、前記仮想ボリューム上の領域に対して所定の第1の容量単位で前記上書き用領域を割り当て、割り当てた前記上書き用領域に前記書込み対象のデータを書き込む第1のステップと、
 前記ストレージコントローラが、前記上書き用領域に書き込んだデータを前記第1の容量よりも小さい第2の容量単位で圧縮し、圧縮したデータを前記追書き用領域に格納する第2のステップと
 を備えることを特徴とするストレージ装置の制御方法。
In a control method of a storage apparatus that provides a virtual volume that is a virtual storage space to a host and dynamically allocates a storage area in response to a data write request from the host to the virtual volume.
The storage device
One or more storage devices;
A storage controller that dynamically allocates a storage area of the storage device to the virtual volume, and writes data to be written given from the host together with the write request to the storage area allocated to the virtual volume, and
The storage controller
The storage area of the storage device is divided into an overwrite area allowing overwriting and an additional writing area for additionally writing and managing,
A first step in which the storage controller allocates the overwrite area in a predetermined first capacity unit to an area on the virtual volume, and writes the data to be written to the allocated overwrite area;
A second step in which the storage controller compresses data written in the overwrite area in a second capacity unit smaller than the first capacity, and stores the compressed data in the additional write area; And a storage apparatus control method.
 前記第2のステップにおいて、前記ストレージコントローラは、圧縮前の前記データのチェックコードを前記第2の容量単位でそれぞれ算出し、算出した前記第2の容量単位のデータの各前記チェックコードをそれぞれ記憶し、当該第2の容量単位のデータを圧縮して前記追書き用領域に格納し、
 前記ストレージコントローラが、前記ホストからのリード要求に応じて前記追書き用領域に格納したデータを前記追書き用領域から読み出して伸長し、伸長した当該データのチェックコードを前記第2の容量単位でそれぞれ算出し、算出した前記チェックコードを、記憶している圧縮前の対応する前記チェックコードと比較し、両者が一致する場合に、伸長した前記データを前記ホストに返送する第3のステップを備える
 ことを特徴とする請求項7に記載のストレージ装置の制御方法。
In the second step, the storage controller calculates a check code of the data before compression in the second capacity unit, and stores each check code of the calculated data in the second capacity unit. And compressing the data of the second capacity unit and storing it in the additional write area,
In response to a read request from the host, the storage controller reads and expands data stored in the additional write area from the additional write area, and outputs a check code for the expanded data in the second capacity unit. And a third step of comparing the calculated check code with the corresponding check code stored before compression and returning the decompressed data to the host if they match. The storage apparatus control method according to claim 7, wherein:
 前記ストレージコントローラは、
 前記ホストからのデータに所定単位で付加されている誤り訂正符号に基づいて前記チェックコードを算出する
 ことを特徴とする請求項8に記載のストレージ装置の制御方法。
The storage controller
The method of controlling a storage apparatus according to claim 8, wherein the check code is calculated based on an error correction code added to data from the host in a predetermined unit.
 前記第2のステップにおいて、前記ストレージコントローラは、
 前記ホストからのデータに付加された前記誤り訂正符号をすべて削除すると共に、当該誤り訂正符号と併せて当該データに前記所定単位で付加された前記ホストが管理する当該データの書込み先のアドレスをゼロパディングし、ゼロパディングした前記アドレスと共に前記データを圧縮して前記追書き用領域に書き込み、
 前記第3のステップにおいて、前記ストレージコントローラは、
 前記追書き用領域に格納した前記データを前記ホストからのリード要求に応じて前記追書き用領域から読み出して伸長し、伸長した前記データに前記所定単位で付加されているゼロパティングされた前記アドレスを、前記ホストが管理する当該データの書込み先の前記アドレスに書き換えて前記ホストに返送する
 ことを特徴とする請求項8に記載のストレージ装置の制御方法。
In the second step, the storage controller
All of the error correction code added to the data from the host is deleted, and the address of the write destination of the data managed by the host added to the data in the predetermined unit together with the error correction code is zero. Padded, compressed with the zero padded address and written to the additional write area,
In the third step, the storage controller
The address stored in the additional writing area is read out from the additional writing area in response to a read request from the host and expanded, and the zero-padded address added to the expanded data in the predetermined unit The storage apparatus control method according to claim 8, wherein the data is rewritten to the address of the data write destination managed by the host and returned to the host.
 前記第2のステップにおいて、前記ストレージコントローラは、
 算出した圧縮前の前記第2の容量単位のデータの前記チェックコードと、追書き用領域に圧縮されて格納されている他のデータの圧縮前の前記チェックコードとを比較し、
 前記第2の容量単位のデータの前記チェックコードが、圧縮されて前記追書き用領域に格納されている他のいずれのデータの前記チェックコードとも一致しない場合には、前記第2の容量単位のデータを圧縮して前記追書き用領域に格納する一方、
 前記第2の容量単位のデータの前記チェックコードが、圧縮されて前記追書き用領域に格納されている他のいずれかのデータの前記チェックコードと一致した場合には、前記第2の容量単位のデータの圧縮データを前記追書き用領域には格納せず、前記追書き用領域における前記第2の容量単位のデータの格納位置を、前記追書き用領域における前記チェックコードが一致した他のデータの格納位置として管理する
 ことを特徴とする請求項8に記載のストレージ装置の制御方法。
In the second step, the storage controller
Comparing the calculated check code of the second capacity unit data before compression with the check code before compression of other data stored in the additional writing area after being compressed;
If the check code of the second capacity unit data does not match the check code of any other data compressed and stored in the additional write area, the second capacity unit data While compressing the data and storing it in the additional write area,
When the check code of the second capacity unit data matches the check code of any other data compressed and stored in the additional write area, the second capacity unit The compressed data of the data is not stored in the additional write area, and the storage position of the data in the second capacity unit in the additional write area is the same as the other check code in the additional write area. 9. The storage apparatus control method according to claim 8, wherein the storage apparatus is managed as a data storage location.
 前記第2のステップにおいて、前記ストレージコントローラは、
 前記上書き用領域に書き込んだデータを、前記第2の容量単位で圧縮した後に伸長し、伸長したデータと、圧縮したデータとを比較して、両者が一致している場合に圧縮したデータを前記追書き用領域に格納する
 ことを特徴とする請求項7に記載のストレージ装置の制御方法。
In the second step, the storage controller
The data written in the overwriting area is compressed after being compressed in the second capacity unit, the expanded data is compared with the compressed data, and if the two match, the compressed data is The storage device control method according to claim 7, wherein the storage device is stored in a write-once area.
PCT/JP2016/078938 2016-09-29 2016-09-29 Storage apparatus and method for controlling same Ceased WO2018061161A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/078938 WO2018061161A1 (en) 2016-09-29 2016-09-29 Storage apparatus and method for controlling same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/078938 WO2018061161A1 (en) 2016-09-29 2016-09-29 Storage apparatus and method for controlling same

Publications (1)

Publication Number Publication Date
WO2018061161A1 true WO2018061161A1 (en) 2018-04-05

Family

ID=61760343

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/078938 Ceased WO2018061161A1 (en) 2016-09-29 2016-09-29 Storage apparatus and method for controlling same

Country Status (1)

Country Link
WO (1) WO2018061161A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022070104A (en) * 2020-10-26 2022-05-12 株式会社日立製作所 Data compression device and data compression method
JP7475319B2 (en) 2021-11-16 2024-04-26 株式会社日立製作所 STORAGE SYSTEM AND DATA PROCESSING METHOD THEREIN
US12236093B2 (en) 2022-06-13 2025-02-25 Hitachi Vantara, Ltd. Enhanced data management in distributed storage systems using dynamic load-based allocation of search and deduplication processes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259962A (en) * 2005-03-16 2006-09-28 Hitachi Ltd Storage system
WO2015087424A1 (en) * 2013-12-12 2015-06-18 株式会社日立製作所 Storage device and method for controlling storage device
WO2015145647A1 (en) * 2014-03-27 2015-10-01 株式会社日立製作所 Storage device, data processing method, and storage system
WO2016088258A1 (en) * 2014-12-05 2016-06-09 株式会社日立製作所 Storage system, backup program, and data management method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259962A (en) * 2005-03-16 2006-09-28 Hitachi Ltd Storage system
WO2015087424A1 (en) * 2013-12-12 2015-06-18 株式会社日立製作所 Storage device and method for controlling storage device
WO2015145647A1 (en) * 2014-03-27 2015-10-01 株式会社日立製作所 Storage device, data processing method, and storage system
WO2016088258A1 (en) * 2014-12-05 2016-06-09 株式会社日立製作所 Storage system, backup program, and data management method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022070104A (en) * 2020-10-26 2022-05-12 株式会社日立製作所 Data compression device and data compression method
JP7282066B2 (en) 2020-10-26 2023-05-26 株式会社日立製作所 Data compression device and data compression method
JP7475319B2 (en) 2021-11-16 2024-04-26 株式会社日立製作所 STORAGE SYSTEM AND DATA PROCESSING METHOD THEREIN
US12236093B2 (en) 2022-06-13 2025-02-25 Hitachi Vantara, Ltd. Enhanced data management in distributed storage systems using dynamic load-based allocation of search and deduplication processes

Similar Documents

Publication Publication Date Title
JP6553566B2 (en) Memory system and control method
US9916248B2 (en) Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache
JP6608468B2 (en) Storage apparatus and control method thereof
US11928053B2 (en) System garbage collection method and method for garbage collection in solid state disk
JP6685334B2 (en) Storage device
CN108604165B (en) Storage device
WO2015162758A1 (en) Storage system
JP6429963B2 (en) Storage device and storage device control method
JP6677740B2 (en) Storage system
JP6298932B2 (en) Storage device
WO2015162681A1 (en) Storage system and control method for storage device
US20180307440A1 (en) Storage control apparatus and storage control method
WO2015162755A1 (en) Storage device for compressing and storing data
US10409518B1 (en) Reordered local data deduplication in storage devices
WO2018061161A1 (en) Storage apparatus and method for controlling same
US11079956B2 (en) Storage system and storage control method
JP6419662B2 (en) Storage system and data duplication detection method
WO2020052216A1 (en) System garbage collection method and method for collecting garbage in solid state hard disk
WO2018051446A1 (en) Computer system including storage system having optional data processing function, and storage control method
JP2018185760A (en) Storage device for eliminating data duplication

Legal Events

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

Ref document number: 16917713

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16917713

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP