WO2016181481A1 - ストレージシステムおよび記憶制御方法 - Google Patents

ストレージシステムおよび記憶制御方法 Download PDF

Info

Publication number
WO2016181481A1
WO2016181481A1 PCT/JP2015/063563 JP2015063563W WO2016181481A1 WO 2016181481 A1 WO2016181481 A1 WO 2016181481A1 JP 2015063563 W JP2015063563 W JP 2015063563W WO 2016181481 A1 WO2016181481 A1 WO 2016181481A1
Authority
WO
WIPO (PCT)
Prior art keywords
physical
data
area
write
address space
Prior art date
Application number
PCT/JP2015/063563
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 US15/549,283 priority Critical patent/US10621083B2/en
Priority to PCT/JP2015/063563 priority patent/WO2016181481A1/ja
Priority to JP2017517503A priority patent/JP6385570B2/ja
Publication of WO2016181481A1 publication Critical patent/WO2016181481A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • 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/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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection
    • 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
    • G06F3/0641De-duplication techniques

Definitions

  • the present invention generally relates to garbage collection in a storage system.
  • update writing that updates at least a part of already stored data
  • deduplication that eliminates at least one of a plurality of overlapping data
  • already stored data Old data in arithmetic compression to be compressed (post-process arithmetic compression) (for example, data before update by update writing, data excluded by deduplication, or data before arithmetic compression)
  • the data storage area becomes invalid. Since the invalidated area becomes a free area, such invalidation causes fragmentation of the free area. Therefore, a storage system that employs a log structuring method requires garbage collection (GC) for collecting fragmented free areas (fragmented invalid areas).
  • GC garbage collection
  • Patent Document 1 relates to a GC control method.
  • the technology of Patent Document 1 uses a logical / physical table for deriving a physical address from a logical address by identifying valid data (non-invalid survival data) using a physical table for deriving a logical address from a physical address.
  • the logical address of the valid data is specified, the valid data is copied to another area, and the physical theory table and the logical / physical table are updated so as to associate the physical address of the copy destination with the logical address of the valid data.
  • the technique of Non-Patent Document 1 can divide a physical address space into segments having a certain size, and select a segment with high GC efficiency as a copy source.
  • the technique of Non-Patent Document 1 formalizes the obtained GC efficiency by Equation 1 for each segment, and selects a segment with high GC efficiency as a copy source.
  • the number 1 is an expression that means the idea of GC efficiency.
  • the live data space (live data space) that is the amount of data to be copied in the segment is the cost u
  • the age of the segment is The segment free capacity (1-u) (free space) multiplied by the indicated coefficient a (age) is defined as segment gain (benefit), and the gain relative to cost is defined as GC efficiency (benefit / cost).
  • the age of the segment is an average of time stamps of data in the segment.
  • a RAID level that requires at least one parity per stripe (for example, RAID5, RAID6) can reduce the GC efficiency for reading the parity at such a RAID level.
  • the controller in the storage system uses the old parity (parity already stored) and the old data. Must be read from each drive device. In this case, new data is generated by updating a part of the old data, and new parity is generated by an arithmetic operation using the new data and the old parity.
  • Such a problem may also exist for other storage systems that employ a log structuring method regardless of whether or not at least one of arithmetic compression and deduplication is employed.
  • the storage system has a plurality of physical storage devices including one or more RAID groups, and a controller connected to the plurality of physical storage devices and including a processor and a storage unit.
  • Each area of one or more RAID groups is divided into a plurality of stripes.
  • Each of the plurality of stripes is composed of a plurality of strips which are a plurality of areas respectively corresponding to a plurality of physical storage devices.
  • Each RAID configuration of one or more RAID groups is a RAID configuration that requires parity for each stripe.
  • Address conversion information which is information referred to by the controller for address conversion between a logical address in the logical address space and a physical address in the physical address space for one or more RAID groups, is stored in the storage unit and the physical storage device.
  • Present in at least one of the Data is additionally written in the physical address space by the controller.
  • a fragment free area is generated by invalidating old data, which is data to be updated, compressed, or excluded, by the controller.
  • the controller executes a copy GC (garbage collection) process using the address conversion information.
  • the copy GC process selects (A) one or more non-writeable physical areas each including a fragment free area as one or more copy source physical areas from a plurality of physical areas which are a plurality of areas constituting the physical address space. (B) selecting a recordable physical area as a copy destination physical area from a plurality of physical areas, and (C) selecting one or more survival data in one or more selected copy source physical areas.
  • the GC performance in the storage system can be improved.
  • FIG. 1 shows a configuration example of a storage system according to a first embodiment.
  • An example of data storage in a RAID group by a log structuring method is shown.
  • a configuration example of each of the logical-physical table and the physical-logic table is shown.
  • 2 shows an example of a GC processing flow according to the first embodiment.
  • 10 shows a configuration example of a storage system according to Embodiment 2.
  • An example of a processing flow for selecting a copy source is supported.
  • An example of GC efficiency distribution is shown.
  • Another example of the GC efficiency distribution is shown.
  • 6 is an explanatory diagram of a threading GC according to Embodiment 3.
  • FIG. FIG. 10 is an explanatory diagram of Copying GC according to the third embodiment.
  • 18 shows an example of the relationship between the size of a page in a physical address space according to the fourth embodiment and the block size of the SMR drive according to the fourth embodiment.
  • each table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
  • the “storage unit” may be one or more storage devices including a memory.
  • the storage unit may be at least a main storage device of a main storage device (typically a volatile memory) and an auxiliary storage device (typically a nonvolatile storage device).
  • PDEV indicates a physical storage device, and may typically be a nonvolatile storage device (for example, an auxiliary storage device).
  • the PDEV may be, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • the PDEV is called a “drive device”.
  • RAID is an abbreviation of Redundant Array Of Independent (or Inexpensive) Disks.
  • the RAID group is composed of a plurality of drive devices, and stores data according to the RAID level associated with the RAID group.
  • a RAID group may be referred to as a parity group.
  • the parity group may be, for example, a RAID group that stores parity.
  • the program distribution server may include a processor (for example, a CPU) and a storage unit, and the storage unit may further store a distribution program and a program to be distributed. Then, the processor of the program distribution server executes the distribution program, so that the processor of the program distribution server may distribute the distribution target program to other computers.
  • a processor for example, a CPU
  • the storage unit may further store a distribution program and a program to be distributed. Then, the processor of the program distribution server executes the distribution program, so that the processor of the program distribution server may distribute the distribution target program to other computers.
  • two or more programs may be realized as one program, or one program may be realized as two or more programs.
  • VOL is an abbreviation for logical volume and may be a logical storage device.
  • the VOL may be a substantial VOL (RVOL) or a virtual VOL (VVOL).
  • the VOL may be an online VOL provided to a host system connected to a storage system that provides the VOL, and an offline VOL that is not provided to the host system (not recognized by the host system).
  • RVOL may be a VOL based on a drive device (for example, one or more RAID groups) included in the storage system having the RVOL.
  • VVOL may be at least one of an external connection VOL (EVOL), a capacity expansion VOL (TPVOL), and a snapshot VOL.
  • the EVOL is based on the storage space (for example, VOL) of the external storage system and may be a VOL according to the storage virtualization technology.
  • the TPVOL is composed of a plurality of virtual areas (virtual storage areas), and may be a VOL that complies with capacity virtualization technology (typically, Thin Provisioning).
  • the snapshot VOL may be a VOL provided as a snapshot of the original VOL.
  • the TPVOL is typically an online VOL.
  • the snapshot VOL may be an RVOL.
  • a “pool” is a logical storage area (for example, a set of a plurality of pool VOLs), and may be prepared for each use.
  • the pool may include at least one of a TP pool and a snapshot pool.
  • the TP pool may be a storage area composed of a plurality of real areas (substantial storage areas).
  • a real area may be allocated from the TP pool to the TPVOL virtual area (for example, if a real area is not allocated to the write destination virtual area of the TPVOL, an unallocated real area is allocated from the TP pool to the write destination virtual area. May be).
  • the snapshot pool may be a storage area in which data saved from the original VOL is stored.
  • One pool may be used as both a TP pool and a snapshot pool.
  • the “pool VOL” may be a VOL that is a component of the pool.
  • the pool VOL may be an RVOL or an EVOL.
  • the pool VOL is typically an offline VOL.
  • the client (an example of a host system) 1 receives a data service provided by the storage system 2 via the network 3.
  • a plurality of clients 1 may be provided.
  • clients 1a and 1b are shown as clients 1.
  • the network 3 may be an intra network, but may be the Internet or LAN (Local Area Network) connecting the client 1 and the storage system 2 via a network switch, or may be a SAN (Storage Area Network).
  • the storage system 2 stores data transmitted from the client 1 (stores data to be written accompanying the write request received from the client 1), and also provides stored data to the client 1 (received from the client 1) The data to be read according to the read request is provided to the client 1).
  • the storage system 2 may be composed of a plurality of storage devices, but in FIG. 1, the storage system 2 is composed of one storage device.
  • the storage system 2 can provide various data services. Data services include, for example, data copy within a storage device, data remote copy between storage devices, and snapshot acquisition.
  • the drive 111 stores at least a part of the data from the client 1.
  • the plurality of drives 111 constitute a plurality (or one) of RAID groups 104.
  • RAID groups 104a and 104b are shown in FIG.
  • the RAID group 104a includes four drives 111a to 111d, but at least one of the RAID groups 104 other than the RAID group 104a may have a configuration different from that of the RAID group 104a.
  • the controller includes a processor 101, a network interface 102, and a memory (an example of a storage unit) 103.
  • the processor 101 executes the calculation of the program expanded in the memory 103.
  • the network interface 102 is an interface for connecting to the network 3. Examples of programs developed in the memory 103 include an OS (Operating System) 201, a scheduler 202, a VOL controller 203, an arithmetic compression 204, a deduplication 205, and a GC (garbage collection) 206.
  • At least one part of the processing performed by the processor 101 for example, at least one of arithmetic compression and deduplication is performed in place of the processor 101 by a hardware circuit (for example, Application Specific Integrated Circuit (ASIC) or Field-Programmable Gate Array (FPGA) ).
  • the memory 103 is also used as a cache memory in which data written to the RAID group 104 and data read from the RAID group 104 are temporarily written.
  • OS201 provides a memory load function, which is a basic function for other programs to operate.
  • the scheduler 202 controls the operation timing of the VOL controller 203, arithmetic compression 204, deduplication 205, and GC206.
  • the deduplication 205 checks for duplication (identity) between data stored in the drive 111, leaves at least one of the duplicate data, and deletes the remainder of the duplicate data.
  • the deduplication 205 may perform deduplication by either inline or post process. In the case of inline, the deduplication 205 executes deduplication during the writing process according to the write request from the client 1. In the case of the post process, the deduplication 205 once writes the write target data from the client 1 to the drive 111, and then asynchronously reads the target data from the drive 111 to the memory 103 to execute deduplication.
  • GC includes Threading GC and Copying GC.
  • GC206 determines whether the total of the data arranged continuously in F5 is equal to or larger than the stripe data size (F6).
  • the GC 206 selects an appendable page as the copy destination page.
  • the additionally recordable page can be specified from the physical theory table T2.
  • the GC 206 writes stripe data to the first empty stripe of the copy destination page. As a result, stripe data is written to the copy destination page in the order of physical addresses.
  • the GC 206 determines whether or not GC has been performed for all target pages (F7). When the determination result of F7 is false, F2 to F5 are performed. In F2 to F5, if unwritten data remains in the memory 103 in the copy destination page, the survival data is arranged from the next of the data.
  • the size of unwritten data is equal to or larger than the strip size but is not an integral multiple of the strip size. In this case, neither strip unit writing nor stripe unit writing can be performed without padding.
  • the size of unwritten data is equal to or larger than the strip size and an integral multiple of the strip size, but writing in stripe units is required. In this case, writing in stripe units cannot be performed without padding.
  • the table update in F11 and F13 is performed as follows, for example.
  • the GC 206 updates the copy source physical addresses in the physical table T2 and the logical table T1 to copy destination physical addresses for all the survival data copied (written) on the copy destination page.
  • the padding data write destination area is treated as an unused area.
  • the physical theory table T2 holds not only the logical address of the data that was not excluded by deduplication but also all the linked logical addresses for one physical address
  • the physical theory table The physical address indicated by the logical address in the logical / physical table T1 can be rewritten by referring to the logical address of the corresponding data from T2.
  • padding is performed only when the size of the last unwritten data is less than the size of the stripe data or the size of the strip data. For this reason, the write load can be further reduced.
  • the last unwritten data can be written in strip units. In the case of writing in strip units, it is not necessary to read data from the writing destination. For this reason, the write load can be reduced.
  • the padding size may be limited to less than the strip size. Thereby, the load about padding can be reduced. Even if the padding size is less than the strip size, at least strip unit writing is possible between writing in stripe units and writing in strip units.
  • unwritten data can be converted to stripe data with a slight padding. (10-3)
  • padding for generating one strip data is performed. This is because writing can be executed with less padding than padding for generating stripe data.
  • Example 1 was an example that focused on reducing the load of writing in GC (Copying GC).
  • the present embodiment is an example paying attention to selection of a copy source page.
  • FIG. 5 shows a configuration example of the storage system according to the second embodiment.
  • FIG. 7 and FIG. 8 show the distribution efficiency of the logical / physical table T1 and the physical theory table T2, the variation in access frequency with respect to age, and the distribution of GC efficiency with different page conditions selected as a GC target. .
  • These data are the results of creating a page having a random free space amount based on the actually measured values in the storage system 502 and simulating the GC efficiency by the Monte Carlo method. 7 and 8 are as follows. That is, the left diagram shows the GC efficiency distribution in a case where pages are selected as copy sources (GC targets) in chronological order (in order from the top of the physical address).
  • the middle figure shows the GC efficiency distribution in the case where the logical / physical table T1 and the physical theory table T2 are in one or more drives 111 and a page with high GC efficiency obtained by Equation 1 is selected as a copy source.
  • the right figure shows the GC efficiency distribution in the case where the logical-physical table T1 and the physical-logical table T2 are in the memory 103 and a page with high gain obtained by Equation 1 is selected as a copy source.
  • “Segment” is read as “Page”.
  • FIG. 7 shows the GC efficiency distribution when the age access frequency decrease rate is low
  • FIG. 8 shows the GC efficiency distribution when the age access frequency decrease rate is high.
  • the GC efficiency (benefit / cost) obtained as a result of FIGS. 7 and 8 was derived by Equation 1.
  • Fig. 6 shows the processing flow for selecting the copy source page (page targeted for GC) according to the above results. This processing flow is executed in the GC processing flow (for example, executed between F1 and F2).
  • the GC 506 selects the “page forward search” mode (F14). In this mode, GC target candidate pages are searched in chronological order (in the order of physical addresses), and the found pages are selected as copy sources.
  • “Recordable drive” refers to SMR (Singled Magnetic Recording) drive, SSD (Solid State Drive) including NAND flash memory, etc. Each block in these drives has a drive recordable area (data in the order of address). Are areas to be written).
  • the “block” here is an example of a unit area (for example, in the NAND flash memory, a block is a data erasing unit). The available free space cannot be secured without releasing the entire block. Therefore, the “high GC efficiency page search” mode for searching for a page with high GC efficiency that exists at random positions for a RAID group composed of a plurality of write-once drives is not suitable.
  • the GC 506 specifies the rate of change in the access frequency decrease with respect to the physical address space by calling the data age statistics 208, and determines whether the rate of change in the access frequency decrease with age is slow ( For example, it is determined whether or not it is less than a predetermined threshold (F15). If the determination result of F15 is true, the GC 506 selects the “high GC efficiency page search” mode (F16). If the determination result of F15 is false, the GC 506 selects the “page forward search” mode. Note that, when the access-to-age access frequency decrease rate is fast, the “page forward search” mode is selected even when “high GC efficiency page search” and “page forward search” have the same GC efficiency. This is because it is guaranteed that free areas are grouped in order of physical addresses, and that the “page forward search” mode has a smaller TAT of the GC.
  • the order of determination does not necessarily have to be F11, F13, and F15. Further, all determinations of F11, F13, and F15 may not be performed. For example, when the determination result of F11 is false, the page forward search mode may be selected without F13 and F15. Further, when the determination of F13 is performed without the determination of F11 and the determination result of F13 is true, the page forward search mode may be selected. Further, when the determination result of F13 is false, the high GC efficiency page search mode may be selected without performing any of the determination of F11 and the determination of F15.
  • Example 3 will be described. At that time, the differences from the first and second embodiments will be mainly described, and the description of the common points with the first and second embodiments will be omitted or simplified.
  • Threading GC there is only one type of GC used in a storage system that performs GC.
  • Threading GC and Copying GC are employed.
  • Threading GC is that at least one of the logical-physical table and the physical-logic table can be so large that it does not fit in memory for managing free space.
  • the GC is performed in the same area unit as the area in which copying is performed by Copying GC.
  • Coping GC for example, GC that starts in a predetermined GC cycle
  • the controller copies the survival data of the pages 305A, 305B, 305C, and 305E that cannot be added to the page 305D that can be added.
  • each of the pages 305A, 305B, 305C, and 305E becomes a recordable page.
  • Threading GC is performed in addition to Copying GC, and Threading GC is performed in the same area unit as the area in which copying is performed in Copying GC. Therefore, Threading GC can be performed in addition to Copying GC without increasing the size of at least one of the logical / physical table T1 and the physical theory table T2.
  • the controller determines the unit area size for the physical address space based on the block size of the write-once drive.
  • each unit area in the physical address space is referred to as a “physical additional area”.
  • a plurality of different block sets respectively correspond to the plurality of physical write-once areas.
  • Each block set is a plurality of blocks respectively included in a plurality of different write-once drives in the write-once RAID group corresponding to the physical address space.
  • the controller manages whether it is an area that cannot be additionally written or an area that can be additionally written in units of physical write-on areas instead of or in addition to pages.
  • Copying GC the controller selects the copy destination of the survival data not in units of pages but in units of physical appending areas.
  • SMR drive in FIG. 11
  • one or more survival data is copied from one or more copy source blocks to a copy destination block.
  • the one or more survival data are sequentially written in the copy destination block in the order of addresses.
  • One or more copy source blocks correspond to one or more copy source physical write-once areas (non-writeable areas including fragment free areas).
  • the copy destination block corresponds to the copy destination physical additional recording area.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

ストレージシステムが、物理アドレス空間を構成する複数の物理領域から、それぞれ断片空き領域を含んだ1以上の追記不可物理領域を1以上のコピー元物理領域として選択し、且つ、追記可能物理領域をコピー先物理領域として選択する。ストレージシステムは、選択された1以上のコピー元物理領域内の1以上の生存データを、選択されたコピー先物理領域の空き領域の先頭からシーケンシャルに、ストリップ単位又はストライプ単位に書き込む。書込み対象データのサイズがストリップ単位又はストライプ単位の書込みに必要なサイズに満たない場合、ストレージシステムは、その書込み対象データに対してパディングを行うことで、その書込み対象データをストリップ単位又はストライプ単位で書き込む。

Description

ストレージシステムおよび記憶制御方法
 本発明は、概して、ストレージシステムにおけるガベージコレクションに関する。
 ストレージシステムへのコスト低減要求は高く、当該システムに格納されるデータの量を低減することができる算術圧縮や重複排除に対する期待は大きい。
 算術圧縮が適用されたデータは、元のデータとは異なるサイズとなり、結果として、元のデータの論理アドレス範囲のサイズと、圧縮データの物理アドレス範囲のサイズとが異なる。また、重複排除が適用された場合、重複する複数のデータのうちの少なくとも1つの重複データが削除され、削除された重複データの論理アドレスに、残ったデータの物理アドレスが関連付けられる。これらのことから、算術圧縮及び重複排除のうちの少なくとも1つを採用するストレージシステムは、論理アドレスとは異なる物理アドレスに追記的に書込む方式であるログ構造化方式を採用する(ログ構造化方式は、算術圧縮及び重複排除のいずれも採用しないストレージシステムにおいて採用されてもよい)。
 ログ構造化方式では、既に格納されているデータの少なくとも一部を更新する更新書込み、互いに重複した複数のデータのうちの少なくとも1つのデータを排除する重複排除、及び、既に格納されているデータを圧縮する算術圧縮(ポストプロセスの算術圧縮)での旧データ(例えば、更新書込みによる更新前のデータ、重複排除により排除対象とされたデータ、及び、算術圧縮前のデータのうちのいずれかに該当するデータ)の格納領域が無効となる。無効化された領域は、空き領域となるため、このような無効化は、空き領域の断片化の原因となる。そこで、ログ構造化方式を採用するストレージシステムは、断片化空き領域(断片化無効領域)の回収を行うガベージコレクション(GC)を必要とする。
 特許文献1は、GCの制御方法に関する。特許文献1の技術は、物理アドレスから論理アドレスを導出するための物論テーブルを用いて有効データ(無効ではない生存データ)を特定し、論理アドレスから物理アドレスを導出する論物テーブルを用いて有効データの論理アドレスを特定し、有効データを別領域にコピーし、コピー先の物理アドレスと有効データの論理アドレスとを関連付けるよう物論テーブル及び論物テーブルを更新する。
 また、非特許文献1の技術は、物理アドレス空間を一定の大きさを持つセグメントに分割し、GC効率の高いセグメントをコピー元として選定できる。具体的には、非特許文献1の技術は、セグメント毎に、得られるGC効率を数1で形式化し、GC効率の高いセグメントをコピー元として選定する。なお、数1は、GC効率の考え方を意味する式であり、具体的には、セグメント内のコピー対象データの量である生存データ量(live data space)をコストuとし、セグメントの古さを示す係数a(age)をかけたセグメント空き容量(1-u)(free space)をセグメント利得(benefit)とし、コストに対する利得をGC効率(benefit / cost)としている。ここで、セグメントの古さは、セグメント内のデータのタイムスタンプの平均などである。
(数1)benefit / cost = free space * age / live data space = (1-u) * a / u
US 8,527,544
Rosenblum, M., & Ousterhout, J. K. (1992). The design and implementation of a log-structured file system. ACM Transactions on Computer Systems (TOCS), 10(1), 26-52.
 しかしながら、特許文献1の技術でGCを制御し、非特許文献1の技術でGC効率の高いセグメントを選定したとしても、ストレージシステムにおける高いGC効率を必ずしも実現できない。その理由の一例は、次の通りである。すなわち、RAIDレベルとして、1つのストライプにつき少なくとも1つのパリティを必要とするRAIDレベル(例えばRAID5、RAID6)が、そのようなRAIDレベルでは、パリティの読出しのためにGC効率が減少し得る。具体的には、例えば、1つのストライプを構成する1つのストリップ内の旧データの一部を更新するデータ書込みでは、ストレージシステム内のコントローラが、旧パリティ(既に格納されているパリティ)及び旧データをそれぞれドライブデバイスから読み出す必要がある。この場合、旧データの一部を更新することで新データを生成し、新データと旧パリティを用いた算術演算により新パリティを生成する。
 このような課題は、算術圧縮及び重複排除の少なくとも1つが採用されているか否かに関わらずログ構造化方式が採用されている他のストレージシステムについても有り得る。
 ストレージシステムが、1以上のRAIDグループを含む複数の物理記憶デバイスと、複数の物理記憶デバイスに接続されプロセッサ及び記憶部を含んだコントローラとを有する。1以上のRAIDグループの各々の領域は、複数のストライプに分割されている。複数のストライプの各々は、複数の物理記憶デバイスにそれぞれ対応した複数の領域である複数のストリップで構成されている。1以上のRAIDグループの各々のRAID構成は、ストライプ毎にパリティが必要なRAID構成である。論理アドレス空間の論理アドレスと、1以上のRAIDグループについての物理アドレス空間の物理アドレスとの間のアドレス変換のためにコントローラにより参照される情報であるアドレス変換情報が、記憶部と物理記憶デバイスとのうちの少なくとも1つに存在する。物理アドレス空間には、コントローラによりデータが追記的に書き込まれるようになっている。物理アドレス空間には、更新、圧縮及び排除のうちのいずれかの対象のデータである旧データが前記コントローラにより無効化されることにより断片空き領域が生じるようになっている。コントローラが、アドレス変換情報を用いてコピーGC(ガベージコレクション)処理を実行する。コピーGC処理が、(A)物理アドレス空間を構成する複数の領域である複数の物理領域から、それぞれ断片空き領域を含んだ1以上の追記不可物理領域を1以上のコピー元物理領域として選択すること、(B)複数の物理領域から、追記可能物理領域をコピー先物理領域として選択すること、(C)選択された1以上のコピー元物理領域内の1以上の生存データを、選択されたコピー先物理領域の空き領域の先頭からシーケンシャルに、ストリップ単位又はストライプ単位に書き込むことを含む。(C)において、コントローラが、書込み対象データのサイズがストリップ単位又はストライプ単位の書込みに必要なサイズに満たない場合、その書込み対象データに対してパディングを行うことで、その書込み対象データをストリップ単位又はストライプ単位で書き込む。
 ストレージシステムにおけるGCの性能を向上できる。
実施例1に係るストレージシステムの構成例を示す。 ログ構造化方式によるRAIDグループへのデータ格納の一例を示す。 論物テーブル及び物論テーブルのそれぞれの構成例を示す。 実施例1に係るGCの処理フローの一例を示す。 実施例2に係るストレージシステムの構成例を示す。 コピー元選択の処理フローの一例を支援す。 GC効率分布の一例を示す。 GC効率分布の別の一例を示す。 実施例3に係るThreading GCの説明図である。 実施例3に係るCopying GCの説明図である。 実施例4に係る物理アドレス空間内のページのサイズと実施例4に係るSMRドライブのブロックのサイズの関係の一例を示す。
発明を実行するための形態
 以下、幾つかの実施例を説明する。
 以下の説明では、「xxxテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
 また、以下の説明では、「記憶部」は、メモリを含んだ1以上の記憶デバイスでよい。例えば、記憶部は、主記憶デバイス(典型的には揮発性のメモリ)及び補助記憶デバイス(典型的には不揮発性の記憶デバイス)のうちの少なくとも主記憶デバイスでよい。
 また、以下の説明では、「PDEV」は、物理的な記憶デバイスを示し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。なお、以下の実施例では、PDEVは、「ドライブデバイス」と呼ばれる。
 また、以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。RAIDグループは、複数のドライブデバイスで構成され、そのRAIDグループに関連付けられたRAIDレベルに従いデータを記憶する。RAIDグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するRAIDグループのことでよい。
 また、以下の説明では、コンピュータプログラムを主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置又はシステムが行う処理としてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶部を含み、記憶部はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
 また、以下の説明では、「VOL」は、論理ボリュームの略であり、論理的な記憶デバイスでよい。VOLは、実体的なVOL(RVOL)であってもよいし、仮想的なVOL(VVOL)であってもよい。また、VOLは、そのVOLを提供するストレージシステムに接続されているホストシステムに提供されるオンラインVOLと、ホストシステムには提供されない(ホストシステムからは認識されない)オフラインVOLとがあってよい。「RVOL」は、そのRVOLを有するストレージシステムが有するドライブデバイス(例えば、1以上のRAIDグループ)に基づくVOLでよい。「VVOL」としては、外部接続VOL(EVOL)と、容量拡張VOL(TPVOL)と、スナップショットVOLとのうちの少なくとも1種類でよい。EVOLは、外部のストレージシステムの記憶空間(例えばVOL)に基づいておりストレージ仮想化技術に従うVOLでよい。TPVOLは、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOLでよい。スナップショットVOLは、オリジナルのVOLのスナップショットとして提供されるVOLでよい。TPVOLは、典型的にはオンラインVOLでよい。スナップショットVOLは、RVOLであってもよい。「プール」は、論理的な記憶領域(例えば複数のプールVOLの集合)であり、用途ごとに用意されてよい。例えば、プールとして、TPプールと、スナップショットプールとのうちの少なくとも1種類があってよい。TPプールは、複数の実領域(実体的な記憶領域)で構成された記憶領域でよい。TPプールからTPVOLの仮想領域に実領域が割り当てられてよい(例えば、TPVOLのライト先仮想領域に実領域が割り当てられていない場合にTPプールからそのライト先仮想領域に未割当ての実領域が割り当てられてよい)。スナップショットプールは、オリジナルのVOLから退避されたデータが格納される記憶領域でよい。1つのプールが、TPプールとしてもスナップショットプールとしても使用されてもよい。「プールVOL」は、プールの構成要素となるVOLでよい。プールVOLは、RVOLであってもよいしEVOLであってもよい。プールVOLは、典型的にはオフラインVOLでよい。
 図1は、実施例1に係るストレージシステムの構成例を示す。
 クライアント(ホストシステムの一例)1は、ネットワーク3を介して、ストレージシステム2が提供するデータサービスの提供を受ける。クライアント1は複数台であってもよく、図1では、クライアント1として、クライアント1a及び1bが示されている。ネットワーク3は、イントラネットワークでよいが、ネットワークスイッチを介してクライアント1とストレージシステム2を接続するインターネット又はLAN(Local Area Network)でもよいし、SAN(Storage Area Network)でもよい。
 ストレージシステム2は、クライアント1から送信されるデータを格納し(クライアント1から受信した書込み要求に付随する書込み対象のデータを格納し)、また、クライアント1に格納データを提供する(クライアント1から受信した読出し要求に従う読出し対象のデータをクライアント1に提供する)。ストレージシステム2は、複数台のストレージ装置で構成されてもよいが、図1では、ストレージシステム2は、1台のストレージ装置で構成されている。また、ストレージシステム2は、様々なデータサービスを提供できる。データサービスとして、例えば、ストレージ装置内のデータコピー、ストレージ装置間のデータリモートコピー、スナップショット取得等がある。
 ストレージシステム2は、複数のドライブデバイス(以下、ドライブ)111と、複数のドライブ111(及びクライアント1)に接続されたコントローラとを有する。
 ドライブ111は、クライアント1からのデータの少なくとも一部を格納する。複数のドライブ111は、複数(又は1つ)のRAIDグループ104を構成する。複数のRAIDグループ104として、図1では、RAIDグループ104a及び104bが示されている。RAIDグループ104aは、一例として、4台のドライブ111a~111dを有しているが、RAIDグループ104a以外のRAIDグループ104のうちの少なくとも1つは、RAIDグループ104aと異なる構成でもよい。
 コントローラは、プロセッサ101、ネットワークインタフェース102及びメモリ(記憶部の一例)103を含む。プロセッサ101は、メモリ103に展開されたプログラムの演算を実行する。ネットワークインタフェース102は、ネットワーク3と接続するためのインタフェースである。メモリ103に展開されるプログラムとして、例えば、OS(Operating System)201、スケジューラ202、VOLコントローラ203、算術圧縮204、重複排除205、及び、GC(ガベージコレクション)206がある。プロセッサ101が行う処理の少なくとも一部、例えば、算術圧縮及び重複排除のうちの少なくとも1つが、プロセッサ101に代えてハードウェア回路(例えばASIC(Application Specific Integrated Circuit)又はFPGA(Field-Programmable Gate Array))により行われてもよい。メモリ103は、RAIDグループ104に書き込まれるデータやRAIDグループ104から読み出されたデータが一時的に書き込まれるキャッシュメモリとしても使用される。
 OS201は、他のプログラムが動作するための基本的な機能であるメモリへのロード機能等を提供する。スケジューラ202は、VOLコントローラ203、算術圧縮204、重複排除205及びGC206の動作タイミングを制御する。
 VOLコントローラ203は、RAIDグループ104の管理や、RAIDグループ104へのクライアント1からの書込み対象データの格納、及び、クライアント1からの読出し要求に応じた格納データの読み出しを制御する。具体的には、例えば、VOLコントローラ203は、論理アドレス空間(論理空間)と物理アドレス空間(物理空間)とを管理する。論理アドレス空間は、クライアント1に提供されるRVOLとしての空間であってもよいし、クライアント1に提供されたTPVOLに関連付けられるプールの空間でもよい。物理アドレス空間は、論理アドレス空間に関連付けられているRAIDグループの物理アドレスの空間でよい。VOLコントローラ203は、ログ構造化方式に従う書込みを実行する。例えば、VOLコントローラ203は、第1データの次の書込み対象が第2データの場合、論理アドレス空間において第2データが第1データと離れていても、物理アドレス空間において第1データと第2データ間に空きが生じないようにする。なお、本実施例の説明において、物理アドレス空間にデータを書き込むということは、詳細には、そのデータの書込み先物理アドレスに対応した領域(RAIDグループ104内の領域)を提供する1以上のドライブ111にそのデータを書き込むことに相当する。
 算術圧縮204は、クライアント1からの書込み対象データに算術圧縮を実行する。なお、算術圧縮204は、算術圧縮をインラインとポストプロセスのいずれで実施してもよい。インラインの場合、算術圧縮204は、クライアント1の書込み要求に従う書込み処理の最中に、算術圧縮を実行する。ポストプロセスの場合、算術圧縮204は、一旦クライアント1からの書込み対象データをドライブ111に書込み、その後非同期に、ドライブ111から対象のデータをメモリ103に読み出し、算術圧縮を実施し、当該圧縮後データを物理アドレス空間に書込む。
 重複排除205は、ドライブ111に格納されたデータ間の重複(同一性)をチェックし、重複データのうちの少なくとも1つを残しその重複データのうちの残りを削除する。なお、重複排除205は、重複排除をインラインとポストプロセスのいずれで実施してもよい。インラインの場合、重複排除205は、クライアント1からの書込み要求に従う書込み処理の最中に、重複排除を実行する。ポストプロセスの場合、重複排除205は、一旦クライアント1からの書込み対象データをドライブ111に書込み、その後非同期に、ドライブ111から対象のデータをメモリ103に読み出し、重複排除を実行する。また、インラインの場合、重複排除205は、データ間の同一性のチェックに用いるトークンの計算を行い、排除そのものはクライアント1の書込みと非同期に実施してもよい。なお、トークンは、データをハッシュ関数に適用することにより得られたハッシュ値でよい。
 更新書込み、重複排除、及び、ポストプロセスで実施される算術圧縮後のデータの書込みのうちのいずれにおいても、物理アドレス空間において旧データ(例えば、更新書込みにより更新されたデータ、重複排除により排除対象となった重複データ、及び、算術圧縮前のデータのうちのいずれかに該当するデータ)が格納されている領域は無効化される。GC206は、更新書込み、重複排除、及び、ポストプロセスで実施される算術圧縮により発生した空き領域(無効領域)を回収するGCを実行する。
 続けて、図2を用いて、ログ構造化方式によるRAIDグループ104aへのデータ格納の一例を述べる。
 RAIDグループ104aは、3つのデータに対して1つのパリティを格納するRAID構成(RAID5(3D+1P))を有する。RAIDグループ104aが提供する領域が複数のストライプ304に分割される。ストライプ304は、RAIDグループ104aを構成するドライブ111a~111dがそれぞれ提供する複数のストリップ303で構成されている。ストリップ303は、ドライブ111が提供する単位領域である。ドライブ111が提供する領域は、複数のストリップ303に分割される。ストリップサイズは、例えば512KBである。ページ305が、複数のストライプ304に対応する。ページ305は、物理アドレス空間302における単位領域である。つまり、物理アドレス空間302が、複数のページ305に分割されていてもよい。ページ305が物理的な単位領域である場合、例えば、例えばプールにおける実領域が、論理アドレス空間301における単位領域であってもよい。ページ305のサイズは、典型的には、ページ305に対応するストライプ数とストライプサイズの積より小さい(パリティが格納されるストリップのサイズがカウントされないためである)。なお、以下の説明では、ストリップ単位のデータを「ストリップデータ」と言い、ストライプ単位のデータ(正確には、ストライプサイズからパリティ分のストリップサイズを除いたサイズのデータ)を「ストライプデータ」と言い、ページ単位のデータを「ページデータ」と言うことができる。
 RAIDグループ104aを構成するドライブ111の数を変更することができる。例えば、RAIDレベルはRAID5のままで、3つのデータに対して1つのパリティを付与する3D+1Pの構成から、7つのデータに対して1つのパリティを付与する7D+1Pの構成に変更することができる。ページ305のサイズは、複数のRAIDグループ104にそれぞれ対応した複数のRAID構成(xD+yP)のうちのデータ数(x)の公倍数でよい。例えば、複数のRAIDグループ104が、RAID5(3D+1P)のRAIDグループと、RAID5(7D+1P)のRAIDグループの場合、ページ305のサイズは、42MBでよい。42は、RAID5(3D+1P)のデータ数である3と、RAID5(7D+1P)のデータ数である7の公倍数である。
 論理アドレス空間301は、例えばクライアント1向けのアドレス空間(例えばRVOL)である。VOLコントローラ203は、論理アドレス空間301においてデータ0~3の論理アドレス範囲とデータ5~6の論理アドレス範囲が離れていても、物理アドレス空間(論理アドレス空間301と異なるアドレス体系の空間)302において、データ5~6の物理アドレス範囲を、データ0~3の物理アドレス範囲の次とする(データ0~3の物理アドレス範囲とデータ5~6の物理アドレス範囲の間に空き領域が生じないようにする)。具体的には、例えば、データ0~3及び5~6の書込み先は、物理アドレス空間302の先頭から連続した領域とされる。データ0~3及び5~6は、実際には、それぞれ、物理アドレス空間302における物理アドレスと対応する位置(RAIDグループ104内の領域)に書き込まれる。
 更新書込み、ポストプロセスで実施される算術圧縮204による圧縮後データの書込みも同様である。例えば、図2におけるデータ0を更新する場合、新データ(更新後データ)0’は、物理アドレス空間202においてデータ6に対して詰められ(データ6の次に追記され)、旧データ0の格納領域(物理アドレス範囲)は無効化される。また、重複排除205により、例えば、互いに重複するデータ1とデータ5のうちのデータ5が排除対象となれば、旧データ5の格納領域は無効化される。
 RAIDグループ104aには、データは、ストリップ303を単位に書き込まれる。具体的には、例えば、ドライブ111aのストリップ303に、物理アドレス空間におけるデータ0~3及び5~6を含むデータのうちの先頭のストリップデータが書き込まれ、ドライブ111bのストリップ303に、その先頭のストリップデータの次のストリップデータ(先頭のストリップデータの物理アドレスの次の物理アドレスのストリップデータ)が書き込まれる。そして、3つのドライブ111a~111cにそれぞれ書き込まれる3つのストリップデータに基づくパリティ(ストリップサイズ)が、ドライブ111dに書き込まれる。
 続けて、図3を用いて、論物テーブルT1及び物論テーブルT2について説明する。
 論物テーブルT1は、論物変換情報の一例であり、論理アドレスを物理アドレスへ変換するためのアドレス変換テーブルである。物論テーブルT2は、物論変換情報の一例であり、物理アドレスを論理アドレスへ変換するためのアドレス変換テーブルである。好ましくは、論物テーブルT1及び物論テーブルT2のうちの少なくとも1つのテーブルの全てがメモリ103に格納されることであるが、テーブルのサイズが大きい等の理由から、論物テーブルT1及び物論テーブルT2の少なくとも一部が少なくとも1つのドライブ111に格納されてもよい。
 論物テーブルT1は、論理アドレス毎にエントリを有し、各エントリに、論理アドレス、物理アドレス、サイズ及びハッシュ値が登録される。なお、論物テーブルT1に登録される情報の種類はこれらに限定しないでよい。一方、物論テーブルT2は、物理アドレス毎にエントリを有し、各エントリに、物理アドレス、論理アドレス及びサイズが登録される。なお、物論テーブルT2に登録される情報の種類もこれらに限定しないでよい。例えば、図3では、論物テーブルT1は論理アドレスを持つが、論理アドレスの管理単位を固定のブロックサイズとし、論理アドレス順に整列することで、論理アドレスの登録は不要となり、論物テーブルT1は、物理アドレス、サイズ及びハッシュ値さえ持てばよい。また、算術圧縮及び重複排除が採用されない場合、サイズは、クライアント1からの書込みの単位サイズであり、可変ではないため、サイズも論物テーブルT1に登録されないでもよい。同様に、図3では、物論テーブルT2は、物理アドレスを持つが、物理アドレスの管理単位を固定のブロックサイズとし、物理アドレス順に整列することで、物理アドレスの登録は不要となり、物論テーブルT2は、論理アドレスとサイズさえ持てばよい。さらに、物論テーブルT2においては、物理アドレスに対応する論理アドレスに対応したサイズを論物テーブルT1から知ることができるため、サイズは、物論テーブルT2及び論物テーブルT1の一方に登録されればよい。なお、固定のブロックサイズとは、例えば、512B又は4KBである。また、図3では、論物テーブルT1にハッシュ値が登録されるが、論理アドレスとハッシュ値を組とする別テーブルが用意されてもよい。その場合、ハッシュ値をキーとするB-Tree形式といった実装形態を取ることができるため、重複排除205の処理負荷の軽減が期待される。
 通常の書込みにおいて、VOLコントローラ203は、クライアント1からの書込み要求に従う書込み対象のデータをメモリ103にキャッシュし、追記の最終アドレスを当該データ用の物理アドレスとして決定し、当該物理アドレスの指す位置(RAIDグループ104内の領域)にデータを書込み、論物テーブルT1及び物論テーブルT2を更新する。
 更新書込みにおいて、VOLコントローラ203は、クライアント1からの書込み要求に従う書込み対象のデータをメモリ103にキャッシュし、そのデータを基いて旧データを更新することにより得られる新データの物理アドレスを決定する。VOLコントローラ203は、当該物理アドレスの指す位置(RAIDグループ104内の領域)に新データを書込む。VOLコントローラ203は、論物テーブルT1及び物論テーブルT2から、それぞれ、旧データに関する削除し、新データに関する情報を、論物テーブルT1及び物論テーブルT2にそれぞれ登録する。例えば、論理アドレスが「0x100」及びサイズが「2」である旧データ(更新前データ)が更新される場合、論物テーブルT1の論理アドレス「0x100」を含んだエントリにおいて、物理アドレスは「9」(新データの物理アドレス)に更新され、サイズは「2」(新データは旧データの更新後データであるため同じサイズ)のままであり、ハッシュ値は、新データのハッシュ値に更新される。また、物論テーブルT2から、旧データの物理アドレス「0」のエントリ(エントリの情報)が削除され、新たに、物論テーブルT2のエントリに、物理アドレス「9」、論理アドレス「0x100」及びサイズ「2」が登録される。この結果、物理アドレス「0」の領域が無効領域となる。
 ポストプロセス算術圧縮において、算術圧縮204は、対象のデータをメモリ103にキャッシュし、算術圧縮し、物理アドレスを決定し、当該物理アドレスの指す位置(RAIDグループ104内の領域)にデータを書き込む。算術圧縮204は、論物テーブルT1及び物論テーブルT2から、旧データ(算術圧縮前のデータ)に関する情報を削除し、圧縮後のデータに関する情報を、論物テーブルT1及び物論テーブルT2に登録する。例えば、図3にて論理アドレスが「0x100」及びサイズが「2」であるデータが算術圧縮され、新データ(圧縮後データ)のサイズが「1」となる場合、論物テーブルT1の論理アドレス「0x100」を含んだエントリにおいて、物理アドレスは「9」(新データの物理アドレス)、サイズは「1」、ハッシュ値は、圧縮後データのハッシュ値となる。また、物論テーブルT2から、旧データの物理アドレス「0」のエントリが削除され、新たに、物論テーブルT2のエントリに、物理アドレス「9」、論理アドレス「0x100」及びサイズ「1」が登録される。
 重複排除において、重複排除205は、対象のデータをメモリ103にキャッシュし、ハッシュ値を導出し、導出したハッシュ値と同一のハッシュ値を論物テーブルT1から検索する。重複排除205は、同一ハッシュ値が見つかった場合、論物テーブルT1及び物論テーブルT2を更新する。例えば、図3にて、論理アドレスが「0x100」及びサイズが「2」である第1データと論理アドレスが「0x300」及びサイズが「2」である第2データが同一であり、第2データを排除する場合、論物テーブルT1の論理アドレス「0x300」のエントリにおいて、物理アドレスは「0」(第1データの物理アドレスと同じ)とされる(サイズ及びハッシュ値は変更なし)。物論テーブルT2から、物理アドレス「7」のエントリは削除される。本実施例では、説明を容易にするために、物論テーブルT2の物理アドレス「0」のエントリに、排除対象の第2データの論理アドレス「0x300」が追記されてもよい。但し、これは本実施例の実装を限定するものではなく、例えば物論テーブルT2に関して、各物理アドレスに対して複数の論理アドレスを参照できるように実装してもよい。
 続けて、GCを説明する。
 GCとして、Threading GCとCopying GCがある。
 Threading GCは、更新書込み及び重複排除により生成される断片化した空き領域を、空き領域の位置情報(例えば先頭アドレスとサイズ)をテーブルに登録する等の方法により管理し、クライアント1からの書込み対象のデータの書込み先物理アドレスを、管理している断片空き領域の物理アドレスとする方法である。Threading GCにおいて、データの書込み先物理アドレスとして、そのデータのサイズと同じサイズの空き領域の物理アドレスが探し出されてもよいし、データが分割されることで複数の空き領域のアドレスが複数の書込み先物理アドレスとされてもよい。
 一方、Copying GCは、断片空き領域を含んだ第1領域内の生存データ(有効データ)を、第1領域と別の第2領域にコピーし、第1領域を連続した空き領域とする方法である。第1領域及び第2領域は、それぞれ、所定サイズの単位領域、例えばページでよい。
 本実施例に係るストレージシステム2は、Copying GCを採用する。そして、そのCopying GCは、ストリップ単位又はストライプ単位でデータをRAIDグループに書き込むよう改良されており、結果として、GC効率が向上される。GC206は、書込み処理とは非同期に(例えば定期的に)、GCの処理フロー(例えば図4の処理フロー)を開始する。処理フロー開始時に、断片空き領域のあるページが2以上存在していれば、2以上のページをそれぞれコピー元としたCopying GCの実行により、それら2以上のページの各々のを空きページとすることができる。GCの処理フローの開始タイミングは、スケジューラ202により決定される。GCの処理フローの開始の周期を、「GC周期」と言うことができる。GC周期は、短い周期であっても長い周期であってもよい。短い周期の場合、一度のGCでコピー対象となるデータ量が少ないため、GCにかかる時間(TAT(Turn Around Time))は小さいと考えられる。一方、長い周期の場合、一度のGCでコピー対象となるデータ量が多いため、GCのスループットは大きいと考えられる。例えば、クライアント1からのI/Oの頻度(例えば、書込み要求及び読出し要求の受信頻度)が高い場合、GC周期は短いことが好ましいと考えられる。GC周期が長いと、多くの断片空き領域が生じ、I/O性能(特にリード性能)が低下すると考えられるためである。一方で、夜間等のようにクライアント1からのI/Oの頻度が低い場合、GC周期が長くても問題ないと考えられる。GC周期の長さは、管理ポリシ等により決定可能である。
 本実施例では、Copying GCの処理単位(コピー単位)は、ページ305である。ストレージシステム2が、ページ単位で空き容量を管理しており、ページ単位未満での空き容量確保は、管理上の空き容量確保とはならず、非効率であるためである。
 図4を用いて、GCの処理フローを説明する。
 GC206は、全ての対象ページについてGCをしたか否かを判定する(F1)。ここで言う「対象ページ」は、断片空き領域を含んだ追記不可ページである。「追記不可ページ」とは、先頭から終端までデータが書き込まれたページである。追記不可ページは、生存データのみが存在するページと、生存データに加えて断片空き領域が存在するページとがあるが、ここで言う「対象ページ」は、上述したように、断片空き領域を含んだ追記不可ページである。断片空き領域を含んだ追記不可ページは、物論テーブルT2(各エントリの物理アドレス及びサイズ)を参照することにより特定可能である。F1の判定結果が肯定の場合、処理フローが終了する。
 F1の判定結果が真の場合、GC206は、1つの対象ページをコピー元ページとして選択し、選択した対象ページのページデータをそのままメモリ103にロードする(F2)。このため、F2の結果、メモリ103において、対象ページのページデータが占める領域には、空き領域(無効データが占める領域)が存在する。続けて、GC206は、F2でロードしたページデータ内の生存データを、物論テーブルT2を参照することにより特定する(F3)。GC206は、F2でロードしたページデータから、F3で特定された生存データのみをメモリ103にロード(コピー)する(F4)。続けて、GC206は、F4にてロードした生存データ間の隙間(空き領域)を詰める(F5)。F4及びF5に代えて、GC206は、F4でロードしたページデータから2以上の生存データを物理アドレス順に(換言すれば、追記型であるため時系列の古い順に)、データ間の隙間を空けることなく、メモリ103における別領域にコピーしてよい。この時、GC206は、2以上の生存データを論理アドレス順に整列させてもよい(しかし、論理アドレス順の整列は、多数のデータをメモリにロードする必要があり、短い周期でのGCには向かないと考えられる)。
 GC206は、F5にて連続して並べられたデータの合計がストライプデータのサイズ以上であるか否か判定する(F6)。
 F6の判定結果が真の場合、GC206は、メモリ103において連続した1以上の生存データのうちのストライプデータを、コピー先ページに対応した空きストライプに書き込む(F12)。また、GC206は、F12での書き込みに基づき、論物テーブルT1及び物論テーブルT2を更新する(F13)。「コピー先ページ」は、コピー先としてGC206により選択された追記可能ページである。「追記可能ページ」とは、オープンページ(ページの先頭からデータが書き込まれたが終端までデータが書き込まれていないページ)、又は、空きページ(生存データが存在せず空き領域のみ存在するページ)である。GCの処理フローにおける書込み(F12又はF10)において、コピー先ページが無ければ、GC206は、追記可能ページをコピー先ページとして選択する。追記可能ページは、物論テーブルT2から特定可能である。GCの処理フローにおける書込み(F12又はF10)において、GC206は、コピー先ページの先頭空きストライプに、ストライプデータを書き込む。これにより、コピー先ページに物理アドレス順にストライプデータが書き込まれる。
 F6の後、GC206は、全ての対象ページについてGCをしたか否かを判定する(F7)。F7の判定結果が偽の場合、F2~F5が行われる。そのF2~F5では、コピー先ページに未書込みのデータがメモリ103に残っていれば、そのデータの次から、生存データが並べられる。
 F7の判定結果が真の場合、GC206は、コピー先ページに未書込みのデータがメモリ103に存在しているか否かを判定する(F14)。F14の判定結果が偽の場合、処理フローが終了する。
 F14の判定結果が真の場合、GC206は、コピー先ページに未だ書き込まれていない未書込みデータ(メモリ103に存在している1以上の生存データ(有効データ))に対してパディングを行うか否かを判定する(F8)。パディング方法は問わないが、本実施例では、ゼロデータ(全ビット値が「0」のデータ)でパディングする方法が採用される。パディングされるデータを、「パディングデータ」と言い、パディングデータのサイズを「パディングサイズ」と言うことができる。F8の判定結果が真となる場合は、例えば、以下の(8-1)~(8-3)のいずれかに該当する場合である。
(8-1)未書込みデータのサイズが、ストリップサイズ未満である。この場合、パディング無しに、ストリップ単位の書込み及びストライプ単位の書込みのいずれもできない。
(8-2)未書込みデータのサイズが、ストリップサイズ以上であるが、ストリップサイズの整数倍ではない。この場合、パディング無しに、ストリップ単位の書込み及びストライプ単位の書込みのいずれもできない。
(8-3)未書込みデータのサイズが、ストリップサイズ以上且つストリップサイズの整数倍であるが、ストライプ単位の書込みが必要とされる。この場合、パディング無しに、ストライプ単位の書込みをできない。
 F8の判定結果が真の場合、GC206は、未書込みのデータに対してパディングを行うことで、その未書込みのデータを、m個のストリップデータ(mは、1以上であり、ストライプデータを構成するストライプデータの数未満の整数)、又は、1つのストライプデータとする(F9)。GC206は、m個のストリップデータを、それぞれ、コピー先ページの空きストライプにおけるm個のストリップに書き込む、又は、1つのストライプデータを、コピー先ページの空きストライプに書き込む(F10)。GC206は、F10での書き込みに基づき、論物テーブルT1及び物論テーブルT2を更新する(F11)。
 F11及びF13でのテーブル更新は、例えば次のように行われる。GC206は、コピー先ページにコピーされた(書き込まれた)全ての生存データの各々について、物論テーブルT2及び論物テーブルT1でのコピー元物理アドレスをそれぞれコピー先物理アドレスに更新する。これにより、パディングデータの書込み先領域は未使用領域として扱われる。なお、物論テーブルT2が、1つの物理アドレスに対して、重複排除にて排除されなかったデータの論理アドレスだけでなく、リンクしている全ての論理アドレスを保持する場合には、物論テーブルT2から該当するデータの論理アドレスを参照し、論物テーブルT1の当該論理アドレスが指す物理アドレスを書き換えることができる。
 以上が、GCの処理フローの一例である。
 図4の処理フローによれば、コピー先ページには、1以上の生存データがシーケンシャルに書き込まれ、コピー先ページへの書込みは、なるべく、パディング無しにストライプ単位で行われる。ストライプ単位の書込みであれば、書込み先からのデータの読出しもパリティの読出しも不要である。このため、書込み負荷を低減できる。
 また、パディングは、最後の未書込みデータのサイズがストライプデータのサイズ又はストリップデータのサイズに満たない場合にのみ行われる。このため、書込み負荷を一層低減できる。
 なお、処理フローでは、最後の未書込みデータについては、ストリップ単位での書き込みも可能である。ストリップ単位の書込みであれば、書込み先からのデータの読出しが不要である。このため、書込み負荷を低減できる。
 また、パディングサイズは、ストリップサイズ未満に制限されてもよい。これにより、パディングについての負荷を軽減できる。また、パディングサイズがストリップサイズ未満であっても、ストライプ単位の書き込みとストリップ単位の書き込みのうちの少なくともストリップ単位の書き込みは可能である。
 また、F9及びF10において、ストライプ単位の書込みとするかストリップ単位の書込みとするかは、予め決められていてもよいし、設定されている情報(例えばポリシー)から選択的に決定されてもよい。後者の具体例として、例えば、以下の(10-1)~(10-3)のうちのいずれかが採用されてよい。
(10-1)未書込みデータのサイズが、ストライプサイズの1/2(50%)より大きければ(パディングサイズが、ストライプサイズの1/2未満であれば)、ストライプ単位の書込みのためのパディングが行われる。比較的パディングサイズが小さくて済むためである。
(10-2)未書込みデータのサイズをストリップサイズで割ったときの商Qが、(M-1)である場合、ストライプ単位の書込みのためのパディングが行われる。Mは、ストライプデータを構成するストリップデータの数である。従って、Q=M-1であるということは、パディングサイズがストリップサイズ未満である。この例によれば、わずかなパディングで未書込みデータをストライプデータにできる。
(10-3)未書込みデータのサイズが、ストリップサイズ未満の場合、1つのストリップデータの生成のためのパディングが行われる。ストライプデータを生成するためのパディングよりも少ないパディングで書込みを実行できるためである。
 また、図4の処理フローによれば、最初からストライプ単位でデータの書込みが行われるが、直前回の処理フローの結果として、コピー先ページの使用ストライプ(少なくとも1つのストリップデータが書き込まれているストライプ)のうちの末尾の使用ストライプに空きのストリップがあれば、その使用ストライプの全てのストリップを埋めるためのストリップ単位の書込みが行われ、その後に、なるべくストライプ単位での書込みが行われてもよい。
 実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
 実施例1は、GC(Copying GC)での書込みの負荷の低減に着目した例であった。本実施例は、コピー元ページの選定に着目した例である。
 図5は、実施例2に係るストレージシステムの構成例を示す。
 ストレージシステム502において、プロセッサ101により実行されるプログラムとして、更に、テーブル管理207と、データ年齢統計208がある。テーブル管理207は、論物テーブルT1及び物論テーブルT2がメモリ503上に常駐しているか否かを管理する。データ年齢統計208は、GC稼働対象VOLに格納されるデータの対年齢アクセス頻度低下の変動に関する統計を取得する。データの「対年齢アクセス頻度低下の変動」とは、データの年齢(例えば、データが物理アドレス空間に書き込まれてからの経過時間)に対して、アクセス頻度がどの程度低下するかを意味する。例えば、当日から3ヶ月前までの比較的新しいデータへのアクセス頻度は高いが、3か月より前から数年前の古いデータへのアクセス頻度が低い。ファイルサーバなどでは、データ年齢の増加とともにアクセス頻度は指数的に低下する。一方、データベースサーバやデータウェアハウスなどでは、データ年齢に関わらず全てのデータを検索対象とするために、データ年齢に関わらずアクセス頻度は一定である。GC506は、GCの処理フローにおいて、コピー元ページの選択の処理フローを実行する。
 論物テーブルT1及び物論テーブルT2の配置場所、及び、データの対年齢アクセス頻度低下変動は、それぞれ、GC対象ページ(コピー元ページ)の選択に影響を与える。それは、GC利得はデータ年齢に比例し、コスト(GC処理負荷)に反比例するためである。
 図7及び図8は、論物テーブルT1及び物論テーブルT2の配置場所、対年齢アクセス頻度低下変動、及び、GC対象として選択されるページの条件を異とするGC効率の分布を示している。これらのデータは、ストレージシステム502における実測値を基に、ランダムな空き領域量を持つページを作成し、そのGC効率をモンテカルロ法によりシミュレートした結果である。図7及び図8共に、次の通りである。すなわち、左の図は、時系列に古い順に(物理アドレスの先頭から順に)ページをコピー元(GC対象)として選択するケースでのGC効率分布を示す。真ん中の図は、論物テーブルT1及び物論テーブルT2が1以上のドライブ111にあり数1により得られたGC効率の高いページをコピー元として選択するケースでのGC効率分布を示す。右の図は、論物テーブルT1及び物論テーブルT2がメモリ103にあり数1により得られた利得の高いページをコピー元として選択するケースでのGC効率分布を示す。なお、数1により得られたGC効率について、「セグメント」は「ページ」と読み替えられる。図7は、対年齢アクセス頻度低下速度が遅い場合のGC効率分布を示し、図8は、対年齢アクセス頻度低下速度が速い場合のGC効率分布を示す。図7及び図8の結果として得られるGC効率(benefit / cost)は、数1により導出された。
 図7及び図8の結果によると、論物テーブルT1及び物論テーブルT2がメモリ503にある場合、データの対年齢アクセス頻度変動に関わらずGC効率は高い。一方、対年齢アクセス頻度変動速度が速い場合、単純に前方から(物理アドレスの先頭から順に)ページをコピー元として選択するケースと、論物テーブルT1及び物論テーブルT2がメモリ503に無い時に高いGC効率を持つページをコピー元として選択するケースとでは、GC効率に大きな差は無い。
 以上の結果に従うコピー元ページ(GCの対象とするページ)の選択の処理フローを、図6が示す。この処理フローは、GCの処理フローにおいて実行される(例えば、F1とF2の間に実行される)。
 GC506は、論物テーブルT1及び物論テーブルT2がメモリ503にある(オンメモリ)か否かを判定する(F11)。
 F11の判定結果が真であれば、GC506は、「高GC効率ページ探索」モードを選択する(F12)。このモードでは、メモリ503にある論物テーブルT1及び物論テーブルT2のうちの少なくとも1つを基に数1により得られたGC効率が比較的高いページがコピー元として選択される。具体的には、例えば、GC対象候補ページ(断片空き領域を含んだ追記不可ページ)毎にGC効率が算出され、GC効率が比較的高いページが選択されてよい。なお、「GC効率が比較的高いページ」とは、GC効率が所定の閾値以上のGC対象候補ページであってもよいし、複数のGC対象候補ページにそれぞれ対応した複数のGC効率のうち上記X%(X>0)に該当するGC効率のページであってもよい。
 F11の判定結果が偽であれば、GC506は、ドライブ111(例えば、物理アドレス空間に対応したRAIDグループを構成するドライブ111)が追記型ドライブか否かを判定する(F13)。
 F13の判定結果が真であれば、GC506は、「ページ前方探索」モードを選択する(F14)。このモードでは、時系列に古い順に(物理アドレス順に)、GC対象候補ページが探索され、見つかったページがコピー元として選択される。なお、「追記型ドライブ」とは、SMR(Singled Magnetic Recording)ドライブや、NANDフラッシュメモリを含んだSSD(Solid State Drive)などであり、これらのドライブにおける各ブロックが、ドライブ追記領域(アドレス順にデータが書き込まれるべき領域)である。ここで言う「ブロック」は、単位領域の一例である(例えば、NANDフラッシュメモリについては、ブロックは、データの消去単位である)。ブロック全体を開放することなく、利用可能な空き容量の確保はできない。そのため、複数の追記型ドライブで構成されたRAIDグループに関して、ランダムな位置に存在する高GC効率のページを探す「高GC効率ページ探索」モードは、不向きである。
 F13の判定結果が偽であれば、GC506は、データ年齢統計208を呼び出すことで、物理アドレス空間に関して対年齢アクセス頻度低下変動速度を特定し、対年齢アクセス頻度低下変動速度が遅いか否か(例えば、所定の閾値未満か否か)を判定する(F15)。F15の判定結果が真であれば、GC506は、「高GC効率ページ探索」モードを選択する(F16)。F15の判定結果が偽であれば、GC506は、「ページ前方探索」モードを選択する。なお、対年齢アクセス頻度低下速度が速い場合に、「高GC効率ページ探索」も「ページ前方探索」も同程度のGC効率となる時でも、「ページ前方探索」モードが選択される。それは、物理アドレス順にまとまった空き領域の確保が保証されること、「ページ前方探索」モードの方がGCのTATが小さいこととを理由とする。
 実施例2によれば、ストレージシステム502の構成や状態に適したページがコピー元として選択されるので、GC効率をより向上させることが期待できる。
 なお、判定の順序は、必ずしも、F11、F13、F15の順でなくてもよい。また、F11、F13及びF15の全ての判定が行われないでもよい。例えば、F11の判定結果が偽の場合、F13及びF15無しに、ページ前方探索モードが選択されてもよい。また、F11の判定無しに、F13の判定が行われ、F13の判定結果が真の場合、ページ前方探索モードが選択されてもよい。また、F13の判定結果が偽の場合、F11の判定及びF15の判定のいずれも行うこと無しに、高GC効率ページ探索モードが選択されてもよい。
 また、実施例2でも実施例1でも、ストレージシステムには、複数の追記型ドライブで構成されたRAIDグループである追記型RAIDグループと、複数の非追記型ドライブ(追記型ドライブではないドライブ)で構成されたRAIDグループである非追記型RAIDグループとのうち少なくとも追記型RAIDグループが含まれていてよい。
 実施例3を説明する。その際、実施例1及び2との相違点を主に説明し、実施例1及び2との共通点については説明を省略又は簡略する。
 一般に、GCを行うストレージシステムに採用されるGCの種類は1種類であるが、本実施例に係るストレージシステムでは、Threading GCとCopying GCの両方が採用されている。Threading GCの1つの問題点として、空き領域の管理ために論物テーブル及び物論テーブルのうちの少なくとも一方がメモリに収まらない程に大サイズになり得る点があるが、本実施例では、Threading GCは、Copying GCでコピーが行われる領域単位と同じ領域単位で行われる。
 すなわち、図9に例示するように、コントローラ(プロセッサ及びメモリを含む)が、Threading GCとして、物理アドレス空間に既存のデータを更新、圧縮又は重複排除することによりその既存データを無効化した結果として、その無効化されたデータの領域を含んだページが空きページになった場合(例えば、物理アドレス空間において、現在の追記先物理アドレスよりも前方に(先頭側に)空きページが生じた場合)、データの追記先となる物理アドレスを、現在の追記先物理アドレスが指すページが追記可能ページであっても(又は追記不可ページとなった場合に)、既存データの無効化により新たに生じた空きページの先頭に変更する。このため、次の追記では、追記対象のデータは、その空きページの先頭から書き込まれる。図9の例によれば、ページ305A、305B、305C及び305Eが、追記不可ページであり、ページ305Dが、物理アドレス空間の途中に生じた空きページ(追記可能ページ)である。図9の例によれば、コントローラは、新たな追記対象データ(例えば、クライアント1からの更新後データ、又は、ポストプロセス算術圧縮により生成された圧縮データ)の追記先物理アドレスとして、追記不可ページ305A、305B、305C及び305Eのいずれのページのいずれの断片空き領域の先頭アドレスも選択しない。コントローラは、新たな追記対象データの追記先物理アドレスとして、追記可能ページ504Dの空き領域の先頭アドレスを選択する。
 一方、Coping GC(例えば所定のGC周期に開始するGC)では、コントローラは、図10に例示するように、追記可能ページ305Dに、追記不可ページ305A、305B、305C及び305Eの生存データをコピーする。これにより、ページ305A、305B、305C及び305Eの各々が、追記可能ページとなる。
 本実施例によれば、Copying GCに加えてThreading GCが行われ、Threading GCが、Copying GCでコピーが行われる領域単位と同じ領域単位で行われる。このため、論物テーブルT1及び物論テーブルT2のうちの少なくとも1つのサイズを増やすこと無しに、Copying GCに加えてThreading GCを行うことができる。
 実施例4を説明する。その際、実施例1~3との相違点を主に説明し、実施例1~3との共通点については説明を省略又は簡略する。
 実施例4では、少なくとも1つの追記型RAIDグループにおける各追記型ドライブのブロックのサイズが、ページサイズより大きい。例えば、図11に例示するように、SMRドライブのブロックのサイズが、ページサイズのw倍(wは2以上の整数)であるとする。1つのブロックは、複数のサブブロックで構成されている。1つのサブブロックは、1つのページ、又は、1つのページの一部分に対応した領域である。後者の場合、例えば、1つのページに、追記型RAIDグループ内の異なる複数のSMRドライブがそれぞれ有する複数のサブブロックが対応している。
 このようなケースでは、Copying GC又はThreading GCにおいて、追記先ページの遷移順が、ブロックにおけるアドレス順と異なると、ブロックから生存データを読み出せないことが起こり得る。
 そこで、本実施例では、コントローラは、追記型ドライブのブロックのサイズに基づき物理アドレス空間についての単位領域サイズを決定する。以下、物理アドレス空間における各単位領域を、「物理追記領域」と言う。複数の物理追記領域には、それぞれ、異なる複数のブロックセットが対応している。各ブロックセットは、物理アドレス空間に対応した追記型RAIDグループ内の異なる複数の追記型ドライブがそれぞれ有する複数のブロックである。
 コントローラは、ページ単位に代えて又は加えて、物理追記領域単位で、追記不可領域か追記可能領域かを管理する。コントローラは、Copying GCにおいて、生存データのコピー先を、ページ単位ではなく、物理追記領域単位で選択する。これにより、Copying GCでは、図11に例示するように、追記型ドライブ(図11ではSMRドライブ)において、1以上のコピー元ブロックからコピー先ブロックに1以上の生存データがコピーされる。その際、その1以上の生存データは、コピー先ブロックにアドレス順にシーケンシャルに書き込まれる。1以上のコピー元ブロックは、1以上のコピー元物理追記領域(断片空き領域を含んだ追記不可領域)に対応する。コピー先ブロックは、コピー先物理追記領域に対応する。
 実施例4によれば、追記型ドライブからの生存データの読み出しを不可能にしてしまうこと無しに、Copying GC(及びThreading GC)を実行できる。
 以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、必ずしも論物テーブルT1及び物論テーブルT2の両方が無くてもよく、論物テーブルT1及び物論テーブルT2の一方があればよい。つまり、論物テーブルT1及び物論テーブルT2の一方又はそれらの組合せが、論理アドレスと物理アドレス間のアドレス変換のためのアドレス変換情報の一例でよい。
2,502 ストレージシステム

Claims (15)

 1以上のRAIDグループを含む複数の物理記憶デバイスと、
 前記複数の物理記憶デバイスに接続されプロセッサ及び記憶部を含んだコントローラと
を有し、
 前記1以上のRAIDグループの各々の領域は、複数のストライプに分割されており、前記複数のストライプの各々は、複数の物理記憶デバイスにそれぞれ対応した複数の領域である複数のストリップで構成されており、
 前記1以上のRAIDグループの各々のRAID構成は、ストライプ毎にパリティが必要なRAID構成であり、
 論理アドレス空間の論理アドレスと、前記1以上のRAIDグループについての物理アドレス空間の物理アドレスとの間のアドレス変換のために前記コントローラにより参照される情報であるアドレス変換情報が、前記記憶部と物理記憶デバイスとのうちの少なくとも1つに存在し、
 前記物理アドレス空間には、前記コントローラによりデータが追記的に書き込まれるようになっており、
 前記物理アドレス空間には、更新、圧縮及び排除のうちのいずれかの対象のデータである旧データが前記コントローラにより無効化されることにより断片空き領域が生じるようになっており、
 前記コントローラが、前記アドレス変換情報を用いてコピーGC(ガベージコレクション)処理を実行し、
 前記コピーGC処理が、
  (A)前記物理アドレス空間を構成する複数の領域である複数の物理領域から、それぞれ断片空き領域を含んだ1以上の追記不可物理領域を1以上のコピー元物理領域として選択すること、
  (B)前記複数の物理領域から、追記可能物理領域をコピー先物理領域として選択すること、
  (C)前記選択された1以上のコピー元物理領域内の1以上の生存データを、前記選択されたコピー先物理領域の空き領域の先頭からシーケンシャルに、ストリップ単位又はストライプ単位に書き込むこと
を含み、
 (C)において、前記コントローラが、書込み対象データのサイズがストリップ単位又はストライプ単位の書込みに必要なサイズに満たない場合、その書込み対象データに対してパディングを行うことで、その書込み対象データをストリップ単位又はストライプ単位で書き込む、
ストレージシステム。
 (C)において、前記コントローラは、
  前記1以上の生存データのうちの最後の書込み対象データ以外の書込み対象データを、パディング無しにストライプ単位で書込み、
  前記1以上の生存データのうちの最後の書込み対象データのサイズがストリップ単位又はストライプ単位の書込みに必要なサイズに満たない場合にのみ、ストリップ単位又はストライプ単位の書き込みためのパディングを行う、
請求項1記載のストレージシステム。
 パディングされるデータのサイズは、ストリップサイズ未満である、
請求項2記載のストレージシステム。
 前記コントローラは、物理アドレス順に断片空き領域を含んだ物理領域を探索し見つかった物理領域をコピー元物理領域として選択するモードである領域前方探索モードと、コピー元物理領域となることの利得及びコストを基に算出されたGC効率が比較的高い物理領域を探索し見つかった物理領域をコピー元物理領域として選択するモードである高GC効率領域探索モードとのうちのいずれかのモードを選択し、
 (A)は、選択されたモードに従いコピー元物理領域を選択することである、
請求項1記載のストレージシステム。
 前記コントローラは、前記アドレス変換情報が前記メモリにあれば、前記高GC効率領域探索モードを選択する、
請求項4記載のストレージシステム。
 前記コントローラは、前記アドレス変換情報が前記メモリになくても、前記物理アドレス空間に対応したRAIDグループを構成する物理記憶デバイスが追記型デバイスでなければ、前記高GC効率領域探索モードを選択する、
請求項5記載のストレージシステム。
 前記コントローラは、前記アドレス変換情報が前記メモリになくても、前記物理アドレス空間に対応したRAIDグループを構成する物理記憶デバイスが追記型デバイスでなく、且つ、前記物理アドレス空間に関しデータ年齢に対するアクセス頻度低下変動の速度が比較的遅ければ、前記高GC効率領域探索モードを選択する、
請求項6記載のストレージシステム。
 前記コントローラは、前記アドレス変換情報が前記メモリになければ、前記領域前方探索モードを選択する、
請求項4記載のストレージシステム。
 前記コントローラは、前記アドレス変換情報が前記メモリにあっても、前記物理アドレス空間に対応したRAIDグループを構成する物理記憶デバイスが追記型デバイスであれば、前記領域前方探索モードを選択する、
請求項8記載のストレージシステム。
 前記コントローラは、前記アドレス変換情報が前記メモリにあり、且つ、前記物理アドレス空間に対応したRAIDグループを構成する物理記憶デバイスが追記型デバイスでなくても、前記物理アドレス空間に関しデータ年齢に対するアクセス頻度低下変動の速度が比較的早ければ、前記領域前方探索モードを選択する、
請求項9記載のストレージシステム。
 前記コントローラは、前記物理アドレス空間に対応したRAIDグループを構成する物理記憶デバイスが追記型デバイスでなければ、前記高GC効率領域探索モードを選択し、前記物理アドレス空間に対応したRAIDグループを構成する物理記憶デバイスが追記型デバイスであれば、前記領域前方探索モードを選択する、
請求項4記載のストレージシステム。
 前記コントローラは、前記物理アドレス空間に関しデータ年齢に対するアクセス頻度低下変動の速度が比較的遅ければ、前記高GC効率領域探索モードを選択し、前記物理アドレス空間に関しデータ年齢に対するアクセス頻度低下変動の速度が比較的早ければ、前記領域前方探索モードを選択する、
請求項4記載のストレージシステム。
 前記コントローラは、前記物理アドレス空間に存在するデータを更新、圧縮又は重複排除することにより前記既存データを無効化した結果として、その無効化されたデータの領域を含んだ物理領域が新たに空き物理領域になった場合、追記先物理アドレスを、その新たな空き物理領域の先頭に変更する、
請求項1記載のストレージシステム。
 前記物理アドレス空間は、複数の追記型デバイスで構成されたRAIDグループに対応しており、
 前記複数の追記型デバイスの各々は、複数のドライブ追記領域を有しており、
 前記複数のドライブ追記領域の各々は、データがアドレス順に書き込まれるべき記憶領域であり、
 前記物理アドレス空間内の前記複数の物理領域に、それぞれ、異なる複数のドライブ追記領域セットが対応付けられており、
 前記複数のドライブ追記領域セットの各々は、前記複数の追記型デバイスがそれぞれ有する複数のドライブ追記領域である、
請求項1記載のストレージシステム。
 ストレージシステムの記憶制御方法であって、
 前記ストレージシステムが、
  1以上のRAIDグループを含む複数の物理記憶デバイスと、
  前記複数の物理記憶デバイスに接続されプロセッサ及び記憶部を含んだコントローラと
を有し、
 前記1以上のRAIDグループの各々の領域は、複数のストライプに分割されており、前記複数のストライプの各々は、複数の物理記憶デバイスにそれぞれ対応した複数の領域である複数のストリップで構成されており、
 前記1以上のRAIDグループの各々のRAID構成は、ストライプ毎にパリティが必要なRAID構成であり、
 論理アドレス空間の論理アドレスと、前記1以上のRAIDグループについての物理アドレス空間の物理アドレスとの間のアドレス変換のために前記コントローラにより参照される情報であるアドレス変換情報が、前記記憶部と物理記憶デバイスとのうちの少なくとも1つに存在し、
 前記物理アドレス空間には、前記コントローラによりデータが追記的に書き込まれるようになっており、
 前記物理アドレス空間には、更新、圧縮及び排除のうちのいずれかの対象のデータである旧データが前記コントローラにより無効化されることにより断片空き領域が生じるようになっており、
 前記記憶制御方法が、
 (A)前記アドレス変換情報を参照して、前記物理アドレス空間を構成する複数の領域である複数の物理領域から、それぞれ断片空き領域を含んだ1以上の追記不可物理領域を1以上のコピー元物理領域として選択し、
 (B)前記アドレス変換情報を参照して、前記複数の物理領域から、追記可能物理領域をコピー先物理領域として選択し、
 (C)前記選択された1以上のコピー元物理領域内の1以上の生存データを、前記選択されたコピー先物理領域の空き領域の先頭からシーケンシャルに、ストリップ単位又はストライプ単位に書き込み、書込み対象データのサイズがストリップ単位又はストライプ単位の書込みに必要なサイズに満たない場合、その書込み対象データに対してパディングを行うことで、その書込み対象データをストリップ単位又はストライプ単位で書き込む、
記憶制御方法。

 
PCT/JP2015/063563 2015-05-12 2015-05-12 ストレージシステムおよび記憶制御方法 WO2016181481A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/549,283 US10621083B2 (en) 2015-05-12 2015-05-12 Storage system and storage control method
PCT/JP2015/063563 WO2016181481A1 (ja) 2015-05-12 2015-05-12 ストレージシステムおよび記憶制御方法
JP2017517503A JP6385570B2 (ja) 2015-05-12 2015-05-12 ストレージシステムおよび記憶制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/063563 WO2016181481A1 (ja) 2015-05-12 2015-05-12 ストレージシステムおよび記憶制御方法

Publications (1)

Publication Number Publication Date
WO2016181481A1 true WO2016181481A1 (ja) 2016-11-17

Family

ID=57249076

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/063563 WO2016181481A1 (ja) 2015-05-12 2015-05-12 ストレージシステムおよび記憶制御方法

Country Status (3)

Country Link
US (1) US10621083B2 (ja)
JP (1) JP6385570B2 (ja)
WO (1) WO2016181481A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018173915A (ja) * 2017-03-31 2018-11-08 日本電気株式会社 バックアップシステム、ストレージ装置、データ転送方法及びプログラム
CN110209340A (zh) * 2018-02-28 2019-09-06 杭州宏杉科技股份有限公司 一种全闪存存储***的访问方法及装置

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6721491B2 (ja) * 2016-11-18 2020-07-15 キオクシア株式会社 記憶システム
JP2018181207A (ja) * 2017-04-20 2018-11-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP2019057172A (ja) 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
US10884650B1 (en) * 2017-10-25 2021-01-05 EMC IP Holding Company LLC Opportunistic compression of replicated data in a content addressable storage system
JP6608468B2 (ja) * 2018-01-26 2019-11-20 株式会社日立製作所 ストレージ装置及びその制御方法
US10956078B2 (en) 2018-03-27 2021-03-23 EMC IP Holding Company LLC Storage system with loopback replication process providing object-dependent slice assignment
US10866969B2 (en) 2018-03-28 2020-12-15 EMC IP Holding Company LLC Storage system with loopback replication process providing unique identifiers for collision-free object pairing
US10983962B2 (en) 2018-05-29 2021-04-20 EMC IP Holding Company LLC Processing device utilizing polynomial-based signature subspace for efficient generation of deduplication estimate
US10977216B2 (en) 2018-05-29 2021-04-13 EMC IP Holding Company LLC Processing device utilizing content-based signature prefix for efficient generation of deduplication estimate
US11593313B2 (en) 2018-05-29 2023-02-28 EMC IP Holding Company LLC Processing device configured for efficient generation of data reduction estimates for combinations of datasets
US11609883B2 (en) 2018-05-29 2023-03-21 EMC IP Holding Company LLC Processing device configured for efficient generation of compression estimates for datasets
US10826990B2 (en) 2018-07-23 2020-11-03 EMC IP Holding Company LLC Clustered storage system configured for bandwidth efficient processing of writes at sizes below a native page size
US10684915B2 (en) 2018-07-25 2020-06-16 EMC IP Holding Company LLC Efficient packing of compressed data in storage system implementing data striping
US10635533B2 (en) 2018-07-30 2020-04-28 EMC IP Holding Company LLC Efficient computation of parity data in storage system implementing data striping
US10754559B1 (en) 2019-03-08 2020-08-25 EMC IP Holding Company LLC Active-active storage clustering with clock synchronization
US11137929B2 (en) 2019-06-21 2021-10-05 EMC IP Holding Company LLC Storage system configured to support cascade replication
US11079961B1 (en) 2020-02-03 2021-08-03 EMC IP Holding Company LLC Storage system with write-via-hash functionality for synchronous replication of logical storage volumes
US11360712B2 (en) 2020-02-03 2022-06-14 EMC IP Holding Company LLC Storage system with continuous data verification for synchronous replication of logical storage volumes
US11055028B1 (en) 2020-02-03 2021-07-06 EMC IP Holding Company LLC Storage system with reduced read latency
US11249654B2 (en) 2020-02-18 2022-02-15 EMC IP Holding Company LLC Storage system with efficient data and parity distribution across mixed-capacity storage devices
US11144232B2 (en) 2020-02-21 2021-10-12 EMC IP Holding Company LLC Storage system with efficient snapshot pair creation during synchronous replication of logical storage volumes
US11079969B1 (en) 2020-02-25 2021-08-03 EMC IP Holding Company LLC Disk array enclosure configured for metadata and data storage processing
US11281386B2 (en) 2020-02-25 2022-03-22 EMC IP Holding Company LLC Disk array enclosure with metadata journal
US11061618B1 (en) 2020-02-25 2021-07-13 EMC IP Holding Company LLC Disk array enclosure configured to determine metadata page location based on metadata identifier
US11144461B2 (en) 2020-03-09 2021-10-12 EMC IP Holding Company LLC Bandwidth efficient access to persistent storage in a distributed storage system
US11010251B1 (en) 2020-03-10 2021-05-18 EMC IP Holding Company LLC Metadata update journal destaging with preload phase for efficient metadata recovery in a distributed storage system
US11126361B1 (en) 2020-03-16 2021-09-21 EMC IP Holding Company LLC Multi-level bucket aggregation for journal destaging in a distributed storage system
US11194664B2 (en) 2020-04-20 2021-12-07 EMC IP Holding Company LLC Storage system configured to guarantee sufficient capacity for a distributed raid rebuild process
US11169880B1 (en) * 2020-04-20 2021-11-09 EMC IP Holding Company LLC Storage system configured to guarantee sufficient capacity for a distributed raid rebuild process
US11494301B2 (en) 2020-05-12 2022-11-08 EMC IP Holding Company LLC Storage system journal ownership mechanism
US11392295B2 (en) 2020-05-27 2022-07-19 EMC IP Holding Company LLC Front-end offload of storage system processing
US11093161B1 (en) 2020-06-01 2021-08-17 EMC IP Holding Company LLC Storage system with module affinity link selection for synchronous replication of logical storage volumes
US11513882B2 (en) 2020-06-08 2022-11-29 EMC IP Holding Company LLC Dynamic modification of IO shaping mechanisms of multiple storage nodes in a distributed storage system
US11886911B2 (en) 2020-06-29 2024-01-30 EMC IP Holding Company LLC End-to-end quality of service mechanism for storage system using prioritized thread queues
US11327812B1 (en) 2020-10-19 2022-05-10 EMC IP Holding Company LLC Distributed storage system with per-core rebalancing of thread queues
US11531470B2 (en) 2020-10-21 2022-12-20 EMC IP Holding Company LLC Offload of storage system data recovery to storage devices
US11853568B2 (en) 2020-10-21 2023-12-26 EMC IP Holding Company LLC Front-end offload of storage system hash and compression processing
US11436138B2 (en) 2020-10-21 2022-09-06 EMC IP Holding Company LLC Adaptive endurance tuning of solid-state storage system
US11616722B2 (en) 2020-10-22 2023-03-28 EMC IP Holding Company LLC Storage system with adaptive flow control using multiple feedback loops
US11314416B1 (en) 2020-10-23 2022-04-26 EMC IP Holding Company LLC Defragmentation of striped volume in data storage system
US11435921B2 (en) 2020-11-19 2022-09-06 EMC IP Holding Company LLC Selective deduplication in a distributed storage system
US11687245B2 (en) 2020-11-19 2023-06-27 EMC IP Holding Company LLC Dynamic slice assignment in a distributed storage system
US11494405B2 (en) 2020-12-21 2022-11-08 EMC IP Holding Company LLC Lock contention resolution for active-active replication performed in conjunction with journal recovery
US11481291B2 (en) 2021-01-12 2022-10-25 EMC IP Holding Company LLC Alternative storage node communication channel using storage devices group in a distributed storage system
US11875198B2 (en) 2021-03-22 2024-01-16 EMC IP Holding Company LLC Synchronization object issue detection using object type queues and associated monitor threads in a storage system
US11520527B1 (en) 2021-06-11 2022-12-06 EMC IP Holding Company LLC Persistent metadata storage in a storage system
US11775202B2 (en) 2021-07-12 2023-10-03 EMC IP Holding Company LLC Read stream identification in a distributed storage system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010738A (ja) * 1998-06-17 2000-01-14 Toshiba Corp ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
WO2014184941A1 (ja) * 2013-05-17 2014-11-20 株式会社日立製作所 ストレージ装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
US20100037091A1 (en) * 2008-08-06 2010-02-11 Anant Baderdinni Logical drive bad block management of redundant array of independent disks
US9268640B1 (en) * 2013-12-20 2016-02-23 Emc Corporation Limiting data loss on parity RAID groups

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010738A (ja) * 1998-06-17 2000-01-14 Toshiba Corp ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
WO2014184941A1 (ja) * 2013-05-17 2014-11-20 株式会社日立製作所 ストレージ装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018173915A (ja) * 2017-03-31 2018-11-08 日本電気株式会社 バックアップシステム、ストレージ装置、データ転送方法及びプログラム
CN110209340A (zh) * 2018-02-28 2019-09-06 杭州宏杉科技股份有限公司 一种全闪存存储***的访问方法及装置
CN110209340B (zh) * 2018-02-28 2022-08-02 杭州宏杉科技股份有限公司 一种全闪存存储***的访问方法及装置

Also Published As

Publication number Publication date
US20180095873A1 (en) 2018-04-05
US10621083B2 (en) 2020-04-14
JP6385570B2 (ja) 2018-09-05
JPWO2016181481A1 (ja) 2017-11-24

Similar Documents

Publication Publication Date Title
JP6385570B2 (ja) ストレージシステムおよび記憶制御方法
JP6304406B2 (ja) ストレージ装置、プログラム、情報処理方法
US10152381B1 (en) Using storage defragmentation function to facilitate system checkpoint
US8639669B1 (en) Method and apparatus for determining optimal chunk sizes of a deduplicated storage system
JP6124902B2 (ja) ストレージシステムにおける可変長符号化
JP6240071B2 (ja) ストレージシステムにおけるマッピングテーブルを効果的に管理するコンピューターシステムおよびその方法
US8712963B1 (en) Method and apparatus for content-aware resizing of data chunks for replication
US9229870B1 (en) Managing cache systems of storage systems
JP5221756B2 (ja) データ要素を圧縮して格納するストレージシステム及び記憶制御方法
US10691354B1 (en) Method and system of disk access pattern selection for content based storage RAID system
US20180267856A1 (en) Distributed storage system, data storage method, and software program
US20190129971A1 (en) Storage system and method of controlling storage system
US20120226672A1 (en) Method and Apparatus to Align and Deduplicate Objects
US9507673B1 (en) Method and system for performing an incremental restore from block-based backup
WO2014136183A1 (ja) ストレージ装置及びデータ管理方法
US10664397B2 (en) Cache recovery method in a distributed storage system
US10713221B2 (en) Dual layer deduplication for a file system running over a deduplicated block storage
JP6840113B2 (ja) ストレージコントローラ及びストレージ制御方法
US10929066B1 (en) User stream aware file systems with user stream detection
KR101525453B1 (ko) 데이터 접근빈도를 이용한 raid 시스템의 데이터 복제 방법
US20200341848A1 (en) Time Addressable Storage In a Content Addressable Storage System
WO2016006023A1 (ja) ストレージ装置、計算機システム及び方法
US10956366B2 (en) Dynamic physical capacity allocation in an unbalanced CAS system
JP6419662B2 (ja) ストレージシステム及びデータ重複検出方法
WO2018061161A1 (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: 15891806

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15549283

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2017517503

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15891806

Country of ref document: EP

Kind code of ref document: A1