WO2016203612A1 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
WO2016203612A1
WO2016203612A1 PCT/JP2015/067604 JP2015067604W WO2016203612A1 WO 2016203612 A1 WO2016203612 A1 WO 2016203612A1 JP 2015067604 W JP2015067604 W JP 2015067604W WO 2016203612 A1 WO2016203612 A1 WO 2016203612A1
Authority
WO
WIPO (PCT)
Prior art keywords
area
data
page
storage
write
Prior art date
Application number
PCT/JP2015/067604
Other languages
English (en)
French (fr)
Inventor
健一 澤
竹内 久治
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2015/067604 priority Critical patent/WO2016203612A1/ja
Priority to JP2017524232A priority patent/JP6298932B2/ja
Priority to US15/557,967 priority patent/US10296229B2/en
Publication of WO2016203612A1 publication Critical patent/WO2016203612A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Definitions

  • the present invention relates to a storage apparatus.
  • the storage apparatus has a plurality of storage devices for storing data and a storage controller for controlling the 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
  • the data retention cost bit cost of the storage medium, power consumption cost of the storage device, etc.
  • Patent Document 1 discloses that, in a storage system that manages a plurality of storage hierarchies (tiers), for example, data to be moved to a lower tier is compressed and stored.
  • the compression rate changes depending on the data content. Therefore, 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 computer, the size of the update data after compression is larger than the size of the compressed data stored in the storage device. May grow. In this case, the compressed update data cannot be overwritten on the area where the compressed data before update is recorded, and a different storage method is required.
  • a storage apparatus includes one or more storage devices and a storage controller.
  • the storage controller manages the storage device area by dividing it into an overwrite storage area and an additional write storage area, and performs data movement between the overwrite storage area and the additional write storage area.
  • the data that has been updated less frequently is moved from the overwrite storage area to the additional storage area.
  • the storage controller adds the update data to the write-once storage area.
  • the storage device according to one aspect of the present invention can improve the efficiency of the storage device.
  • FIG. 1 is a configuration example of a computer system including a storage apparatus according to a first embodiment. It is a figure showing the relationship between a virtual volume and a page. It is a structural example of a pool management table. It is a structural example of a virtual volume management table. It is an example of a structure of a LBA management table. It is a structural example of a compression page management table. It is a structural example of a threshold value table. It is a structural example of a free space management table. It is a flowchart of a write process. It is a flowchart of a destage process. It is a conceptual diagram of the data movement from an additional writing page to an overwrite page. It is a flowchart of a movement determination process.
  • 12 is a configuration example of a virtual volume management table included in a storage apparatus according to a second embodiment. 12 is a configuration example of a threshold table included in the storage apparatus according to the second embodiment. It is a flowchart (1) of a movement determination process. It is a flowchart (2) of a movement determination process. It is a flowchart of the movement process to the overwrite page of the data of an additional writing page based on a learning result.
  • 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 or “decompression”.
  • compression rate is used as an index of the data size reduction efficiency by data compression.
  • the compression rate can take a value between 0 and 1.
  • “low compression rate” means that the data size has not been reduced by compression.
  • the compression rate is zero.
  • “high compression rate” means that the amount of data size reduction due to compression is large.
  • 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
  • “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.
  • 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 for an area on the storage space
  • the data is stored in the area on the target device associated with the area.
  • the storage apparatus provides a virtual volume formed by so-called Thin Provisioning technology to the host as a volume. In the initial state of the virtual volume (immediately after the virtual volume is defined), no storage device is associated with an area on the storage space.
  • the initiator device host
  • the storage apparatus dynamically determines a storage device associated with the area.
  • block means an area on a storage space (volume or the like) provided by the target device to the initiator device.
  • a block is an area having a size equal to the minimum access unit such as a volume and has a fixed length.
  • the block size is 512 bytes.
  • LBA Logical Block Address
  • an LBA assigned to a block of a volume (virtual volume) provided to the host by the storage apparatus may be referred to as a “host LBA”.
  • Append write or “append” means an operation of sequentially writing data to an unused area of a storage area.
  • a storage area for additional writing is provided.
  • 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 the storage apparatus 1 according to the first 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) 25 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.
  • a removable storage medium such as a DVD-RW (22) may be 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 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 memory 14, and a management I / F 15. And a compression circuit (also referred to as a compression unit) 16.
  • the processor 11, host I / F 12, device I / F 13, memory 14, management I / F 15, and compression unit 16 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 included in the host I / F 12 converts a communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and a communication protocol used in the storage controller 10. belongs to.
  • the processor 11 performs various controls of the storage device 1.
  • the memory 14 is used for storing a program executed by the processor 11 (referred to as a storage control program) and various management information of the storage apparatus 1 used by the processor 11.
  • the storage apparatus 1 (or the storage controller 10) performs processing such as destage processing and movement determination processing (described later) is used.
  • the storage control program is executed by the processor (CPU) 11 so that the CPU 11 performs these processes using the host I / F 12, the device I / F 13, the memory 14, and the compression circuit 16.
  • the storage controller 10 (or the storage apparatus 1) may be expressed as performing these processes.
  • the memory 14 is also used for temporarily storing I / O target data for the storage device 20.
  • the storage area in the memory 14 used for temporarily storing the I / O target data for the storage device 20 is referred to as “cache memory” or “cache”.
  • a volatile storage medium such as DRAM or SRAM is used.
  • the 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 storage contents of the memory 14 can be maintained during a power failure.
  • 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 compression unit (compression circuit) 16 is hardware having a function of compressing data or decompressing the compressed data.
  • the storage device 1 can compress a part (or all) of data stored in the storage device 20 using the compression unit 16.
  • the compression unit 16 is implemented by hardware such as ASIC (Application Specific Integrated Circuit).
  • the compression unit 16 may be provided with a processor and a memory, and the compression unit 16 may be configured to compress or expand data by executing a program for performing data compression by the processor.
  • the CPU 11 executes a program for performing data compression, thereby causing the CPU 11 to compress or expand data. You may do it.
  • the one or more storage devices 20 included in the storage apparatus 1 according to the present embodiment provide a storage space of a predetermined size to the storage controller 10.
  • 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”.
  • the storage controller 10 can provide a plurality of virtual volumes to the host 2, an example in which the storage controller 10 provides one virtual volume to the host 2 will be described below unless otherwise specified.
  • the storage device 1 manages the storage space of the virtual volume by dividing it into a plurality of partial areas of a predetermined size (42 MB as an example). In this embodiment, this partial area is called a “virtual page”. In the following description, the virtual page size is 42 MB. However, the virtual page size may be other than this.
  • the virtual volume is a volume that is formed using a known Thin Provisioning technology, and the storage apparatus 1 dynamically allocates the storage area of the storage device 20 to the virtual page when receiving an access request for the virtual page of the virtual volume. Assign to (map).
  • the storage apparatus 1 When the storage apparatus 1 receives a write request for a virtual page of a virtual volume from the host 2, the storage apparatus 1 selects an unused area (an area not yet allocated to the virtual page) among the storage areas of the storage device 20. Then, the selected area is allocated (mapped) to the virtual page to be accessed. Write data from the host 2 is stored in an area (page) mapped to this access target virtual page. In addition, the storage device 1 stores the correspondence (mapping) between the virtual page and the storage area allocated to the virtual page in a mapping table (referred to as the virtual volume management table 100 in this embodiment). When the read request for the virtual page is received, the storage apparatus 1 refers to the mapping table to identify the storage area allocated to the virtual page, and reads data from the specified storage area.
  • a mapping table referred to as the virtual volume management table 100 in this embodiment
  • FIG. 2 shows an example of the relationship between the virtual volume and the storage area allocated to the virtual volume.
  • a set of storage areas to be allocated to the virtual volume is referred to as a “pool”.
  • the storage area in the pool is managed by being divided into partial areas having the same size as the virtual page.
  • the partial area having the same size as the virtual page is called a “physical page” or “page”.
  • the rectangular object 40 shown in FIG. 2 represents the storage space of the virtual volume.
  • a cylindrical object 50 represents a pool.
  • Each virtual page has a unique identification number (a non-negative integer value is used for the identification number) called a virtual page number (sometimes written 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”.
  • the storage controller 10 determines a physical page to be allocated to a virtual page including the area only after receiving a write request for the area on the virtual page from the host 2. As the physical page determined here, any one page is selected from pages (unused pages) that have not yet been assigned to any virtual page. In the example of FIG. 2, page # 1 is mapped to VP # 0, and page # 0 is mapped to VP # 1.
  • 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.
  • write data requested to be written to the nth block from the top of the virtual page is mapped to the virtual page.
  • the storage device 1 Stored in the nth block from the top of the physical page being stored. Therefore, the storage device 1 is mapped to an arbitrary block on the virtual volume if only the mapping between the virtual page and the storage area (physical page) allocated to the virtual page is recorded in the mapping table.
  • the storage area on the storage device 20 can be uniquely specified.
  • VP # 2 and VP # 3 represent an example in which compressed data is stored.
  • data written to the nth block from the top of the virtual page is the physical data.
  • a regular relationship such as writing to the nth block of the page is not maintained. Details will be described later.
  • FIG. 3 shows an example of the pool management table 200.
  • the pool management table 200 is a table that manages a pool, that is, a set of storage areas to be allocated to virtual volumes, and is stored in the memory 14.
  • Each row (record) of the pool management table 200 stores information on physical pages in the pool.
  • Each record has columns of page # (201), DEV # (202), Addr (203), type (204), and use (205).
  • 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.
  • DEV # (202) and Addr (203) the identification number of the storage device to which the physical page belongs and the address in the storage device are stored.
  • type (204) the type of storage device (for example, HDD, SSD, etc.) to which the physical page belongs is stored.
  • Use (205) stores information indicating the usage status of the physical page. When the physical page is mapped to the virtual page, “1” is stored in the use (205). Conversely, when the physical page is not mapped to the virtual page, “0” is stored in use (205).
  • the storage area of the storage device 20 (for example, HDD) is registered in the pool 50, and each page is composed of the storage areas in one storage device 20, but this is shown.
  • the storage device 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
  • RAID Redundant Arrays of Independent (or Inexpensive) Disks
  • storage of the logical device The area may be registered in the pool.
  • the logical device identification number and the address in the logical device are stored in DEV # (202) and Addr (203) of the pool management table 200.
  • FIG. 4 shows an example of the virtual volume management table 100.
  • a virtual volume management table 100 is also stored in the memory 14.
  • Each record of the virtual volume management table 100 stores information about virtual pages in the virtual volume. Specifically, each record includes virtual page # (101), host LBA (102), page layout (103), page # (104), presence / absence of update (105), period without continuous update (107), allocation amount (111) information is stored.
  • each record of the virtual volume management table 100 represents that the virtual page specified by the virtual page # (101) corresponds to an area of one page (42 MB) having the host LBA (102) as the start address. Yes.
  • the host LBA (102) of the record whose virtual page # (101) is 1 is “0015000”, it is confirmed that the area where the host LBA of the virtual volume is 0015000 to 0919fff corresponds to VP # 1. Represents.
  • the page # of the physical page assigned to the virtual page is stored.
  • an invalid value (null, eg, a value that is not normally used as a page number, such as “ ⁇ 1”) is stored in page # (104).
  • the example of the virtual volume management table 100 described here shows an example in which one virtual volume is defined in the storage apparatus 1.
  • the virtual volume identifier for example, the host 2 identifies the volume.
  • a logical unit number (LUN) that is an identification number used for the purpose is also included in the virtual volume management table 100.
  • the page compression performed in the storage apparatus 1 Before explaining the page arrangement 103 and the allocated amount (111), the page compression performed in the storage apparatus 1 according to the present embodiment will be described.
  • the storage apparatus 1 receives a data write request for a virtual page of a virtual volume from the host 2, if the page is not mapped to the virtual page, the page is mapped to the virtual page, and then the data remains as it is ( Write to the page (without compression). Thereafter, the storage device 1 compresses the data in the page according to the page state.
  • the storage device 1 compresses data in a page when it detects a page in a state where “write (update) has not been performed on the page for a certain period of time or longer”.
  • other conditions may be used as the conditions for compressing the in-page data.
  • a page to be compressed is designated from the outside (such as the management host 5 or the host 2), the data in the page may be compressed.
  • the compressed data When compressing data (uncompressed data) stored in a page and not subjected to compression processing, the compressed data is stored in a page different from the page in which the uncompressed data is stored.
  • a page storing uncompressed data is referred to as an “overwrite page”
  • a page storing compressed data is referred to as an “additional page”.
  • the additionally written page is sometimes called a compressed page.
  • the additional write page is also a page in the pool 50 (a page managed by the pool management table 200).
  • the storage device 1 has a table (additional page management table) for managing only the additional page so that the overwrite page and the additional page can be distinguished. Details will be described later.
  • the storage apparatus 1 When compressing data, the storage apparatus 1 performs compression for each partial area of a predetermined size in the virtual page (or overwrite page).
  • the area in the virtual page is divided into 8 KB partial areas in order from the top of the virtual page, and data compression is performed for each partial area.
  • this 8 KB partial area is called a “segment”.
  • a size other than 8 KB may be adopted as the size of the partial area.
  • the storage controller 10 when compressing data of a page mapped to VP # 2 (overwrite page), the storage controller 10 reads the data from the top of the page mapped to VP # 2 by 8 KB and uses the compression circuit 16. Then, the read 8 KB data is compressed. A chunk of data generated by compressing 8 KB data is called a “compressed segment”. Then, the storage controller 10 stores the compressed segment into a write-once page. In principle, when compressing the data of the overwrite page, all the data in the overwrite page is compressed and moved to the additional page.
  • overwritten page data (compressed segments) can be stored in one additional page.
  • the data written to VP # 2 (more precisely, the data stored in the overwrite page mapped to VP # 2) and the data written to VP # 3 are additional write pages.
  • An example of moving to page # 2 is shown.
  • the allocation amount 111 of each record the data amount of the virtual page managed by the record is stored.
  • the allocated amount 111 stores the same size (for example, 42 MB) as the size of the page (or virtual page).
  • the allocated amount 111 stores the compressed size of the virtual page data.
  • the allocation amount 111 of the record with the virtual page # (101) “2” that is, the record storing the management information of VP # 2) is 10 MB
  • the data of VP # 2 is 10 MB. It means that it was compressed.
  • the storage apparatus 1 When the virtual page data is moved to the write-once page, to manage the storage area mapped to the virtual page, it is necessary to manage at a finer granularity than the page. Therefore, the storage apparatus 1 according to the present embodiment has a table (LBA management table) for managing mapping information for a virtual page whose data has been moved to an additional write page.
  • FIG. 5 shows an example of the LBA management table 120.
  • the LBA management table 120 includes columns of a host LBA 121, a data length 122, and a data storage location 123.
  • the LBA management table 120 is also stored in the memory 14.
  • Each record of the LBA management table 120 stores information on a storage area mapped to a segment in a virtual page.
  • the host LBA 121 stores the host LBA of the first block of the segment in the virtual page.
  • position information on the additionally written page is stored.
  • position information stored in the data storage position 123 a set of a physical page number and a relative address in the physical page is used.
  • the relative address in the physical page is an offset address when the address of the first block in the physical page is 0. For example, when the position information of the kth block from the top of page #n (n is an integer value) is stored, (n, (k ⁇ 1)) is stored.
  • each record is mapped to an 8 KB area starting from the address specified by the host LBA 121 in the area in the virtual volume (virtual page), and the area starting at the data storage position 123 and having a data length of 122 is mapped. (And compressed data is stored in this area).
  • FIG. 6 shows an example of the additional write page (compressed page) management table 130 and the final write position 134.
  • the additional write page management table 130 is a table for managing pages secured as additional write pages, and is stored in the memory 14.
  • the additional page management table 130 includes columns of a relative address 131, a page # (132), and a host LBA (133). This indicates that the physical page with the page number recorded in the page # (132) column is secured as an additional page.
  • the relative address 131 stores the relative address in the physical page specified by the page # (132).
  • the block specified by the relative address 131 and page # (132) is mapped to an 8 KB virtual volume area starting from the host LBA (133). Since the size of the compressed data is indefinite (varies depending on the data contents), a plurality of blocks may be mapped to the 8 KB virtual volume area starting from the host LBA (133). For example, when the size of the compressed data is 1 KB, there are two records having the same host LBA (133) but different relative addresses 131 and page # (132).
  • the storage apparatus 1 can manage the storage area in the pool separately for the additional page and the overwrite page.
  • a page (page identified by page # (104)) mapped to a virtual page whose page layout (103) is “overwrite” is an overwrite page, and additional page management is performed.
  • a page in which the page number is recorded in page # (132) in the table 130 is an additional page.
  • a page that is neither an overwrite page nor an additional page (a page in which use (205) is “0” in the pool management table 200) can be an overwrite page or an additional page.
  • the storage area used as the overwrite page and the storage area used as the additional page may be storage areas belonging to the same storage device 20.
  • a storage area used as an overwrite page and a storage area used as an additional page may be storage areas belonging to different storage devices 20.
  • a set of additional write pages is sometimes referred to as an “additional write pool”.
  • the storage controller 10 also manages the final write position 134 (held on the memory 14).
  • the final write position 134 indicates the position of the area where the compressed segment was last written, and the storage controller 10 determines the write destination of the compressed segment based on the final write position 134 at the time of additional writing.
  • the next address after the final write position 134 corresponds to the start position of the unused area of the additional write page, and the area before the final write position 134 is an area in which a compressed segment is stored (or a compressed segment has been stored in the past). Area).
  • the storage controller 10 writes a compressed segment to an additional write page, the compressed segment is written from the address next to the final write position 134 (that is, added). After writing the compressed segment, the storage controller 10 updates the final write position 134.
  • each management table (LBA management table 120, additional page management table 130, etc.) described above is used when the storage controller 10 reads / writes the additional page.
  • LBA management table 120, additional page management table 130, etc. each management table described above is used when the storage controller 10 reads / writes the additional page.
  • the storage controller 10 calculates VP # from the read destination address (LBA) included in the read request.
  • LBA read destination address
  • the storage controller 10 refers to the virtual volume management table 100, and when the page arrangement 103 of VP # k is “additional writing”, the storage location of the read target data (by referring to the LBA management table 120) ( The data storage position 123 and the data length 122) are specified.
  • the storage controller 10 refers to this and the pool management table 200 so that the storage controller 10 stores the read target data in which area of which storage device. Can be specified.
  • Storage controller 10 reads the read target data from the specified storage device. Since the read data is compressed, the storage controller 10 decompresses the data using the compression circuit 16 and returns the decompressed data to the host 2.
  • the storage apparatus 1 can accept an update request from the host 2 to the virtual page whose data has been moved to the write-once page.
  • An outline of processing performed when the storage apparatus 1 receives a write (update) request from the host 2 to a virtual page to which an additional page is mapped will be described. Here, it is assumed that the data write range specified by the write request matches the segment boundary.
  • the storage controller 10 compresses the write data (update data) received from the host 2 to generate a compressed segment.
  • this compressed segment is referred to as an “updated compressed segment”.
  • the pre-update data of the write data (update data) is recorded in a compressed state on the additional writing page.
  • the pre-update data in the compressed state recorded on the additional page is referred to as “pre-update compressed segment”.
  • the post-update compressed segment is appended after the last compressed segment stored in the postscript page. Then, the storage controller 10 updates the LBA management table 120 and the additional page management table 130.
  • x is stored in the host LBA (133) of the record in which the page # (132) is y and the relative address (131) is z in the additional page management table 130. Then, the value of the host LBA (133) of the record with the page # (132) of y 'and the relative address (131) of z' in the additional page management table 130 is changed to "null". That is, the area where the pre-update compressed segment is stored is changed to an area not mapped to the virtual page.
  • the reason why the post-update compressed segment is not stored (overwritten) in the storage area where the pre-update compressed segment is stored is that the size of the post-update compressed segment may be different from the size of the pre-update compressed segment.
  • the size of the post-update compressed segment is larger than the size of the pre-update compressed segment, the post-update compressed segment cannot be overwritten in the storage area in which the pre-update compressed segment is stored.
  • this problem is solved by additionally storing the updated compressed segment in the additional writing page.
  • the storage controller 10 If the size of the write data is smaller than the segment size, the storage controller 10 reads the compressed segment stored in the additional page, decompresses it using the compression circuit 16, and stores the decompressed data on the cache memory. . Then, the storage controller 10 overwrites the decompressed data on the cache memory with the write data received from the host 2, and compresses the decompressed decompressed data using the compression circuit 16, thereby creating an updated compressed segment. The updated compressed segment is added to the unused area of the additional page.
  • the above explanation is mainly for explaining how to use each management table (LBA management table 120, additional page management table 130, etc.). Therefore, particularly when a write (update) request from the host 2 is received for a virtual page, the processing actually performed by the storage controller 10 is slightly different from that described above. For example, when a write (update) request from the host 2 is received for a virtual page whose data has been moved to an additional page, depending on conditions, the data is moved from the additional page to the overwrite page, etc. Processing different from the processing described is performed. Details of processing performed when the storage apparatus 1 receives a write (update) request from the host 2 will be described later.
  • garbage collection is a process of collecting an area (unused area) that is not mapped to a virtual page, and packing data (moving data to the front of the additional page).
  • the host LBA 133 corresponding to the block whose relative address 131 is 1 and page # (132) is 2 is null. Therefore, in the garbage collection process, the data of the next block (the block whose relative address (131) is 2 and page (132) is 2) is moved to the block whose relative address 131 is 1 and page # (132) is 2. Further, the data of the next block (the block whose relative address (131) is 3 and page (132) is 2) is moved to the block whose relative address 131 is 2 and page # (132) is 2. . .
  • the data packing is performed by repeatedly executing the process. At the same time, the LBA management table 120 is updated.
  • garbage collection may be performed by a method other than that described here. For example, a plurality of blocks may be read out together and moved for efficient processing.
  • FIG. 7 shows the contents of the threshold table 300 managed by the storage apparatus 1 according to this embodiment.
  • the threshold table 300 is stored in the memory 14.
  • the threshold table 300 stores a compression permission threshold 301 and a CM upper page update amount threshold 302.
  • the values stored in the threshold value table 300 are set or changed by the administrator using the management host 5 or the like. Alternatively, as another embodiment, recommended values may be set in the threshold table 300 in advance.
  • the compression permission threshold 301 stores the number of days (or time). When the overwritten page has not been updated for the period specified by the compression permission threshold 301 or more, the storage apparatus 1 according to the present embodiment moves the data in the overwritten page to the additional page. In the example of FIG. 7, since “7 days” is stored in the compression permission threshold 301, in this case, the storage apparatus 1 moves overwritten page data that has not been updated for more than 7 days to an additional page. .
  • the on-CM page update amount threshold 302 stores information related to the trigger when moving the data of the additional page to the overwrite page.
  • the amount of update data from the host 2 for a certain page to be added is greater than or equal to the amount specified by the CM page update amount threshold 302
  • the storage apparatus 1 has data for that page to be written. Move to the overwrite page.
  • the CM upper page update amount threshold 302 stores the ratio (percentage) of the update data amount to one page size. However, instead of the ratio, the data amount (byte, MB, etc.) may be stored.
  • the virtual page is mapped to the overwrite page instead of the additional page, and the data stored in the additional page is stored in the overwrite page. Write the updated data on the overwrite page. Details will be described later.
  • FIG. 8 shows the contents of the free space management table 400 managed by the storage apparatus 1 according to this embodiment.
  • the free space management table 400 is stored in the memory 14.
  • the free space management table 400 stores information on a free space securing ratio 401, an additional write data amount 402, an update reservable amount 403, a free space usage amount 404, and an update free space 405.
  • the free space securing ratio 401 is a preset value (this value may be a fixed value that cannot be changed, or the administrator uses the management host 5 or the like). (The value may be a value that can be set or changed), but the other values are values determined (calculated) by the storage device 1 based on the amount of data moved from the overwrite page to the write-once page. It is.
  • the additional data amount 402 is the amount of data moved from the overwrite page to the additional page. In this embodiment, this data amount represents the data amount at the time of compression. However, the uncompressed data amount may be used as the additional write data amount 402. In addition, when the data of the additional writing page is updated, the value of the additional writing data amount 402 is recalculated. Details will be described later.
  • the free space allocation ratio 401 is information for calculating the amount of pages for storing update data for the data in the additional page. This page (set) for storing update data is referred to as “free area”.
  • the storage apparatus 1 determines the amount of pages that can be secured as a free area based on the additional write data amount 402.
  • the value stored in the free space securing ratio 401 is the ratio (percentage) of the free space size to the additional write data amount 402.
  • the additional write data amount 402 is 4200 MB and the free area securing ratio 401 is 10%. Therefore, the storage apparatus 1 can secure a number of pages corresponding to 420 MB (4200 MB ⁇ 10%) as a free area. .
  • This value (that is, 420 MB) is stored in the reservable reserve amount 403.
  • the free space usage amount 404 stores the amount of the area where update data is stored in the additional writing page. This does not include the amount of data moved from the overwrite page to the write-on page. Therefore, the free space usage amount 404 is 0 when the data moved from the overwrite page to the additional writing page has not been updated.
  • the free space usage amount 404 represents the total size of data (update data) actually written on the additional writing page. Therefore, when compressed update data is stored, the free space usage amount 404 is equal to the total size of the post-compression update data written to the additional write page.
  • the update free capacity 405 stores a difference between the update reservable amount 403 and the free space usage amount 404.
  • the update reservable amount 403 is an upper limit value of the page amount that can be secured as an additional page, and a page exceeding the renewable reservable amount 403 is not secured as a free area. If the total amount of update data written to the additional write page is greater than or equal to the update reservable amount 403 (this is the same as when the update free space 405 is 0 or less), the update data is additionally written. Cannot be stored (appended) on the page. In such a case, the storage device 1 returns the data in the updated write page to the overwrite page. By performing such control, the storage apparatus 1 prevents an excessively written page from being secured excessively, and suppresses a page whose update frequency has been increased from continuing to remain on the additionally written page.
  • the flow of processing (write processing) when the storage apparatus 1 receives a write request and write data for a virtual volume from the host 2 will be described with reference to FIG.
  • the write request issued by the host 2 includes information (host LBA and data length) on the write data write destination position.
  • the CPU 11 calculates the virtual page number of the virtual page that is the write destination of the write data from the information of the write destination position included in the write request (s51).
  • the CPU 11 refers to the virtual volume management table 100 and determines whether a page is allocated to the virtual page specified in s51 (s52).
  • the virtual page # (101) of the virtual volume management table 100 stores a valid value (a non-null value) in the page # (104) of the record equal to the virtual page number specified in s51, or the virtual volume
  • the page layout (103) of the record in which the virtual page # (101) of the management table 100 is equal to the virtual page number specified in s51 is set to “additional writing”, the page is displayed on the virtual page specified in s51. Means that is assigned.
  • the CPU 11 selects one unused page (a page whose use (205) is “0”) from the pool management table 200. Then, the selected page is allocated to the write target virtual page (s53). In s53, the CPU 11 stores the page number of the selected page (page # (201)) in the page # (104) of the write target virtual page in the virtual volume management table 100, and also the page of the write target virtual page. By storing “overwrite” in the arrangement (103), the selected page is assigned to the write target virtual page. The use (205) of the selected page is changed to “1”.
  • the CPU 11 secures a cache memory area for temporarily storing the write data received from the host 2, and in s55, the CPU 11 stores the write data in the cache area secured in s54. Finally, the CPU 11 sets whether or not to update the write target virtual page (105) (set “Yes”) (s56), and ends the process. Since the process such as securing the cache memory area is a known process, a description thereof will be omitted.
  • the CPU 11 also has information for managing the write data stored in the cache memory (for example, the LBA of the virtual volume where the write data is stored).
  • the write process of FIG. 9 is a process until the write data received from the host 2 is stored in the cache memory, and the contents of this process are mapped to either the overwrite page or the additional write page on the virtual page of the write destination. But it is the same.
  • the cache memory is used as a so-called write-back cache. Therefore, immediately after the write data is stored in the cache memory (after completion of s55 or s56 in FIG. 9), the host 2 is notified that the write processing has been completed. After a while has passed since the write data is stored in the cache memory, the CPU 11 stores the write data on the cache memory in the storage device 20. This process is called “destage”.
  • Destage processing The flow of destage processing will be described with reference to FIG. The processing in FIG. 10 is periodically performed. Alternatively, the destage processing may be executed when the unused area on the cache memory falls below a predetermined amount.
  • the CPU 11 selects data to be processed from each data stored on the cache memory (s501). 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.
  • the CPU 11 specifies the virtual page number of the virtual page to which the data selected in s501 is written, and determines whether the page layout (103) of the virtual page is “overwrite” or “additional write” (s502).
  • the page layout (103) is “overwrite” (s502: No)
  • the overwrite page is mapped to the data write destination virtual page. Therefore, the CPU 11 specifies the destaging destination area of the data selected in s501, that is, the overwriting page upper area (the area on the storage device 20) mapped to the virtual page, and the specified destaging destination area.
  • the data is destaged (S511), and the process is terminated.
  • the page # is identified by referring to the page # (104) of the virtual volume management table 100, and then the page # (201) is identified from the pool management table 200. Reference is made to DEV # (202) and Addr (203) of the record equal to the page #.
  • the additional writing page is mapped to the data writing destination virtual page.
  • the CPU 11 selects all the data on the cache memory whose write destination virtual page is the same as the write destination virtual page of the data selected in s501.
  • the data selected here is referred to as “destage target data”
  • the write destination virtual page of the selected data is referred to as “destage target virtual page”.
  • the CPU 11 moves the data of the additional page mapped to the destage target virtual page to the overwrite page (s504).
  • the CPU 11 reads data belonging to the same virtual page as the write destination virtual page number of the data selected in s501 from the additional write page (corresponding area on the storage device 20) onto the cache memory. At this time, it is not necessary to read the area where data is stored in the cache memory from the additional writing page.
  • the CPU 11 decompresses the data using the compression circuit 16, and stores the decompressed data in the cache memory.
  • the CPU 11 performs page allocation to the destage target virtual page.
  • the page assigned here is an overwrite page, and here, the same processing as s53 is performed.
  • the CPU 11 destages the data to the assigned overwrite page and ends the process.
  • the LBA management table 120 and the additional page management table 130 are updated. Specifically, the host LBA 121 deletes a record that is a value within the range of the destage target virtual page from the LBA management table 120. Further, among the records in the additional page management table 130, the host LBA 133 is changed to null for a record in which the value of the host LBA 133 is included in the range of the destage target virtual page.
  • FIG. 11 is a conceptual diagram of a process of moving data from the additional writing page to the overwriting page.
  • FIG. 11A shows a state in which update data from the host 2 for the virtual page to which the additional page is mapped is accumulated in the cache memory by a predetermined amount (CM page update amount threshold 302) or more.
  • CM page update amount threshold 302 a predetermined amount
  • the host 2 writes to the areas B, C, and D
  • write data update data
  • a write-once page is mapped to the virtual page shown in FIG. 11 (1), and the compressed segments associated with the areas A, B, C, and D on the virtual page are respectively compressed segments (a), ( b), (c), (d).
  • FIG. 11 (2) shows a data movement method performed in s504 when the virtual page, the data on the cache memory, and the additionally written page are in the state of FIG. 11 (1).
  • the CPU 11 reads the compressed segment (a) from the additional writing page, decompresses it, and writes it to the overwrite page (area (A) thereof) (At this time, the decompressed data may be temporarily stored in the cache memory).
  • the compressed segments (b), (c), and (d) of the additional page need not be read from the additional page. Instead, the data (B, C, D data) on the cache is destaged to the overwrite page.
  • the data movement from the additional writing page to the overwriting page is performed for the virtual page having a large amount of update data, so that the overhead of the data compression process can be reduced. Further, since the amount of compressed data read from the additionally written page on the storage device can be minimized, the overhead of data read processing from the storage device and the overhead of decompression processing of read data can be reduced.
  • the CPU 11 compresses the destage target data (s505), and compares the size of the compressed data with the update free space 405, so that It is determined whether there is a free area in which stage target data (after compression) can be stored.
  • s506 no case.
  • the update reserveable amount 403 is exceeded. Expands the data of the write-once page mapped to the write destination virtual page of the destage target data and returns it to the overwrite page (s509).
  • the process of s509 is the same as that of s504. That is, it is not necessary to read the area where the destage target data is stored on the cache memory from the additional writing page.
  • the CPU 11 updates the contents of the free space management table 400 (s510) and ends the process.
  • the CPU 11 may preferentially select a page with a low compression rate and move the data of the page to the overwrite page. This is because it is possible to save the storage area by preferentially storing a page with a high compression rate in an additional write page (compressed page).
  • the CPU 11 adds the destage target data (after compression) to the additional page (s507), and the free area management table.
  • the contents of 400 are updated (s508), and the process is terminated.
  • the CPU 11 since the data (compressed segment) is additionally written to the additional page, the CPU 11 also updates the LBA management table 120 and the additional page management table 130 as described above.
  • the storage apparatus 1 may additionally write the update data on the additional page without compressing the update data. In that case, the processing of s505 is unnecessary, and the overhead of the compression processing can be reduced.
  • the CPU 11 searches the virtual volume management table 100 to select one virtual page to which the overwrite page is mapped (that is, a virtual page whose page layout (103) is “overwrite”) (s1010).
  • a virtual page whose page layout (103) is “overwrite” the virtual page selected in s1010 is referred to as a “target virtual page”.
  • the CPU 11 determines whether the target virtual page is updated or not (105) as “None” or “Yes” (s1020).
  • the CPU 11 sets the continuous update non-update period (107) of the target virtual page to 0 (s1120). Then, the CPU 11 changes whether or not the target virtual page is updated (105) to “None” (s1095). After that, the CPU 11 ends the process when processing is performed for all virtual pages (s1100: Yes), and when there are remaining virtual pages that have not been processed (s1100: No), the process is repeated from s1010.
  • the CPU 11 updates the continuous no-update period (107) of the target virtual page (s1030). Specifically, for example, when the process of FIG. 12 is performed every 24 hours (1 day), “1” is added to the period (107) in which the target virtual page is not continuously updated.
  • the CPU 11 determines whether or not the continuous update-free period (107) of the target virtual page is equal to or greater than the compression permission threshold 301.
  • the CPU 11 reads data from the overwrite page mapped to the target virtual page and reads it using the compression circuit 16. Compress the output data.
  • the CPU 11 adds the compressed data to the additional page, and also updates the LBA management table 120 and the additional page management table 130 as described above (s1080).
  • the CPU 11 refers to the additional page management table 130 and the final writing position 134 to determine whether there is an unused additional page necessary for additionally writing the compressed data. To do. If there is no unused additional write page, the CPU 11 selects an unused page (a page with use (205) of “0”) from the pages managed in the pool management table 200, and the additional write page management table. In 130, the selected unused page is registered.
  • the CPU 11 changes the page layout 103 of the target virtual page to “additional writing”, the page # (104) to null, and the allocation amount (111) to the data size (compressed size) compressed in s1080. (S1090). Further, in s1090, the CPU 11 updates the contents of the free space management table 400. Note that the mapping to the target virtual page is canceled for the page (overwrite page) that has been mapped to the target virtual page so far. Therefore, the CPU 11 updates the use (205) column of the page mapped to the target virtual page in the record of the pool management table 200 to “0”.
  • the CPU 11 executes s1095 and s1100. If all virtual pages have been processed (s1100: Yes), the process ends, and if virtual pages that have not yet been processed remain (s1100: No), s1010 Repeat the process.
  • FIG. 13 shows a change in the state of a page (particularly an additional page) when data of an overwrite page mapped to a virtual page (hereinafter referred to as “virtual page V”) is moved to the additional page. It is expressed conceptually.
  • FIG. 13 (1) shows an overwrite page mapped to the virtual page V.
  • FIG. 13 (2) represents an additional page that is a data movement destination of the overwrite page in FIG. 13 (1).
  • FIG. 13 (2) In the areas (a), (b), and (c) of FIG. 13 (2), data moved from the areas A, B, and C (after compression) are stored.
  • FIG. 13 (3) shows an update to the area (b) of FIG. 13 (2) (when update data for the area on the virtual page V to which the area (b) is mapped is received from the host 2) In this example, update data is added to the area (b ′). At this time, the area (b) becomes an invalid area (area not mapped to the virtual page).
  • FIG. 13 (4) shows an example in which the data of the additionally written page (data in the areas (a), (b ′), and (c)) is moved to the overwrite page.
  • the sizes of the areas (a), (b), (b ′), and (c) are a, b, b ′, and c, respectively, and the free area securing ratio 401 is p.
  • the free area securing ratio 401 is p.
  • step s1090 the CPU 11 stores (adds) “a + b + c” (the compressed size of one page of data moved from the overwrite page) in the additional write data amount 402 of the free space management table 400.
  • the update reservable amount 403 is also updated.
  • the update reservable amount 403 stores (adds) a value obtained by multiplying the data amount (a + b + c) moved to the write-once page by the free space securing ratio 401 (p).
  • the update reservable amount 403 is “(a + b + c) ⁇ p”.
  • the free space for update 405 is updated to a value obtained by subtracting the free space usage amount 404 from the update reservable amount 403 after updating (that is, “(a + b + c) ⁇ p”).
  • the CPU 11 adds “b ′” to the free area usage amount 404. Further, the update reservable amount 403 is also updated in accordance with the change of the additional writing data amount 402.
  • the reservable reservable amount 403 stores a value obtained by multiplying the additional write data amount 402 (that is, “a + c + b ′”) by the free space securing ratio 401 (p).
  • the free space for update 405 is updated to a value (that is, “(a + c + b ′) ⁇ p ⁇ b ′”) obtained by subtracting the free space use amount 404 (b ′) from the update reservable amount 403. .
  • the free space usage amount 404 is not changed.
  • the update free space 405 is updated to a value obtained by subtracting the free space usage amount 404 from the update reservable amount 403.
  • the update free space 405 may be a negative value.
  • the free space usage amount 404 is not changed (reduced) (it remains b '). This is because valid data is not stored in the area (b ′), but only write-once is permitted for data writing to the additional writing page, and update data cannot be written in the area (b ′).
  • the opportunity to reduce the free space usage amount 404 is when garbage collection is performed. After the garbage collection is performed, the CPU 11 changes the free space usage amount 404 to 0, and also changes the update free space 405 (changed to a value obtained by subtracting the free space usage amount 404 from the update reservable amount 403). To do).
  • the amount of additional writing data 402 does not change, so the values of the additional writing data amount 402 and the update reservable amount 403 are not updated.
  • garbage collection is performed together with processing that causes a change in the additional data amount 402 (for example, processing such as moving data with a low compression rate to an overwrite page)
  • the additional data amount 402 and the update data amount 402 are updated.
  • the value of the secureable amount 403 is also updated.
  • the storage device 1 periodically executes garbage collection.
  • garbage collection may be executed during the process described above.
  • the CPU 11 may execute garbage collection when it is determined in s506 in FIG. 10 that there is no free area in which the destage target data can be stored.
  • update data for the data in the additional writing page is written (appended) based on the amount of data moved to the additional writing page.
  • the free space is used for writing update data, and is not used for storing write data in an overwrite page (a page for storing uncompressed data). Substantial decrease.
  • the efficiency (performance) at the time of garbage collection of the additionally written page is lowered.
  • the storage device temporarily stores write data for a virtual page from the host in the cache memory. If the amount of data stored in the cache memory for the virtual page to which the additional page is mapped (that is, the compressed data is stored) exceeds the threshold (CM page update amount threshold 302), the data is additionally written. Read from page and move to overwrite page. At this time, the area where the write data from the host is accumulated in the cache memory is not read from the additional page. Therefore, the data transfer efficiency from the overwritten page to the overwritten page is good.
  • CM page update amount threshold 302 the threshold
  • the hardware configuration of the storage apparatus according to the second embodiment is the same as that described in the first embodiment.
  • the data of the additional page is returned to the overwrite page. For example, when data writing exceeding the CM upper page update amount threshold value 302 occurs for one virtual page and the data is accumulated in the cache memory, even if the additional page is mapped to the virtual page, it is changed to the overwrite page. Returned.
  • Such an event can be considered, for example, when a sequential write request is received from the host 2 to the virtual volume.
  • the host 2 uses a virtual volume as a data backup destination volume, the host 2 sequentially writes a large amount of data to the virtual volume.
  • the compression permission threshold 301 is 28 days and the host 2 uses a virtual volume as a backup destination volume once a month (30 days).
  • the data is moved from the page (overwrite page) mapped to the virtual page of the virtual volume to the additional write page. Occurs.
  • the data written in this case is preferably stored in a compressed state.
  • the data access pattern is learned, and in the case described above, the period during which the data is compressed and stored is lengthened.
  • the time (date) when data update occurs is predicted in advance, and the data is moved to the overwrite page before that date.
  • FIG. 14 is a configuration example of the virtual volume management table 100 ′ managed by the storage apparatus according to the second embodiment.
  • the virtual volume management table 100 ′ includes virtual page # (101 ′), host LBA (102 ′), page layout (103 ′), page # (104 ′), update presence / absence (current) (105 ′), update presence / absence ( (Previous) (106 ′), no continuous update period (current) (107 ′), no continuous update period (evacuation) (108 ′), no continuous update period (after learning movement) (109 ′), learning movement flag (110) ') And the column of the allocated amount (111').
  • the contents of the information stored in the allocation amount (111 ′) are the virtual page # (101), host LBA (102), page layout (103), page # of the virtual volume management table 100 described in the first embodiment. (104), presence / absence of update (105), period of no continuous update (107), and allocation amount (111). Other information will be described later.
  • FIG. 15 is a configuration example of the threshold table 300 ′ managed by the storage apparatus according to the second embodiment.
  • the threshold table 300 ′ stores a compression permission threshold 301, a CM upper page update amount threshold 302, and a learning movement threshold 303.
  • the compression permission threshold 301 and the CM upper page update amount threshold 302 are the same as those described in the first embodiment.
  • the contents of the learning movement threshold value 303 will be described in the process of explaining the overwrite page movement determination process.
  • the contents of the virtual volume management table 100 ′ and the threshold table 300 ′ described above are different, and the contents of the overwrite page movement determination process are the same as those described in the first embodiment (FIG. 12). ) Is different.
  • a process of moving the data of the additional write page to the overwrite page is added based on the learning result.
  • the flow of the write process is basically the same as that described in the first embodiment (FIG. 9), but at the end of the write process, the CPU 11 replaces the update presence / absence (105) with the update presence / absence (current) (105 ′). The difference is that “Yes” is set for.
  • the storage apparatus according to the second embodiment is the same as the storage apparatus according to the first embodiment.
  • the destage processing (FIG. 10) described in the first embodiment is also performed in the storage apparatus according to the second embodiment.
  • movement determination process the flow of the overwrite page movement determination process (hereinafter referred to as “movement determination process”) performed in the storage apparatus according to the second embodiment will be described with reference to FIGS. 16 and 17. Since many processes are the same as those described in the first embodiment (FIG. 12), the following description will focus on differences from the processes in FIG.
  • S1010, s1020, and s1030 in FIG. 16 are the same as those described in the first embodiment (FIG. 12). However, in the movement determination process in the second embodiment, the CPU 11 in s1020, based on whether or not the virtual page selected in s1010 (hereinafter, this virtual page is referred to as “target virtual page”) is updated (this time) (105 ′). Make a decision. In the following, a case will be described first where the determination of s1020 indicates whether the target virtual page is updated (this time) (105 ') is "present" (s1020: No).
  • the CPU 11 sets the value of the period without current update (current) (107 ′) of the target virtual page as the period without continuous update (evacuation) (108 ') (S1110). Thereafter, the CPU 11 sets a period (No) (107 ′) without continuous update and a period (109 ′) without continuous update (109 ′) of the target virtual page to 0 (s1120 ′). Then, the CPU 11 saves the value of whether or not the target virtual page is updated (current) (105 ′) to the update presence / absence (previous) (106 ′), and then sets the value of updated presence / absence (current) (105 ′) to “none”. (S1095 ′). Thereafter, when processing has been performed on all virtual pages (s1100: Yes), the CPU 11 ends the processing, and when virtual pages that have not yet been processed remain (s1100). : No), the process is repeated from s1010.
  • the CPU 11 executes s1030. After s1030, the CPU 11 determines whether the learning movement flag 110 'for the target virtual page is ON. When the learning movement flag 110 'is ON (s1040: Yes), the CPU 11 updates the period without continuous update (after learning movement) (109') (s1050). For example, when the movement determination process (the process of FIGS. 16 and 17) is performed every 24 hours (one day), “1” is set in the period (109 ′) where the target virtual page is not continuously updated (after learning movement). to add. Thereafter, the process of s1060 is performed. When the learning movement flag 110 'is OFF (s1040: No), the process of s1050 is skipped.
  • the CPU 11 determines whether or not the continuous update period (current) (107 ') of the target virtual page is equal to or greater than the compression permission threshold 301 (s1060). When the period (currently) (107 ') in which the target virtual page is not continuously updated is equal to or greater than the compression permission threshold 301 (s1060: Yes), the CPU 11 determines whether the learning movement flag 110' is ON (s1070). When the learning movement flag 110 'is OFF (s1070: No), the CPU 11 executes s1080 and s1090 as in the first embodiment. Then, after executing s1095 ′, the CPU 11 ends the processing when all virtual pages are processed (s1100: Yes), and there is a virtual page that has not yet been processed. (S1100: No), the process is repeated from s1010.
  • the CPU 11 determines whether the period without continuous update (after learning movement) (109 ′) is the learning movement threshold value 303 or more (s 1072). If the determination in s1072 is Yes, the CPU 11 changes the learning movement flag 110 'to OFF (s1074), and then performs the processing after s1080. It is determined whether the period without continuous update (after learning movement) (109 ') is greater than or equal to the learning movement threshold 303 (s1072).
  • the CPU 11 determines whether or not update (previous) (106 ′) is “present”. It is determined whether it is “none” (s1062). When the update presence / absence (previous) (106 ') is "None” (s1062: No), the CPU 11 performs the processing after s1095'.
  • the CPU 11 determines whether the period without continuous update (retraction) (108 ′) is greater than or equal to the learning movement threshold 303. (S1064). If the determination in s1064 is Yes, the CPU 11 changes the learning movement flag 110 'to OFF (s1066), and then performs the processing after s1080. When the determination in s1064 is No, the CPU 11 performs the processing after s1095 '.
  • the CPU 11 searches the virtual volume management table 100 to turn on the learning movement flag 110 ′ in the virtual page to which the additional page is mapped (that is, the virtual page whose page layout (103) is “Additional”).
  • One virtual page is selected (s1510).
  • the virtual page selected in s1510 is referred to as a “target virtual page”.
  • the additional page mapped to the target virtual page is called a “target additional page”.
  • the CPU 11 determines whether or not the target virtual page is updated (this time) (105 ') is "present” or “absent” (s1520). If the target virtual page is updated or not (current) (105 ') is "None" (s1520: Yes), the target virtual page non-continuous update period (current) (107') is updated (s1530). This process is the same as s1030.
  • the CPU 11 determines whether or not the continuous update non-period (current) (107 ′) of the target virtual page is the same as the non-continuous update period (evacuation) (108 ′) (s1550).
  • the data of the additionally written page mapped to is decompressed and moved to the overwrite page (s1560).
  • the same processing as in s509 and s510 of the first embodiment is performed.
  • the CPU 11 sets the period without continuous update of the target virtual page (after learning movement) (109 ′) to 0 (s1570), and after saving to the update presence / absence (previous) (106 ′), the update presence / absence (current) (105 ′).
  • the CPU 11 changes the content of the continuous update non-period (current) (107 ′) Copy (save) to (save) (108 ') (s1610), and set the contents of no continuous update period (current) (107') and no continuous update period (after learning transfer) (109 ') to 0 (s1620) Then, the learning movement flag (110 ′) is set to OFF (s1630). Thereafter, the determination at s1580 is performed.
  • the storage apparatus learns the virtual page update cycle (update pattern) and suppresses the virtual page data with a low update frequency from occupying the overwrite page. Specifically, the storage apparatus specifies a virtual page having an update pattern in which an update occurs once every (n + 1) days (no update is performed continuously for n days, and an update is performed on the (n + 1) day). .
  • n is a value greater than or equal to the learning movement threshold 303.
  • the storage apparatus moves the data of the virtual page from the overwrite page to the additional write page (FIG. 17: processing from s1062 to s1090).
  • the storage apparatus stores a period during which no update has occurred for the virtual page (in a continuous update no period (save) 108 ').
  • the storage device stores a learning result (estimation result) that the virtual page update cycle is (1 + no continuous update period (save) 108 ') days.
  • the storage apparatus determines that an update to the virtual page will occur soon, and moves the data of the additional page mapped to the virtual page to the overwrite page before the update occurs (FIG. 18: s1550 to s1570). . Therefore, it is possible to improve the access performance when data update occurs.
  • the data moved to the overwrite page is subjected to the processing shown in FIG. 17 (processing such as s1062 to s1090) as long as there is no change in the update cycle, whereby the compression permission threshold 301 is set. It is moved to the postscript page without waiting for elapse. For this reason, since data is stored in the storage device in a compressed state during a period when there is no data update, it is possible to achieve both performance of the storage apparatus and storage efficiency.
  • the present invention is not limited to a mode in which information is managed by a table structure.
  • the storage apparatus may manage information using a data structure other than a table, such as a list structure.
  • the data stored in the additional page is compressed data.
  • the data stored in the additional page may not be limited to the compressed data.
  • the storage device has a function of performing data conversion such as encryption, and data conversion is performed such that the data size fluctuates due to the data conversion function, the converted data is stored in an additional page, When returning the data from the additional writing page to the overwriting page, the data may be reversely converted.
  • data stored in the additional page is not limited to data that has been subjected to data conversion such as compression or encryption. Any of the data stored in the overwrite page and the additional writing page may be uncompressed data or data that has not undergone data conversion. As an example, it is assumed that a storage device is used as a storage device in a storage device that does not have high random write performance but high sequential write performance.
  • the storage device observes the access characteristics (write frequency, sequential / random write ratio, etc.) of each virtual page, and based on the observation result, the data of the virtual page with a high random write frequency moves to the write-once page, When control is performed so that an overwrite page is assigned to a virtual page that is often written sequentially, random write data is stored in the additional write page, so that sequential write is performed when data is written to the storage device. Therefore, improvement of access performance can be expected.
  • control method described in the above embodiment is also effective in the case of a storage apparatus in which a plurality of different types of storage devices are mounted.
  • a write-once type storage device (a storage device using a storage medium that cannot be overwritten and needs to be erased for rewriting, such as a DVD-RW or a flash memory) can be overwritten as a storage device.
  • the storage device is controlled so that the storage area of the overwritable storage device is used as the overwrite page and the storage area of the write-once storage device is used as the additional page. Good.
  • the write-once storage device can suppress the frequency of erasing the storage medium and can improve the access efficiency of the storage apparatus.
  • the data stored in the additional writing page may be data that is subjected to data conversion such as compression, or may be uncompressed data.
  • 1 storage device
  • 2 host
  • 3 SAN
  • 5 management host
  • 10 storage controller
  • 11 CPU
  • 13 device I / F
  • 14 memory
  • 15 management I / F F
  • 16 compression circuit
  • 20 storage device

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

本発明の一観点に係るストレージ装置は、1以上の記憶デバイスとストレージコントローラを有する。ストレージコントローラは、記憶デバイスの領域を、上書き用記憶領域と追記書き用記憶領域に分けて管理しており、上書き用記憶領域と追記書き用記憶領域との間でデータ移動を実施する。たとえば追記書き用の記憶領域には、ホストからのライトデータのうち、更新頻度の少なくなったデータが上書き用記憶領域から移動される。追記書き用の記憶領域に格納されたデータに対する更新データをホストから受領すると、ストレージコントローラは更新データを圧縮後、追記書き用記憶領域に圧縮された更新データを追記する。

Description

ストレージ装置
 本発明は、ストレージ装置に関する。
 ストレージ装置は、データを格納する複数の記憶デバイスと、記憶デバイスを制御するストレージコントローラとを有しており、ホスト計算機に大容量のデータ格納空間を提供することを目的としている。
 ストレージ装置には、低コストで大量のデータを保存することが求められる。こうした要求を満たすために、データを可逆圧縮(以降、単に圧縮と記す)して記録する技術が知られている。圧縮によりデータサイズを縮小し、記憶デバイスに記録すると、データの保持コスト(記憶媒体のビットコスト、ストレージ装置の消費電力コスト等)を削減できる。
 データを圧縮して記憶デバイスに記録する場合、ライト時には圧縮処理、リード時には圧縮データの伸長処理のオーバヘッドが発生するため、アクセス性能が低下することがある。これを避けるために、選択的にデータの圧縮を行う技術が存在する。たとえば特許文献1には、複数の記憶階層(tier)を管理するストレージシステムにおいて、例えば下位tierに移動されるデータを圧縮して格納することが開示されている。
米国特許8359444号明細書
 データを圧縮する場合、データ内容に依存して圧縮率が変化する。そのため、ストレージシステムがデータを圧縮して記憶デバイスに格納したあと、そのデータの更新データをホスト計算機から受領した場合、更新データの圧縮後のサイズは記憶デバイスに格納された圧縮データのサイズよりも大きくなることがある。この場合、圧縮された更新データを、更新前の圧縮データの記録されている領域に上書きすることはできず、異なる格納方法が必要である。
 本発明の一観点に係るストレージ装置は、1以上の記憶デバイスとストレージコントローラを有する。ストレージコントローラは、記憶デバイスの領域を、上書き用記憶領域と追記用記憶領域に分けて管理しており、上書き用記憶領域と追記用記憶領域との間でデータ移動を実施する。
 たとえば追記用記憶領域には、ホストからのライトデータのうち、更新頻度の少なくなったデータが上書き用記憶領域から移動される。追記用記憶領域に格納されたデータに対する更新データをホストから受領すると、ストレージコントローラは追記用記憶領域に更新データの追記を行う。
 本発明の一観点に係るストレージ装置によれば、ストレージ装置の効率を向上させることが出来る。
第1の実施例に係るストレージ装置を含む計算機システムの構成例である。 仮想ボリュームとページの関係を表した図である。 プール管理テーブルの構成例である。 仮想ボリューム管理テーブルの構成例である。 LBA管理テーブルの構成例である。 圧縮ページ管理テーブルの構成例である。 閾値テーブルの構成例である。 空き領域管理テーブルの構成例である。 ライト処理のフローチャートである。 デステージ処理のフローチャートである。 追書きページから上書きページへのデータ移動の概念図である。 移動判定処理のフローチャートである。 データ移動に伴う空き領域管理テーブルの内容変化を説明する図である。 実施例2に係るストレージ装置の有する仮想ボリューム管理テーブルの構成例である。 実施例2に係るストレージ装置の有する閾値テーブルの構成例である。 移動判定処理のフローチャート(1)である。 移動判定処理のフローチャート(2)である。 学習結果に基づく、追書きページのデータの上書きページへの移動処理のフローチャートである。
 以下、幾つかの実施例について、図面を用いて説明する。実施例の説明に入る前に、実施例で用いられる各種用語について説明する。
 本実施例では、「圧縮」とは、LZWアルゴリズム等の可逆圧縮アルゴリズムを用いて、データの意味を保ったままデータサイズを縮小する処理のことを意味する。本実施例に係るストレージ装置では、ホストからストレージ装置に対して書き込まれるデータの圧縮を行うことがある。ストレージ装置で圧縮処理が行われたことによりサイズの縮小されたデータのことを、「圧縮データ」と呼び、ストレージ装置で圧縮処理が施されていないデータの事を「非圧縮データ」と呼ぶ。また可逆圧縮アルゴリズムを用いて、圧縮データを元のデータサイズに戻す処理のことを、「伸長」または「解凍」と呼ぶ。
 また本実施例では、データ圧縮によるデータサイズの縮小効率の指標として、「圧縮率」を用いる。本実施例における圧縮率は、以下の計算式により定義されるものである。
 圧縮率=(非圧縮データのサイズ-圧縮データのサイズ)÷非圧縮データのサイズ
 本実施例では上の計算式に基づいて圧縮率が定義されるので、圧縮率は0から1の間の値をとり得る。そのため、「圧縮率が低い」とは、圧縮によりデータサイズがあまり縮小されなかったことを意味する。一例として圧縮処理の結果、データサイズが全く変化しなかった場合には、圧縮率は0となる。逆に「圧縮率が高い」とは、圧縮によるデータサイズの縮小量が多いことを意味する。
 記憶領域の「更新」とは、記憶領域に格納されているデータの内容を新しい内容に書き換える(上書きする)ことを意味する。ある記憶領域が更新される前に、その記憶領域に格納されていたデータは、「更新前データ」と呼ばれる。一方その記憶領域に新たに書き込まれるデータのことは、「更新データ」または「更新後データ」と呼ばれる。
 「ボリューム」とは、ストレージ装置や記憶デバイス等のターゲットデバイスが、ホスト計算機等のイニシエータデバイスに提供する記憶空間のことを意味する。イニシエータデバイスが記憶空間上の領域に対するデータ書き込み要求を発行すると、その領域に対応付けられているターゲットデバイス上の領域にデータが格納される。本実施例に係るストレージ装置はボリュームとして、いわゆるThin Provisioning技術により形成される仮想ボリュームをホストに提供する。仮想ボリュームは、その初期状態(仮想ボリュームが定義された直後)では、記憶空間上の領域に記憶デバイスが対応付けられていない。イニシエータデバイス(ホスト)が記憶空間上の領域にデータ書き込み要求を発行した時点で、ストレージ装置はその領域に対応付けられる記憶デバイスを動的に決定する。
 本実施例において、「ブロック」とは、ターゲットデバイスがイニシエータデバイスに提供する記憶空間(ボリューム等)上の領域を意味する。また本実施例において、ブロックはボリューム等の最小アクセス単位と等しいサイズの領域で、固定長である。ブロックのサイズは一例として512バイトである。イニシエータデバイスが記憶空間内の各ブロックにアクセスする際には、各ブロックにアサインされているアドレスを指定することでアクセスする。このアドレスは、「Logical Block Address(LBA)」と呼ばれる。本実施例では特に、ストレージ装置がホストに提供するボリューム(仮想ボリューム)のブロックにアサインされているLBAのことを、「ホストLBA」と呼ぶことがある。
 「追書き(append write)」または「追記(append)」とは、データを記憶領域の未使用領域に対してシーケンシャルに書き込む動作のことを意味する。本実施例に係るストレージ装置では、追書き用の記憶領域が設けられる。ストレージ装置が追書き処理を行う場合、追書き用の記憶領域の先頭から順にデータを書き込んでいく。ストレージ装置は、直前に行われた追書き処理でデータが書き込まれた終端アドレスを記憶しており、追書き処理を行う際には、この終端アドレスの次のアドレスから、データを書き込む。
 (1)システム構成
 図1は、第1の実施例に係るストレージ装置1を含む計算機システムの構成例を示している。ストレージ装置1は、ストレージコントローラ10と、ストレージコントローラ10に接続された複数の記憶デバイス20を有する。
 記憶デバイス20は、ストレージ装置1がホスト2などの上位装置からのライトデータを記憶するために用いられる。記憶デバイスとしては、たとえば磁気ディスクを記憶媒体として用いるHDD(Hard Disk Drive)25や、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として採用したSSD(Solid State Drive)21が用いられる。あるいはDVD-RW(22)等のリムーバブルストレージメディアが用いられてもよい。記憶デバイス20は一例として、SAS(Serial Attached SCSI)規格に従う伝送線(SASリンク)や、PCI(Peripheral Component Interconnect)規格に従う伝送線(PCIリンク)などによって、ストレージコントローラ10と接続される。
 ストレージコントローラ10には、1以上のホスト2が接続される。またストレージコントローラ10には、管理ホスト5が接続される。ストレージコントローラ10とホスト2とは、一例としてファイバチャネルを用いて形成されるSAN(Storage Area Network)3を介して接続される。ストレージコントローラ10と管理ホスト5とは、一例としてイーサネットを用いて形成されるLAN(Local Area Network)6を介して接続される
 ストレージコントローラ10は少なくとも、プロセッサ(CPUとも呼ばれる)11、ホストインタフェース(「ホストI/F」とも呼ばれる)12、デバイスインタフェース(「デバイスI/F」とも呼ばれる)13、メモリ14、管理用I/F15、圧縮回路(圧縮部とも呼ばれる)16を有する。そしてプロセッサ11、ホストI/F12、デバイスI/F13、メモリ14、管理用I/F15、圧縮部16は、内部スイッチ(内部SWとも呼ばれる)17を介して相互接続されている。図1ではこれらの構成要素がそれぞれ1つだけ示されているが、高性能化及び高可用性の確保のため、これらの構成要素のそれぞれがストレージコントローラ10内に複数搭載されていてもよい。また内部SW17ではなく、共通バスを介して各構成要素が相互接続された構成にしてもよい。
 デバイスI/F13は少なくとも、インタフェースコントローラと転送回路を有する。インタフェースコントローラは、記憶デバイス20で用いられているプロトコル(一例ではSAS)をストレージコントローラ10内部で用いられている通信プロトコル(一例としてPCI-Express)に変換するためのコンポーネントである。転送回路は、ストレージコントローラ10が、記憶デバイス20に対してデータの転送(リード、ライト)を行う際に用いられる。
 ホストI/F12は、デバイスI/F13と同様に、少なくともインタフェースコントローラと転送回路を有する。ホストI/F12が有するインタフェースコントローラは、ホスト2とストレージコントローラ10間のデータ転送経路で用いられている通信プロトコル(たとえばファイバチャネル)と、ストレージコントローラ10内部で用いられている通信プロトコルを変換するためのものである。
 プロセッサ11は、ストレージ装置1の各種制御を行う。メモリ14は、プロセッサ11が実行するプログラム(ストレージ制御プログラムと呼ぶ)や、プロセッサ11が使用するストレージ装置1の各種管理情報を記憶するために用いられる。
 本明細書では、ストレージ装置1(またはストレージコントローラ10)が、デステージ処理や移動判定処理(後述)等の処理を実施する、という表現が用いられている箇所がある。これをより正確に表現すると、ストレージ制御プログラムがプロセッサ(CPU)11で実行されることによって、CPU11がホストI/F12、デバイスI/F13、メモリ14や圧縮回路16を用いてこれらの処理を行う、という表現になるが、説明が冗長になることを避けるため、以下の説明では、ストレージコントローラ10(またはストレージ装置1)がこれらの処理を実施する、と表現することもある。
 またメモリ14は、記憶デバイス20に対するI/O対象データを一時的に記憶するためにも用いられる。以下、記憶デバイス20に対するI/O対象データを一時的に記憶するために用いられる、メモリ14中の記憶領域のことを、「キャッシュメモリ」または「キャッシュ」と呼ぶ。メモリ14には、DRAM、SRAM等の揮発性記憶媒体が用いられるが、別の実施形態として、不揮発性メモリを用いてメモリ14を構成してもよい。また、メモリ14に揮発性記憶媒体が用いられる場合、ストレージ装置1にバッテリ等の補助電源を搭載し、停電時にメモリ14の記憶内容を維持できるように構成されていてもよい。
 管理ホスト5は、ストレージ装置1の管理操作を行うための計算機である。管理ホスト5は、キーボードやディスプレイ等の入出力デバイス(非図示)を備え、ユーザ(管理者)は入出力デバイスを用いてストレージ装置1に対する設定指示を行うことができる。また管理ホスト5は、ストレージ装置1の状態等の情報をディスプレイ等の出力デバイスに表示することもできる。
 圧縮部(圧縮回路)16は、データの圧縮、または圧縮されたデータの伸長を行う機能を備えたハードウェアである。ストレージ装置1は、記憶デバイス20に格納されるデータの一部(または全部)を、圧縮部16を用いて圧縮することができる。圧縮部16は、ASIC(Application Specific Integrated Circuit)等のハードウェアで実装される.ただし、圧縮部16にプロセッサとメモリを設け、プロセッサでデータ圧縮を行うためのプログラムを実行させることで、圧縮部16がデータの圧縮または伸長を行うように構成されていてもよい。あるいは、圧縮部(圧縮回路)16のような専用のハードウェアをストレージコントローラ10に設けずに、CPU11でデータ圧縮を行うためのプログラムを実行させることで、CPU11にデータの圧縮または伸長を行わせるようにしてもよい。
 (2)記憶領域の管理
 続いて、本実施例に係るストレージ装置1が管理する記憶領域について説明する。本実施例に係るストレージ装置1が有する1以上の記憶デバイス20は、所定サイズの記憶空間をストレージコントローラ10に提供する。ストレージコントローラ10は、記憶デバイス20の提供する記憶空間を直接ホスト2には提供しない。ストレージコントローラ10はホスト2に、記憶デバイス20の提供する記憶空間とは異なる、1以上の仮想的な記憶空間を提供する。この仮想的な記憶空間を「仮想ボリューム」と呼ぶ。なお、ストレージコントローラ10は複数の仮想ボリュームをホスト2に提供可能だが、以下では特に断りのない限り、ストレージコントローラ10が仮想ボリュームを1つ、ホスト2に提供する例について説明する。
 ストレージ装置1は、仮想ボリュームの記憶空間を、複数の所定サイズ(一例として42MB)の部分領域に分割して管理している。本実施例では、この部分領域のことを「仮想ページ」と呼ぶ。なお、以下では仮想ページのサイズが42MBの場合について説明するが、仮想ページのサイズはこれ以外のサイズであってもよい。仮想ボリュームは、公知のThin Provisioning技術などを用いて形成されるボリュームであり、ストレージ装置1は仮想ボリュームの仮想ページに対するアクセス要求を受け付けた時点で、記憶デバイス20の記憶領域を動的に仮想ページに割り当てる(マップする)。
 ストレージ装置1がホスト2から、仮想ボリュームの仮想ページに対するライト要求を受信すると、ストレージ装置1は、記憶デバイス20の記憶領域のうち未使用の領域(まだ仮想ページに割り当てられていない領域)を選択し、アクセス対象の仮想ページに、選択された領域を割り当てる(マップする)。ホスト2からのライトデータは、このアクセス対象仮想ページにマップされた領域(ページ)に格納される。またストレージ装置1は、仮想ページと、仮想ページに割り当てられた記憶領域との対応関係(マッピング)をマッピングテーブル(本実施例では仮想ボリューム管理テーブル100と呼ばれる)に記憶している。仮想ページに対するリード要求を受け付けた時には、ストレージ装置1はマッピングテーブルを参照することで、仮想ページに割り当てられた記憶領域を特定し、特定された記憶領域からデータを読み出す。
 図2に、仮想ボリュームと、仮想ボリュームに割り当てられる記憶領域の関係の例を示す。本実施例では、複数の記憶デバイス20の記憶領域のうち、仮想ボリュームに割り当てるための記憶領域の集合を「プール」と呼ぶ。プール内の記憶領域は、仮想ページと同サイズの部分領域に区分されて管理される。この仮想ページと同サイズの部分領域のことを、「物理ページ」または「ページ」と呼ぶ。
 図2に示されている長方形状のオブジェクト40は、仮想ボリュームの記憶空間を表す。また円柱状のオブジェクト50はプールを表す。
 各仮想ページには、仮想ページ番号(VP#と表記されることもある)と呼ばれる、一意な識別番号(識別番号には非負の整数値が用いられる)が付される。以下では、仮想ページ番号がn(nは非負の整数値)の仮想ページのことを、「VP#n」と表記する。同様に各物理ページには、物理ページ番号(またはページ#)と呼ばれる、ストレージ装置1内で一意な識別番号が付される(この識別番号も非負の整数値である)。以下では、物理ページ番号がn(nは非負の整数値)の物理ページのことを、「ページ#n」と表記する。
 仮想ボリュームが定義された直後は、仮想ボリュームの各仮想ページには、ページがマップされていない。ストレージコントローラ10は、ホスト2から仮想ページ上の領域に対するライト要求を受信した時にはじめて、当該領域を含む仮想ページに対して割り当てるべき物理ページを決定する。ここで決定される物理ページは、まだどの仮想ページにも割り当てられていないページ(未使用ページ)のなかから、任意の1つのページが選択される。図2の例では、VP#0にページ#1がマップされ、VP#1にページ#0がマップされた例が示されている。
 ストレージ装置1がホスト2から、仮想ページ内の領域(1または複数のブロック)に対するライト要求(及びライトデータ)を受け付けた場合、仮想ページにマップされている物理ページ内のブロックにライトデータが格納される。本実施例に係るストレージ装置1では原則として(後述する、圧縮データ格納のケースを除いて)、仮想ページの先頭からn番目のブロックに対してライト要求のあったライトデータは、仮想ページにマップされている物理ページの先頭からn番目のブロックに格納されるという関係にある。そのため、ストレージ装置1は、仮想ページと、仮想ページに割り当てられた記憶領域(物理ページ)とのマッピングだけを、マッピングテーブルに記録しておけば、仮想ボリューム上の任意のブロックにマップされている、記憶デバイス20上記憶領域を一意に特定できる。
 ただし、ページに圧縮データが格納される場合には、この限りではない。図2において、VP#2、VP#3は、圧縮データが格納される場合の例を表しているが、その場合、仮想ページの先頭からn番目のブロックに対して書き込まれたデータが、物理ページのn番目のブロックに書き込まれるというような、規則的な関係は維持されない。詳細は後述する。
 図3はプール管理テーブル200の例を示している。プール管理テーブル200は、プール、つまり仮想ボリュームに割り当てるための記憶領域の集合を管理するテーブルで、メモリ14に格納されている。プール管理テーブル200の各行(レコード)には、プール内の物理ページの情報が格納される。各レコードは、ページ#(201)、DEV#(202)、Addr(203)、type(204)、use(205)の欄を有する。ページ#(201)には、物理ページのページ番号が格納される。つまりページ#(201)がnのレコードは、ページ#nの情報を管理するレコードである。
 DEV#(202)とAddr(203)には、物理ページの属する記憶デバイスの識別番号及び記憶デバイス内のアドレスが格納される。type(204)には、物理ページの属する記憶デバイスの種別(たとえばHDD、SSD等)が格納される。use(205)には、物理ページの使用状況を表す情報が格納される。物理ページが仮想ページにマップされている場合、use(205)には“1”が格納される。逆に物理ページが仮想ページにマップされていない場合、use(205)には“0”が格納される。
 なお、本実施例では、プール50に、記憶デバイス20(たとえばHDD)の記憶領域が登録され、各ページが、1つの記憶デバイス20内の記憶領域から構成される例を示しているが、これ以外のプールの構成方法もあり得る。たとえばストレージ装置1がRAID(Redundant Arrays Of Independent (or Inexpensive) Disks)技術を用いて、複数の記憶デバイス20から1つの論理的な記憶デバイス(論理デバイスと呼ぶ)を形成する場合、論理デバイスの記憶領域がプールに登録されるようにしてもよい。その場合、プール管理テーブル200のDEV#(202)とAddr(203)には、論理デバイスの識別番号と、論理デバイス内のアドレスが格納される。
 図4は、仮想ボリューム管理テーブル100の例を示している。仮想ボリューム管理テーブル100もメモリ14に格納されている。仮想ボリューム管理テーブル100の各レコードには、仮想ボリューム内の仮想ページについての情報が格納される。具体的には各レコードには、仮想ページ#(101)、ホストLBA(102)、ページ配置(103)、ページ#(104)、更新有無(105)、連続更新無し期間(107)、割当量(111)の情報が格納される。
 仮想ページ#(101)には、仮想ページの仮想ページ番号が格納される。ホストLBA(102)には、仮想ページ内の先頭ブロックに対応するLBA(ホストLBA)が格納される。つまり仮想ボリューム管理テーブル100の各レコードは、仮想ページ#(101)で特定される仮想ページが、ホストLBA(102)を開始アドレスとする1ページ分(42MB)の領域に相当することを表している。図4の例では、仮想ページ#(101)が1のレコードのホストLBA(102)は“00015000”であるから、仮想ボリュームのホストLBAが00015000~00019fffの領域がVP#1に対応することを表している。
 ページ#(104)には、仮想ページに割り当てられている物理ページのページ#が格納される。物理ページが割り当てられていない場合、ページ#(104)には無効値(null。たとえば“-1”等の、通常はページ番号として用いられない値)が格納される。
 なお、ここで説明している仮想ボリューム管理テーブル100の例は、ストレージ装置1に仮想ボリュームが1つ定義された場合の例を示している。ストレージ装置1に仮想ボリュームが複数定義される場合、仮想ボリューム上の領域を一意に特定可能にするために、ホストLBA(102)の他に、仮想ボリュームの識別子(たとえばホスト2がボリュームを特定するために用いる識別番号であるLogical Unit Number(LUN)等)も、仮想ボリューム管理テーブル100に含まれる。
 更新有無(105)には、所定期間(たとえば1日間)仮想ページにライト要求がなかった場合には「無」が格納され、所定期間の間に仮想ページにライト要求があった場合には「有」が格納される。連続更新無し期間(107)には、仮想ページにライト要求がなかった期間が格納される。
 ページ配置103と割当量(111)について説明する前に、本実施例に係るストレージ装置1で行われるページ圧縮についての説明を行う。ストレージ装置1が、ホスト2から仮想ボリュームの仮想ページに対するデータの書き込み要求を受け付けると、その仮想ページにページがマッピングされていない場合には、その仮想ページにページをマッピングした後、データをそのまま(圧縮処理を行わずに)ページに書き込む。その後ストレージ装置1は、ページの状態に応じて、ページ内のデータを圧縮する。
 本実施例では、ストレージ装置1が、「ある定められた期間以上、ページに書き込み(更新)が行われなかった状態」のページを検出した場合、そのページ内のデータを圧縮する例を説明する。ただし、ページ内データの圧縮を行う条件として、これ以外の条件が用いられてもよい。たとえば外部(管理ホスト5やホスト2等)から、圧縮を行うページが指定された場合に、そのページ内のデータを圧縮するようにしてもよい。
 ページに格納された、圧縮処理の行われていない状態のデータ(非圧縮データ)を圧縮した場合、圧縮されたデータは、非圧縮データの格納されていたページとは異なるページに格納される。以下では、非圧縮データの格納されるページのことを「上書きページ」と呼び、圧縮データの格納されるページは「追書きページ」と呼ぶ。追書きページは、圧縮ページと呼ばれることもある。本実施例に係るストレージ装置1では、追書きページもプール50内のページ(プール管理テーブル200で管理されているページ)である。ただしストレージ装置1は、上書きページと追書きページを区別できるよう、追書きページのみを管理するテーブル(追書きページ管理テーブル)を持つ。詳細は後述する。
 データを圧縮する際、ストレージ装置1は仮想ページ(または上書きページ)内の所定サイズの部分領域ごとに圧縮を行う。本実施例に係るストレージ装置1では、仮想ページ内の領域を、仮想ページの先頭から順に8KBの部分領域に区分し、この部分領域ごとにデータ圧縮を行う。本実施例では、この8KBの部分領域は「セグメント」と呼ばれる。なお、部分領域の大きさには、8KB以外の大きさが採用されてもよい。
 たとえばVP#2にマッピングされているページ(上書きページ)のデータを圧縮する場合、ストレージコントローラ10はVP#2にマッピングされているページの先頭からデータを8KBずつ読み出して、圧縮回路16を用いて、読み出された8KBのデータをそれぞれ圧縮する。8KBのデータを圧縮することで生成されたデータの塊(チャンク)を「圧縮セグメント」と呼ぶ。そしてストレージコントローラ10は圧縮セグメントを追書きページへと格納する。原則として、上書きページのデータを圧縮する場合、上書きページ内の全データが圧縮され、追書きページへと移動される。
 1つの追書きページには、複数の上書きページのデータ(圧縮セグメント)を格納することができる。図2の例では、VP#2に書き込まれたデータ(正確にはVP#2にマッピングされている上書きページに格納されたデータ)とVP#3に書き込まれたデータが、追書きページであるページ#2に移される例を示している。
 図4のページ配置103と割当量(111)の説明に戻る。あるレコードのページ配置103に「上書き」が格納されている場合、そのレコードで管理されている仮想ページのデータは、上書きページに格納されていることを意味する。またレコードのページ配置103に「追書き」が格納されている場合、そのレコードで管理されている仮想ページのデータは、追書きページに格納されていることを意味する。レコードのページ配置103に「追書き」が格納されている場合、そのレコードのページ#(104)には無効値(null)が設定される。
 各レコードの割当量111には、そのレコードで管理されている仮想ページのデータ量が格納される。仮想ページのデータが圧縮されていない場合には、割当量111にはページ(または仮想ページ)のサイズと同サイズ(たとえば42MB)が格納される。仮想ページのデータが圧縮されている場合には、割当量111には仮想ページのデータの圧縮後のサイズが格納される。図4の例では、仮想ページ#(101)が“2”のレコード(つまりVP#2の管理情報が格納されたレコード)の割当量111は10MBであるから、VP#2のデータは10MBに圧縮されたことを意味している。
 仮想ページのデータが追書きページに移された場合、仮想ページにマッピングされている記憶領域の管理を行うには、ページよりも細粒度での管理が必要になる。そのため本実施例に係るストレージ装置1は、データが追書きページに移された仮想ページについてのマッピング情報を管理するためのテーブル(LBA管理テーブル)を有する。図5にLBA管理テーブル120の例を示す。LBA管理テーブル120は、ホストLBA121、データ長122、データ格納位置123のカラムを有する。LBA管理テーブル120もメモリ14に格納される。
 LBA管理テーブル120の各レコードには、仮想ページ内のセグメントにマッピングされている記憶領域の情報が格納される。ホストLBA121には、仮想ページ内セグメントの先頭ブロックのホストLBAが格納される。データ格納位置123には、追書きページ上の位置情報が格納される。データ格納位置123に格納される位置情報として、物理ページ番号と、物理ページ内の相対アドレスのセットが用いられる。物理ページ内の相対アドレスとは、物理ページ内先頭ブロックのアドレスを0としたときのオフセットアドレスである。たとえばページ#n(nは整数値)の先頭からk番目のブロックの位置情報が格納される場合、(n,(k-1))が格納される。
 データ長122には、圧縮データのサイズが格納される。つまり各レコードは、仮想ボリューム(仮想ページ)内の領域のうち、ホストLBA121で特定されるアドレスから始まる8KBの領域に対して、データ格納位置123から始まる、長さがデータ長122の領域がマッピングされている(かつこの領域に圧縮されたデータが格納されている)ことを表している。
 図6に追書きページ(圧縮ページ)管理テーブル130と最終書き込み位置134の例を示す。追書きページ管理テーブル130は、追書きページとして確保されているページを管理するためのテーブルで、メモリ14に格納されている。追書きページ管理テーブル130は、相対アドレス131、ページ#(132)、ホストLBA(133)のカラムを有する。ページ#(132)カラムに記録されているページ番号の物理ページが、追書きページとして確保されていることを表す。相対アドレス131は、ページ#(132)で特定される物理ページ内の相対アドレスが格納される。
 そして相対アドレス131、ページ#(132)で特定されるブロックが、ホストLBA(133)を開始アドレスとする、8KBの仮想ボリューム上領域にマッピングされていることを表す。なお、圧縮データのサイズは不定のため(データ内容により変動する)、ホストLBA(133)を開始アドレスとする、8KBの仮想ボリューム上領域に、複数のブロックがマッピングされることもある。たとえば圧縮データのサイズが1KBの場合、ホストLBA(133)が同じで、相対アドレス131、ページ#(132)が異なるレコードが2つ存在する。
 仮想ボリューム管理テーブル100、プール管理テーブル200、追書きページ管理テーブル130を維持することで、ストレージ装置1は、プール内の記憶領域を追書きページと上書きページに分けて管理することができる。仮想ボリューム管理テーブル100の中で、ページ配置(103)が「上書き」の仮想ページにマッピングされているページ(ページ#(104)で特定されるページ)が上書きページであり、また追書きページ管理テーブル130内のページ#(132)にページ番号が記録されているページが追書きページである。上書きページでも追書きページでもないページ(プール管理テーブル200内で、use(205)が“0”のページ)は、上書きページにも追書きページにもなり得る。
 なお、上書きページとして用いられる記憶領域と、追書きページとして用いられる記憶領域は、同一の記憶デバイス20に属する記憶領域でもよい。ただし、上書きページとして用いられる記憶領域と、追書きページとして用いられる記憶領域が、それぞれ異なる記憶デバイス20に属する記憶領域になるようにしてもよい。また追書きページの集合を「追書きプール」と呼ぶこともある。
 また、ストレージコントローラ10は、最終書き込み位置134も管理する(メモリ14上に保持される)。最終書き込み位置134は、最後に圧縮セグメントが書き込まれた領域の位置を示しており、ストレージコントローラ10は追書き時に、最終書き込み位置134に基づいて圧縮セグメントの書き込み先を決定する。最終書き込み位置134の次のアドレスが追書きページの未使用領域の先頭位置に相当し、最終書き込み位置134以前の領域は、圧縮セグメントが格納されている領域(あるいは過去に圧縮セグメントが格納されていた領域)である。ストレージコントローラ10が追書きページに圧縮セグメントを書き込む際、最終書き込み位置134の次のアドレスから圧縮セグメントを書き込む(つまり追記する)。圧縮セグメントの書き込みの後、ストレージコントローラ10は最終書き込み位置134を更新する。
 続いて、ストレージコントローラ10が追書きページに対するリード・ライトを行う時に、どのように上で説明した各管理テーブル(LBA管理テーブル120や追書きページ管理テーブル130等)を用いるか、概説する。まずストレージ装置1がホスト2から、追書きページにマッピングされた仮想ページ上領域へのリード要求を受領した時の処理の概要を説明する。
 ストレージ装置1がホスト2からリード要求を受領すると、ストレージコントローラ10はリード要求に含まれるリード先アドレス(LBA)からVP#を算出する。以下では仮に、VP#がkであった場合の例を説明する。続いてストレージコントローラ10は仮想ボリューム管理テーブル100を参照し、VP#kのページ配置103が「追書き」であった場合には、LBA管理テーブル120を参照することによりリード対象データの格納位置(データ格納位置123、データ長122)を特定する。リード対象データのデータ格納位置123とデータ長122が特定されると、これとプール管理テーブル200を参照することで、ストレージコントローラ10は、リード対象データがどの記憶デバイスのどの領域に格納されているかを特定することができる。
 ストレージコントローラ10は特定された記憶デバイスからリード対象データを読み出す。読み出されたデータは圧縮されているので、ストレージコントローラ10は圧縮回路16を用いてデータを伸長し、伸長されたデータをホスト2に返却する。
 またストレージ装置1は、データが追書きページに移された仮想ページへの、ホスト2からの更新要求も受け付け可能である。ストレージ装置1がホスト2から、追書きページのマッピングされている仮想ページへの書き込み(更新)要求を受け付けた場合に行われる処理について概説する。なおここでは、書き込み要求で指定されたデータ書き込み範囲は、セグメント境界に一致している場合を想定する。
 この時、ストレージコントローラ10はホスト2から受領したライトデータ(更新データ)を圧縮して圧縮セグメントを生成する。以下では、この圧縮セグメントのことを「更新後圧縮セグメント」と呼ぶ。一方ライトデータ(更新データ)の更新前データは、追書きページに圧縮状態で記録されている。この追書きページに記録されている圧縮状態の更新前データのことは「更新前圧縮セグメント」と呼ぶ。
 上で述べたように、更新後圧縮セグメントは、追書きページに格納されている終端の圧縮セグメントの後に追記される。そしてストレージコントローラ10はLBA管理テーブル120と追書きページ管理テーブル130の更新を行う。
 LBA管理テーブル120と追書きページ管理テーブル130の更新について概説する。以下では、ライトデータ(更新データ)の書き込み先のホストLBAがx、そして更新後圧縮セグメントの書き込み先のページ番号と相対アドレスの組が(y、z)の場合、そして更新前圧縮セグメントが格納されている領域のページ番号と相対アドレスの組が(y’、z’)であった場合の例について説明する。この場合、LBA管理テーブル120のレコードのうち、ホストLBA(121)がxのレコードについて、データ格納位置123には(y、z)が書き込まれ、データ長122には、圧縮セグメントのサイズが格納される。
 また、追書きページ管理テーブル130中の、ページ#(132)がy、相対アドレス(131)がzのレコードの、ホストLBA(133)にxが格納される。そして追書きページ管理テーブル130中の、ページ#(132)がy’、相対アドレス(131)がz’のレコードの、ホストLBA(133)の値は“null”に変更される。つまり更新前圧縮セグメントの格納されていた領域は、仮想ページにマッピングされていない領域に変更される。
 更新前圧縮セグメントが格納されている記憶領域に更新後圧縮セグメントを格納(上書き)しない理由は、更新後圧縮セグメントのサイズが、更新前圧縮セグメントのサイズと異なる場合があるためである。特に更新後圧縮セグメントのサイズが、更新前圧縮セグメントのサイズより大きい場合、更新前圧縮セグメントが格納されている記憶領域に更新後圧縮セグメントを上書きできない。本実施例に係るストレージ装置1では、更新後圧縮セグメントを追書きページに追記格納することで、この問題を解決している。
 なお、ライトデータのサイズがセグメントのサイズより小さい場合、ストレージコントローラ10は追書きページに格納された圧縮セグメントを読み出し、圧縮回路16を用いて伸長し、キャッシュメモリ上に伸長されたデータを格納する。そしてストレージコントローラ10は、ホスト2から受領したライトデータをキャッシュメモリ上の伸長データに上書きし、圧縮回路16を用いて上書きされた伸長データを圧縮することで、更新後の圧縮セグメントを作成する。更新後の圧縮セグメントはやはり、追書きページの未使用領域に追記される。
 また、上の説明は、各管理テーブル(LBA管理テーブル120や追書きページ管理テーブル130等)の使用方法を中心に説明するためのものである。そのため、特に仮想ページに対してホスト2からの書き込み(更新)要求を受け付けた場合に、ストレージコントローラ10で実際に行われる処理は、上で説明したものとやや異なる点もある。たとえば、データが追書きページに移された仮想ページに対してホスト2からの書き込み(更新)要求を受け付けた場合、条件によっては、データが追書きページから上書きページへと移される等、ここで説明した処理とは異なる処理が行われる。ストレージ装置1が、ホスト2からの書き込み(更新)要求を受け付けた時に行う処理の詳細は後述する。
 続いて、ガベージコレクションについて説明する。最終書き込み位置134が追書きページ管理テーブル130で管理されている領域の終端に達した場合、追書きページへのデータ書き込みはできなくなる。そのためストレージ装置1は、未使用の追書きページを新たに確保するか、追書きページのガベージコレクションを行う必要がある。ガベージコレクションは、追書きページの領域のうち、仮想ページにマッピングされていない領域(未使用領域)を回収し、データのパッキング(追書きページの前方にデータを移動)を行う処理である。
 図6を参照すると、相対アドレス131が1、ページ#(132)が2のブロックに対応するホストLBA133がnullである。そのため、ガベージコレクション処理では、次のブロック(相対アドレス(131)が2、ページ(132)が2のブロック)のデータを、相対アドレス131が1、ページ#(132)が2のブロックに移動し、さらに次のブロック(相対アドレス(131)が3、ページ(132)が2のブロック)のデータを、相対アドレス131が2、ページ#(132)が2のブロックに移動する...、という処理が繰り返し実行されることにより、データのパッキングが行われる。同時にLBA管理テーブル120の更新も行われる。なお、ここではガベージコレクションの概念を簡単に説明するために、1ブロックずつデータを移動する例を説明したが、ここで説明した以外の方法でガベージコレクションが行われてもよい。たとえば処理の効率化のために、複数ブロックをまとめて読み出して移動するようにしてもよい。
 (3)閾値、及び空き領域サイズの管理
 図7に、本実施例に係るストレージ装置1が管理する、閾値テーブル300の内容を示す。閾値テーブル300はメモリ14に格納されている。閾値テーブル300には、圧縮許可閾値301、CM上ページ更新量閾値302が格納される。閾値テーブル300に格納される値は、管理者が管理ホスト5等を用いて設定または変更することになっている。あるいは別の実施形態として、推奨値があらかじめ閾値テーブル300に設定されていても良い。圧縮許可閾値301には、日数(または時間)が格納される。本実施例に係るストレージ装置1は、上書きページが、圧縮許可閾値301で指定される期間以上更新されていなかった場合、その上書きページ内のデータを追書きページに移動する。図7の例では、圧縮許可閾値301に「7日」が格納されているので、この場合ストレージ装置1は、7日以上更新が行われなかった上書きページのデータを、追書きページに移動する。
 CM上ページ更新量閾値302は、追書きページのデータを上書きページに移動する際の契機に関する情報が格納される。本実施例に係るストレージ装置1は、ある追書きページに対する(ホスト2からの)更新データ量が、CM上ページ更新量閾値302で指定されている量以上存在する場合、その追書きページのデータを上書きページに移動する。CM上ページ更新量閾値302には、1ページサイズに対する更新データ量の比率(百分率)が格納される。ただし、比率に代えて、データ量(バイト、MB等)を格納するようにしてもよい。
 図7の例では、CM上ページ更新量閾値302に「70%」が格納されている。そのためストレージ装置1は、追書きページがマッピングされている1つの仮想ページに対し、ホスト2からの更新データを29.4MB(42MB(1ページのサイズ)×70%=29.4MB)以上受領し、それらのデータがキャッシュメモリ上に蓄積された場合、その仮想ページには追書きページに代えて上書きページをマップし、追書きページに格納されていたデータを上書きページに格納するとともに、キャッシュメモリ上の更新データを上書きページに書き込む。詳細は後述する。
 続いて図8に、本実施例に係るストレージ装置1が管理する、空き領域管理テーブル400の内容を示す。空き領域管理テーブル400はメモリ14に格納されている。空き領域管理テーブル400には、空き領域確保割合401、追書きデータ量402、更新用確保可能量403、空き領域使用量404、更新用空き容量405の情報が格納される。空き領域管理テーブル400に格納される情報のうち、空き領域確保割合401はあらかじめ設定されている値(この値は変更不可能な固定値でもよいし、あるいは管理者が管理ホスト5等を用いて設定または変更可能な値であってもよい)であるが、それ以外の値は、上書きページから追書きページに移動されたデータの量などに基づいて、ストレージ装置1が決定(算出)する値である。
 追書きデータ量402は、上書きページから追書きページに移動されたデータの量である。なお本実施例では、このデータ量は圧縮時のデータ量を表す。ただし非圧縮時のデータ量が追書きデータ量402に用いられてもよい。また、追書きページのデータの更新が発生した時、追書きデータ量402の値は再計算される。詳細は後述する。
 空き領域確保割合401は、追書きページ内データに対する更新データを格納するためのページの量を算出するための情報である。この、更新データを格納するためのページ(の集合)のことを、「空き領域」と呼ぶ。本実施例に係るストレージ装置1は、空き領域として確保可能なページの量を追書きデータ量402に基づいて決定する。空き領域確保割合401に格納される値は、追書きデータ量402に対する空き領域のサイズの比率(百分率)である。図8の例では追書きデータ量402が4200MB、空き領域確保割合401は10%であるので、ストレージ装置1は420MB(4200MB×10%)に相当する数のページを空き領域として確保可能である。更新用確保可能量403には、この値(つまり420MB)が格納される。
 空き領域使用量404には、追書きページのうち、更新データの格納されている領域の量が格納される。これには、上書きページから追書きページに移動されたデータの量は含まれない。そのため、上書きページから追書きページに移動されたデータに対する更新が発生しなかった場合には、空き領域使用量404は0である。また空き領域使用量404は追書きページに実際に書き込まれたデータ(更新データ)の合計サイズを表す。そのため、圧縮された更新データが格納される時には、空き領域使用量404は、追書きページに書き込まれた圧縮後更新データの合計サイズに等しい。
 更新用空き容量405には、更新用確保可能量403と空き領域使用量404の差が格納される。なお、更新用確保可能量403は追書きページとして確保してよいページ量の上限値であり、更新用確保可能量403を超える量のページは、空き領域として確保されない。もし追書きページに書き込まれる更新データの量の総和が、更新用確保可能量403以上になる場合(これは更新用空き容量405が0以下になる場合と同じである)、更新データを追書きページに格納(追記)できない。このような場合には、ストレージ装置1は更新が行われた追書きページ内のデータを上書きページに戻す。ストレージ装置1はこのような制御を行うことにより、追書きページを過度に確保しないようにし、また更新頻度が高くなったページが追書きページに留まり続けることを抑制している。
 (4)ライト処理
 続いてストレージ装置1が、ホスト2から仮想ボリュームに対するライト要求及びライトデータを受領した時の処理(ライト処理)の流れを、図9を用いて説明する。なお、ホスト2が発行するライト要求には、ライトデータの書き込み先位置の情報(ホストLBA及びデータ長)が含まれている。ストレージコントローラ10がライト要求を受領すると、CPU11はライト要求に含まれる書き込み先位置の情報から、ライトデータの書き込み先となる仮想ページの仮想ページ番号を算出する(s51)。
 続いてCPU11は、仮想ボリューム管理テーブル100を参照し、s51で特定された仮想ページにページが割り当てられているか判定する(s52)。仮想ボリューム管理テーブル100の仮想ページ#(101)が、s51で特定された仮想ページ番号と等しいレコードのページ#(104)に有効な値(nullでない値)が格納されている場合、あるいは仮想ボリューム管理テーブル100の仮想ページ#(101)が、s51で特定された仮想ページ番号と等しいレコードのページ配置(103)が「追書き」に設定されている場合、s51で特定された仮想ページにページが割り当てられていることを意味する。
 s51で特定された仮想ページにページが割り当てられていない場合(s52:No)、CPU11は、プール管理テーブル200から、未使用のページ(use(205)が“0”のページ)を1つ選択し、選択されたページをライト対象仮想ページに割り当てる(s53)。またs53でCPU11は、選択されたページのページ番号(ページ#(201))を、仮想ボリューム管理テーブル100内のライト対象仮想ページのページ#(104)に格納し、またライト対象仮想ページのページ配置(103)に「上書き」を格納することで、選択されたページをライト対象仮想ページに割り当てる作業を行う。また選択されたページのuse(205)は、“1”に変更される。
 s54でCPU11は、ホスト2から受領したライトデータを一時格納するためのキャッシュメモリ領域の確保を行い、s55でCPU11は、s54で確保されたキャッシュ領域にライトデータを格納する。最後にCPU11は、ライト対象仮想ページの更新有無(105)をセット(「有」を設定)し(s56)、処理を終了する。キャッシュメモリ領域の確保等の処理は公知の処理であるため、説明は略す。また、CPU11はキャッシュメモリ上に格納されたライトデータを管理するための情報(たとえばライトデータの格納先仮想ボリュームのLBA等)も有するが、これも公知の情報であるので、説明を略す。
 図9のライト処理は、ホスト2から受領したライトデータをキャッシュメモリに格納するまでの処理であり、この処理の内容は、書き込み先の仮想ページに上書きページ、追書きページのいずれがマッピングされていても、同じである。また、本実施例に係るストレージ装置1では、キャッシュメモリをいわゆるライトバックキャッシュとして用いる。そのため、ライトデータをキャッシュメモリに格納した直後(図9のs55またはs56の完了後)に、ホスト2にライト処理が完了した旨を通知する。ライトデータがキャッシュメモリに格納されて、しばらく時間が経過した後、CPU11はキャッシュメモリ上のライトデータを記憶デバイス20へ格納する。この処理は、「デステージ」と呼ばれる。
 (5)デステージ処理
 図10を用いてデステージ処理の流れを説明する。図10の処理は定期的に実施される。あるいはキャッシュメモリ上の未使用領域が所定量を下回った時にデステージ処理が実行されるようにしてもよい。最初にCPU11は、キャッシュメモリ上に格納された各データの中から、処理対象のデータを選択する(s501)。データの選択方法は、様々な方法がありえる。一例として、ホスト2からライトされた時刻が最も古いデータを選択する方法がある。その場合、ストレージコントローラ10は、キャッシュメモリ上に格納された各データについて、ホスト2からライトされた時刻を記憶しておく必要がある。
 続いてCPU11は、s501で選択されたデータの書き込み先仮想ページの仮想ページ番号を特定し、その仮想ページのページ配置(103)が「上書き」か「追書き」か判定する(s502)。ページ配置(103)が「上書き」の場合(s502:No)、データの書き込み先仮想ページには上書きページがマッピングされている。そのためCPU11は、s501で選択されたデータのデステージ先の領域、つまり仮想ページにマッピングされている上書きページ上領域(記憶デバイス20上の領域である)を特定し、特定されたデステージ先領域にデータをデステージし(s511)、処理を終了する。デステージ先の領域を特定するには、仮想ボリューム管理テーブル100のページ#(104)を参照することでページ#を特定し、その後プール管理テーブル200の中から、ページ#(201)が特定されたページ#と等しいレコードの、DEV#(202)、Addr(203)を参照すればよい。
 ページ配置(103)が「追書き」の場合(s502:Yes)、データの書き込み先仮想ページには追書きページがマッピングされている。この場合CPU11は、キャッシュメモリ上のデータのうち、書き込み先仮想ページがs501で選択されたデータの書き込み先仮想ページと同じであるデータをすべて選択する。以下では、ここで選択されたデータを「デステージ対象データ」と呼び、また選択されたデータの書き込み先仮想ページのことを「デステージ対象仮想ページ」と呼ぶ。そしてデステージ対象データの量が、CM上ページ更新量閾値302以上であるかを判定する(s503)。デステージ対象データの量がCM上ページ更新量閾値302以上の場合(s503:Yes)、CPU11はデステージ対象仮想ページにマッピングされている追書きページのデータを上書きページに移動する(s504)。
 s504では、具体的には以下の処理が行われる。CPU11は追書きページ(に相当する記憶デバイス20上領域)から、s501で選択されたデータの書き込み先仮想ページ番号と同じ仮想ページに属するデータをキャッシュメモリ上に読み出す。この時、キャッシュメモリ上にデータが格納されている領域については、追書きページから読み出す必要はない。またデータをキャッシュメモリ上に読み出す際に、CPU11は圧縮回路16を用いてデータの伸長を行い、キャッシュメモリには伸長されたデータを格納する。
 続いてCPU11はデステージ対象仮想ページへのページ割り当てを実施する。ここで割り当てられるページは上書きページであり、ここではs53と同じ処理が行われる。その後CPU11は割り当てた上書きページにデータをデステージし、処理を終了する。なお、s504のデステージと同時に、LBA管理テーブル120、追書きページ管理テーブル130の更新も行われる。具体的には、ホストLBA121が、デステージ対象仮想ページの範囲内の値であるレコードを、LBA管理テーブル120から削除する。また、追書きページ管理テーブル130内のレコードのうち、ホストLBA133の値がデステージ対象仮想ページの範囲内に含まれるレコードについて、ホストLBA133をnullに変更する。
 s504の処理の概念について、図11を用いて説明する。図11は、追書きページから上書きページにデータを移動する処理の概念図である。図11(1)は、追書きページがマッピングされている仮想ページに対するホスト2からの更新データが、キャッシュメモリに所定量(CM上ページ更新量閾値302)以上蓄積されている状態を表している。仮想ページ上の領域A、B、C、Dのうち、領域B、C、Dに対してホスト2から書き込みがあり、ライトデータ(更新データ)がキャッシュメモリ上に蓄積されている(領域A、B、C、Dはそれぞれ、1つのセグメント、あるいは複数セグメントの集合である)。また図11(1)に記載の仮想ページには追書きページがマッピングされており、仮想ページ上の領域A、B、C、Dに対応付けられる圧縮セグメントはそれぞれ、圧縮セグメント(a)、(b)、(c)、(d)である。
 仮想ページ、キャッシュメモリ上のデータ、追書きページが、図11(1)の状態にある場合、s504で行われるデータ移動の方法を表した図が、図11(2)である。CPU11は圧縮セグメント(a)を追書きページから読み出し、伸長した後、上書きページ(の領域(A))に書き込む(この時、伸長したデータを一旦キャッシュメモリ上に格納してもよい)。一方追書きページの圧縮セグメント(b)、(c)、(d)は、追書きページから読み出す必要はない。代わりに、キャッシュ上のデータ(B、C、Dのデータ)が上書きページにデステージされる。
 s504ではこのように、更新データ量が多い仮想ページについて、追書きページから上書きページへのデータ移動が行われるので、データ圧縮処理のオーバヘッドを削減することができる。また記憶デバイス上の追書きページから読み出される圧縮データの量は最小限に抑えられるので、記憶デバイスからのデータ読み出し処理のオーバヘッド及び読み出したデータの伸長処理のオーバヘッドを削減することができる。
 図10の説明に戻る。s503の判定において、データの量が所定値未満の場合(s503:No)、CPU11はデステージ対象データを圧縮し(s505)、圧縮データのサイズを更新用空き容量405と比較することで、デステージ対象データ(圧縮後)を格納可能な空き領域が存在するか判定する。デステージ対象データを格納可能な空き領域が存在しない場合(s506:Noのケース。これは言い換えれば、デステージ対象データを格納すると更新用確保可能量403を超過してしまう場合である)、CPU11はデステージ対象データの書き込み先仮想ページにマッピングされている追書きページのデータを伸長して上書きページに戻す(s509)。s509の処理はs504と同じである。つまり、キャッシュメモリ上にデステージ対象データが格納されている領域については追書きページから読み出す必要はない。
 それからCPU11は、空き領域管理テーブル400の内容の更新を行い(s510)、処理を終了する。
 なお、s501で処理対象のデータが複数選択され、かつそれぞれのデータの書き込み先仮想ページが異なる仮想ページであることもあり得る。その場合s509で追書きページからデータを上書きページに移動する際、CPU11は圧縮率の低いページを優先的に選択して、そのページのデータを上書きページに移動するとよい。圧縮率の高いページを優先的に追書きページ(圧縮ページ)に格納するほうが、記憶領域を節約できるからである。
 図4(仮想ボリューム管理テーブル100)の例では、仮想ページ#(101)が4~7の仮想ページ(VP#4~VP#7)にマッピングされているページ(追書きページ)のデータが、上書きページへの移動対象データである(更新有無(105)が「有」だからである)。これらを圧縮率の低い順(割当量(111)が大きい順)に並べ替えると、VP#6、VP#5、VP#7、VP#4である。そのため、VP#6にマッピングされている追書きページを最優先で上書きページに戻し、その後、VP#5、VP#7、VP#4の順で、上書きページにデータを戻す処理を行うとよい。
 デステージ対象データ(圧縮後)を格納可能な空き領域が存在する場合(s506:Yes)、CPU11は、デステージ対象データ(圧縮後)を追書きページに追記し(s507)、空き領域管理テーブル400の内容を更新し(s508)、処理を終了する。s507では追書きページへのデータ(圧縮セグメント)の追記が行われるので、CPU11は先に述べた要領で、LBA管理テーブル120と追書きページ管理テーブル130の更新も行う。
 なお、上では、更新データ(デステージ対象データ)を圧縮してから追書きページに格納(追記)する例(図10のs505~s508)を説明してきた。ただし別の実施形態として、ストレージ装置1は更新データを圧縮せずに追書きページに追記してもよい。その場合、s505の処理は不要で、圧縮処理のオーバヘッドを削減できる。
 (6)上書きページの追書きページへの移動
 続いて、上書きページの移動判定処理について図12を用いて説明する。ここでは、所定の条件(所定期間更新がないか?)を満たしている上書きページを特定し、その上書きページのデータを追書きページに移動する処理が行われる。この処理はCPU11が定期的に、たとえば1日に1回の頻度で実行する。
 最初にCPU11は、仮想ボリューム管理テーブル100を検索することで、上書きページがマッピングされた仮想ページ(つまりページ配置(103)が「上書き」の仮想ページ)を1つ選択する(s1010)。以下、図12の説明において、s1010で選択された仮想ページのことを、「対象仮想ページ」と呼ぶ。続いてCPU11は、対象仮想ページの更新有無(105)が「無」か「有」か判定する(s1020)。
 更新有無(105)が「有」の場合(s1020:No)、CPU11は対象仮想ページの連続更新無し期間(107)を0にする(s1120)。そしてCPU11は対象仮想ページの更新有無(105)を「無」に変更する(s1095)。その後CPU11は、全ての仮想ページに対して処理が行われている場合には(s1100:Yes)、処理を終了し、まだ処理が行われていない仮想ページが残っている場合には(s1100:No)、s1010から処理を繰り返す。
 s1020の判定で、更新有無(105)が「無」の場合(s1020:Yes)、CPU11は対象仮想ページの連続更新無し期間(107)を更新する(s1030)。具体的には、たとえば図12の処理が24時間(1日)ごとに行われる場合には、対象仮想ページの連続更新無し期間(107)に“1”を加算する。
 続いてCPU11は、対象仮想ページの連続更新無し期間(107)が圧縮許可閾値301以上か判定する。対象仮想ページの連続更新無し期間(107)が圧縮許可閾値301以上の場合(s1060:Yes)、CPU11は対象仮想ページにマッピングされている上書きページからデータを読み出して、圧縮回路16を用いて読み出されたデータを圧縮する。そしてCPU11は圧縮されたデータを追書きページに追記し、また先に述べた要領でLBA管理テーブル120と追書きページ管理テーブル130の更新も行う(s1080)。なお、追書きページに追記する前に、CPU11は追書きページ管理テーブル130と最終書き込み位置134を参照することで、圧縮データを追記するために必要な量の未使用追書きページがあるか判定する。未使用追書きページがない場合にはCPU11は、プール管理テーブル200で管理されているページの中から未使用ページ(use(205)が“0”のページ)を選択し、追書きページ管理テーブル130に、選択された未使用ページを登録する。
 その後CPU11は、対象仮想ページの、ページ配置103を「追書き」に、ページ#(104)をnullに、割当量(111)をs1080で圧縮したデータのサイズ(圧縮後のサイズ)に変更する(s1090)。さらにs1090では、CPU11は空き領域管理テーブル400の内容を更新する。なお、これまで対象仮想ページにマッピングされていたページ(上書きページ)について、対象仮想ページへのマッピングが解除される。そのためCPU11は、プール管理テーブル200のレコードのうち、対象仮想ページにマッピングされていたページのuse(205)欄を“0”に更新する。
 s1090の後(あるいは対象仮想ページの連続更新無し期間(107)が圧縮許可閾値301未満の場合(s1060:No)にはs1060の後)、CPU11はs1095、s1100を実行する。全ての仮想ページに対して処理が行われている場合には(s1100:Yes)、処理を終了し、まだ処理が行われていない仮想ページが残っている場合には(s1100:No)、s1010から処理を繰り返す。
 (7)空き領域管理テーブルの更新
 空き領域管理テーブル400の更新が行われる箇所、つまりs504、s508、s510、そしてs1080での処理内容について、図13を用いて説明する。図13は、ある仮想ページ(以下では、「仮想ページV」と呼ぶ)にマッピングされている上書きページのデータが追書きページに移動された時の、ページ(特に追書きページ)の状態変化を概念的に表している。図13(1)は、仮想ページVにマッピングされている上書きページを表している。
 図13(1)の領域A、B、Cはそれぞれ、1または複数セグメントで構成されている。図13(2)は、図13(1)の上書きページのデータ移動先となる追書きページを表している。図13(2)の領域(a)、(b)、(c)にはそれぞれ、領域A、B、Cから移動されたデータ(圧縮後)が格納されている。
 そして図13(3)は、図13(2)の領域(b)への更新が発生し(ホスト2から、領域(b)がマッピングされている仮想ページV上領域に対する更新データを受け付けた場合である)、更新データが領域(b’)に追記された場合の例を表している。この時、領域(b)は無効な領域(仮想ページにマッピングされていない領域)になる。図13(4)は、追書きページのデータ(領域(a)、(b’)、(c)内のデータ)が上書きページに移動された場合の例を表している。
 以下、図13(1)~(4)のようにページの状態が変化する時の、空き領域管理テーブル400の内容の変化について説明する。なお、以下の説明では、領域(a)、(b)、(b’)、(c)のサイズをそれぞれ、a、b、b’、cとし、空き領域確保割合401をpとする。また以下では説明を簡単にするため、仮想ページVにマッピングされたページのデータだけが、追書きページに格納されている場合の例を説明する。
 まず、上書きページから追書きページにデータが移動される場合(ページの状態が図13の(1)から(2)の状態に遷移する時)について説明する。これは図12のs1080、s1090が実行される時である。CPU11はs1090で、空き領域管理テーブル400の追書きデータ量402に、“a+b+c”(上書きページから移動された1ページ分のデータの圧縮後のサイズである)を格納(加算)する。
 また追書きデータ量402が変更されることに伴い更新用確保可能量403も更新される。更新用確保可能量403には、追書きページに移動されたデータ量(a+b+c)に、空き領域確保割合401(p)を乗じた値が格納(加算)される。その結果、更新用確保可能量403は、“(a+b+c)×p”になる。さらに更新用空き容量405は、更新後の更新用確保可能量403から、空き領域使用量404を減算した値(つまり“(a+b+c)×p”である)に更新される。
 続いて、追書きページのデータが更新された場合(ページの状態が図13の(2)から(3)の状態に遷移する時)について説明する。これは図10のs507、s508が実行される時である。図13(3)の状態の時、領域(b)は無効になり、領域(b)に代わって領域(b’)が格納されている。この場合には、追書きデータ量402からは領域(b)のサイズが減算され、代わりに領域(b’)のサイズが加算される。これは、図13(2)の状態の時は、領域(a)、(b)、(c)が仮想ページVにマッピングされているのではなく、領域(a)、(b’)、(c)が仮想ページVにマッピングされているからである。そのためs508でCPU11は、追書きデータ量402の値を“a+c+b’”に更新する。
 また、追書きページに更新データが追記された(領域(b’)にデータが追記された)ため、CPU11は空き領域使用量404に、“b’”を加算する。また追書きデータ量402が変更されることに伴い更新用確保可能量403も更新される。更新用確保可能量403には、追書きデータ量402(つまり“a+c+b’”)に空き領域確保割合401(p)を乗じた値が格納される。さらに更新用空き容量405は、更新後の更新用確保可能量403から、空き領域使用量404(b’)を減算した値(つまり“(a+c+b’)×p-b’”)に更新される。
 次に、追書きページから上書きページにデータが移動される場合(ページの状態が図13の(3)から(4)の状態に遷移する時)について説明する。これは図10のs504またはs510が実行される時である。ここでは、領域(a)、(b’)、(c)のデータが上書きページに移動される。そのためs504またはs510では、CPU11は空き領域管理テーブル400の追書きデータ量402から、領域(a)、(b’)、(c)のサイズ(つまり“a+c+b’”)を減算し、そして更新用確保可能量403から、(a+c+b’)×pを減算する。また空き領域使用量404は変更されない。更新用空き容量405はその他のケースと同様、更新後の更新用確保可能量403から、空き領域使用量404を減算した値に更新される。図13(4)の場合のように、更新用空き容量405が負の値になることもある。
 図13(4)の状態に遷移する場合、空き領域使用量404は変更(削減)されない(b’のままである)。領域(b’)には有効なデータは格納されていないが、追書きページへのデータ書き込みは追記書きしか許されていないため、領域(b’)に更新データを書き込めないためである。空き領域使用量404の削減される契機は、ガベージコレクションが行われる時である。ガベージコレクションが行われた後、CPU11は空き領域使用量404を0に変更し、併せて更新用空き容量405も変更する(更新用確保可能量403から空き領域使用量404を減算した値に変更する)。
 またガベージコレクションで、未使用領域の回収とデータのパッキングのみが行われる場合、追書きデータ量402は変動しないため、追書きデータ量402、更新用確保可能量403の値は更新されない。ただしガベージコレクションで、追書きデータ量402の変動が発生する処理(たとえば圧縮率の低いデータを上書きページに移動する等の処理)が併せて行われる場合には、追書きデータ量402、更新用確保可能量403の値の更新も行われる。
 本実施例に係るストレージ装置1は、ガベージコレクションを定期的に実行する。ただし、上で説明してきた処理の途中でガベージコレクションが実行されてもよい。たとえばCPU11は、図10のs506で、デステージ対象データを格納可能な空き領域が存在しないと判定されたことを契機にガベージコレクションを実行してもよい。
 以上が、実施例1に係るストレージ装置の説明である。実施例1に係るストレージ装置では、所定条件に合致する仮想ページ(たとえば所定期間以上更新が発生しなかった仮想ページ)にマッピングされているページ(上書きページ)のデータを圧縮し、圧縮データを別のページ(追書きページ)へと移動する。これにより、ストレージ装置のアクセス性能を維持しつつ、記憶領域を節約することができる。
 また実施例1に係るストレージ装置では、追書きページへデータが移動されると、追書きページに移動されるデータ量に基づいて、追書きページ内データに対する更新データを書き込む(追記する)ための空き領域の量を決定する。更新データ量が増加し空き領域がなくなった場合、追書きページのデータを伸長し、上書きページへと戻す。空き領域は更新データの書き込みに用いられ、上書きページ(非圧縮データを格納するページ)へのライトデータの格納には用いられない領域であるため、空き領域を多く確保するとストレージ装置の記憶効率が実質的に減少する。一方空き領域が少ない場合、追書きページのガベージコレクション時の効率(性能)が低下する。実施例1に係るストレージ装置のように空き領域のサイズを制御することで、記憶効率の維持とガベージコレクション性能の両立を図ることができる。
 また実施例1に係るストレージ装置は、ホストからの仮想ページに対する書き込みデータを一旦キャッシュメモリに蓄積する。そして追書きページがマッピングされている(つまり圧縮データが格納されている)仮想ページに対する、キャッシュメモリ上の蓄積データ量が閾値(CM上ページ更新量閾値302)を超過する場合、データを追書きページから読み出して上書きページに移動する。その際、ホストからのライトデータがキャッシュメモリ上に蓄積されている領域については追書きページからの読み出しを行わない。そのため、追書きページから上書きページへのデータ移動効率が良い。
 続いて実施例2に係るストレージ装置の説明を行う。実施例2に係るストレージ装置のハードウェア構成は実施例1で説明したものと同じである。
 実施例1に係るストレージ装置では、ある仮想ページにマッピングされていた上書きページから追書きページにデータが移動された後、その追書きページ(のマッピングされた仮想ページ)に対して多量のライト(更新)が発生すると、追書きページのデータが上書きページへと戻される。たとえば1仮想ページに対してCM上ページ更新量閾値302以上のデータ書き込みが発生し、そのデータがキャッシュメモリに蓄積された場合、その仮想ページに追書きページがマッピングされていても、上書きページに戻される。
 このような事象はたとえば、ホスト2から仮想ボリュームに対してシーケンシャルライト要求を受領した場合が考えられる。たとえばホスト2が仮想ボリュームをデータバックアップ先ボリュームとして使用する場合、ホスト2は仮想ボリュームに大量のデータをシーケンシャル書込みする。
 ここで、たとえば圧縮許可閾値301が28日で、かつホスト2が1か月(30日)に1回の頻度で、仮想ボリュームをバックアップ先ボリュームに使用するケースを想定する。その場合、ホストが仮想ボリュームにデータを書き込んでから28日を経過すると、29日目には、その仮想ボリュームの仮想ページにマッピングされているページ(上書きページ)から、追書きページへのデータ移動が発生する。
 しかしその翌日(30日目)には、ホスト2がバックアップのために、仮想ボリュームに大量のデータをシーケンシャル書込みするため、データは追書きページから上書きページへと移動される。そのためこのケースでは、30日のうち、データが圧縮されて格納されている期間は2日間のみに限定され、圧縮による記憶領域の節約の効果は殆ど得られない。且つこのケースでは、データ更新は30日のうち1日しか発生しないため、このケースで書き込まれるデータは圧縮状態で保存されることが望ましい。
 実施例2に係るストレージ装置では、データアクセスパターンの学習を行い、上で説明したようなケースの場合に、データが圧縮されて保存される期間を長くする。またデータアクセスパターンの学習を行うことで、データ更新が発生する時(日)を事前予測し、その日の前にデータが上書きページに移動されるようにする。
 図14は、実施例2に係るストレージ装置が管理する、仮想ボリューム管理テーブル100’の構成例である。仮想ボリューム管理テーブル100’は、仮想ページ#(101’)、ホストLBA(102’)、ページ配置(103’)、ページ#(104’)、更新有無(今回)(105’)、更新有無(前回)(106’)、連続更新無し期間(現在)(107’)、連続更新無し期間(退避)(108’)、連続更新無し期間(学習移動後)(109’)、学習移動フラグ(110’)、割当量(111’)のカラムを有する。
 仮想ページ#(101’)、ホストLBA(102’)、ページ配置(103’)、ページ#(104’)、更新有無(今回)(105’)、連続更新無し期間(現在)(107’)、割当量(111’)に格納される情報の内容は、実施例1で説明した仮想ボリューム管理テーブル100の、仮想ページ#(101)、ホストLBA(102)、ページ配置(103)、ページ#(104)、更新有無(105)、連続更新無し期間(107)、割当量(111)と同じである。これ以外の情報については、後述する。
 図15は、実施例2に係るストレージ装置が管理する、閾値テーブル300’の構成例である。閾値テーブル300’には、圧縮許可閾値301、CM上ページ更新量閾値302、学習移動閾値303が格納される。圧縮許可閾値301、CM上ページ更新量閾値302は、実施例1で説明したものと同じである。学習移動閾値303の内容については、上書きページの移動判定処理の説明の過程で述べる。
 実施例2に係るストレージ装置では、上で述べた仮想ボリューム管理テーブル100’と閾値テーブル300’の内容が異なる他、上書きページの移動判定処理の内容が、実施例1で説明したもの(図12)と相違する。また、実施例2に係るストレージ装置では、学習結果に基づいて、追書きページのデータを上書きページに移動する処理が追加される。また、ライト処理の流れは基本的に実施例1で説明したもの(図9)と同様だが、ライト処理の最後にCPU11は、更新有無(105)に代えて更新有無(今回)(105’)に対して「有」を設定する点が異なる。その他の点については、実施例2に係るストレージ装置は実施例1に係るストレージ装置と同じである。たとえば実施例1で説明したデステージ処理(図10)は、実施例2に係るストレージ装置でも実施される。
 以下では、実施例2に係るストレージ装置で行われる、上書きページの移動判定処理(以下、「移動判定処理」と呼ぶ)の流れを、図16、図17を用いて説明する。多くの処理は実施例1(図12)で説明したものと共通であるため、以下では、図12の処理と相違する点を中心に説明する。
 図16のs1010、s1020、s1030は、実施例1(図12)で説明したものと同様である。ただし実施例2における移動判定処理では、s1020でCPU11は、s1010で選択された仮想ページ(以下、この仮想ページを「対象仮想ページ」と呼ぶ)の更新有無(今回)(105’)に基づいて判定を行う。以下ではまず、s1020の判定で、対象仮想ページの更新有無(今回)(105’)が「有」の場合(s1020:No)について説明する。
 対象仮想ページの更新有無(今回)(105’)が「有」の場合、CPU11は対象仮想ページの連続更新無し期間(現在)(107’)の値を、連続更新無し期間(退避)(108’)に格納する(s1110)。その後CPU11は、対象仮想ページの連続更新無し期間(現在)(107’)と連続更新無し期間(学習移動後)(109’)とを0にする(s1120’)。そしてCPU11は、対象仮想ページの更新有無(今回)(105’)の値を、更新有無(前回)(106’)に退避した後、更新有無(今回)(105’)の値を「無」に変更する(s1095’)。この後、全ての仮想ページに対して処理が行われている場合には(s1100:Yes)、CPU11は処理を終了し、まだ処理が行われていない仮想ページが残っている場合には(s1100:No)、s1010から処理を繰り返す。
 対象仮想ページの更新有無(今回)(105’)が「無」の場合(s1020:Yes)、CPU11はs1030を実行する。s1030の後、CPU11は対象仮想ページの学習移動フラグ110’がONか判定する。学習移動フラグ110’がONの場合(s1040:Yes)、CPU11は連続更新無し期間(学習移動後)(109’)を更新する(s1050)。たとえば移動判定処理(図16、図17の処理)が24時間(1日)ごとに行われる場合には、対象仮想ページの連続更新無し期間(学習移動後)(109’)に“1”を加算する。その後s1060の処理が行われる。学習移動フラグ110’がOFFの場合(s1040:No)、s1050の処理はスキップされる。
 続いてCPU11は、対象仮想ページの連続更新無し期間(現在)(107’)が圧縮許可閾値301以上か判定する(s1060)。対象仮想ページの連続更新無し期間(現在)(107’)が圧縮許可閾値301以上の場合(s1060:Yes)、CPU11は学習移動フラグ110’がONか判定する(s1070)。学習移動フラグ110’がOFFの場合(s1070:No)、実施例1と同じくCPU11はs1080とs1090を実施する。そしてCPU11はs1095’を実施した後、全ての仮想ページに対して処理が行われている場合には(s1100:Yes)処理を終了し、まだ処理が行われていない仮想ページが残っている場合には(s1100:No)、s1010から処理を繰り返す。
 学習移動フラグ110’がONの場合(s1070:Yes)、CPU11は連続更新無し期間(学習移動後)(109’)が、学習移動閾値303以上か判定する(s1072)。s1072の判定がYesの場合、CPU11は学習移動フラグ110’をOFFに変更し(s1074)、その後s1080以降の処理を行う。連続更新無し期間(学習移動後)(109’)が、学習移動閾値303以上か判定する(s1072)。s1072の判定がNoの場合、つまり連続更新無し期間(学習移動後)(109’)が、学習移動閾値303未満の場合、s1074、s1080、s1090の処理はスキップされる(つまり対象仮想ページのデータ移動は行われない)。
 s1060の判定で、対象仮想ページの連続更新無し期間(現在)(107’)が圧縮許可閾値301未満の場合(s1060:No)、CPU11は更新有無(前回)(106’)が「有」か「無」かを判定する(s1062)。更新有無(前回)(106’)が「無」の場合(s1062:No)、CPU11はs1095’以降の処理を行う。
 一方s1062の判定で、更新有無(前回)(106’)が「有」の場合(s1062:Yes)、CPU11は連続更新無し期間(退避)(108’)が、学習移動閾値303以上か判定する(s1064)。s1064の判定がYesの場合、CPU11は学習移動フラグ110’をOFFに変更し(s1066)、その後s1080以降の処理を行う。s1064の判定がNoの場合、CPU11はs1095’以降の処理を行う。
 続いて、実施例2に係るストレージ装置で実施される、学習結果に基づいた、追書きページのデータの上書きページへの移動処理の流れを、図18を用いて説明する。この処理は定期的、たとえば1日に1回等の頻度で実行される。
 最初にCPU11は仮想ボリューム管理テーブル100を検索することで、追書きページがマッピングされた仮想ページ(つまりページ配置(103)が「追書き」の仮想ページ)のうち、学習移動フラグ110’がONの仮想ページを1つ選択する(s1510)。以下、図18の説明において、s1510で選択された仮想ページのことを、「対象仮想ページ」と呼ぶ。そして対象仮想ページにマッピングされている追書きページのことを、「対象追書きページ」と呼ぶ。
 続いてCPU11は、対象仮想ページの更新有無(今回)(105’)が「有」か「無」かを判定する(s1520)。対象仮想ページの更新有無(今回)(105’)が「無」の場合(s1520:Yes)、対象仮想ページの連続更新無し期間(現在)(107’)を更新する(s1530)。この処理はs1030と同じである。
 s1550では、CPU11は対象仮想ページの連続更新無し期間(現在)(107’)が連続更新無し期間(退避)(108’)と同じか否か判定し(s1550)、同じ場合には対象仮想ページにマッピングされている追書きページのデータを伸長して上書きページに移動する(s1560)。s1560では、実施例1のs509とs510と同様の処理が行われる。その後CPU11は対象仮想ページの連続更新無し期間(学習移動後)(109’)を0にし(s1570)、また更新有無(前回)(106’)に退避した後、更新有無(今回)(105’)の値を「無」に変更する(s1575)。追書きページがマッピングされている全ての仮想ページについて、図18の処理が行われた場合には(s1580:Yes)、処理を終了する。まだ図18の処理が行われていない仮想ページがある場合には、再びCPU11はs1510から処理を繰り返す。
 s1520の判定で、対象仮想ページの更新有無(今回)(105’)が「有」の場合(s1520:No)、CPU11は連続更新無し期間(現在)(107’)の内容を連続更新無し期間(退避)(108’)にコピー(退避)し(s1610)、連続更新無し期間(現在)(107’)と連続更新無し期間(学習移動後)(109’)の内容を0にし(s1620)、学習移動フラグ(110’)をOFFに設定する(s1630)。その後s1580の判定が行われる。
 以上が、実施例2に係るストレージ装置の説明である。実施例2に係るストレージ装置は仮想ページの更新周期(更新パターン)を学習し、更新頻度の少ない仮想ページのデータが上書きページを占有することを抑制する。具体的にはストレージ装置は、(n+1)日に1回更新が発生する(n日間連続して更新がなく、(n+1)日目に更新が行われる)、という更新パターンの仮想ページを特定する。ここでnは、学習移動閾値303以上の値である。そのような仮想ページがあった場合、ストレージ装置はその仮想ページのデータを上書きページから追書きページに移動する(図17:s1062~s1090の処理)。同時にストレージ装置はその仮想ページに対して更新の発生しなかった期間を記憶しておく(連続更新無期間(退避)108’に)。つまりストレージ装置は、その仮想ページの更新周期が(1+連続更新無期間(退避)108’)日であるという学習結果(推定結果)を記憶する。
 追書きページにデータが移動された後、その追書きページがマッピングされた仮想ページに対して所定期間(連続更新無期間(退避)108’に記憶された期間)、更新がなかった場合、ストレージ装置は、まもなくその仮想ページに対する更新が発生すると判断し、更新が発生する前に、その仮想ページにマッピングされている追書きページのデータを上書きページへと移動する(図18:s1550~s1570)。そのため、データ更新が発生する時のアクセス性能を向上させることができる。
 また実施例1に係るストレージ装置の場合、先に述べたように、仮想ページの更新頻度が低い場合でも、データが圧縮されて格納される(追い書きページに格納される)期間が短くなる。実施例2に係るストレージ装置では、上書きページへと移動されたデータは、更新周期に変動がない限り、図17の処理(s1062~s1090等の処理)が実行されることによって、圧縮許可閾値301が経過するのを待つことなく追書きページへと移される。そのため、データ更新のない期間はデータが圧縮状態で記憶デバイスに格納されるため、ストレージ装置の性能と記憶効率の両立を図ることができる。
 以上、本発明の実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
 上では、ストレージ装置が使用するいくつかの情報が、プール管理テーブル200等のテーブル構造で管理される例を説明したが、テーブル構造で情報を管理する態様に限定されるわけではない。ストレージ装置はテーブル以外のデータ構造、例えばリスト構造などを用いて、情報を管理してもよい。
 また、上で説明した実施例では、追書きページに格納されるデータは圧縮データであったが、追書きページに格納されるデータは圧縮データに限定されなくともよい。たとえばストレージ装置が、暗号化等のデータ変換を行う機能を有し、かつそのデータ変換機能によってデータサイズが変動するようなデータ変換が行われる場合、変換後のデータを追書きページに格納し、追書きページから上書きページにデータを戻す時にはデータを逆変換するようにしてもよい。
 また、追書きページに格納されるデータは、圧縮や暗号化等のデータ変換が施されているデータに限定されない。上書きページと追書きページに格納されるデータがいずれも、非圧縮データあるいはデータ変換等の行われていないデータでもよい。一例として記憶デバイスとして、ランダムライト性能が高くないがシーケンシャルライト性能は高い記憶デバイスがストレージ装置に用いられる場合を想定する。この場合、ストレージ装置が各仮想ページのアクセス特性(ライト頻度、シーケンシャル・ランダムライト比率等)を観測し、観測結果に基づいて、ランダムライト頻度の高い仮想ページのデータは追書きページに移動し、シーケンシャルライトされることが多い仮想ページには上書きページを割り当てるように制御すると、ランダムライトデータが追書きページに格納されることにより、記憶デバイスへのデータ書き込み時にシーケンシャルライトされる。そのため、アクセス性能の向上が見込める。
 また別の例として、複数の異なる種類の記憶デバイスが搭載されるストレージ装置の場合にも、上の実施例で説明した制御方法は有効である。たとえば記憶デバイスとして、追記型の記憶デバイス(DVD-RWあるいはフラッシュメモリなどのように、上書き不可で、再書き込みには記憶領域の消去が必要な記憶媒体を用いた記憶デバイス)と、上書き可能な記憶デバイス(HDD等)の両方を搭載するストレージ装置の場合、ストレージ装置は、上書き可能な記憶デバイスの記憶領域を上書きページとして用い、追記型記憶デバイスの記憶領域を追書きページとして用いるように制御するとよい。そして、上の実施例のように、更新頻度の低いデータを追書きページに移動するように制御すると、追記型記憶デバイスで記憶媒体の消去頻度が低く抑えられ、ストレージ装置のアクセス効率向上が見込める。この場合も、追書きページに格納されるデータは、圧縮等のデータ変換が行われるデータであってもよいし、非圧縮データであってもよい。
1:ストレージ装置, 2:ホスト, 3:SAN, 5:管理ホスト, 10:ストレージコントローラ, 11:CPU, 12ホストI/F, 13:デバイスI/F, 14:メモリ, 15:管理用I/F,16:圧縮回路, 20:記憶デバイス

Claims (12)

  1.  1以上の記憶デバイスと、ストレージコントローラと、を有し、
     前記ストレージコントローラは、前記記憶デバイスの記憶領域を、前記ホストからの更新データの上書きを許す上書き用領域と、前記ホストからの更新データを追記格納するための追書き用領域に分けて管理しており、
     前記ストレージコントローラは、前記上書き用領域と前記追書き用領域の間でデータの移動を行う、
    ことを特徴とする、ストレージ装置。
  2.  前記ストレージコントローラは、データの格納された前記上書き用領域が、あらかじめ定められた条件に該当する状態にあることを検出した時、前記上書き用領域に格納された前記データを前記追書き用領域に移動する、
    ことを特徴とする、請求項1に記載のストレージ装置。
  3.  前記ストレージコントローラは、データの格納された前記上書き用領域に対し、前記ホストからの書き込みが所定期間発生していないことを検出した時、前記上書き用領域に格納された前記データを前記追書き用領域に移動する、
    ことを特徴とする、請求項2に記載のストレージ装置。
  4.  前記ストレージコントローラは、前記上書き用領域に格納された前記データを前記追書き用領域に移動する時、
     前記データから圧縮データを生成し、前記圧縮データを前記追書き用領域に追記する、
    ことを特徴とする、請求項2に記載のストレージ装置。
  5.  前記ストレージコントローラは、前記上書き用領域から前記追書き用領域に移動される前記データの量に基づいて、前記追書き用領域のサイズを決定する、
    ことを特徴とする、請求項2に記載のストレージ装置。
  6.  前記ストレージコントローラは、ホストに対してボリュームを提供し、前記ホストからライト要求のあった前記ボリューム上領域に動的に前記記憶デバイスの記憶領域を割り当てるよう構成されており、
     前記ストレージコントローラは、前記追書き用領域が割り当てられた前記ボリューム上領域に対するライトデータを前記ホストから受領すると、前記ライトデータを前記追書き用領域に追記し、
     前記追書き用領域に書き込まれるデータ量が、前記追書き用領域のサイズを超過する場合、前記追書き用領域内のデータを前記上書き用領域に戻す、
    ことを特徴とする、請求項5に記載のストレージ装置。
  7.  前記ストレージコントローラは、前記追書き用領域に圧縮データが格納されている場合、前記圧縮データのうち圧縮率の低い前記圧縮データから優先的に前記上書き用領域に戻し、
     前記ストレージコントローラは、前記圧縮データを前記上書き用領域に戻す際に、前記圧縮データを伸長してから前記上書き用領域に戻す、
    ことを特徴とする、請求項6に記載のストレージ装置。
  8.  前記ストレージコントローラは、前記ホストからのライトデータを一時格納するキャッシュメモリを有し、
     前記ストレージコントローラは、前記追書き用領域が割り当てられた前記ボリューム上領域に対する前記ライトデータが、所定量以上前記キャッシュメモリに蓄積された場合、
     前記追書き用領域に格納されているデータを前記上書き用領域に戻す、
    ことを特徴とする、請求項6に記載のストレージ装置。
  9.  前記ストレージコントローラは、前記追書き用領域が割り当てられた前記ボリューム上領域のうち、第1の領域に対する前記ライトデータが前記キャッシュメモリに蓄積されており、第2の領域に対する前記ライトデータは前記キャッシュメモリに蓄積されていない場合、
     前記追書き用領域に格納されているデータのうち、前記第1の領域に対する前記ライトデータの更新前データは前記上書き用領域に戻さない、
    ことを特徴とする、請求項8に記載のストレージ装置。
  10.  前記ストレージコントローラは、前記ボリューム上領域に対する前記ホストからのアクセスパターンを観測することで、前記ボリューム上領域の更新周期を推定し、
     前記推定した更新周期に基づいて、前記ホストから前記ボリューム上領域に対するライト要求を受領する前に、前記ボリューム上領域に割り当てられた前記追書き用領域に格納されたデータを、前記上書き領域に戻す、
    ことを特徴とする、請求項2に記載のストレージ装置。
  11.  前記ストレージコントローラは、前記ホストからのライトデータを一時格納するキャッシュメモリを有し、
     前記ストレージコントローラは、ホストに対してボリュームを提供し、前記ホストからライト要求のあった前記ボリューム上領域に、前記上書き用領域か前記追書き用領域のいずれかを動的に割り当てるよう構成されており、
     前記ストレージコントローラは、
     A)前記ボリューム上領域に対する更新データを前記ホストから受領すると、前記キャッシュメモリに前記更新データを格納し、
     B)前記更新データが、前記上書き用領域が割り当てられた前記ボリューム上領域に対する更新データの場合、前記上書き用領域に前記更新データを上書きし、
     C)前記上書き用領域が割り当てられた前記ボリューム上領域に対して書き込みが所定期間発生していないことを検出した時、前記ボリューム上領域に前記追書き用領域を割り当て、前記上書き用領域に格納されているデータを圧縮して前記追書き用領域に移動し、前記上書き用領域から前記追書き用領域に移動される前記データの量に基づいて、前記追書き用領域のサイズを増加させ、
     D)前記更新データが、前記追書き用領域が割り当てられた前記ボリューム上領域に対する更新データの場合、前記ボリューム上領域に対する前記更新データが、所定量以上前記キャッシュメモリに格納されているか判定し、
      D-1)前記ボリューム上領域に対する前記更新データが、所定量以上前記キャッシュメモリに格納されている場合、前記ボリューム上領域に前記上書き用領域を割り当て、前記キャッシュメモリに格納されている前記更新データを前記上書き用領域に格納し、前記ボリューム上領域に割り当てられていた前記追書き用領域に格納されているデータのうち、前記更新データが前記キャッシュメモリに格納されていないデータについて、前記上書き領域に移動し、
      D-2)前記ボリューム上領域に対する前記更新データが、所定量以上前記キャッシュメモリに格納されていない場合、
       D-2-1)前記追書き用領域に前記更新データを追記可能な領域がある時には、前記ライトデータを前記追書き用領域に追記し、
       D-2-1)前記追書き用領域に前記更新データを追記可能な領域がない時には、前記追書き用領域内のデータを前記上書き用領域に戻す、
    よう構成されている、
    ことを特徴とする、請求項2に記載のストレージ装置。
  12.  1以上の記憶デバイスと、ストレージコントローラと、を有するストレージ装置の制御方法であって、
     前記ストレージコントローラが、前記前記複数の前記記憶デバイスの記憶領域を、前記ホストからの更新データの上書きを許す上書き用領域と、前記ホストからの更新データを追記格納するための追書き用領域に分けて管理し、
     前記ストレージコントローラが、前記上書き用領域と前記追書き用領域の間で前記データの移動を行う、
    ことを特徴とする、ストレージ装置の制御方法。
PCT/JP2015/067604 2015-06-18 2015-06-18 ストレージ装置 WO2016203612A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2015/067604 WO2016203612A1 (ja) 2015-06-18 2015-06-18 ストレージ装置
JP2017524232A JP6298932B2 (ja) 2015-06-18 2015-06-18 ストレージ装置
US15/557,967 US10296229B2 (en) 2015-06-18 2015-06-18 Storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/067604 WO2016203612A1 (ja) 2015-06-18 2015-06-18 ストレージ装置

Publications (1)

Publication Number Publication Date
WO2016203612A1 true WO2016203612A1 (ja) 2016-12-22

Family

ID=57545774

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/067604 WO2016203612A1 (ja) 2015-06-18 2015-06-18 ストレージ装置

Country Status (3)

Country Link
US (1) US10296229B2 (ja)
JP (1) JP6298932B2 (ja)
WO (1) WO2016203612A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019128906A (ja) * 2018-01-26 2019-08-01 株式会社日立製作所 ストレージ装置及びその制御方法
CN110244905A (zh) * 2018-03-09 2019-09-17 株式会社日立制作所 具有数据量削减功能的计算机***,和存储控制方法
JP2020052919A (ja) * 2018-09-28 2020-04-02 株式会社日立製作所 ストレージ装置、管理方法及びプログラム
JP7479441B2 (ja) 2020-04-01 2024-05-08 株式会社日立製作所 ストレージ装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11385926B2 (en) * 2017-02-17 2022-07-12 Intel Corporation Application and system fast launch by virtual address area container
US10133658B1 (en) * 2017-05-02 2018-11-20 Google Llc Garbage collection for data storage
CN111124276B (zh) * 2019-11-15 2023-09-29 中国运载火箭技术研究院 一种可多模态工作的数据存储***及方法
US11934678B2 (en) * 2022-07-22 2024-03-19 Hewlett Packard Enterprise Development Lp Data reduction for storage volumes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11272521A (ja) * 1998-03-25 1999-10-08 Matsushita Electric Ind Co Ltd ファイル管理装置
JP2003216460A (ja) * 2002-01-21 2003-07-31 Hitachi Ltd 階層ストレージ装置及びその制御装置
JP2006259962A (ja) * 2005-03-16 2006-09-28 Hitachi Ltd ストレージシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070005625A1 (en) * 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Storage architecture for embedded systems
US8359444B2 (en) 2008-09-24 2013-01-22 Hitachi, Ltd. System and method for controlling automated page-based tier management in storage systems
JP6094267B2 (ja) 2013-03-01 2017-03-15 日本電気株式会社 ストレージシステム
US10108644B1 (en) * 2014-03-12 2018-10-23 EMC IP Holding Company LLC Method for minimizing storage requirements on fast/expensive arrays for data mobility and migration

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11272521A (ja) * 1998-03-25 1999-10-08 Matsushita Electric Ind Co Ltd ファイル管理装置
JP2003216460A (ja) * 2002-01-21 2003-07-31 Hitachi Ltd 階層ストレージ装置及びその制御装置
JP2006259962A (ja) * 2005-03-16 2006-09-28 Hitachi Ltd ストレージシステム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019128906A (ja) * 2018-01-26 2019-08-01 株式会社日立製作所 ストレージ装置及びその制御方法
US10521122B2 (en) 2018-01-26 2019-12-31 Hitachi, Ltd. Storage apparatus and method of controlling same
CN110244905A (zh) * 2018-03-09 2019-09-17 株式会社日立制作所 具有数据量削减功能的计算机***,和存储控制方法
JP2019159605A (ja) * 2018-03-09 2019-09-19 株式会社日立製作所 データ量削減機能を有する計算機システム、及び、記憶制御方法
CN110244905B (zh) * 2018-03-09 2022-07-22 株式会社日立制作所 具有数据量削减功能的计算机***,和存储控制方法
JP2020052919A (ja) * 2018-09-28 2020-04-02 株式会社日立製作所 ストレージ装置、管理方法及びプログラム
CN110968262A (zh) * 2018-09-28 2020-04-07 株式会社日立制作所 存储装置和数据存储方法
US11093134B2 (en) 2018-09-28 2021-08-17 Hitachi, Ltd. Storage device, management method, and program in tiered storage system
JP6995728B2 (ja) 2018-09-28 2022-01-17 株式会社日立製作所 ストレージ装置、管理方法及びプログラム
CN110968262B (zh) * 2018-09-28 2023-04-11 株式会社日立制作所 存储装置和数据存储方法
JP7479441B2 (ja) 2020-04-01 2024-05-08 株式会社日立製作所 ストレージ装置

Also Published As

Publication number Publication date
JPWO2016203612A1 (ja) 2017-09-14
JP6298932B2 (ja) 2018-03-20
US20180052614A1 (en) 2018-02-22
US10296229B2 (en) 2019-05-21

Similar Documents

Publication Publication Date Title
JP6298932B2 (ja) ストレージ装置
US11922039B2 (en) Storage device that secures a block for a stream or namespace and system having the storage device
US20220100377A1 (en) Memory system and method of controlling memory system
US10635310B2 (en) Storage device that compresses data received from a host before writing therein
CN108604165B (zh) 存储装置
JP5707540B1 (ja) 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
WO2015162681A1 (ja) ストレージシステムおよび記憶デバイスの制御方法
JP6685334B2 (ja) ストレージ装置
WO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
JP6608468B2 (ja) ストレージ装置及びその制御方法
US9785547B2 (en) Data management apparatus and method
JP6724534B2 (ja) 情報処理装置、重複除去プログラム、及び重複除去方法
US20110125950A1 (en) Systems and methods for performing deduplicated data processing on tape
JP2019169101A (ja) 電子機器、コンピュータシステム、および制御方法
US20110264848A1 (en) Data recording device
WO2018061161A1 (ja) ストレージ装置およびその制御方法
US11263132B2 (en) Method and system for facilitating log-structure data organization
JP6805501B2 (ja) ストレージ装置

Legal Events

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

Ref document number: 15895632

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017524232

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15557967

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15895632

Country of ref document: EP

Kind code of ref document: A1