(57)【要約】  プロセッサは、第１ライト要求の後、データ記憶領域に格納されていない第２データを第１論理領域へ書き込むことを要求する第３ライト要求を受信した場合、第２データに基づく第２識別情報を算出し、データ記憶領域内の第２物理領域へ第２データを書き込み、第１論理領域のアドレスと第２物理領域のアドレスと第２識別情報を示す第１現識別情報と第１識別情報を示す第１旧識別情報との関連付けを変換情報へ登録し、第２識別情報と第１論理領域のアドレスとの関連付けを重複情報へ登録し、プロセッサは、第１論理領域が、予め設定された離脱条件を満たす場合、重複情報から第１論理領域のアドレスを削除し、変換情報のうち第１論理領域のアドレスに関連付けられた情報から第１旧識別情報を削除する。
2018020593.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリに接続されるプロセッサと、
を備え、
前記プロセッサは、第１論理領域がデータ記憶領域内の物理領域に関連付けられておらず、且つ前記データ記憶領域に格納されていない第１データを前記第１論理領域へ書き込むことを要求する第１ライト要求を受信した場合、前記第１データに基づく第１識別情報を算出し、前記データ記憶領域内の第１物理領域へ前記第１データを書き込み、前記第１論理領域のアドレスと前記第１物理領域のアドレスと前記第１識別情報を示す第１現識別情報との関連付けを変換情報へ登録し、前記第１識別情報と前記第１論理領域のアドレスとの関連付けを重複情報へ登録し、
前記プロセッサは、前記第１ライト要求の後、第２論理領域が前記データ記憶領域内の物理領域に関連付けられておらず、且つ前記第１データを前記第２論理領域へ書き込むことを要求する第２ライト要求を受信した場合、前記第１データに基づく第１識別情報を算出し、前記第２論理領域のアドレスと前記第１物理領域のアドレスと前記第１識別情報を示す第２現識別情報との関連付けを前記変換情報へ登録し、前記第１識別情報と前記第２論理領域のアドレスとの関連付けを前記重複情報へ登録し、
前記プロセッサは、前記第１ライト要求の後、前記データ記憶領域に格納されていない第２データを前記第１論理領域へ書き込むことを要求する第３ライト要求を受信した場合、前記第２データに基づく第２識別情報を算出し、前記データ記憶領域内の第２物理領域へ前記第２データを書き込み、前記第１論理領域のアドレスと前記第２物理領域のアドレスと前記第２識別情報を示す第１現識別情報と前記第１識別情報を示す第１旧識別情報との関連付けを前記変換情報へ登録し、前記第２識別情報と前記第１論理領域のアドレスとの関連付けを前記重複情報へ登録し、
前記プロセッサは、前記第１論理領域が、予め設定された離脱条件を満たす場合、前記重複情報から前記第１論理領域のアドレスを削除し、前記変換情報のうち前記第１論理領域のアドレスに関連付けられた情報から前記第１旧識別情報を削除する、
計算機システム。
【請求項２】
前記プロセッサは、前記第３ライト要求の後、前記第２物理領域が、予め設定された移動条件を満たし、且つ前記変換情報が前記第１論理領域のアドレスと前記第２物理領域のアドレスと前記第１旧識別情報との関連付けを含む場合、前記第１論理領域が前記離脱条件を満たすと判定し、前記重複情報が前記第１識別情報と他の論理領域との関連付けを含まない場合、前記データ記憶領域から移動先物理領域を選択し、前記第２物理領域に格納されているデータを前記移動先物理領域へ移動させ、前記第２物理領域の代わりに前記移動先物理領域を前記第１論理領域に関連付けることを前記変換情報へ登録する、
請求項１に記載の計算機システム。
【請求項３】
前記プロセッサは、前記変換情報が前記第１論理領域のアドレスと前記第１旧識別情報との関連付けを含み、且つ前記データ記憶領域に格納されていないデータを前記第１論理領域へ書き込むことを要求するライト要求を受信した場合、前記第１論理領域が前記離脱条件を満たすと判定する、
請求項２に記載の計算機システム。
【請求項４】
前記プロセッサは、特定データを特定論理領域へ書き込むことを要求する特定ライト要求を受信した場合、前記特定データのハッシュ値である特定フィンガープリントを算出し、前記特定フィンガープリントのビット列の中の所定位置の部分を前記特定データの識別情報として算出し、前記特定フィンガープリントと前記特定論理領域との関連付けを前記重複情報へ登録する、
請求項３に記載の計算機システム。
【請求項５】
前記プロセッサは、前記特定ライト要求を受信した場合、前記重複情報が前記特定フィンガープリントと論理領域の関連付けを含むか否かを判定し、前記重複情報が前記特定フィンガープリントと論理領域の関連付けを含むと判定された場合、前記重複情報に基づいて前記特定フィンガープリントに関連付けられた論理領域を特定し、前記変換情報に基づいて前記特定された論理領域に関連付けられた物理領域を特定し、前記特定データが前記特定された物理領域に格納されたデータと一致するか否かを判定する、
請求項４に記載の計算機システム。
【請求項６】
前記重複情報を格納する記憶デバイスを更に備える、
請求項５に記載の計算機システム。
【請求項７】
前記記憶デバイスは、前記データ記憶領域を含む、
請求項６に記載の計算機システム。
【請求項８】
前記プロセッサは、前記データ記憶領域を含む外部記憶デバイスに接続されるように構成されている、
請求項６に記載の計算機システム。
【請求項９】
前記データ記憶領域は、複数のページを含み、
各ページは、所定数の物理領域を含み、
前記プロセッサは、ログ構造化ファイルシステムを用いて前記データ記憶領域を管理し、前記データ記憶領域の空き領域が、予め設定された実行条件を満たすか否かを判定するように構成されており、
前記プロセッサは、前記データ記憶領域の空き領域が前記実行条件を満たすと判定された場合、各ページ内の無効データ量に基づいて、前記移動条件を満たすページを選択する、
請求項２に記載の計算機システム。
【請求項１０】
前記変換情報は、論理領域のアドレスに関連付けられた、所定サイズのエントリを含み、
前記エントリは、前記論理領域に関連付けられた物理領域のアドレスを格納する物理アドレス領域と、前記論理領域の最新データに基づく識別情報を格納する現識別情報領域と、前記論理領域の最新データの更新前データに基づく識別情報を格納する旧識別情報領域とを含む、
請求項１に記載の計算機システム。
【請求項１１】
第１論理領域がデータ記憶領域内の物理領域に関連付けられておらず、且つ前記データ記憶領域に格納されていない第１データを前記第１論理領域へ書き込むことを要求する第１ライト要求を受信した場合、前記第１データに基づく第１識別情報を算出し、前記データ記憶領域内の第１物理領域へ前記第１データを書き込み、前記第１論理領域のアドレスと前記第１物理領域のアドレスと前記第１識別情報を示す第１現識別情報との関連付けを変換情報へ登録し、前記第１識別情報と前記第１論理領域のアドレスとの関連付けを重複情報へ登録し、
前記第１ライト要求の後、第２論理領域が前記データ記憶領域内の物理領域に関連付けられておらず、且つ前記第１データを前記第２論理領域へ書き込むことを要求する第２ライト要求を受信した場合、前記第１データに基づく第１識別情報を算出し、前記第２論理領域のアドレスと前記第１物理領域のアドレスと前記第１識別情報を示す第２現識別情報との関連付けを前記変換情報へ登録し、前記第１識別情報と前記第２論理領域のアドレスとの関連付けを前記重複情報へ登録し、
前記第１ライト要求の後、前記データ記憶領域に格納されていない第２データを前記第１論理領域へ書き込むことを要求する第３ライト要求を受信した場合、前記第２データに基づく第２識別情報を算出し、前記データ記憶領域内の第２物理領域へ前記第２データを書き込み、前記第１論理領域のアドレスと前記第２物理領域のアドレスと前記第２識別情報を示す第１現識別情報と前記第１識別情報を示す第１旧識別情報との関連付けを前記変換情報へ登録し、前記第２識別情報と前記第１論理領域のアドレスとの関連付けを前記重複情報へ登録し、
前記第１論理領域が、予め設定された離脱条件を満たす場合、前記重複情報から前記第１論理領域のアドレスを削除し、前記変換情報のうち前記第１論理領域のアドレスに関連付けられた情報から前記第１旧識別情報を削除する、
ことを備えるデータ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関する。
【背景技術】
【０００２】
データの重複排除の方式として、ポストプロセス（ＰＳＰ）とインラインプロセス（ＩＬＰ）の二つが知られている。ポストプロセス方式は、データの重複排除をホストＩ／Ｏと非同期に実施するため、ライト性能への影響が小さい。しかし、ポストプロセス方式は、一度データをディスクに格納し、その後データ量削減を実施するので、一時領域のディスク容量が必要となる。一方でインラインプロセス方式は、ホストＩ／Ｏ契機でデータの重複排除を実施するため、ポストプロセス方式のようにデータを一時領域へ格納することが不要である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１４／０６９６１７号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
インラインプロセス方式が、重複排除済みのデータに対して更新ライト要求を受領した場合、そのデータを重複排除の対象外にする処理が必要となる。この処理の負荷が大きいことから、インラインプロセス方式のスループット性能は、ポストプロセス方式のスループット性能よりも低くなる。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明の一態様である計算機システムは、メモリと、前記メモリに接続されるプロセッサと、を備える。前記プロセッサは、第１論理領域がデータ記憶領域内の物理領域に関連付けられておらず、且つ前記データ記憶領域に格納されていない第１データを前記第１論理領域へ書き込むことを要求する第１ライト要求を受信した場合、前記第１データに基づく第１識別情報を算出し、前記データ記憶領域内の第１物理領域へ前記第１データを書き込み、前記第１論理領域のアドレスと前記第１物理領域のアドレスと前記第１識別情報を示す第１現識別情報との関連付けを変換情報へ登録し、前記第１識別情報と前記第１論理領域のアドレスとの関連付けを重複情報へ登録し、前記プロセッサは、前記第１ライト要求の後、第２論理領域が前記データ記憶領域内の物理領域に関連付けられておらず、且つ前記第１データを前記第２論理領域へ書き込むことを要求する第２ライト要求を受信した場合、前記第１データに基づく第１識別情報を算出し、前記第２論理領域のアドレスと前記第１物理領域のアドレスと前記第１識別情報を示す第２現識別情報との関連付けを前記変換情報へ登録し、前記第１識別情報と前記第２論理領域のアドレスとの関連付けを前記重複情報へ登録し、前記プロセッサは、前記第１ライト要求の後、前記データ記憶領域に格納されていない第２データを前記第１論理領域へ書き込むことを要求する第３ライト要求を受信した場合、前記第２データに基づく第２識別情報を算出し、前記データ記憶領域内の第２物理領域へ前記第２データを書き込み、前記第１論理領域のアドレスと前記第２物理領域のアドレスと前記第２識別情報を示す第１現識別情報と前記第１識別情報を示す第１旧識別情報との関連付けを前記変換情報へ登録し、前記第２識別情報と前記第１論理領域のアドレスとの関連付けを前記重複情報へ登録し、前記プロセッサは、前記第１論理領域が、予め設定された離脱条件を満たす場合、前記重複情報から前記第１論理領域のアドレスを削除し、前記変換情報のうち前記第１論理領域のアドレスに関連付けられた情報から前記第１旧識別情報を削除する。
【発明の効果】
【０００６】
インラインプロセス方式のスループット性能を向上させる。
【図面の簡単な説明】
【０００７】
【図１】計算機システムの構成を示す。
【図２】計算機システムの論理構成を示す。
【図３】論物変換テーブル１６０を示す。
【図４】ＦＰＴ  ＶＯＬ３３０を示す。
【図５】インラインプロセスを示す。
【図６】ガベージコレクションを示す。
【図７】ＦＰＴエントリ削除処理を示す。
【発明を実施するための形態】
【０００８】
以下、図面を参照して本発明の実施形態を説明する。
【０００９】
以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００１０】
また、以下の説明では、要素の識別情報として、ＩＤが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
【００１１】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたＩＤを使用することがある。
【００１２】
また、以下の説明では、Ｉ／Ｏ（Input/Output）要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
【００１３】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Central Processing Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又はインターフェースデバイス（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理又はシステムとしてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ（例えばＣＰＵ）と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１４】
図１は、計算機システムの構成を示す。
【００１５】
計算機システムは、ホストコンピュータ３０と、ストレージシステム４０とを含む。ストレージシステム４０は、ディスクコントローラ（ＤＫＣ）１０と、ディスクユニット（ＤＫＵ）２０とを含む。ＤＫＵ２０は、ＳＡＳ（Serial Attached Small Computer System Interface）やＳＡＴＡ（Serial Advanced Technology Attachment）等のインタフェースを介して、ディスクコントローラ１０に接続されている。ディスクコントローラ１０は、ＳＡＮ等のネットワーク５０を介してホストコンピュータ３０に接続されている。
【００１６】
ディスクコントローラ１０は、２つのクラスタ１００（ＣＬ１、ＣＬ２）を含む。２つのクラスタ１００は、互いに通信を行い、一方のクラスタに障害が発生しても、他方のクラスタが動作することで、動作を継続することができる。クラスタ１００は、チャネルアダプタ１１０と、キャッシュメモリ（ＣＭ）１２０と、ディスクアダプタ（ＤＫＡ）１３０と、マイクロプロセッサ（ＭＰ）１４０とを含む。
【００１７】
チャネルアダプタ１１０は、ホストコンピュータ３０に接続され、ホストコンピュータ３０との通信を制御する。キャッシュメモリ１２０は、制御プログラム１５０等のプログラムと、論物変換テーブル１６０等のデータとを格納する。ディスクアダプタ１３０は、ディスクユニット２０に接続され、ディスクユニット２０との通信を制御する。マイクロプロセッサ１４０は、キャッシュメモリ１２０内のプログラムに従って処理を実行する。
【００１８】
ディスクユニット２０は、複数の記憶デバイス２００を含む。各記憶デバイス２００は、例えばＳＳＤ（solid state drive）やＨＤＤ（hard disk drive）であり、複数のクラスタ１００のディスクアダプタ１３０に接続されている。
【００１９】
図２は、計算機システムの論理構成を示す。
【００２０】
ディスクコントローラ１０は、ディスクユニット２０内の記憶デバイス２００を用いて、ＴＨＰ（thin provisioning）プール３１０を作成する。ディスクコントローラ１０は、ログ構造化（追記型）ファイルシステムを用いるボリュームであるログ構造化（log-structured：ＬＳ）ボリューム３５０を作成し、ＴＨＰプール３１０内の記憶領域をログ構造化ボリューム３５０に割り当てる。ディスクコントローラ１０は、ＴＨＰ  ＶＯＬ（volume）３２０を作成し、ログ構造化ボリューム３５０内の物理領域をＴＨＰ  ＶＯＬ３２０に割り当てる。ログ構造化ボリューム３５０内の物理領域は、ＴＨＰプール３１０内の記憶領域に関連付けられたキャッシュメモリ１２０内の物理領域であってもよい。ディスクコントローラ１０は、ＴＨＰ  ＶＯＬ３２０に対して重複排除の設定を行う。
【００２１】
ＴＨＰ  ＶＯＬ３２０は、複数の論理領域を含む。論理領域は、論理ブロックと呼ばれてもよい。ＴＨＰ  ＶＯＬ３２０内の論理領域は、論理アドレス（ＬＡ）により示される。ログ構造化ボリューム３５０内の物理領域は、物理アドレス（ＰＡ）により示される。ログ構造化ボリューム３５０は、複数のページを含む。ページは、複数の物理領域を含む。物理領域は、物理ブロックと呼ばれてもよい。論理領域及び物理領域のサイズは、例えば８ｋＢである。或る論理領域に関連付けられた物理領域にデータが格納されており、且つ当該論理領域へ更新データを書き込むことを要求するライト要求を受信した場合、制御プログラム１５０は、当該物理領域と異なる新物理領域へ更新データを書き込み、当該論理領域に新物理領域を関連付ける。複数の論理領域のデータが重複している場合、制御プログラム１５０は、それらの論理領域に同一の物理領域を割り当てる。
【００２２】
更にディスクコントローラ１０は、ＦＰＫ（finger print key）を管理するＦＰＴ（finger print table）  ＶＯＬ３３０を作成する。ＦＰＫは、データのハッシュ値である。ホストコンピュータ３０は、ＬＵＮ３４０を作成し、ＴＨＰ  ＶＯＬ３２０をＬＵＮ３４０に割り当てる。
【００２３】
図３は、論物変換テーブル１６０を示す。
【００２４】
論物変換テーブル１６０は、論理領域毎の論物変換エントリを有する。一つの論理領域の論物変換エントリには、当該論理領域の論理アドレスが与えられる。一つの論理領域の論物変換エントリは、フィールドとして、データ長（ＤＬ）１６１と、状態フラグ１６２と、物理アドレス（ＰＡ）１６３と、現ＦＰＴ番号（＃）１６４と、旧ＦＰＴ番号（＃）１６５と、ＬＲＣ（longitudinal redundancy check）１６６とを含む。論物変換エントリは、予め設定されたサイズを有する。論物変換エントリの各フィールドは、予め設定されたサイズを有する。
【００２５】
ＤＬ１６１は、ＴＨＰプール３１０に格納されるデータの長さである。データが圧縮されて格納される場合、ＤＬ１６１は、圧縮されたデータの長さである。状態フラグ１６２は、当該論物変換エントリの状態を示すフラグである。物理アドレス１６３は、ログ構造化ボリューム３５０内で、当該論理領域に関連付けられた物理領域のアドレスである。現ＦＰＴ番号１６４は、当該論理領域の最新データのＦＰＫから得られるＦＰＴ番号である。ＦＰＴ番号は、ＦＰＫのビット列内の所定位置の部分であり、ＦＰＴ  ＶＯＬ３３０からＦＰＫを検索するために用いられる。例えば、ＦＰＫの長さが８Ｂｙｔｅであり、現ＦＰＴ番号１６４はＦＰＫの上位４Ｂｙｔｅである。旧ＦＰＴ番号１６５は、当該論理領域の最新データの更新前データから得られたＦＰＴ番号である。例えば、旧ＦＰＴ番号１６５は、現ＦＰＴ番号１６４と同様に、ＦＰＫの上位４Ｂｙｔｅであってもよいし、ＦＰＫの上位３Ｂｙｔｅ等、現ＦＰＴ番号１６４より短い長さを有していてもよい。ＬＲＣ１６６は、当該論物変換エントリから算出されるチェックコードである。
【００２６】
旧ＦＰＴ番号１６５の長さと現ＦＰＴ番号１６４の長さとが１Ｂｙｔｅ程度異なっていても、旧ＦＰＴ番号１６５の検索と現ＦＰＴ番号１６４の検索との間に、大きな性能差は生じない。なお、現ＦＰＴ番号１６４、旧ＦＰＴ番号１６５は、ＦＰＫであってもよい。
【００２７】
この論物変換テーブルによれば、制御プログラム１５０は、論理アドレスから、対応する物理アドレスを特定することできる。
【００２８】
制御プログラム１５０は更に、物理アドレスから、対応する論理アドレスを特定するための、物論変換テーブルを作成し、キャッシュメモリ１２０へ格納してもよい。
【００２９】
図４は、ＦＰＴ  ＶＯＬ３３０を示す。
【００３０】
ＦＰＴ  ＶＯＬ３３０は、ＦＰＭＬ４１０と、ＦＰＭＤ４２０と、ＦＰＴＤ（FPT directory）４３０とを格納する。
【００３１】
ＦＰＭＬ４１０は、幾つかの重複リスト４１１を格納することができるブロック構造体である。重複リスト４１１は、一つのＦＰＫ４１２と、幾つかのＦＰＴエントリ４１３とを含む。ＦＰＴエントリ４１３は、論理アドレス（ＬＡ）を含む。ＦＰＭＬ４１０には、ＦＰＢ番号が与えられる。
【００３２】
ＦＰＭＤ４２０は、ＦＰＭＬ４１０を管理するディレクトリを示すブロック構造体である。ＦＰＭＤ４２０は、ディレクトリ内のＦＰＭＬ４１０を示すＦＰＢ番号４２１を格納する。ＦＰＭＤ４２０にも、ＦＰＢ番号が与えられる。
【００３３】
ＦＰＴＤ４３０は、ＦＰＭＬ４１０およびＦＰＭＤ４２０を管理するディレクトリを示すブロック構造体である。ＦＰＴＤ４１０は、当該ディレクトリ内のＦＰＭＬ４１０またはＦＰＭＤ４２０を示すＦＰＢ番号４２１を格納する。ＦＰＴＤ４３０には、当該ディレクトリに属するＦＰＴ番号のビット列の少なくとも一部が与えられる。
【００３４】
ＦＰＭＬ４１０、ＦＰＭＤ４２０、ＦＰＴＤ４３０の夫々のサイズは、予め設定された上限サイズ以下である。上限サイズは例えば５１２ｋＢである。ＦＰＭＬ４１０のサイズが上限サイズを超える場合、新たなＦＰＭＬ４１０が作成され、それらのＦＰＭＬ４１０が、ＦＰＭＤ４２０のディレクトリで管理される。
【００３５】
制御プログラム１５０は、ＦＰＫに含まれるＦＰＴ番号を用いて、ＦＰＴ  ＶＯＬ３３０から当該ＦＰＫを検索し、当該ＦＰＫに対応するＬＡを取得することができる。また、ＦＰＴ  ＶＯＬ３３０によれば、制御プログラム１５０は、ＦＰＫをＦＰＴ  ＶＯＬ３３０へ容易に追加することができる。
【００３６】
ＦＰＴ  ＶＯＬ３３０の容量が大きい場合、ＦＰＴ  ＶＯＬ３３０の全てをキャッシュメモリ１２０に格納できないため、制御プログラム１５０は、ＦＰＴ  ＶＯＬ３３０の一部をキャッシュメモリ１２０へ読み出してアクセスする。ＦＰＫは、ハッシュ値なので、ＦＰＴ  ＶＯＬ３３０へのアクセスは、ほぼランダムアクセスである。これにより、ＦＰＴ  ＶＯＬ３３０の検索は、記憶デバイス２００へアクセスする場合が多くなり、処理時間が大きくなる。
【００３７】
論物変換エントリが旧ＦＰＴ番号１６５を格納できず現ＦＰＴ番号１６４だけを格納する場合、更新ライトの度に現ＦＰＴ番号と論理アドレスの関連付けを解除するために、ＦＰＴ  ＶＯＬ３３０から現ＦＰＴ番号を検索する。これにより、ストレージシステム４０の負荷が高くなり、ストレージシステム４０のスループット性能が低下する。本実施例の論物変換テーブル１６０は、論物変換エントリが旧ＦＰＴ番号１６５を格納することで、インラインプロセスは、更新ライトの度に現ＦＰＴ番号と論理アドレスの関連付けを解除することを防ぐ。
【００３８】
以下、制御プログラム１５０の動作について説明する。
【００３９】
図５は、インラインプロセスを示す。
【００４０】
Ｓ１１０において制御プログラム１５０は、ホストコンピュータ３０から、対象論理アドレスへのライト要求およびライトデータを受信すると、予め設定された長さ毎に、ライトデータのハッシュ演算を行うことで、ライトデータのＦＰＫを対象ＦＰＫとして算出し、対象ＦＰＫのビット列の所定位置の部分を対象ＦＰＴ番号として算出する。なお、制御プログラム１５０は、ライトデータをキャッシュメモリ１２０へ書き込むと、応答をホストコンピュータ３０へ送信する。
【００４１】
Ｓ１２０において制御プログラム１５０は、論物変換テーブル１６０を参照する。
【００４２】
Ｓ１３０において制御プログラム１５０は、論物変換テーブル１６０が対象論理アドレスに対応する対象論物変換エントリを含むか否かを判定する。
【００４３】
Ｓ１３０の結果、論物変換テーブル１６０が対象論物変換エントリを含むと判定された場合（ＹＥＳ）、Ｓ１４０において制御プログラム１５０は、対象ＦＰＴ番号が、対象論物変換エントリの現ＦＰＴ番号１６４と一致するか否かを判定する。
【００４４】
Ｓ１４０の結果、対象ＦＰＴ番号が現ＦＰＴ番号と一致すると判定された場合（ＹＥＳ）、Ｓ１５０において制御プログラム１５０は、ライトデータと、対象論物変換エントリの物理アドレス１６３に格納されている格納データとを、比較し、Ｓ１６０において制御プログラム１５０は、比較の結果、ライトデータが格納データに一致するか否かを判定する。
【００４５】
Ｓ１６０の結果、ライトデータが格納データに一致すると判定された場合（ＹＥＳ）、制御プログラム１５０は、このフローを終了する。即ち、この場合、対象論理アドレスに格納されているデータを更新する必要がない。
【００４６】
Ｓ１６０の結果、ライトデータが格納データに一致しないと判定された場合（ＮＯ）、Ｓ２１０において制御プログラム１５０は、対象論物変換エントリが旧ＦＰＴ番号１６５の値を含むか否かを判定する。
【００４７】
Ｓ２１０の結果、対象論物変換エントリが旧ＦＰＴ番号１６５の値を含むと判定された場合（ＹＥＳ）、Ｓ２２０において制御プログラム１５０は、旧ＦＰＴ番号と対象論理アドレスの関連付けを解除するＦＰＴエントリ削除処理を行う。ＦＰＴエントリ削除処理については、後述する。
【００４８】
Ｓ２２０の後、または、Ｓ２１０の結果、対象論物変換エントリが旧ＦＰＴ番号１６５の値を含まないと判定された場合（ＮＯ）、Ｓ２３０において制御プログラム１５０は、対象論物変換エントリにおいて、現ＦＰＴ番号１６４の値を、旧ＦＰＴ番号１６５へ移動させる。
【００４９】
Ｓ２３０の後、または、Ｓ１３０の結果、論物変換テーブル１６０が対象論物変換エントリを含まないと判定された場合（ＮＯ）、Ｓ２４０において制御プログラム１５０は、ライトデータが重複条件を満たすか否かを判定する。ここで、制御プログラム１５０は、ＦＰＴ  ＶＯＬ３３０が対象ＦＰＴ番号に対応する重複リストを含み、且つ、対象データが、当該重複リスト内の論理アドレスに対応する物理アドレスに格納されているデータに一致する場合、ライトデータが重複条件を満たすと判定する。
【００５０】
Ｓ２４０の結果、ライトデータが重複条件を満たさないと判定された場合（ＮＯ）、Ｓ２５０において制御プログラム１５０は、ライトデータを格納する。
【００５１】
Ｓ２５０の後、または、Ｓ２４０の結果、ライトデータが重複条件を満たすと判定された場合（ＹＥＳ）、Ｓ２６０において制御プログラム１５０は、対象ＦＰＴ番号を、対象エントリの現ＦＰＴ番号１６４へ登録する。Ｓ２７０において制御プログラム１５０は、ライトデータのライト先を、対象論物変換エントリの物理アドレス１６３へ登録し、このフローを終了する。
【００５２】
以上のインラインプロセスによれば、制御プログラム１５０は、対象論理アドレスの論理領域を更新するライト要求を受信し、対象論物変換エントリが旧ＦＰＴ番号の値を含まない場合、更新前データのＦＰＴ番号を旧ＦＰＴ番号へ移動することにより、すぐにＦＰＴエントリ削除処理を行う必要がない。これにより、ストレージシステム４０のスループット性能を向上させることができる。
【００５３】
旧ＦＰＴ番号は、後述のガベージコレクションによって論物変換エントリから削除することができる。同一の論理アドレスへのライトの時間間隔が長い場合、旧ＦＰＴ番号が削除され、Ｓ２１０の結果がＮＯとなる確率が高まる。これにより、ＦＰＴエントリ削除処理の実行回数を抑えることができる。なお、制御プログラム１５０は、対象論理アドレスの論理領域を更新するライト要求を受信し、対象論物変換エントリが旧ＦＰＴ番号の値を含む場合、すぐにＦＰＴエントリ削除処理を行う。
【００５４】
ＴＨＰ  ＶＯＬ３２０の更新の度に、ログ構造化ボリューム３５０の空き領域に有効データが書き込まれると、ログ構造化ボリューム３５０及びＴＨＰプール３１０の空き領域が少なくなる。制御プログラム１５０は、ページ内の有効データを別のページへ移動させることで、空きページを作成する、ガベージコレクションを行う。これにより、制御プログラム１５０は、ログ構造化ボリューム３５０の空き領域を増加させることができる。
【００５５】
制御プログラム１５０は、ホストコンピュータ３０からのライト要求とは非同期で、ストレージシステム４０の空き領域が、予め設定された実行条件を満たす場合、ガベージコレクションを行う。例えば、制御プログラム１５０は、ＴＨＰプール３１０の容量のうち、ＴＨＰ  ＶＯＬ３２０に割り当てられたサイズの割合である使用率が、予め設定された使用率閾値を超えた場合に、ストレージシステム４０の空き領域が実行条件を満たすと判定する。また、例えば、制御プログラム１５０は、ＴＨＰプール３１０からＴＨＰ  ＶＯＬ３２０に割り当てられたサイズのうち、無効データの割合を無効率として算出し、無効率が、予め設定された無効率閾値を超えた場合に、ストレージシステム４０の空き領域が実行条件を満たすと判定する。
【００５６】
図６は、ガベージコレクションを示す。
【００５７】
Ｓ３１０において制御プログラム１５０は、複数のページの中から、移動条件を満たす対象ページを選択する。ここで制御プログラム１５０は、無効データ量が、予め設定された閾値を超えているページを対象ページとして選択してもよい。また、制御プログラム１５０は、ストレージシステム４０の空き領域が実行条件を満たさなくなるまで、無効データ量が大きいページから順に、対象ページとして選択してもよい。無効データ量は、無効率や、無効データサイズである。無効率は、ページのサイズに対する無効データサイズの割合である。
【００５８】
Ｓ３２０において制御プログラム１５０は、対象ページから、物理アドレス順に一つの物理領域を対象物理領域として選択し、対象物理領域の物理アドレスを対象物理アドレスとして選択する。Ｓ３３０において制御プログラム１５０は、物論変換テーブルに基づいて、対象物理領域に関連付けられた論理領域を対象論理領域として選択し、対象論理領域の論理アドレスを対象論理アドレスとして選択する。
【００５９】
Ｓ４２０において制御プログラム１５０は、論物変換テーブル１６０を参照する。Ｓ４３０において制御プログラム１５０は、論物変換テーブル１６０において、対象論理アドレスに対応する対象論物変換エントリに旧ＦＰＴ番号１６５の値が存在するか否かを判定する。
【００６０】
Ｓ４３０の結果、対象論物変換エントリに旧ＦＰＴ番号の値が存在すると判定された場合（ＹＥＳ）、Ｓ４４０において制御プログラム１５０は、旧ＦＰＴ番号と対象論理アドレスとの関連付けを解除するＦＰＴエントリ削除処理を行う。Ｓ４５０において制御プログラム１５０は、旧ＦＰＴ番号に対応する重複リストが少なくとも一つのＦＰＴエントリを含むか否かを判定する。
【００６１】
Ｓ４５０の結果、当該重複リストが少なくとも一つのＦＰＴエントリを含むと判定された場合（ＹＥＳ）、または、Ｓ４３０の結果、旧ＦＰＴ番号の値が存在しないと判定された場合（ＮＯ）、即ち、対象物理領域が論理アドレスに関連付けられており有効データを格納しているため、Ｓ４６０において制御プログラム１５０は、移動先ページと、移動先ページ内の物理領域である移動先物理領域とを選択し、対象物理領域内のデータを、移動先物理領域へ移動させる。制御プログラム１５０は更に、論物変換テーブル１６０内の当該論理アドレスに対応する論理領域エントリ内の物理アドレス１６３に、移動先物理領域の物理アドレスを登録する。
【００６２】
Ｓ４６０の後、または、Ｓ４５０の結果、当該重複リストがＦＰＴエントリを含まないと判定された場合（ＮＯ）、即ち、対象物理領域が有効データを格納していないため、Ｓ４８０において制御プログラム１５０は、対象ページ内の全物理領域が、対象物理領域として選択されたか否かを判定する。
【００６３】
Ｓ４８０の結果、対象ページ内に、対象物理領域として選択されていない物理領域がある場合（ＮＯ）、制御プログラム１５０は、処理をＳ３２０へ移行させ、次の対象物理領域を選択する。
【００６４】
Ｓ４８０の結果、対象ページ内の全物理領域が対象物理領域として選択された場合（ＹＥＳ）、Ｓ４９０において制御プログラム１５０は、対象ページを破棄し、このフローを終了する。その後のライト要求に応じて、制御プログラム１５０は、空きページとなった対象ページへデータを書き込む。
【００６５】
以上のガベージコレクションによれば、制御プログラム１５０は、制御プログラム１５０は、ガベージコレクションの対象の論理領域の論物変換エントリに、旧ＦＰＴ番号が存在する場合、旧ＦＰＴ番号で示されたデータとの関連付けを解除することができる。これにより、制御プログラム１５０は、当該論物変換エントリ内の旧ＦＰＴ番号を削除し、当該論理領域の次の更新時にＦＰＴエントリ削除処理を行う必要がなくなる。制御プログラム１５０がライト要求と非同期でガベージコレクションを行うことにより、ライト要求時の負荷を低減することができる。
【００６６】
制御プログラム１５０は、対象論理アドレスの論理領域が、予め設定された離脱条件を満たす場合、ＦＰＴエントリ削除処理を行う。離脱条件は、例えば前述のＳ２２０またはＳ４４０へ移行する条件である。
【００６７】
図７は、ＦＰＴエントリ削除処理を示す。
【００６８】
前述のＳ２２０およびＳ４４０において制御プログラム１５０は、旧ＦＰＴ番号と対象論理アドレスを指定し、ＦＰＴエントリ削除処理を行う。
【００６９】
Ｓ５２０において制御プログラム１５０は、ＦＰＴ  ＶＯＬ３３０から、旧ＦＰＴ番号に対応する重複リストを検索し、検索された重複リストを対象重複リストとしてキャッシュメモリ１２０へ読み出す。Ｓ５３０において制御プログラム１５０は、対象重複リストが対象論理アドレスを含むか否かを判定する。
【００７０】
Ｓ５３０の結果、対象重複リストが対象論理アドレスを含まないと判定された場合（ＮＯ）、制御プログラム１５０は、このフローを終了する。
【００７１】
Ｓ５３０の結果、対象重複リストが対象論理アドレスを含むと判定された場合（ＹＥＳ）、Ｓ５４０において制御プログラム１５０は、対象重複リストから、対象論理アドレスを含むＦＰＴエントリを削除し、対象重複リスト内のＦＰＴエントリを前詰する。Ｓ５５０において制御プログラム１５０は、論物変換テーブル１６０のうち、対象論理アドレスの論物変換エントリから旧ＦＰＴ番号１６５の値を削除する。Ｓ５６０において制御プログラム１５０は、更新された対象重複リストをＦＰＴ  ＶＯＬ３３０へ反映し、このフローを終了する。制御プログラム１５０は、ＦＰＴ  ＶＯＬ３３０の更新を、非同期でキャッシュメモリ１２０からＴＨＰプール３１０へ反映してもよい。
【００７２】
以上のＦＰＴエントリ削除処理によれば、制御プログラム１５０は、旧ＦＰＴ番号と対象論理アドレスの関連付けを解除することができる。
【００７３】
以下、本実施例の効果について説明する。
【００７４】
特定の論理領域へのライト要求がシーケンシャルライトである場合、当該論理領域へのライト要求がランダムライトである場合よりも、当該論理領域を更新する間隔が長くなる。当該論理領域を更新する間隔が長くなると、更新の間にガベージコレクションが実行され、ガベージコレクション中のＦＰＴエントリ削除処理により旧ＦＰＴ番号の値が削除される確率が高くなる。これにより、ライト中にＦＰＴエントリ削除処理が実行されない確率が高くなる。即ち、当該論理領域の更新により旧ＦＰＴ番号に値が登録されても、次の更新までに旧ＦＰＴ番号の値が削除され、次の更新時にＦＰＴエントリ削除処理が実行されない。これにより、ストレージシステム４０のスループット性能を向上させることができる。
【００７５】
シーケンシャルライトと一例としてバックアップが挙げられる。ホストコンピュータ３０が、ホストコンピュータ３０に格納されているデータのバックアップを、所定のバックアップ周期で定期的にストレージシステム４０へ書き込む場合、バックアップの間にガベージコレクションが実行され、旧ＦＰＴ番号の値が削除される確率が高くなる。例えば、ホストコンピュータ３０が、毎週月曜日にバックアップを第１のＴＨＰ  ＶＯＬへ書き込み、毎週火曜日にバックアップを第２のＴＨＰ  ＶＯＬへ書き込み、毎週水曜日にバックアップを第３のＴＨＰ  ＶＯＬへ書き込み、毎週木曜日にバックアップを第４のＴＨＰ  ＶＯＬへ書き込み、毎週金曜日にバックアップを第５のＴＨＰ  ＶＯＬへ書き込むとする。この場合、各ＴＨＰ  ＶＯＬは１週間に１回更新される。このように、バックアップが十分長い時間間隔で実行されることにより、バックアップの間にガベージコレクションが実行され、旧ＦＰＴ番号の値が削除される確率が高くなる。
【００７６】
ディスクコントローラ１０の代わりに、バックアップサーバ等の計算機が用いられてもよい。この場合、バックアップサーバは、ディスクユニット２０と同様の外部記憶デバイスに接続される。このバックアップサーバは、ＦＰＴ  ＶＯＬ３３０と同様の情報を格納する記憶デバイスを含み、制御プログラム１５０を実行する。これにより、バックアップサーバは、外部記憶デバイスの重複排除を行うことができる。
【００７７】
計算機システムは、ストレージシステム４０、ディスクコントローラ１０、バックアップサーバ等に対応する。メモリは、キャッシュメモリ１２０等に対応する。プロセッサは、ＭＰ１４０等に対応する。データ記憶領域は、ログ構造化ボリューム３５０、ＴＨＰプール３１０等に対応する。重複情報は、ＦＰＴ  ＶＯＬ３３０等に対応する。識別情報は、ＦＰＴ番号等に対応する。変換情報は、論物変換テーブル１６０や物論変換テーブル等に対応する。現識別情報は、現ＦＰＴ番号１６４の値等に対応する。旧識別情報は、旧ＦＰＴ番号１６５の値等に対応する。現識別情報領域は、現ＦＰＴ番号１６４のフィールド等に対応する。旧識別情報領域は、旧ＦＰＴ番号１６５のフィールド等に対応する。フィンガープリントは、ＦＰＫ等に対応する。
【００７８】
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲を上記構成に限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
【符号の説明】
【００７９】
１０…ディスクコントローラ、  ２０…ディスクユニット、  ３０…ホストコンピュータ、  ４０…ストレージシステム、  ５０…ネットワーク、  １００…クラスタ、  １１０…チャネルアダプタ、  １２０…キャッシュメモリ、  １３０…ディスクアダプタ、  １４０…マイクロプロセッサ、  １５０…制御プログラム、  １６０…論物変換テーブル
【図１】
2018020593.tif 000003
【図２】
2018020593.tif 000004
【図３】
2018020593.tif 000005
【図４】
2018020593.tif 000006
【図５】
2018020593.tif 000007
【図６】
2018020593.tif 000008
【図７】
2018020593.tif 000009
【国際調査報告】
2018020593.tif 000010
2018020593.tif 000011