(57)【要約】【課題】レスポンス遅延リスクを低減すること。【解決手段】複数のストレージグループ２１、２２を構成する複数のストレージデバイスを制御するストレージ制御装置１０であって、複数のストレージデバイスのうち、ガベージコレクションの対象領域を有する第１のストレージデバイスを検出し、複数のストレージデバイスのうち、第１のストレージデバイスが属する第１のストレージグループを特定し、特定された第１のストレージグループに属するストレージデバイスへのライトアクセスを抑止し、第１のストレージデバイスに対してガベージコレクションの実行指示を行う制御部１１を有する、ストレージ制御装置１０が提供される。【選択図】図１
2019074897.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージグループを構成する複数のストレージデバイスを制御するストレージ制御装置であって、
前記複数のストレージデバイスのうち、ガベージコレクションの対象領域を有する第１のストレージデバイスを検出し、
前記複数のストレージグループのうち、前記第１のストレージデバイスが属する第１のストレージグループを特定し、
特定された前記第１のストレージグループに属するストレージデバイスへのライトアクセスを抑止し、
前記第１のストレージデバイスに対して前記ガベージコレクションの実行指示を行う制御部を有する、ストレージ制御装置。
【請求項２】
前記制御部は、前記ガベージコレクションの実行中に要求された前記第１のストレージグループに対するライトアクセスのデータの退避先を、前記第１のストレージグループと異なる第２のストレージグループ内の記憶領域から確保する
請求項１に記載のストレージ制御装置。
【請求項３】
前記制御部は、前記ガベージコレクションの実行中に前記第１のストレージデバイスに対するリードアクセスの要求を受け付けたとき、前記リードアクセスの対象となるデータが前記退避先の記憶領域にある場合、前記退避先の記憶領域から読み出した前記データを用いて前記要求に対する応答を行う
請求項２に記載のストレージ制御装置。
【請求項４】
前記制御部は、前記ガベージコレクションの実行中に前記第１のストレージデバイスに対するリードアクセスの要求を受け付けたとき、前記リードアクセスの対象となるデータが前記退避先の記憶領域にない場合、前記第１のストレージグループに属する少なくとも１つの第２のストレージデバイスから読み出した冗長化データを用いて前記要求に対する応答を行う
請求項３に記載のストレージ制御装置。
【請求項５】
前記制御部は、前記ガベージコレクションの完了後、前記退避先の記憶領域にあるデータを前記第１のストレージグループの前記ライトアクセス先の記憶領域に書き戻す
請求項２に記載のストレージ制御装置。
【請求項６】
複数のストレージグループを構成する複数のストレージデバイスを制御するコンピュータに、
前記複数のストレージデバイスのうち、ガベージコレクションの対象領域を有する対象ストレージデバイスを検出し、
前記複数のストレージグループのうち、ガベージコレクションの対象領域を有する対象ストレージデバイスが属する対象ストレージグループを特定し、
特定された前記対象ストレージグループに属するストレージデバイスへのライトアクセスを抑止し、
前記対象ストレージデバイスに対して前記ガベージコレクションの実行指示を行う
処理を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、及びプログラムに関する。
【背景技術】
【０００２】
近年、ＨＤＤ（Hard Disk Drive）に比べて読み書き性能の高いＳＳＤ（Solid State Drive）を採用したストレージシステムが広く利用されるようになってきている。ＳＳＤには、記憶素子としてＮＡＮＤフラッシュメモリが搭載されている。ＮＡＮＤフラッシュメモリは、不揮発性記憶素子の一種であり、データの上書きが行えないという性質がある。
【０００３】
ＮＡＮＤフラッシュメモリへの書き込みはページ単位で行われ、消去は複数のページで構成されるブロック単位で行われる。ＮＡＮＤフラッシュメモリのページサイズは、ＮＡＮＤフラッシュメモリの設計に依存するが、例えば、４ＫＢや８ＫＢなどに設定される。
【０００４】
上記のように、ＳＳＤではデータを消去しなければ書き込みを行うことができないため、データを書き換える場合には書き込むデータを空きページに書き込み、旧データがあるページは無効ページにされる。
【０００５】
空きページに余裕がなくなると、無効ページを消去して空きページを作成する必要が出てくる。上記のように、消去はブロック単位で行われるため、無効ページを消去するとき、同じブロックにある有効ページのデータを読み出してキャッシュメモリに退避させ、ブロックの消去後に有効ページのデータを書き戻す処理が発生する。
【０００６】
上記の性質から、ブロック単位で空き領域を確保できれば処理が効率化されるため、ＳＳＤでは、有効データをできるだけブロックに集約する処理（ガベージコレクション：ＧＣ）が行われる。
【０００７】
消去処理済みの予備ブロックに余裕がある状況では、予備ブロックを消費して書き込みを行い、バックエンド処理でブロックの消去を行うことで、予備ブロックの生成が書き込み性能に及ぼす影響を小さくすることができる。しかし、予備ブロックが枯渇すると、書き込み時に、有効ページのデータを退避させて空きブロックを作成する処理が必要になり、書き込み時のレスポンス遅延に繋がる。
【０００８】
なお、予備ブロックの枯渇は、例えば、サイズの小さいデータのランダムアクセスが頻発するような状況で発生しやすい。
ところで、上記のＧＣはＳＳＤが自律的に行う処理である。しかし、最近では、ＧＣなどの内部処理について実行タイミングをホストコンピュータやＲＡＩＤ（Redundant Arrays of Inexpensive Disks）コントローラから制御できるようにするＳＩ（Storage Intelligence）と呼ばれる技術が提案されている。ＳＩでは、ＧＣの実行命令、ＧＣの動作時間や作成する予備ブロックの容量などを指定する命令が規定されている。
【０００９】
なお、ＳＳＤにおけるＧＣの制御に関し、ＳＳＤ単位でＧＣを制御する方法が提案されている。この方法では、ＧＣの実行中にライトアクセスが抑止される単位を１つのＳＳＤ全体にしている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開2016-192025号公報
【特許文献２】特開2016-162397号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ストレージシステムには、ＲＡＩＤグループが設定される。例えば、ストレージシステムでは、ＲＡＩＤ１、５、６などの冗長構成としたＲＡＩＤグループが設定される。なお、ＲＡＩＤ１はミラーリング、ＲＡＩＤ５、６はブロック単位でのパリティ分散記録などと呼ばれる。冗長構成を有するＲＡＩＤグループでは、ＲＡＩＤグループを形成する複数の記録媒体に対してアクセスパターンが近似する傾向にある。
【００１２】
ＳＳＤで冗長構成のＲＡＩＤグループを組む場合、同じＲＡＩＤグループ内にある複数のＳＳＤに対してアクセスパターンが近似する。そのため、１つのＳＳＤで予備ブロックが枯渇した状態になっているとき、他のＳＳＤでも同じ状態になっている可能性が高い。
【００１３】
上述した提案方式の場合、ＳＳＤ単位でライトアクセスの抑止が行われるため、予備ブロックが枯渇しそうなＳＳＤが同じＲＡＩＤグループ内に複数存在しても、１つのＳＳＤでしかライトアクセスの抑止が行われない。そのため、予備ブロックが枯渇している、或いは、枯渇しそうな他のＳＳＤに対してライトアクセスが行われるリスクがある。この他のＳＳＤにライトアクセスがあると上記の消去処理が生じてレスポンスが遅延する。
【００１４】
１つの側面によれば、本発明の目的は、レスポンス遅延リスクを低減できるストレージ制御装置、及びプログラムを提供することにある。なお、ＳＳＤはストレージデバイスの一例である。また、ＲＡＩＤグループはストレージグループの一例である。
【課題を解決するための手段】
【００１５】
一態様によれば、複数のストレージデバイスでそれぞれ冗長化された複数のストレージグループを割り当て可能なストレージ装置を制御するストレージ制御装置が提供される。該ストレージ制御装置は、複数のストレージグループのうち、ガベージコレクションの対象領域を有する第１のストレージデバイスが属する第１のストレージグループへのライトアクセスを抑止し、第１のストレージデバイスに対してガベージコレクションの実行指示を行う制御部を有する。
【発明の効果】
【００１６】
レスポンス遅延リスクを低減できる。
【図面の簡単な説明】
【００１７】
【図１】第１実施形態に係るストレージシステムの一例を示した図である。
【図２】第２実施形態に係るストレージシステムの一例を示した図である。
【図３】ストレージ制御装置の機能の一例を示した図である。
【図４】ＧＣ対象テーブルの一例を示した図表である。
【図５】退避先情報テーブルの一例を示した図表である。
【図６】ＲＡＩＤグループ管理テーブルの一例を示した図表である。
【図７】ＧＣ対象ＲＡＩＤグループの検出に関する処理の流れを示したフロー図である。
【図８】規定値の設定に関する処理の流れを示したフロー図である。
【図９】ＧＣの実行に関する処理の流れを示した第１のフロー図である。
【図１０】ＧＣの実行に関する処理の流れを示した第２のフロー図である。
【図１１】ＧＣの実行に関する処理の流れを示した第３のフロー図である。
【図１２】ライトアクセスの要求に応じた処理の流れを示した第１のフロー図である。
【図１３】ライトアクセスの要求に応じた処理の流れを示した第２のフロー図である。
【図１４】リードアクセスの要求に応じた処理の流れを示した第１のフロー図である。
【図１５】リードアクセスの要求に応じた処理の流れを示した第２のフロー図である。
【図１６】書き戻しの処理の流れを示したフロー図である。
【発明を実施するための形態】
【００１８】
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
【００１９】
＜１．第１実施形態＞
図１を参照しながら、第１実施形態について説明する。第１実施形態は、複数のストレージデバイスで冗長構成にしたストレージグループに対するＧＣの制御に関する。図１は、第１実施形態に係るストレージシステムの一例を示した図である。なお、図１に示したストレージシステム５は、第１実施形態に係るストレージシステムの一例である。
【００２０】
図１に示すように、ストレージシステム５は、ストレージ制御装置１０、ストレージ装置２０、及びホストコンピュータ３０を有する。なお、ストレージ制御装置１０及びストレージ装置２０を一体として含む装置をストレージ装置と称してもよい。
【００２１】
ストレージ制御装置１０は、制御部１１及び記憶部１２を有する。
制御部１１は、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などのプロセッサである。記憶部１２は、ＲＡＭ（Random Access Memory）、ＨＤＤ、ＳＳＤ、フラッシュメモリなどの記憶装置である。
【００２２】
記憶部１２には、ストレージ制御装置１０の動作を制御するプログラムが格納される。制御部１１は、記憶部１２に格納されたプログラムを読み出して処理を実行する。
上記のプログラムは、コンピュータで読み取り可能な記録媒体１３に記録しておくことができる。記録媒体１３としては、磁気記憶装置、光ディスク、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Re-Writable）などがある。
【００２３】
また、上記のプログラムを流通させる場合には、例えば、そのプログラムが記録されたＣＤ−ＲＯＭなどの可搬型記録媒体（記録媒体１３）が販売される。また、上記のプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。ストレージ制御装置１０は、記録媒体１３、サーバコンピュータ、他のコンピュータから上記のプログラムを取得して記憶部１２に格納しうる。
【００２４】
ストレージ制御装置１０は、複数のストレージグループ２１、２２を構成する複数のストレージデバイスａ１、ａ２、ａ３、ａ４を制御する。ストレージグループ２１は、ストレージデバイスａ１、ａ２、ａ３、ａ４により冗長化されている。ストレージグループ２２は、ストレージデバイスｂ１、ｂ２、ｂ３、ｂ４により冗長化されている。
【００２５】
なお、ＲＡＩＤグループは、ストレージグループ２１、２２の一例である。また、ＳＳＤは、ストレージデバイスａ１、ａ２、ａ３、ａ４、ｂ１、ｂ２、ｂ３、ｂ４の一例である。なお、ＮＡＮＤフラッシュメモリ又はＮＡＮＤフラッシュメモリと同様の書き換え特性（上書きが行えない性質）を有する記憶素子を搭載した半導体デバイスも、ストレージデバイスａ１、ａ２、ａ３、ａ４、ｂ１、ｂ２、ｂ３、ｂ４の一例である。
【００２６】
制御部１１は、ストレージデバイスａ１、ａ２、ａ３、ａ４、ｂ１、ｂ２、ｂ３、ｂ４のうち、ＧＣの対象領域を含む第１のストレージデバイスを検出する。また、制御部１１は、ストレージグループ２１、２２のうち、第１のストレージデバイスが属する第１のストレージグループを特定する。
【００２７】
例えば、制御部１１は、予備ブロックの量などに基づいてＧＣの対象領域を含むストレージデバイスを検出する。一例として、ストレージデバイスａ３の予備ブロックが規定値より少ない場合、制御部１１は、ストレージデバイスａ３を第１のストレージデバイスとして検出する。そして、制御部１１は、ストレージデバイスａ３が属するストレージグループ２１を第１のストレージグループとして特定する。
【００２８】
また、制御部１１は、特定した第１のストレージグループに属するストレージデバイスへのライトアクセスを抑止する。そして、制御部１１は、第１のストレージデバイスに対してＧＣの実行指示を行う。
【００２９】
例えば、上記の例では、ストレージグループ２１に属するストレージデバイスａ１、ａ２、ａ３、ａ４へのライトアクセスが抑止され、ストレージデバイスａ３に対してＧＣの実行指示が行われる。
【００３０】
ストレージグループ２１は冗長構成であるため、ストレージデバイスａ３がＧＣ対象として検出された時点で、ストレージデバイスａ１、ａ２、ａ４の少なくとも１つで予備ブロックの量が少なくなっている可能性が高い。
【００３１】
例えば、ストレージデバイスａ１の予備ブロックが少ない場合、ストレージデバイスａ１にライトアクセスがあると、予備ブロックが枯渇してレスポンスの遅延が発生するリスクがある。
【００３２】
しかし、第１実施形態では、ストレージデバイスａ３がＧＣ対象として検出されると、ストレージグループ２１に属するストレージデバイスａ１、ａ２、ａ３、ａ４へのライトアクセスが抑止される。そのため、上記のようなレスポンスの遅延リスクが回避される。
【００３３】
なお、ストレージデバイスａ３におけるＧＣの実行中に、ホストコンピュータ３０からストレージグループ２１に対するライトアクセスの要求を受けた場合、制御部１１は、ストレージグループ２２に退避領域を確保し、その要求に応じたデータの書き込みを退避領域に対して行ってもよい。
【００３４】
以上、第１実施形態について説明した。
＜２．第２実施形態＞
次に、第２実施形態について説明する。第２実施形態は、複数のストレージデバイスで冗長構成にしたストレージグループに対するＧＣの制御に関する。
【００３５】
［２−１．システム］
図２を参照しながら、ストレージシステム１００について説明する。図２は、第２実施形態に係るストレージシステムの一例を示した図である。なお、図２に示したストレージシステム１００は、第２実施形態に係るストレージシステムの一例である。
【００３６】
図２に示すように、ストレージシステム１００は、ホスト装置１０１、及びストレージ装置１０２を有する。
ホスト装置１０１は、例えば、サーバ装置やＰＣ（Personal Computer）などのホストコンピュータである。ホスト装置１０１は、ストレージ装置１０２に対するライトアクセスやリードアクセスの要求を発行する。
【００３７】
ストレージ装置１０２は、ＣＭ（Controller Module）１２１、１２２、及び記憶部１２３を有する。なお、ＣＭ１２１、１２２はストレージ制御装置の一例である。ストレージ装置１０２に搭載されるＣＭの数は２以外でもよい。以下では、ＣＭ１２１、１２２が実質的に同じハードウェア及び機能を有するとしてＣＭ１２１について説明を行い、ＣＭ１２２については詳細な説明を省略する。
【００３８】
ＣＭ１２１は、複数のＣＡ（Channel Adapter）、複数のＩ／Ｆ（Interface）、プロセッサ１２１ａ、及びメモリ１２１ｂを有する。
ＣＡは、ホスト装置１０１との間の接続制御を実施するアダプタ回路である。例えば、ＣＡは、ＦＣ（Fibre-Channel）などの通信回線を介して、ホスト装置１０１に搭載されるＨＢＡ（Host Bus Adapter）や、ＣＡとホスト装置１０１との間に設置されるスイッチに接続される。Ｉ／Ｆは、ＳＡＳ（Serial Attached SCSI(Small Computer System Interface)）やＳＡＴＡ（Serial ATA(Advanced Technology Attachment)）などの回線を介して記憶部１２３と接続するためのインターフェースである。
【００３９】
プロセッサ１２１ａは、例えば、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどである。メモリ１２１ｂは、例えば、ＲＡＭ、ＨＤＤ、ＳＳＤ、フラッシュメモリなどである。なお、図２の例ではＣＭ１２１の内部にメモリ１２１ｂが搭載されているが、ＣＭ１２１の外部に接続された記憶装置をメモリ１２１ｂの一部として利用してもよい。
【００４０】
記憶部１２３は、複数のＳＳＤ（＃１、…、＃ｎ；ｎ≧２）を有する。記憶部１２３には、複数のＳＳＤを組み合わせて冗長化した複数のＲＡＩＤグループを設定できる。ＲＡＩＤ装置は記憶部１２３の一例である。以下では、記憶部１２３のＳＳＤを用いて複数のＲＡＩＤグループが設定されているとして説明を進める。なお、ＲＡＩＤグループをＲＡＩＤＧと略記する場合がある。
【００４１】
上記のＲＡＩＤＧのＲＡＩＤレベルは、例えば、冗長構成（耐障害性のある構成）を有するＲＡＩＤ１、５、６などに設定される。ＲＡＩＤ１は、同じデータを複数の記録媒体（この例ではＳＳＤ）に書き込むミラーリングである。ＲＡＩＤ５は、パリティデータを複数の記録媒体（この例ではＳＳＤ）に分散記録することで冗長性を確保する方式である。なお、ＲＡＩＤ６は、ＲＡＩＤ５と同様にパリティデータを利用して冗長性を確保する方式であるが、異なる算出方法でパリティデータを生成して多重化する方式である。
【００４２】
なお、第２実施形態に係る技術の適用範囲はＲＡＩＤ１、５、６に限定されない。但し、冗長構成を有するＲＡＩＤＧにおいて複数のＳＳＤへのアクセスパターンが近似し、その結果として同じＲＡＩＤＧ内の複数のＳＳＤがＧＣ対象となるケースにおいて、第２実施形態に係る技術はレスポンス遅延リスクの低減に寄与する。このことから、第２実施形態に係る技術は冗長構成のＲＡＩＤＧに適用されることが好ましい。
【００４３】
［２−２．ストレージ制御装置の機能］
ここで、図３を参照しながら、ストレージ制御装置１２１の機能について説明する。図３は、ストレージ制御装置の機能の一例を示した図である。
【００４４】
図３に示すように、ストレージ制御装置１２１は、記憶部２１１、ＲＡＩＤＧ管理部２１２、ＧＣ対象検出部２１３、ＧＣ実行制御部２１４、ＧＣ中書き込み部２１５、書き戻し部２１６、及びＧＣ中読み出し部２１７を有する。
【００４５】
なお、記憶部２１１の機能は、上述したメモリ１２１ｂにより実現できる。ＲＡＩＤＧ管理部２１２、ＧＣ対象検出部２１３、ＧＣ実行制御部２１４、ＧＣ中書き込み部２１５、書き戻し部２１６、及びＧＣ中読み出し部２１７の機能は、上述したプロセッサ１２１ａにより実現できる。
【００４６】
記憶部２１１には、ＧＣ対象テーブル２１１ａ、退避先情報テーブル２１１ｂ、ＲＡＩＤＧ管理テーブル２１１ｃ、及びアクセス管理ビットマップ２１１ｄが格納される。なお、表記の都合上、テーブルをＴＢＬ、ビットマップをＢＭと記載する場合がある。
【００４７】
（ＧＣ対象テーブル２１１ａ）
ＧＣ対象テーブル２１１ａには、ＧＣの対象となるＲＡＩＤＧ（ＧＣ対象ＲＡＩＤＧ）及びＧＣの対象となるＳＳＤ（ＧＣ対象ＳＳＤ）に関する情報が記載される。例えば、ＧＣ対象テーブル２１１ａは、図４に示すような内容を有する。図４は、ＧＣ対象テーブルの一例を示した図表である。
【００４８】
ＧＣ対象テーブル２１１ａには、ＧＣ対象ＴＢＬ番号、ＲＡＩＤＧ番号、ＲＡＩＤＧ状態、アクセス管理ＢＭアドレス、退避先ＴＢＬ番号、ＧＣ対象ＳＳＤ、ＳＳＤ状態の項目が含まれる。ＧＣ対象ＴＢＬ番号は、ＧＣ対象テーブル２１１ａ内の各レコードを識別するための識別情報である。ＲＡＩＤＧ番号は、各ＲＡＩＤＧを識別するための識別情報である。なお、ＧＣ対象テーブル２１１ａに記載されるＲＡＩＤＧ番号は、ＧＣ対象ＲＡＩＤＧのＲＡＩＤＧ番号である。
【００４９】
ＲＡＩＤＧ状態は、ＧＣに関するＲＡＩＤＧの状態を示し、「ＧＣ待ち」、「ＧＣ中」、「ＧＣ完了」のいずれかの状態を示す。
「ＧＣ待ち」は、該当ＲＡＩＤＧに属するＧＣ対象ＳＳＤのうちいずれもＧＣ実施中ではなく、少なくとも１台はＧＣ未実施のＳＳＤがある状態を示す。例えば、ＧＣ未実施ＳＳＤとＧＣ完了ＳＳＤとが混在している状態は「ＧＣ待ち」になる。
【００５０】
「ＧＣ中」は、該当ＲＡＩＤＧに属するＧＣ対象ＳＳＤのいずれかがＧＣを実行中である状態を示す。例えば、ＧＣ実施中ＳＳＤとＧＣ未実施ＳＳＤとが混在している状態、ＧＣ実施中ＳＳＤとＧＣ完了ＳＳＤとが混在している状態、ＧＣ実施中ＳＳＤとＧＣ未実施ＳＳＤとＧＣ完了ＳＳＤとが混在している状態はいずれも「ＧＣ中」になる。
【００５１】
「ＧＣ完了」は、該当ＲＡＩＤＧに属する全ＧＣ対象ＳＳＤについてＧＣが完了している状態を示す。
アクセス管理ＢＭアドレスは、アクセス管理ビットマップ２１１ｄが格納されたメモリ１２１ｂの物理アドレスを示す。アクセス管理ビットマップ２１１ｄは、ＧＣ対象ＲＡＩＤＧに配置された論理ボリューム（ＬＶ：Logical Volume）について、ＧＣ中に退避したデータの書き戻しが完了したか否かを管理するための管理用ＢＭである。この管理用ＢＭは、各ＧＣ対象ＲＡＩＤＧに対して設けられる。なお、データの退避、書き戻し、ＢＭの管理については後述する。
【００５２】
退避先ＴＢＬ番号は、ＧＣ中にデータを退避させる退避領域に関する情報を記載する退避先情報テーブル２１１ｂのレコードを識別するための識別情報である。ＧＣ対象ＳＳＤの欄には、ＧＣ対象ＳＳＤと判断したＳＳＤを識別するための識別情報が格納される。
【００５３】
ＳＳＤ状態は、ＧＣに関するＳＳＤの状態を示し、「ＧＣ待ち」、「ＧＣ中」、「ＧＣ完了」のいずれかの状態を示す。「ＧＣ待ち」は、該当するＧＣ対象ＳＳＤについてＧＣが未実施の状態であることを示す。「ＧＣ中」は、該当するＧＣ対象ＳＳＤがＧＣを実行中であることを示す。「ＧＣ完了」は、該当するＧＣ対象ＳＳＤについてＧＣが完了している状態を示す。
【００５４】
（退避先情報テーブル２１１ｂ）
退避先情報テーブル２１１ｂには、ＧＣ実行中のＲＡＩＤＧに対するライトアクセスの要求を受けたときにデータの一時書き込み先（退避先）として他のＲＡＩＤＧに確保される退避先領域に関する情報が記載される。例えば、退避先情報テーブル２１１ｂは、図５に示すような内容を有する。図５は、退避先情報テーブルの一例を示した図表である。
【００５５】
退避先情報テーブル２１１ｂには、退避先ＴＢＬ番号、退避先領域数、ＲＡＩＤＧ番号、退避先領域の先頭物理アドレス、退避先領域の終端物理アドレスの項目が含まれる。退避先ＴＢＬ番号は、退避先情報テーブル２１１ｂ内の各レコードを識別するための識別情報である。退避先領域数は、各退避先ＴＢＬ番号に対応する退避先領域の数を示す。複数のＲＡＩＤＧから退避先領域が確保される場合、退避先領域数が２以上となる。
【００５６】
ＲＡＩＤＧ番号は、各ＲＡＩＤＧを識別するための識別情報である。なお、退避先情報テーブル２１１ｂに記載されるＲＡＩＤＧ番号は、退避先領域を有するＲＡＩＤＧのＲＡＩＤＧ番号である。退避先領域の先頭物理アドレス及び終端物理アドレスは、退避先領域の先頭及び終端に対応する該当ＲＡＩＤＧの物理アドレスである。なお、終端物理アドレスに代えて退避先領域の容量が退避先情報テーブル２１１ｂに記載されてもよい。
【００５７】
上記のように、１つのＧＣ対象ＲＡＩＤＧについて複数のＲＡＩＤＧから退避先領域が確保されうる。例えば、図４及び図５の例では、ＲＡＩＤＧ番号１のＧＣ対象ＲＡＩＤＧ（退避先ＴＢＬ番号１）について、２つのＲＡＩＤＧ（ＲＡＩＤＧ番号４、６）から退避先領域が確保されている。この場合、退避先領域数は２となる。
【００５８】
（ＲＡＩＤＧ管理テーブル２１１ｃ）
ＲＡＩＤＧ管理テーブル２１１ｃには、記憶部１２３に設定された各ＲＡＩＤＧ及びＬＶに関する情報が記載される。例えば、ＲＡＩＤＧ管理テーブル２１１ｃは、図６に示すような内容を有する。図６は、ＲＡＩＤグループ管理テーブルの一例を示した図表である。
【００５９】
ＲＡＩＤＧ管理テーブル２１１ｃには、ＲＡＩＤＧ番号、ＲＡＩＤレベル、ＳＳＤ数、ＲＡＩＤＧ総論理容量、ＬＶ数、ＬＶ先頭物理アドレス、ＬＶ終端物理アドレスの項目が含まれる。ＲＡＩＤＧ番号は、各ＲＡＩＤＧを識別するための識別情報である。ＲＡＩＤレベルの欄には、該当ＲＡＩＤＧに設定されたＲＡＩＤレベルが記載される。ＳＳＤ数は、該当ＲＡＩＤＧに含まれるＳＳＤの数である。
【００６０】
ＲＡＩＤＧ総論理容量は、該当ＲＡＩＤＧでＬＶ用に確保可能な総容量を示す。ＬＶ数は、該当ＲＡＩＤＧに配置されているＬＶの数を示す。ＬＶ先頭物理アドレスは、ＬＶの先頭位置を示す該当ＲＡＩＤＧの物理アドレスである。ＬＶ末端物理アドレスは、ＬＶの末端位置を示す該当ＲＡＩＤＧの物理アドレスである。なお、ＬＶ末端物理アドレスに代えてＬＶ論理容量がＲＡＩＤＧ管理テーブル２１１ｃに記載されてもよい。
【００６１】
（ＲＡＩＤＧ管理部２１２）
ＲＡＩＤＧ管理部２１２は、ＲＡＩＤＧ及びＬＶの設定時にＲＡＩＤＧ管理テーブル２１１ｃを更新する。例えば、ＲＡＩＤＧ管理部２１２は、ＲＡＩＤＧを作成するとき、そのＲＡＩＤＧに設定されたＲＡＩＤレベル、そのＲＡＩＤＧを形成するＳＳＤの数（ＳＳＤ数）、そのＲＡＩＤＧでＬＶ用に確保可能な総容量（ＲＡＩＤＧ総論理容量）をＲＡＩＤＧ管理テーブル２１１ｃに記載する。
【００６２】
また、ＲＡＩＤＧ管理部２１２は、ＲＡＩＤＧにＬＶを作成するとき、そのＬＶの物理位置（ＬＶ先頭物理アドレス、ＬＶ終端物理アドレス）をＲＡＩＤＧ管理テーブル２１１ｃに記載する。なお、ＲＡＩＤＧ管理部２１２は、ＬＶ終端物理アドレスに代えてＬＶの容量（ＬＶ論理容量）をＲＡＩＤＧ管理テーブル２１１ｃに記載してもよい。また、ＲＡＩＤＧ管理部２１２は、該当ＲＡＩＤＧのＬＶ数を１増加させる。
【００６３】
一方、ＬＶを削除するとき、ＲＡＩＤＧ管理部２１２は、削除するＬＶの物理位置（ＬＶ先頭物理アドレス、ＬＶ終端物理アドレス）をＲＡＩＤＧ管理テーブル２１１ｃから削除する。また、ＲＡＩＤＧ管理部２１２は、該当ＲＡＩＤＧのＬＶ数を１減少させる。また、ＲＡＩＤＧを削除するとき、ＲＡＩＤＧ管理部２１２は、ＲＡＩＤレベル、ＳＳＤ数、ＲＡＩＤＧ総論理容量をＲＡＩＤＧ管理部２１２から削除する。
【００６４】
（ＧＣ対象検出部２１３）
ＧＣ対象検出部２１３は、記憶部１２３の各ＳＳＤに対して状態取得指示（命令）を発行する。この状態取得指示は、ＳＳＤの総容量に対して未使用の予備ブロックが占める割合（予備ブロック割合）をＳＳＤに報告させる命令である。ＧＣ対象検出部２１３は、この状態取得指示に応じて各ＳＳＤから報告される予備ブロック割合を取得する。なお、ＧＣ対象検出部２１３は、状態取得指示の発行を定期的に行う。例えば、発行周期は数分程度に設定される。また、ユーザ操作により発行周期が調整されてもよい。
【００６５】
ＧＣ対象検出部２１３は、各ＳＳＤについて予備ブロック割合と規定値とを比較する。予備ブロック割合が規定値より小さい場合、ＧＣ対象検出部２１３は、その予備ブロック割合を報告したＳＳＤが属するＲＡＩＤＧを特定し、特定したＲＡＩＤＧがＧＣ対象ＲＡＩＤＧであると判断する。そして、ＧＣ対象検出部２１３は、ＧＣ対象ＲＡＩＤＧの情報をＧＣ対象テーブル２１１ａ（図４を参照）に記載する。
【００６６】
上記の規定値は、次の方法で決定できる。
まず、ＧＣ対象検出部２１３は、各ＳＳＤに対して状態取得指示を発行し、各ＳＳＤの予備ブロック割合、及び、ＳＳＤが自律ＧＣ実施中か否かの情報を取得する。なお、状態取得指示の発行周期は、例えば、数分程度に設定される。また、ユーザ操作により発行周期が調整されてもよい。また、ＧＣ対象検出部２１３は、取得した各ＳＳＤの予備ブロック割合にマージンを加算した値を計算し、計算した値に基づいて規定値を設定する。マージンは、例えば、数十パーセントなどに設定でき、ユーザ操作による調整を許容してもよい。
【００６７】
（ＧＣ実行制御部２１４）
ＧＣ実行制御部２１４は、定期的にＧＣ対象ＲＡＩＤＧの状態を監視する。監視周期は、例えば、数分程度に設定される。また、ユーザ操作により監視周期が調整されてもよい。監視タイミングになると、ＧＣ実行制御部２１４は、ＲＡＩＤＧ管理テーブル２１１ｃに記載されている各ＲＡＩＤＧについて、ＧＣ対象テーブル２１１ａにＲＡＩＤＧ番号の記載がないか確認する。ＧＣ対象テーブル２１１ａにＲＡＩＤＧ番号の記載があり、かつ「ＧＣ待ち」状態である場合、ＧＣ実行制御部２１４は、以下の処理を実行する。
【００６８】
まず、ＧＣ実行制御部２１４は、次の方法でＧＣ対象ＲＡＩＤＧの退避先領域を確保する。
ＧＣ実行制御部２１４は、ＲＡＩＤＧ管理テーブル２１１ｃからＧＣ対象ＲＡＩＤＧに配置されたＬＶの総容量（ＬＶ論理容量）を計算する。また、ＧＣ実行制御部２１４は、ＲＡＩＤＧ管理テーブル２１１ｃを参照し、ＧＣ対象ＲＡＩＤＧ以外の各ＲＡＩＤＧについてＲＡＩＤＧ総論理容量と、ＬＶ先頭物理アドレス及びＬＶ終端物理アドレスから計算できるＬＶ論理容量とを比較して未使用領域を有するＲＡＩＤＧを特定する。
【００６９】
また、ＧＣ実行制御部２１４は、ＧＣ対象ＲＡＩＤＧのＬＶ論理容量分のデータを格納可能な未使用領域を提供できる少なくとも１つのＲＡＩＤＧを選択する。そして、ＧＣ実行制御部２１４は、選択した各ＲＡＩＤＧの未使用領域を退避先領域として確保する。
【００７０】
退避先領域を確保できたとき、ＧＣ実行制御部２１４は、退避先領域を提供するＲＡＩＤＧのＲＡＩＤＧ番号、退避先領域の先頭物理アドレス及び終端物理アドレス（又は退避先領域の容量）を退避先情報テーブル２１１ｂに記載する。また、ＧＣ実行制御部２１４は、退避先ＴＢＬ番号に対応付けて退避先領域数を記載する。また、ＧＣ実行制御部２１４は、ＧＣ対象ＲＡＩＤＧのＲＡＩＤＧ番号に対応付けて、該当する退避先ＴＢＬ番号をＧＣ対象テーブル２１１ａに記載する。
【００７１】
また、ＧＣ実行制御部２１４は、確保した退避先領域に対応するＧＣ対象ＲＡＩＤＧ用のアクセス管理ビットマップ２１１ｄを格納するための領域をメモリ１２１ｂ上に確保する。ここで確保される領域のサイズは、ＧＣ対象ＲＡＩＤＧのＬＶ論理容量分の領域を管理できるサイズである。なお、アクセス管理ビットマップ２１１ｄの１ビットで管理できるサイズ（管理サイズ；例えば、１ＭＢ）は予め設定されている。そのため、確保される領域のサイズは、（ＬＶ論理容量／管理サイズ）分のビット数になる。
【００７２】
アクセス管理ビットマップ２１１ｄ用の領域を確保できたとき、ＧＣ実行制御部２１４は、確保した領域の位置を示すメモリ１２１ｂのアドレスをアクセス管理ＢＭアドレスとしてＧＣ対象テーブル２１１ａに記載する。また、ＧＣ実行制御部２１４は、ＧＣ対象テーブル２１１ａにおいて、ＧＣ対象ＲＡＩＤＧのＲＡＩＤＧ状態を「ＧＣ中」に設定する。
【００７３】
ＧＣ実行制御部２１４は、ＧＣ対象ＲＡＩＤＧに属するＧＣ対象ＳＳＤに対してＧＣの実行を指示する命令（ＧＣ命令）を発行する。また、ＧＣ実行制御部２１４は、ＧＣ対象テーブル２１１ａにおいて、ＧＣ命令の発行先となるＧＣ対象ＳＳＤのＳＳＤ状態を「ＧＣ中」に設定する。
【００７４】
なお、ＧＣ命令は、ＲＡＩＤレベルに応じて１台又は２台のＳＳＤに対して発行される。例えば、ＧＣ対象ＲＡＩＤＧのＲＡＩＤレベルが１、５の場合、１台のＳＳＤに対してＧＣ命令が発行される。他方、ＧＣ対象ＲＡＩＤＧのＲＡＩＤレベルが６の場合、ＧＣ実行制御部２１４は、１台又は２台のＳＳＤに対して同時にＧＣ命令を発行できる。
【００７５】
ＧＣの完了応答があると、ＧＣ実行制御部２１４は、ＧＣが完了したＳＳＤのＳＳＤ状態を「ＧＣ完了」に設定する。ＧＣ実行制御部２１４は、ＧＣの完了に応じて順次ＧＣ対象ＳＳＤにＧＣ命令を発行する。
【００７６】
ＧＣ実行制御部２１４は、「ＧＣ中」のＲＡＩＤＧに属する全てのＧＣ対象ＳＳＤについてＧＣが完了した後、ＧＣ対象テーブル２１１ａを更新して、そのＲＡＩＤＧの状態を「ＧＣ完了」に設定する。
【００７７】
ＧＣ実行制御部２１４は、「ＧＣ完了」の状態にあるＲＡＩＤＧについて、退避先領域にあるデータの書き戻しを開始させる。なお、書き戻しの処理は、後述する書き戻し部２１６が実行する。
【００７８】
書き戻し部２１６により書き戻しが全て完了したとき、ＧＣ実行制御部２１４は、メモリ１２１ｂ上にあるアクセス管理ビットマップ２１１ｄの領域を解放する。また、ＧＣ実行制御部２１４は、書き戻しが完了した退避先領域を解放する。また、ＧＣ実行制御部２１４は、該当するＲＡＩＤＧの情報をＧＣ対象テーブル２１１ａから削除する。
【００７９】
（ＧＣ中書き込み部２１５）
ＧＣ中書き込み部２１５は、「ＧＣ中」の状態にあるＲＡＩＤＧのＬＶに対する書き込み要求を処理する。
【００８０】
ＧＣ中書き込み部２１５は、上記の書き込み要求を受け付けると、アクセス管理ビットマップ２１１ｄを参照し、書き込み要求で指定されたＬＶの範囲（書き込み要求範囲）に対応するビット値を確認する。そして、ＧＣ中書き込み部２１５は、確認したビット値に基づいて、書き込み範囲について退避先領域への退避が行われているかを判定する。なお、アクセス管理ビットマップ２１１ｄの各ビット値は管理サイズのデータに対応する。
【００８１】
書き込み要求範囲について退避先領域への退避が行われていないと判定した場合、ＧＣ中書き込み部２１５は、書き込むデータのサイズが管理サイズとなるようにデータサイズの調整処理（マージ処理）を実行する。例えば、書き込み要求データのサイズが管理サイズに満たない場合、ＧＣ中書き込み部２１５は、足りない分のデータを「ＧＣ中」の状態にあるＲＡＩＤＧから読み出し、書き込み要求のデータにマージする。
【００８２】
なお、「ＧＣ中」の状態にあるＲＡＩＤＧからデータを読み出すとき、ＧＣ中書き込み部２１５は、「ＧＣ中」の状態にあるＳＳＤ以外のＳＳＤからデータを読み出す。例えば、ＲＡＩＤＧのＲＡＩＤレベルが５の場合、ＧＣ中書き込み部２１５は、対象となるＳＳＤのパリティデータなどを読み出してデータを再構成し、そのデータを用いて上記のマージ処理を実行する。
【００８３】
ＧＣ中書き込み部２１５は、ＲＡＩＤＧ管理テーブル２１１ｃを参照し、ＬＶの位置情報（ＬＶ先頭物理アドレス、ＬＶ終端物理アドレス）から書き込み要求範囲の論理容量オフセットを計算する。また、ＧＣ中書き込み部２１５は、退避先情報テーブル２１１ｂを参照し、退避先領域の位置情報（退避先領域の先頭物理アドレス、退避先領域の終端物理アドレス）を取得する。
【００８４】
なお、ＬＶの位置情報は、先頭位置を示すＬＢＡ（Logical Block Address）を０とするオフセット（論理容量オフセット）で表現されることが多い。そのため、本明細書では、論理容量オフセットを用いて位置情報を表現するが、位置情報の表現方法についてはこの例に限定されない。
【００８５】
また、ＧＣ中書き込み部２１５は、上記の論理容量オフセット、退避先領域の位置情報、ＲＡＩＤレベル、ＳＳＤ数などに基づいて、退避先領域のＲＡＩＤＧ及び書き込み要求範囲の物理位置を特定する。そして、ＧＣ中書き込み部２１５は、マージ処理により管理サイズに調整されたデータを、特定した物理位置に書き込む。
【００８６】
データの書き込み後、ＧＣ中書き込み部２１５は、書き込み先に対応するアクセス管理ビットマップ２１１ｄのビット値を「退避あり」を示すビット値に設定する。この設定により、ＧＣ後に書き戻しの対象となる範囲が特定できるようになる。
【００８７】
また、書き込み要求範囲について退避先領域への退避が済んでいると判定した場合、ＧＣ中書き込み部２１５は、ＲＡＩＤＧ管理テーブル２１１ｃを参照し、ＬＶの位置情報（ＬＶ先頭物理アドレス、ＬＶ終端物理アドレス）から書き込み要求範囲の論理容量オフセットを計算する。また、ＧＣ中書き込み部２１５は、退避先情報テーブル２１１ｂを参照し、退避先領域の位置情報（退避先領域の先頭物理アドレス、退避先領域の終端物理アドレス）を取得する。
【００８８】
また、ＧＣ中書き込み部２１５は、上記の論理容量オフセット、退避先領域の位置情報、ＲＡＩＤレベル、ＳＳＤ数などに基づいて、退避先領域のＲＡＩＤＧ及び書き込み要求範囲の物理位置を特定する。そして、ＧＣ中書き込み部２１５は、上記のマージ処理を行うことなく書き込み要求データを退避先領域に書き込む。
【００８９】
（書き戻し部２１６）
書き戻し部２１６は、「ＧＣ完了」の状態にあるＲＡＩＤＧについて退避先領域にあるデータの書き戻し処理を実行する。
【００９０】
書き戻し部２１６は、アクセス管理ビットマップ２１１ｄを参照して退避先領域の論理容量オフセットを計算する。また、書き戻し部２１６は、退避先情報テーブル２１１ｂを参照し、退避先領域の位置情報（退避先領域の先頭物理アドレス、退避先領域の終端物理アドレス）を取得する。
【００９１】
また、書き戻し部２１６は、上記の論理容量オフセット、退避先領域の位置情報、ＲＡＩＤレベル、ＳＳＤ数などに基づいて、退避先領域のＲＡＩＤＧの物理位置を特定する。また、書き戻し部２１６は、特定した退避先領域からデータを読み出し、「ＧＣ完了」の状態にあるＲＡＩＤＧの物理位置に書き込む。
【００９２】
（ＧＣ中読み出し部２１７）
ＧＣ中読み出し部２１７は、「ＧＣ中」の状態にあるＲＡＩＤＧのＬＶに対する読み出し要求を処理する。
【００９３】
ＧＣ中読み出し部２１７は、上記の読み出し要求を受け付けると、ＲＡＩＤＧ管理テーブル２１１ｃを参照して、読み出し要求で指定されたＬＶの位置情報及び論理容量オフセットを特定する。また、ＧＣ中読み出し部２１７は、読み出し元に対応するアクセス管理ビットマップ２１１ｄのビット値を確認する。そして、ＧＣ中読み出し部２１７は、確認したビット値に基づいて、退避先領域に有効なデータが格納されている範囲への読み出し要求であるかを判定する。
【００９４】
退避先領域に有効なデータが格納されている範囲への読み出し要求である場合、ＧＣ中読み出し部２１７は、上記の論理容量オフセット、退避先情報テーブル２１１ｂ、及びＲＡＩＤＧ管理テーブル２１１ｃに基づいて退避先領域の物理位置を特定する。また、ＧＣ中読み出し部２１７は、特定した物理位置からデータを読み出し、読み出したデータを用いて読み出し要求に対する応答を返す。
【００９５】
退避先領域ではなく本来の読み出し元に有効なデータが格納されている範囲（未退避の範囲）への読み出し要求である場合、ＧＣ中読み出し部２１７は、読み出し要求で指定されたＬＶの位置情報及びＲＡＩＤＧ管理テーブル２１１ｃから物理位置を特定する。そして、ＧＣ中読み出し部２１７は、特定した読み出し元の物理位置からデータを読み出し、読み出したデータを用いて読み出し要求に対する応答を返す。
【００９６】
読み出し元の物理位置が「ＧＣ中」の状態にあるＳＳＤを含む場合、ＧＣ中読み出し部２１７は、「ＧＣ中」の状態にないＳＳＤから読み出したデータを用いて読み出し対象のデータを再構成する。例えば、ＲＡＩＤレベルが５の場合、ＧＣ中読み出し部２１７は、「ＧＣ中」の状態にないＳＳＤから読み出したパリティデータなどのデータを用いて読み出し対象のデータを再構成する。そして、ＧＣ中読み出し部２１７は、再構成したデータを用いて読み出し要求に対する応答を返す。
【００９７】
上記のように、ＲＡＩＤＧ単位でＧＣ中のライトアクセスを抑制し、退避先領域にデータを退避させることで、予備ブロックが枯渇する可能性が高いＳＳＤに対してライトアクセスが行われるリスクを低減できる。このような方法でＧＣを制御することにより、レスポンスの遅延リスクが低減される。
【００９８】
［２−３．処理の流れ］
次に、上述したＧＣの制御について処理の流れを説明する。
（ＧＣ対象ＲＡＩＤグループの検出）
図７を参照しながら、ＧＣ対象ＲＡＩＤＧの検出に関する処理の流れについて説明する。図７は、ＧＣ対象ＲＡＩＤグループの検出に関する処理の流れを示したフロー図である。なお、図７に示した処理は、上述したＧＣ対象検出部２１３により定期実施される。例えば、実施周期は数分程度に設定される。ユーザにより実施周期が調整されてもよい。
【００９９】
（Ｓ１０１）ＧＣ対象検出部２１３は、記憶部１２３のＳＳＤを選択し、選択したＳＳＤ（選択ＳＳＤ）に対して状態取得指示（命令）を発行する。この状態取得指示は、ＳＳＤの総容量に対して未使用の予備ブロックが占める割合（予備ブロック割合）をＳＳＤに報告させる命令である。
【０１００】
（Ｓ１０２）ＧＣ対象検出部２１３は、上記の状態取得指示に応じて選択ＳＳＤから報告される予備ブロック割合（未使用予備ブロックの割合）を取得する。
（Ｓ１０３）ＧＣ対象検出部２１３は、選択ＳＳＤについて予備ブロック割合と規定値とを比較し、予備ブロック割合が規定値より小さいか否かを判定する。なお、規定値の設定については後述する。予備ブロック割合が規定値より小さい場合、処理はＳ１０４へと進む。一方、予備ブロック割合が規定値より小さくない場合、処理はＳ１０７へと進む。
【０１０１】
（Ｓ１０４）ＧＣ対象検出部２１３は、選択ＳＳＤが属するＲＡＩＤＧ（該当ＲＡＩＤＧ）を特定し、特定したＲＡＩＤＧがＧＣ対象ＲＡＩＤＧであると判断する。そして、ＧＣ対象検出部２１３は、ＧＣ対象テーブル２１１ａに登録済みか否かを判定する。ＧＣ対象テーブル２１１ａに登録済みである場合、処理はＳ１０６へと進む。一方、ＧＣ対象テーブル２１１ａに登録済みでない場合、処理はＳ１０５へと進む。
【０１０２】
（Ｓ１０５）ＧＣ対象検出部２１３は、該当ＲＡＩＤＧをＧＣ対象テーブル２１１ａに登録する。
（Ｓ１０６）ＧＣ対象検出部２１３は、選択ＳＳＤをＧＣ対象テーブル２１１ａに登録する。
【０１０３】
（Ｓ１０７）ＧＣ対象検出部２１３は、記憶部１２３の全てのＳＳＤを選択し終えたか否かを判定する。全てのＳＳＤを選択し終えた場合、図７に示した一連の処理は終了する。一方、未選択のＳＳＤがある場合、処理はＳ１０１へと進む。
【０１０４】
（規定値の設定）
次に、図８を参照しながら、上述した規定値の設定に関する処理の流れについて説明する。図８は、規定値の設定に関する処理の流れを示したフロー図である。なお、図８に示した処理は、上述したＧＣ対象検出部２１３により定期実施される。例えば、実施周期は数分程度に設定される。ユーザにより実施周期が調整されてもよい。
【０１０５】
（Ｓ１１１）ＧＣ対象検出部２１３は、上述した規定値のユーザ設定値（ユーザにより予め設定された値）があるか否かを判定する。規定値のユーザ設定値がある場合、図８に示した一連の処理は終了する。この場合、ユーザ設定値が規定値として利用される。一方、規定値のユーザ設定値がない場合、処理はＳ１１２へと進む。
【０１０６】
（Ｓ１１２）ＧＣ対象検出部２１３は、記憶部１２３のＳＳＤを選択する。また、ＧＣ対象検出部２１３は、選択ＳＳＤに対して上述した状態取得指示を発行する。
（Ｓ１１３）ＧＣ対象検出部２１３は、上記の状態取得指示に応じて選択ＳＳＤから報告される予備ブロック割合（未使用予備ブロックの割合）、及び、ＳＳＤの自律ＧＣが動作中か否かの情報を取得する。
【０１０７】
（Ｓ１１４）ＧＣ対象検出部２１３は、選択ＳＳＤが自律ＧＣ中か否かを判定する。なお、自律ＧＣとは、ストレージ制御装置１２１、１２２によるＧＣの実行命令によらずにＳＳＤが自ら予備ブロック割合に応じて自律的に実行するＧＣである。選択ＳＳＤが自律ＧＣ中である場合、処理はＳ１１５へと進む。一方、選択ＳＳＤが自律ＧＣ中でない場合、処理はＳ１１７へと進む。
【０１０８】
（Ｓ１１５）ＧＣ対象検出部２１３は、取得した選択ＳＳＤの予備ブロック割合にマージンを加算した値を計算する。マージンは、例えば、数十パーセントなどに設定でき、ユーザ操作による調整を許容してもよい。また、ＧＣ対象検出部２１３は、計算した値が現在の規定値より大きいか否かを判定する。計算した値が現在の規定値より大きい場合、処理はＳ１１６へと進む。一方、計算した値が現在の規定値より大きくない場合、処理はＳ１１７へと進む。
【０１０９】
（Ｓ１１６）ＧＣ対象検出部２１３は、取得した選択ＳＳＤの予備ブロック割合にマージンを加算した値を規定値に設定する。
（Ｓ１１７）ＧＣ対象検出部２１３は、記憶部１２３の全てのＳＳＤを選択し終えたか否かを判定する。記憶部１２３の全てのＳＳＤを選択し終えた場合、図８に示した一連の処理は終了する。一方、未選択のＳＳＤがある場合、処理はＳ１１２へと進む。
【０１１０】
（ＧＣの実行）
次に、図９〜図１１を参照しながら、ＧＣの実行に関する処理の流れについて説明する。図９は、ＧＣの実行に関する処理の流れを示した第１のフロー図である。図１０は、ＧＣの実行に関する処理の流れを示した第２のフロー図である。図１１は、ＧＣの実行に関する処理の流れを示した第３のフロー図である。
【０１１１】
なお、ＧＣ実行制御部２１４は、定期的にＧＣ対象ＲＡＩＤＧの状態を監視する。監視周期は、例えば、数分程度に設定される。また、ユーザ操作により監視周期が調整されてもよい。監視タイミングになると、ＧＣ実行制御部２１４は、図９〜図１１に示したＳ１２１以降の処理を開始する。
【０１１２】
（Ｓ１２１）ＧＣ実行制御部２１４は、ＧＣ対象テーブル２１１ａにＲＡＩＤＧの登録があるか否かを判定する。
例えば、ＧＣ実行制御部２１４は、ＲＡＩＤＧ管理テーブル２１１ｃに記載されている各ＲＡＩＤＧについて、ＧＣ対象テーブル２１１ａにＲＡＩＤＧ番号の記載がないか確認する。ＧＣ対象テーブル２１１ａにＲＡＩＤＧの登録があり、「ＧＣ待ち」状態である場合、処理はＳ１２２へと進む。一方、ＧＣ対象テーブル２１１ａにＲＡＩＤＧの登録がない場合、図９〜図１１に示した一連の処理は終了する。
【０１１３】
（Ｓ１２２）ＧＣ実行制御部２１４は、ＧＣ対象テーブル２１１ａからＲＡＩＤＧを選択する。
（Ｓ１２３）ＧＣ実行制御部２１４は、ＧＣ対象テーブル２１１ａ及び退避先情報テーブル２１１ｂを参照し、選択ＲＡＩＤＧについて退避先領域が確保されているか否かを判定する。退避先領域が確保されている場合、処理はＳ１２６へと進む。一方、退避先領域が確保されていない場合、処理はＳ１２４へと進む。
【０１１４】
（Ｓ１２４）ＧＣ実行制御部２１４は、選択ＲＡＩＤＧ以外のＲＡＩＤＧ（他ＲＡＩＤＧ）から退避先領域を確保できるか否かを判定する。
例えば、ＧＣ実行制御部２１４は、ＲＡＩＤＧ管理テーブル２１１ｃからＧＣ対象ＲＡＩＤＧに配置されたＬＶの総容量（ＬＶ論理容量）を計算する。また、ＧＣ実行制御部２１４は、ＲＡＩＤＧ管理テーブル２１１ｃを参照し、ＧＣ対象ＲＡＩＤＧ以外の各ＲＡＩＤＧについてＲＡＩＤＧ総論理容量と、ＬＶ先頭物理アドレス及びＬＶ終端物理アドレスから計算できるＬＶ論理容量とを比較して未使用領域を有するＲＡＩＤＧを探索する。
【０１１５】
退避先領域を確保できる場合、処理はＳ１２５へと進む。一方、退避先領域を確保できない場合、処理はＳ１４２へと進む。
（Ｓ１２５）ＧＣ実行制御部２１４は、他ＲＡＩＤＧの未使用領域を退避先領域として確保し、その退避先領域の情報を退避先情報テーブル２１１ｂに登録する。なお、退避先領域の確保に用いられる他ＲＡＩＤＧの数は２以上でもよい。
【０１１６】
例えば、ＧＣ実行制御部２１４は、退避先領域を提供するＲＡＩＤＧのＲＡＩＤＧ番号、退避先領域の先頭物理アドレス及び終端物理アドレス（又は退避先領域の容量）を退避先情報テーブル２１１ｂに記載する。また、ＧＣ実行制御部２１４は、退避先ＴＢＬ番号に対応付けて退避先領域数を記載する。また、ＧＣ実行制御部２１４は、ＧＣ対象ＲＡＩＤＧのＲＡＩＤＧ番号に対応付けて、該当する退避先ＴＢＬ番号をＧＣ対象テーブル２１１ａに記載する。
【０１１７】
（Ｓ１２６）ＧＣ実行制御部２１４は、確保した退避先領域に対応するＧＣ対象ＲＡＩＤＧ用のアクセス管理ビットマップ２１１ｄを格納するための領域をメモリ１２１ｂ上に確保する。ここで確保される領域のサイズは、ＧＣ対象ＲＡＩＤＧのＬＶ論理容量分の領域を管理できるサイズである。
【０１１８】
なお、アクセス管理ビットマップ２１１ｄ用のメモリ領域を確保できない場合、ＧＣ実行制御部２１４は、メモリ１２１ｂ上に空き領域ができるまで待機する。アクセス管理ビットマップ２１１ｄ用の領域を確保できたとき、ＧＣ実行制御部２１４は、確保した領域の位置を示すメモリ１２１ｂのアドレスをアクセス管理ＢＭアドレスとしてＧＣ対象テーブル２１１ａに記載する。
【０１１９】
（Ｓ１２７）ＧＣ実行制御部２１４は、ＧＣ対象テーブル２１１ａにおいて、選択ＲＡＩＤＧのＲＡＩＤＧ状態を「ＧＣ中」に設定する。Ｓ１２７の処理が完了すると、処理は、Ｓ１２８（図１０を参照）へと進む。
【０１２０】
（Ｓ１２８）ＧＣ実行制御部２１４は、選択ＲＡＩＤＧの中に「ＧＣ待ち」のＳＳＤがあるか否かを判定する。「ＧＣ待ち」のＳＳＤがある場合、処理はＳ１２９へと進む。一方、「ＧＣ待ち」のＳＳＤがない場合、処理はＳ１３６へと進む。
【０１２１】
（Ｓ１２９）ＧＣ実行制御部２１４は、選択ＲＡＩＤＧの中から「ＧＣ待ち」の状態にあるＳＳＤを選択する。
（Ｓ１３０）ＧＣ実行制御部２１４は、ＧＣ対象テーブル２１１ａにおいて、選択ＳＳＤのＳＳＤ状態を「ＧＣ中」に設定する。
【０１２２】
（Ｓ１３１）ＧＣ実行制御部２１４は、選択ＲＡＩＤＧの状態が「ＧＣ中」か否かを判定する。選択ＲＡＩＤＧの状態が「ＧＣ中」である場合、処理はＳ１３３へと進む。一方、選択ＲＡＩＤＧの状態が「ＧＣ中」でない場合、処理はＳ１３２へと進む。
【０１２３】
（Ｓ１３２）ＧＣ実行制御部２１４は、選択ＲＡＩＤＧの状態を「ＧＣ中」に設定する。
（Ｓ１３３）ＧＣ実行制御部２１４は、選択ＳＳＤに対してＧＣの実行を指示する命令（ＧＣ命令）を発行する。
【０１２４】
なお、ＧＣ命令は、ＲＡＩＤレベルに応じて１台又は２台のＳＳＤに対して発行される。例えば、ＧＣ対象ＲＡＩＤＧのＲＡＩＤレベルが１、５の場合、１台のＳＳＤに対してＧＣ命令が発行される。他方、ＧＣ対象ＲＡＩＤＧのＲＡＩＤレベルが６の場合、ＧＣ実行制御部２１４は、１台又は２台のＳＳＤに対して同時にＧＣ命令を発行できる。そのため、ＲＡＩＤレベルが６の場合、Ｓ１２９の処理で２台のＳＳＤを選択でき、この場合にはＳ１３３の処理で２台の選択ＳＳＤに対してＧＣ命令が発行される。
【０１２５】
（Ｓ１３４）ＧＣ実行制御部２１４は、選択ＳＳＤのＧＣが完了したか否かを判定する。例えば、ＧＣ実行制御部２１４は、選択ＳＳＤからＧＣの完了応答を待ち受ける。全ての選択ＳＳＤからＧＣの完了応答を受領したとき、処理はＳ１３５へと進む。一方、ＧＣの完了応答がない選択ＳＳＤが存在する場合、Ｓ１３４の判定が再び行われる。
【０１２６】
（Ｓ１３５）ＧＣ実行制御部２１４は、ＧＣが完了したＳＳＤのＳＳＤ状態を「ＧＣ完了」に設定する。Ｓ１３５の処理が完了すると、処理はＳ１２８へと進む。
（Ｓ１３６）ＧＣ実行制御部２１４は、選択ＲＡＩＤＧの状態を「ＧＣ完了」に設定する。
【０１２７】
（Ｓ１３７）ＧＣ実行制御部２１４は、「ＧＣ完了」の状態にあるＲＡＩＤＧについて、退避先領域にあるデータの書き戻しを開始させる。なお、書き戻しの処理については後述する。書き戻しの処理は、書き戻し部２１６が実行する。
【０１２８】
（Ｓ１３８）ＧＣ実行制御部２１４は、書き戻し部２１６による書き戻しが完了したか否かを判定する。書き戻しが完了した場合、処理はＳ１３９（図１１を参照）へと進む。一方、書き戻しが完了していない場合、Ｓ１３８の判定が再び行われる。つまり、ＧＣ実行制御部２１４は、書き戻しの完了を待ち受ける。
【０１２９】
（Ｓ１３９）ＧＣ実行制御部２１４は、選択ＲＡＩＤＧに関するアクセス管理ビットマップ２１１ｄの情報をＧＣ対象テーブル２１１ａから削除する。また、ＧＣ実行制御部２１４は、アクセス管理ビットマップ２１１ｄ用にメモリ１２１ｂ上に確保された領域（メモリ領域）を解放する。
【０１３０】
（Ｓ１４０）ＧＣ実行制御部２１４は、退避先情報テーブル２１１ｂから選択ＲＡＩＤＧについての退避先領域の情報を削除する。また、ＧＣ実行制御部２１４は、選択ＲＡＩＤＧについて他ＲＡＩＤＧに確保された退避先領域を解放する。
【０１３１】
（Ｓ１４１）ＧＣ実行制御部２１４は、選択ＲＡＩＤＧの情報をＧＣ対象テーブル２１１ａから削除する。
（Ｓ１４２）ＧＣ実行制御部２１４は、ＲＡＩＤＧ管理テーブル２１１ｃにあるＲＡＩＤＧを選択し終えたか否かを判定する。ＲＡＩＤＧを選択し終えた場合、図９〜図１１に示した一連の処理は終了する。一方、未選択のＲＡＩＤＧがある場合、処理はＳ１２２へと進む。
【０１３２】
（ライトアクセス）
次に、図１２及び図１３を参照しながら、ライトアクセスの要求に応じた処理の流れについて説明する。図１２は、ライトアクセスの要求に応じた処理の流れを示した第１のフロー図である。図１３は、ライトアクセスの要求に応じた処理の流れを示した第２のフロー図である。
【０１３３】
（Ｓ１５１）ＧＣ中書き込み部２１５は、ＧＣ対象テーブル２１１ａを参照し、ライトアクセスの要求で指定された書き込み先（アクセス範囲）に対応する書き込み先ＲＡＩＤＧの状態が「ＧＣ中」であるか否かを判定する。書き込み先ＲＡＩＤＧの状態が「ＧＣ中」である場合、処理はＳ１５２へと進む。一方、書き込み先ＲＡＩＤＧの状態が「ＧＣ中」でない場合、処理はＳ１６３（図１３を参照）へと進む。
【０１３４】
（Ｓ１５２）ＧＣ中書き込み部２１５は、ＲＡＩＤＧ管理テーブル２１１ｃを参照し、ＬＶの位置情報（ＬＶ先頭物理アドレス、ＬＶ終端物理アドレス）からアクセス範囲の論理容量オフセットを計算する。
【０１３５】
（Ｓ１５３）ＧＣ中書き込み部２１５は、計算した論理容量オフセットに該当するアクセス管理ビットマップ２１１ｄのビット値を参照する。なお、アクセス管理ビットマップ２１１ｄの各ビット値は管理サイズのデータに対応する。
【０１３６】
（Ｓ１５４）ＧＣ中書き込み部２１５は、参照したビット値に基づいて、アクセス範囲のデータが退避先領域へ書き込み済みか否かを判定する。退避先領域へ書き込み済みである場合、処理はＳ１５８へと進む。一方、退避先領域への書き込みがされていない場合、処理はＳ１５５へと進む。
【０１３７】
（Ｓ１５５）ＧＣ中書き込み部２１５は、アクセス範囲のサイズが管理サイズであるか否かを判定する。アクセス範囲のサイズが管理サイズである場合、処理はＳ１５８へと進む。一方、アクセス範囲のサイズが管理サイズでない場合、処理はＳ１５６へと進む。
【０１３８】
（Ｓ１５６）ＧＣ中書き込み部２１５は、管理サイズに足りない分のデータを書き込み先ＲＡＩＤＧから読み出す。
なお、書き込み先ＲＡＩＤＧからデータを読み出すとき、ＧＣ中書き込み部２１５は、「ＧＣ中」の状態にあるＳＳＤ以外のＳＳＤからデータを読み出す。例えば、ＲＡＩＤＧのＲＡＩＤレベルが５の場合、ＧＣ中書き込み部２１５は、対象となるＳＳＤのパリティデータなどを読み出してデータを再構成する。
【０１３９】
（Ｓ１５７）ＧＣ中書き込み部２１５は、ライトアクセスの要求にて書き込みを要求されたデータ（書き込みデータ）と、書き込み先ＲＡＩＤＧから読み出したデータとをマージして管理サイズのデータを作成する。
【０１４０】
（Ｓ１５８）ＧＣ中書き込み部２１５は、ＲＡＩＤＧ管理テーブル２１１ｃを参照し、ＬＶの位置情報（ＬＶ先頭物理アドレス、ＬＶ終端物理アドレス）からアクセス範囲の論理容量オフセットを計算する。Ｓ１５８の処理が完了すると、処理はＳ１５９（図１３を参照）へと進む。
【０１４１】
（Ｓ１５９）ＧＣ中書き込み部２１５は、退避先情報テーブル２１１ｂ、ＲＡＩＤＧ管理テーブル２１１ｃから退避先領域の物理位置を特定する。
（Ｓ１６０）ＧＣ中書き込み部２１５は、退避先領域への書き込みを行う。
【０１４２】
（Ｓ１６１）ＧＣ中書き込み部２１５は、アクセス管理ビットマップ２１１ｄが未更新であるか否かを判定する。アクセス管理ビットマップ２１１ｄが未更新である場合、処理はＳ１６２へと進む。一方、アクセス管理ビットマップ２１１ｄが未更新でない場合、図１２及び図１３に示した一連の処理は終了する。
【０１４３】
（Ｓ１６２）ＧＣ中書き込み部２１５は、アクセス範囲に対応するアクセス管理ビットマップ２１１ｄのビット値を、「退避あり」（退避先領域へのデータの書き込みがある状態）を示すビット値に更新する。Ｓ１６２の処理が完了すると、図１２及び図１３に示した一連の処理は終了する。
【０１４４】
（Ｓ１６３）ＧＣ中書き込み部２１５は、通常の書き込み処理を実行する。つまり、ＧＣ中書き込み部２１５は、ライトアクセスの要求で指定されたアクセス範囲にデータを書き込む。Ｓ１６３の処理が完了すると、図１２及び図１３に示した一連の処理は終了する。
【０１４５】
（リードアクセス）
次に、図１４及び図１５を参照しながら、リードアクセスの要求に応じた処理の流れについて説明する。図１４は、リードアクセスの要求に応じた処理の流れを示した第１のフロー図である。図１５は、リードアクセスの要求に応じた処理の流れを示した第２のフロー図である。
【０１４６】
（Ｓ１７１）ＧＣ中読み出し部２１７は、ＧＣ対象テーブル２１１ａを参照し、リードアクセスの要求で指定された読み出し元（アクセス範囲）に対応する読み出し元ＲＡＩＤＧの状態が「ＧＣ中」であるか否かを判定する。読み出し元ＲＡＩＤＧの状態が「ＧＣ中」である場合、処理はＳ１７２へと進む。一方、読み出し元ＲＡＩＤＧの状態が「ＧＣ中」でない場合、処理はＳ１７７へと進む。
【０１４７】
（Ｓ１７２）ＧＣ中読み出し部２１７は、ＲＡＩＤＧ管理テーブル２１１ｃを参照し、ＬＶの位置情報（ＬＶ先頭物理アドレス、ＬＶ終端物理アドレス）からアクセス範囲の論理容量オフセットを計算する。
【０１４８】
（Ｓ１７３）ＧＣ中読み出し部２１７は、計算した論理容量オフセットに該当するアクセス管理ビットマップ２１１ｄのビット値を参照する。なお、アクセス管理ビットマップ２１１ｄの各ビット値は管理サイズのデータに対応する。
【０１４９】
（Ｓ１７４）ＧＣ中読み出し部２１７は、参照したビット値に基づいて、アクセス範囲のデータ（読み出しデータ）が退避先領域にあるか否かを判定する。読み出しデータが退避先領域にある場合、処理はＳ１７５へと進む。一方、読み出しデータが退避先領域にない場合、処理はＳ１７８（図１５を参照）へと進む。
【０１５０】
（Ｓ１７５）ＧＣ中読み出し部２１７は、退避先情報テーブル２１１ｂ及びＲＡＩＤＧ管理テーブル２１１ｃからアクセス範囲に対応する退避先領域の物理位置を特定する。
（Ｓ１７６）ＧＣ中読み出し部２１７は、退避先領域から読み出しデータを読み出し、読み出したデータを用いてリードアクセスの要求に対する応答を返す。Ｓ１７６の処理が完了すると、図１４及び図１５に示した一連の処理は終了する。
【０１５１】
（Ｓ１７７）ＧＣ中読み出し部２１７は、通常の読み出し処理を実行する。つまり、ＧＣ中読み出し部２１７は、リードアクセスの要求で指定されたアクセス範囲からデータを読み出し、読み出したデータを用いてリードアクセスの要求に対する応答を返す。Ｓ１７７の処理が完了すると、図１４及び図１５に示した一連の処理は終了する。
【０１５２】
（Ｓ１７８）ＧＣ中読み出し部２１７は、ＲＡＩＤＧ管理テーブル２１１ｃを参照して読み出し元となるアクセス範囲の物理位置を特定する。
（Ｓ１７９）ＧＣ中読み出し部２１７は、読み出し元のＳＳＤが「ＧＣ中」の状態にあるか否かを判定する。読み出し元のＳＳＤが「ＧＣ中」の状態にある場合、処理はＳ１８０へと進む。一方、読み出し元のＳＳＤが「ＧＣ中」の状態にない場合、処理はＳ１７７（図１４を参照）へと進む。
【０１５３】
（Ｓ１８０）ＧＣ中読み出し部２１７は、「ＧＣ中」の状態にあるＳＳＤ以外の同ＲＡＩＤＧのＳＳＤからデータを読み出して再構成を実施する。
例えば、ＲＡＩＤレベルが５の場合、ＧＣ中読み出し部２１７は、「ＧＣ中」の状態にないＳＳＤから読み出したパリティデータなどのデータを用いて読み出しデータを再構成する。そして、ＧＣ中読み出し部２１７は、再構成した読み出しデータを用いてリードアクセスの要求に対する応答を返す。Ｓ１８０の処理が完了すると、図１４及び図１５に示した一連の処理は終了する。
【０１５４】
（書き戻し）
次に、図１６を参照しながら、書き戻しの処理について説明する。図１６は、書き戻しの処理の流れを示したフロー図である。
【０１５５】
（Ｓ１９１）書き戻し部２１６は、アクセス管理ビットマップ２１１ｄのビットを選択する。
（Ｓ１９２）書き戻し部２１６は、アクセス管理ビットマップ２１１ｄに含まれる全てのビットがオフであるか否かを判定する。
【０１５６】
なお、ビットがオフであるとは、そのビットに対応する管理サイズのデータが退避先領域から「ＧＣ完了」状態のＲＡＩＤＧへ書き戻し済みであること（「退避なし」の状態を示すビット値に設定されていること）を意味する。全てのビットがオフの場合、図１６に示した一連の処理は終了する。一方、オフでないビットがある場合（「退避あり」の状態を示すビット値のビットがある場合）、処理はＳ１９３へと進む。
【０１５７】
（Ｓ１９３）書き戻し部２１６は、アクセス管理ビットマップ２１１ｄを参照して退避先領域の論理容量オフセットを計算する。
（Ｓ１９４）書き戻し部２１６は、退避先領域に書き戻しの対象となるデータ（該当データ）があるか否かを判定する。該当データがある場合、処理はＳ１９５へと進む。一方、該当データがない場合、処理はＳ１９１へと進む。
【０１５８】
（Ｓ１９５）書き戻し部２１６は、退避先情報テーブル２１１ｂ及びＲＡＩＤＧ管理テーブル２１１ｃを参照し、退避先領域の位置情報（退避先領域の先頭物理アドレス、退避先領域の終端物理アドレス）から読み出し元の物理位置を特定する。
【０１５９】
（Ｓ１９６）書き戻し部２１６は、退避先領域から該当データを読み出す。
（Ｓ１９７）書き戻し部２１６は、ＲＡＩＤＧ管理テーブル２１１ｃを参照して該当データの書き込み先となるＲＡＩＤＧ（「ＧＣ完了」の状態にあるＲＡＩＤＧ）の物理位置を特定する。
【０１６０】
（Ｓ１９８）書き戻し部２１６は、特定したＲＡＩＤＧの物理位置に該当データを書き込む。つまり、書き戻し部２１６は、ＧＣ中にＲＡＩＤＧから一旦退避先領域へと退避していたデータ（該当データ）を元のＲＡＩＤＧに書き戻す。
【０１６１】
（Ｓ１９９）書き戻し部２１６は、選択ビットをオフに設定する。Ｓ１９９の処理が完了すると、処理はＳ１９１へと進む。
上記のように、ＲＡＩＤＧ単位でＧＣ中のライトアクセスを抑制し、退避先領域にデータを退避させることで、予備ブロックが枯渇する可能性の高いＳＳＤに対してライトアクセスが行われるリスクを低減できる。このような方法でＧＣを制御することにより、レスポンスの遅延リスクが低減される。
【０１６２】
以上、第２実施形態について説明した。
なお、上記の説明では、説明の都合上、ＳＳＤを例に説明を進めてきたが、ＮＡＮＤフラッシュメモリと同様の書き換え特性（上書き禁止の性質）があるメモリを採用した記録媒体について上述した第２実施形態に係る技術を適用可能である。
【０１６３】
ところで、上述したストレージ制御装置１２１の機能は、メモリ１２１ｂに格納されたプログラムに従って動作するプロセッサ１２１ａにより実現されうる。
上記のプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。記録媒体としては、磁気記憶装置、光ディスク、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／ＲＷ、Ｂｌｕ−ｒａｙ（登録商標）などがある。光磁気記録媒体には、ＭＯなどがある。
【０１６４】
また、上記のプログラムを流通させる場合には、例えば、そのプログラムが記録されたＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、上記のプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。ストレージ制御装置１２１は、上記のような記録媒体、サーバコンピュータ、他のコンピュータから上記のプログラムを取得してメモリ１２１ｂに格納しうる。
【０１６５】
＜３．付記＞
以上説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）  複数のストレージグループを構成する複数のストレージデバイスを制御するストレージ制御装置であって、
前記複数のストレージデバイスのうち、ガベージコレクションの対象領域を有する第１のストレージデバイスを検出し、
前記複数のストレージグループのうち、前記第１のストレージデバイスが属する第１のストレージグループを特定し、
特定された前記第１のストレージグループに属するストレージデバイスへのライトアクセスを抑止し、
前記第１のストレージデバイスに対して前記ガベージコレクションの実行指示を行う制御部を有する、ストレージ制御装置。
【０１６６】
（付記２）  前記制御部は、前記ガベージコレクションの実行中に要求された前記第１のストレージグループに対するライトアクセスのデータの退避先を、前記第１のストレージグループと異なる第２のストレージグループ内の記憶領域から確保する
付記１に記載のストレージ制御装置。
【０１６７】
（付記３）  前記制御部は、前記ガベージコレクションの実行中に前記第１のストレージデバイスに対するリードアクセスの要求を受け付けたとき、前記リードアクセスの対象となるデータが前記退避先の記憶領域にある場合、前記退避先の記憶領域から読み出した前記データを用いて前記要求に対する応答を行う
付記２に記載のストレージ制御装置。
【０１６８】
（付記４）  前記制御部は、前記ガベージコレクションの実行中に前記第１のストレージデバイスに対するリードアクセスの要求を受け付けたとき、前記リードアクセスの対象となるデータが前記退避先の記憶領域にない場合、前記第１のストレージグループに属する少なくとも１つの第２のストレージデバイスから読み出した冗長化データを用いて前記要求に対する応答を行う
付記３に記載のストレージ制御装置。
【０１６９】
（付記５）  前記制御部は、前記ガベージコレクションの完了後、前記退避先の記憶領域にあるデータを前記第１のストレージグループの前記ライトアクセス先の記憶領域に書き戻す
付記２に記載のストレージ制御装置。
【０１７０】
（付記６）  複数のストレージグループを構成する複数のストレージデバイスを制御するコンピュータに、
前記複数のストレージデバイスのうち、ガベージコレクションの対象領域を有する第１のストレージデバイスを検出し、
前記複数のストレージグループのうち、前記第１のストレージデバイスが属する第１のストレージグループを特定し、
特定された前記第１のストレージグループに属するストレージデバイスへのライトアクセスを抑止し、
前記第１のストレージデバイスに対して前記ガベージコレクションの実行指示を行う
処理を実行させる、プログラム。
【０１７１】
（付記７）  前記ガベージコレクションの実行中に要求された前記第１のストレージグループに対するライトアクセスのデータの退避先を、前記第１のストレージグループと異なる第２のストレージグループ内の記憶領域から確保する
処理をコンピュータに実行させる、付記６に記載のプログラム。
【０１７２】
（付記８）  前記ガベージコレクションの実行中に前記第１のストレージデバイスに対するリードアクセスの要求を受け付けたとき、前記リードアクセスの対象となるデータが前記退避先の記憶領域にある場合、前記退避先の記憶領域から読み出した前記データを用いて前記要求に対する応答を行う
処理をコンピュータに実行させる、付記７に記載のプログラム。
【０１７３】
（付記９）  前記ガベージコレクションの実行中に前記第１のストレージデバイスに対するリードアクセスの要求を受け付けたとき、前記リードアクセスの対象となるデータが前記退避先の記憶領域にない場合、前記第１のストレージグループに属する少なくとも１つの第２のストレージデバイスから読み出した冗長化データを用いて前記要求に対する応答を行う
処理をコンピュータに実行させる、付記８に記載のプログラム。
【０１７４】
（付記１０）  前記ガベージコレクションの完了後、前記退避先の記憶領域にあるデータを前記第１のストレージグループの前記ライトアクセス先の記憶領域に書き戻す
処理をコンピュータに実行させる、付記７に記載のプログラム。
【０１７５】
（付記１１）  前記制御部は、前記第１のストレージグループ内にある全てのガベージコレクションの対象領域を有する第１のストレージデバイスについてガベージコレクションが完了した後、前記退避先の記憶領域にあるデータを前記第１のストレージグループの前記ライトアクセス先の記憶領域に書き戻す
付記２に記載のストレージ制御装置。
【符号の説明】
【０１７６】
５  ストレージシステム
１０  ストレージ制御装置
１１  制御部
１２  記憶部
１３  記録媒体
２０  ストレージ装置
２１、２２  ストレージグループ
３０  ホストコンピュータ
ａ１、ａ２、ａ３、ａ４、ｂ１、ｂ２、ｂ３、ｂ４  ストレージデバイス
【図１】
2019074897.tif 000003
【図２】
2019074897.tif 000004
【図３】
2019074897.tif 000005
【図４】
2019074897.tif 000006
【図５】
2019074897.tif 000007
【図６】
2019074897.tif 000008
【図７】
2019074897.tif 000009
【図８】
2019074897.tif 000010
【図９】
2019074897.tif 000011
【図１０】
2019074897.tif 000012
【図１１】
2019074897.tif 000013
【図１２】
2019074897.tif 000014
【図１３】
2019074897.tif 000015
【図１４】
2019074897.tif 000016
【図１５】
2019074897.tif 000017
【図１６】
2019074897.tif 000018