(57)【要約】      （修正有）【課題】ガベージコレクション中のストレージ装置にデータ書込みの要求があった場合、データ書込みの要求に対する応答速度が低下する。【解決手段】第１メモリ領域とび第２メモリ領域を有し、第１メモリ領域の空き容量に基づいて第１メモリ領域のガベージコレクションの要否を判定するストレージ装置と、ストレージ制御装置と、を含む。ストレージ制御装置は、第１データを第１メモリ領域に格納するよう、ストレージ装置に指示し、第１データのデータ量に基づき、第１メモリ領域におけるガベージコレクションの要否を判定し、第１データのデータ量に基づいてガベージコレクションが必要と判定された場合、ストレージ装置に第１メモリ領域のガベージコレクションの実行を指示する。また、第１メモリ領域のガベージコレクションが実行されている期間には、他のデータを第２メモリ領域に保持するようストレージ装置に指示する。【選択図】図６Ａ
2018032105.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリ領域及び第２メモリ領域を有し、前記第１メモリ領域の空き容量に基づいて前記第１メモリ領域のガベージコレクションの実行の要否を判定するストレージ装置と、
前記ストレージ装置に接続されたストレージ制御装置と、を含み、
前記ストレージ制御装置は、
第１データの書込みを要求する第１コマンドを受信し、
前記第１コマンドに基づき、前記第１データを前記第１メモリ領域に格納するよう、前記ストレージ装置に指示し、
前記第１データのデータ量に基づき、前記第１メモリ領域における前記ガベージコレクションの実行の要否を判定し、
前記第１データの前記データ量に基づいて前記ガベージコレクションの実行が必要と判定された場合、前記ストレージ装置に前記第１メモリ領域の前記ガベージコレクションの実行を指示し、
前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示した場合であって、前記第１メモリ領域の前記ガベージコレクションが実行されている期間に第２データの書込みを要求する第２コマンドを受信した場合に、前記第２メモリ領域に前記第２データを保持するよう前記ストレージ装置に指示する
ことを特徴とするストレージシステム。
【請求項２】
前記ストレージ制御装置が前記ガベージコレクションの実行を指示した場合、及び、前記第１メモリ領域の前記空き容量が第１閾値を下回った場合、の少なくとも何れかの場合に、前記ストレージ装置は、前記第１メモリ領域の前記ガベージコレクションを実行する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記ストレージ制御装置は、
前記第１データの格納を前記ストレージ装置へ指示する前に、前記ストレージ装置にダミーデータの格納指示を送信し、
前記ダミーデータの前記格納指示が送信されてから、前記ダミーデータの格納処理が完了したことを示す完了通知を受信するまでの時間と、前記ダミーデータのデータ量とに基づいて、第２閾値を設定し、
前記第１データの前記データ量が前記第２閾値以上となった場合に、前記ストレージ装置に前記ガベージコレクションの実行を指示する
ことを特徴とする請求項１又は２に記載のストレージシステム。
【請求項４】
前記第２閾値は、前記第１メモリ領域の前記空き容量が前記第１閾値を下回るよりも先に前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示するよう設定される
ことを特徴とする請求項３に記載のストレージシステム。
【請求項５】
前記ダミーデータの前記格納指示は複数の指示を含み、
前記複数の指示における前記ダミーデータの論理アドレスは互いにランダムなアドレスである
ことを特徴とする請求項３又は４に記載のストレージシステム。
【請求項６】
前記第１コマンドは、複数のコマンドを含み、
前記ストレージ制御装置は、前記複数のコマンドにおける前記第１データの論理アドレスが互いにランダムなアドレスである場合に、前記第１データの前記データ量に基づき、前記ガベージコレクションの要否を判定する
ことを特徴とする請求項１乃至５何れか一項に記載のストレージシステム。
【請求項７】
前記ストレージ制御装置は、前記複数のコマンドの第１コマンドの第１論理アドレスに前記第１コマンドのデータ量を加算した値が、前記複数のコマンドの第２コマンドの第２論理アドレスに一致しない場合に、前記第２論理アドレスが前記第１論理アドレスに対してランダムであると判定することを特徴とする請求項６に記載のストレージシステム。
【請求項８】
前記ストレージ装置は、前記第１メモリ領域の前記ガベージコレクションが終了した後、前記第２メモリ領域に保持された前記第２データを前記第１メモリ領域へ格納する
ことを特徴とする請求項１乃至７何れか一項に記載のストレージシステム。
【請求項９】
第１メモリ領域及び第２メモリ領域を有するストレージ装置であって、前記第１メモリ領域の空き容量に基づいて前記第１メモリ領域のガベージコレクションの実行の要否を判定するストレージ装置に接続されたストレージ制御装置であって、
第１データの書込みを要求する第１コマンドを受信する送受信部と、
前記第１コマンドに基づき、前記第１データを前記第１メモリ領域に格納するよう、前記ストレージ装置に指示する制御部と、
前記第１データのデータ量に基づき、前記第１メモリ領域における前記ガベージコレクションの実行の要否を判定し、前記第１データのデータ量に基づいて前記ガベージコレクションの実行が必要と判定された場合、前記ストレージ装置に前記第１メモリ領域の前記ガベージコレクションの実行を指示するガベージコレクション指示部と
を有し
前記制御部は、前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示した場合であって、前記第１メモリ領域の前記ガベージコレクションが実行されている期間に第２データの書込みを要求する第２コマンドを受信した場合に、前記第２メモリ領域に前記第２データを保持するよう前記ストレージ装置に指示する
ことを特徴とするストレージ制御装置。
【請求項１０】
第１メモリ領域及び第２メモリ領域を有し、前記第１メモリ領域の空き容量に基づいて前記第１メモリ領域のガベージコレクションの実行の要否を判定するストレージ装置と、前記ストレージ装置に接続されたストレージ制御装置と、を用いたデータ格納方法であって、
前記ストレージ制御装置が、第１データの書込みを要求する第１コマンドを受信し、
前記ストレージ制御装置が、前記第１コマンドに基づき、前記第１データを前記第１メモリ領域に格納するよう、前記ストレージ装置に指示し、
前記ストレージ制御装置が、前記第１データのデータ量に基づき、前記第１メモリ領域おける前記ガベージコレクションの実行の要否を判定し、
前記第１データの前記データ量に基づいて前記ガベージコレクションの実行が必要と判定された場合、前記ストレージ制御装置が、前記ストレージ装置に前記第１メモリ領域の前記ガベージコレクションの実行を指示し、
前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示した場合であって、前記第１メモリ領域の前記ガベージコレクションが実行されている期間に第２データの書込みを要求する第２コマンドが受信された場合に、前記ストレージ制御装置が、前記第２メモリ領域に前記第２データを保持するよう前記ストレージ装置に指示する
ことを特徴とするデータ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ストレージシステム、ストレージ制御装置及びデータ格納方法に関する。
【背景技術】
【０００２】
近年、ストレージシステムにおいて、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）がデータを格納するストレージ装置として利用されている。ＳＳＤは、データ格納部として不揮発性メモリであるフラッシュメモリを含み、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）に比べて格納されたデータへのランダムアクセス特性などにおいて優位性を有する。
【０００３】
フラッシュメモリは、データ格納領域として複数のブロックを有し、各ブロックは更に複数のページを含む。フラッシュメモリへのデータの書込み及びフラッシュメモリからのデータの読出しは、ページ単位で実行される。尚、フラッシュメモリにおいてはデータが書込まれたページへのデータの上書きを行うことができない。そのため、既にデータが格納されたページに新たなデータを格納するためには、一度当該ページのデータを消去し、その後に新たなデータを格納する必要がある。
【０００４】
また、フラッシュメモリに格納されたデータの消去はブロック単位でしか行うことができない。例えば、第１ブロックに含まれる第１ページには有効データが格納され、第１ブロックに含まれる第２ページには不要データが格納されている場合、第２ページに格納された不要データだけを選択的に消去することはできない。そのため、不要データによってフラッシュメモリの空き容量が圧迫される場合、不要データを削除して空き容量を確保するためには、第１ページに格納されている有効データを第２ブロックに退避させたうえで、第１ブロック全体のデータの消去を行う必要がある。
【０００５】
また、例えばホストサーバのような情報処理装置が、データの論理アドレスに連続性がないデータをＳＳＤに書込む場合、データがＳＳＤ内において離散的に格納され、空き容量が減少する原因となる。このような場合、空き容量を増加させる処理として、ガベージコレクションが知られている。ガベージコレクションは一般的に、ＳＳＤが自身の記憶容量のうち空き容量が所定値以下になったことを検出することにより実行が開始される。尚、本願明細書において「空き容量」とは、ＳＳＤの有する物理容量から、ホストサーバなどの情報処理装置が使用可能な容量である論理容量を差し引いた値であり、余裕領域と呼ばれる領域の容量に相当する。ガベージコレクションの実行においては、データの一次的な退避などの処理が余裕領域を用いて行われる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４―０５９８５０号公報
【特許文献２】特開平７−０２３４７６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ガベージコレクションが実行されているフラッシュメモリに対してデータの書込みを行うことはできない。そのため、ガベージコレクションが実行されている最中に、外部の情報処理装置、例えばストレージ装置にアクセス可能なホストサーバからデータの書込みの要求があった場合、当該書込みの要求はガベージコレクションの実行が完了するまで待たされる。そしてガベージコレクションの実行が完了した後、当該書込みの要求に基づくデータの書込みがフラッシュメモリに対して実行される。そのため、ホストサーバに対するＳＳＤからの応答速度が低下することになる。本開示は、ガベージコレクションの実行中にストレージ装置にデータ書込みの要求があった場合に、書込みの要求に対する応答速度が低下することを抑制することを目的とするものである。
【課題を解決するための手段】
【０００８】
開示のストレージシステムは、第１メモリ領域及び第２メモリ領域を有し、前記第１メモリ領域の空き容量に基づいて前記第１メモリ領域のガベージコレクションの実行の要否を判定するストレージ装置と、前記ストレージ装置に接続されたストレージ制御装置と、を含み、前記ストレージ制御装置は、第１データの書込みを要求する第１コマンドを受信し、前記第１コマンドに基づき、前記第１データを前記第１メモリ領域に格納するよう、前記ストレージ装置に指示し、前記第１データのデータ量に基づき、前記第１メモリ領域おける前記ガベージコレクションの実行の要否を判定し、前記第１データの前記データ量に基づいて前記ガベージコレクションの実行が必要と判定された場合、前記ストレージ装置に前記第１メモリ領域の前記ガベージコレクションの実行を指示し、前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示した場合であって、前記第１メモリ領域の前記ガベージコレクションが実行されている期間に第２データの書込みを要求する第２コマンドを受信した場合に、前記第２メモリ領域に前記第２データを保持するよう前記ストレージ装置に指示することを特徴とする。
【発明の効果】
【０００９】
ストレージ装置内においてガベージコレクションが実行されている最中に、ストレージ装置にデータ書込みの要求があった場合であっても、データ書込みの要求に対する応答速度の低下を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置、ストレージ制御装置、ストレージ装置及び操作端末を含むシステムの構成図である。
【図２】ストレージ制御装置のハードウェアを示す図である。
【図３】ストレージ装置のハードウェアを示す図である。
【図４】ストレージ装置において実行されるガベージコレクションを説明するための図である。
【図５】比較例におけるデータの格納及びガベージコレクションの処理概要図である。
【図６Ａ】実施例におけるデータの格納及びガベージコレクションの処理概要図である。
【図６Ｂ】実施例におけるデータの格納及びガベージコレクションの処理概要図である。
【図７】実施例におけるＣＰＵの機能ブロック図である。
【図８】実施例においてＣＰＵによって実行される第１のダミーデータ送信に関する処理のフローチャートである。
【図９】実施例においてＣＰＵによって実行される第２のダミーデータ送信に関する処理のフローチャートである。
【図１０】実施例におけるコマンドテーブルの一例である。
【図１１】実施例においてＣＰＵによって実行される処理のうち、主にコマンドテーブルの作成に関する処理のフローチャートである。
【図１２】実施例においてＣＰＵによって実行される処理のうち、主にガベージコレクションの指示に関する処理のフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、情報処理装置１００、ストレージ制御装置２００、ストレージ装置３００及び操作端末４００を含むシステム１の構成図である。情報処理装置１００は例えばホストサーバであり、必要に応じてデータをストレージ装置３００に格納させ、またデータをストレージ装置３００から読み出す。ストレージ制御装置２００は例えばストレージ装置３００を制御するためのＣｏｎｔｒｏｌ  Ｍｏｄｕｌｅ（ＣＭ）である。ストレージ装置３００はデータを記憶するデータ格納装置であり、例えばＳＳＤである。操作端末４００は、ストレージ制御装置２００を操作するための装置であり、例えばストレージ制御装置２００に接続されたＰｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（ＰＣ）である。
【００１２】
情報処理装置１００は、データをストレージ装置３００に格納させる場合、ストレージ制御装置２００に対してデータ及びデータ書込みコマンドを送信する。ストレージ制御装置２００は情報処理装置１００から受信したデータ及びデータ書込みコマンドに基づいて、ストレージ装置３００に対してデータの格納を指示する。ストレージ装置３００は、ストレージ制御装置２００から受信したデータをストレージ装置３００に含まれるデータ格納部、例えばフラッシュメモリに格納する。
【００１３】
またストレージ装置３００は、データをフラッシュメモリに格納した後に、データ格納が完了したことを示す完了通知をストレージ制御装置２００へ送信する。ストレージ制御装置２００は、ストレージ装置３００から受信した完了通知に基づき、データ書込みが完了したことを情報処理装置１００へ通知する。本明細書においては、ストレージ制御装置２００がストレージ装置３００に対してデータの格納を指示してから、ストレージ制御装置２００がストレージ装置３００からデータ格納の完了通知を受信するまでの時間が、データ書込みコマンドに対する応答時間として定義される。尚、図１においては、情報処理装置１００及びストレージ装置３００はそれぞれ一つずつストレージ制御装置２００に接続されているが、複数の情報処理装置１００及び複数のストレージ装置３００が、ストレージ制御装置２００に接続されてもよい。また複数のストレージ装置３００はＲｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ Ｄｉｓｋｓ（ＲＡＩＤ）グループを構成してもよい。
【００１４】
図２は、ストレージ制御装置２００のハードウェアを示す図である。ストレージ制御装置２００は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）２１０と、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）２５０と、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）２５５と、Ｃｈａｎｎｅｌ  Ａｄａｐｔｏｒ（ＣＡ）２６０と、インターフェースカード２７０と、Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ（ＩＯＣ）２８０と、Ｅｘｐａｎｄｅｒ（ＥＸＰ）２９０とを有する。ＣＰＵ２１０は、ＲＯＭ２５０に格納されたコンピュータプログラムをＲＡＭ２５５にロードして実行することにより、所定のデータ処理を行う。ＣＰＵ２１０は、ハードウェアプロセッサの一例であり、Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ（ＭＣＵ）、Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＭＰＵ）、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ（ＤＳＰ）、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）等がＣＰＵ２１０の代わりに用いられてもよい。
【００１５】
ＲＯＭ２５０には、ＣＰＵ２１０によって実行されるコンピュータプログラム等が格納される。ＲＯＭ２５０は不揮発性メモリデバイスの一例であり、Ｍａｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（マスクＲＯＭ）や、Ｐｒｏｇｒａｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＰＲＯＭ）、フラッシュメモリ、Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＭＲＡＭ）、Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲｅＲＡＭ）、Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＦｅＲＡＭ）等が適用可能である。ＲＡＭ２５５には、ＲＯＭ２５０に格納されているコンピュータプログラムがロードされる。またＲＡＭ２５５には、ＣＰＵ２１０によって処理されるデータが保持される。ＲＡＭ２５５は揮発性メモリデバイスの一例であり、Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＲＡＭ）やＤｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＤＲＡＭ）等が適用可能である。ＣＡ２６０は、情報処理装置１００に対するインターフェースとして機能する。インターフェースカード２７０は操作端末４００とのインターフェースとして機能する。ＩＯＣ２８０は情報処理装置１００とストレージ装置３００との間で行われるデータの送受信を制御する。ＥＸＰ２９０は、情報処理装置１００とストレージ装置３００との間で行われるデータの送受信を中継する。
【００１６】
図３は、ストレージ装置３００のハードウェアを示す図である。ストレージ装置３００は、ＣＰＵ３１０、ＲＯＭ３５０、ＲＡＭ３５５、フラッシュメモリ３６０及びインターフェースカード３７０を有する。ＣＰＵ３１０は、ＲＯＭ３５０に格納されたコンピュータプログラムをＲＡＭ３５５にロードして実行することにより、所定のデータ処理を行う。例えばＣＰＵ３１０は、フラッシュメモリ３６０の空き容量が所定値以下に減少すると、フラッシュメモリ３６０のガベージコレクションを実行する。ＣＰＵ３１０は、ハードウェアプロセッサの一例であり、ＭＣＵ、ＭＰＵ、ＤＳＰ、ＦＰＧＡ等がＣＰＵ３１０の代わりに用いられてもよい。
【００１７】
ＲＯＭ３５０には、ＣＰＵ３１０によって実行されるコンピュータプログラム等が格納される。ＲＯＭ３５０は不揮発性メモリデバイスの一例であり、マスクＲＯＭや、ＰＲＯＭ、フラッシュメモリ、ＭＲＡＭ、ＲｅＲＡＭ、又はＦｅＲＡＭ等が適用可能である。ＲＡＭ３５５には、ＲＯＭ３５０に格納されているコンピュータプログラムがロードされる。またＲＡＭ３５５には、ＣＰＵ３１０によって処理されるデータが保持される。ＲＡＭ３５５は揮発性メモリデバイスの一例であり、ＳＲＡＭやＤＲＡＭ等が適用可能である。
【００１８】
フラッシュメモリ３６０はデータ格納部であり、ストレージ制御装置２００から送信されたデータがフラッシュメモリ３６０に格納される。フラッシュメモリ３６０は、例えばＮＡＮＤ型のフラッシュメモリである。フラッシュメモリ３６０は複数のフラッシュメモリチップを含んでもよい。インターフェースカード３７０はストレージ制御装置２００に対するインターフェースとして機能する。
【００１９】
図４は、ストレージ装置３００においてフラッシュメモリ３６０に対して実行されるガベージコレクションを説明するための図である。フラッシュメモリ３６０には、データ記憶領域として複数のブロックが含まれ、また各ブロックには複数のページが含まれる。１ブロックには例えば６４ページが含まれる。また各ページのデータ容量は例えば１６Ｋバイトである。フラッシュメモリ３６０においては、データの書込み及び読出しはページ単位で行われる。またフラッシュメモリ３６０においては、ある領域にデータが格納された後に当該領域に対して別のデータの上書きを行うことはできない。そのため、当該領域のデータを更新する場合は、当該領域に既に格納されているデータを消去した後、当該領域に更新データを格納する必要がある。尚、データの消去は複数のページを含むブロック単位で行われる。
【００２０】
フラッシュメモリ３６０に対して格納されるデータのアドレスが連続的でない場合、つまりランダムなアドレスに対してデータが格納される場合には、データ格納領域が有効に使用されず、データが格納されていないにも関わらずデータを格納することができない領域が発生する場合がある。また、フラッシュメモリ３６０に格納されたデータであって既に不要となったデータがフラッシュメモリ３６０内に残存すると、新たなデータを格納するための空き容量が減少する。そこで、不要になったデータを消去し、また離散的に格納されているデータの格納場所を整理するガベージコレクションが実行される。
【００２１】
図４の（Ａ）はガベージコレクション前のフラッシュメモリ３６０のデータ保持領域の様子を示し、図４の（Ｂ）はガベージコレクション後のフラッシュメモリ３６０のデータ保持領域の様子を示す。尚、図中において、格子上に配置された複数の領域の各々がブロックに相当し、黒塗の領域は何等かのデータが格納されているブロックを意味し、白塗の領域はデータが格納されていないブロックを意味する。ガベージコレクションが実行されることにより、空き容量を増加させ、また離散的に格納されていたデータを再配置させることができる。
【００２２】
ここで実施例に対する比較例を用いて、ストレージ装置３００においてガベージコレクションが実行されている最中に、ストレージ制御装置２００からストレージ装置３００へのデータ格納の指示がなされた場合の問題点を説明する。
【００２３】
図５は、比較例におけるデータの格納及びガベージコレクションの処理概要図である。処理Ｓ５００において情報処理装置１００は、ストレージ制御装置２００に対して論理ボリュームの設定を依頼する。論理ボリュームとは、ストレージ装置３００内に論理的に設定されるデータ格納領域であって、ここでは情報処理装置１００がデータを格納するために確保される領域を意味する。処理Ｓ５０１においてストレージ制御装置２００は、情報処理装置１００からの依頼に基づいてストレージ装置３００内に論理ボリュームを設定する。また処理Ｓ５０２においてストレージ制御装置２００は、設定された論理ボリュームについて初期化処理を行う。具体的には、設定された論理ボリュームに含まれる全てのブロックについてデータ消去の処理を行う。処理Ｓ５０３においてストレージ制御装置２００は、情報処理装置１００に対して、設定された論理ボリュームに関する通知を行う。処理Ｓ５０４において情報処理装置１００は、データ書込みコマンド及び書込み対象のデータをストレージ制御装置２００へ送信する。ストレージ制御装置２００は、データ書込みコマンド及びデータを受信し、処理Ｓ５０５においてデータをストレージ装置３００へ送信し、データの格納をストレージ装置３００へ指示する。処理Ｓ５０６においてストレージ装置３００は、データをフラッシュメモリ３６０へ格納する。処理Ｓ５０７においてストレージ装置３００は、データの格納が完了したことを示す完了通知をストレージ制御装置２００へ送信する。処理Ｓ５０８においてストレージ制御装置２００は、ストレージ装置３００から完了通知を受信したことを情報処理装置１００へ通知する。
【００２４】
またストレージ装置３００は、処理Ｓ５０６においてデータをフラッシュメモリ３６０に格納した後、フラッシュメモリ３６０の空き容量をカウントする。そして処理Ｓ５０９においてストレージ装置３００は、カウントされた空き容量が、ストレージ装置３００内で定められた閾値以下となっているか否かを判定する。処理Ｓ５０９において、カウントされた空き容量が閾値以下となっていると検出されると、処理Ｓ５１０においてストレージ装置３００はガベージコレクションを実行し、空き容量を増加させる。一方、情報処理装置１００が処理Ｓ５１１においてデータ及びデータ書込みコマンドをストレージ制御装置２００へ送信したとする。ストレージ制御装置２００は処理Ｓ５１２において、当該データをストレージ装置３００へ送信し、ストレージ装置３００に対してデータの格納を指示する。この状態において、ストレージ装置３００はガベージコレクションの実行中であるものとする。この場合、ガベージコレクションを実行中のフラッシュメモリ３６０にデータを格納させることができないため、この格納の指示はガベージコレクションが終了するまで待ちの状態となる。ガベージコレクションが終了した後、処理Ｓ５１３においてストレージ装置３００は、データをフラッシュメモリ３６０に格納し、更に処理Ｓ５１４においてストレージ装置３００は、データの格納が完了したことを示す完了通知をストレージ制御装置２００へ送信する。そして処理Ｓ５１５においてストレージ制御装置２００は、完了通知を受信したことを情報処理装置１００へ通知する。
【００２５】
このように、ストレージ装置３００においてガベージコレクションが実行されている最中に情報処理装置１００からデータ書込みコマンドが送信された場合、データ書込みコマンドに対応するデータの格納が遅延し、よってデータ書込みコマンドに対する応答速度が低下する。
【００２６】
図６Ａ及び図６Ｂは、実施例におけるデータの格納及びガベージコレクションの処理概要図である。図６Ａにおいて、ストレージ装置３００は第１メモリ領域３０１と第２メモリ領域３０２を有する。第１メモリ領域３０１と第２メモリ領域３０２は何れもフラッシュメモリ３６０の一部である。処理Ｓ６００において情報処理装置１００は、ストレージ制御装置２００に対して論理ボリュームの設定を依頼する。処理Ｓ６０１においてストレージ制御装置２００は、情報処理装置１００からの依頼に基づいてストレージ装置３００の第１メモリ領域３０１内に論理ボリュームを設定する。また処理Ｓ６０２においてストレージ制御装置２００は、設定された論理ボリュームについて初期化処理を行う。具体的には、設定された論理ボリュームに含まれる全てのブロックについてデータ消去の処理を行う。
【００２７】
次に、処理Ｓ６０３においてストレージ制御装置２００は、設定された論理ボリュームに対して第１のダミーデータ送信処理を行う。この第１のダミーデータ送信処理においてストレージ制御装置２００は、ダミーデータをストレージ装置３００へ送信してダミーデータの格納をストレージ装置３００に指示する。処理Ｓ６０４においてストレージ装置３００は、ダミーデータを第１メモリ領域３０１に格納する。その後、処理Ｓ６０５においてストレージ装置３００は、ストレージ制御装置２００へ完了通知を送信する。処理Ｓ６０６においてストレージ制御装置２００は、ダミーデータの格納をストレージ装置３００に指示してから、ストレージ装置３００から完了通知を受信するまでの応答時間を測定し、測定された応答時間に基づいて応答時間閾値を設定する。応答時間閾値は、測定された応答時間に１より大きい値、例えば１．５を乗じた値に設定される。
【００２８】
ここで、設定された応答時間閾値の技術的意義について説明する。処理Ｓ６０３において第１のダミーデータ送信処理が行われる前に、処理Ｓ６０２において論理ボリュームの初期化、つまり設定された論理ボリュームに含まれる全てのブロックについてデータの消去が行われている。そのため、ストレージ装置３００に対して第１のダミーデータ送信処理が行われた時点においては第１メモリ領域３０１には未だ空き容量が十分にあり、ダミーデータの格納によってガベージコレクションがストレージ装置３００内で実行されることはないものと考えられる。よって、ストレージ制御装置２００がダミーデータの格納の指示を行ってから、ダミーデータの格納が完了したことを示す完了通知を受信するまでの時間（応答時間）は、ガベージコレクションによるデータ格納処理の遅延が発生しなかった場合の応答時間であると考えることができる。通常、ガベージコレクションが実行されている最中にデータ格納の指示がなされた場合の応答時間は、ガベージコレクションが実行されていない状態における応答時間の１．５倍以上、例えば８倍程度になると考えられる。そのため、処理Ｓ６０６においてストレージ制御装置２００は、第１のダミーデータ送信処理において測定された応答時間の例えば１．５倍の応答時間を、応答時間閾値として設定する。つまり応答時間閾値とは、ストレージ装置３００においてガベージコレクションが実行されている場合に要するであろうと予測される応答時間を意味する。尚、図６Ａにおいては、処理Ｓ６０３から処理Ｓ６０５の処理は一度だけ実行されるように図示されているが、これらの処理が複数回実行されてもよい。その場合は、処理Ｓ６０６においてストレージ制御装置２００は、複数回の第１のダミーデータ送信処理で得られた複数の応答時間の値に基づいて、応答時間閾値を設定してもよい。例えば、複数の応答時間の値の平均値を１．５倍した値が応答時間閾値として設定されてもよい。もしくは、複数の応答時間の値の中の最大となる応答時間を１．５倍した値が応答時間閾値として設定されてもよい。
【００２９】
次に処理Ｓ６０７においてストレージ制御装置２００は、第２のダミーデータ送信処理を行う。この第２のダミーデータ送信処理においても、ストレージ制御装置２００はダミーデータをストレージ装置３００へ送信し、ストレージ装置３００に対してダミーデータの格納を指示する。処理Ｓ６０８においてストレージ装置３００は、ダミーデータを第１メモリ領域３０１に格納し、処理Ｓ６０９においてストレージ装置３００は、完了通知をストレージ制御装置２００へ送信する。ストレージ制御装置２００は、第２のダミーデータ送信処理における応答時間を測定し、測定された応答時間が、処理Ｓ６０６において設定された応答時間閾値以上となったか否かを判定する。測定された応答時間が応答時間閾値以上となっていない場合は、第２のダミーデータ送信処理を繰り返して実行する。繰り返して実行される第２のダミーデータ送信処理において、各ダミーデータの論理アドレスには、連続性のない論理アドレスが設定されることが好ましい。例えば、フラッシュメモリ３６０の１ページのデータ容量が１６Ｋバイトである場合、ダミーデータのデータ量を１Ｋバイトとし、論理アドレスを１６Ｋバイトずつシフトさせながら、複数回のダミーデータ送信処理を実行する。これにより、ストレージ装置３００に送信されるダミーデータ量を抑えつつ、フラッシュメモリ３６０の空き容量を効率的に減少させることができる。
【００３０】
第２のダミーデータ送信処理において測定された応答時間が応答時間閾値以上となった場合は、ストレージ装置３００がガベージコレクションを実行している最中にダミーデータの格納の指示がなされたことが推定される。そこで処理Ｓ６１０においてストレージ制御装置２００は、第２のダミーデータ送信処理においてストレージ装置３００へ送信されたダミーデータの合計量を算出し、算出されたダミーデータの総量に、０よりも大きく１よりも小さい値、例えば０．８を乗じた値を、データ量閾値として設定する。
【００３１】
ここで、データ量閾値の技術的意義について説明する。処理Ｓ６１０において算出された、第２のダミーデータ送信処理においてストレージ装置３００に送信されたダミーデータの合計量は、「第１メモリ領域３０１に格納されたランダムな論理アドレスを有するデータの合計量であって、ストレージ装置３００にガベージコレクションの実行を開始させるデータ量」を意味する。つまり、ランダムな論理アドレスを有するデータが、算出されたダミーデータの合計量だけストレージ装置３００に送信された場合に、ストレージ装置３００はガベージコレクションを実行する、という予測が立てられる。データ量閾値は、このデータ合計量に、０よりも大きく１よりも小さい値、例えば０．８を乗じた値として設定される。言い換えれば、ストレージ装置３００に送信されたデータが設定されたデータ量閾値に達した場合は、近い将来にストレージ装置３００がガベージコレクションを実行する可能性が高いことを意味する。
【００３２】
処理Ｓ６１１においてストレージ制御装置２００は、作成された論理ボリュームに関する通知を情報処理装置１００に対して行う。処理Ｓ６１２において情報処理装置１００は、データ書込みコマンド及び書込み対象のデータをストレージ制御装置２００へ送信する。データ書込みコマンド及びデータを受信したストレージ制御装置２００は、処理Ｓ６１３においてデータをストレージ装置３００へ送信し、データの格納をストレージ装置３００に指示する。処理Ｓ６１４においてストレージ装置３００は、データを第１メモリ領域３０１へ格納する。処理Ｓ６１５においてストレージ装置３００は、データの格納が完了したことを示す完了通知をストレージ制御装置２００へ送信する。処理Ｓ６１６においてストレージ制御装置２００は、完了通知を受信したことを情報処理装置１００へ通知する。
【００３３】
処理フローは図６Ｂに示される処理に進む。ストレージ制御装置２００は、ストレージ装置３００へ送信されたデータであって、ランダムな論理アドレスを有するデータの合計量を算出し、処理Ｓ６１７においてデータの合計量が処理Ｓ６１０において設定されたデータ量閾値以上になったか否かを判定する。処理Ｓ６１７において、ランダムな論理アドレスを有するデータの合計量がデータ量閾値以上になったと判定された場合、処理Ｓ６１８においてストレージ制御装置２００は、第１メモリ領域３０１に代えて第２メモリ領域３０２を、データ格納部として設定する。そして処理Ｓ６１８においてストレージ制御装置２００は、ストレージ装置３００にガベージコレクションの実行を指示する。処理Ｓ６１９においてストレージ装置３００は、第１メモリ領域３０１のガベージコレクションを実行する。このように本実施例においては、ストレージ装置３００に送信されたデータの合計量がデータ量閾値以上となった時点でストレージ装置３００にガベージコレクションの実行が指示される。これにより、ストレージ装置３００が第１メモリ領域３０１の空き容量に基づいて自主的にガベージコレクションを実行するよりも早いタイミングで、ストレージ制御装置２００がストレージ装置３００にガベージコレクションの実行を指示することができる。言い換えれば、ガベージコレクションの実行タイミングを、ストレージ制御装置２００側で制御することができる。また本実施例においてストレージ制御装置２００は、ガベージコレクションの実行をストレージ装置３００に指示する際に、ガベージコレクションの対象領域である第１メモリ領域３０１とは異なる第２メモリ領域３０２を、データ格納部として設定する。これにより、ガベージコレクションの実行タイミングをストレージ制御装置２００側で制御し、かつその実行タイミングに情報処理装置１００からデータ書込みコマンドを受信した場合には、第２メモリ領域３０２にデータを一時的に保持させることにより、データ書込みコマンドに対する応答時間が増加することを抑制することができる。
【００３４】
図６Ｂの説明に戻り、処理Ｓ６２０において情報処理装置１００が、データ及びデータ書込みコマンドをストレージ制御装置２００へ送信する。処理Ｓ６２１においてストレージ制御装置２００は、データの格納をストレージ装置３００へ指示する。尚、処理Ｓ６２１においてストレージ制御装置２００は、ストレージ装置３００に送信されたデータの論理アドレスを記憶しておく。処理Ｓ６２２においてストレージ装置３００は、第１メモリ領域３０１ではなく、処理Ｓ６１８おいてデータの格納部として設定された第２メモリ領域３０２に、データを一時的に保持させる。これにより、第１メモリ領域３０１のガベージコレクションと、第２メモリ領域３０２へのデータ保存が時間的に並列に実行される。第２メモリ領域３０２へのデータ保存が完了すると、処理Ｓ６２３においてストレージ装置３００はデータの保存の完了通知をストレージ制御装置２００に送信する。処理Ｓ６２４においてストレージ制御装置２００は、完了通知の受信を情報処理装置１００へ通知する。これにより、ガベージコレクションが実行されている最中に情報処理装置１００がデータ書込みコマンドを送信した場合であっても、データ書込みコマンドに関する応答時間が長くなることが抑制される。処理Ｓ６１９におけるガベージコレクションの実行が終了すると、処理Ｓ６２５においてストレージ制御装置２００は、第２メモリ領域３０２をデータ格納部とする設定を解除する。これにより、第１メモリ領域３０１が再度、データ格納部として設定される。その後、処理Ｓ６２６においてストレージ制御装置２００は、処理Ｓ６２１において記憶された論理アドレスに基づいて、第２メモリ領域３０２に保持されたデータを読み出す。読み出されたデータは、例えばストレージ制御装置２００のＲＡＭ２５５に保持される。処理Ｓ６２７においてストレージ制御装置２００は、ＲＡＭ２５５に保持されたデータをストレージ装置３００に送信し、当該データを格納するよう、ストレージ装置３００に指示する。第１メモリ領域３０１がデータ格納部として設定されているため、処理Ｓ６２８においてストレージ装置３００は、データを第１メモリ領域３０１に格納する。
【００３５】
図６Ａ及び６Ｂにて説明されたように、本実施例においては、ストレージ装置３００がガベージコレクションを自主的に実行するよりも早いタイミングにおいて、ストレージ制御装置２００がガベージコレクションの実行をストレージ装置３００へ指示する。これにより、ストレージ制御装置２００がガベージコレクションの実行のタイミングを決定することができる。またストレージ制御装置２００は、第１メモリ領域３０１についてガベージコレクションが実行される期間中、代替データ格納部として第２メモリ領域３０２を設定することで、ガベージコレクションが実行される間であっても、データ書込みコマンドに対応する応答時間が長くなることを抑制することができる。また、ストレージ制御装置２００は、情報処理装置１００が使用する論理ボリュームが設定された後、第１のダミーデータ送信処理及び第２のダミーデータ送信処理を行うことにより、データ量閾値を算出する。このデータ量閾値を用いることによりストレージ制御装置２００は、ストレージ装置３００に送信されたデータの合計量に基づいて、ストレージ装置３００が自主的にガベージコレクションを実行させるよりも早いタイミングを特定することができる。
【００３６】
尚、図６Ａ及び６Ｂにおいては、情報処理装置１００からストレージ制御装置２００に対して論理ボリュームの設定が依頼されることに応じて、データ量閾値が設定される例が説明された。データ量閾値は、設定される論理ボリュームのデータ容量に基づいて定まるものと考えられる。よって変形例として、論理ボリュームの容量とデータ量閾値との関係を規定する情報を予め準備しておき、情報処理装置１００から論理ボリュームの設定依頼がなされた際に、論理ボリュームの容量と前記の情報に基づいて、データ閾値量が設定されてもよい。
【００３７】
また図６Ａ及び６Ｂにおいては、第２メモリ領域３０２は第１メモリ領域３０１と同様にフラッシュメモリ３６０の一部の領域である例が説明された。変形例として、フラッシュメモリ３６０以外のメモリ、例えばストレージ装置３００に含まれるＲＡＭ３５５の少なくとも一部が第２メモリ領域３０２として利用されてもよい。また複数のストレージ装置３００がストレージ制御装置２００によって制御される場合、第２メモリ領域３０２は複数のストレージ装置３００に対して共通に設けられてもよい。
【００３８】
尚、図６Ａ及び６Ｂにおいてストレージ制御装置２００は、ダミーデータをストレージ装置３００に送信することにより応答時間閾値及びデータ量閾値を設定したが、他のデータを用いて応答時間閾値及びデータ量閾値が設定されてもよい。例えば、情報処理装置１００がストレージ制御装置２００へ送信した書込み対象のデータを用いて、応答時間閾値及びデータ量閾値が設定されてもよい。具体的には、まず情報処理装置１００が、論理ボリュームの設定をストレージ制御装置２００に依頼する。ストレージ制御装置２００は、論理ボリュームを設定し、情報処理装置１００に対して通知を行う。その後、情報処理装置１００は、データ書込みコマンド及び書込み対象のデータをストレージ制御装置２００へ送信する。ストレージ制御装置２００は、データの格納をストレージ装置３００へ指示し、応答時間を測定する。ストレージ制御装置２００は、測定された応答時間に基づいて応答時間閾値を設定する。またストレージ制御装置２００は、情報処理装置１００から受信されてストレージ装置３００へ送信されたデータであって、ランダムな論理アドレスを有するデータのデータ量を順次加算して合計データ量を算出する。そして、応答時間が応答時間閾値を超えた時点における合計データ量に基づいて、データ量閾値が設定される。データ量閾値が設定された後は、ストレージ制御装置２００は処理Ｓ６１７と同様に、ストレージ装置３００に対して送信されたデータであってランダムな論理アドレスを有するデータの合計データ量が、データ量閾値以上となったか否かの判定を行う。合計データ量がデータ量閾値以上となったと判定された場合は、ストレージ制御装置２００は処理Ｓ６１８と同様に、ストレージ装置３００に対してガベージコレクションの実行を指示する。このような処理により、ダミーデータが使用されなくても本発明は実施され得る。
【００３９】
図７は、実施例におけるＣＰＵ２１０の機能ブロック図である。ＣＰＵ２１０は、例えばＲＯＭ２５０からＲＡＭ２５５にロードされたコンピュータプログラムを実行することにより、送受信部２１１、コマンドテーブル作成部２１２、ガベージコレクション指示部２１３、ダミーデータ送信処理部２１４、応答時間測定部２１５、データ量算出部２１６、制御部２１７として機能する。またＣＰＵ２１０は、コマンドテーブル２１８を保持する。コマンドテーブル２１８は、ＣＰＵ２１０の外部、例えばＲＯＭ２５０内やＲＡＭ２５５内に保持されてもよい。
【００４０】
送受信部２１１は、情報処理装置１００から送信されるコマンドやデータ、ストレージ装置３００から送信される完了通知を受信し、またストレージ装置３００へのデータ、情報処理装置１００への通知信号を送信する。コマンドテーブル作成部２１２はコマンドテーブル２１８の作成を行う。コマンドテーブル２１８の作成方法については後述する。ガベージコレクション指示部２１３は、ストレージ装置３００に対してガベージコレクションの実行を指示する。ダミーデータ送信処理部２１４は、第１のダミーデータ送信処理及び第２のダミーデータ送信処理を実行する。応答時間測定部２１５は、第１のダミーデータ送信処理及び第２のダミーデータ送信処理において、応答時間を測定する。またデータ量算出部２１６は、第２のダミーデータ送信処理においてストレージ装置３００へ送信されたデータであってランダムな論理アドレスを有するデータの合計量を算出する。制御部２１７は、ストレージ装置３００に対する制御、例えばガベージコレクション指示部２１３によってストレージ装置３００にガベージコレクションの実行が指示される際、第２メモリ領域３０２を、第１メモリ領域３０１に代えてデータ格納部として利用するようストレージ装置３００に対する制御を行う。コマンドテーブル２１８は、コマンドテーブル作成部２１２により生成されるテーブルであり、詳細については後述する。
【００４１】
図８は、実施例においてＣＰＵ２１０によって実行される第１のダミーデータ送信に関する処理のフローチャートである。図８に示される処理フローは処理Ｓ１０００により開始され、処理Ｓ１００１においてダミーデータ送信処理部２１４が、ダミーデータをストレージ装置３００に送信し、ダミーデータの格納をストレージ装置３００に指示する。処理Ｓ１００２において応答時間測定部２１５が、ダミーデータがストレージ装置３００に送信された時刻を記録する。そして処理Ｓ１００３において送受信部２１１が、ストレージ装置３００からダミーデータの格納が完了した旨の完了通知を受信する。処理Ｓ１００４において応答時間測定部２１５が、完了通知が受信された時刻と、ダミーデータがストレージ装置３００に送信された時刻との差分に基づいて応答時間を算出する。処理Ｓ１００５において応答時間測定部２１５が、算出された応答時間に基づき、応答時間閾値を設定する。例えば、応答時間に１．５を乗じた値が応答時間閾値として設定される。処理Ｓ１００５の後、処理Ｓ１００６において処理フローが終了する。
【００４２】
図９は、実施例においてＣＰＵ２１０によって実行される第２のダミーデータ送信に関する処理のフローチャートである。図９に示される処理フローは処理Ｓ１１００により開始され、処理Ｓ１１０１において制御部２１７は、第１のダミーデータ送信処理によって第１メモリ領域３０１に格納されたダミーデータの消去を行う。処理Ｓ１１０２においてダミーデータ送信処理部２１４は、ダミーデータをストレージ装置３００に送信する。処理Ｓ１１０３において応答時間測定部２１５は、ダミーデータがストレージ装置３００に送信された時刻を記録する。処理Ｓ１１０４において送受信部２１１が、ダミーデータの格納が完了した旨の完了通知を、ストレージ装置３００から受信する。処理Ｓ１１０５において応答時間測定部２１５が、完了通知が受信された時刻と、ダミーデータが送信された時刻との差分に基づき、応答時間を算出する。処理Ｓ１１０６においてダミーデータ送信処理部２１４が、算出された応答時間と、第１のダミーデータ送信処理に基づいて設定された応答時間閾値とを比較し、算出された応答時間が応答時間閾値以上となったか否かを判定する。算出された応答時間が応答時間閾値以上となったと判定されなかった場合は、処理フローは処理Ｓ１１０２へ戻り、算出された応答時間が応答時間閾値以上となったと判定された場合は、処理フローは処理Ｓ１１０７へ進む。処理Ｓ１１０７においてデータ量算出部２１６は、ストレージ装置３００へ送信されたダミーデータの合計量を算出する。そして処理Ｓ１１０８においてデータ量算出部２１６は、算出されたデータの合計量に基づいてデータ量閾値を設定する。例えばダミーデータの合計量に０．８を乗じた値が、データ量閾値として設定される。その後、処理Ｓ１１０９において処理フローは終了する。
【００４３】
図１０は、実施例におけるコマンドテーブル２１８の一例である。コマンドテーブル２１８は、ストレージ制御装置２００のコマンドテーブル生成部２１２によって生成されるテーブルであって、各コマンドに対して「受信コマンド番号」「データ書込みコマンドフラグ」、「論理アドレス」、「データ量」及び「ランダムフラグ」が登録される。
【００４４】
「受信コマンド番号」は、情報処理装置１００から送信され、ストレージ制御装置２００によって受信されたコマンドの受信番号であり、コマンドテーブル生成部２１２によって付される情報である。「データ書込みコマンドフラグ」は、受信されたコマンドのタイプがデータ書込みコマンドであるか否かを示す情報である。コマンドタイプは、受信されたコマンドに含まれる情報であり、コマンドテーブル作成部２１２によってコマンドから抽出される。コマンドのタイプがデータ書込みである場合に、データ書込みコマンドフラグとして「１」が登録される。コマンドタイプとしては、データ書込み以外に、データ読出しやデータ消去等がある。図１０に示される例において、受信コマンド番号が「２」のコマンド（以下、第２コマンド）のデータ書込みコマンドフラグは「０」であり、これは第２コマンドがデータ書込みコマンド以外のコマンド、例えばデータ読出しコマンドであることを意味する。「論理アドレス」は、情報処理装置１００によって特定されるデータの論理アドレスであって、例えばデータ書込みコマンドであればデータの先頭アドレスが論理アドレスとなる。論理アドレスは、受信されたコマンドに含まれる情報であり、コマンドテーブル作成部２１２によってコマンドから抽出される。「データ量」は、例えばデータ書込みコマンドであれば、書込みの対象となるデータのバイト数によって特定される情報である。データ量は、受信されたコマンドに含まれる情報であり、コマンドテーブル作成部２１２によってコマンドから抽出される。
【００４５】
「ランダムフラグ」は、データ書込みコマンドの論理アドレスが、直近のデータ書込みコマンドの論理アドレスに対してシーケンシャルな論理アドレスを有するか否かを示す情報である。隣接する２つのデータ書込みコマンドの論理アドレスがシーケンシャルであれば、ランダムフラグとして「０」が登録され、隣接する２つのデータ書込みコマンドの論理アドレスがシーケンシャルではなくランダムなものであれば、ランダムフラグとして「１」が登録される。図１０の例では、受信コマンド番号が「１」のコマンド（以下、第１コマンド）のデータ書込みコマンドフラグは「１」であり、その次にデータ書込みコマンドフラグが「１」であるコマンドは受信コマンド番号が「３」のコマンド（以下、第３コマンド）である。この場合、第１コマンドの論理アドレスに第１コマンドのデータ量を加算した値が、第３コマンドの論理アドレスに一致しているか否かが、コマンドテーブル作成部２１２によって判定される。第１コマンドの論理アドレス「０ｘ００００＿００００」に、第１コマンドのデータ量「０ｘ４００」を加算した値は、第３コマンドの論理アドレス「０ｘ０００１＿Ｂ０００」に一致していない。よって第３コマンドは、第１コマンドに対してシーケンシャルな論理アドレスを有するデータ書込みコマンドではないことが分かる。そのため、第３コマンドのランダムフラグとして「１」が登録される。同様に第３コマンドの論理アドレスとその次に受信されたデータ書込みコマンドの論理アドレスがシーケンシャルな関係にあるか、或いはランダムな関係にあるかが判定される。第３コマンドの後に受信されたコマンドであってデータ書込みコマンドフラグが「１」のものは受信コマンド番号が「４」のコマンド（以下、第４コマンド）である。第３コマンドの論理アドレス「０ｘ０００１＿Ｂ０００」に第３コマンドのデータ量「０ｘ１００」を加算した値は、第４コマンドの論理アドレス「０ｘ０００１＿Ｂ１００」に一致する。よって第４コマンドは、第３コマンドに対してシーケンシャルな論理アドレスを有するデータ書込みコマンドであることが分かる。そのため、第４コマンドのランダムフラグの欄には、「０」が登録される。
【００４６】
図１１は、実施例においてＣＰＵ２１０によって実行される処理のうち、主にコマンドテーブル２１８の作成に関する処理のフローチャートである。図１１に示される処理フローは処理Ｓ１２００により開始され、処理Ｓ１２０１において送受信部２１１は、情報処理装置１００からデータ書込みコマンドを受信する。処理Ｓ１２０２においてコマンドテーブル作成部２１２は、受信されたコマンドに含まれる情報から、コマンドタイプ、論理アドレス及びデータ量に関する情報を抽出する。処理Ｓ１２０３においてコマンドテーブル作成部２１２は、データ書込みコマンドが、直近のデータ書込みコマンドに対してランダムな論理アドレスを有するか否かを判定する。データ書込みコマンドが直近のデータ書込みコマンドの論理アドレスに対してランダムであると判定された場合は、処理Ｓ１２０４においてコマンドテーブル作成部２１２が、コマンドテーブル２１８にランダムフラグ「１」を登録する。データ書込みコマンドが直近のデータ書込みコマンドの論理アドレスに対してランダムであると判定されない場合は、処理Ｓ１２０５においてコマンドテーブル作成部２１２が、コマンドテーブル２１８にランダムフラグ「０」を登録する。そして処理Ｓ１２０６において処理フローは終了する。
【００４７】
図１２は、実施例においてＣＰＵ２１０によって実行される処理のうち、主にガベージコレクションの指示に関する処理のフローチャートである。図１２に示される処理フローは処理Ｓ１３００により開始され、処理Ｓ１３０１においてガベージコレクション指示部２１３は、コマンドテーブル２１８を参照し、着目するコマンドのランダムフラグが「１」であるか否かを判定する。ランダムフラグが「１」であると判定されない場合は、処理フローは処理Ｓ１３０２に進み、ランダムフラグが「１」であると判定された場合は、処理フローは処理Ｓ１３０３に進む。処理Ｓ１３０２においてガベージコレクション指示部２１３は、着目するコマンドの番号（受信コマンド番号）を１つ増加させ、処理フローは処理Ｓ１３０１へ戻る。処理Ｓ１３０３においてガベージコレクション指示部２１３は、コマンドのデータ量を、累積的に加算する。「累積的に加算」とは、後述の処理Ｓ１３０４から処理フローが処理Ｓ１３０１に戻るループが形成される場合において、ランダムフラグが「１」である複数のコマンドのデータ量が順次加算されることを意味する。処理Ｓ１３０４においてガベージコレクション指示部２１３は、処理Ｓ１３０３において算出されたデータ量の合計値が、図９の処理Ｓ１１０８にて特定されたデータ量閾値以上になったか否かを判定する。データ量の合計値がデータ量閾値以上になったと判定されない場合は、処理フローは処理Ｓ１３０２へ移行し、データ量の合計値がデータ量閾値以上になったと判定された場合は、処理フローは処理Ｓ１３０５へ進む。処理Ｓ１３０５において制御部２１７は、ストレージ装置３００の第２メモリ領域３０２を、第１メモリ領域３０１に代えてデータ格納部として設定する。処理Ｓ１３０６においてガベージコレクション指示部２１３は、ストレージ装置３００に対してガベージコレクションの実行を指示する。この指示を受けてストレージ装置３００は、第１メモリ領域３０１のガベージコレクションの実行を開始する。処理Ｓ１３０７において制御部２１７は、第１メモリ領域３０１でのガベージコレクションが終了したか否かを判定する。ガベージコレクションが終了したと判定されない場合は、制御部２１７は処理Ｓ１３０７を繰り返し実行する。この場合、制御部２１７は処理Ｓ１３０７の処理を例えば１００ｍｓ毎に実行してもよい。第１メモリ領域３０１でのガベージコレクションが終了したと判定された場合は、処理フローは処理Ｓ１３０８へ進む。処理Ｓ１３０８において制御部２１７は、第２メモリ領域３０２をデータ格納部とする設定を解除する。これにより、その後にデータ書込みコマンドが情報処理装置１００から受信された場合は、データは第１メモリ領域３０１へ格納される。
【００４８】
また、処理Ｓ１３０５において第２メモリ領域３０２がデータ格納部として設定された後、ガベージコレクションの実行が完了するまでの間に、処理Ｓ１３０９において送受信部２１１が情報処理装置１００からのデータ書込みコマンドを受信する。処理Ｓ１３１０において制御部２１７は、データの保存をストレージ装置３００に指示する。この場合、第２メモリ領域３０２がデータ格納部として設定されているため、ストレージ装置３００はデータを第２メモリ領域３０２にて保存する。これにより、第１メモリ領域３０１においてガベージコレクション処理とデータ格納処理とが競合することが避けられる。そしてストレージ装置３００は、第２メモリ領域３０２でのデータの保存が完了すると、ストレージ制御装置２００に対して完了通知を送信する。処理Ｓ１３１１において送受信部２１１は、完了通知をストレージ装置３００から受信する。処理Ｓ１３１２において制御部２１７は、情報処理装置１００に対して完了通知の受信を通知する。
【００４９】
処理Ｓ１３１３において制御部２１７は、第２メモリ領域３０２に保持されたデータを読み出す。処理Ｓ１３１４において制御部２１７は、読み出されたデータを第１メモリ領域３０１へ格納するよう、ストレージ装置３００へ指示する。そして処理フローは、処理Ｓ１３１５において終了する。
【００５０】
図１２において、累積加算されたデータ量がデータ閾値量と比較されることにより、ガベージコレクションの実行の指示がストレージ制御装置２００からストレージ装置３００に対してなされる例が説明された。変形例として、累積加算されたデータ量に経年劣化係数を乗じた値が、データ閾値量と比較されてもよい。フラッシュメモリ３６０は、使用された時間に応じて応答速度が劣化することを考慮し、累積加算されたデータ量に経年劣化係数、例えば１．２を乗じた値がデータ閾値量以上となった場合に、ストレージ制御装置２００からストレージ装置３００に対してガベージコレクションの実行指示がなされてもよい。
【００５１】
以上、本実施例では、ストレージ制御装置２００がガベージコレクションの実行タイミングを判定し、ガベージコレクションの実行をストレージ装置３００に指示する。またガベージコレクションの実行タイミングは、ストレージ装置３００自身が第１メモリ領域３０１の空き容量の減少に基づいてガベージコレクションを実行するタイミングよりも早いタイミングに設定されることが好ましい。これにより、ストレージ制御装置２００がガベージコレクションの実行タイミングを制御することができる。
【００５２】
またストレージ制御装置２００は、第１メモリ領域３０１のガベージコレクションの実行をストレージ装置３００に指示することに伴い、ストレージ装置３００の第２メモリ領域３０２を一時的なデータ格納部として設定する。これにより、第１メモリ領域３０１においてガベージコレクションが実行されている期間において、データ書込みコマンドを情報処理装置１００から受信した場合には、第１メモリ領域３０１のガベージコレクションの終了を待つことなく、第２メモリ領域３０２にデータを保持させることができる。よって情報処理装置１００からのデータ書込みコマンドに対する応答速度の低下を抑制することができる。
【００５３】
開示の実施例に基づき、更に以下の付記を開示する。
（付記１）
第１メモリ領域及び第２メモリ領域を有し、前記第１メモリ領域の空き容量に基づいて前記第１メモリ領域のガベージコレクションの実行の要否を判定するストレージ装置と、
前記ストレージ装置に接続されたストレージ制御装置と、を含み、
前記ストレージ制御装置は、
第１データの書込みを要求する第１コマンドを受信し、
前記第１コマンドに基づき、前記第１データを前記第１メモリ領域に格納するよう、前記ストレージ装置に指示し、
前記第１データのデータ量に基づき、前記第１メモリ領域における前記ガベージコレクションの実行の要否を判定し、
前記第１データの前記データ量に基づいて前記ガベージコレクションの実行が必要と判定された場合、前記ストレージ装置に前記第１メモリ領域の前記ガベージコレクションの実行を指示し、
前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示した場合であって、前記第１メモリ領域の前記ガベージコレクションが実行されている期間に第２データの書込みを要求する第２コマンドを受信した場合に、前記第２メモリ領域に前記第２データを保持するよう前記ストレージ装置に指示する
ことを特徴とするストレージシステム。
（付記２）
前記ストレージ制御装置が前記ガベージコレクションの実行を指示した場合、及び、前記第１メモリ領域の前記空き容量が第１閾値を下回った場合、の少なくとも何れかの場合に、前記ストレージ装置は、前記第１メモリ領域の前記ガベージコレクションを実行する
ことを特徴とする付記１に記載のストレージシステム。
（付記３）
前記ストレージ制御装置は、
前記第１データの格納を前記ストレージ装置へ指示する前に、前記ストレージ装置にダミーデータの格納指示を送信し、
前記ダミーデータの前記格納指示が送信されてから、前記ダミーデータの格納処理が完了したことを示す完了通知を受信するまでの時間と、前記ダミーデータのデータ量とに基づいて、第２閾値を設定し、
前記第１データの前記データ量が前記第２閾値以上となった場合に、前記ストレージ装置に前記ガベージコレクションの実行を指示する
ことを特徴とする付記１又は２に記載のストレージシステム。
（付記４）
前記第２閾値は、前記第１メモリ領域の前記空き容量が前記第１閾値を下回るよりも先に前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示するよう設定される
ことを特徴とする付記３に記載のストレージシステム。
（付記５）
前記ダミーデータの前記格納指示は複数の指示を含み、
前記複数の指示における前記ダミーデータの論理アドレスは互いにランダムなアドレスである
ことを特徴とする付記３又は４に記載のストレージシステム。
（付記６）
前記第１コマンドは、複数のコマンドを含み、
前記ストレージ制御装置は、前記複数のコマンドにおける前記第１データの論理アドレスが互いにランダムなアドレスである場合に、前記第１データの前記データ量に基づき、前記ガベージコレクションの要否を判定する
ことを特徴とする付記１乃至５何れか一つに記載のストレージシステム。
（付記７）
前記ストレージ制御装置は、前記複数のコマンドの第１コマンドの第１論理アドレスに前記第１コマンドのデータ量を加算した値が、前記複数のコマンドの第２コマンドの第２論理アドレスに一致しない場合に、前記第２論理アドレスが前記第１論理アドレスに対してランダムであると判定することを特徴とする付記６に記載のストレージシステム。
（付記８）
前記ストレージ装置は、前記第１メモリ領域の前記ガベージコレクションが終了した後、前記第２メモリ領域に保持された前記第２データを前記第１メモリ領域へ格納する
ことを特徴とする付記１乃至７何れか一つに記載のストレージシステム。
（付記９）
前記ストレージ装置はＳｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）である
ことを特徴とする付記１乃至８何れか一つに記載のストレージシステム。
（付記１０）
前記第１メモリ領域はフラッシュメモリである
ことを特徴とする付記１乃至９何れか一つに記載のストレージシステム。
（付記１１）
第１メモリ領域及び第２メモリ領域を有するストレージ装置であって、前記第１メモリ領域の空き容量に基づいて前記第１メモリ領域のガベージコレクションの実行の要否を判定するストレージ装置に接続されたストレージ制御装置であって、
第１データの書込みを要求する第１コマンドを受信する送受信部と、
前記第１コマンドに基づき、前記第１データを前記第１メモリ領域に格納するよう、前記ストレージ装置に指示する制御部と、
前記第１データのデータ量に基づき、前記第１メモリ領域における前記ガベージコレクションの実行の要否を判定し、前記第１データのデータ量に基づいて前記ガベージコレクションの実行が必要と判定された場合、前記ストレージ装置に前記第１メモリ領域の前記ガベージコレクションの実行を指示するガベージコレクション指示部と
を有し
前記制御部は、前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示した場合であって、前記第１メモリ領域の前記ガベージコレクションが実行されている期間に第２データの書込みを要求する第２コマンドを受信した場合に、前記第２メモリ領域に前記第２データを保持するよう前記ストレージ装置に指示する
ことを特徴とするストレージ制御装置。
（付記１２）
前記第１データの格納を前記ストレージ装置へ指示する前に、前記ストレージ装置にダミーデータの格納指示を送信し、
前記ダミーデータの前記格納指示が送信されてから、前記ダミーデータの格納処理が完了したことを示す完了通知を受信するまでの時間と、前記ダミーデータのデータ量とに基づいて、第２閾値を設定し、
前記第１データのデータ量が前記第２閾値以上となった場合に、前記ストレージ装置に前記ガベージコレクションの実行を指示する
ことを特徴とする付記１１に記載のストレージ制御装置。
（付記１３）
前記第２閾値は、前記第１メモリ領域の前記空き容量が前記第１閾値を下回るよりも先に前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示するよう設定される
ことを特徴とする付記１２に記載のストレージ制御装置。
（付記１４）
前記ダミーデータの前記格納指示は複数の指示を含み、
前記複数の指示における前記ダミーデータの論理アドレスは互いにランダムなアドレスである
ことを特徴とする付記１２又は１３に記載のストレージ制御装置。
（付記１５）
前記第１コマンドは、複数のコマンドを含み、
前記複数のコマンドにおける前記第１データの論理アドレスが互いにランダムなアドレスである場合に、前記第１データのデータ量に基づき、前記ガベージコレクションの要否を判定する
ことを特徴とする付記１１乃至１４何れか一つに記載のストレージ制御装置。
（付記１６）
前記複数のコマンドの第１コマンドの第１論理アドレスに前記第１コマンドのデータ量を加算した値が、前記複数のコマンドの第２コマンドの第２論理アドレスに一致しない場合に、前記第２論理アドレスが前記第１論理アドレスに対してランダムであると判定する
ことを特徴とする付記１５に記載のストレージ制御装置。
（付記１７）
第１メモリ領域及び第２メモリ領域を有し、前記第１メモリ領域の空き容量に基づいて前記第１メモリ領域のガベージコレクションの実行の要否を判定するストレージ装置と、前記ストレージ装置に接続されたストレージ制御装置と、を用いたデータ格納方法であって、
前記ストレージ制御装置が、第１データの書込みを要求する第１コマンドを受信し、
前記ストレージ制御装置が、前記第１コマンドに基づき、前記第１データを前記第１メモリ領域に格納するよう、前記ストレージ装置に指示し、
前記ストレージ制御装置が、前記第１データのデータ量に基づき、前記第１メモリ領域おける前記ガベージコレクションの実行の要否を判定し、
前記第１データの前記データ量に基づいて前記ガベージコレクションの実行が必要と判定された場合、前記ストレージ制御装置が、前記ストレージ装置に前記第１メモリ領域の前記ガベージコレクションの実行を指示し、
前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示した場合であって、前記第１メモリ領域の前記ガベージコレクションが実行されている期間に第２データの書込みを要求する第２コマンドが受信された場合に、前記ストレージ制御装置が、前記第２メモリ領域に前記第２データを保持するよう前記ストレージ装置に指示する
ことを特徴とするデータ格納方法。
（付記１８）
前記ストレージ制御装置が前記ガベージコレクションの実行を指示した場合、及び、前記第１メモリ領域の前記空き容量が第１閾値を下回った場合、の少なくとも何れかの場合に、前記ストレージ装置は前記第１メモリ領域の前記ガベージコレクションを実行する
ことを特徴とする付記１７に記載のデータ格納方法。
（付記１９）
前記ストレージ制御装置は、
前記第１データの格納を前記ストレージ装置へ指示する前に、前記ストレージ装置にダミーデータの格納指示を送信し、
前記ダミーデータの前記格納指示が送信されてから、前記ダミーデータの格納処理が完了したことを示す完了通知を受信するまでの時間と、前記ダミーデータのデータ量とに基づいて、第２閾値を設定し、
前記第１データの前記データ量が前記第２閾値以上となった場合に、前記ストレージ装置に前記ガベージコレクションの実行を指示する
ことを特徴とする付記１７又は１８に記載のデータ格納方法。
（付記２０）
前記第２閾値は、前記第１メモリ領域の前記空き容量が前記第１閾値を下回るよりも先に前記ストレージ制御装置が前記ストレージ装置に前記ガベージコレクションの実行を指示するよう設定される
ことを特徴とする付記１９に記載のデータ格納方法。
【符号の説明】
【００５４】
１  ストレージシステム
１００  情報処理装置
２００  ストレージ制御装置
３００  ストレージ装置
４００  操作端末
２１０、３１０  ＣＰＵ
２５０、３５０  ＲＯＭ
２５５、３５５  ＲＡＭ
２６０  ＣＡ
３６０  フラッシュメモリ
２７０、３７０  インターフェースカード
２８０  ＩＯＣ
２９０  ＥＸＰ
２１１  送受信部
２１２  コマンドテーブル作成部
２１３  ガベージコレクション指示部
２１４  ダミーデータ送信処理部
２１５  応答時間測定部
２１６  データ量算出部
２１７  制御部
２１８  コマンドテーブル
【図１】
2018032105.tif 000003
【図２】
2018032105.tif 000004
【図３】
2018032105.tif 000005
【図４】
2018032105.tif 000006
【図５】
2018032105.tif 000007
【図６Ａ】
2018032105.tif 000008
【図６Ｂ】
2018032105.tif 000009
【図７】
2018032105.tif 000010
【図８】
2018032105.tif 000011
【図９】
2018032105.tif 000012
【図１０】
2018032105.tif 000013
【図１１】
2018032105.tif 000014
【図１２】
2018032105.tif 000015