JP2019128906A - ストレージ装置及びその制御方法 - Google Patents

ストレージ装置及びその制御方法 Download PDF

Info

Publication number
JP2019128906A
JP2019128906A JP2018011882A JP2018011882A JP2019128906A JP 2019128906 A JP2019128906 A JP 2019128906A JP 2018011882 A JP2018011882 A JP 2018011882A JP 2018011882 A JP2018011882 A JP 2018011882A JP 2019128906 A JP2019128906 A JP 2019128906A
Authority
JP
Japan
Prior art keywords
data
write
stored
compression
space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018011882A
Other languages
English (en)
Other versions
JP6608468B2 (ja
Inventor
高大 阿部
Kota Abe
高大 阿部
蘭 緒方
Ran Ogata
蘭 緒方
須藤 敦之
Atsushi Sudo
敦之 須藤
憲亮 成田
Noriaki Narita
憲亮 成田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018011882A priority Critical patent/JP6608468B2/ja
Priority to US16/123,738 priority patent/US10521122B2/en
Publication of JP2019128906A publication Critical patent/JP2019128906A/ja
Application granted granted Critical
Publication of JP6608468B2 publication Critical patent/JP6608468B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0653Monitoring storage devices or 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ガベージの発生に起因する記憶領域の枯渇を防止しながら、ホストから見た応答性能の低下をも防止し得るストレージ装置及びその制御方法を提案する。【解決手段】プールを構成する1又は複数の記憶デバイスと、仮想的な論理空間である追書き空間を管理し、ホストにより仮想ボリュームに書き込まれたデータのうちの圧縮対象のデータを圧縮して追書き空間に追記し、追書き空間に追記した圧縮後のデータを記憶デバイスに書き込むコントローラとをストレージ装置に設け、コントローラは、プールの使用量が閾値以上となった場合には、ホストからのライト要求の受付を制限し、コントローラが、追書き空間に追記したデータが更新された場合に、所定の条件を満たすか否かを判定し、所定の条件を満たす場合に、更新後の当該データの圧縮データを、追書き空間に追記されている更新前の当該データの圧縮データに上書きするようにした。【選択図】 図17

Description

本発明は、ストレージ装置及びその制御方法に関し、例えば、データの圧縮・重複排除機能が搭載されたストレージ装置に適用して好適なものである。
従来、ストレージ装置は、低コストで大量のデータを保存できることが要求されている。こうした要求を満たすために、データを可逆圧縮(以下、これを単に圧縮と呼ぶ)して記録する技術が知られている。圧縮によりデータサイズを縮小してから記憶デバイスに記録することにより、データを圧縮せずに記憶デバイスに記録するよりも多くのデータをストレージ装置に格納できる。その結果、記憶媒体のビットコストや、ストレージ装置の消費電力コスト等などのデータの保持コストを削減できる。
データの圧縮後のデータサイズはそのデータの内容によって異なり、圧縮前のデータのデータサイズが同じであったとしても、圧縮後のデータのデータサイズが同じになるとは限らない。このためボリュームに圧縮されて書き込まれたデータが更新された場合、その更新後のデータを更新前のデータに上書きできないときがある。
そこで、圧縮してボリュームに書き込まれたデータが更新された場合、更新後のデータを圧縮したものを、更新前のデータとは別個にボリュームに書き込むことが特許文献1に開示されている。
なお、更新後のデータが更新前のデータとは別個にボリューム書き込まれた場合、更新前のデータがボリューム内に残ることになるが、このデータは不要である。このため圧縮機能が搭載されたストレージ装置では、かかる不要となったデータ(以下、これをガベージと呼ぶ)を破棄するガベージコレクションと呼ばれる処理が定期的に実行される。
一方、ストレージ装置において、装置内の記憶領域に格納すべきデータ量を削減するもう一つの技術として、重複排除技術がある。重複排除技術は、ストレージ装置内に同一内容のデータが複数存在することをストレージ装置が検出した場合に、そのうちの1つだけをストレージ装置内の記憶デバイスに残し、残りのデータを記憶デバイスに格納しないようにする技術である。
重複排除技術は、圧縮技術と併用可能である。例えば、特許文献2には、上位装置から転送されてきたデータの中で重複しているデータについては重複排除処理を行い、重複排除の行われなかったデータを圧縮するストレージ装置が開示されている。
データの圧縮・重複排除を行うタイミングとしては、上位装置からのI/O(Input/Output)と同期してデータの圧縮・重複排除処理を実行する制御方式(以下、これをインライン(Inline)方式と呼ぶ)と、上位装置からのI/Oとは非同期にデータの圧縮・重複排除処理を実行する制御方式(以下、これをポストプロセス(Postprocess)方式)とが存在する。
インライン方式は、上位装置にI/Oのレスポンスを送信する前に圧縮・重複排除処理を実行するため、システム性能(レスポンス性能及びスループット性能)が低下するものの、圧縮・重複排除によるデータの削減結果が直ぐに得られるため、ストレージ装置に用意すべき記憶容量が圧縮・重複排除処理後のデータ量だけでよいというメリットがある。
これに対して、ポストプロセス方式は、I/Oのレスポンスを送信した後に圧縮・重複排除処理を実行するため、システム性能が向上するというメリットがあるものの、圧縮・重複排除後のデータを保存するための記憶領域以外に圧縮・重複排除処理が施されていないデータを一時的に保存しておくための記憶領域が必要となるため、その分、より多くの記憶領域が必要となるというデメリットもある。
国際公開第2017/141315号 特許第521691号明細書
ところで、圧縮機能が搭載されたストレージ装置において、定期的にガベージコレクションを実行したとしても、データ更新が急増した場合や、ガベージコレクション処理の実行周期に対してデータ更新の頻度が多い場合には、ガベージコレクション処理によるガベージの破棄量よりもデータ更新に起因して発生するガベージの発生量のほうが多くなり、ガベージの増加によってプールが枯渇するおそれがある。
このような事態の発生を防止する方法として、プールが枯渇しそうになった場合に、ホストからのI/Oに対して受付を制限する方法が考えられるものの、このようなI/Oの受付制限を行った場合、ホストから見たストレージ装置の応答性能が低下するという問題がある。
本発明は以上の点を考慮してなされたもので、ガベージの発生に起因する記憶領域の枯渇を防止しながら、ホストから見た応答性能の低下をも防止し得るストレージ装置及びその制御方法を提案しようとするものである。
かかる課題を解決するため本発明においては、ホストに対して仮想的な記憶空間である仮想ボリュームを提供するストレージ装置において、プールを構成する1又は複数の記憶デバイスと、仮想的な論理空間である追書き空間を管理し、前記ホストにより前記仮想ボリュームに書き込まれた前記データのうちの圧縮対象のデータを圧縮して前記追書き空間に追記し、前記追書き空間に追記した圧縮後の前記データを前記記憶デバイスに書き込むコントローラとを設け、前記コントローラが、前記プールの使用量が閾値以上となった場合には、前記ホストからの前記ライト要求の受付を制限し、前記追書き空間に追記したデータが更新された場合に、所定の条件を満たす場合には、更新後の当該データの圧縮データを、前記追書き空間に追記されている更新前の当該データの圧縮データに上書きするようにした。
また本発明においては、ホストに対して仮想的な記憶空間である仮想ボリュームを提供するストレージ装置の制御方法において、前記ストレージ装置は、プールを構成する1又は複数の記憶デバイスと、仮想的な論理空間である追書き空間を管理し、前記ホストにより前記仮想ボリュームに書き込まれた前記データのうちの圧縮対象のデータを圧縮して前記追書き空間に追記し、前記追書き空間に追記した圧縮後の前記データを前記記憶デバイスに書き込むコントローラとを有し、前記コントローラは、前記プールの使用量が閾値以上となった場合には、前記ホストからの前記ライト要求の受付を制限し、前記コントローラが、前記追書き空間に追記したデータが更新された場合に、所定の条件を満たすか否かを判定する第1のステップと、前記所定の条件を満たす場合に、前記コントローラが、更新後の当該データの圧縮データを、前記追書き空間に追記されている更新前の当該データの圧縮データに上書きする第2のステップとを設けるようにした。
本ストレージ装置及びその制御方法によれば、データの更新に起因するガベージの発生を抑え、ガベージの増加に起因するプールの枯渇を抑制することができる。またホストからのライト要求が受付制限される事態の発生を有効に抑制することができる。
本発明によれば、ガベージの発生に起因する記憶領域の枯渇を防止しながら、ホストから見た応答性能の低下をも防止し得るストレージ装置及びその制御方法を実現できる。
本実施形態に係るストレージ装置を含む、計算機システムの構成例を示すブロック図である。 仮想ボリュームとページの関係を示す概念図である。 管理情報の一覧を示すブロック図である。 ページ管理テーブルの構成例を示す図表である。 プール管理テーブルの構成例を示す図表である。 仮想ボリューム管理テーブルの構成例を示す図表である。 追書き空間マッピングテーブルの構成例を示す図表である。 LP変換テーブルの構成例を示す図表である。 FPMQ及びFPTDの構成例を示す図表である。 ガベージ管理テーブルの構成例を示す図表である。 追書き上書き条件管理テーブルの構成例を示す図表である。 ストレージ装置に実装されたプログラム等の説明に供するブロック図である。 ライト処理の処理手順を示すフローチャートである。 圧縮・重複排除処理の処理手順を示すフローチャートである。 重複排除処理の処理手順を示すフローチャートである。 重複排除処理の処理手順を示すフローチャートである。 PA決定及び書込み処理の処理手順を示すフローチャートである。 追書き上書き要否判定処理の処理手順を示すフローチャートである。 デステージ処理の処理手順を示すフローチャートである。 ガベージコレクション処理の処理手順を示すフローチャートである。
以下図面について、本発明の一実施形態を詳述する。
なお、以下の実施形態において、ストレージ装置内で実行される処理について、「プログラム」を主語として説明を行う場合がある。実際には、ストレージ装置が有するプロセッサ(CPU:Central Processing Unit)がプログラムを実行することによって、プログラムに記述された処理が行われるため、処理の主体はプロセッサ(CPU)であるが、説明が冗長になることを防ぐため、プログラムを主語にして処理の内容を説明することがある。また、プログラムの一部又は全部が専用のハードウェアによって実現されてもよい。
また、以下で説明する各種プログラムは、プログラム配布サーバや計算機が読み取り可能な記憶メディアによって提供され、プログラムを実行する各装置にインストールされてもよい。計算機が読み取り可能な記憶メディアとは、非一時的なコンピュータ可読媒体で、例えばIC(Integrated Circuit)カード、SD(Secure Digital)カード、DVD(Digital Versatile Disc)等の不揮発性記憶媒体である。
実施形態の説明に入る前に、本明細書で用いられる各種用語について説明する。
本明細書において、「圧縮」とはLZW(Lempel-Ziv-Welch)アルゴリズム等の可逆圧縮アルゴリズムを用いて、データの意味を保ったままデータサイズを縮小する処理のことを意味する。本実施形態に係るストレージ装置では、ホストにより書き込まれたデータの圧縮を行うことがある。ストレージ装置で圧縮処理が行われたことによりサイズの縮小されたデータのことを、「圧縮データ」と呼び、ストレージ装置で圧縮処理が施されていないデータの事を「非圧縮データ」と呼ぶ。また可逆圧縮アルゴリズムを用いて、圧縮データを元のデータサイズに戻す処理のことを、「伸長」と呼ぶ。
「ボリューム」とは、ストレージ装置や記憶デバイス等のターゲットデバイスが、ホスト計算機等のイニシエータデバイスに提供する記憶空間のことを意味する。イニシエータデバイスが記憶空間上のある位置(アドレス)に対するデータの書き込み要求を発行すると、そのアドレスに割り当てられている記憶領域にデータが格納される。本実施形態に係るストレージ装置は、ボリュームとして、いわゆるThin Provisioning技術により形成される仮想ボリュームをホストに提供する。仮想ボリュームは、その初期状態(仮想ボリュームが定義された直後)では、仮想ボリューム上の各アドレスに記憶領域が割り当てられていない。ストレージ装置は、イニシエータデバイス(ホスト)から記憶空間上のアドレスに対するデータ書き込み要求を受領した時点で、そのアドレスに割り当てる記憶領域を動的に決定する。
「ブロック」とは、ボリューム上の領域を意味する。以下で説明する実施形態では、ブロックは、イニシエータデバイスがボリュームにアクセスする時の最小アクセス単位と等しいサイズの領域で、固定長である。ブロックのサイズは一例として512バイトである。イニシエータデバイスがボリューム上の領域にアクセスする際には、各ブロックにアサインされているアドレスを指定することでアクセスする。このアドレスは、論理ブロックアドレス(以下、これをLBA(Logical Block Address)と呼ぶ)と呼ばれる。ボリュームの先頭ブロックのLBAが0で、それ以降のブロックには順に1,2,……の連続番号が付される。また、以下の実施形態では、ボリューム上の領域を特定するアドレスとして、LBA以外のアドレスを用いることがある。これについては、実施形態中で説明する。
「重複排除処理」とは、ストレージ装置内に同一内容のデータが複数存在する場合、そのうちの1つだけをストレージ装置内に残し、それ以外のデータをストレージ装置から削除する処理を指す。ストレージ装置内に同一内容のデータが存在するか否かを判定することを「重複判定」と呼び、その処理のことを「重複判定処理」と呼ぶ。なお、特に断りのない限り、重複排除処理は重複判定処理を含む。
以下で説明する実施形態に係るストレージ装置では、チャンクと呼ばれる所定サイズのデータ毎に重複判定を行う。以下の実施形態では、チャンクのサイズが8KBの例について説明するが、チャンクのサイズは8KB以外のサイズであってもよい。同一内容のデータ(又はチャンク)のことを「重複データ(又は重複チャンク)」と呼ぶ。
重複判定の際、2つのデータをビット単位あるいはバイト単位で比較すると、判定処理に長時間を要することになる。そのため一般的に重複判定を行う装置は、比較対象のデータについて、例えばハッシュ関数を利用して算出するハッシュ値などの、そのデータに基づいて算出される小サイズ(例えば8バイト程度)の特徴量でなるチェックコードを生成し、生成したチェックコードを用いて重複判定を行う。以下の実施形態では、データから生成されるチェックコードのことを、「FingerPrint Key」と呼ぶ。FingerPrint Keyは、FPKと略記されることもある。
以下で説明する実施形態では、データAから算出されたFPKの値がHであった場合、値HはデータAのFPKと呼ばれる。逆にデータAのことを、「FPK Hを持つデータ」と呼ぶことがある。
「重複排除の範囲」とは、重複データの有無を判定する際のデータの探索範囲のことを意味する。例えば重複排除の範囲が「ストレージ装置」の場合、ストレージ装置はデータAと同一のデータが存在するか判定する際に、データAとストレージ装置内の全データとを比較する。一方、重複排除の範囲がストレージ装置内の一部の記憶デバイス(ここではこれを「記憶グループ」と呼ぶ)に限定されている場合、ストレージ装置は重複データの有無を判定する際に、対応する記憶グループ内のデータのみの中から重複データの有無を検索する。
記憶領域やデータの「更新」とは、記憶領域に格納されているデータの内容を新しい内容に書き換える(上書きする)ことを意味する。以下においては、ある記憶領域やあるデータが更新される前に、その記憶領域に格納されていたデータ又は更新前のそのデータを「更新前データ」と呼び、その記憶領域に新たに書き込まれるデータ又は更新後のデータのことを「更新データ」又は「更新後データ」と呼ぶものとする。
「追書き(log-structured write)」又は「追記(log-structured)」とは、データを記憶領域の未使用領域に対してシーケンシャルに書き込む動作のことをいう。以下の実施形態におけるストレージ装置では、追書き用の記憶領域が設けられる。ストレージ装置が追書き処理を行う場合、追書き用の記憶領域の先頭から順にデータを書き込んでいく。ストレージ装置は、直前に行われた追書き処理でデータが書き込まれた終端アドレスを記憶しており、追書き処理を行う際には、この終端アドレスの次のアドレスから、データを書き込む。
(1)システム構成
次に、本実施の形態のストレージ装置について説明する。図1は、本実施形態に係るストレージ装置1を含む計算機システムの構成例を示す。ストレージ装置1は、ストレージコントローラ10と、ストレージコントローラ10に接続された複数の記憶デバイス20とを備える。
記憶デバイス20は、ストレージ装置1がホスト2などの上位装置からのライトデータを記憶するために用いられる。記憶デバイス20としては、例えば、磁気ディスクを記憶媒体として用いるHDD(Hard Disk Drive)や、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として採用したSSD(Solid State Drive)が用いられる。
本実施形態のストレージ装置1には、記憶デバイス20として、データを圧縮して記憶し、記憶したデータを伸長して出力する(つまりデータの圧縮/伸長を記憶デバイス20内で行う)圧縮機能を有する記憶デバイス(圧縮機能付き記憶デバイス)20と、かかる圧縮機能を有さない記憶デバイス(圧縮機能なし記憶デバイス)20との双方が搭載されているものとする。
記憶デバイス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は、少なくともデバイスインタフェース(以下、これをデバイスI/Fと呼ぶ)11、ホストインタフェース(以下、これをホストI/Fと呼ぶ)12、CPU13、ローカルメモリ14、キャッシュメモリ15及び管理用インタフェース(以下、これを管理用I/Fと呼ぶ)16を備える。またデバイスI/F11、ホストI/F12、CPU13、キャッシュメモリ15及び管理用I/F16は、内部スイッチ(以下、これを内部SWと呼ぶ)17を介して相互接続される。図1ではこれらの構成要素がそれぞれ1つだけ示されているが、高性能化及び高可用性の確保のため、これらの構成要素のそれぞれがストレージコントローラ10内に複数搭載されていてもよい。また内部SW17ではなく、共通バスを介して各構成要素が相互接続された構成にしてもよい。
デバイスI/F11は、少なくともインタフェースコントローラと転送回路を備える。インタフェースコントローラは、記憶デバイス20で用いられているプロトコル(一例ではSAS)をストレージコントローラ10内部で用いられている通信プロトコル(例えば、PCI−Express)に変換するためのコンポーネントである。転送回路は、ストレージコントローラ10が、記憶デバイス20に対してデータの転送(リード、ライト)を行う際に用いられる。
ホストI/F12は、デバイスI/F11と同様に、少なくともインタフェースコントローラ及び転送回路を備える。ホストI/F12が備えるインタフェースコントローラは、ホスト2とストレージコントローラ10との間のデータ転送経路で用いられている通信プロトコル(例えばファイバチャネル)と、ストレージコントローラ10内部で用いられている通信プロトコルとの間のプロトコル変換を行うためのものである。
CPU13は、ストレージ装置1の各種制御を行うプロセッサである。またローカルメモリ14には、CPU13が実行するプログラムが格納される。CPU13は、データの圧縮処理を行う際に、ローカルメモリ14上の記憶領域の一部を、一種の作業用領域として使用する。ローカルメモリ14としては、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等の揮発性記憶媒体を適用できるが、別の実施形態として、不揮発性メモリを適用するようにしてもよい。
キャッシュメモリ15は、記憶デバイス20に入出力するデータを一時的に保持するために用いられる。またキャッシュメモリ15は、CPU13が使用する、ストレージ装置1の各種管理情報を記憶するためにも用いられる。キャッシュメモリ15としては、DRAM又はSRAM等の揮発性記憶媒体を適用できるが、別の実施形態として、不揮発性メモリを用いてキャッシュメモリ15を構成してもよい。また、キャッシュメモリ15として揮発性記憶媒体が適用される場合、ストレージ装置1にバッテリ等の補助電源を搭載し、停電時にキャッシュメモリ15の記憶内容を維持できるように構成されていてもよい。
管理用I/F16は、ストレージコントローラ10が管理ホスト5と通信を行う際のプロトコル制御を行うハードウェアであり、通信ケーブル等の通信路6を介して管理ホスト5と接続される。
本実施形態に係るストレージ装置1において、CPU13は、ローカルメモリ14とキャッシュメモリ15の何れにもアクセスすることができる。ただしCPU13がキャッシュメモリ15にアクセスする際、内部スイッチ17を経由してアクセスすることになる。そのため、CPU13がキャッシュメモリ15にアクセスした時の応答時間は、CPU13がローカルメモリ14にアクセスした時の応答時間よりも長くなる。
管理ホスト5は、ユーザ(管理者)がストレージ装置1の管理操作を行うための計算機である。管理ホスト5は、キーボードやディスプレイ等の入出力デバイス(図示せず)を備えたノート型のパーソナルコンピュータ装置などから構成される。ユーザ(管理者)は入出力デバイスを用いてストレージ装置1に対する設定指示を行うことができる。また管理ホスト5は、ストレージ装置1の状態等の情報をディスプレイ等の出力デバイスに表示することもできる。
本実施形態に係るストレージ装置1は、記憶デバイス20に格納されるデータを圧縮/伸長することができる。データの圧縮/伸長は、CPU13がデータ圧縮/伸長を行うためのプログラムコードを実行することにより行われるか又は圧縮機能付きの記憶デバイス20の内部で行われる。ただし別の実施形態として、ストレージコントローラ10にデータ圧縮/伸長を行う専用のハードウェアを設け、ストレージコントローラ10がこのハードウェアを用いてデータ圧縮/伸長を行うように構成されていてもよい。
(2)記憶領域の管理
続いて、本実施形態に係るストレージ装置1が管理する記憶領域について説明する。本実施形態に係るストレージ装置1が有する1以上の記憶デバイス20は、所定サイズの記憶空間をストレージコントローラ10に提供する。ただし、ストレージコントローラ10は、記憶デバイス20の提供する記憶空間を直接ホスト2には提供しない。ストレージコントローラ10はホスト2に、記憶デバイス20の提供する記憶空間とは異なる、1以上の仮想的な記憶空間を提供する。この仮想的な記憶空間を「仮想ボリューム」と呼ぶ。また、仮想ボリューム(ホスト2に提供される記憶空間)のことを、「上書き空間」と呼ぶこともある。
仮想ボリュームは、公知のThin Provisioning技術を用いて形成されるボリュームである。ストレージ装置1は、ホスト2から仮想ボリューム上の領域に対するライト要求を受け付けた時点で、その領域に記憶デバイス20の記憶領域を割り当てる(マップする)。
本実施形態では、ストレージ装置1が有する複数の記憶デバイス20のうち、仮想ボリュームに割り当てることができる記憶デバイス20を「プール」という管理単位に所属させる。ストレージ装置1は、プールに所属する記憶デバイス20の記憶空間を、所定サイズ(一例として42MB)の部分領域に分割して管理する。本実施形態では、この部分領域のことを「物理ページ」又は「ページ」と呼ぶ。なお、ストレージ装置1内に複数のプールが設けられてもよい。各プールには、それぞれプール番号(プール#)と呼ばれる、ストレージ装置1内で一意な識別番号が付与される。またプール番号がkのプールは、「プール#k」と表記される。
ストレージ装置1が仮想ボリュームに記憶デバイス20の記憶領域を割り当てる場合、物理ページ単位で割り当てる。そのためストレージ装置1は、仮想ボリュームも物理ページと同サイズの領域に分割して管理する。以下においては、仮想ボリューム上の物理ページと同サイズの領域を「仮想ページ」又は「上書きページ」と呼ぶものとする。なお、本実施形態では仮想ページのサイズが42MBの場合の例を説明するが、仮想ページのサイズはこれ以外のサイズでもよい。
ホスト2が仮想ボリュームにアクセスする場合、ホスト2はストレージ装置1にアクセス要求(リード要求、ライト要求等)を発行する。リード要求やライト要求には、アクセス対象の仮想ボリュームを特定するための識別子(LUN(Logical Unit Number)等)と、仮想ボリューム上の領域を特定するための情報とが含まれる。仮想ボリューム上の領域を特定する情報には、LBAと領域の長さの情報が含まれる。
ストレージ装置1は、ホスト2からライト要求を受信すると、ライト要求に含まれる、仮想ボリューム上の領域を特定する情報(LBA及び領域の長さ)から、アクセス対象の仮想ページを特定する。アクセス対象の仮想ページに未だ物理ページが割り当てられていない場合、ストレージ装置1はその仮想ボリュームが属するプール内に存在する物理ページのうち未使用の物理ページ(まだ仮想ページに割り当てられていない物理ページ)を選択し、選択した物理ページをデータライト先の仮想ページに割り当てる(マップする)。ホスト2からのライトデータは、このデータライト先の仮想ページにマップされた物理ページに格納される。
またストレージ装置1は、仮想ページと、仮想ページに割り当てられた物理ページとの対応関係(マッピング)をマッピングテーブル(図6について後述する仮想ボリューム管理テーブル42など)に格納して管理する。そしてストレージ装置1は、仮想ページに対するリード要求を受け付けた場合、マッピングテーブルを参照することで、仮想ページに割り当てられた物理ページを特定し、特定した物理ページからデータを読み出す。
図2は、仮想ボリュームと、仮想ボリュームに割り当てられる記憶領域(物理ページ)との関係を表す。図2において、長方形状のオブジェクト30は仮想ボリューム(上書き空間)を表し、円柱状のオブジェクト31はプールを表す。
ストレージ装置1は、仮想ボリューム(上書き空間)に加えて、これとは異なる記憶空間を有する。この記憶空間は「追書き空間」と呼ばれる。図2に示されている長方形状のオブジェクト32が追書き空間を表す。追書き空間は、ホスト2がアクセスできる記憶空間ではなく、ストレージコントローラ10だけが使用可能な記憶空間である。追書き空間は、ストレージコントローラ10のCPU13が圧縮データを記憶デバイス20に追書きにより格納するために用いられる。
まず、上書き空間の仮想ページと物理ページとの関係について説明する。各仮想ページには、仮想ページ番号(VP#と表記されることもある)と呼ばれる、一意な識別番号(識別番号には非負の整数値が用いられる)が付与される。図2では、仮想ページ番号がn(nは非負の整数値)の仮想ページを「VP#n」と表記している。同様に各物理ページには、物理ページ番号と呼ばれる、ストレージ装置1内で一意な識別番号が付される(この識別番号も非負の整数値である)。図2では、物理ページ番号がn(nは非負の整数値)の物理ページを「物理ページ#n」と表記している。図2の例では、「VP#0」に「物理ページ#0」がマップされた例が示されている。
ストレージ装置1は、仮想ページ内の領域(1又は複数のブロック)を対象とするホスト2からのライト要求(及びライトデータ)を受け付けた場合、仮想ページにマップされている物理ページ内のブロックにライトデータを格納する。そしてストレージ装置1は、このときの仮想ページ及び物理ページの対応関係(マッピング)を、図6について後述する仮想ボリューム管理テーブル42に格納して管理する。
本実施形態に係るストレージ装置1は、原則として(後述する、圧縮データ格納のケースを除いて)、仮想ページの先頭からn番目のブロックへのデータライト要求を受領した場合、仮想ページにマップされている物理ページの先頭からn番目のブロックにデータを格納する。なお、説明が冗長になることを避けるため、以下においては、ストレージ装置1が仮想ページに割り当てられている物理ページにデータを格納することを、「仮想ページ(又は上書き空間)にデータを格納する」と表現する。
追書き空間も上書き空間と同じく、いわゆるThin Provisioning技術により形成される記憶空間である。ストレージコントローラ10は、追書き空間上の領域に、動的に物理ページを割り当て、データを追書き空間に割り当てた物理ページに書き込む。上書き空間と同じく、ストレージ装置1は、追書き空間を物理ページと同サイズの領域に分割して管理する。この領域は「追書きページ」と呼ばれる。追書きページにも追書きページ番号と呼ばれる一意な識別番号が付与される。
また、ストレージ装置1は、追書きページと物理ページとの対応関係(マッピング)を、後述する追書き空間マッピングテーブル43(図7)に格納して管理する。なお、以下においては、説明が冗長になることを避けるため、ストレージ装置1が追書きページに割り当てられている物理ページにデータを書き込む処理を、「追書きページ(又は追書き空間)にデータを書き込む」と表現する。
先にも述べたが、追書き空間に書き込まれるデータは、圧縮データである。また追書き空間は仮想ボリュームごとに設けられる。従って、仮想ボリュームがn個ある場合には追書き空間もn個存在する。追書き空間に割り当てられる物理ページは、仮想ページに割り当てられる物理ページと同じく、プールから未使用の物理ページが選択される。プール番号が「k」のプール内に存在する物理ページが割り当てられる仮想ボリュームのチャンクが追書き空間に移動されるとき、その追書き空間に割り当てられる物理ページは、プール番号が「k」のプール内に存在する物理ページである。
ストレージ装置1は、ホスト2から仮想ページに書き込まれたデータ(非圧縮データ)について、必要に応じて圧縮処理を行う。圧縮処理により生成された圧縮データは、非圧縮データの格納された物理ページとは異なる場所、具体的には追書き空間に移動される。また、このとき重複データの有無の判定なども行われる。
本実施形態に係るストレージ装置1は、仮想ページ内の領域を、仮想ページの先頭から順に8KBの部分領域に区分し、この部分領域ごとにデータ圧縮を行う。本実施形態では、この8KBの部分領域(あるいはこの部分領域に格納されているデータ)のことを「チャンク」と呼ぶ。なお、チャンクの大きさには、8KB以外の大きさが採用されてもよい。また、チャンクを圧縮することで生成されたデータ、又は圧縮デバイスに書き込みする前提を満たし、圧縮処理をスキップしたデータのことを「圧縮チャンク」と呼ぶ。圧縮チャンクの大きさはデータの内容に依存して変動するが、最小で512バイト、最大で8KBである。また本実施形態に係るストレージ装置1は、512バイトの整数倍のサイズの圧縮チャンクを生成する。
ストレージコントローラ10(のCPU13)が圧縮チャンクを生成すると、ストレージコントローラ10はその圧縮チャンクを追書き空間に追記する。ある仮想ページのチャンクがすべて圧縮されて、圧縮チャンクが全て追書き空間に書き込まれると、仮想ページに割り当てられていた物理ページが破棄される。具体的には、その仮想ページに割り当てられていた物理ページは、未使用状態(仮想ページに割り当てられていない状態)に変更される。これにより、上書き空間に対して書き込まれたデータが、追書き空間に移動されたことになる。
なお、追書き空間に割り当てられた物理ページには、複数の仮想ページのチャンク(圧縮チャンク)が格納されることもある。圧縮によりチャンクのサイズは小さくなり、複数の仮想ページのデータが1物理ページに収容可能になることもあるからである。ストレージ装置1は、上書き空間上のチャンクと追書き空間上の圧縮チャンクの対応関係(マッピング)を、図8について後述するLP変換テーブル44に格納して管理する。
ホスト2から書き込まれたデータが追書き空間に移動された仮想ページに対して、ホスト2から更新データの書き込み要求(つまり更新要求)があった場合、更新データは圧縮され、原則として追記により追書き空間に格納される。ただし別の実施形態として、ストレージ装置1は再び上書き空間の仮想ページに物理ページを割り当て、追書き空間に移動されたデータを伸長して、仮想ページに割り当てられた物理ページに伸長されたデータを書き戻し、そしてこの物理ページ上のデータを更新(上書き)するようにしてもよい。
ストレージ装置1が、上書き空間上のチャンクを特定するために使用するアドレスをLAと呼ぶ。LAはチャンクごとに付されるアドレスで、次式
Figure 2019128906
の関係にある。上書き空間上の先頭に位置するチャンクのLAは0で、後続のチャンクのLAは順に、1,2,……の連続番号になる。
一方、追書き空間上の圧縮チャンクは可変長で、最小512バイトのサイズであるので、追書き空間上の512バイトの領域(ブロック)ごとにアドレスが付される。このアドレスをPAと呼ぶ。追書き空間上の先頭に位置する512バイト領域のPAが0で、後続の領域のPAには、順に1,2,……の連続番号が用いられる。
(3)管理情報
続いて、上で述べたプール(図2のオブジェクト31)、仮想ボリューム(図2のオブジェクト30)及び追書き空間(図2のオブジェクト32)の管理に用いられる管理情報の内容について説明する。なお、本明細書や図面で、数値の先頭に文字列“0x”が付されているものがあるが、これはその数値が16進数で表記されていることを意味する。
図3に、ストレージ装置1が有する管理情報を示す。ストレージ装置1は、ページ管理テーブル40、プール管理テーブル41、仮想ボリューム管理テーブル42、追書き空間マッピングテーブル43、論理物理変換テーブル(LP変換テーブル)44、FPMQ(FingerPrint Match Queue)45、FPTD(FingerPrint Table Directory)46、ガベージ管理テーブル47及び追書き上書き条件管理テーブル48をキャッシュメモリ15に保持している。
図4は、ページ管理テーブル40の構成例を示す。ページ管理テーブル40は、プールに属する物理ページを管理するために利用されるテーブルであり、プールごとに設けられる。従って、ストレージ装置1内にn個のプールが設けられている場合には、ストレージ装置1はn個のページ管理テーブル40を有する。
ページ管理テーブル40の各行(レコード)には、対応するプール内の各物理ページの情報が格納される。各レコードは、物理ページ番号(ページ#)欄40A、DEV番号(DEV#)欄40B、アドレス(Addr)欄40C、使用状況(use)欄40D及び圧縮機能有無フラグ欄40Eをそれぞれ備える。
そして物理ページ番号欄40Aには、対応するプール内に存在するすべての物理ページの物理ページ番号がそれぞれ格納される。つまり物理ページ番号欄40Aに格納された物理ページ番号が「n」のレコードは、対応するプール内の物理ページ番号が「n」の物理ページに関する情報を管理するレコードである。
またDEV番号欄40Bには、対応する物理ページが存在する記憶デバイス20の識別番号(デバイス番号)が格納され、アドレス欄40Cには、その記憶デバイス20内のその物理ページが存在するアドレスが格納される。従って、図4の場合、物理ページ番号が「1」の物理ページは、デバイス番号が「0」の記憶デバイス20の、アドレス「0x15000」から始まる42MBの領域(1物理ページのサイズに等しい領域)に相当することが示されている。
使用状況欄40Dには、対応する物理ページの使用状況を表す情報が格納される。対応する物理ページが仮想ボリューム又は追書き空間にマップされている場合、使用状況欄40Dには「1」が格納される。逆に、対応する物理ページが仮想ボリューム又は追書き空間にマップされていない場合、使用状況欄40Dには「0」が格納される。使用状況欄40Dに「1」が格納されている物理ページは、使用中のページと呼ばれ、逆に使用状況欄40Dに「0」が格納されている物理ページは、未使用のページと呼ばれる。
圧縮機能有無フラグ欄40Eには、対応する物理ページが存在する記憶デバイス20が圧縮機能を有するか否かを表す情報(圧縮機能有無フラグ)が格納される。その記憶デバイス20が圧縮機能を備える場合、圧縮機能有無フラグは「1」に設定され、その記憶デバイス20が圧縮機能を備えない場合、圧縮機能有無フラグは「0」に設定される。
なお、本実施形態では、ページ管理テーブル40に、記憶デバイス20(例えばHDD)の識別番号とアドレスが登録され、各物理ページが1つの記憶デバイス20内の記憶領域に相当する例が説明されている。ただし、これ以外のプール(又は物理ページ)の構成方法が採用されてもよい。例えば、ストレージ装置1がRAID(Redundant Arrays of Independent (or Inexpensive) Disks)技術を用いて、複数の記憶デバイス20から1つの論理的な記憶デバイス(以下、これを論理デバイスと呼ぶ)を形成する場合、論理デバイス上の所定サイズ(例えば42MB)の記憶領域をページとして扱ってよい。その場合、ページ管理テーブル40のDEV番号欄40B及びアドレス欄40Cには、論理デバイスの識別番号と、論理デバイス内のアドレスとを格納する。
図5は、プール管理テーブル41の構成例を示す。プール管理テーブル41は、各プールに属する仮想ボリュームに関する情報などを格納するためのテーブルである。プールが複数存在する場合、ストレージ装置1は各仮想ボリュームを、いずれか1つのプールに所属させる。ストレージ装置1は、仮想ボリュームの仮想ページに物理ページを割り当てる際、仮想ボリュームが属しているプール内の未使用の物理ページを選択し、選択した物理ページを仮想ページに割り当てる。
プール管理テーブル41の各レコードは、プール番号欄41A、仮想ボリューム番号欄41B、最終書き込み位置欄41C及びプールサイズ欄41Dをそれぞれ有する。そしてプール番号欄41Aには、プール番号が格納される。また仮想ボリューム番号欄41Bには、プールに属する仮想ボリュームの識別番号(仮想ボリューム番号)が格納される。プールに属する仮想ボリュームが複数存在する場合には、仮想ボリューム番号欄41Bには複数の仮想ボリューム番号が格納される。
最終書き込み位置欄41Cには、対応するプールに属する各仮想ボリューム(同じ行の仮想ボリューム番号欄41Bに仮想ボリューム番号が格納された各仮想ボリューム)にそれぞれ対応させて、その仮想ボリュームと対応付けられた追書き空間内の最後に圧縮チャンクが書き込まれた追書きページの追書きページ番号が格納される。ストレージコントローラ10が追書きページに圧縮チャンクを書き込む際、最終書き込み位置欄41Cを参照することで、最後に書き込みが行われた追書きページを特定する。
さらにプールサイズ欄41Dには、対応するプールのプールサイズ(容量)が格納される。図5の例の場合、「0」というプール番号が付与されたプールのプールサイズ(容量)は「0xFFF」であり、「1」というプール番号が付与されたプールのプールサイズ(容量)は「0x12AB」であることが示されている。
図6は、仮想ボリューム管理テーブル42の構成例を示す。仮想ボリューム管理テーブル42は仮想ボリューム毎に作成される。このため仮想ボリュームが複数存在する場合、仮想ボリューム管理テーブル42も複数存在する。仮想ボリューム管理テーブル42もキャッシュメモリ15に格納されて管理される。
仮想ボリューム管理テーブル42の各レコードには、対応する仮想ボリューム内の仮想ページについての情報が格納される。具体的には各レコードは、仮想ページ番号(仮想ページ#)欄42A、最終更新時刻欄42B、ページ種別欄42C、物理ページ番号(物理ページ#)欄42D及びプール番号(プール#)欄42Eをそれぞれ備える。
そして仮想ページ番号欄42Aには、仮想ページの仮想ページ番号が格納される。また物理ページ番号欄42Dには、対応する仮想ページに割り当てられた物理ページの物理ページ番号が格納される。プール番号欄42Eには、対応する仮想ページに割り当てられた物理ページが存在するプールのプール番号が格納される。
最終更新時刻欄42Bには、対応する仮想ページに対するライト要求を最後に受け付けた時刻が格納される。ストレージ装置1はある仮想ページに対してライト要求を受け付けるたびに、その仮想ページの最終更新時刻欄42Bにライト要求を受け付けた時刻が格納される。
ページ種別欄42Cには、「1」又は「0」が格納される。初期状態では、全仮想ページのページ種別欄42Cの値が「1」に設定される。
ページ種別欄42Cに「0」が格納されている場合、対応する仮想ページに対して書き込まれたデータは圧縮されて、追書き空間に移動されたことを表す。この場合には、物理ページ番号欄42D及びプール番号欄42Eには、無効値(「null」と呼ぶ。具体的には「−1」などの、ページ番号やプール番号に用いられない値である)が格納される。また移動されたデータ(圧縮チャンク)の格納場所は、後述するLP変換テーブル44(図8)等に記録される。
一方、ページ種別欄42Cに「1」が格納されている場合、対応する仮想ページに書き込まれたデータはまだ追書き空間に移動されていないか、あるいはその仮想ページに対してまだホスト2からのライト要求が発生していないことを表す。ページ種別欄42Cの値が「1」で、物理ページ番号欄42D及びプール番号欄42Eに有効な値(「null」でない値)が格納されている場合、その仮想ページに対して物理ページが割り当てられており、その物理ページにホスト2からのライトデータが格納されていることを示す。逆にページ種別欄42Cに格納された値が「1」で、物理ページ番号欄42D及びプール番号欄42Eの双方に「null」が格納されている場合、その仮想ページに対してまだホスト2からの書き込み要求が発生しておらず、物理ページが割り当てられていないことを表す。
なお、仮想ボリュームが複数存在する場合、仮想ボリューム管理テーブル42の各レコードには、上で説明した仮想ページ番号42A等の情報に加えて、仮想ボリュームを特定するための情報(例えば仮想ボリューム番号)が含まれてもよい。
図7は、追書き空間マッピングテーブル43の構成例を示す。追書き空間マッピングテーブル43には、追書き空間にマッピングされた物理ページを管理するための管理情報が格納される。追書き空間は仮想ボリュームごとに設けられるので、追書き空間マッピングテーブル43も仮想ボリュームごとに存在する。
各レコードの追書きページ番号欄43Aには、追書きページ番号(追書きページ#)が昇順に格納される。追書き空間マッピングテーブル43の各レコードは、追書きページ番号欄43Aに格納された追書きページ番号で特定される追書きページに、物理ページ番号欄43Bに格納された物理ページ番号と、プール番号欄43Cに格納されたプール番号とで特定される物理ページが割り当てられていることを表している。追書きページに物理ページが割り当てられていない場合、その追書きページの物理ページ番号欄43B及びプール番号欄43Cには、それぞれ「null」が格納される。
ページ内最終書き込み位置欄43Dには、追書きページ内のブロックのうち、最後に圧縮チャンクが書き込まれたブロックの相対アドレスが格納される。相対アドレスとは、具体的には、ページ内の先頭ブロックのアドレスを「0」と定めたときの、ブロックのアドレスである。図7の例では、追書きページ番号欄43Aに格納された追書きページ番号が「2」のレコードのページ内最終書き込み位置欄43Dには「0x00005」が格納されているので、この追書きページ番号が「2」の追書きページに割り当てられている物理ページには、ページ先頭から5番目のブロックまで圧縮チャンクが書き込まれていることを表している。ストレージ装置1は、追書き空間に圧縮チャンクを追記する際に、このページ内最終書き込み位置欄43Dに格納されているアドレスと、プール管理テーブル41の最終書き込み位置欄41Cに格納されているアドレスとを参照することで、圧縮チャンクを書き込むべき位置を特定する。
続いてLP変換テーブル44について説明する。LP変換テーブル44は、上書き空間上のチャンクが圧縮されて追書き空間に移動された場合における各チャンクの移動先を管理するためのテーブルである。図8にLP変換テーブル44の構成例を示す。
LP変換テーブル44の各レコードは、仮想ボリューム上のチャンクと、そのチャンクの圧縮チャンクの記録位置との対応関係(マッピング)についての情報をそれぞれ表す。具体的に、各レコードは、上書き空間におけるレコードのLA欄44Aに格納されたLAで特定される8KBの領域(チャンク)のデータが圧縮されて、対応する追書き空間におけるPA欄44Cに格納されたPAで特定されるアドレスから始まる、長さ(Length)欄44Dに格納された長さの領域に格納されており、そのデータのFPKの上位32ビットがFPK上位32bit欄44Bに格納された値であることを表す。
先に述べたとおり、本実施形態に係るストレージ装置1は重複排除処理を行うので、原則として、同一内容の複数のチャンクが追書き空間に格納されないように制御される。再び図2を用いて重複排除処理の概略を説明する。
図2において、「1」という仮想ページ番号が付与された仮想ページに格納された「チャンクA」及び「チャンクB」という2つのチャンクのそれぞれが、「圧縮チャンクa」、「圧縮チャンクb」として追書き空間上に格納されている状態にあるとき、ストレージ装置1が「2」という仮想ページ番号が付与された仮想ページに格納されたチャンクを追書き空間に移動する処理を開始した場合を想定する。もし「チャンクD」の内容が「チャンクB」と同一だった場合、「チャンクD」の圧縮チャンクは追書き空間に書き込まれない。代わりにストレージ装置1は、LP変換テーブル44の「チャンクB」の情報を格納しているレコードのPA欄44Cに格納されたアドレスと同一の値を、LP変換テーブル44の「チャンクD」の情報を格納しているレコードのPA欄44Cに格納する。
また、ストレージ装置1が重複排除処理を行うとき、チャンクごとに、そのチャンクのデータに応じた値のチェックコードを算出する。上述のように本実施形態では、このチェックコードをFPK(FingerPrint Key)と呼ぶ。本実施形態の場合、FPKは8バイトのサイズの情報である。ただしFPKは8バイト以外のサイズであってもよい。
ストレージ装置1は、チャンクから生成されるFPKとチャンクのLAとの対応関係を管理情報に記録する。この管理情報をFPMQ(FingerPrint Match Queue)と呼ぶ。図9にFPMQ45の構成例を示す。FPMQ45は、FPK欄45A及びLA欄45Bを備えるテーブルで、LA欄45Bに格納されたLAから始まる8KBの領域(チャンク)から生成されたFPKが、同じレコードのFPK欄45Aに格納される。FPMQ45には、対応する仮想ボリューム内のすべてのLAのFPKが登録される。FPMQ45の各レコードは、FPK欄45Aに格納されたFPKの昇順にソートされ、同じFPKのLA同士はLAの昇降順にソートされている。以下では、FPMQ45のレコード、つまりFPK欄45A及びLA欄45Bのセットのことを、「チャンクのメタデータ」(あるいは単に「メタデータ」)と呼ぶことがある。
FPMQ45は仮想ボリュームごとに設けられる。ストレージ装置1は、例えば仮想ボリューム番号が「n」の仮想ボリューム(上書き空間)に格納されたチャンクを追書き空間に移動するとき(仮にこのチャンクを「チャンクA」と呼ぶ)、仮想ボリューム番号が「n」用のFPMQ45を参照することで、「チャンクA」と同一のチャンク(圧縮チャンク)が既に追書き空間に存在するか判定する。
「チャンクA」のFPKと同一のFPKが、仮想ボリューム番号が「n」用のFPMQ45に存在しない場合、「チャンクA」と同一のチャンク(圧縮チャンク)はプール番号が「n」用の追書き空間に存在しないと判定できる。本実施形態に係るストレージ装置1では、重複排除の範囲は仮想ボリュームである。そのため「チャンクA」と同一のチャンク(圧縮チャンク)が、仮想ボリューム番号が「n」の仮想ボリュームには存在しないが、それ以外の仮想ボリュームに存在した場合、「チャンクA」(の圧縮チャンク)は仮想ボリューム番号が「n」の仮想ボリュームに書き込まれる。
また、FPMQ45内の情報の検索を効率的に行えるようにするために、ストレージ装置1はFPMQ45内のいくつかのレコードが格納されているアドレス(キャッシュメモリ15上アドレス)を記録した管理情報を有する。この管理情報は、FingerPrint Table Directoryと呼ばれる。以下ではこれを、「FPTD」と呼ぶ。
図9にFPTD46の例を示す。FPTD46もFPMQ45と同様に、仮想ボリュームごとに設けられる。FPMQ格納アドレス欄46Bには、FPMQ45のレコードのうち、FPK欄45Aに格納されているFPKの上位32bitが、FPK先頭32bit欄46Aに格納されたFPK先頭32bitと等しいレコードの中で、FPK欄45Aに格納されたFPKが 最も小さいレコードが格納されているアドレス(キャッシュメモリ15上のアドレス)が格納される。
例えばFPMQ45内で、FPK欄45Aに格納された上位32bitが「0x00000001」であるレコードのうち、値が最小のレコードのFPK欄45Aに格納されたFPKが「0x0000000100000001」だった場合を想定する。このときFPK欄45Aに格納されたFPKが「0x0000000100000001」のレコードが格納されているアドレスが「ADR2」だった場合には、FPTD46には、FPK先頭32bit欄46Aに格納されたFPK先頭32bitが「0x00000001」、FPMQ格納アドレス欄46Bに格納されたFPMQ格納アドレスが「ADR2」のレコードが記録される。
後述する圧縮・重複排除プログラム52(図12)は、チャンクのFPKを算出してから、そのFPKと同じ値がFPMQ45のFPK欄45Aに格納されているかを判定する。FPMQ45に格納されているレコード数が非常に多い場合、検索に時間がかかるため、FPTD46が用いられる。
例えば、「0x0000000100000001」の格納されているレコードを検索する場合、圧縮・重複排除プログラム52は、FPTD46を参照することで、FPK先頭32bit欄46Aに格納された値が「0x00000001」のFPMQ格納アドレス欄46Bに格納された値が「ADR2」であることを認識する。続いて圧縮・重複排除プログラム52は、FPMQ45内のレコードのうち、アドレスが「ADR2」(これはキャッシュメモリ15上のアドレスである)のレコードから順に、「0x0000000100000001」の格納されているレコードを探索する。なお、FPTD46は、FPMQ45内の情報の検索速度を向上させるための情報であるから、FPTD46は必須の情報ではない。
図8のFPK上位32bit欄44Bと、FPMQ登録欄44Eとについて説明する。LP変換テーブル44のFPK上位32bit欄44Bには、チャンクのFPKの上位32ビットが格納される。FPMQ登録欄44Eには、チャンクのメタデータがFPMQ45に登録されているかいないかを表す情報が格納される。ストレージ装置1がLA欄44Aに格納されたLAで特定されるチャンクのメタデータをFPMQ45に登録した場合、FPMQ登録欄44Eに「1」が格納され、そうでない場合にはFPMQ登録欄44Eに「0」が格納される。また、チャンクから生成されたFPK(及びそのチャンクのLA)をFPMQ45に登録した後、FPMQ45からFPK及びそのチャンクのLAを削除することもある。その場合にもストレージ装置1はFPMQ登録欄44Eに「0」が格納される。
図10は、ガベージ管理テーブル47の構成例を示す。上書き空間のデータが圧縮されて追書き空間やプールに移動された後に、そのデータが更新されたときには、追書き空間やプール内に存在する更新前の圧縮データ(圧縮チャンク)はガベージとなる。ガベージ管理テーブル47は、このようなストレージ装置1内に存在するガベージを管理するために利用されるテーブルである。このガベージ管理テーブル47は、追書き空間毎(つまりプール毎)に生成される。
ガベージ管理テーブル47のレコードには、対応する追書き空間と対応付けられたプール内に存在するガベージを管理するための情報が格納される。具体的には、対応する追書き空間と対応付けられたプール内のPA欄47Aに格納されたPAで特定されるアドレスから始まる、長さ(Length)欄47Bに格納された長さの領域に格納されているデータがガベージであることを表す。例えば、図10の例では、対応する追書き空間と対応付けられたプール内のPAが「0x0010」から始まる「512」バイトの領域に格納されているデータがガベージであることが示されている。
また図11は、追書き上書き条件管理テーブル48の構成例を示す。後述のように、本実施形態のストレージ装置1には、既に圧縮チャンクが追書き空間に格納されているデータが更新された場合、更新後のデータの圧縮チャンクが一定条件を満たす場合には、その更新後のデータの圧縮チャンクを追書き空間に格納された更新前のそのデータの圧縮チャンクに上書きする圧縮チャンク上書き機能が搭載されている。追書き上書き条件管理テーブル48は、このような本実施形態の圧縮チャンク上書き機能を実現するために必要な、プール毎のガベージ量等を管理するために利用されるテーブルである。
追書き上書き条件管理テーブル48の各レコードは、プール番号(プール#)欄48A、総データ量欄48B、圧縮・重複排除総データ量欄48C及びガベージ量欄48Dを備える。そしてプール番号欄48Aには、ストレージ装置1内に存在する各プールのプール番号がそれぞれ格納される。また総データ量欄48Bには、ホストが使用している全領域のデータの圧縮・重複排除前のデータサイズの合計値が格納される。以下においては、この合計値のことを、適宜、そのプールの「総データ量」と呼ぶものとする。
圧縮・重複排除総データ量欄48Cには、対応するプールに格納されたデータのうち、圧縮・重複排除処理により得られた圧縮データの総データ量が格納される。またガベージ量欄48Dには、対応するプールに存在するガベージの総データ量が格納される。従って、図11の例の場合、プール番号が「1」のプールには、総データ量が「10240」(GB)分のデータが圧縮・重複排除処理により「5120」(GB)にまでデータ量が削減されて格納されており、さらに「256」(GB))のガベージも格納されていることが示されている。
(4)処理の流れ
続いて、本実施形態に係るストレージ装置1が実施する各種処理の流れについて説明する。図12に示すように、本実施形態に係るストレージ装置1のローカルメモリ14には、少なくとも、I/Oプログラム50、バッファ更新プログラム51、圧縮・重複排除プログラム52、ガベージコレクションプログラム53が格納されており、CPU13がこれらのプログラムを実行することにより以下に説明する各種処理が実行される。
またローカルメモリ14には、稼働情報42’が格納される。稼働情報42’は、仮想ボリューム管理テーブル42(図6)に格納される情報のうちの一部からなる情報である。具体的には稼働情報42’は、仮想ボリューム管理テーブル42の各レコードのうち、仮想ページ番号欄42A、最終更新時刻欄42Bにそれぞれ格納されている情報のみを有する。そのため、本明細書では稼働情報42’の図示は略す。
さらにローカルメモリ14には、バッファ54が設けられる。バッファ54は、CPU13が圧縮処理又は伸長処理を実行する際に使用するメモリ領域である。
(4−1)ライト処理
まず、図13を参照してI/Oプログラム50が実行するライト処理の流れを説明する。なお、以下においては、ライト対象のデータのデータサイズが1チャンク(8KB)と同じで、かつライト要求で指定されたこのデータのライト先の先頭アドレスがチャンクの先頭アドレスに一致しているものとして説明する。
I/Oプログラム50は、ホスト2からのライト要求を受領すると、この図13に示すライト処理を開始し、まず、ライト対象のデータを受領するための領域をキャッシュメモリ15上に確保し、確保した領域に当該データを格納する(S1)。これは公知のストレージ装置でも行われる処理のため、詳細の説明は略す。
続いて、I/Oプログラム50は、ライト要求においてデータのライト先として指定されたアドレス(LBA)から、上述した(1)式を利用してデータのライト先のLAを算出し(S2)、算出したLAの領域にPAが割り当てられているか否かを確認する(S3)。具体的に、I/Oプログラム50は、LP変換テーブル44(図8)のレコードの中からステップS2で算出したLAがLA欄44Aに格納されたレコードを特定し、そのレコードのPA欄44Cに有効な値(null以外の値)が格納されているか否かを確認する。
次いで、I/Oプログラム50は、かかるLAの領域にPAが割り当てられているとの確認がステップS2で得られた(そのLAに対応するPA欄44Cにnull以外の値が格納されてることを確認できた)か否かを判断する(S4)。
ここで、この判断で否定結果を得ることは、ライト要求においてデータライト先として指定された領域には未だデータが書き込まれておらず、そのデータライトが最初のデータライトであることを意味する。かくして、このときI/Oプログラム50は、追書き上書き条件管理テーブル48(図11)のレコードの中から、ライト要求においてデータのライト先として指定された仮想ボリュームが属するプールに対応するレコードの総データ量欄48B(図11)に格納された値を、選択チャンク(図14のステップS10で選択したチャンク)のデータ量を加算した値に更新する(S5)。
具体的に、圧縮・重複排除プログラム52は、プール管理テーブル41を参照して、そのときのライト要求において指定された仮想ボリュームの仮想ボリューム番号が仮想ボリューム番号欄41B(図5)に格納されているレコードを特定し、そのレコードのプール番号欄41A(図5)に格納されたプール番号を取得する。このプール番号が付与されたプールが、ライト要求において指定された仮想ボリュームが属するプールである。そして圧縮・重複排除プログラム52は、追書き上書き条件管理テーブル48のレコードのうち、上述のようにして取得したプール番号がプール番号欄48A(図11)に格納されているレコードを特定し、そのレコードの総データ量欄48Bに格納されている値を選択チャンクのデータ量を加算した値に更新する。
続いて、I/Oプログラム50は、圧縮・重複排除プログラム52(図12)を呼び出す(S6)。そして、I/Oプログラム50に呼び出された圧縮・重複排除プログラム52は、ライト対象のデータに対して図14について後述する圧縮・重複排除処理を実行し、かくして得られた圧縮・重複排除処理が施されたデータを対応する記憶デバイス20に格納する。
さらにI/Oプログラム50は、ライト要求が完了した旨の応答をライト要求の送信元のホスト2に返信する(S7)。またI/Oプログラム50は、ライト要求においてデータのライト先として指定されたアドレス(LBA)を仮想ページ番号に変換し(以下、変換後の仮想ページ番号が「p」であったものとする)、ローカルメモリ14(図12)内に稼働情報42’(図12)として保持している仮想ボリューム管理テーブル42(図6)のレコードのうち、仮想ページ番号欄42A(図6)に格納された仮想ページ番号が「p」のレコードの最終更新時刻欄42B(図6)に現在時刻を格納する(S8)。そして、I/Oプログラム50は、この後、このライト処理を終了する。
このように本実施の形態では、仮想ページに対する最初のデータライトでは、データをインライン方式(同期方式)で記憶デバイス20に格納する。これにより、ストレージ装置1に要求される記憶容量を、データを圧縮・重複排除処理した後のデータ量だけに抑えることができ、ポストプロセス方式でデータライトを行う場合に比べてストレージ装置に要求される記憶容量を抑えることができる。
一方、ステップS4の判断で肯定結果を得ることは、ライト要求においてデータライト先として指定された領域には既にデータが書き込まれており(つまりそのデータライトが最初のデータライトでない)、さらにそのデータが既に圧縮・重複排除処理が施されて圧縮チャンクとして追書き空間に移動されていることを意味する。かくして、このときI/Oプログラム50は、ライト要求の送信元のホスト2にライト要求が完了した旨の応答を返信する(S7)。またI/Oプログラムは、ステップS8を上述のように処理し、この後、このライト処理を終了する。
なお、キャッシュメモリ15に格納されたデータは、この後、ホストI/Oとは非同期にI/Oプログラム50により圧縮・重複排除処理が施されて記憶デバイス20に書き込まれる(S8)。この処理はデステージと呼ばれる。I/Oプログラム50は、仮想ページに書き込まれたデータをデステージする際、その仮想ページに物理ページが割り当てられている場合には、その物理ページを提供する記憶デバイス20にデータをデステージする。またI/Oプログラム50は、その仮想ページに物理ページが割り当てられていない場合には、デステージ前にその仮想ページに物理ページを割り当てた上でデータをデステージする。このようなデステージ処理の詳細については後述する。
このように本実施形態では、仮想ページの同一領域に対する2回目以降のデータライトでは、データをポストプロセス方式(非同期方式)で記憶デバイス20に格納する。これにより、すべてのデータライトをインライン方式で実行する場合に比べてホスト2から見たストレージ装置1の応答性能を向上させることができる。
(4−2)圧縮・重複排除処理
図14は、図13のステップS6においてI/Oプログラム50により呼び出された圧縮・重複排除プログラム52により実行される圧縮・重複排除処理の流れを示す。
圧縮・重複排除プログラム52は、I/Oプログラム50により呼び出されると、この図14に示す圧縮・重複排除処理を開始し、まず、必要に応じてライト対象のデータを8KBのチャンク単位で分割し、かかる分割により得られたチャンクの中から未処理の1つのチャンクを選択する(S10)。
また、圧縮・重複排除プログラム52は、選択したチャンク(以下、これを選択チャンクと呼ぶ)をローカルメモリ14のバッファ54(図12)に転送し(S11)、バッファ54に転送した選択チャンクのFPKを算出する(S12)。
続いて、圧縮・重複排除プログラム52は、選択チャンクの圧縮チャンクを書き込むべき追書き空間上のアドレス(PA)を特定し、そのPAを含む追書きページに割り当てられる物理ページを提供する記憶デバイス20が圧縮機能付きの記憶デバイス20であるか否かを判断する(S13)。
具体的に、圧縮・重複排除プログラム52は、追書き空間マッピングテーブル43(図7)を参照して、追書き空間における最後に圧縮チャンクを書き込んだ位置の次のPAを算出する。このPAが選択チャンクの圧縮チャンクを書き込むべき追書き空間上のアドレスである。より具体的には、圧縮・重複排除プログラム52は、プール管理テーブル41(図5)における対応するレコードの最終書込み位置欄41C(図5)を参照することにより、対応する仮想ボリュームと対応付けられた追書き空間における最後に圧縮チャンクの書き込みが行われた追書きページの追書きページ番号を特定する。以下、これを「AP1」とする。
また圧縮・重複排除プログラム52は、追書き空間マッピングテーブル43のレコードの中から、上述のようにして特定した追書きページ番号が追書きページ番号欄43Aに格納されたレコードを特定し、そのレコードのページ内最終書込み位置欄43Dに格納された最終書込み位置を取得する。以下、これを「AR1」とする。
そして圧縮・重複排除プログラム52は、このようにして得られたAP1及びAR1を用いて、次式
Figure 2019128906
により、追書き空間における選択チャンクの圧縮チャンクを書き込むべきPAを求める。そして圧縮・重複排除プログラム52は、このPAを含む追書きページに割り当てるべき物理ページを事前に選択する。そして圧縮・重複排除プログラム52は、ページ管理テーブル40(図4)を参照して、その物理ページの物理ページ番号が物理ページ番号欄40Aに格納されたレコードの圧縮機能有無フラグ欄40Eに格納された圧縮機能有無フラグの値が「1」であるか否かに基づいて、その物理ページを提供する記憶デバイス20が圧縮機能を備えるか否かを判断する。
ここで、このステップS13の判断で肯定結果を得た場合(ステップS13で確認した圧縮機能有無フラグの値が「1」であった場合)、選択チャンクの圧縮処理を当該選択チャンクの格納先の記憶デバイス20に任せることができるため、ストレージコントローラ10において当該選択チャンクに対する圧縮処理を実行する必要はない。かくして、このとき圧縮・重複排除プログラム52は、選択チャンクに圧縮処理を施すことなくステップS15に進む。
これに対して、ステップS13の判断で否定結果を得た場合、選択チャンクの圧縮処理を当該選択チャンクの格納先の記憶デバイス20に任せることができない。かくして、このとき圧縮・重複排除プログラム52は、選択チャンクを圧縮処理することにより圧縮チャンクを生成する(S14)。
続いて、圧縮・重複排除プログラム52は、図15A及び図15Bについて後述する重複排除処理を実行することにより選択チャンクに対して重複排除処理を施し(S15)、この後、必要なすべてのチャンクについてステップS11〜ステップS15の処理を実行し終えたか否かを判断する(S16)。
圧縮・重複排除プログラム52は、この判断で否定結果を得るとステップS10に戻り、この後、ステップS10で選択するチャンク(選択チャンク)を未処理の他のチャンクに順次切り替えながら、ステップS10〜ステップS16の処理を繰り返す。そして圧縮・重複排除プログラム52は、この後、この重複排除処理を終了する。
(4−3)重複排除処理
図15A及び図15Bは、図14について上述した圧縮・重複排除処理のステップS15において圧縮・重複排除プログラム52により実行される重複排除処理の具体的な処理手順を示す。圧縮・重複排除プログラム52は、この図15A及び図15Bに示す処理手順に従って、選択チャンクに対する重複排除処理を実行する。
実際上、圧縮・重複排除プログラム52は、かかる圧縮・重複排除処理のステップS15に進むと、この図15A及び図15Bに示す重複排除処理を開始する。そして圧縮・重複排除プログラム52は、選択チャンクについて圧縮・重複排除処理(図14)のステップS12で算出したFPKと同じFPKがFPMQ45(図9)に格納されているか否かを判定する(S20)。この判定は、上述のようにFPTD46(図9)を利用して、FPMQ45のレコードのうち、圧縮・重複排除処理のステップS12で算出したFPKがFPK欄45A(図9)に格納されたレコードが存在するか否かを探索することにより行われる。
そして圧縮・重複排除プログラム52は、ステップSの判定で肯定結果を得ると、圧縮・重複排除処理(図)のステップS20で算出したFPKとFPKが同じチャンク(圧縮チャンク)を記憶デバイス20から読み出す(S21)。
具体的に、圧縮・重複排除プログラム52は、まず、FPMQ45及びLP変換テーブル44(図8)を参照することにより圧縮・重複排除処理のステップS12で算出したFPKと同じFPKを持つチャンク(圧縮チャンク)が格納されているPA及びその長さを特定する。以下においては、このチャンクを重複候補チャンクと呼び、重複候補チャンクのPAを「PA1」と呼ぶ。続いて、圧縮・重複排除プログラム52は、追書き空間マッピングテーブル43(図7)を参照することにより、重複候補チャンクが格納されている物理ページのページ番号を特定し、さらにページ管理テーブル40(図4)を参照することにより、重複候補チャンクが格納されている物理ページを提供する記憶デバイス20と、その記憶デバイス20内におけるその物理ページのアドレスとを特定する。そして圧縮・重複排除プログラム52は、このようにして特定した記憶デバイス20から重複候補チャンクを読み出す。
次いで、圧縮・重複排除プログラム52は、ステップS21で読み出したチャンク(圧縮チャンク)の内容と、選択チャンクの内容とを比較し、両者が一致する否かを判定する(S22)。なお、比較の際、選択チャンクが圧縮されていない場合には、その選択チャンクを圧縮し又はステップS21で読み出したチャンクを伸長した上で、これらのチャンク同士をバイト単位で比較する。
この判定で肯定結果を得ることは、選択チャンクと同じ内容のチャンクが既にFPMQ45に登録されていることを意味する。この場合、圧縮・重複排除プログラム52は、まず、選択チャンクのLAと、その選択チャンクのFPKとを対応付けてFPMQ45に登録する。また圧縮・重複排除プログラム52は、LP変換テーブル44(図8)のレコードのうち、LA欄44A(図8)に格納されたLAが選択チャンクのLAと一致するレコードのFPMQ登録欄44E(図8)に「1」を格納する(S23)。
続いて、圧縮・重複排除プログラム52は、LP変換テーブル44のレコードのうち、LA欄44Aに格納されたLAが選択チャンクのLAと一致するレコードのPA欄44Cに、重複候補チャンクのPA(つまり「PA1」)を格納し、そのレコードの長さ欄44Dに重複候補チャンクのデータ長を格納する(S24)。この場合、選択チャンクの圧縮チャンクは追書き空間に格納はされない。
次いで、圧縮・重複排除プログラム52は、選択チャンクが圧縮・重複排除処理(図14)のステップS14で圧縮処理されており、かつ追書き空間に格納されている更新前の選択チャンク又はその圧縮チャンクがガベージとなったか否かを判断する(S25)。この判断は、選択チャンクの圧縮チャンクが存在し、かつ更新前の選択チャンクの圧縮チャンクが格納された追書き空間の領域のPAが、LP変換テーブル44において他のLAと対応付けられて登録されているか否かを判断することにより行われる。具体的に、圧縮・重複排除プログラム52は、LP変換テーブル44のレコードのうち、選択チャンクのLAがLA欄44Aに格納されたレコードを特定し、そのレコードのPA欄44Cに格納されているPAを取得する。そして圧縮・重複排除プログラム52は、取得したPAがLP変換テーブル44における上述のように特定したレコード以外のレコードのPA欄44Cに格納されているか否かを判断する。
ここで、この判断で否定結果を得ることは、追書き空間に格納されている更新前の選択チャンクの圧縮チャンクが重複排除処理により削除された他の圧縮チャンクと同一内容であり、当該更新前の選択チャンクの圧縮チャンクが他のLAとも対応付けられているため、その選択チャンクの圧縮チャンクを削除することはできないことを意味する。かくして、このとき圧縮・重複排除プログラム52はこの重複排除処理を終了する。
これに対して、ステップS25の判断で肯定結果を得ることは、追書き空間に格納されている更新前の選択チャンクの圧縮チャンクが選択チャンクのLA以外のいずれのLAとも対応付けられておらず、ガベージとなっていることを意味する。かくして、このとき圧縮・重複排除プログラム52は、かかる更新前の選択チャンクの圧縮チャンクが格納されているPAと、LP変換テーブル44における選択チャンクに対応するレコードの長さ欄44Dに格納されている更新前の選択チャンクの圧縮チャンクのデータ長とを対応付けてガベージ管理テーブル47(図10)に登録する(S26)。
続いて、圧縮・重複排除プログラム52は、追書き上書き条件管理テーブル48(図11)のレコードの中から、更新前の選択チャンクの圧縮チャンクが格納された物理ページを含むプールに対応するレコードのガベージ量欄48D(図11)に格納されている値を、更新前の選択チャンクの圧縮チャンクのデータサイズを加算した値に更新する(S27)。
また圧縮・重複排除プログラム52は、追書き上書き条件管理テーブル48のかかるレコードの圧縮・重複排除総データ量欄48Cに格納されている値を、更新前の選択チャンクの圧縮チャンクのデータサイズを減算した値に更新し(S28)、この後、この重複排除処理を終了する。
一方、圧縮・重複排除プログラム52は、ステップS20又はステップS22の判断で否定結果を得ると、ステップS23と同様にして、選択チャンクのLAと、その選択チャンクのFPKとを対応付けてFPMQ45(図9)に登録する。また圧縮・重複排除プログラム52は、LP変換テーブル44のレコードのうち、LA欄44Aに選択チャンクのLAが格納されたレコードのFPMQ登録欄44Eに「1」を格納する(S29)。
続いて、圧縮・重複排除プログラム52は、LP変換テーブル44のレコードのうち、LA欄44Aに選択チャンクのLAが格納されたレコードのPA欄44CにPAが格納されているか否か(つまり更新前の選択チャンクの圧縮チャンクが追書き空間に格納されているか否か)を判断する(S30)。
なお、上書き空間のチャンクへの初回のデータライトの場合、図13のステップS4で否定結果が得られ、ステップS6で呼び出された圧縮・重複排除プログラム52により図14の圧縮・重複排除処理及び図15A及び図15Bの重複排除処理が実行されるため、このステップS30の判断では必ず否定結果が得られることになる。これに対して、上書き空間のチャンクへの2回目以降のデータライトの場合には、図18について後述するデステージ処理において実行されるこの図15A及び図15Bに示す重複排除処理のステップS30において必ず肯定結果が得られる。
かくして圧縮・重複排除プログラム52は、このステップS30の判断で否定結果を得ると、図16について後述するPA決定及び書込み処理を実行することにより、バッファ54(図12)に格納されている選択チャンクの圧縮チャンクを追書き空間に移動させた上で、その選択チャンクの圧縮チャンクを記憶デバイス20に書き込む(S34)。なお、PA決定及び書込み処理の詳細については後述する。
次いで、圧縮・重複排除プログラム52は、LP変換テーブル44(図8)のレコードのうち、LA欄44Aに選択チャンクのLAが格納されたレコードのPA欄44Cに、ステップS34のPA決定及び書込み処理において選択チャンクの圧縮チャンクを書き込んだ追書き空間上のPAを格納する(S35)。また圧縮・重複排除プログラム52は、追書き上書き条件管理テーブル48(図11)のレコードのうち、対応するプールのプール番号がプール番号欄48Aに格納されたレコードの圧縮・重複排除総データ量欄48Cに格納されている値を、選択チャンクの圧縮チャンクのデータサイズを加算した値に更新する(S36)。
さらに圧縮・重複排除プログラム52は、ステップS25と同様にして、更新前の選択チャンクの圧縮チャンクが格納された追書き空間の領域のPAが、LP変換テーブルにおいて他のLAと対応付けられて登録されているか否かを判断する(S37)。なおステップS30で否定結果を得た上で、ステップS34〜ステップS36を経由してこのステップS38に至った場合には、当該に更新前のその選択チャンクの圧縮チャンクが追書き空間に格納されていないため、この判断では否定結果が得られる。そして圧縮・重複排除プログラム52は、このステップS37で否定結果を得ると、この重複排除処理を終了する。
これに対して、ステップS32で否定結果を得た上で、ステップS34〜ステップS36を経由してこのステップS38に至った場合には、このステップS37で肯定結果を得る場合がある。かくして、このとき圧縮・重複排除プログラム52は、ステップS38〜ステップS40を上述したステップS26〜ステップS28と同様に処理し、この後、この重複排除処理を終了する。
一方、圧縮・重複排除プログラム52は、ステップS30の判断で肯定結果を得た場合には、追書き空間に格納されている更新前の選択チャンクの圧縮チャンク上に更新後の選択チャンクの圧縮チャンクを上書きする必要があるか否かを判定する追書き上書き要否判定処理を実行する(S31)。追書き上書き要否判定処理の詳細については後述する。
また圧縮・重複排除プログラム52は、ステップS30の追書き上書き要否判定処理の結果として、追書き空間に格納されている更新前の選択チャンクの圧縮チャンク上に更新後の選択チャンクの圧縮チャンクを上書きする必要があるとの判定が得られたか否かを判断する(S32)。そして圧縮・重複排除プログラム52は、この判断で否定結果を得ると、上述と同様にしてステップS34〜ステップS40を実行し、この後、この重複排除処理を終了する。
これに対して、圧縮・重複排除プログラム52は、ステップS32の判断で肯定結果を得ると、LP変換テーブル44(図8)のレコードのうち、LA欄44A(図8)に選択チャンクのLAが格納されているレコードのPA欄44C(図8)に格納されているPAを取得し、取得したPAで示される物理アドレス(対応する記憶デバイス内の対応する領域)にそのときバッファ54(図12)に格納されている更新後の選択チャンク又はその圧縮チャンクを格納する(S33)。これにより、追書き空間に格納されている更新前の選択チャンクの圧縮チャンク上に、更新後の選択チャンクの圧縮チャンクが上書きされる。そして圧縮・重複排除プログラム52は、この後、この重複排除処理を終了する。
(4−4)PA決定及び書込み処理
図16は、図15A及び図15Bについて上述した重複排除処理のステップS34において圧縮・重複排除プログラム52により実行されるPA決定及び書込み処理の具体的な処理手順を示す。圧縮・重複排除プログラム52は、この図16に示す処理手順に従って、バッファ54(図12)に格納されている選択チャンクの圧縮チャンクの格納先とすべき追書き空間上のPAを決定すると共に、そのPAに更新後の選択チャンクの圧縮チャンクを書き込む。
実際上、圧縮・重複排除プログラム52は、重複排除処理のステップS34に進むと、この図16に示すPA決定及び書込み処理を開始し、まず、圧縮・重複排除処理(図14)のステップS13について上述した手法と同様の手法により、追書き空間における最後にチャンクの圧縮チャンクを書き込んだ位置の次のPAを算出する(S50)。このPAが選択チャンクの圧縮チャンクを書き込むべき追書き空間上のアドレスである。
具体的に、圧縮・重複排除プログラム52は、プール管理テーブル41(図5)における対応するレコードの最終書込み位置欄41C(図5)を参照することにより、対応する仮想ボリュームに対応する追書き空間における最後に書き込みが行われた追書きページの追書きページ番号を特定する。ここでは、特定した追書きページ番号が「AP1」であったものとする。また圧縮・重複排除プログラム52は、追書き空間マッピングテーブル43(図7)のレコードの中から、上述のようにして特定した追書きページ番号が追書きページ番号欄43A(図7)に格納されたレコードを特定し、そのレコードのページ内最終書込み位置欄43D(図7)に格納された最終書込み位置を取得する。ここでは、取得した最終書込み位置が「AR1」であったものとする。
そして圧縮・重複排除プログラム52は、このようにして得られたAP1及びAR1を用いて、上述の(2)式により、追書き空間上の選択チャンクの圧縮チャンクを書き込むべきPAを求める。以下においては、選択チャンクの圧縮チャンクの書込み先のPAが「PA2」に決定され、また圧縮チャンクの長さが「L2」であったものとする。
続いて、圧縮・重複排除プログラム52は、ステップS50で算出したPA(PA2)を含む追書きページに物理ページが割り当てられているか否かを判断する(S51)。具体的に、圧縮・重複排除プログラム52は、「PA2」をページサイズ(42MB)で割ることにより「PA2」を含む追書きページの追書きページ番号を求める。ここでは、求められた追書きページ番号が「AP2」であったものとする。また圧縮・重複排除プログラム52は、追書き空間マッピングテーブル43(図7)を参照することにより、追書きページ番号欄43A(図7)に「AP2」が格納されたレコードの物理ページ番号欄43B(図7)に有効な値(null以外の値)が格納されているか否かを判断する。かかる物理ページ番号欄43Bに有効な値が格納されている場合、「PA2」を含む追書きページには、物理ページが割り当てられている。そして圧縮・重複排除プログラム52は、この判断で肯定結果を得るとステップS53に進む。
これに対して圧縮・重複排除プログラム52は、ステップS51の判断で否定結果を得ると、その追書きページに物理ページを割り当てる(S52)。具体的に、圧縮・重複排除プログラム52は、ページ管理テーブル40(図4)から未使用の物理ページに対応するレコード(使用状況欄40Dに「0」が格納されたレコード)を1つ選択する。この際、圧縮・重複排除プログラム52は、図14について上述した圧縮・重複排除処理からの続きでこのPA決定及び書込み処理を実行している場合には、圧縮・重複排除処理のステップS13で上述のように仮に選択した物理ページを選択する。
そして圧縮・重複排除プログラム52は、そのレコードの物理ページ番号欄40A(図4)に格納されているその物理ページの物理ページ番号と、その物理ページの属するプールのプール番号とを、それぞれ追書き空間マッピングテーブル43(図7)におけるその追書きページに対応するレコードの物理ページ番号欄43B(図7)とプール番号欄43C(図7)とにそれぞれ格納する。また圧縮・重複排除プログラム52は、ページ管理テーブル40における上述のように選択したレコードの使用状況欄40D(図4)に「1」を格納する。
次いで、圧縮・重複排除プログラム52は、追書き空間マッピングテーブル43及びページ管理テーブル40を参照することにより、選択チャンクの圧縮チャンクの書込み先の記憶デバイス20が提供する記憶領域上のアドレスを算出する(S53)。そして圧縮・重複排除プログラム52は、ステップS53で算出したアドレスに、選択チャンクの圧縮チャンクを書き込む(S54)。
さらに圧縮・重複排除プログラム52は、今回選択チャンクの圧縮チャンクを書き込んだ追書きページの追書きページ番号をプール管理テーブル41(図5)における対応するレコードの最終書込み位置欄41C(図5)に格納すると共に、最後に書き込みを行った追書きページ内の相対アドレスを追書き空間マッピングテーブル43(図7)における対応するレコードのページ内最終書込み位置欄43D(図7)に格納する(S55)。そして圧縮・重複排除プログラム52は、この後、このPA決定及び書込み処理を終了する。
(4−5)追書き上書き要否判定処理
本実施形態のストレージ装置1において、ホスト2から書き込まれたデータが上書き空間から圧縮されて追書き空間に書き込まれた後に、そのデータが更新された場合、更新前の圧縮されたデータは基本的にガベージとなる(ただし、重複排除処理により唯一残されたデータである場合を除く)。このため本実施形態のストレージ装置1では、追書き空間内やプール内に存在するガベージを破棄する後述のガベージコレクション処理(図18)を定期的に実行することにより、ガベージの蓄積に起因する追書き空間やプール容量の枯渇を防止している。
しかしながら、データ更新が急増した場合や、ガベージコレクション処理の実行周期に対してデータ更新の頻度が多い場合には、ガベージコレクション処理によるガベージの破棄量よりもデータ更新に起因して発生するガベージの発生量のほうが多くなり、プールが枯渇するおそれがある。
このような事態の発生を防止すべく、本実施形態のストレージ装置1においては、プールの使用量が予め設定された閾値(以下、これをプール使用量閾値と呼ぶ)を超えた場合に、ホスト2からのI/Oに対して受付を制限する機能が搭載されているものの、このようなI/Oの受付制限を行った場合、ホスト2から見たストレージ装置1の応答性能が低下するという問題がある。
そこで、本実施形態のストレージ装置1では、ホスト2からのI/Oによりデータが更新される場合であって、ホスト2からのI/Oの受付が制限されているときや、プールが枯渇しそうなときには、そのデータの更新後の圧縮データを追書き空間に存在するそのデータの更新前の圧縮データ上に上書きする追書き上書き機能が搭載されている。
具体的には、データの圧縮処理や重複排除処理はチャンク単位で行われるため、更新されるチャンクごとに以下の(条件1)及び(条件2)の2つの条件(以下、これらを追書き上書き条件と呼ぶ)のうちのいずれかを満たすか否かをそれぞれ判定(追書き上書き要否判定)し、少なくとも一方の追書き上書き条件を満たすチャンクについては、追書き空間に存在するその更新前のチャンク又はその圧縮チャンク上に更新後のそのチャンク又はその圧縮チャンクを上書きする。
(条件1)対象となるチャンクの更新後の圧縮チャンクのデータサイズが当該チャンクの更新前の圧縮チャンクのデータサイズ以下であり、かつ当該チャンクを格納すべきプール(以下、これを対象プールと呼ぶ)におけるガベージ量(ガベージのデータ量)が多い場合。
本実施形態においては、「ガベージ量が多い」と判断する基準として、次式
Figure 2019128906
が成り立つ場合。なお、この条件は、プールにおけるガベージ量が、プールに格納された各データの圧縮・重複排除処理前の総データ量と、当該プールに格納された各データの圧縮・重複排除後の総データ量との差分以上であることを意味する。
(条件2)対象となるチャンクの更新後の圧縮チャンクのデータサイズが当該チャンクの更新前の圧縮チャンクのデータサイズ以下であり、かつ対象プールの使用量が一定以上。
本実施形態においては、次式
Figure 2019128906
が成り立つ場合。
図17は、このような追書き上書き機能に関連して図15A及び図15Bについて上述した重複排除処理のステップS31において圧縮・重複排除プログラム52により実行される追書き上書き要否判定処理の処理手順を示す。
圧縮・重複排除プログラム52は、重複排除処理のステップS31に進むと、この図17に示す追書き上書き判定処理を開始し、まず、追書き上書き条件管理テーブル48(図11)を参照して、対応するプールの総データ量を取得する(S60)。具体的に、圧縮・重複排除プログラム52は、追書き上書き条件管理テーブル48のレコードの中から、そのとき対象としているチャンク(以下、これを対象チャンク)のライト先の仮想ボリュームが属するプール(以下、これを対象プールと呼ぶ)のプール番号がプール番号欄48A(図11)に格納されたレコードを特定し、そのレコードの総データ量欄48B(図11)に格納されている値を取得する。
続いて、圧縮・重複排除プログラム52は、プール管理テーブル41(図5)のレコードの中から、対象プールのプール番号がプール番号欄41A(図5)に格納されているレコードを特定し、そのレコードのプールサイズ欄41D(図5)に格納されている対象プールのプールサイズ(容量)を取得する(S61)。
次いで、圧縮・重複排除プログラム52は、ステップS61で取得した対象プールの総データ量が上述のプール使用量閾値を超えているか否かを判断する(S62)。このプール使用量閾値は、ユーザが任意に設定することができる。例えば、プール使用量閾値をそのプールのプールサイズ(全容量)の80%と予め定め、そのプールのプールサイズに80%を乗算することにより得られた値をプール使用量閾値として設定するようにしてもよい。
この判断で肯定結果を得ることは、上述した追書き上書き条件の(条件2)における「対象プールの使用量が一定以上」という条件を満たすことを意味する。かくして、このとき圧縮・重複排除プログラム52は、ステップS66に進む。
これに対して、ステップS62の判断で否定結果を得ることは、対象プールの使用量がまだ多いという状態には至っていないことを意味する。かくして、このとき圧縮・重複排除プログラム52は、追書き上書き条件管理テーブル48から、対象プールに格納されている圧縮・重複排除後の総データ量(以下、これを圧縮・重複排除後総データ量と呼ぶ)と、当該対象プールに格納されているガベージのデータ量とをそれぞれ取得する(S63,S64)。
具体的に、圧縮・重複排除プログラム52は、ステップS63において、追書き上書き条件管理テーブル48のレコードのうち、対象プールに対応するレコードの圧縮・重複排除総データ量欄48C(図11)に格納されている圧縮・重複排除後総データ量を取得し、ステップS64において、そのレコードのガベージ量欄48D(図11)に格納されている値(以下、これをガベージ量と呼ぶ)を取得する。
そして圧縮・重複排除プログラム52は、ステップS60で取得した総データ量の値が、ステップS63で取得した圧縮・重複排除後総データ量と、ステップS64で取得したガベージ量との合計以下であるか否かを判断する(S65)。
この判断で肯定結果を得ることは、上述した追書き上書き条件の(条件1)における「対象プールのガベージ量が多い」という条件を満たすことを意味する。かくして、このとき圧縮・重複排除プログラム52は、更新後の選択チャンクの圧縮チャンクのデータサイズが更新前の選択チャンクの圧縮チャンクのデータサイズ以下であるか否かを判断する(S66)。
この判断で肯定結果を得ることは、上述した追書き上書き条件の(条件1)及び(条件2)における「対象となるチャンクの更新後の圧縮チャンクのデータサイズが当該チャンクの更新前の圧縮チャンクのデータサイズ以下」という条件を満たし、結果として選択チャンクの圧縮チャンクがこれら追書き上書き条件の(条件1)及び(条件2)のうちのいずれか一方を満たすことを意味する。かくして、このとき圧縮・重複排除プログラム52は、更新後の選択チャンクの圧縮チャンクを、追書き空間に格納されている更新前の選択チャンクの圧縮チャンクに上書きする必要があると判定し(S68)、この後、この追書き上書き要否判定処理を終了する。
これに対して、ステップS65又はステップS66の判断で否定結果を得ることは、選択チャンクの圧縮チャンクが上述の追書き上書き条件の(条件1)及び(条件2)のうちのいずれも満たさないことを意味する。かくして、このとき圧縮・重複排除プログラム52は、更新後の選択チャンクの圧縮チャンクを、追書き空間に格納されている更新前の選択チャンクの圧縮チャンクに上書きする必要がないと判定し(S67)、この後、この追書き上書き要否判定処理を終了する。
(4−6)デステージ処理
図18は、I/Oプログラム50により定期的に実行されるデステージ処理の処理手順を示す。上述のように本実施形態のストレージ装置1では、仮想ボリュームのある領域(上書き空間上のあるLA)に対する最初のデータライトの場合には、インライン方式によりホストI/Oと同期してデータが記憶デバイス20に格納される。
しかしながら、仮想ボリュームの同じ領域に対する2回目以降のデータライト(つまりデータの更新時)の場合には、ポストプロセス方式が適用されるため、ライト対象のデータが圧縮・重複排除されることなくキャッシュメモリ15(図1)に残留することになる。そこでストレージ装置1では、I/Oプログラム50がこの図18に示すデステージ処理を定期的に実行することにより、キャッシュメモリ15に残留するデータを、重複排除処理及び必要に応じて圧縮処理(格納先の記憶デバイス20が圧縮機能を有さない場合)を施しながら記憶デバイス20にデステージする。
実際上、I/Oプログラム50は、このデステージ処理を開始すると、まず、キャッシュメモリ15に格納されているデステージ対象のデータ(更新データ)の中から処理対象のデータ(以下、これを処理対象データと呼ぶ)を選択する(S70)。処理対象データの選択方法としては、様々な方法を適用できる。例えば、ホスト2からライトされた時刻が最も古いデータを選択する方法がある。その場合、ストレージコントローラ10(図1)は、キャッシュメモリ15に格納された各データについて、ホスト2からライトされた時刻を記憶しておく必要がある。以下では、ここで1チャンク分のデータが選択された場合の例を説明する。ただし別の実施形態として、複数のチャンク、例えば仮想ボリューム上で連続している複数のチャンクを選択するようにしてもよい。
続いて、I/Oプログラム50は、ステップS70で選択した処理対象データのライト先の仮想ページ(以下、これをライト先仮想ボリュームと呼ぶ)を特定する。そしてI/Oプログラム50は、仮想ボリューム管理テーブル42(図6)のレコードのうち、ライト先仮想ボリュームの仮想ボリューム番号が仮想ページ番号欄42A(図6)に格納されているレコードのページ種別欄42C(図6)に格納された値が「0」であるか否かを判断する(S71)。
この判断で肯定結果を得ることは、処理対象データが既に圧縮・重複排除されて上書き空間に移動されていることを意味する。かくして、このときI/Oプログラム50は、このデータを再び上書き空間に戻すか否かを判断する(S72)。例えば、ライト先仮想ページ内のほぼすべてのチャンクが更新されている場合、そのライト先仮想ページに格納されたデータが今後も頻繁に更新される可能性があり、デステージのたびにデータを圧縮して格納すると、ライト処理のオーバヘッドが大きくなる。そこで、このような場合にI/Oプログラム50は、追書き空間に移動されている当該仮想ページのデータを、再び上書き空間に戻すと決定する。ただし、この判定方法は一例であり、これ以外の判定方法によって、追書き空間に移動されているかかる仮想ページのデータを再び上書き空間に戻すか否かを判定するようにしてもよい。
そしてI/Oプログラム50は、ステップS72の判断で否定結果を得ると、処理対象データの格納先の記憶デバイス20が圧縮機能を有さない場合に限り、その処理対象データを圧縮する(S73)。このステップS73におけるI/Oプログラム50の処理内容は、図14のステップS11〜ステップS14と同様である。従って、この際、I/Oプログラム50は、処理対象データのFPKも算出する。
またI/Oプログラム50は、圧縮した処理対象データ(圧縮チャンク)を追書き空間に格納する(S74)。この処理は、図14のステップS15(図15A及び図15B)と同様な処理である。なお、この際、I/Oプログラム50は、図15AのステップS30に進んだ場合、処理対象データの格納先が圧縮機能を備える記憶デバイス20でないときには、このステップS30の判断で必ず肯定結果を得てステップS31以降の処理を実行することになる。そしてI/Oプログラム50は、この後、このデステージ処理を終了する。
これに対して、I/Oプログラム50は、ステップS72の判断で肯定結果を得ると、追書き空間に移動されているライト先仮想ページのすべてのデータを記憶デバイス20から読み出し、読み出したデータを、伸長した上で一旦キャッシュメモリ15(図1)に格納する(S75)。
この後、I/Oプログラム50は、ライト先仮想ページに物理ページを割り当てる(S76)。具体的に、I/Oプログラム50は、ページ管理テーブル40(図4)から未使用の物理ページを1つ選択し、その物理ページの物理ページ番号及び当該物理ページが属するプールのプール番号を、それぞれ仮想ボリューム管理テーブル42(図6)のレコードのうち、仮想ページ番号欄42A(図6)にライト先仮想ボリュームの仮想ボリューム番号が格納されたレコードの物理ページ番号欄42D(図6)及びプール番号欄42E(図6)に格納する。またI/Oプログラム50は、ページ管理テーブル40のレコードのうち、上述のように選択した物理ページの物理ページ番号が物理ページ番号欄40A(図4)に格納されたレコードの使用状況欄40D(図4)に「1」を格納する。
続いて、I/Oプログラム50は、ライト先仮想ページに割り当てられた物理ページに、ステップS75で読み出したデータを格納する(S77)。具体的に、I/Oプログラム50は、ページ管理テーブル40のレコードのうち、ライト先仮想ページに割り当てられた物理ページに対応するレコード(物理ページ番号欄40Aにその物理ページの物理ページ番号が格納されているレコード)のデバイス番号欄40B(図4)及びアドレス欄40C(図4)にそれぞれ格納されているデバイス番号及びアドレスを取得する。そしてI/Oプログラム50は、そのデバイス番号が付与された記憶デバイス20のそのアドレス位置に、ステップS75で読み出したデータを格納する。
次いで、I/Oプログラム50は、ライト先仮想ページに割り当てられた物理ページに、処理対象データを上書きし(S78)、この後、このデステージ処理を終了する。
これに対して、I/Oプログラム50は、ステップS71の判断で否定結果を得た場合であって、ライト先仮想ページに物理ページが割り当てられていないときには、ステップS76と同様にして、そのライト先仮想ページに物理ページを割り当てる(S79)。ただし、かかるライト先仮想ページに既に物理ページが割り当てられている場合には、物理ページを再度割り当てる必要はない。
続いて、I/Oプログラム50は、ステップS78と同様にして、処理対象データをライト先仮想ページに割り当てられた物理ページ(対応する記憶デバイス20)に上書きし(S80)、この後、このデステージ処理を終了する。
(4−7)ガベージコレクション処理
他方、図19は、ガベージコレクションプログラム53により定期的に実行されるガベージコレクション処理の処理手順を示す。ガベージコレクションプログラム53は、この処理手順に従って、プールに格納されたガベージを定期的に廃棄し、ガベージに使用されていた記憶領域を回収する。
実際上、ガベージコレクションプログラム53は、この図19に示すガベージコレクション処理を開始すると、まず、ガベージ管理テーブル47(図10)を参照して、ガベージの登録があるか否かを判断する(S90)。そしてガベージコレクションプログラム53は、この判断で肯定結果を得るとガベージ管理テーブル47に登録されたガベージを1つ選択する(S91)。
続いて、ガベージコレクションプログラム53は、ガベージ管理テーブル47におけるステップS91で選択したガベージが格納されている物理ページの物理ページ番号及びその物理ページが属するプールのプール番号をそれぞれ特定する(S92)。
具体的に、ガベージコレクションプログラム53は、ガベージ管理テーブル47を参照して、ステップS91で選択したガベージに対応するレコードのPA欄47Aに格納されたPA及び長さ欄47Bに格納されたデータ長を取得する。ここでは、かかるPAとして「PA2」という値が得られたものとして説明する。そしてガベージコレクションプログラム53は、次式
Figure 2019128906
で与えられる演算を実行し、その演算結果に基づいて、そのガベージが格納されている追書きページのページ番号(追書きページ番号)を算出する。またガベージコレクションプログラム53は、追書き空間マッピングテーブル43(図7)のレコードのうち、このとき算出した追書きページ番号が追書きページ番号欄に格納されているレコードの物理ページ番号欄43B及びプール番号欄43Cにそれぞれ格納されている物理ページ番号及びプール番号を取得する。この物理ページ番号がステップS91で選択したガベージが格納されている物理ページの物理ページ番号であり、このプール番号がその物理ページが属するプールのプール番号である。
続いて、ガベージコレクションプログラム53は、ステップS92で特定した物理ページ番号及びプール番号に基づいて、ステップS91で選択したガベージが格納されている記憶デバイス20のデバイス番号と、その記憶デバイス20内のそのガベージが格納されている記憶領域のアドレスとをページ管理テーブル40(図4)から取得する(S93)。具体的に、ガベージコレクションプログラム53は、ページ管理テーブル40のレコードの中から、ステップS92で特定した物理ページ番号が物理ページ番号欄40A(図4)に格納されているレコードを特定し、そのレコードのデバイス番号欄40B(図4)に格納されているデバイス番号と、そのレコードのアドレス欄40C(図4)に格納されているアドレスとを取得する。
次いで、ガベージコレクションプログラム53は、ステップS93で取得したデバイス番号が付与された記憶デバイス20内の、ステップS93で取得したアドレスに格納されたデータ(ガベージ)を削除するようその記憶デバイス20を制御する(S94)。なお、このとき削除されるデータ(ガベージ)のデータ長は、ガベージ管理テーブル47(図10)におけるステップS91で選択したガベージに対応するレコードの長さ欄47B(図10)に格納されているデータ長である。
またガベージコレクションプログラム53は、ガベージ管理テーブル47におけるステップS91で選択したガベージに対応するレコードの情報を削除すると共に(S95)、追書き上書き条件管理テーブル48(図11)における対応するプールのレコードのガベージ量欄48D(図11)に格納されている値を、そのときステップS91で選択したガベージのデータ量を減算した値に更新する(S96)。
そしてガベージコレクションプログラム53は、この後、ステップS90に戻って、ステップS90において否定結果を得るまでステップS90〜ステップS96の処理を繰り返す。そしてガベージコレクションプログラム53は、やがてガベージ管理テーブル47(図10)に登録されたすべてのガベージについてステップS92〜ステップS96の処理を実行し終えることによりステップS90で肯定結果を得ると、このガベージコレクション処理を終了する。
(5)本実施形態の効果
以上のように本ストレージ装置1では、対象となるチャンクの更新後の圧縮チャンクのデータサイズが当該チャンクの更新前の圧縮チャンクのデータサイズ以下であり、かつ、対象プールにおけるガベージ量が多い場合(追書き上書き条件の「条件1」)や、対象となるチャンクの更新後の圧縮チャンクのデータサイズが当該チャンクの更新前の圧縮チャンクのデータサイズ以下であり、かつ、対象プールの使用量が一定以上の場合(追書き上書き条件の「条件2」)には、更新後のそのチャンクの圧縮チャンクが追書き空間に格納されている更新前のそのチャンクの圧縮チャンクに上書きする。
従って、本ストレージ装置1によれば、データ更新時のガベージの発生を抑制することができ、その結果としてガベージの増加に起因するプールの枯渇を抑制することができる。かくするにつき、ガベージコレクション処理の実行周期に対してデータ更新の頻度が多い場合においてもホスト2からのI/Oが受付制限される事態の発生を抑制することができ、かくしてガベージの発生に起因するプールの枯渇を防止しながら、ホストから見たストレージ装置の応答性能の低下をも防止することができる。
なお、対象となるチャンクの更新後の圧縮チャンクのデータサイズが当該チャンクの更新前の圧縮チャンクのデータサイズ以下である場合には、常に、更新後のデータの圧縮チャンクを追書き空間に移動された更新前の当該データの圧縮チャンクに上書きする方法も考えられる。
しかしながら、このような方法によると、更新前のデータの圧縮チャンク上に上書きされた更新後のデータの圧縮チャンクが追書き空間上に点在することとなり、追書き空間上のデータをシーケンシャルに記憶デバイス20に格納できなくなるおそれがある。そして、このような場合、追書き空間に格納されたデータについてはシーケンシャルに記憶デバイス20に格納することにより、記憶デバイス20に対するデータのリード/ライト速度を向上させ得るという、追書き空間を導入したことにより得られる効果を得難くなる。
そこで、本実施形態においては、上述したように上記の追書き上書き条件を満たす場合に限り追書き空間上での上書きを許容しており、これにより追書き空間に格納されたデータの記憶デバイス20へのリード/ライト速度が低下するのを可能な限り抑制することができる。
また本ストレージ装置1では、仮想ボリューム上の領域に対する最初のデータライトの際にはインライン方式(同期方式)でデータのライト処理を行い、その領域に対する2回目以降のデータライトの際にはポストプロセス方式(非同期方式)でデータのライト処理を行う。従って、本ストレージ装置1によれば、基本的にストレージ装置1に用意すべき記憶容量が圧縮・重複排除処理後のデータ量だけでよく、例えば、ストレージ装置の切り替え時などにおいて、新たなストレージ装置1に事前に用意しておくべき記憶容量を少なくすることができるため、新たなストレージ装置1の導入コストを抑制できるという効果をも得ることができる。
さらに本ストレージ装置1では、圧縮機能付きの記憶デバイス20を搭載しており、圧縮機能付きの記憶デバイス20に格納されるデータであって追書き空間に移動されたデータ(圧縮されていないデータ)が常に上述した追書き上書き条件の(条件1)及び(条件2)における「対象となるチャンクの更新後の圧縮チャンクのデータサイズが当該チャンクの更新前の圧縮チャンクのデータサイズ以下」という条件を満たすことになるため、当該データが追書き上書き条件を満たす可能性が高くなり、その分更新後のそのデータが追書き空間において更新前のそのデータに上書きされる可能性が高くなる。かくするにつき、追書き空間内及びプール内の更新前のそのデータがガベージとなるのを抑制することができ、その分、より一層とガベージの発生に起因するプールの枯渇を防止しながら、ホストから見たストレージ装置の応答性能の低下を防止することができる。
(6)他の実施形態
以上、本発明の実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲を本実施形態に飲み限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施することが可能である。例えば、上述の実施形態においては、ローカルメモリ14及びキャッシュメモリ15という2種類のメモリを有する場合について述べたが、本発明はこれに限らず、ローカルメモリ14及びキャッシュメモリ15のうち、いずれか一方だけを有するようにストレージ装置1を構成するようにしてもよい。その場合、すべての情報がそのローカルメモリ又はキャッシュメモリに格納される。
また上述の実施形態においては、ストレージ装置1が使用する幾つかの情報をテーブル構造(図4〜図11参照)で管理するようにした場合について述べたが、本発明はこれに限らず、テーブル以外のデータ構造、例えばリスト構造などを用いて情報を管理するようにしてもよい。
さらに上述の実施形態においては、本発明を圧縮機能及び重複排除機能の双方が搭載されたストレージ装置1に適用するようにした場合について述べたが、本発明はこれに限らず、圧縮機能のみを搭載するストレージ装置にも適用することができる。
さらに上述の実施形態においては、プール使用量閾値をプールの全容量の一定割合(例えば80%)とするようにした場合について述べたが、本発明はこれに限らず、例えば、プールの容量に係わりなく一定容量をプール使用量閾値として設定するようにしてもよく、プール使用量閾値の設定方法としては、この他種々の設定方法を広く適用することができる。
本発明はストレージ装置及びその制御方法に関し、データの圧縮・重複排除機能が搭載された種々の構成のストレージ装置に広く適用することができる。
1……ストレージ装置、2……ホスト、10……ストレージコントローラ、13……CPU、14……ローカルメモリ、15……キャッシュメモリ、20……記憶デバイス、40……ページ管理テーブル、41……プール管理テーブル、42……仮想ボリューム管理テーブル、43……追書き空間マッピングテーブル、44……LP変換テーブル、47……ガベージ管理テーブル、48……追書き上書き条件管理テーブル。

Claims (8)

  1. ホストに対して仮想的な記憶空間である仮想ボリュームを提供するストレージ装置において、
    プールを構成する1又は複数の記憶デバイスと、
    仮想的な論理空間である追書き空間を管理し、前記ホストにより前記仮想ボリュームに書き込まれた前記データのうちの圧縮対象のデータを圧縮して前記追書き空間に追記し、前記追書き空間に追記した圧縮後の前記データを前記記憶デバイスに書き込むコントローラと
    を備え、
    前記コントローラは、
    前記プールの使用量が閾値以上となった場合には、前記ホストからの前記ライト要求の受付を制限し、
    前記追書き空間に追記したデータが更新された場合に、所定の条件を満たす場合には、更新後の当該データの圧縮データを、前記追書き空間に追記されている更新前の当該データの圧縮データに上書きする
    ことを特徴とするストレージ装置。
  2. 前記追書き空間に格納された前記データが更新され、更新後の当該データの圧縮データが前記追書き空間に追記された場合には、前記追書き空間に格納されている更新前の当該データの圧縮データがガベージとして管理され、
    前記コントローラは、
    更新後の前記データの圧縮後のデータサイズが前記追書き空間に格納されている更新前の当該データの圧縮後のデータサイズ以下であり、かつ、前記プールにおける前記ガベージのデータ量が、当該プールに格納された各データの前記圧縮前の総データ量と、当該プールに格納された各前記データの前記圧縮後の総データ量との差分以上であるか、又は、更新後の前記データの圧縮後のデータサイズが前記追書き空間に格納されている更新前の当該データの圧縮後のデータサイズ以下であり、かつ、当該プールの使用量が閾値以上の場合に、更新後の当該データの圧縮データを、前記追書き空間に格納されている更新前の当該データの圧縮データに上書きする
    ことを特徴とする請求項1に記載のストレージ装置。
  3. 前記コントローラは、
    前記仮想ボリュームの同一領域に対する前記ホストからの初回のデータライト時には当該データライトと同期してデータを前記記憶デバイスに書き込み、2回目以降のデータライト時には当該データライトとは非同期にデータを前記記憶デバイスに書き込む
    ことを特徴とする請求項2に記載のストレージ装置。
  4. 一部の前記記憶デバイスは、格納されたデータを圧縮して記憶保持する圧縮機能が搭載され、
    当該記憶デバイスに格納される前記データは、前記仮想ボリュームから圧縮されて前記追書き空間に追記されることなく当該記憶デバイスに与えられる
    ことを特徴とする請求項3に記載のストレージ装置。
  5. ホストに対して仮想的な記憶空間である仮想ボリュームを提供するストレージ装置の制御方法において、
    前記ストレージ装置は、
    プールを構成する1又は複数の記憶デバイスと、
    仮想的な論理空間である追書き空間を管理し、前記ホストにより前記仮想ボリュームに書き込まれた前記データのうちの圧縮対象のデータを圧縮して前記追書き空間に追記し、前記追書き空間に追記した圧縮後の前記データを前記記憶デバイスに書き込むコントローラと
    を有し、
    前記コントローラは、
    前記プールの使用量が閾値以上となった場合には、前記ホストからの前記ライト要求の受付を制限し、
    前記コントローラが、前記追書き空間に追記したデータが更新された場合に、所定の条件を満たすか否かを判定する第1のステップと、
    前記所定の条件を満たす場合に、前記コントローラが、更新後の当該データの圧縮データを、前記追書き空間に追記されている更新前の当該データの圧縮データに上書きする第2のステップと
    を備えることを特徴とするストレージ装置の制御方法。
  6. 前記追書き空間に格納された前記データが更新され、更新後の当該データの圧縮データが前記追書き空間に追記された場合には、前記追書き空間に格納されている更新前の当該データの圧縮データがガベージとして管理され、
    前記第1のステップにおいて、前記コントローラは、
    更新後の前記データの圧縮後のデータサイズが前記追書き空間に格納されている更新前の当該データの圧縮後のデータサイズ以下であり、かつ、前記プールにおける前記ガベージのデータ量が、当該プールに格納された各データの前記圧縮前の総データ量と、当該プールに格納された各前記データの前記圧縮後の総データ量との差分以上であるか、又は、更新後の前記データの圧縮後のデータサイズが前記追書き空間に格納されている更新前の当該データの圧縮後のデータサイズ以下であり、かつ、当該プールの使用量が閾値以上の場合に、前記条件を満たすと判定する
    ことを特徴とする請求項5に記載のストレージ装置の制御方法。
  7. 前記コントローラは、
    前記仮想ボリュームの同一領域に対する前記ホストからの初回のデータライト時には当該データライトと同期してデータを前記記憶デバイスに書き込み、2回目以降のデータライト時には当該データライトとは非同期にデータを前記記憶デバイスに書き込む
    ことを特徴とする請求項6に記載のストレージ装置の制御方法。
  8. 一部の前記記憶デバイスは、格納されたデータを圧縮して記憶保持する圧縮機能が搭載され、
    当該記憶デバイスに格納される前記データは、前記仮想ボリュームから圧縮されて前記追書き空間に追記されることなく当該記憶デバイスに与えられる
    ことを特徴とする請求項7に記載のストレージ装置の制御方法。
JP2018011882A 2018-01-26 2018-01-26 ストレージ装置及びその制御方法 Active JP6608468B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018011882A JP6608468B2 (ja) 2018-01-26 2018-01-26 ストレージ装置及びその制御方法
US16/123,738 US10521122B2 (en) 2018-01-26 2018-09-06 Storage apparatus and method of controlling same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018011882A JP6608468B2 (ja) 2018-01-26 2018-01-26 ストレージ装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2019128906A true JP2019128906A (ja) 2019-08-01
JP6608468B2 JP6608468B2 (ja) 2019-11-20

Family

ID=67393424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018011882A Active JP6608468B2 (ja) 2018-01-26 2018-01-26 ストレージ装置及びその制御方法

Country Status (2)

Country Link
US (1) US10521122B2 (ja)
JP (1) JP6608468B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023068287A (ja) * 2021-11-02 2023-05-17 株式会社日立製作所 ストレージシステム及びその制御方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190362075A1 (en) * 2018-05-22 2019-11-28 Fortinet, Inc. Preventing users from accessing infected files by using multiple file storage repositories and a secure data transfer agent logically interposed therebetween
US11106374B2 (en) * 2018-08-03 2021-08-31 EMC IP Holding Company LLC Managing inline data de-duplication in storage systems
US11036856B2 (en) 2018-09-16 2021-06-15 Fortinet, Inc. Natively mounting storage for inspection and sandboxing in the cloud
US11372579B2 (en) * 2020-10-22 2022-06-28 EMC IP Holding Company LLC Techniques for generating data sets with specified compression and deduplication ratios
US11934678B2 (en) * 2022-07-22 2024-03-19 Hewlett Packard Enterprise Development Lp Data reduction for storage volumes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259962A (ja) * 2005-03-16 2006-09-28 Hitachi Ltd ストレージシステム
JP2016095829A (ja) * 2014-11-14 2016-05-26 ドット ヒル システムズ コーポレイションDot Hill Systems Corporation 低速で低頻度のストリームを処理するための方法及び機器
WO2016203612A1 (ja) * 2015-06-18 2016-12-22 株式会社日立製作所 ストレージ装置
WO2017109931A1 (ja) * 2015-12-25 2017-06-29 株式会社日立製作所 計算機システム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5216915B2 (ja) 1973-10-15 1977-05-12
EP2391937A1 (en) * 2009-01-30 2011-12-07 Hitachi, Ltd. Storage system and storage control method that compress and store data elements
JP5216915B2 (ja) 2009-02-25 2013-06-19 株式会社日立製作所 ストレージ装置
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory
US9152563B2 (en) 2013-03-04 2015-10-06 Dot Hill Systems Corporation Method and apparatus for processing slow infrequent streams
US9218134B2 (en) * 2013-07-02 2015-12-22 GlobalFoundries, Inc. Read based temporal locality compression
US9529546B2 (en) * 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
US9052938B1 (en) * 2014-04-15 2015-06-09 Splunk Inc. Correlation and associated display of virtual machine data and storage performance data
US9767029B2 (en) * 2014-04-23 2017-09-19 International Business Machines Corporation Data decompression using a construction area
JP6385570B2 (ja) * 2015-05-12 2018-09-05 株式会社日立製作所 ストレージシステムおよび記憶制御方法
US10592150B2 (en) * 2016-02-15 2020-03-17 Hitachi, Ltd. Storage apparatus
US11086562B2 (en) * 2016-09-13 2021-08-10 Hitachi, Ltd. Computer system having data amount reduction function and storage control method
JP6553566B2 (ja) * 2016-09-23 2019-07-31 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2019036130A (ja) * 2017-08-16 2019-03-07 富士通株式会社 ストレージ制御装置、及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259962A (ja) * 2005-03-16 2006-09-28 Hitachi Ltd ストレージシステム
JP2016095829A (ja) * 2014-11-14 2016-05-26 ドット ヒル システムズ コーポレイションDot Hill Systems Corporation 低速で低頻度のストリームを処理するための方法及び機器
WO2016203612A1 (ja) * 2015-06-18 2016-12-22 株式会社日立製作所 ストレージ装置
WO2017109931A1 (ja) * 2015-12-25 2017-06-29 株式会社日立製作所 計算機システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023068287A (ja) * 2021-11-02 2023-05-17 株式会社日立製作所 ストレージシステム及びその制御方法
JP7411616B2 (ja) 2021-11-02 2024-01-11 株式会社日立製作所 ストレージシステム及びその制御方法

Also Published As

Publication number Publication date
US10521122B2 (en) 2019-12-31
JP6608468B2 (ja) 2019-11-20
US20190235755A1 (en) 2019-08-01

Similar Documents

Publication Publication Date Title
JP6608468B2 (ja) ストレージ装置及びその制御方法
US10635359B2 (en) Managing cache compression in data storage systems
JP6553566B2 (ja) メモリシステムおよび制御方法
CN108604165B (zh) 存储装置
JP6685334B2 (ja) ストレージ装置
JP5792313B2 (ja) ストレージシステム
US9946462B1 (en) Address mapping table compression
US20130114339A1 (en) Storage apparatus and data control method
WO2015162681A1 (ja) ストレージシステムおよび記憶デバイスの制御方法
JP6298932B2 (ja) ストレージ装置
US11455122B2 (en) Storage system and data compression method for storage system
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
JP2018073261A (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
JP2018181202A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
WO2018061161A1 (ja) ストレージ装置およびその制御方法
US20220164146A1 (en) Storage system and control method for storage system
JP6254986B2 (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
JP6243884B2 (ja) 情報処理装置、プロセッサ、および情報処理方法
US20210390048A1 (en) Method and system for facilitating log-structure data organization
JP7474217B2 (ja) ストレージシステム及びストレージシステムの制御方法
JP5638022B2 (ja) ディスクアレイ装置
WO2018051446A1 (ja) オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190924

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191015

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191023

R150 Certificate of patent or registration of utility model

Ref document number: 6608468

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150