(57)【要約】【課題】ユーザデータユニットが無効であるか否かの判定にかかる処理の負荷を低減すること。【解決手段】論物メタ管理部２４ａが、データの論理アドレスと物理アドレスを対応付け、論理アドレスから物理アドレスへの変換に用いられる論物メタの情報を管理する。そして、データ処理管理部２５が、ユーザデータユニットをストレージ３に追記及びまとめ書きを行うとともに、データが更新された場合に更新前データを含むユーザデータユニットの参照論理アドレスを無効化することなく保持する。【選択図】図８
2018181207.tif 000002
【特許請求の範囲】
【請求項１】
書き込み回数に制限を有する記憶媒体を用いる記憶装置を制御するストレージ制御装置において、
前記記憶装置を使用する情報処理装置がデータの識別に用いる論理アドレスと前記記憶媒体に該データが記憶された位置を示す物理アドレスとを対応付けるアドレス変換情報を管理する変換情報管理部と、
データを前記記憶媒体に追記及びまとめ書きを行うとともに、該データが更新された場合に、更新前のデータに対応付けられた参照論理アドレスを前記更新前のデータとともに前記記憶媒体上に維持する書込処理部と
を有することを特徴とするストレージ制御装置。
【請求項２】
前記書込処理部は、参照論理アドレスに前記アドレス変換情報によって対応付けられた物理アドレスが該データの物理アドレスと一致しない場合に、該データは無効データであってガベージコレクションの対象であると判定することを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記変換情報管理部により管理されるアドレス変換情報が前記記憶媒体に追記及びまとめ書きされた位置を示す物理アドレスをメタアドレスとして前記論理アドレスと対応付けて管理する変換情報位置管理部をさらに有し、
前記書込処理部は、前記アドレス変換情報を前記記憶媒体に追記及びまとめ書きし、該アドレス変換情報が前記記憶媒体に追記及びまとめ書きされた位置を示す物理アドレスと、該アドレス変換情報に含まれる論理アドレスに対応付けられたメタアドレスが一致しない場合に、該アドレス変換情報は無効であってガベージコレクションの対象であると判定することを特徴とする請求項２に記載のストレージ制御装置。
【請求項４】
前記書込処理部は、前記アドレス変換情報に含まれる論理アドレスに対応付けられるメタアドレスがない場合には、該アドレス変換情報は無効であってガベージコレクションの対象であると判定することを特徴とする請求項３に記載のストレージ制御装置。
【請求項５】
前記書込処理部は、自装置が担当するデータであるか否かを判定し、自装置が担当するデータでない場合には、該データを担当するストレージ制御装置に該データが有効であるか否かの判定を依頼し、有効でないとの応答を受け取ると、ガベージコレクションの対象であると判定することを特徴とする請求項２、３又は４に記載のストレージ制御装置。
【請求項６】
書き込み回数に制限を有する記憶媒体を用いる記憶装置を制御するストレージ制御装置によるストレージ制御方法において、
前記記憶装置を使用する情報処理装置がデータの識別に用いる論理アドレスと前記記憶媒体に該データが記憶された位置を示す物理アドレスとを対応付けるアドレス変換情報を管理し、
データを前記記憶媒体に追記及びまとめ書きを行うとともに、該データが更新された場合に、更新前のデータに対応付けられた参照論理アドレスを前記更新前のデータとともに前記記憶媒体上に維持する
ことを特徴とするストレージ制御方法。
【請求項７】
書き込み回数に制限を有する記憶媒体を用いる記憶装置を制御するストレージ制御装置が有するコンピュータにより実行されるストレージ制御プログラムにおいて、
前記記憶装置を使用する情報処理装置がデータの識別に用いる論理アドレスと前記記憶媒体に該データが記憶された位置を示す物理アドレスとを対応付けるアドレス変換情報を管理し、
データを前記記憶媒体に追記及びまとめ書きを行うとともに、該データが更新された場合に、更新前のデータに対応付けられた参照論理アドレスを前記更新前のデータとともに前記記憶媒体上に維持する
処理を前記コンピュータに実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラムに関する。
【背景技術】
【０００２】
昨今、ストレージ装置の記憶媒体は、ＨＤＤ（Hard  Disk  Drive）からよりアクセススピードの速いＳＳＤ（Solid  State  Drive）等のフラッシュメモリに移行している。ＳＳＤでは、メモリセルへの上書きを直接行うことはできず、例えば１ＭＢ（メガバイト）の大きさのブロックの単位でデータの消去が行われた後にデータの書き込みが行われる。
【０００３】
このため、ブロック内の一部のデータを更新する場合には、ブロック内の他のデータを退避し、ブロックを消去した後に、退避したデータと更新データを書き込むことが行われるため、ブロックの大きさに較べて小さいデータを更新する処理が遅い。また、ＳＳＤには書き込み回数の上限がある。このため、ＳＳＤでは、ブロックの大きさに較べて小さいデータの更新をできるだけ避けることが望ましい。そこで、ブロック内の一部のデータを更新する場合に、ブロック内の他のデータと更新データを新たなブロックに書き込むことが行われる。
【０００４】
なお、フラッシュメモリにおいて、物理的な単位領域内の管理情報格納領域に格納された論理アドレスの延べ数である使用度と、有効な論理アドレスの数である重複度との差が既定値を超える物理的な単位領域を初期状態に戻す再生処理を実行する技術がある。この技術によれば、フラッシュメモリの長寿命化を図りながら、フラッシュメモリを有効活用することがきる。
【０００５】
また、選択された１以上のコピー元物理領域内の１以上の生存データを、選択されたコピー先物理領域の空き領域の先頭からシーケンシャルに、ストリップ単位又はストライプ単位に書き込む技術がある。この技術において、書込み対象データのサイズがストリップ単位又はストライプ単位の書込みに必要なサイズに満たない場合、書込み対象データに対してパディングを行うことで、ガベージコレクション（ＧＣ：Garbage  Collection）性能を向上することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−８７０２１号公報
【特許文献２】国際公開第２０１６／１８１４８１号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ブロックのような物理領域の一部のデータを更新する場合に、物理領域の他のデータと更新データを新たな物理領域に書き込むこととすると、更新前のデータを記憶する古い物理領域に対してＧＣを行う必要がある。しかしながら、ある物理領域が無効であるか否かを判定するためには、論理アドレスを物理アドレスに変換する変換情報を全て調査して、当該物理領域を参照している論理領域が存在するかを判定する必要があり、判定処理の負荷が大きいという問題がある。
【０００８】
本発明は、１つの側面では、物理領域が無効であるか否かの判定にかかる処理の負荷を低減することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、ストレージ制御装置は、書き込み回数に制限を有する記憶媒体を用いる記憶装置を制御する。ストレージ制御装置は、変換情報管理部と書込処理部とを有する。変換情報管理部は、ストレージ装置を使用する情報処理装置がデータの識別に用いる論理アドレスと記憶媒体に該データが記憶された位置を示す物理アドレスとを対応付けるアドレス変換情報を管理する。書込処理部は、データを記憶媒体に追記及びまとめ書きを行うとともに、該データが更新された場合に、更新前のデータに対応付けられた参照論理アドレスを更新前のデータとともに記憶媒体上に維持する。
【発明の効果】
【００１０】
１つの側面では、本発明は、物理領域が無効であるか否かの判定にかかる処理の負荷を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例に係るストレージ装置の記憶構成を示す図である。
【図２】図２は、ＲＡＩＤユニットのフォーマットを示す図である。
【図３】図３は、参照メタのフォーマットを示す図である。
【図４】図４は、論物メタのフォーマットを示す図である。
【図５】図５は、実施例に係るメタメタ方式を説明するための図である。
【図６】図６は、メタアドレスのフォーマットを示す図である。
【図７】図７は、ドライブグループにおけるＲＡＩＤユニットの配置例を示す図である。
【図８】図８は、実施例に係る情報処理システムの構成を示す図である。
【図９】図９は、プール単位でのＧＣポーリングを説明するための図である。
【図１０】図１０は、有効なデータの追記書きを説明するための図である。
【図１１】図１１は、ＲＵ管理テーブルのフォーマットを示す図である。
【図１２】図１２は、参照メタを用いたデータ有効性の判定方法を説明するための図である。
【図１３】図１３は、機能部間の関係を示す図である。
【図１４】図１４は、ＧＣポーリングのフローを示すフローチャートである。
【図１５】図１５は、無効データ率を算出する処理のシーケンスを示す図である。
【図１６】図１６は、ユーザデータユニットの有効チェック処理のフローを示すフローチャートである。
【図１７】図１７は、論物メタの有効チェック処理のフローを示すフローチャートである。
【図１８】図１８は、実施例に係るストレージ制御プログラムを実行するストレージ制御装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するストレージ制御装置、ストレージ制御方法及びストレージ制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１３】
まず、実施例に係るストレージ装置のデータ管理方法について図１〜図７を用いて説明する。図１は、実施例に係るストレージ装置の記憶構成を示す図である。図１に示すように、実施例に係るストレージ装置は、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）６ベースのプール３ａとして複数のＳＳＤ３ｄを管理する。また、実施例に係るストレージ装置は、複数のプール３ａを有する。
【００１４】
プール３ａには、仮想化プールと階層化プールがある。仮想化プールは１つのティア３ｂを有し、階層化プールは２つ以上のティア３ｂを有する。ティア３ｂは、１つ以上のドライブグループ３ｃを有する。ドライブグループ３ｃは、ＳＳＤ３ｄのグループであり、６〜２４台のＳＳＤ３ｄを有する。例えば、１つのストライプを記憶する６台のＳＳＤ３ｄのうち、３台はデータ記憶用に用いられ、２台はパリティ記憶用に用いられ、１台はホットスペア用に用いられる。なお、ドライブグループ３ｃは、２５台以上のＳＳＤ３ｄを有してよい。
【００１５】
実施例に係るストレージ装置は、ＲＡＩＤユニットの単位でデータを管理する。シン・プロビジョニングの物理割当の単位は、一般に固定サイズのチャンク単位で行われ、１チャンクは１ＲＡＩＤユニットに該当する。以降の説明では、チャンクをＲＡＩＤユニットと呼称する。ＲＡＩＤユニットは、プール３ａから割り当てられる２４ＭＢの連続な物理領域である。実施例に係るストレージ装置は、データをＲＡＩＤユニット単位でメインメモリ上にバッファリングし、追記型でＳＳＤ３ｄに書き込む。
【００１６】
図２は、ＲＡＩＤユニットのフォーマットを示す図である。図２に示すように、ＲＡＩＤユニットには、複数のユーザデータユニット(データログとも呼ばれる。)が含まれる。ユーザデータユニットには、参照メタと圧縮データが含まれる。参照メタは、ＳＳＤ３ｄに書き込まれるデータの管理データである。
【００１７】
圧縮データは、ＳＳＤ３ｄに書き込まれるデータが圧縮されたものである。データの大きさは最大８ＫＢ（キロバイト）である。圧縮率を５０％とすると、実施例に係るストレージ装置は、１つのＲＡＩＤユニットに、例えば２４ＭＢ÷４．５ＫＢ≒５４６１個のデータユニットが溜まると、ＲＡＩＤユニットをＳＳＤ３ｄに書き込む。
【００１８】
図３は、参照メタのフォーマットを示す図である。図３（ａ）に示すように、参照メタには、ＳＢ（Super  Block）と最大６０個の参照先の参照ＬＵＮ（Logical  Unit  Number：論理ユニット番号）／ＬＢＡ（Logical  Block  Address：論理ブロックアドレス）情報を書き込むことができる記憶容量の領域が確保されている。ＳＢのサイズは３２Ｂ（バイト）であり、参照メタのサイズは５１２Ｂ（バイト）である。各参照ＬＵＮ／ＬＢＡ情報のサイズは８Ｂ（バイト）である。参照メタは、重複排除により新しい参照先ができると、参照先が追加となり、参照メタが更新される。ただし、データの更新により参照先がなくなった場合にも参照ＬＵＮ／ＬＢＡ情報は削除されないで保持される。無効になった参照ＬＵＮ／ＬＢＡ情報はガベージコレクションにより回収される。
【００１９】
図３（ｂ）に示すように、ＳＢには、４ＢのＨｅａｄｅｒ  Ｌｅｎｇｔｈと、２０ＢのＨａｓｈ  Ｖａｌｕｅと、２ＢのＮｅｘｔ  Ｏｆｆｓｅｔ  Ｂｌｏｃｋ  Ｃｏｕｎｔが含まれる。Ｈｅａｄｅｒ  Ｌｅｎｇｔｈは、参照メタの長さである。Ｈａｓｈ  Ｖａｌｕｅは、データのハッシュ値であり、重複排除のために用いられる。Ｎｅｘｔ  Ｏｆｆｓｅｔ  Ｂｌｏｃｋ  Ｃｏｕｎｔは、次に格納する参照ＬＵＮ／ＬＢＡ情報の位置である。なお、Ｒｅｓｅｒｖｅｄは、将来の拡張用である。
【００２０】
図３（ｃ）に示すように、参照ＬＵＮ／ＬＢＡ情報には、２ＢのＬＵＮと、６ＢのＬＢＡが含まれる。
【００２１】
また、実施例に係るストレージ装置は、論物変換情報である論物メタを用いてデータの論理アドレスと物理アドレスの対応関係を管理する。図４は、論物メタのフォーマットを示す図である。実施例に係るストレージ装置は、８ＫＢのデータ毎に、図４に示した情報を管理する。
【００２２】
図４に示すように、論物メタの大きさは３２Ｂである。論物メタには、２ＢのＬＵＮと、６ＢのＬＢＡがデータの論理アドレスとして含まれる。また、論物メタには、２ＢのＣｏｍｐｒｅｓｓｉｏｎ  Ｂｙｔｅ  Ｃｏｕｎｔが、圧縮されたデータのバイト数として含まれる。
【００２３】
また、論物メタには、２ＢのＮｏｄｅ  Ｎｏと、１ＢのＳｔｏｒａｇｅ  Ｐｏｏｌ  Ｎｏと、４ＢのＲＡＩＤ  Ｕｎｉｔ  Ｎｏと、２ＢのＲＡＩＤ  Ｕｎｉｔ  Ｏｆｆｓｅｔ  ＬＢＡが物理アドレスとして含まれる。
【００２４】
Ｎｏｄｅ  Ｎｏは、データユニットを記憶するＲＡＩＤユニットが属するプール３ａを担当するストレージ制御装置を識別するための番号である。なお、ストレージ制御装置については後述する。Ｓｔｏｒａｇｅ  Ｐｏｏｌ  Ｎｏは、データユニットを記憶するＲＡＩＤユニットが属するプール３ａを識別するための番号である。ＲＡＩＤ  Ｕｎｉｔ  Ｎｏは、データユニットを記憶するＲＡＩＤユニットを識別するための番号である。ＲＡＩＤ  Ｕｎｉｔ  Ｏｆｆｓｅｔ  ＬＢＡは、データユニットのＲＡＩＤユニット内でのアドレスである。
【００２５】
実施例に係るストレージ装置は、ＲＡＩＤユニットの単位で論物メタを管理する。実施例に係るストレージ装置は、論物メタをＲＡＩＤユニット単位でメインメモリ上にバッファリングし、バッファに例えば７８６４３２エントリ溜まると、論物メタを追記型でＳＳＤ３ｄにまとめ書きする。このため、実施例に係るストレージ装置は、論物メタがある場所を示す情報をメタメタ方式で管理する。
【００２６】
図５は、実施例に係るメタメタ方式を説明するための図である。図５（ｄ）に示すように、（１）、（２）、（３）、・・・で表されるデータユニットは、ＲＡＩＤユニットの単位でＳＳＤ３ｄにまとめ書きされる。そして、図５（ｃ）に示すように、データユニットの位置を示す論物メタも、ＲＡＩＤユニットの単位でＳＳＤ３ｄにまとめ書きされる。
【００２７】
そして、実施例に係るストレージ装置は、図５（ａ）に示すように、論物メタの位置をＬＵＮ／ＬＢＡ毎にメタアドレスを用いてメインメモリ上で管理する。ただし、図５（ｂ）に示すように、メインメモリから溢れたメタアドレス情報は、外部キャッシュ（２次キャッシュ）される。ここで、外部キャッシュとは、ＳＳＤ３ｄでのキャッシュである。
【００２８】
図６は、メタアドレスのフォーマットを示す図である。図６に示すように、メタアドレスの大きさは８Ｂである。メタアドレスには、Ｓｔｏｒａｇｅ  Ｐｏｏｌ  Ｎｏと、ＲＡＩＤ  Ｕｎｉｔ  Ｏｆｆｓｅｔ  ＬＢＡと、ＲＡＩＤ  Ｕｎｉｔ  Ｎｏとが含まれる。メタアドレスは、論物データのＳＳＤ３ｄでの格納位置を示す物理アドレスである。
【００２９】
Ｓｔｏｒａｇｅ  Ｐｏｏｌ  Ｎｏは、論物メタを記憶するＲＡＩＤユニットが属するプール３ａを識別するための番号である。ＲＡＩＤ  Ｕｎｉｔ  Ｏｆｆｓｅｔ  ＬＢＡは、論物メタのＲＡＩＤユニット内のアドレスである。ＲＡＩＤ  Ｕｎｉｔ  Ｎｏは、論物メタを記憶するＲＡＩＤユニットを識別するための番号である。
【００３０】
５１２個のメタアドレスがメタアドレスページ（４ＫＢ）として管理され、メタアドレスページの単位でメインメモリ上にキャッシングされる。また、メタアドレス情報は、ＲＡＩＤユニットの単位で例えばＳＳＤ３ｄの先頭から記憶される。
【００３１】
図７は、ドライブグループ３ｃにおけるＲＡＩＤユニットの配置例を示す図である。図７に示すように、メタアドレスを記憶するＲＡＩＤユニットは、先頭に配置される。図７では、番号が「０」〜「１２」のＲＡＩＤユニットが、メタアドレスを記憶するＲＡＩＤユニットである。メタアドレスの更新があった場合は、メタアドレスを記憶するＲＡＩＤユニットは上書き保存される。
【００３２】
論物メタを記憶するＲＡＩＤユニット及びユーザデータユニットを記憶するＲＡＩＤユニットは、それぞれのバッファがいっぱいになると順番にドライブグループに書き出される。図７では、ドライブグループにおいて、番号が「１３」、「１７」、「２７」、「４０」、「５１」、「６３」及び「７０」のＲＡＩＤユニットが、論物メタを記憶するＲＡＩＤユニットであり、その他のＲＡＩＤユニットが、ユーザデータユニットを記憶するＲＡＩＤユニットである。
【００３３】
実施例に係るストレージ装置は、メタメタ方式によって最低限の情報をメインメモリに保持し、論物メタとデータユニットをＳＳＤ３ｄに追記及びまとめ書きすることでＳＳＤ３ｄへの書き込み回数を削減することができる。
【００３４】
次に、実施例に係る情報処理システムの構成について説明する。図８は、実施例に係る情報処理システムの構成を示す図である。図８に示すように、実施例に係る情報処理システム１は、ストレージ装置１ａとサーバ１ｂとを有する。ストレージ装置１ａは、サーバ１ｂが使用するデータを記憶する装置である。サーバ１ｂは、情報処理などの業務を行う情報処理装置である。ストレージ装置１ａとサーバ１ｂとの間は、ＦＣ（Fibre  Channel）及びｉＳＣＳＩ（Internet  Small  Computer  System  Interface）で接続される。
【００３５】
ストレージ装置１ａは、ストレージ装置１ａを制御するストレージ制御装置２とデータを記憶するストレージ（記憶装置）３とを有する。ここで、ストレージ３は、複数台の記憶装置（ＳＳＤ）３ｄの集まりである。
【００３６】
なお、図８では、ストレージ装置１ａは、ストレージ制御装置＃０及びストレージ制御装置＃１で表される２台のストレージ制御装置２を有するが、ストレージ装置１ａは、３台以上のストレージ制御装置２を有してよい。また、図８では、情報処理システム１は、１台のサーバ１ｂを有するが、情報処理システム１は、２台以上のサーバ１ｂを有してよい。
【００３７】
ストレージ制御装置２は、ストレージ３を分担して管理し、１つ以上のプール３ａを担当する。ストレージ制御装置２は、上位接続部２１と、Ｉ／Ｏ制御部２２と、重複管理部２３と、メタ管理部２４と、データ処理管理部２５と、デバイス管理部２６とを有する。
【００３８】
上位接続部２１は、ＦＣドライバ及びｉＳＣＳＩドライバとＩ／Ｏ制御部２２との間の情報の受け渡しを行う。Ｉ／Ｏ制御部２２は、キャッシュメモリ上のデータを管理する。重複管理部２３は、データ重複排除／復元の制御を行うことで、ストレージ装置１ａ内に格納されているユニークなデータを管理する。
【００３９】
メタ管理部２４は、メタアドレス及び論物メタを管理する。また、メタ管理部２４は、メタアドレス及び論物メタを用いて、仮想ボリュームにおけるデータの識別に用いる論理アドレスとＳＳＤ３ｄにおけるデータが記憶された位置を示す物理アドレスの変換処理を行う。
【００４０】
メタ管理部２４は、論物メタ管理部２４ａとメタアドレス管理部２４ｂとを有する。論物メタ管理部２４ａは、論理アドレスと物理アドレスとを対応付けるアドレス変換情報に関連する論物メタを管理する。論物メタ管理部２４ａは、論物メタのＳＳＤ３ｄへの書き込み、及び、論物メタのＳＳＤ３ｄからの読み出しをデータ処理管理部２５に依頼する。論物メタ管理部２４ａは、メタアドレスを用いて論物メタの記憶場所を特定する。
【００４１】
メタアドレス管理部２４ｂは、メタアドレスを管理する。メタアドレス管理部２４ｂは、メタアドレスの外部キャッシュ（２次キャッシュ）への書き込み、及び、外部キャッシュからのメタアドレスの読み出しをデバイス管理部２６に依頼する。
【００４２】
データ処理管理部２５は、ユーザデータを連続的なユーザデータユニットで管理し、ＲＡＩＤユニットの単位でＳＳＤ３ｄに追記及びまとめ書きを行う。また、データ処理管理部２５は、データの圧縮解凍、参照メタの生成を行う。ただし、データ処理管理部２５は、データが更新された場合に、古いデータに対応するユーザデータユニットに含まれる参照メタの更新を行うことなく、参照メタを維持する。
【００４３】
また、データ処理管理部２５は、論物メタをＲＡＩＤユニットの単位でＳＳＤ３ｄに追記及びまとめ書きを行う。論物メタの書き込みでは、１小ブロック（５１２Ｂ）に論物メタの１６エントリが追記書きされるため、データ処理管理部２５は、同一小ブロック内にＬＵＮとＬＢＡが同じものが存在しないように管理する。
【００４４】
データ処理管理部２５は、同一小ブロックにＬＵＮとＬＢＡが同じものが存在しないように管理することで、ＲＡＩＤユニット番号とＲＡＩＤユニット内ＬＢＡにより、ＬＵＮとＬＢＡを検索することができる。なお、データの消去単位である１ＭＢのブロックと区別するため、ここでは５１２Ｂのブロックを小ブロックと呼ぶ。
【００４５】
また、メタ管理部２４から論物メタの読み出しを要求されると、データ処理管理部２５は、メタ管理部２４に指定された小ブロックから対象のＬＵＮとＬＢＡを検索して応答する。
【００４６】
データ処理管理部２５は、メインメモリ上のバッファであるライトバッファにライトデータを溜め、一定の閾値を超えるとＳＳＤ３ｄに書き出す。データ処理管理部２５は、プール３ａの物理スペースを管理し、ＲＡＩＤユニットの配置を行う。デバイス管理部２６は、ＲＡＩＤユニットのストレージ３への書き込みを行う。
【００４７】
データ処理管理部２５は、プール３ａ単位でガベージコレクション（ＧＣ：Garbage  Collection）をポーリングする。図９は、プール３ａ単位でのＧＣポーリングを説明するための図である。図９では、プール＃０、プール＃１、プール＃２で表される３つのプール３ａに対して、それぞれ対応するＧＣポーリングであるＧＣポーリング＃１、ＧＣポーリング＃２、ＧＣポーリング＃３が行われる。また、図９では、各プール３ａはティア３ｂを１つ有する。各ティア３ｂは複数のドライブグループ３ｃを有し、各ドライブグループ３ｃは複数のＲＡＩＤユニットを有する。
【００４８】
データ処理管理部２５は、ユーザデータユニットと論物メタを対象としてＧＣを行う。データ処理管理部２５は、プール３ａ毎に例えば１００ｍｓ間隔でＧＣをポーリングする。また、データ処理管理部２５は、各ＲＡＩＤユニットに対してスレッドを生成することで、複数のＲＡＩＤユニットに対して並列にＧＣを行う。生成されるスレッドの数を以下では多重度と呼ぶ。ポーリング間隔は、ＧＣによるＩ／Ｏ性能への影響を最小限にするように決められる。多重度は、Ｉ／Ｏ性能への影響と領域枯渇とのバランスに基づいて決められる。
【００４９】
データ処理管理部２５は、ＲＡＩＤユニットのデータをリードバッファに読み込み、ユーザデータユニット又は論物メタ毎にデータが有効か否かをチェックして、有効なデータのみをライトバッファに追記書きし、ストレージ３にまとめ書きする。ここで、有効なデータとは使用中のデータであり、無効なデータとは使用されていないデータである。
【００５０】
図１０は、有効なデータの追記書きを説明するための図である。図１０では、ＲＡＩＤユニットは、ユーザデータユニット用のＲＡＩＤユニットである。図１０に示すように、データ処理管理部２５は、ＲＵ＃０で表されるＲＡＩＤユニットをリードバッファに読み込み、ユーザデータユニット毎にデータが有効か否かをチェックし、有効なデータのみをライトバッファに追記書きする。
【００５１】
データ処理管理部２５は、ＲＡＩＤユニットがユーザデータユニット用であるか論物メタ用であるかを、ＲＵ管理テーブルを用いて管理する。図１１（ａ）は、ＲＵ管理テーブルのフォーマットを示す。図１１（ａ）に示すように、ＲＵ管理テーブルでは、ＲＡＩＤユニット毎の情報が４ＢのＲＡＩＤ  Ｕｎｉｔ  Ｍａｎａｇｅｍｅｎｔ  Ｌｉｓｔとして管理される。
【００５２】
図１１（ｂ）は、ＲＡＩＤ  Ｕｎｉｔ  Ｍａｎａｇｅｍｅｎｔ  Ｌｉｓｔのフォーマットを示す。図１１（ｂ）に示すように、ＲＡＩＤ  Ｕｎｉｔ  Ｍａｎａｇｅｍｅｎｔ  Ｌｉｓｔには、１ＢのＵｓａｇｅ、１ＢのＳｔａｔｕｓ、１ＢのＮｏｄｅが含まれる。
【００５３】
Ｕｓａｇｅは、ＲＡＩＤユニットがユーザデータユニット用であるか論物メタ用であるかＧＣ管轄外であるかを示す。デフォルト値は「ＧＣ管轄外」であり、ＲＡＩＤユニットがユーザデータユニット用に獲得された時に、「ユーザデータユニット」が設定され、ＲＡＩＤユニットが論物メタ用に獲得された時に、「論物メタ」に設定される。また、ＲＡＩＤユニットが解放されると「ＧＣ管轄外」に設定される。
【００５４】
Ｓｔａｔｕｓは、ＲＡＩＤユニットの割り当て状態を示し、「未割当」、「割当済」、「書込み済」、「ＧＣ中」がある。デフォルト値は「未割当」である。「未割当」は、ＲＡＩＤユニットの解放時に設定される。「割当済」は、ＲＡＩＤユニットの獲得時に設定される。「書込み済」は、ＲＡＩＤユニットのライト時に設定される。「ＧＣ中」は、ＧＣ開始時に設定される。
【００５５】
Ｎｏｄｅは、ＲＡＩＤユニットを担当するストレージ制御装置２を識別するための番号である。Ｎｏｄｅは、ＲＡＩＤユニットの獲得時に設定される。
【００５６】
また、データ処理管理部２５は、他のストレージ制御装置２のデータ処理管理部２５と通信を行う。また、データ処理管理部２５は、ＲＡＩＤユニットに含まれるユーザデータユニットが有効であるか否かを参照メタを用いて判定することにより無効データ率を計算する。そして、データ処理管理部２５は、無効データ率が閾値（例えば５０％）以上のＲＡＩＤユニットに対してＧＣを行う。
【００５７】
図１２は、参照メタを用いたデータ有効性の判定方法を説明するための図である。図１２は、（１）、（２）、（３）、（４）で表されるデータがストレージ３に記憶された状態で、（２）で表されるデータが（５）で表されるデータで上書きされた場合を示す。また、（３）と（４）のユーザデータユニットは同じである。実線の太い矢印は、参照論理アドレスが指す先を示す。ここで、参照論理アドレスとは、参照メタに含まれる論理アドレスである。
【００５８】
図１２に示すように、（２）は（５）で上書きされて無効となっているが、データを無効化する無効化ライトが行われないため、かって（２）を参照していた参照論理アドレスの情報が（２）の参照メタに残されている。したがって、データ処理管理部２５は、全ての参照論理アドレスについて論物メタで対応付けられた物理アドレスが全て（２）の物理アドレスと異なれば（２）は無効であると判定できる。
【００５９】
図１２では、（２）のメタアドレスは（５）のメタアドレスで上書きされているため、（２）の参照論理アドレスに論物メタで対応付けられる物理アドレスは（５）のユーザデータユニットの物理アドレスであり、（２）のユーザデータユニットの物理アドレスと異なる。したがって、データ処理管理部２５は、（２）を無効であると判定する。
【００６０】
図１３は、機能部間の関係を示す図である。図１３に示すように、重複管理部２３とメタ管理部２４との間では、論物メタの取得と更新が行われる。重複管理部２３とデータ処理管理部２５との間では、ユーザデータユニットのライトバック（writeback）とステージング（staging）が行われる。ここで、ライトバックとは、ストレージ３へのデータの書き込みであり、ステージングとは、ストレージ３からのデータの読み出しである。
【００６１】
メタ管理部２４とデータ処理管理部２５との間では、論物メタのライト（Write）とリード（Read）、ユーザデータユニット及び論物メタが有効か無効かの判定が行われる。データ処理管理部２５とデバイス管理部２６との間では、追記データのストレージリードとストレージライトが行われる。メタ管理部２４とデバイス管理部２６との間では、外部キャッシュのストレージリードとストレージライトが行われる。デバイス管理部２６とストレージ３との間では、ストレージリードとストレージライトが行われる。
【００６２】
次に、ＧＣポーリングのフローについて説明する。図１４は、ＧＣポーリングのフローを示すフローチャートである。図１４に示すように、データ処理管理部２５は、初期化（ステップＳ１）の後、１つのプール３ａのティア３ｂ毎、ＤＧ（ドライブグループ）３ｃ毎、ＲＵ（ＲＡＩＤユニット）毎にＧＣパトロールを起動する（ステップＳ２）ことで、ポーリングを繰り返す。
【００６３】
データ処理管理部２５は、ユーザデータユニット用のＲＡＩＤユニットについては、多重度の数のパトロールスレッドを生成して並列にＧＣの処理を行う。一方、論物メタ用のＲＡＩＤユニットについては、データ処理管理部２５は、１つのパトロールスレッドを生成してＧＣの処理を行う。なお、データ処理管理部２５は、ユーザデータユニット用のＲＡＩＤユニットに対するパトロールスレッドと論物メタ用のＲＡＩＤユニットに対するパトロールスレッドが同時に動作しないように排他制御する。
【００６４】
そして、データ処理管理部２５は、全ティア３ｂに対する処理を終了すると、ポーリング間隔が１００ｍｓとなるようにＧＣをスリープする（ステップＳ３）。なお、図１４の処理は、各プール３ａについて行われる。
【００６５】
パトロールスレッドは、ＲＡＩＤユニットの無効データ率を計算し、無効データ率が閾値以上のＲＡＩＤユニットについてＧＣ処理を行う。ここで、ＧＣ処理とは、ＲＡＩＤユニットをリードバッファに読み込んで有効データだけをライトバッファに書き込む等の処理である。
【００６６】
次に、無効データ率を算出する処理のシーケンスについて説明する。図１５は、無効データ率を算出する処理のシーケンスを示す図である。なお、図１５において、ノードは、ストレージ制御装置２である。また、リソース部３０は、上位接続部２１とＩ／Ｏ制御部２２の間に位置し、ＳＳＤ３ｄのノードへの割り当て等を行う。
【００６７】
図１５に示すように、データ処理管理部２５は、リードバッファを獲得する（ステップｔ１）。そして、データ処理管理部２５は、ＲＵ（ＲＡＩＤユニット）のリードをデバイス管理部２６に依頼し（ステップｔ２）、応答としてＲＵを受け取る（ステップｔ３）。そして、データ処理管理部２５は、ユーザデータユニットを１つ選択し、選択したユーザデータユニットの参照メタに含まれる参照ＬＵＮ／ＬＢＡ情報を指定してリソース部３０に担当ノードの取得を依頼し（ステップｔ４）、応答として担当ノードを取る（ステップｔ５）。
【００６８】
そして、データ処理管理部２５は、担当ノードが自ノードの場合、Ｉ／Ｏ排他ロックの取得をメタ管理部２４に依頼し（ステップｔ６）、応答を受け取る（ステップｔ７）。そして、データ処理管理部２５は、ユーザデータユニットの有効チェックをメタ管理部２４に依頼し（ステップｔ８）、チェック結果を受け取る（ステップｔ９）。
【００６９】
一方、担当ノードが自ノードでない場合、データ処理管理部２５は、担当ノードに対してノード間通信によりＩ／Ｏ排他ロックの取得を依頼し（ステップｔ１０）、担当ノードのデータ処理管理部２５が担当ノードのメタ管理部２４にＩ／Ｏ排他ロックの取得を依頼する（ステップｔ１１）。そして、担当ノードのメタ管理部２４が応答し（ステップｔ１２）、担当ノードのデータ処理管理部２５が依頼元のノードに応答する（ステップｔ１３）。
【００７０】
そして、データ処理管理部２５は、担当ノードに対してノード間通信によりユーザデータユニットの有効チェックを依頼し（ステップｔ１４）、担当ノードのデータ処理管理部２５が担当ノードのメタ管理部２４にユーザデータユニットの有効チェックを依頼する（ステップｔ１５）。そして、担当ノードのメタ管理部２４が応答し（ステップｔ１６）、担当ノードのデータ処理管理部２５が依頼元のノードに応答する（ステップｔ１７）。
【００７１】
そして、データ処理管理部２５は、担当ノードが自ノードの場合、メタ管理部２４にＩ／Ｏ排他ロックの解放を依頼し（ステップｔ１８）、メタ管理部２４から応答を受け取る（ステップｔ１９）。一方、担当ノードが自ノードでない場合、データ処理管理部２５は、担当ノードに対してノード間通信によりＩ／Ｏ排他ロックの解放を依頼し（ステップｔ２０）、担当ノードのデータ処理管理部２５が担当ノードのメタ管理部２４にＩ／Ｏ排他ロックの解放を依頼する（ステップｔ２１）。そして、担当ノードのメタ管理部２４が応答し（ステップｔ２２）、担当ノードのデータ処理管理部２５が依頼元のノードに応答する（ステップｔ２３）。
【００７２】
データ処理管理部２５は、ステップｔ４〜ステップｔ２３の処理を参照メタのエントリ数分繰り返す。そして、データ処理管理部２５は、無効データ率を更新する（ステップｔ２４）。なお、１つのユーザデータユニットについて、参照メタに含まれる参照ＬＵＮ／ＬＢＡ情報が全て無効である場合にユーザデータユニットは無効であり、参照メタに含まれる参照ＬＵＮ／ＬＢＡ情報のうち１つでも有効である場合には、ユーザデータユニットは有効である。そして、データ処理管理部２５は、ステップｔ４〜ステップｔ２４の処理を５４６１回繰り返す。
【００７３】
このように、データ処理管理部２５は、参照メタに含まれる全ての論理アドレスについてメタ管理部２４にユーザデータユニットの有効チェックを依頼することで、各ユーザデータユニットの有効性を判定することができる。
【００７４】
次に、ユーザデータユニットの有効チェック処理のフローについて説明する。図１６は、ユーザデータユニットの有効チェック処理のフローを示すフローチャートである。なお、論物メタの情報の一部は、メインメモリ上にキャッシュされている。図１６に示すように、データ処理管理部２５は、ステップＳ１１〜ステップＳ１７の処理を参照メタのエントリ分繰り返す。
【００７５】
すなわち、データ処理管理部２５は、ユーザデータユニットの参照ＬＵＮ／ＬＢＡ情報からキャッシュ上の論物メタを検索し、論物メタがあるか否かを判定する（ステップＳ１１）。そして、データ処理管理部２５は、論物メタがある場合には、ステップＳ１５に進む。
【００７６】
一方、キャッシュ上に論物メタがない場合には、データ処理管理部２５は、参照ＬＵＮ／ＬＢＡ情報に参照論理アドレスからメタアドレスを取得し（ステップＳ１２）、メタアドレスは有効か否かを判定する（ステップＳ１３）。そして、メタアドレスが有効でない場合には、データ処理管理部２５は、ステップＳ１７に進む。
【００７７】
一方、メタアドレスが有効である場合には、データ処理管理部２５は、メタアドレスから論物メタを取得し（ステップＳ１４）、論物メタに含まれる物理アドレスとユーザデータユニットの物理アドレスが同一であるか否かを判定する（ステップＳ１５）。
【００７８】
そして、データ処理管理部２５は、論物メタに含まれる物理アドレスとユーザデータユニットの物理アドレスが同一である場合には、有効と判定し（ステップＳ１６）、同一でない場合には、無効と判定する（ステップＳ１７）。なお、データ処理管理部２５は、参照メタのエントリ分の全ての参照論理アドレスについて無効と判定した場合に、ユーザデータユニットを無効と判定し、参照論理アドレスのうち１つでも有効と判定した場合には、ユーザデータユニットを有効と判定する。
【００７９】
このように、データ処理管理部２５は、参照論理アドレスを用いてユーザデータユニットの有効チェックを行うことで、ユーザデータユニットの有効チェックの処理負荷を低減することができる。
【００８０】
次に、論物メタの有効チェック処理のフローについて説明する。図１７は、論物メタの有効チェック処理のフローを示すフローチャートである。図１７に示すように、データ処理管理部２５は、論物メタに含まれるＬＵＮとＬＢＡに対応するメタアドレスを取得し（ステップＳ２１）、有効なメタアドレスを取得したか否かを判定する（ステップＳ２２）。
【００８１】
そして、有効なメタアドレスを取得した場合には、データ処理管理部２５は、メタアドレスと論物メタの物理アドレスが一致するか否かを判定する（ステップＳ２３）。そして、データ処理管理部２５は、両者が一致する場合には、論物メタを有効と判定する（ステップＳ２４）。
【００８２】
一方、両者が一致しない場合、あるいは、ステップＳ２２において有効なメタアドレスを取得しなかった場合には、データ処理管理部２５は、論物メタを無効と判定する（ステップＳ２５）。
【００８３】
このように、データ処理管理部２５は、メタアドレスを用いて論物データの有効チェックを行うことで、無効になった論物メタを特定することができる。
【００８４】
上述してきたように、実施例では、論物メタ管理部２４ａが、データの論理アドレスと物理アドレスを対応付ける論物メタの情報を管理する。そして、データ処理管理部２５が、ユーザデータユニットをストレージ３に追記及びまとめ書きを行うとともに、データが更新された場合に更新前データを含むユーザデータユニットの参照論理アドレスを無効化することなく保持する。したがって、ストレージ制御装置２は、参照論理アドレスを用いてユーザデータユニットの有効チェック処理の負荷を低減することができる。
【００８５】
また、実施例では、データ処理管理部２５は、ユーザデータユニットに含まれる参照論理アドレスに論物メタにより対応付けられた物理アドレスとユーザデータユニットの物理アドレスが一致するか否かを判定する。そして、データ処理管理部２５は、両者が一致する場合には、ユーザデータユニットは有効であると判定し、一致しない場合には、ユーザデータユニットは無効であると判定する。したがって、ストレージ制御装置２は、参照論理アドレスを用いてユーザデータユニットの有効チェックを行うことができる。
【００８６】
また、実施例では、メタアドレス管理部２４ｂが、メタアドレスを管理する。そして、データ処理管理部２５は、論物メタの物理アドレスと、論物メタに含まれる論理アドレスに対応付けられたメタアドレスが一致するか否かを判定する。そして、データ処理管理部２５は、両者が一致する場合には、論物メタを有効であると判定し、一致しない場合には、論物メタを無効であると判定する。したがって、ストレージ制御装置２は、論物メタについても有効であるか否かを判定することができる。
【００８７】
また、実施例では、論物メタに含まれる論理アドレスに対応付けられるメタアドレスがない場合には、論物メタを無効であると判定する。したがって、ストレージ制御装置２は、削除されたデータに関する論物メタを無効と判定することができる。
【００８８】
また、実施例では、データ処理管理部２５は、ユーザデータユニットについて自装置が担当するユーザデータユニットであるか否かを判定し、自装置が担当するユーザデータユニットでない場合には、該ユーザデータユニットを担当するストレージ制御装置にユーザデータユニットの有効チェックを依頼する。したがって、ストレージ制御装置２は、担当外のユーザデータユニットについても有効チェックを行うことができる。
【００８９】
なお、実施例では、ストレージ制御装置２について説明したが、ストレージ制御装置２が有する構成をソフトウェアによって実現することで、同様の機能を有するストレージ制御プログラムを得ることができる。そこで、ストレージ制御プログラムを実行するストレージ制御装置２のハードウェア構成について説明する。
【００９０】
図１８は、実施例に係るストレージ制御プログラムを実行するストレージ制御装置２のハードウェア構成を示す図である。図１８に示すように、ストレージ制御装置２は、メモリ４１と、プロセッサ４２と、ホストＩ／Ｆ４３と、通信Ｉ／Ｆ４４と、接続Ｉ／Ｆ４５とを有する。
【００９１】
メモリ４１は、プログラムやプログラムの実行途中結果などを記憶するＲＡＭ（Random  Access  Memory）である。プロセッサ４２は、メモリ４１からプログラムを読み出して実行する処理装置である。
【００９２】
ホストＩ／Ｆ４３は、サーバ１ｂとのインタフェースである。通信Ｉ／Ｆ４４は、他のストレージ制御装置２と通信するためのインタフェースである。接続Ｉ／Ｆ４５は、ストレージ３とのインタフェースである。
【００９３】
そして、プロセッサ４２において実行されるストレージ制御プログラムは、可搬記録媒体５１に記憶され、メモリ４１に読み込まれる。あるいは、ストレージ制御プログラムは、通信インタフェース４４を介して接続されたコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてメモリ４１に読み込まれる。
【００９４】
また、実施例では、ＳＳＤ３ｄを不揮発性記憶媒体として用いる場合について説明したが、本発明はこれに限定されるものではなく、ＳＳＤ３ｄと同様なデバイス特性を有する他の不揮発性記憶媒体を用いる場合にも同様に適用することができる。
【符号の説明】
【００９５】
１    情報処理システム
１ａ    ストレージ装置
１ｂ    サーバ
２    ストレージ制御装置
３    ストレージ
３ａ    プール
３ｂ    ティア
３ｃ    ドライブグループ
３ｄ    ＳＳＤ
２１    上位接続部
２２    Ｉ／Ｏ制御部
２３    重複管理部
２４    メタ管理部
２４ａ    論物メタ管理部
２４ｂ    メタアドレス管理部
２５    データ処理管理部
２６    デバイス管理部
３０    リソース部
４１    メモリ
４２    プロセッサ
４３    ホストＩ／Ｆ
４４    通信Ｉ／Ｆ
４５    接続Ｉ／Ｆ
５１    可搬記録媒体
【図１】
2018181207.tif 000003
【図２】
2018181207.tif 000004
【図３】
2018181207.tif 000005
【図４】
2018181207.tif 000006
【図５】
2018181207.tif 000007
【図６】
2018181207.tif 000008
【図７】
2018181207.tif 000009
【図８】
2018181207.tif 000010
【図９】
2018181207.tif 000011
【図１０】
2018181207.tif 000012
【図１１】
2018181207.tif 000013
【図１２】
2018181207.tif 000014
【図１３】
2018181207.tif 000015
【図１４】
2018181207.tif 000016
【図１５】
2018181207.tif 000017
【図１６】
2018181207.tif 000018
【図１７】
2018181207.tif 000019
【図１８】
2018181207.tif 000020