JP2019159605A - データ量削減機能を有する計算機システム、及び、記憶制御方法 - Google Patents

データ量削減機能を有する計算機システム、及び、記憶制御方法 Download PDF

Info

Publication number
JP2019159605A
JP2019159605A JP2018043550A JP2018043550A JP2019159605A JP 2019159605 A JP2019159605 A JP 2019159605A JP 2018043550 A JP2018043550 A JP 2018043550A JP 2018043550 A JP2018043550 A JP 2018043550A JP 2019159605 A JP2019159605 A JP 2019159605A
Authority
JP
Japan
Prior art keywords
area
storage area
common
logical
data set
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
JP2018043550A
Other languages
English (en)
Other versions
JP6722216B2 (ja
Inventor
良介 達見
Ryosuke Tatsumi
良介 達見
義裕 吉井
Yoshihiro Yoshii
義裕 吉井
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 JP2018043550A priority Critical patent/JP6722216B2/ja
Priority to CN201810964800.3A priority patent/CN110244905B/zh
Priority to US16/119,589 priority patent/US10739999B2/en
Publication of JP2019159605A publication Critical patent/JP2019159605A/ja
Application granted granted Critical
Publication of JP6722216B2 publication Critical patent/JP6722216B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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

Abstract

【課題】単独領域に関して、記憶領域の回収、及び、記憶領域間でのデータセットのコピーを、迅速に行う。【解決手段】データ入出力要求を発行する外部計算機と、データを格納する記憶デバイスと、に接続された計算機システムにおいて、記憶デバイス側の第1のレイヤの論理記憶領域と、外部計算機側の第2のレイヤの論理記憶領域とがある。第1のレイヤの論理記憶領域は、共通領域と単独領域とを有する。共通領域の記憶領域は第2のレイヤの論理記憶領域の一つ又は複数の記憶領域に関係付けられるようになっている。単独領域の記憶領域は、第2のレイヤの論理記憶領域の一つの記憶領域に関係付けられるようになっている。計算機システムは、複数のデータセットの重複判断を行い、重複していると判断した複数のデータセットを共通領域に対応付けることで、共通領域の記憶領域を第2のレイヤの論理記憶領域の複数の記憶領域に関係付ける。【選択図】 図1

Description

本発明は、概して、データ量削減機能を有する計算機システムでの記憶制御に関する。
計算機システムの一例として、ストレージシステムがある。データ量削減機能を有するストレージシステムとして、例えば、特許文献1に開示のストレージシステム、すなわち、ガベージコレクション機能を有するストレージシステムが知られている。特許文献1には、次のことが開示されている。
ストレージシステムは、記憶デバイスと、ガベージコレクション機能を有するストレージコントローラとを有する。ストレージコントローラが、仮想アドレスと、記憶デバイスの物理アドレスとのマッピングを管理する。ストレージコントローラは、仮想アドレスに対するライトが発生した場合、その仮想アドレスに対し、既に割り当てられている物理アドレスに代えて新たなライト先の空き物理アドレスをマッピングするというマッピング更新(アドレス変換テーブルの更新)を行う。その結果、無効データ(仮想アドレスに対するマッピングが解除された物理アドレスに従うデータ)が増える。ストレージコントローラは、有効データ(いずれかの仮想アドレスにマッピングされている物理アドレスに従うデータ)をコピーし無効データを削除するガベージコレクションを実行する。これにより、データ量が削減され、空き物理アドレス(空き領域)が増える。
US 8,527,544
一般に、ストレージシステムにおいて、論理記憶領域の複数のレイヤがある。以下、複数のレイヤのうちの第1レイヤの論理記憶領域を「第1論理記憶領域」と呼び、複数のレイヤのうちの第2レイヤの論理記憶領域を「第2論理記憶領域」と呼ぶことにする。第2レイヤは第1レイヤよりも上のレイヤである。第1論理記憶領域は、複数の部分領域で構成されている。第2論理記憶領域は、例えば、Thin Provisioningに従う仮想ボリューム(仮想的な論理ボリューム)であり、その場合、第1論理記憶領域は、仮想ボリュームに割り当てられ得る複数のページ(部分領域の一例)で構成されたプールである。
データ量削減機能の1つとして、重複排除機能がある。重複排除機能は、一般に、複数の論理アドレス(2以上の第2論理記憶領域における異なる複数のライト先)にそれぞれ対応した複数のデータセットの重複を検出した場合、複数の論理アドレスの参照先を、複数のデータセットのうちのいずれかのデータセット(重複データセット)が格納される部分領域とし、残りのデータセットを削除する機能である。
部分領域には、重複データセットと単独データセット(いずれのデータセットとも重複しないデータセット)とが混在し得る。
そのため、割り当てられた部分領域を適宜に回収する(未使用の部分領域とする)ことを迅速に行うことが困難である。例えば、部分領域の回収として、削除対象の第2論理記憶領域に割り当てられている部分領域を回収することがあるが、その際には、回収対象の部分領域内のデータセット毎に重複データセットと単独データセットのいずれであるかの判別が必要となる。また、例えば、部分領域の回収として、有効データセット(いずれかの論理アドレスの参照先である領域内のデータセット)を部分領域間でコピーしコピー元の部分領域を回収すること(ガベージコレクション処理)があるが、重複データセットが有効データセットの場合には参照先の更新を複数の論理アドレスについて行うことが必要となる。
また、部分領域間でのデータセットのコピーも迅速に行うことが困難となり得る。コピー対象のデータセットが重複データセットの場合には、上述したように、参照先の更新を複数の論理アドレスについて行うことが必要となるからである。なお、「コピー」は、コピー元にデータセットが残る「レプリケーション」と、コピー元からデータセットが削除されるマイグレーションのいずれであってもよい。
同様の問題は、計算機システムの一例として、データ量削減機能を有するサーバシステム(例えば、HDD(Hard Disk Drive)のような補助記憶デバイスを有するサーバ)が採用された場合にもあり得る。
データ入出力要求を発行する外部計算機と、データを格納する記憶デバイスと、に接続された計算機システムにおいて、複数のレイヤの論理記憶領域は、記憶デバイス側の第1のレイヤの論理記憶領域と、外部計算機側の第2のレイヤの論理記憶領域と、を有する。第1のレイヤの論理記憶領域は、共通領域と単独領域とを有する。共通領域の記憶領域は第2のレイヤの論理記憶領域の一つ又は複数の記憶領域に関係付けられるようになっている。単独領域の記憶領域は、第2のレイヤの論理記憶領域の一つの記憶領域に関係付けられるようになっている。計算機システムは、複数のデータセットの重複判断を行い、重複していると判断した複数のデータセットを共通領域に対応付けることで、共通領域の記憶領域を第2のレイヤの論理記憶領域の複数の記憶領域に関係付ける。
単独領域に関して、記憶領域の回収、及び、記憶領域間でのデータセットのコピーを、迅速に行うことができる。
本発明の一実施形態の概要を示す。 一比較例の概要を示す。 ストレージシステムを含むシステム全体の構成を示す。 ストレージコントローラ内のメモリの構成と、そのメモリ内のプログラム及び管理情報とを示す。 ストレージシステム内の記憶階層を示す。 追記ページへの追記を模式的に示す。 重複排除処理を模式的に示す。 VOL管理テーブルの構成を示す。 アドレス変換テーブルの構成を示す。 有効領域管理テーブルの構成を示す。 ページ変換テーブルの構成を示す。 ページ割当管理テーブルの構成を示す。 サブブロック管理テーブルの構成を示す。 追記先検索テーブルの構成を示す。 重複チェックテーブルの構成を示す。 ハッシュ管理テーブルの構成を示す。 重複管理テーブルの構成を示す。 共通領域割当管理テーブルの構成を示す。 共通領域参照元チェックテーブルの構成を示す。 フロントエンドライト処理の流れを示す。 データ量削減処理の流れを示す。 重複排除処理の流れを示す。 重複判断処理の流れを示す。 追記処理の流れを示す。 リード処理の流れを示す。 提供ボリューム削除処理の流れを示す。 ガベージコレクション処理の流れを示す。 共通領域解放処理の流れを示す。
以下の説明では、「インターフェース部」は、1以上のインターフェースでよい。当該1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明では、「PDEV部」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
また、以下の説明では、「記憶部」は、メモリ部とPDEV部の少なくとも一部とのうちの少なくとも1つ(典型的には少なくともメモリ部)である。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェース部等を用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、「計算機システム」は、1以上の物理的な計算機を含んだシステムである。物理的な計算機は、汎用計算機でも専用計算機でもよい。物理的な計算機は、I/O(Input/Output)要求を発行する計算機(例えばホスト計算機)として機能してもよいし、I/O要求に応答してデータのI/Oを行う計算機(例えばストレージ装置)として機能してもよい。すなわち、計算機システムは、I/O要求を発行する1以上のホスト計算機であるホストシステム、及び、I/O要求に応答してデータのI/Oを行う1以上のストレージ装置であるストレージシステムのうちの少なくとも1つでよい。少なくとも1つの物理的な計算機において、1以上の仮想的な計算機(例えばVM(Virtual Machine))が実行されてもよい。仮想的な計算機は、I/O要求を発行する計算機でもよいし、I/O要求に応答してデータのI/Oを行う計算機でもよい。
また、計算機システムは、1以上(典型的には複数)の物理的なノード装置で構成された分散システムでよい。物理的なノード装置は、物理的な計算である。
また、物理的な計算機(例えばノード装置)が所定のソフトウェアを実行することにより、当該物理的な計算機、又は、当該物理的な計算機を含んだ計算機システムに、SDx(Software-Defined anything)が構築されてもよい。SDxとしては、例えば、SDS(Software Defined Storage)又はSDDC(Software-defined Datacenter)を採用することができる。例えば、ストレージ機能を有するソフトウェアが物理的な汎用の計算機で実行されることにより、SDSとしてのストレージシステムが構築されてもよい。また、少なくとも1つの物理的な計算機(例えばストレージ装置)が、ホストシステムとしての1以上の仮想的な計算機と、ストレージシステムのストレージコントローラ(典型的には、I/O要求に応答してデータをPDEV部に対して入出力する装置)としての仮想的な計算機とが実行されてもよい。言い換えれば、当該少なくとも1つの物理的な計算機は、ホストシステムの少なくとも一部として機能と、ストレージシステムの少なくとも一部としての機能の両方を有してもよい。
また、計算機システム(典型的にはストレージシステム)は、冗長構成グループを有してよい。冗長構成は、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングのように複数のノード装置での構成でもよいし、PDEV部の少なくとも一部としての1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループのように単一の計算機(例えばノード装置)での構成でもよい。
また、以下の説明では、「データセット」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。
また、以下の説明では、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)も採用可能である。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。例えば、ページを特に区別しないで説明する場合には、「ページ51」と記載し、個々のページを区別して説明する場合には、「ページ0」、「ページ1」のように記載することや、「ページ51P」、「ページ51C」のように記載することがある。
以下、図面を参照して、本発明の一実施形態を説明する。
図1は、本発明の一実施形態の概要を示す。なお、図1を参照した説明では、適宜、図3に記載の参照符号を使用することとする。
計算機システムの一例として、ストレージシステム200が採用されている。ストレージシステム200において、論理記憶領域(論理アドレス空間)の複数のレイヤがある。第1レイヤに属する1以上の第1論理記憶領域の一例が、1以上のプール503である。第2レイヤ(第1レイヤよりも上のレイヤ)に属する複数の第2論理記憶領域の一例が、複数の論理ボリューム501である。論理ボリューム501は、容量仮想化技術(典型的にはThin Provisioning)に従う仮想的な論理ボリュームである。論理ボリューム501のライト先論理アドレスに、プール503における未割当(空き)のページ51が割り当てられる。
ストレージシステム200は、ストレージコントローラ101を有する。ストレージコントローラ101は、プロセッサ部を含むコントローラの一例である。ストレージコントローラ101は、データ量削減機能として、重複排除機能を有する。
本実施形態では、重複データセットが格納される空間である共通領域80と、単独データセットが格納される空間である単独領域70とが用意される。言い換えれば、ストレージシステム200における論理アドレス空間が、共通領域80と単独領域70とに論理的に区別される。例えば、複数の論理ボリューム501は、それぞれI/O元から認識され得る2以上の論理ボリュームである2以上の提供ボリューム501Pを含む。
ストレージコントローラ101は、提供ボリューム0をライト先としたライト要求に従う対象データセットが、いずれかの1以上のデータセットと重複するデータセットであるか否かを判断する重複判断処理を行う。重複判断処理は、当該ライト要求の処理において行われる処理(インプロセス)と、当該ライト要求に従う対象データセットの格納の後に当該ライト要求の処理と非同期に行われる処理(ポストプロセス)のいずれであってもよい。重複判断処理の対象となる複数のデータセットは、ライト要求にかかるデータセットと、単独領域70に対応付けられているデータセットと、共通領域80に対応付けられているデータセットとのうちの少なくとも二つのデータセットを含む。すなわち、ストレージシステム200内に既に重複しているデータセットが存在する場合、3以上のデータセットが重複することもあり得る。なお、インプロセスでの重複判断処理では、ライト要求にかかるデータセットが、単独領域70に対応付けられているデータセット、又は、共通領域80に対応付けられているデータセットと重複するか否かが判断される。重複するとの判断の場合、ライト要求にかかるデータセットが削除(重複排除)されるため、単独領域70におけるデータセットの削除(例えば、後述の単独ページ51Pの回収)は不要である。
重複判断処理の結果、対象データセットがいずれのデータセットとも重複しない単独データセットAであれば、ストレージコントローラ101は、当該データセットAに関する格納先を、単独領域70に属し提供ボリューム0に対応したページ0とする。単独領域70に属するページを、以下、「単独ページ」と言うことがある。図1の例によれば、ページ0及び1の各々が、単独ページ51Pである。
重複判断処理の結果、対象データセットがいずれかの1以上のデータセットと重複するデータセットB(又はC)であれば、ストレージコントローラ101は、重複データセットB(又はC)に関する格納先を、共通領域80に属するページ2とする。ページ2が、重複データセットB及びCの各々の複数のライト先(提供ボリューム0及び1)から直接的又は間接的に参照される。共通領域80に属するページを、以下、「共通ページ」と言うことがある。図1の例によれば、ページ2が、共通ページ51Cである。重複判断処理がポストプロセスの場合、ストレージコントローラ101は、提供ボリューム0及び1にそれぞれ割り当てられている複数の単独ページ0及び1の各々から、データセットB及びCを、共通ページ2にコピーし、複数の単独ページ0及び1の各々からデータセットB及びCを削除する。
これにより、図2に例示する一比較例のような状況の発生、すなわち、1つのページ60に、単独データセットAと重複データセットCとが混在してしまうといった状況の発生
を避けることができ、以って、単独ページ51Pに関して、ページ51の回収、及び、ページ51間でのデータセットのコピーを、迅速に行うことができる。
例えば、ストレージコントローラ101は、提供ボリューム0が削除対象とされた場合、提供ボリューム0に関し割り当てられている全単独ページ51Pを、当該全単独ページ51Pの各々について当該単独ページ51Pがいずれか他の領域から参照されているか否かをチェックすること無しに、且つ、提供ボリューム0におけるいずれかの領域が共通領域80を参照しているか否かをチェックすること無しに、解放する。このため、提供ボリューム0に割り当たっていた全単独ページ51Pを迅速に回収することができる。
また、例えば、ストレージコントローラ101は、単独ページ51Pのガベージコレクション処理において、当該単独ページ51Pのうちの全ての有効な単独データセットを、いずれか別のページ51に追記的にコピーし、コピー元のページ51Pの割り当てを解除する。単独ページ51Pに関して、ページ51間でコピーされるデータセットは、単独データセットであり、重複データセットであることが無い。故に、参照先の更新は、当該単独データセットの1つの論理アドレス(提供ボリューム501Pに属する論理アドレス)についてのみ行えばよく、複数の論理アドレスの各々について行う必要は無い。このため、単独ページ51Pから別のページ51へのデータセットのコピーを迅速に行うことができ、結果として、単独ページ51Pのガベージコレクション処理が効率化される。
以下、本実施形態を詳細に説明する。
図3は、ストレージシステム200を含むシステム全体の構成を示す。
ストレージシステム200は、複数(又は1つ)のPDEV220と、複数のPDEV220に接続されたストレージコントローラ101とを有する。
ストレージコントローラ101は、S−I/F214と、M−I/F215と、P−I/F213と、メモリ212と、それらに接続されたプロセッサ211とを有する。S−I/F214、M−I/F215及びP−I/F213が、インターフェース部の一例である。メモリ212が、記憶部の一例である。プロセッサ211が、プロセッサ部の一例である。プロセッサ部は、圧縮及び伸張を行うハードウェア回路を含んでいてもよい。本実施形態では、プロセッサ211が、圧縮及び伸張を行う。つまり、ストレージコントローラ101は、データ量削減機能として、重複排除機能の他に圧縮機能を有する。
S−I/F214は、サーバシステム201とストレージコントローラ101との間のデータのやり取りを仲介する通信インターフェースデバイスである。S−I/F214に、FC(Fibre Channel)ネットワーク203を介して、サーバシステム201が接続される。サーバシステム201は、ストレージコントローラ101に対して、I/O先(例えばLUN(Logical Unit Number)のような論理ボリューム番号や、LBA(Logical Block Address)のような論理アドレス)を指定したI/O要求(ライト要求又はリード要求)を送信する。
M−I/F215は、管理システム205とストレージコントローラ101の間のデータのやり取りを仲介する通信インターフェースデバイスである。M−I/F215には、IP(Internet Protocol)ネットワーク204を介して管理システム205が接続される。ネットワーク203及び204は、同一の通信ネットワークでもよい。管理システム205は、ストレージシステム200を管理する。
P−I/F213は、複数のPDEV220とストレージコントローラ101の間のデータのやり取りを仲介する通信インターフェースデバイスである。P−I/F213には、複数のPDEV220が接続される。
メモリ212は、プロセッサ211が実行するプログラムや、プロセッサ211が使用するデータを記憶する。プロセッサ211は、メモリ212に格納されているプログラムを実行する。本実施形態では、例えば、メモリ212及びプロセッサ211の組が二重化されている。
図4は、メモリ212の構成と、メモリ212内のプログラム及び管理情報とを示す。
メモリ212は、ローカルメモリ401、キャッシュメモリ402、及び共有メモリ404というメモリ領域を含む。これらのメモリ領域のうちの少なくとも1つは、独立したメモリであってもよい。
ローカルメモリ401は、このローカルメモリ401を含むメモリ212と同一組に属するプロセッサ211により使用される。ローカルメモリ401には、リードプログラム411、フロントエンドライトプログラム412、バックエンドライトプログラム413、データ量削減プログラム414、VOL管理プログラム415、プール容量管理プログラム416及び共通領域解放プログラム417が格納される。これらのプログラムについては後述する。
キャッシュメモリ402には、PDEV220に対してライト又はリードされるデータセットが一時的に格納される。
共有メモリ404は、この共有メモリ404を含むメモリ212と同一組に属するプロセッサ211と異なる組に属するプロセッサ211との両方により使用される。共有メモリ404には、管理情報が格納される。管理情報は、VOL管理テーブル421、アドレス変換テーブル422(重複排除情報の一例)、プール管理テーブル423、有効領域管理テーブル424、ページ変換テーブル425、ページ割当管理テーブル426、サブブロック管理テーブル427、追記先検索テーブル428、ハッシュ管理テーブル429、重複管理テーブル430及び共通領域割当管理テーブル431を含む。これらのテーブルうち、プール管理テーブル423以外については、図を参照して後述する。プール管理テーブル423は、プール503に関する情報を保持するテーブルであり、例えば、プール503毎に、プール#(プール503の番号)、RG#(プール503の基になっている1以上のRG504の番号)、プール容量(プール503の容量)及びプール使用容量(プール容量のうち使用されている容量(典型的には、プール503のうちの割当て済ページの総容量))を表す。
図5は、ストレージシステム200内の記憶階層を示す。なお、以下の説明では、n番目のレイヤを「レイヤn」と呼ぶ(nは自然数)。nが小さい程、上のレイヤである。
提供ボリューム501P、追記ボリューム502、プール503及びRG504がある。
提供ボリューム501Pは、レイヤ1(第2レイヤの一例)の論理記憶領域であり、サーバシステム201に提供される(サーバシステム201から可視の)上述の論理ボリュームである。なお、レイヤ1の論理記憶領域として、更に、本実施形態では、後述するように、共通領域80に属する論理ボリュームでありサーバシステム201に提供されない(サーバシステム201から不可視の)共通ボリュームがある。
追記ボリューム502は、レイヤ2(第3レイヤの一例)の論理記憶領域であり、追記用の論理ボリュームである。1つの追記ボリューム502には、いずれか1つの論理ボリューム501が関連付けられる。逆に、1つの論理ボリューム501には、1又は複数の追記ボリューム502が関連付けられる。従って、追記ボリューム502(レイヤ2の論理記憶領域)と論理ボリューム501(レイヤ1の論理記憶領域)は、1:1又は1:多の関係である。本実施形態では、説明を簡単にするために、追記ボリューム502と論理ボリューム501は1:1であるとする。
プール503は、レイヤ3(第1レイヤの一例)の論理記憶領域であり、1以上のRG504に基づく論理記憶領域である。プール503は、複数のページ51で構成されている。なお、プール503の全部又は一部は、少なくとも1つのRG504に代えて又は加えて、ストレージシステム200の外部の記憶資源に基づいていてもよい。
RG504は、レイヤ4の論理記憶領域であり、複数のPDEV220で構成されたRAIDグループの空間である。
図5に例示の提供ボリューム501Pの一部は、2以上の提供ボリューム501Pのうちの少なくとも一部であり圧縮が有効とされた領域である「有効領域」の全部又は一部である。2以上の提供ボリューム501Pのうち有効領域以外の領域を、圧縮が無効とされた領域という意味で「無効領域」と言う。
ストレージコントローラ101は、ライト対象のデータセットAのライト先が有効領域の場合、当該ライト対象のデータセットAを圧縮し、提供ボリューム501Pに対応した追記ボリューム502に割り当てられたページ51Pa(当該ライト先に関して割り当てられた単独ページ51Pa)に、当該圧縮されたデータセットA´を追記する。つまり、有効領域に関して、ページ51Paは、提供ボリューム501Pに対応した追記ボリューム502に割り当てられたページ51、言い換えれば、提供ボリューム501Pに間接的に割り当てられたページ51である。ページ51Paには、追記的に圧縮後データセットA´が格納される。言い換えれば、追記ボリューム502に割り当てられたページ51は、上書き不可である。追記ボリューム502に割り当てられたページ(提供ボリューム501Pに間接的に割り当てられたページ)を、「追記ページ」と言うことができる。
一方、ストレージコントローラ101は、ライト対象のデータセットBのライト先が無効領域の場合、当該ライト対象のデータセットBを圧縮すること無しに、当該ライト先に関して割り当てられたページ51Pbに、当該非圧縮のデータセットBを格納する。つまり、無効領域に関して、ページ51Pbは、提供ボリューム501Pに直接的に(追記ボリューム502非経由で)割り当てられたページ51である。ページ51Pbには、非圧縮のデータセットBが格納される。提供ボリューム501Pに直接的に割り当てられたページ51は、上書き可である。提供ボリューム501Pに直接的に割り当てられたページを、「上書きページ」と言うことができる。
図6は、追記ページ51への追記を模式的に示す。
論理ボリューム501は、複数の単位領域である複数のブロック601で構成されている。本実施形態では、データセットは、ブロック単位のデータである。
論理ボリューム501に対応した追記ボリューム502に割り当てられた追記ページ51Pには、圧縮後データセットが追記されていく。追記ページ51Pにおいて、圧縮後データセットが占める領域602を、以下の説明では、「サブブロック602」と言う。サブブロック602は、サブページ領域及びサブ部分領域の各々の一例である。なお、追記ページ51Pには、非圧縮のデータセットが追記されてもよいが、本実施形態では、圧縮後データセットが追記される。
図7は、重複排除処理を模式的に示す。具体的には、図7は、ポストプロセスの重複排除処理の一例を模式的に示す。
論理ボリューム501として、提供ボリューム501Pの他に、共通ボリューム501Cがある。共通ボリューム501Cは、上述したように、共通領域80に属しサーバシステム201に提供されない論理ボリュームである。図示の共通ボリューム501Cの少なくとも一部が有効領域である。なお、有効領域に属する共通ボリュームと、無効領域に属する共通ボリュームとが用意されてもよい。
アドレス変換テーブル422及び追記ボリューム502の各々が、論理ボリューム501毎に設けられている。図7の説明において、論理ボリュームm(VOL#“m”の論理ボリューム(mは0以上の整数))に対応したアドレス変換テーブル422を、「アドレス変換テーブルm」と言うことがある。また、図7の説明において、論理ボリュームmに対応した追記ボリューム502を、「追記ボリュームm」と言うことがある。
また、以下の説明において、下記の用語を使用することがある。
・提供ブロック:提供ボリュームにおけるブロック。
・共通ブロック:共通ボリュームにおけるブロック。
・重複先ブロック:重複データセットのライト先(コピー先)とされた共通ブロック。
・追記単独ページ:単独ページ且つ追記ページであるページ。
・追記共通ページ:共通ページ且つ追記ページであるページ(共通ボリュームに対応した追記ボリュームに割り当てられたページ)。
提供ボリューム1及び2があり、故に、アドレス変換テーブル1及び2と、追記ボリューム1及び2がある。また、共通ボリューム3があり、故に、アドレス変換テーブル3と、追記ボリューム3がある。追記ボリューム1及び2が、単独領域70に属し、追記ボリューム3が、共通領域80に属する。
重複排除処理の前の状況の一例は、図7の上側に示すように、下記の通りである。
・提供ボリューム1及び2がそれぞれ有する2つの提供ブロック601Pの各々に、データセットAが存在する。結果として、追記ボリューム1及び2にそれぞれ割り当てられた2つの追記単独ページ51Pの各々に、圧縮後データセットA´が存在する。
・アドレス変換テーブル1及び2の各々では、データセットAのライト先提供ブロック601Pの論理アドレスの参照先が、追記単独ページ51Pにおけるサブブロック602(圧縮後データセットA´が存在するサブブロック602)の論理アドレスである。
ストレージコントローラ101は、上述した重複判断処理において、提供ボリューム1及び2に重複するデータセットAが存在することを検出する。その場合、ストレージコントローラ101は、例えば以下の処理を含む重複排除処理を行う。
・ストレージコントローラ101は、重複データセットA(圧縮後データセットA´の伸張後データセットに相当)を、提供ボリューム1及び2における有効領域の提供ブロック601Pから、共通ボリューム3の有効領域におけるいずれかの未使用の共通ブロック601Cにコピーする。コピー先の共通ブロック601Cが、重複先ブロック601C(重複先領域の一例)である。
・ストレージコントローラ101は、重複先ブロック601Cに対応した追記ボリューム3にページ51を割り当てる。割り当てられたページ51が、追記共通ページ51Cである。
・ストレージコントローラ101は、重複データセットAを圧縮し、圧縮後データセットA´を、追記共通ページ51Cに追記する。
・ストレージコントローラ101は、アドレス変換テーブル3を更新する。更新後のアドレス変換テーブル3では、重複先ブロック601Cの論理アドレスの参照先が、追記共通ページ51Cにおけるサブブロック602(圧縮後データセットA´が存在するサブブロック602)の論理アドレスである。
・ストレージコントローラ101は、アドレス変換テーブル1及び2を更新する。更新後のアドレス変換テーブル1及び2の各々では、提供ブロック601Pの論理アドレスの参照先が、追記単独ページ51Pにおけるサブブロック602(圧縮後データセットA´が存在するサブブロック602)の論理アドレスに代えて、重複先ブロック601Cの論理アドレスとなる。
・ストレージコントローラ101は、追記ボリューム1及び2にそれぞれ割り当てられた2つの追記単独ページ51Pの各々のうち、圧縮後データセットA´が格納されているサブブロック602を、黒色で示す通り、無効サブブロック(未割当)として管理する。
・ストレージコントローラ101は、重複管理テーブル430を更新する。更新後の重複管理テーブル430では、重複先ブロック601Cの論理アドレスの参照元が、コピー元の2つの提供ブロック601Pの論理アドレスである。
以上が、重複排除処理の一例である。なお、共通領域80におけるデータセットを参照する単独領域70内の参照元が一つになっても、当該データセットは単独領域70に移動されないでよい(当該データセットは共通領域80に残り続けてよい)。重複排除処理において、ストレージコントローラ101は、重複データセットAを共通ブロック601Cにコピーすることに代えて、いずれかの圧縮後データセットA´を、共通領域80に属するページ51Cに追記的にコピーし、2つの提供ブロック601Pの論理アドレスの参照先を、コピー先ページ51Cのサブブロック602の論理アドレスとし、コピー元のサブブロック602を無効サブブロックとしてもよい。このような処理が採用される場合、共通ボリューム501Cは無くてもよい。
ストレージコントローラ101は、例えば、提供ボリューム1のうちの、データセットAのライト先提供ブロック601Pに、更新後のデータセットFを書き込むためのライト要求を受信したとする。この場合、追記ボリューム1の追記単独ページ51Pに対して、下記の(c1)〜(c3)を行う。(c2)は、重複排除処理の前に当該ライト要求を受けた場合に行われる処理である。(c3)は、重複排除処理の後に当該ライト要求を受けた場合に行われる処理である。
(c1)ストレージコントローラ101は、旧サブブロック602の参照元(旧参照元)が、提供ボリューム1におけるいずれかの提供ブロック601Pの論理アドレスであるか否かを判断する。「旧サブブロック」とは、ライト対象の圧縮後データセットF´の更新前の圧縮後データセットA´を格納したサブブロックである。「ライト対象の圧縮後データセットF´」とは、ライト先提供ブロック601Pへのライト対象のデータセットFの圧縮後データセットである。
(c2)(c1)の判断の結果が真の場合、ストレージコントローラ101は、旧サブブロック602が追記単独ページ51Pに存在するため当該旧サブブロック602を無効サブブロック(未使用のサブブロック)とし、ライト対象の圧縮後データセットF´を新たなサブブロックに追記し、ライト先提供ブロック601Pの論理アドレスの参照先を、旧サブブロック602の論理アドレスから当該新たなサブブロックの論理アドレスに変更する。
(c3)(c1)の判断の結果が偽の場合、ストレージコントローラ101は、旧サブブロック602が追記共通ページ51Cに存在するため当該旧サブブロック602を無効サブブロックとすること無しに、ライト対象の圧縮後データセットF´を追記単独ページ51Cにおける新たなサブブロックに追記し、ライト先提供ブロックの論理アドレスの参照先を、重複先ブロック601Cの論理アドレスから当該新たなサブブロックの論理アドレスに変更する。
このため、下記の(x1)及び(x2)のような状況が発生し得る。
(x1)追記単独ページ51Pにおいて、有効な圧縮後データセット(有効なサブブロック602)の論理アドレスが非連続となること(有効な圧縮後データセットが離散した状態となること)。
(x2)共通ボリューム501Cにおける重複先ブロック601Cが、いずれの提供ボリューム501Pにおける提供ブロック601Pからも参照されなくなっているにも関わらず、使用中のままとなり、結果として、共通ボリューム501Cの空き容量が増えず、且つ、共通ページ51Cに、不必要な圧縮後データブロックが残り続けてしまうこと。
(x1)の状況が発生し得るため、単独領域70に関し、ガベージコレクション処理が必要となる。本実施形態では、単独領域70に関してのガベージコレクション処理を効率的に行うことができる。ガベージコレクション処理において有効ないずれの圧縮後データセットも単独データセットの圧縮後データセットであるため、各有効な圧縮後データセットについて、参照元は1つであり、当該1つの参照元についてのみ、参照先の変更を行えばよいからである。
(x2)の状況が発生し得るため、ストレージコントローラ101は、重複先ブロック601Cを未使用とするための解放処理を行う。具体的には、当該解放処理において、ストレージコントローラ101は、重複先ブロック601Cの1以上の参照元ブロック601P(1以上の提供ボリューム501Pにおける1以上の提供ブロック601P)から、参照先が当該重複先ブロック601Cではない参照元ブロック601Pを除外する。ストレージコントローラ101は、全ての参照元ブロック601Pが除外されたために当該重複先ブロック601Cを参照先とする参照元が無い場合、当該重複先ブロック601Cを未使用へと解放する。それに伴い、ストレージコントローラ101は、当該重複先ブロック601Cの参照先のサブブロック602(共通ページ51C内のサブブロック602)を無効サブブロックとする。なお、共通ボリューム501Cにおける重複先ブロック601Cの参照元ブロック601Pが1つだけの場合、ストレージコントローラ101は、下記のうちのいずれかを行ってよい。
・ストレージコントローラ101は、当該重複先ブロック601Cに対応した圧縮後データセットを、共通ページ51Cから、当該参照元ブロック601Pを含む提供ボリューム501Pに対応した追記ページ51Pに、追記的にコピーし、コピー元のサブブロック602(共通ページ51Cにおけるサブブロック602)を未使用(未割当)とし、重複先ブロック601Cを未使用とする。これにより、共通ボリューム501Cの空き容量を増やすことができる。
・ストレージコントローラ101は、当該重複先ブロック601Cに対応した圧縮後データセットを、共通ページ51Cに格納されたままとする。これにより、ページ51間のコピーの発生頻度を低減することができる。
以下、幾つかのテーブルを説明する。
図8は、VOL管理テーブル421の構成を示す。
本実施形態では、提供ボリューム501Pのようにサーバシステム201に提供される論理ボリュームも、共通ボリューム501C及び追記ボリューム502のようにサーバシステム201に提供されない論理ボリュームも、「VOL」と総称できる。VOL管理テーブル421は、VOLに関する情報を保持する。例えば、VOL管理テーブル421は、VOL毎に、エントリを有する。各エントリは、VOL#801、VOL属性802、VOL容量803及びプール#804といった情報を格納する。以下、1つのVOL(図8の説明において「対象VOL」)を例に取る。
VOL#801は、対象VOLの番号(識別番号)を表す。VOL属性802は、対象VOLの属性を表す(例えば、提供ボリュームは“提供”、追記ボリュームは“追記”、共通ボリュームは“共通”)。VOL容量803は、対象VOLの容量を表す。プール#804は、対象VOLに関連付けられているプール503の番号を表す。
図9は、アドレス変換テーブル422の構成を示す。
アドレス変換テーブル422は、論理ボリューム501(レイヤ1の論理ボリューム)毎に存在する。アドレス変換テーブル422は、参照元の論理アドレスと参照先の論理アドレスとの関係に関する情報を保持する。例えば、アドレス変換テーブル422は、ブロック601毎に、エントリを有する。各エントリは、VOL内アドレス901、参照先VOL#902、参照先VOL内アドレス903、データサイズ904及び参照先VOL種別905といった情報を格納する。以下、1つのブロック601(図9の説明において「対象ブロック601」)を例に取る。
VOL内アドレス901は、対象ブロック601の論理アドレス(例えば先頭論理アドレス)を表す。参照先VOL#902は、対象ブロック601の論理アドレスの参照先VOL(追記ボリューム又は共通ボリューム)の番号を表す。参照先VOL内アドレス903は、対象ブロック601の論理アドレスの参照先の論理アドレス(参照先VOL内の論理アドレス)を表す。データサイズ904は、対象ブロック601をライト先としたデータセットの圧縮後データセットのサイズを表す。参照先VOL種別905は、対象ブロック601の論理アドレスの参照先VOLの種別(“単独”(追記ボリューム)か“共通”(共通ボリューム))を表す。
図10は、有効領域管理テーブル424の構成を示す。
有効領域管理テーブル424は、論理ボリューム501毎に存在する。有効領域管理テーブル424は、有効領域に関する情報を保持する。例えば、有効領域管理テーブル424は、ブロック毎に、エントリを有する。各エントリは、VOL内アドレス1001及び有効フラグ1002といった情報を格納する。以下、1つのブロック601(図10の説明において「対象ブロック601」)を例に取る。
VOL内アドレス1001は、対象ブロック601の論理アドレスを表す。有効フラグ1002は、対象ブロック601が有効領域に属する(“有”)か否(“無”)かを示す。
図11は、ページ変換テーブル425の構成を示す。
ページ変換テーブル425は、論理ボリューム501毎に、及び、追記ボリューム502毎に、存在する。ページ変換テーブル425は、論理ボリューム501における領域(例えば、ページ51のサイズと同数分のブロック601)とページ51との関係に関する情報を保持する。例えば、ページ変換テーブル425は、論理ボリューム501における領域毎に、エントリを有する。各エントリは、VOL内アドレス1101、割当フラグ1102及びページ#1103といった情報を格納する。以下、1つの領域(図11の説明において「対象領域」)を例に取る。
VOL内アドレス1001は、対象領域の論理アドレス(例えば先頭論理アドレス)を表す。割当フラグ1102は、対象領域にページ51が割り当てられている(“割当済”)か否(“未割当”)かを示す。ページ番号1103は、対象領域に割り当てられているページ51の番号を表す。
図12は、ページ割当管理テーブル426の構成を示す。
ページ割当管理テーブル426は、プール503毎に存在する。ページ割当管理テーブル426は、ページ51とその割当先との関係に関する情報を保持する。例えば、ページ割当管理テーブル426は、ページ51毎にエントリを有する。各エントリは、ページ#1201、割当フラグ1202、割当先VOL#1203及び割当先VOL内アドレス1204といった情報を格納する。以下、1つのページ51(図12の説明において「対象ページ51」)を例に取る。
ページ#1201は、対象ページ51の番号を表す。割当フラグ1202は、対象ページ51が割り当てられている(“割当済”)か否(“未割当”)かを示す。割当先VOL#1203は、対象ページ51の割当先VOL(論理ボリューム501又は追記ボリューム502)の番号を表す。割当先VOL内アドレス1204は、対象ページ51の割当先VOLにおける領域の論理アドレス(例えば先頭論理アドレス)を表す。
図13は、サブブロック管理テーブル427の構成を示す。
サブブロック管理テーブル427は、追記ボリューム502毎に存在する。サブブロック管理テーブル427は、サブブロック602に関する情報を保持する。例えば、サブブロック管理テーブル427は、サブブロック602毎にエントリを有する。各エントリは、ページ#1301、ページ内アドレス1302、割当フラグ1303、VOL内アドレス1304及びサブブロックサイズ1305といった情報を格納する。以下、1つのサブブロック602(図13の説明において「対象サブブロック602」)を例に取る。
ページ#1301は、対象サブブロック602を含むページ51の番号を表す。ページ内アドレス1302は、対象サブブロック602の論理アドレスを表す。割当フラグ1303は、対象サブブロック602が割り当てられている(“割当済”)か否(“未割当”)か、言い換えれば、対象サブブロック602が使用中か未使用かを表す。VOL内アドレス1304は、対象サブブロック602の割当先の論理アドレス(追記ボリューム502における領域の論理アドレス)を表す。サブブロックサイズ1305は、対象サブブロック602のサイズ(言い換えれば、対象サブブロック602に格納されている圧縮後データセットのサイズ)を表す。
図14は、追記先検索テーブル428の構成を示す。
追記先検索テーブル428は、圧縮後データセットの追記先の表す。追記先検索テーブル428は、例えば、追記ボリューム502毎にエントリを有する。各エントリは、VOL#1401、追記先アドレス1402及び終端アドレス1403といった情報を格納する。以下、1つの追記ボリューム502(図14の説明において「対象追記ボリューム502」)を例に取る。
VOL#1401は、対象追記ボリューム502の番号を表す。追記先アドレス1402は、対象追記ボリューム502における追記先の論理アドレス(対象追記ボリューム502に割り当てられた追記ページ51Pにおける追記先の論理アドレス)を表す。終端アドレス1403は、追記先となり得る論理アドレスの終端の論理アドレスを表す。
追記先の論理アドレスと終端の論理アドレスとの差に従うサイズが、圧縮後データサイズ未満の場合、追記不可のため、対象追記ボリューム502の先頭の論理アドレスが再度追記先とされてよい。具体的には、例えば、ストレージコントローラ101は、対象追記ボリューム502の先頭の論理アドレスに近い追記ページ51Pから優先的にガベージコレクション処理を行ってよい。それにより、対象追記ボリューム502の先頭の論理アドレスに近い追記ページ51Pから優先的に、追記ページ51Pの割当が解除され、結果として、対象追記ボリューム502の先頭の論理アドレスに近い領域から優先的に、未使用とされていってよい。
図15は、重複チェックテーブル489の構成を示す。
重複チェックテーブル489は、重複判断処理において作成され使用される。重複チェックテーブル489は、重複判断処理の対象とされるデータについて、作成され、例えばメモリ212に格納される。ここで言う「データ」は、典型的には、所定の処理対象のデータであり、ブロックのサイズよりも大きい。このため、重複判断処理(及び、単独領域70又は共通領域80への格納)は、ブロック単位(データセット単位)で行われてもよいが、本実施形態では、ブロック単位に代えて処理対象のデータの単位でまとめて行われる。具体的には、例えば、処理対象のデータは、いずれかの提供ボリューム501Pに対するライト要求に従うデータであり、当該データのサイズは、ブロックのサイズの整数倍でよく、重複判断処理(及び、単独領域70又は共通領域80への格納)は、ライト要求に従うデータの単位(つまり、I/O要求の単位)で行われてよい。このように、重複判断処理(及び、単独領域70又は共通領域80への格納)は、処理対象のデータの単位でまとめて行われるので、効率的である。
重複チェックテーブル489は、例えば、データを構成する1以上のデータセットにそれぞれ対応した1以上のブロック601の各々について、エントリを有する。各エントリは、対象VOL#1501、対象VOL内アドレス1502、ハッシュ値1503、ヒットフラグ1504、比較先VOL#1505、比較先VOL内アドレス1506、比較成功フラグ1507、格納先VOL#1508及び格納先VOL内アドレス1509といった情報を格納する。以下、1つのブロック601(図15の説明において「対象ブロック601」)を例に取る。
対象VOL#1501は、対象ブロック601を含む論理ボリューム501の番号を表す。対象VOL内アドレス1502は、対象ブロック601の論理アドレスを表す。ハッシュ値1503は、対象ブロック601に対応したハッシュ値(対象ブロック601がライト先であるデータセットのハッシュ値)を表す。
ヒットフラグ1504は、ハッシュ値ヒット(“Hit”)か否(“Miss”)かを表す。「ハッシュ値ヒット」とは、対象ブロック601に対応したハッシュ値と一致するハッシュ値が既に存在することである。
比較先VOL#1505は、対象ブロック601についてハッシュ値ヒットが生じた場合に有効であり、比較先VOLの番号を表す。「比較先VOL」とは、対象ブロック601に対応したハッシュ値と一致するハッシュ値のデータセットを格納する論理ボリューム501であり、データセット同士の比較先とされる論理ボリューム501である。比較先VOLは、提供ボリューム501Pと共通ボリューム501Cのいずれかである。比較先VOL内アドレス1506は、対象ブロック601に対応したハッシュ値と一致するハッシュ値のデータセットを格納するブロック601の論理アドレス(比較先VOLにおけるブロック601の論理アドレス)を表す。対象ブロック601について、比較先VOL#1505及び比較先VOL内アドレス1506の組が複数存在してもよい。
比較成功フラグ1507は、対象ブロック601についてハッシュ値ヒットが生じた場合に行われるデータセット同士の比較が成功(“成功”)か否(“失敗”)かを表す。データセット同士が互いに一致の場合に、比較成功フラグ1507は“成功”である。
格納先VOL#1508は、格納先VOLの番号を表す。「格納先VOL」とは、対象ブロック601がライト先であるデータセットの格納先の論理ボリューム501である。対象ブロック601がライト先であるデータセットが単独データセットであれば、格納先VOLは、追記ボリューム502である。対象ブロック601がライト先であるデータセットが重複データセットであれば、格納先VOLは、共通ボリューム501Cである。格納先VOL内アドレス1509は、対象ブロック601がライト先であるデータセットの格納先ブロックの論理アドレス(格納先VOL内のブロックの論理アドレス)を表す。
図16は、ハッシュ管理テーブル429の構成を示す。
ハッシュ管理テーブル429は、データセットのハッシュ値に関する情報を保持する。ハッシュ管理テーブル429は、例えば、ハッシュ値毎にエントリを有する。各エントリは、ハッシュ値1601、登録フラグ1602、VOL#1603及びVOL内アドレス1604といった情報を格納する。以下、1つのハッシュ値(図16の説明において「対象ハッシュ値」)を例に取る。
ハッシュ値1601は、対象ハッシュ値を表す。登録フラグ1602は、対象ハッシュ値をハッシュ値とするデータセットがストレージシステム200に存在している(“済”)か否(“未”)を表す。
VOL#1603は、対象ハッシュ値をハッシュ値とするデータセットを格納する論理ボリューム501の番号を表す。VOL内アドレス1604は、対象ハッシュ値をハッシュ値とするデータセットを格納するブロック601の論理アドレスを表す。重複判断処理において、対象ハッシュ値についてハッシュ値ヒットが生じた場合、対象ハッシュ値に対応したVOL#1603及びVOL内アドレス1604が、図15に示した重複チェックテーブル489における比較先VOL#1505及び比較先VOL内アドレス1506とされる。
図17は、重複管理テーブル430の構成を示す。
重複管理テーブル430は、重複データセットの位置(論理アドレス)を表す。重複管理テーブル430は、例えば、共通ボリューム501Cを構成する複数のブロック601Cの各々について、VOL内アドレス(論理アドレス)を有する。参照元が存在するブロック601Cには、当該参照元のエントリが例えばキュー形式で関連付けられる。参照元のエントリは、VOL#(参照元のブロック601を含む論理ボリューム501の番号)、及び、VOL内アドレス(参照元のブロック601の論理アドレス)を格納する。
図18は、共通領域割当管理テーブル431の構成を示す。
共通領域割当管理テーブル431は、共通ボリューム501C毎に存在する。共通領域割当管理テーブル431は、共通ボリューム501Cの空き状況を表す。共通領域割当管理テーブル431は、例えば、共通ボリューム501Cを構成する複数のブロック601Cの各々について、エントリを有する。各エントリは、VOL内アドレス1801及び使用中フラグ1802といった情報を格納する。以下、1つのブロック601C(図18の説明において「対象ブロック601C」)を例に取る。
VOL内アドレス1801は、対象ブロック601Cの論理アドレスを表す。使用中フラグ1802は、対象ブロック601Cが使用中(“使用中”)か否(“未使用”)かを表す。使用中フラグ1802“使用中”は、対象ブロック601Cに直接的(追記ボリューム非経由)又は間接的(追記ボリューム経由)にページ51が割り当てられていることを意味する。使用中フラグ1802“未使用”は、対象ブロック601Cにページ51が割り当てられていないこと、つまり、空きであることを意味する。
図19は、共通領域チェックテーブル432の構成を示す。
共通領域チェックテーブル432は、共通ボリューム501C毎に存在する。共通領域チェックテーブル432は、共通ボリューム501Cに対する参照状況を表す。共通領域チェックテーブル432は、例えば、共通ボリューム501Cを構成する複数のブロック601Cの各々について、エントリを有する。各エントリは、VOL内アドレス1901及び参照フラグ1902といった情報を格納する。以下、1つのブロック601C(図19の説明において「対象ブロック601C」)を例に取る。
VOL内アドレス1901は、対象ブロック601Cの論理アドレスを表す。参照フラグ1902は、対象ブロック601Cについて1以上の参照元ブロック601が存在する(“有”)か否(“無”)かを表す。
以下、本実施形態で行われる幾つかの処理を説明する。なお、以下の説明において、データセットの圧縮及び伸張は、データ量削減プログラム414により(又は、データ量削減プログラム414が呼び出されることにより)、実行されてよい。
図20は、フロントエンドライト処理の流れを示す。フロントエンドライト処理は、論理ボリューム501に対するライト要求を受け付けた場合に行われる。
フロントエンドライトプログラム412は、キャッシュヒットしたか否かを判断する(S2001)。ライト要求について、「キャッシュヒット」とは、ライト要求に従うライト先に対応したキャッシュセグメント(キャッシュメモリ402における領域)が確保されていることを意味する。
S2001の判断結果が偽の場合(S2001:No)、フロントエンドライトプログラム412は、キャッシュメモリ402からキャッシュセグメントを確保する(S2002)。
S2001の判断結果が真の場合(S2001:Yes)、又は、S2002の後、フロントエンドライトプログラム412は、確保されているキャッシュセグメントに、ライト要求に従うライト対象データを書き込む(S2003)。
フロントエンドライトプログラム412は、ライト先の論理ボリューム501に対応した有効領域管理テーブル424を基に、ライト先が有効領域に属するか否かを判断する(S2004)。
S2004の判断結果が真の場合(S2004:Yes)、フロントエンドライトプログラム412は、ライト対象データを構成する1以上のデータセットの各々についてのライトコマンドを、データ量削減ダーティキューに蓄積する(S2005)。「データ量削減ダーティキュー」とは、ダーティのデータセット(ページ51に未格納のデータセット)であり圧縮が必要なデータセットのライトコマンドが蓄積されるキューである。
S2004の判断結果が偽の場合(S2004:No)、フロントエンドライトプログラム412は、ライト対象データを構成する1以上のデータセットの各々についてのライトコマンドを、デステージダーティキューに蓄積する(S2006)。「デステージダーティキュー」とは、ダーティのデータセット(ページ51に未格納のデータセット)であり圧縮が不要なデータセットのライトコマンドが蓄積されるキューである。
S2005又はS2006の後、フロントエンドライトプログラム412は、Good応答(ライト完了報告)を、ライト要求の送信元に返す(S2007)。
なお、ライト要求に対するGood応答は、バックエンドライト処理が完結した場合に返されてもよい。すなわち、バックエンドライト処理は、フロントエンド処理と同期又は非同期で行われてよい。バックエンドライト処理がバックエンドライトプログラム413により行われる。具体的には、例えば、バックエンドライトプログラム413は、デステージダーティキューにあるライトコマンドについて、非圧縮又圧縮後のデータセットを、ライト先に関し割り当てられたページ51に書き込む。
図21は、データ量削減処理の流れを示す。データ量削減処理は、例えば定期的に行われる。
データ量削減プログラム414は、データ量削減ダーティキューを参照する(S2101)。当該キューにコマンドが無ければ(S2102:No)、データ量削減処理が終了する。
当該キューにコマンドが有れば(S2102:Yes)、データ量削減プログラム414は、データ量削減ダーティキューからライトコマンドを取得する、すなわち、ダーティのデータセットを選択する(S2103)。
データ量削減プログラム414は、S2103で選択されたデータセットについて重複排除処理を行う(S2104)。当該選択されたデータセットが単独データセットであるが故に重複排除がされなかった場合には(S2105:No)、データ量削減プログラム414は、当該単独データセットについて追記処理を行う(S2106)。
S2103で選択されたデータセットが重複データセットであるが故に重複排除がされた場合(S2105:Yes)、又は、S2106の後、データ量削減プログラム414は、当該選択されたデータセットを破棄(例えばキャッシュメモリ402から削除)する(S2107)。
図22は、重複排除処理の流れを示す。重複排除処理は、図21のS2103で選択されたデータセットについて行われる。以下、図22及び図23の説明において、当該選択されたデータセットを「ライトデータセット」と言い、対象データセットのライト先ブロックを「ライト先ブロック」と言い、ライト先ブロックを含んだ論理ボリュームを「ライト先ボリューム」と言う。
データ量削減プログラム414は、ライトデータセットについて重複判断処理を行う(S2201)。S2201の結果、ライトデータセットが単独データセットであれば(S2202:No)、重複排除処理が終了する。
S2201の結果、ライトデータセットが重複データセットであれば(S2202:Yes)、データ量削減プログラム414は、ライトデータセットと重複する別の重複データセットが単独領域70に存在するか否かを判断する(S2203)。
なお、ライトデータセットと、当該ライトデータセットと重複する別の重複データセットを、図22の以下の説明において「重複データセット」と総称する。つまり、図22の以下の説明において、「重複データセット」は、ライトデータセットを含む2以上のデータセットのうちのいずれでもよい。重複データセットが単独領域70に既に存在するデータセットの場合、後述のS2204及びS2205のいずれかにおいて、当該データセットの圧縮後データセットがデータ量削減プログラム414により一旦伸張され、当該伸張後データセットが、重複データセットであってよい。
また、S2203の判断は、例えば、ライト先ブロックに対応した比較先VOL#1505が、VOL属性802“提供”のVOL#801と一致するか、VOL属性802“共通”のVOL#801と一致するかに基づく。ライト先ブロックに対応した比較先VOL#1505が、VOL属性802“提供”のVOL#801と一致すれば、別の重複データセットが単独領域70に存在することになるため、S2203の判断結果が真である。ライト先ブロックに対応した比較先VOL#1505が、VOL属性802“共通”のVOL#801と一致すれば、別の重複データセットが共通領域80に存在することになるため、S2203の判断結果が偽である。
さて、S2203の判断結果が真の場合(S2203:Yes)、次の処理が行われる。すなわち、データ量削減プログラム414は、使用中フラグ1802が“未使用”の共通ブロック601Cを選択する(S2204)。以下、この段落において、当該選択された共通ブロック601Cを、「対象共通ブロック601C」と言い、対象共通ブロック601Cを含む共通ボリューム501Cを、「対象共通ボリューム501C」と言う。データ量削減プログラム414は、重複データセットを圧縮し、その圧縮後データセットを、追記共通ページ51C(対象共通ボリューム501Cに対応した追記ボリューム502に割り当てられたページ51C)に追記する(S2205)。データ量削減プログラム414は、重複管理テーブル430を更新、具体的には、対象共通ブロック601Cに、全ての重複データセットにそれぞれ対応した全てのブロック601Pを参照元として関連付ける(S2206)。データ量削減プログラム414は、重複チェックテーブル489を更新、具体的には、ライト先ブロックに対応した格納先VOL#1508及び格納先VOL内アドレス1509として、対象共通ボリューム501Cの番号、及び、対象共通ブロック601Cの論理アドレスを登録する(S2207)。データ量削減プログラム414は、ハッシュ管理テーブル429を更新、例えば、ハッシュ値1601(重複データセットのハッシュ値)、登録フラグ1602(“済”)、VOL#1603(対象共通ボリューム501Cの番号)、及び、VOL内アドレス1604(対象共通ブロック601Cの論理アドレス)を登録する(S2208)。データ量削減プログラム414は、ライトデータセット以外の重複データセットを格納する提供ボリューム501Pに対応したアドレス変換テーブル422を更新、具体的には、重複データセットに対応した参照先VOL#902及び参照先VOL内アドレス903を、対象共通ボリューム501Cの番号、及び、対象共通ブロック601Cの論理アドレスに変更し、且つ、重複データセットに対応した参照先VOL種別905を“共通”に変更する(S2209)。データ量削減プログラム414は、ライトデータセット以外の重複データセットを格納する提供ボリューム501Pに対応した追記ボリューム502に関するサブブロック管理テーブル427を更新、具体的には、ライトデータセット以外の重複データセットの圧縮後データセットを格納するサブブロックに対応した割当フラグ1303を“未割当”に変更する(S2210)。
S2203の判断結果が偽の場合(S2203:No)、次の処理が行われる。すなわち、データ量削減プログラム414は、重複管理テーブル430を更新、具体的には、重複データセットを格納した共通ブロック601Cに、ライト先ブロック601Pを新たに参照元として関連付ける(S2211)。データ量削減プログラム414は、重複チェックテーブル489を更新、具体的には、ライト先ブロックに対応した格納先VOL内アドレス1509及び格納先VOL#1508として、重複データセットを格納した共通ブロック601Cの論理アドレスと、当該共通ブロック601Cを含んだ共通ボリューム501Cの番号を登録する(S2212)。
S2210又はS2212の後、データ量削減プログラム414は、ライト先ボリューム501Pに対応したアドレス変換テーブル422を更新、具体的には、ライト先ブロック(ライトデータセット)に対応した参照先VOL#902及び参照先VOL内アドレス903を、共通ボリューム501Cの番号、及び、共通ブロック601Cの論理アドレスに変更し、且つ、ライト先ブロックに対応した参照先VOL種別905を“共通”に変更する(S2213)。データ量削減プログラム414は、ライトデータセットの圧縮後データセットが追記単独ページ51Pにあれば、ライト先ボリューム501Pに対応した追記ボリューム502に関するサブブロック管理テーブル427を更新、具体的には、ライトデータセットの圧縮後データセットを格納するサブブロックに対応した割当フラグ1303を“未割当”に変更する(S2214)。
本実施形態において、重複排除処理は、上述したポストプロセスとしての処理であるが、インプロセスとしての処理の場合、例えば図22のS2214は行われないでよい。ライトデータセットの圧縮後データセットを追記すること無しに(又はライトデータセットの圧縮をすること無しに)重複排除がされるためである。
図23は、重複判断処理の流れを示す。
データ量削減プログラム414は、ライトデータセットに関し重複チェックテーブル489を作成する(S2301)。重複排除処理が、例えば、I/O単位のような所定の処理対象のデータの単位で行われ、結果として、データが複数のデータセットを含む場合、重複チェックテーブル489は、それら複数のデータセットにそれぞれ対応した複数のエントリを有する。
データ量削減プログラム414は、ライト先ブロックに対応したハッシュ値1503として、ライトデータセットのハッシュ値を登録する(S2302)。
データ量削減プログラム414は、S2302で登録したハッシュ値と一致するハッシュ値がハッシュ管理テーブル429に登録されているか否か、すなわち、ハッシュ値ヒットが生じるか否かを判断する(S2303)。
S2303の判断結果が真の場合(S2303:Yes)、データ量削減プログラム414は、重複チェックテーブル489を更新、具体的には、ライト先ブロック601Pに対応した比較先VOL#1505及び比較先VOL内アドレス1506として、S2302で登録したハッシュ値と一致するハッシュ値に対応したVOL#1603及びVOL内アドレス1604を登録する(S2304)。データ量削減プログラム414は、ライトデータセットと、比較先VOL#1505及び比較先VOL内アドレス1506を基に取得したデータセット(例えば伸張後データセット)とを比較する(S2305)。S2305の比較は、圧縮後データセット同士の比較でもよい。
S2303の判断結果が偽の場合(S2303:No)、データ量削減プログラム414は、ハッシュ管理テーブル429を更新、具体的には、新たなエントリに、ハッシュ値1601(ライトデータのハッシュ値)、登録1602“済”、VOL#1603(ライト先ボリューム501Pの番号)、及び、VOL内アドレス1604(ライト先ブロック601Pの論理アドレス)を登録する(S2306)。
S2305又はS2306の後、データ量削減プログラム414は、重複チェックテーブル489を更新、具体的には、ライト先ブロック601Pに対応した比較成功フラグ1507を登録する(S2307)。具体的には、S2305で一致が得られた場合、比較成功フラグ1507は“成功”である。S2305で一致が得られなかった場合、又は、S2306が行われた場合、比較成功フラグ1507は“失敗”である。
図24は、追記処理の流れを示す。追記処理は、図21のS2103で選択されたデータセットについて行われる。以下、図24の説明において、当該選択されたデータセットを「ライトデータセット」と言い、対象データセットのライト先ブロックを「ライト先ブロック」と言い、ライト先ブロックを含んだ論理ボリュームを「ライト先ボリューム」と言う。
データ量削減プログラム414は、ライトデータセットを圧縮し、圧縮後データセットを例えばキャッシュメモリ402に格納する(S2401)。データ量削減プログラム414は、圧縮後データセットのサイズ以上の空きが、ライト先ボリューム501Pに対応した追記ボリューム502に割当済のページ51Pにあるか否かを判断する(S2402)。このような判断は、例えば、当該追記ボリューム502に対応した追記先アドレス1402が属する領域に割り当てられているページ51Pの番号をキーに、当該追記ボリューム502に対応したサブブロック管理テーブル427を参照することで、可能である。
S2402の判断結果が偽の場合(S2402:No)、データ量削減プログラム414は、ライト先ボリューム501Pに対応した追記ボリューム502に、未割当のページ51を割り当てる(S2403)。
S2402の判断結果が真の場合(S2402:Yes)、又は、S2403の後、データ量削減プログラム414は、追記先とするサブブロックを割り当てる(S2404)。データ量削減プログラム414は、ライトデータセットの圧縮後データセットを追記ボリューム502にコピーする、例えば、当該圧縮後データセットを、追記ボリューム502用の領域(キャッシュメモリ402における領域)にコピーする(S2405)。データ量削減プログラム414は、圧縮後データセットのライトコマンドをデステージダーティキューに登録する(S2406)。データ量削減プログラム414は、ライト先ボリューム501Pに対応したアドレス変換テーブル422を更新、具体的には、ライト先ブロックに対応した参照先VOL#902及び参照先VOL内アドレス903を、追記ボリューム502の番号、及び、S2404で割り当てたサブブロックの論理アドレスに変更し、且つ、ライト先ブロックに対応した参照先VOL種別905を“単独”に変更する(S2407)。
データ量削減プログラム414は、旧サブブロックの参照元(旧参照元)が、ライト先ブロック601Pの論理アドレスであるか否か(つまり単独領域70であるか否か)を判断する(S2408)。「旧サブブロック」とは、ライトデータセットの圧縮後データセットの更新前の圧縮後データセットを格納したサブブロックである。つまり、S2408の判断は、ライトデータセットが、単独領域70内のデータセットの更新後のデータセットであるか、共通領域80内のデータセットの更新後のデータセットであるかの判断である。
S2408の判断結果が真の場合(S2408:Yes)、データ量削減プログラム414は、旧サブブロックに対応した割当フラグ1303を“未割当”に更新する(S2409)。
図25は、リード処理の流れを示す。リード処理は、論理ボリューム501に対するリード要求を受け付けた場合に行われる。
リードプログラム411は、有効領域テーブル424を基に、リード要求に従うリード元が有効領域に属するか否かを判断する(S2501)。
S2501の判断結果が真の場合(S2501:Yes)、リードプログラム411は、リード元の提供ボリューム501Pに対応したアドレス変換テーブル422を参照する(S2502)。リードプログラム411は、リード元の領域を構成する各ブロックについて、下記を行う。
・リードプログラム411は、当該ブロックに対応した参照先VOL種別905が“単独”か否かを判断する(S2503)。
・S2503の判断結果が偽の場合(S2503:No)、当該ブロックに対応した参照先VOL#902及び参照先VOL内アドレス903を基に、共通ボリューム501Cに対応したアドレス変換テーブル422を参照する(S2504)。
・S2503の判断結果が真の場合(S2503:Yes)、又は、S2504の後、リードプログラム411は、当該ブロックに対応したページ51を、ページ変換テーブル425を基に特定する(S2505)。リードプログラム411は、特定したページ51から、当該ブロックに対応する圧縮後データセットを読み出し、圧縮後データセットを伸張し、伸張後データセットをキャッシュメモリ402に格納する(S2506)。
S2501の判断結果が真の場合(S2501:Yes)において、リード元の領域を構成する各ブロックについてS2503〜S2506が終了すると、リード要求に従うデータがキャッシュメモリ402にあるため、リードプログラム411は、当該データをリード要求に送信元に転送する(S2507)。
S2501の判断結果が偽の場合(S2501:No)、リードプログラム411は、リード元の領域に割り当てられているページ51を、ページ変換テーブル425を基に特定する(S2505)。リードプログラム411は、特定したページ51から、リード対象のデータを読み出し(S2506)、読み出したデータを、リード要求に送信元に転送する(S2507)。
図26は、提供ボリューム削除処理の流れを示す。提供ボリューム削除処理は、例えば、いずれかの提供ボリューム501Pを指定したボリューム削除要求を受け付けた場合に行われる。
VOL管理プログラム415は、削除対象の提供ボリューム501Pが有効領域に属するか否かを、有効領域管理テーブル424を基に判断する(S2601)。
S2601の判断結果が真の領域について(S2601:Yes)、VOL管理プログラム415は、削除対象の提供ボリューム501Pに対応した各種テーブル(具体的には、テーブル422、424及び425)を削除する(S2602)。また、VOL管理プログラム415は、削除対象の提供ボリューム501Pに対応したサブブロック管理テーブル427も削除する(S2603)。
S2601の判断結果が偽の領域について(S2601:No)、及び、S2603の後、VOL管理プログラム415は、削除対象の提供ボリューム501Pに割り当てられている全ページ51を未割当へと解放する(S2604)。この段落で言う「全ページ51」とは、削除対象の提供ボリューム501Pに直接的に割り当てられている全てのページ51と、削除対象の提供ボリューム501Pに間接的に割り当てられている全てのページ51(削除対象の提供ボリューム501Pに対応した追記ボリューム502に割り当てられている全てのページ51)である。
以上のように、提供ボリュームが削除対象とされた場合、提供ボリュームに直接的又は間接的に割り当てられている全ページを、当該全ページの各々について当該ページがいずれか他の領域から参照されているか否かをチェックすること無しに、且つ、提供ボリュームにおけるいずれかの領域が共通領域80を参照しているか否かをチェックすること無しに、解放することができる。
図27は、ガベージコレクション処理の流れを示す。図示のガベージコレクション処理は、追記ページを回収する処理である。当該処理は、例えば、定期的に開始されてもよいし、プール503の容量に対して未割当のページ51の総容量の比率が所定値未満になったことがプール容量管理プログラム416により検出された等の場合に開始されてよい。
プール容量管理プログラム416は、ガベージコレクション処理においてコピー元とするページを選択する(S2701)。
プール容量管理プログラム416は、コピー元ページが割り当てられている追記ボリューム502に対応したサブブロック管理テーブル427を参照し、S2701で選択したコピー元ページに関して、当該ガベージコレクション処理において未チェックのサブブロックがあるか否かを判断する(S2702)。
S2702の判断結果が真の場合(S2702:Yes)、次の処理が行われる。すなわち、プール容量管理プログラム416は、未チェックのサブブロックのうちの一のサブブロックを選択する(S2703)。プール容量管理プログラム416は、当該選択したサブブロックの割当フラグ1303が“割当済”であれば(S2704:Yes)、コピー先のページにおけるサブブロックを割り当て(S2705)、S2703で選択したサブブロックからS2705で割り当てたサブブロックに圧縮後データセットをコピーする(S2706)。S2706では、コピー元のサブブロックの参照元は、コピー元のサブブロックに代えてコピー先のサブブロックを参照先とすることになる。S2706の後、S2702に処理が戻る。
S2702の判断結果が偽の場合(S2702:No)、言い換えれば、コピー元ページ内の有効な圧縮後データセットが全てコピー先ページにコピーされた場合、プール容量管理プログラム416は、コピー元ページを回収する、すなわち、コピー元ページの割当フラグ1202を“未割当”に変更する(S2707)。
以上のように、追記ページのガベージコレクション処理では、S2706において参照先が更新されることになるが、当該追記ページが単独ページであれば、コピーされるデータセットは、常に、単独データセットの圧縮後データセットである。故に、コピー元サブブロックの参照元は常に1つである。このため、各コピー元サブブロックについて、参照先の更新は、1つの参照元についてのみ行えばよい。従って、追記単独ページのガベージコレクション処理が効率化されている。
図28は、共通領域解放処理の流れを示す。共通領域解放処理は、例えば定期的に行われる。共通領域解放処理において、処理対象の共通ボリューム501Cに対応した共通領域チェックテーブル432が、共通領域解放プログラム417により作成されてもよいし、予め共有メモリ404に用意されていてもよい。
共通領域解放プログラム417は、いずれかの共通ブロック601Cを選択する(S2801)。S2801で選択した共通ブロック601Cを、図28の説明において「対象共通ブロック601C」と言う。
共通領域解放プログラム417は、重複管理テーブル430を参照し、対象共通ブロック601Cを参照する参照元が1つでも存在するか否かを判断する(S2802)。
S2802の判断結果が真の場合(S2802:Yes)、次の処理が行われる。すなわち、共通領域解放プログラム417は、重複管理テーブル430から、対象共通ブロック601Cに対応したいずれかの参照元エントリを選択し、当該参照元エントリから参照元のVOL#及び論理アドレスを特定する(S2803)。共通領域解放プログラム417は、S2803で特定したVOL#に対応したアドレス変換テーブル422から、S2803で特定した論理アドレスに対応した参照先VOL#902及び参照先VOL内アドレス903を特定する(S2804)。S2804で特定した参照先(参照先VOL#902及び参照先VOL内アドレス903)が、対象共通ブロック601Cに一致していれば(S2805:Yes)、共通領域解放プログラム417は、対象共通ブロック601Cに対応した参照フラグ1902を“有”とする(S2806)。一方、S2804で特定した参照先が、対象共通ブロック601Cに一致していなければ(S2805:No)、共通領域解放プログラム417は、S2803で選択した参照元エントリを、対象共通ブロック601Cに対応した参照元エントリから削除する(S2807)。なお、対象共通ブロック601Cに、同一の提供ボリューム501Pを参照元とする複数の参照元エントリがある場合には、当該同一提供ボリューム501Pに対応した複数の参照元エントリがそれぞれ表す複数の論理アドレスについて、まとめて、S2803〜S2807が行われてよい。
S2802の判断結果が偽の場合(S2802:No)、対象共通ブロック601Cに対応した全ての参照元エントリについてS2803〜S2807が行われたか、或いは、対象共通ブロック601Cに1つの参照元エントリが無い。この場合、共通領域解放プログラム417は、対象共通ブロック601Cに対応した参照フラグ1902が“有”か否かを判断する(S2808)。
S2808の判断結果が偽の場合(S2808:No)、言い換えれば、対象共通ブロック601Cに対応した参照フラグ1902が“無”の場合、対象共通ブロック601Cを参照先とする参照元が1つも存在しないので、次の処理が行われる。すなわち、共通領域解放プログラム417は、ハッシュ管理テーブル429を更新、具体的には、対象共通ブロック601Cに対応したVOL#1603及びVOL内アドレス1604を格納したエントリについて、登録フラグ1602を“無”に更新し、VOL#1603及びVOL内アドレス1604を削除する(S2809)。また、共通領域解放プログラム417は、対象共通ブロック601Cを未使用へと解放、具体的には、対象共通ブロック601Cに対応した使用中フラグ1802を“未使用”に更新する(S2810)。
S2808の判断結果が真の場合(S2808:Yes)、S2809及びS2810は行われない。対象共通ブロック601Cを参照先とする少なくとも1つの参照元が存在するためである。
以上の共通領域解放処理によれば、参照元が存在しなくなった共通ブロック601Cを検出することができ、検出された共通ブロック601Cを未使用へと解放することができる。以って、共通ボリューム501Cの空き容量(空きブロック)を増やすことができる。
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、ライト要求のようなI/O要求の送信元(I/O元)は、上述の実施形態では、サーバシステム201であるが、ストレージシステム200における図示しないプログラム(例えば、VM上で実行されるアプリケーションプログラム)であってもよい。
200…ストレージシステム

Claims (9)

  1. プロセッサ部と、メモリとを有し、データ入出力要求を発行する外部計算機と、データを格納する記憶デバイスと、に接続された計算機システムにおいて、
    前記プロセッサ部は、互いのレイヤの記憶領域が関係付けられた複数のレイヤの論理記憶領域を生成し、
    前記複数のレイヤの論理記憶領域は、前記記憶デバイス側の第1のレイヤの論理記憶領域と、前記外部計算機側の第2のレイヤの論理記憶領域と、を有し、
    前記第1のレイヤの論理記憶領域は、共通領域と単独領域とを有し、前記共通領域の記憶領域は前記第2のレイヤの論理記憶領域の一つ又は複数の記憶領域に関係付けられるようになっており、前記単独領域の記憶領域は前記第2の論理記憶領域の一つの記憶領域に関係付けられるようになっており、
    前記プロセッサ部は、複数のデータセットの重複判断を行い、重複していると判断した複数のデータセットを前記共通領域に対応付けることで、前記共通領域の記憶領域を前記第2の論理記憶領域の複数の記憶領域に関係付ける
    計算機システム。
  2. 前記プロセッサ部は、
    前記単独領域の記憶領域に対応付けられたデータセットの削除要求を受けた場合に、前記単独領域の記憶領域を解放する第1の削除処理と、
    前記共通領域の記憶領域に対応付けられたデータの削除要求を受けた場合に、前記当該データにかかる第1のレイヤの論理記憶領域の記憶領域と、前記第2のレイヤの論理記憶領域の記憶領域との関係付けを解消する第2の削除処理と、
    前記共通領域の記憶領域であり、前記第2のレイヤの論理記憶領域と関係付けられていない記憶領域を解放する共通領域解放処理と、
    を行う、請求項1に記載の計算機システム。
  3. 前記共通領域に対応付けて格納したデータセットにかかる第1のレイヤの論理記憶領域の記憶領域と、前記第2のレイヤの論理記憶領域の記憶領域との関係情報を記録する重複排除情報を有し、
    前記プロセッサ部は、前記共通領域の記憶領域への対応付けを行った場合、及び前記第2の削除処理を行った場合に、前記重複排除情報を更新し、
    前記プロセッサ部は、前記共通領域解放処理を、前記重複排除情報を参照して行う
    請求項2に記載の計算機システム。
  4. 前記重複判断の対象となる複数のデータセットは、ライト要求にかかるデータセットと、前記単独領域に対応付けられているデータセットと、前記共通領域に対応付けられているデータセットとのうちの少なくとも二つのデータセットを含む
    請求項1に記載の計算機システム。
  5. 前記重複判断の対象となる複数のデータセットには、ライト要求にかかるデータセット、前記単独領域に対応付けられているデータセット、及び、前記共通領域に対応付けられているデータセットが該当し、
    前記単独領域に対応付けられている複数のデータセットが重複すると判断された場合、前記プロセッサ部は、当該複数のデータセットにかかる第2のレイヤの論理記憶領域を、前記共通領域の記憶領域に関係付けるとともに、当該複数のデータセットにかかる前記単独領域の記憶領域との関係付けを解消する
    請求項1に記載の計算機システム。
  6. 前記共通領域の記憶領域は、前記第2のレイヤの論理記憶領域の1または複数の前記記憶領域に関係づけられ、
    前記第2の削除処理により、関係付けられた前記第2のレイヤの論理記憶領域の記憶領域が減少し、前記共通領域解放処理により、解放される
    請求項2に記載の計算機システム。
  7. 前記第1のレイヤの論理記憶領域及び前記第2のレイヤの論理記憶領域の記憶領域が関係付けられる第3のレイヤの論理記憶領域を有し、
    前記第3のレイヤの論理記憶領域は、データの上書きができない追記空間で構成され、それぞれ前記単独領域と前記共通領域に関係付けられる追記単独領域と追記共通領域とを有する
    請求項1に記載の計算機システム。
  8. データ入出力要求を発行する外部計算機と、データを格納する記憶デバイスと、に接続された計算機システムの記憶制御方法であって、
    互いのレイヤの記憶領域が関係付けられた複数のレイヤの論理記憶領域を生成し、
    前記複数のレイヤの論理記憶領域は、前記記憶デバイス側の第1のレイヤの論理記憶領域と、前記外部計算機側の第2のレイヤの論理記憶領域と、を有し、
    前記第1のレイヤの論理記憶領域は、共通領域と単独領域とを有し、前記共通領域の記憶領域は前記第2のレイヤの論理記憶領域の一つ又は複数の記憶領域に関係付けられるようになっており、前記単独領域の記憶領域は前記第2の論理記憶領域の一つの記憶領域に関係付けられるようになっており、
    複数のデータセットの重複判断を行い、
    重複していると判断した複数のデータセットを前記共通領域に対応付けることで、前記共通領域の記憶領域を前記第2の論理記憶領域の複数の記憶領域に関係付ける
    記憶制御方法。
  9. データ入出力要求を発行する外部計算機と、データを格納する記憶デバイスと、に接続された計算機に、
    互いのレイヤの記憶領域が関係付けられた複数のレイヤの論理記憶領域を生成し、
    前記複数のレイヤの論理記憶領域は、前記記憶デバイス側の第1のレイヤの論理記憶領域と、前記外部計算機側の第2のレイヤの論理記憶領域と、を有し、
    前記第1のレイヤの論理記憶領域は、共通領域と単独領域とを有し、前記共通領域の記憶領域は前記第2のレイヤの論理記憶領域の一つ又は複数の記憶領域に関係付けられるようになっており、前記単独領域の記憶領域は前記第2の論理記憶領域の一つの記憶領域に関係付けられるようになっており、
    複数のデータセットの重複判断を行い、
    重複していると判断した複数のデータセットを前記共通領域に対応付けることで、前記共通領域の記憶領域を前記第2の論理記憶領域の複数の記憶領域に関係付ける
    ことを実行させるコンピュータプログラム。
JP2018043550A 2018-03-09 2018-03-09 データ量削減機能を有する計算機システム、及び、記憶制御方法 Active JP6722216B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018043550A JP6722216B2 (ja) 2018-03-09 2018-03-09 データ量削減機能を有する計算機システム、及び、記憶制御方法
CN201810964800.3A CN110244905B (zh) 2018-03-09 2018-08-23 具有数据量削减功能的计算机系统,和存储控制方法
US16/119,589 US10739999B2 (en) 2018-03-09 2018-08-31 Computer system having data amount reduction function and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018043550A JP6722216B2 (ja) 2018-03-09 2018-03-09 データ量削減機能を有する計算機システム、及び、記憶制御方法

Publications (2)

Publication Number Publication Date
JP2019159605A true JP2019159605A (ja) 2019-09-19
JP6722216B2 JP6722216B2 (ja) 2020-07-15

Family

ID=67843965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018043550A Active JP6722216B2 (ja) 2018-03-09 2018-03-09 データ量削減機能を有する計算機システム、及び、記憶制御方法

Country Status (3)

Country Link
US (1) US10739999B2 (ja)
JP (1) JP6722216B2 (ja)
CN (1) CN110244905B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220014780A (ko) * 2020-07-29 2022-02-07 주식회사 지에프씨코리아 위성 통신을 이용하여 금융 거래 메시지를 송수신하기 위한 송신 장치, 수신 장치 및 데이터 처리 방법
US11803443B2 (en) 2021-10-19 2023-10-31 Hitachi, Ltd. Storage system, data copy control method, and recording medium

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11567683B2 (en) * 2019-03-28 2023-01-31 Intel Corporation Technologies for providing edge deduplication
US11063811B2 (en) 2019-04-24 2021-07-13 Vmware, Inc. Multi-tenant event sourcing and audit logging in a cloud-based computing infrastructure
KR20210017401A (ko) * 2019-08-08 2021-02-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법과, 이를 위한 컨트롤러
US11269776B2 (en) * 2019-10-17 2022-03-08 EMC IP Holding Company LLC Direct input/output path to compressed data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230661A (ja) * 2008-03-25 2009-10-08 Hitachi Ltd ストレージ装置及びこれの制御方法
WO2011018852A1 (ja) * 2009-08-13 2011-02-17 株式会社日立ソリューションズ 重複排除機能付きデータ格納装置及び当該データ格納装置の検索インデックスを作成する制御装置
WO2016046911A1 (ja) * 2014-09-24 2016-03-31 株式会社日立製作所 ストレージシステム及びストレージシステムの管理方法
WO2016203612A1 (ja) * 2015-06-18 2016-12-22 株式会社日立製作所 ストレージ装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4814617B2 (ja) * 2005-11-01 2011-11-16 株式会社日立製作所 ストレージシステム
JP5092374B2 (ja) * 2006-12-01 2012-12-05 富士通株式会社 データセンタ及びデータ転送方法
JP5543026B2 (ja) * 2011-02-02 2014-07-09 株式会社日立製作所 ストレージシステムおよびそのデータ制御方法
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230661A (ja) * 2008-03-25 2009-10-08 Hitachi Ltd ストレージ装置及びこれの制御方法
WO2011018852A1 (ja) * 2009-08-13 2011-02-17 株式会社日立ソリューションズ 重複排除機能付きデータ格納装置及び当該データ格納装置の検索インデックスを作成する制御装置
WO2016046911A1 (ja) * 2014-09-24 2016-03-31 株式会社日立製作所 ストレージシステム及びストレージシステムの管理方法
WO2016203612A1 (ja) * 2015-06-18 2016-12-22 株式会社日立製作所 ストレージ装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220014780A (ko) * 2020-07-29 2022-02-07 주식회사 지에프씨코리아 위성 통신을 이용하여 금융 거래 메시지를 송수신하기 위한 송신 장치, 수신 장치 및 데이터 처리 방법
KR102426611B1 (ko) * 2020-07-29 2022-07-29 주식회사 지에프씨코리아 위성 통신을 이용하여 금융 거래 메시지를 송수신하기 위한 송신 장치, 수신 장치 및 데이터 처리 방법
US11803443B2 (en) 2021-10-19 2023-10-31 Hitachi, Ltd. Storage system, data copy control method, and recording medium

Also Published As

Publication number Publication date
CN110244905A (zh) 2019-09-17
US10739999B2 (en) 2020-08-11
US20190278484A1 (en) 2019-09-12
CN110244905B (zh) 2022-07-22
JP6722216B2 (ja) 2020-07-15

Similar Documents

Publication Publication Date Title
JP6722216B2 (ja) データ量削減機能を有する計算機システム、及び、記憶制御方法
US20210157523A1 (en) Storage system
US10133511B2 (en) Optimized segment cleaning technique
US10635359B2 (en) Managing cache compression in data storage systems
JP5302886B2 (ja) ブロック指紋を読み出し、ブロック指紋を使用してデータ重複を解消するシステム、及び方法
CN111190534B (zh) 卷管理装置、卷管理方法和存储介质
CN107209714B (zh) 分布式存储系统及分布式存储系统的控制方法
JP6840113B2 (ja) ストレージコントローラ及びストレージ制御方法
JP6513888B2 (ja) データ量削減機能を有する計算機システム、及び、記憶制御方法
JP6826021B2 (ja) ストレージシステム
US20170153829A1 (en) Technique for maintaining consistent i/o processing throughput in a storage system
JP2018181202A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
US11288006B2 (en) Storage system and volume copying method where changes to address conversion table is rolled back
US11416157B2 (en) Storage device and data migration method
JP7093799B2 (ja) ストレージシステムおよびリストア制御方法
JP5275691B2 (ja) ストレージシステム
JP7387679B2 (ja) バックアップシステム及び方法
WO2019038897A1 (ja) ストレージシステム及び記憶制御方法
US20200387477A1 (en) Storage system and snapshot management method
WO2018051446A1 (ja) オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法
CN115951819A (zh) 存储系统以及存储系统中的数据复制方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200406

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: 20200602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200619

R150 Certificate of patent or registration of utility model

Ref document number: 6722216

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150