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