(57)【要約】【課題】ストレージコントローラからストライプドストレージボリュームに書込みデータを効率的に処理するための方法を提供する。【解決手段】この方法は、ストレージコントローラ１０８によって、ホスト書込み要求サイズを含むホスト書込み要求を受け取り、ホスト書込み要求を含むストライプ４０４を埋める時間がホスト保証書込み時間を下回らないことを計算し、ホスト書込み要求をライトスルー・ホスト書込み要求として処理する。ストライプを埋める時間は、ホスト書込み要求を含むホスト書込みストリームのデータ転送速度に応じて分割されたストライプのサイズに対応する。ホスト保証書込み時間は、ホスト書込み要求がストレージコントローラのライトキャッシュ３２８及びストライプドストレージボリューム４００の１つに関連付けられることをストレージコントローラが保証する最長待ち時間である。【選択図】図３
2016095829.tif 000002
【特許請求の範囲】
【請求項１】
ストレージコントローラからストライプドストレージボリュームへの書込みデータを効率的に処理するための方法であって、
ホスト書込み要求サイズを含むホスト書込み要求を前記ストレージコントローラによって受け取るステップと、
前記ホスト書込み要求を含むストライプを埋める時間がホスト保証書込み時間を下回らないことを前記ストレージコントローラによって計算するステップと、
前記ホスト書込み要求をライトスルー・ホスト書込み要求として前記ストレージコントローラによって処理するステップとを備え、
前記ストライプを埋める時間は、前記ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度に応じて分割された前記ストライプのサイズに対応し、
前記ホスト保証書込み時間は、ホスト書込み要求がライトキャッシュ及び前記ストライプドストレージボリュームの１つに関連付けられることを前記ストレージコントローラが保証する最長待ち時間である、方法。
【請求項２】
前記ホスト書込み要求は、前記ライトキャッシュ内に記憶されず、
ライトスルー・ホスト書込み要求は、前記ストライプドストレージボリュームに直接記憶される、請求項１に記載の方法。
【請求項３】
前記対応するホスト書込みストリームは、或る期間にわたりＬＢＡについて増加及び減少するうちの一方である１組のＬＢＡ逐次ホスト書込み要求である、請求項２に記載の方法。
【請求項４】
前記ホスト書込み要求を受け取った後、及び前記ホスト書込み要求を含む前記ストライプを埋める時間を計算する前に、
前記ホスト書込み要求が既存のホスト書込みストリームに適合するかどうかを前記ストレージコントローラによって判定するステップと、
前記ホスト書込み要求が既存のホスト書込みストリームに適合しない場合、前記ストレージコントローラによって新たなホスト書込みストリームを作成するステップであって、
前記新たなホスト書込みストリームは、
新たなホスト書込みストリームが作成された時間を識別するタイムスタンプと、
前記ホスト書込み要求サイズに等しい現在のバースト長と、
前記ホスト書込み要求の開始ＬＢＡに対応するストリームウィンドウであって、前記ホスト書込み要求を上回るＬＢＡの範囲を含む前記ストリームウィンドウとを含む、前記新たなホスト書込みストリームを作成するステップと、
前記ホスト書込み要求が既存のホスト書込みストリームに適合する場合、前記ホスト書込み要求に対応するホスト書込みストリームのメタデータを前記ストレージコントローラによって更新するステップとをさらに備え、
前記対応するホスト書込みストリームは、既存のホスト書込みストリーム及び前記新たなホスト書込みストリームの１つである、請求項２に記載の方法。
【請求項５】
前記ホスト書込み要求が既存のホスト書込みストリームに適合するかどうかを判定するステップは、
前記ホスト書込み要求の開始ＬＢＡが既存のホスト書込みストリームのストリームウィンドウ内にあるかどうかを前記ストレージコントローラによって判定するステップを含み、
前記ホスト書込み要求の前記開始ＬＢＡが既存のホスト書込みストリームのストリームウィンドウ内にある場合、前記ホスト書込み要求は既存のホスト書込みストリームに適合し、前記ホスト書込み要求の前記開始ＬＢＡが既存のホスト書込みストリームのストリームウィンドウ内にない場合、前記ホスト書込み要求は既存のホスト書込みストリームに適合しない、請求項４に記載の方法。
【請求項６】
前記ホスト書込み要求に対応するホスト書込みストリームのメタデータを更新することは、
前記対応するホスト書込みストリームの経過時間を前記ストレージコントローラによって計算するステップと、
現在のバーストが前記ホスト書込み要求を含むかどうかを前記ストレージコントローラによって判定するステップであって、前記対応するホスト書込みストリームは前記現在のバーストを含む、前記判定するステップとを含み、
前記現在のバーストが前記ホスト書込み要求を含む場合、現在のバースト長を前記ホスト書込み要求サイズだけ前記ストレージコントローラによってインクリメントし、
前記現在のバーストが前記ホスト書込み要求を含まない場合、前記経過時間及び前記ホスト書込み要求サイズをストレージコントローラのメモリに前記ストレージコントローラによって記憶し、
前記対応するホスト書込みストリームの前記データ転送速度を計算する、請求項４に記載の方法。
【請求項７】
前記経過時間は、前記選択されたホスト書込みストリームが直近のホスト書込み要求を受け取ってからの時間を識別し、
前記経過時間は、現在の時間と前記対応するホスト書込みストリームの時間ラストヒットとの差を含む、請求項６に記載の方法。
【請求項８】
前記対応するホスト書込みストリームの前記データ転送速度を計算するステップは、
最後のバースト値後の所定数の直近の時間の加重平均を計算するステップを含み、
最後のバースト値後のより近い時間は、最後のバースト値後のより離れた時間よりも大きい加重を前記加重平均に与え、
最後のバースト値後の時間は、第１のバーストの最後のホスト書込み要求と、前記第１のバーストに続く次の逐次バーストの最初のホスト書込み要求との間の時間である、請求項６に記載の方法。
【請求項９】
前記現在のバーストが前記ホスト書込み要求を含むかどうかを判定するステップが、
前記ストレージコントローラによって前記経過時間を所定時間と比較するステップを含み、
前記所定時間は、ホスト書込み要求が前記現在のバースト内にあるための最長待ち時間を識別し、
前記経過時間が前記所定時間以下である場合、前記現在のバーストが、前記ホスト書込み要求を含み、
前記経過時間が前記所定時間を上回る場合、前記現在のバーストが、前記ホスト書込み要求を含まない、請求項６に記載の方法。
【請求項１０】
１台又は複数台のホストコンピュータから、１つ又は複数のストライプドストレージデバイスを含むストライプドストレージボリュームに書込みデータを効率的に処理するためのストレージコントローラであって、
プロセッサと、
前記プロセッサに結合されるメモリとを備え、
前記メモリは、
ライトキャッシュと、
ホスト保証書込み時間と
を含み、
前記ホスト保証書込み時間は、ホスト書込み要求が前記ライトキャッシュ及び前記ストライプドストレージボリュームの１つに関連付けられることを前記ストレージコントローラが保証する最長待ち時間であり、
前記ストレージコントローラは、ホスト書込み要求サイズを含むホスト書込み要求を受け取り、前記ホスト書込み要求を含むストライプを埋める時間が前記ホスト保証書込み時間を下回らないことを計算し、前記ホスト書込み要求をライトスルー・ホスト書込み要求として処理し、
前記ストライプを埋める時間は、前記ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度に応じて分割された前記ホスト書込み要求を含むストライプのサイズに対応する、ストレージコントローラ。
【請求項１１】
前記ホスト書込み要求は、前記ライトキャッシュ内に記憶されず、ライトスルー・ホスト書込み要求が、前記ストライプドストレージボリュームに直接記憶される、請求項１０に記載のストレージコントローラ。
【請求項１２】
前記対応するホスト書込みストリームは、或る期間にわたりＬＢＡについて増加及び減少するうちの一方である１組のＬＢＡ逐次ホスト書込み要求である、請求項１１に記載のストレージコントローラ。
【請求項１３】
前記ホスト書込み要求を前記ストレージコントローラが受け取った後、及び前記ホスト書込み要求を含む前記ストライプを埋める時間を前記ストレージコントローラが計算する前に、前記ストレージコントローラが、前記ホスト書込み要求が既存のホスト書込みストリームに適合するかどうかを判定し、
前記ホスト書込み要求が既存のホスト書込みストリームに適合しない場合、前記ストレージコントローラが、新たなホスト書込みストリームを作成し、
前記新たなホスト書込みストリームは、
新たなホスト書込みストリームが作成された時間を識別するタイムスタンプと、
前記ホスト書込み要求サイズに等しい現在のバースト長と、
前記ホスト書込み要求の開始ＬＢＡに対応するストリームウィンドウと含み、
前記ホスト書込み要求が既存のホスト書込みストリームに適合する場合、前記ストレージコントローラが、前記ホスト書込み要求に対応するホスト書込みストリームのメタデータを更新する、請求項１１に記載のストレージコントローラ。
【請求項１４】
前記ストレージコントローラが、前記ホスト書込み要求が既存のホスト書込みストリームに適合するかどうかを判定することは、
前記ホスト書込み要求の開始ＬＢＡが既存のホスト書込みストリームのストリームウィンドウ内にあるかどうかを前記ストレージコントローラが判定することを含み、
前記ホスト書込み要求の前記開始ＬＢＡが既存のホスト書込みストリームのストリームウィンドウ内にある場合、前記ホスト書込み要求は既存のホスト書込みストリームに適合し、
前記ホスト書込み要求の前記開始ＬＢＡが既存のホスト書込みストリームのストリームウィンドウ内にない場合、前記ホスト書込み要求は既存のホスト書込みストリームに適合しない、請求項１３に記載のストレージコントローラ。
【請求項１５】
前記ストレージコントローラが、前記ホスト書込み要求に対応するホスト書込みストリームのメタデータを更新することは、
前記ストレージコントローラが、前記選択されたホスト書込みストリームの経過時間を計算し、現在のバーストが前記ホスト書込み要求を含むかどうかを判定することを含み、
前記対応するホスト書込みストリームは、前記現在のバーストを含み、
前記現在のバーストが前記ホスト書込み要求を含む場合、前記ストレージコントローラが、現在のバースト長を前記ホスト書込み要求サイズだけインクリメントし、
前記現在のバーストが前記ホスト書込み要求を含まない場合、前記ストレージコントローラが、前記経過時間及び前記ホスト書込み要求サイズをストレージコントローラのメモリに記憶し、前記対応するホスト書込みストリームの前記データ転送速度を計算する、請求項１３に記載のストレージコントローラ。
【請求項１６】
前記経過時間は、前記対応するホスト書込みストリームが直近のホスト書込み要求を受け取ってからの時間を識別し、
前記経過時間は、現在の時間と前記対応するホスト書込みストリームの時間ラストヒットとの差を含む、請求項１５に記載のストレージコントローラ。
【請求項１７】
前記ストレージコントローラが、前記対応するホスト書込みストリームの前記データ転送速度を計算することは、
前記ストレージコントローラが、最後のバースト値後の所定数の直近の時間の加重平均を計算することを含み、
最後のバースト値後のより近い時間は、最後のバースト値後のより離れた時間よりも大きい加重を前記加重平均に与え、
最後のバースト値後の時間は、第１のバーストの最後のホスト書込み要求と、前記第１のバーストに続く次の逐次バーストの最初のホスト書込み要求との間の時間である、請求項１５に記載のストレージコントローラ。
【請求項１８】
前記ストレージコントローラが、前記現在のバーストが前記ホスト書込み要求を含むかどうかを判定することは、
前記ストレージコントローラが、前記経過時間を所定時間と比較することを含み、
前記所定時間は、ホスト書込み要求が前記現在のバースト内にあるための最長待ち時間を識別し、
前記経過時間が前記所定時間以下である場合、前記現在のバーストが前記ホスト書込み要求を含み、前記経過時間が前記所定時間を上回る場合、前記現在のバーストが前記ホスト書込み要求を含まない、請求項１７に記載のストレージコントローラ。
【請求項１９】
ストレージデバイスに書込みデータを効率的に伝送するためのシステムであって、
ホストコンピュータと、
前記ホストコンピュータに結合されるストレージコントローラであって、
プロセッサと
前記プロセッサに結合され、ライトキャッシュを含むメモリを含む前記ストレージコントローラと、
前記ストレージコントローラに結合される１つ又は複数のストレージデバイスを含むストライプドボリュームとを備え、
前記ホストコンピュータは、ホスト書込み要求を前記ストレージコントローラに伝送し、前記ホスト書込み要求は、ストライプドストレージボリュームのストライプに宛てられ、
前記ホストコンピュータは、前記ホスト書込み要求を前記ストレージコントローラに伝送することに応答し、
前記ストレージコントローラは、前記ストライプを埋める時間がホスト保証書込み時間を上回ることを計算し、前記ホスト書込み要求をライトスルー・ホスト書込み要求として処理し、
前記ホスト書込み要求は、前記ライトキャッシュ内に記憶されず、前記ストライプを埋める時間は、前記ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度に応じて分割された前記ホスト書込み要求を含むストライプのサイズに対応する、システム。
【請求項２０】
前記ホスト書込み要求を前記ストレージコントローラが受け取った後、及び前記ホスト書込み要求を含む前記ストライプを埋める時間を前記ストレージコントローラが計算する前に、前記ストレージコントローラが、前記ホスト書込み要求が１組のＬＢＡ逐次ホスト書込み要求を含む既存のホスト書込みストリームに適合するかどうかを判定し、
前記ホスト書込み要求が既存のホスト書込みストリームに適合しない場合、前記ストレージコントローラが、新たなホスト書込みストリームを作成し、
前記新たなホスト書込みストリームは、
新たなホスト書込みストリームが作成された時間を識別するタイムスタンプと、
ホスト書込み要求サイズに等しい現在のバースト長とを含み、
前記対応するホスト書込みストリームは、既存のホスト書込みストリーム及び前記新たなホスト書込みストリームの１つであり、
前記ホスト書込み要求が前記対応するホスト書込みストリームに適合する場合、前記ストレージコントローラが、前記ホスト書込み要求に関するホスト書込みストリームのメタデータを更新する、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータデータストレージシステムを対象とする。具体的には、本発明は、複数の書込みストリームに関する効率を最大限にするために、ストレージコントローラのキャッシュメモリ内で逐次ホスト書込みデータを効率的に処理するための方法及び機器を対象とする。
【背景技術】
【０００２】
データストレージシステムでは、ライトバックキャッシングを含む良く知られているデータキャッシング技法を利用することによって書込みの性能が高められる。ストレージコントローラがホストコンピュータから書込み要求を受け取ると、ストレージコントローラは、ライトキャッシュ内に空きがある場合は書込みデータをライトキャッシュ内に記憶し、書込み要求が完了したことをホストコンピュータに知らせる。これにより、ホストコンピュータが追加の読取要求又は書込み要求を発行する必要がなくなる。ライトキャッシュの空き領域が使用できない場合、ストレージコントローラは、代わりに書込み要求をより低速のストレージデバイスに直接伝送しなければならず、その結果、書込み性能が低下する。
【０００３】
書込みデータがライトキャッシュ内に入ると、ストレージコントローラは、何時、どの、及びどの程度の量の書込みデータを宛先ストレージデバイスに伝送するのかを決定するための様々なポリシを制定する。この伝送を取り巻く動作は、ライトキャッシュからのデータのデステージングと呼ばれる。書込みデータのデステージングは、ホストコンピュータから新たな書込み要求を受け入れるためにライトキャッシュの空き領域を解放するので重要であり、データは冗長なＲＡＩＤ構成内のストレージデバイス上に記憶される。冗長なＲＡＩＤ構成は、単一のストレージデバイスが障害を起こした場合に、及び一部のＲＡＩＤ構成では複数のストレージデバイスが障害を起こした場合にデータを守る。従って、効率的にホスト書込み要求を処理し、ストレージコントローラのライトキャッシュからストレージデバイスに書込みデータをデステージすることが望ましい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第５，６４０，５３０号明細書
【特許文献２】米国特許第７，２６０，６７９号明細書
【特許文献３】米国特許第８，４７８，９４５号明細書
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明は、従来技術の不都合を解決することを対象とする。本発明の実施形態によれば、ストレージコントローラからストライプドストレージボリュームに書込みデータを効率的に処理するための方法が提供される。この方法は、ホスト書込み要求サイズを含むホスト書込み要求をストレージコントローラによって受け取るステップと、ホスト書込み要求を含むストライプを埋める時間がホスト保証書込み時間を下回らないことをストレージコントローラによって計算するステップと、ホスト書込み要求をライトスルー・ホスト書込み要求としてストレージコントローラによって処理するステップとを含む。ストライプを埋める時間は、ホスト書込み要求を含むホスト書込みストリームのデータ転送速度に応じて分割されたストライプのサイズに対応する。ホスト保証書込み時間とは、ホスト書込み要求がストレージコントローラのライトキャッシュ及びストライプドストレージボリュームの１つに関連付けられることをストレージコントローラが保証する最長待ち時間である。
【０００６】
本発明の別の実施形態によれば、１台又は複数台のホストコンピュータから、１つ又は複数のストライプドストレージデバイスを含むストライプドストレージボリュームに書込みデータを効率的に処理するためのストレージコントローラが提供される。このストレージコントローラは、プロセッサとプロセッサに結合されるメモリとを含む。メモリは、ライトキャッシュ及びホスト保証書込み時間を含む。ホスト保証書込み時間とは、ホスト書込み要求がライトキャッシュ及びストライプドストレージボリュームの１つに関連付けられることをストレージコントローラが保証する最長待ち時間に対応する。ストレージコントローラは、ホスト書込み要求サイズを含むホスト書込み要求を受け取り、ホスト書込み要求を含むストライプを埋める時間がホスト保証書込み時間を下回らないことを計算し、ホスト書込み要求をライトスルー・ホスト書込み要求として処理する。ストライプを埋める時間は、ホスト書込み要求を含むホスト書込みストリームのデータ転送速度に応じて分割されたホスト書込み要求を含むストライプのサイズに対応する。
【０００７】
本発明の更に他の実施形態によれば、ストレージデバイスに書込みデータを効率的に伝送するためのシステムが提供される。このシステムは、ホストコンピュータと、ホストコンピュータに結合されるストレージコントローラとを含む。ストレージコントローラは、プロセッサとプロセッサに結合されるメモリとを含む。メモリは、ライトキャッシュを含む。このシステムは、ストレージコントローラに結合される１つ又は複数のストレージデバイスを含むストライプドボリュームも含む。ホストコンピュータは、ホスト書込み要求をストレージコントローラに伝送し、ホスト書込み要求はストライプドストレージボリュームのストライプに宛てられる。ホストコンピュータが書込み要求をストレージコントローラに伝送することに応答し、ストレージコントローラは、ストライプを埋める時間がホスト保証書込み時間を上回ることを計算し、ホスト書込み要求をライトスルー・ホスト書込み要求として処理する。ホスト書込み要求は、ライトキャッシュ内に記憶されない。ストライプを埋める時間は、ホスト書込み要求を含むホスト書込みストリームのデータ転送速度に応じて分割されたホスト書込み要求を含むストライプのサイズに対応する。
【０００８】
本発明の利点は、複数のホスト書込みストリームのどれが、他の現在のホスト書込みストリームに比べて、ライトデータキャッシングの利益を最も享受しないのかを求めることである。そのように求められたストリームに対応するホスト書込み要求は、ライトキャッシュにデータ投入することなしにライトスルーキャッシングを使用することを許可され、それにより、ライトキャッシュをより効率的に使用することができるより高速の非同期ストリームのために限られたライトキャッシュ容量を保つ。
【０００９】
本発明のもう１つの利点は、ストレージデバイスへのキャッシュデステージ処理中の部分ストライプの書込み数を最小限に抑えることである。部分ストライプの書込みは、フルストライプの書込みよりもはるかに非効率であり、低速で低頻度のストリームは、高速の非同期ストリームよりも長期間にわたって部分ストライプ状態にある可能性が高い。
【００１０】
本発明の実施形態の更なる特徴及び利点が、とりわけ添付図面と一緒に解釈するとき以下の説明からより容易に明らかになる。
【図面の簡単な説明】
【００１１】
【図１ａ】本発明の実施形態による、第１の非ホストベースのデータストレージシステムの構成要素を示すブロック図である。
【図１ｂ】本発明の実施形態による、第２の非ホストベースのデータストレージシステムの構成要素を示すブロック図である。
【図１ｃ】本発明の実施形態による、第３の非ホストベースのデータストレージシステムの構成要素を示すブロック図である。
【図２ａ】本発明の実施形態による、第１のホストベースのデータストレージシステムの構成要素を示すブロック図である。
【図２ｂ】本発明の実施形態による、第２のホストベースのデータストレージシステムの構成要素を示すブロック図である。
【図２ｃ】本発明の実施形態による、第３のホストベースのデータストレージシステムの構成要素を示すブロック図である。
【図３】本発明の実施形態による、データストレージシステムを示すブロック図である。
【図４ａ】本発明の実施形態による、単一ストレージデバイスのストライプドボリュームを示す図である。
【図４ｂ】本発明の実施形態による、複数ストレージデバイスのストライプドボリュームを示す図である。
【図５ａ】本発明の実施形態による、書込みデータストリームの一例示的図解を示す図である。
【図５ｂ】本発明の実施形態による、バーストのパラメータの一例示的図解を示す図である。
【図６】本発明の実施形態による、一例示的ホストデータストリームを示す図である。
【図７】本発明の実施形態による、高速ストリーム及び低速ストリームに関するストライプを埋める時間を示す図である。
【図８】本発明の実施形態による、全てのホスト書込みストリームのグローバルメタデータパラメータを示す図である。
【図９】本発明の実施形態による、ホストごとの書込みストリームメタデータパラメータを示す図である。
【図１０】本発明の実施形態による、ホスト書込み要求プロセスを示す流れ図である。
【図１１】本発明の実施形態による、ストリームプロファイリングプロセスを示す流れ図である。
【図１２】本発明の実施形態による、高速ストリームプロセスに関する新たなホスト書込み要求を示す流れ図である。
【図１３】本発明の実施形態による、ＬＲＵストリーム待ち行列の管理プロセスを示す流れ図である。
【発明を実施するための形態】
【００１２】
本発明者らは、ホストコンピュータからストレージコントローラへの特定の入出力作業負荷において様々な性能上の問題を観察してきた。具体的には、異なるデータ転送速度を有する多くの大きい逐次書込みストリーム（sequential write streams）が関与する場合、ストレージコントローラのライトキャッシュを効率的に管理することが困難であり得る。例えば、全てのホスト書込みストリームを同様に扱う場合、ストレージコントローラのライトキャッシュは、低速ストリームの部分ストライプ（partial stripe）ですぐに埋まってしまう。このことは、ライトキャッシュの空き領域を解放するためにストレージコントローラがライトキャッシュからストレージデバイスに部分ストリームをデステージする（destaging）こと、或いはライトキャッシュの空き領域を使用できないので、高速ストリームがライトスルーモードを使用しなければならないことを招く。部分ストライプの書込みは、フルストライプ（full stripe）内の全てのデータ未満のデータを含む。これらの結果の何れも極めて非効率である。従って、ストリームごとにデータ転送速度を追跡し、ストレージデバイスにデステージされるフルストライプの数を最大限にするために、高速ストリームにライトキャッシュの優先権を認めることが望ましい。
【００１３】
次に図１ａを参照し、本発明の実施形態による、第１の非ホストベースのデータストレージシステム１００の構成要素を示すブロック図が示されている。
データストレージシステム１００は、１台又は複数台のホストコンピュータ１０４を含む。ホストコンピュータ１０４は概してサーバだが、デスクトップやモバイルコンピュータでも良い。ホストコンピュータ１０４は、ホストバス又はネットワーク１１２を介したストレージコントローラ１０８へのリード／ライト要求を生成するアプリケーションプログラムを実行する。一実施形態では、ホストバス又はネットワーク１１２は、ＳＣＳＩ、ＦＣ−ＡＬ、ＵＳＢ、ファイアワイヤ（Firewire）、ＳＳＡ、ＳＡＳ、ＳＡＴＡ、インフィニバンド（Infiniband）等のバスである。別の実施形態では、ホストバス又はネットワーク１１２は、イーサネット、ｉＳＣＳＩ、ファイバチャネル（Fiber Channel）、ＳＳＡ、ＥＳＣＯＮ、ＡＴＭ、ＦＩＣＯＮ、ＮＶＭｅ、インフィニバンド等のネットワークである。
【００１４】
ホストコンピュータ１０４は、１つ又は複数のストレージコントローラ１０８とインターフェイスするが、明瞭にするためにストレージコントローラ１０８は１つしか図示していない。一実施形態では、ストレージコントローラ１０８がＲＡＩＤコントローラである。別の実施形態では、ストレージコントローラ１０８が、プロビジョニング、仮想化、複製、バックアップ機器等のストレージ機器（storage appliance）である。ストレージコントローラ１０８は、ストレージデバイス・バス１２０を介して、ストレージサブシステム１２４内のストレージデバイス（storage device）１１６ａ、１１６ｂとの間でデータをやり取りする。ストレージデバイス・バス１２０は、これだけに限定されないが、ＳＣＳＩ、ファイバチャネル、ＳＡＳ、ＳＡＴＡ、又はＳＳＡを含む、ストレージコントローラ１０８とストレージデバイス１１６との間でデータを直接伝送するための任意の適切なストレージバス又はバス群である。
【００１５】
一実施形態では、ストレージサブシステム１２４が１２個のストレージデバイス１１６を含む。他の実施形態では、ストレージサブシステム１２４が、１２個未満のストレージデバイス１１６又は１２個を上回るストレージデバイス１１６を含み得る。ストレージデバイス１１６は、ハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、及びテープドライブを含む様々な種類のストレージデバイスを含む。特定のストレージデバイスの種類の範囲内で、性能に応じて組織化されるストレージデバイス１１６の幾つかの下位区分がある場合がある。例えば、ハードディスクドライブは、キャッシュサイズ、ドライブＲＰＭ（例えば５，４００、７，２００、１０，０００、及び１５，０００）、待ち行列の長さ、ランダム転送速度、又は逐次転送速度に応じて組織化され得る。
【００１６】
次に図１ｂを参照し、本発明の実施形態による、第２の非ホストベースのデータストレージシステム１２８の構成要素を示すブロック図が示されている。非ホストベースのデータストレージシステム１２８は、ストレージコントローラ１０８がストレージデバイス１１６と共にストレージサブシステム１３２内にあることを除き、非ホストベースのデータストレージシステム１００に似ている。図１ｂに示す実施形態では、ストレージコントローラ１０８が単一のＲＡＩＤコントローラ１０８である。但し、他の実施形態では、ストレージコントローラ１０８が複数のＲＡＩＤコントローラ１０８を表す。
【００１７】
次に図１ｃを参照し、本発明の実施形態による、第３の非ホストベースのデータストレージシステム１３６の構成要素を示すブロック図が示されている。データストレージシステム１３６は、ストレージコントローラ１０８が２つの冗長なストレージコントローラ１０８ａ、１０８ｂを表すことを除き、データストレージシステム１００及び１２８に似ている。一実施形態では、ストレージコントローラ１０８ａ、１０８ｂの一方が故障した場合にホスト１０４がストレージデバイス１１６を引き続き使用できるようにするために、ストレージコントローラ１０８ａ、１０８ｂがアクティブ−アクティブフェイルオーバ（active-active failover）を利用する。コントローラ間メッセージングリンク１４０は、書込みデータをミラーリングし、フェイルオーバ及びフェイルバック操作を同期するために、ストレージコントローラ１０８ａ、１０８ｂ間の通信及びデータ経路を提供する。
【００１８】
次に図２ａを参照し、本発明の実施形態による、第１のホストベースのデータストレージシステム２００の構成要素を示すブロック図が示されている。第１のホストベースのデータストレージシステム２００は、ストレージコントローラ１０８がホストコンピュータ１０４内にあることを除き、図１ａの第１の非ホストベースのストレージシステム１００に似ている。ストレージコントローラ１０８は、ホストコンピュータ１０４のローカルバスを介してインターフェイスし、ローカルバスは、ラピッドＩＯ、ＰＣＩ、ＰＣＩ−Ｘ、又はＰＣＩエクスプレスを含む、ホストコンピュータ１０４のＣＰＵとストレージコントローラ１０８との間の高速伝送用の任意の適切なバスとすることができる。ストレージコントローラ１０８は、ホストコンピュータ１０４のマザーボード上に組み込むことができ、又はホストコンピュータ１０４内の拡張ボード若しくは他の形式のアセンブリとすることができる。
【００１９】
次に図２ｂを参照し、本発明の実施形態による、第２のホストベースのデータストレージシステム２０４の構成要素を示すブロック図が示されている。第２のホストベースのデータストレージシステム２０４は、ストレージサブシステム１２４の機能をホストコンピュータ１０４内に組み込む。データストレージシステム２０４は、高度に統合された独立型のデータストレージシステムを表す。
【００２０】
次に図２ｃを参照し、本発明の実施形態による、第３のホストベースのデータストレージシステム２０８の構成要素を示すブロック図が示されている。第３のホストベースのデータストレージシステム２０８は、第１のホストベースのデータストレージシステム２００に似ているが、組み込まれたストレージコントローラ１０８の代わりにソフトウェアに基づく手法を使用する。ホストコンピュータ１０４とストレージデバイス・バス１２０との間のインターフェイスは、適切なデータ及びコマンドバッファリング機能並びにプロトコル制御及び低レベル誤り処理（low-level error handling）を実現する、ホストバスアダプタ２１２によって提供される。ＣＰＵ２１６はメモリ２２０内のアプリケーション２２４を実行し、メモリ２２０とストレージサブシステム１２４内のストレージデバイス１１６ａ、１１６ｂとの間のデータフローを制御する。
【００２１】
次に図３を参照し、本発明の実施形態による、データストレージシステム３００を示すブロック図が示されている。データストレージシステム３００は、バス又はネットワーク１１２を介してストレージコントローラ１０８に相互接続される１台又は複数台のホストコンピュータ１０４を含む。ホストコンピュータ１０４は、或る期間にわたって正の方向又は負の方向に移動する複数組のＬＢＡ逐次ホスト書込み要求（LBA-sequential host write requests）３３２である、ホストストリーム３０８を生成する。各ホストコンピュータ１０４は、任意の数のホストストリーム３０８を生成することができる。
【００２２】
ストレージコントローラ１０８は、ＣＰＵ３１２に結合されるメモリ３１６内に記憶されるプログラム命令を実行する、ＣＰＵ又はプロセッサ３１２を含む。ＣＰＵ３１２は、インテル（Ｉｎｔｅｌ）ｘ８６互換プロセッサ、組込みプロセッサ、モバイルプロセッサ、及び／又はＲＩＳＣプロセッサ等、ストレージコントローラ１０８のプログラムを実行するのに適した任意の処理装置を含む。ＣＰＵ３１２は、書替え可能ゲートアレイ（ＦＰＧＡ）、メモリコントローラ、ノースブリッジ装置（North Bridge devices）、及び／又はサウスブリッジ装置（South Bridge devices）を含む幾つかの装置を含み得る。
【００２３】
メモリ３１６は、揮発性メモリ３１６、不揮発性メモリ３１６、又は揮発性メモリ及び不揮発性メモリの両方の組合せ３１６の１つ若しくは複数の形態とすることができる。メモリ３１６はファームウェアを含み、そのファームウェアは、本発明のプロセス用のプログラム命令を含む、ＣＰＵ３１２が取り出して実行するプログラム命令を含む。不揮発性メモリ３１６の例には、これだけに限定されないが、フラッシュメモリ、ＳＤ、ＳＳＤ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ハードディスク、及びＮＯＶＲＡＭが含まれる。揮発性メモリ３１６は、様々なデータ構造及びユーザデータを記憶する。揮発性メモリ３１６の例には、これだけに限定されないが、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、ＤＤＲ２  ＲＡＭ、ＤＤＲ３  ＲＡＭ、Ｚ−ＲＡＭ、ＴＴＲＡＭ、Ａ−ＲＡＭ、ＥＴＡ  ＲＡＭ、及び他の形態の一時ストレージが含まれる。
【００２４】
メモリ３１６は、ホストコンピュータ１０４に対して改善されたリード・ライト性能をそれぞれ提供する、リードキャッシュ３２４及びライトキャッシュ３２８を含む。メモリ３１６は、データストリームメタデータ３２０も含む。データストリームメタデータ３２０は、ホスト書込み要求３３２に関係するパラメータを記憶し、データの書込み操作を制御するために使用される。
【００２５】
ストレージコントローラ１０８は、１つ又は複数のストライプドストレージデバイス１１６を含むストレージサブシステム１２４、１３２に結合され、ストレージデバイス１１６は、任意の数の仮想ディスク（virtual disk : ＶＤｉｓｋ）又はストライプドストレージボリューム（striped storage volume）４００、４３４で構成され得る。各仮想ディスクは、１つ又は複数のストレージデバイス１１６を含む。頻繁にアクセスされるデータは仮想ディスクからリードキャッシュ３２４内に読み取られ、リードキャッシュ３２４では、データをホスト読取要求に応答して仮想ディスクから直接提供するよりもはるかに速く提供することができる。好ましくは、書込みデータがライトキャッシュ３２８内に最初に記憶され、かかるデータは仮想ディスクに直接送られる書込みよりもはるかに速い。
【００２６】
一部の実施形態では、ストレージコントローラ１０８がタイマ３４０を含む。タイマ３４０は、ＣＰＵ３１２によって制御されるハードウェアのタイマとすることができ、又はＣＰＵ３１２上で実行されるソフトウェアルーチンでも良い。タイマ３４０は、ホスト書込み要求３３２のパラメータを測定し、以下の説明及び図面の中で論じる。タイマ３４０は、任意の数のタイマを表すことができ、本発明では全てのホスト書込み要求３３２に全般的に割り当てられた１つのタイマ３４０がある。
【００２７】
ストレージコントローラ１０８は、本発明の範囲又は動作から逸脱することなしに、無数の異なる機能上の構成及びアーキテクチャで機能的に構成され得ることを理解すべきである。
【００２８】
次に図４ａを参照し、本発明の実施形態による、単一ストレージデバイスのストライプドボリューム４００の構成要素を示すブロック図が示されている。
単一のストレージデバイス１１６又は単一のストレージデバイス１１６の一部を、ストライプドボリューム（striped volume）４００とすることができる。ストレージデバイス１１６は、ハードディスクドライブ、光学ドライブ、テープドライブ、ソリッドステートデバイス（solid state device）、又は他の任意の形態の大容量データストレージデバイスとすることができる。ストライプドボリューム４００は、２つ以上の均等の大きさにされたストライプを含む論理ボリュームである。１つのストレージデバイス１１６上のストライプの部分はチャンクである。
【００２９】
図４ａは、４つのストライプ、つまりストライプＮ  ４０４、ストライプＮ＋１  ４０８、ストライプＮ＋２  ４１２、及びストライプＮ＋３  ４１６を有するストライプドボリューム４００を示す。ストライプＮ  ４０４はチャンクＡ  ４２０を有し、ストライプＮ＋１  ４０８はチャンクＢ  ４２４を有し、ストライプＮ＋２  ４１２はチャンクＣ  ４２８を有し、ストライプＮ＋３  ４１６はチャンクＤ  ４３２を有する。図４ａでは、４つのストライプ４０４、４０８、４１２、及び４１６、並びに４つのチャンク４２０、４２４、４２８、及び４３２を有する単一ストレージデバイスのストライプドボリューム４００を示すが、単一ストレージデバイスのストライプドボリューム４００は、４つのストライプ／チャンク未満、又は４つのストライプ／チャンクよりも多く有しても良いことを理解すべきである。更に、単一ストレージデバイスのストライプドボリューム４００は、単一のストレージデバイス１１６上の使用可能なデータ記憶空間の一部分だけを占有することができ、同じストレージデバイス１１６上には他の単一ストレージデバイスのストライプドボリューム４００があっても良い。仮想ディスク３４８が単一のストレージデバイス１１６である場合、仮想ディスクのストライプサイズは、チャンク４２０、４２４、４２８、又は４３２の大きさである。
【００３０】
次に図４ｂを参照し、本発明の実施形態による、複数ストレージデバイスのストライプドボリューム４３４の構成要素を示すブロック図が示されている。
複数のストレージデバイス１１６又は複数のストレージデバイス１１６の一部を、ストライプドボリューム４３４とすることができる。図４ｂは、３つのストレージデバイス１１６ａ、１１６ｂ、及び１１６ｃ上のストライプドボリューム４３４を示す。ストライプドボリューム４３４は４つのストライプ、つまりストライプＭ  ４３６、ストライプＭ＋１  ４４０、ストライプＭ＋２  ４４４、及びストライプＭ＋３  ４４８を有する。ストライプＭ  ４３６はチャンクＥ  ４５２、チャンクＦ  ４５６、及びチャンクＧ  ４６０を有する。ストライプＭ＋１  ４４０は、チャンクＨ  ４６４、チャンクＩ  ４６８、及びチャンクＪ  ４７２を有する。ストライプＭ＋２  ４４４は、チャンクＫ  ４７６、チャンクＬ  ４８０、及びチャンクＭ  ４８４を有する。ストライプＭ＋３  ４４８は、チャンクＮ  ４８８、チャンクＯ  ４９２、及びチャンクＰ  ４９６を有する。図４ｂでは、４つのストライプ４３６、４４０、４４４、及び４４８、並びに３つのストレージデバイス１１６ａ、１１６ｂ、及び１１６ｃを有する複数ストレージデバイスのストライプドボリューム４３４を示すが、複数ストレージデバイスのストライプドボリューム４３４が、４つのストライプ未満若しくはそれよりも多く、又は３つのストレージデバイス１１６未満若しくはそれよりも多く有しても良いことを理解すべきである。本発明で使用するとき、「ストライプドボリューム４００、４３４」は、単一ストレージデバイスのストライプドボリューム４００又は複数ストレージデバイスのストライプドボリューム４３４である。更に、複数ストレージデバイスのストライプドボリューム４３４は、ストレージデバイス１１６群上で使用可能なデータ記憶空間の一部しか占有しない場合があり、同じストレージデバイス１１６群上に他の複数ストレージデバイスのストライプドボリューム４３４があり得る。仮想ディスク３４８が複数のストレージデバイス１１６である場合、仮想ディスクのストライプサイズは、ストライプ内のチャンクの組み合わさった大きさ、つまり、図４ｂの３つのストレージデバイス１１６の事例では、チャンク４５２＋４５６＋４６０、４６４＋４６８＋４７２、４７６＋４８０＋４８４、又は４８８＋４９２＋４９６である。
【００３１】
次に図５ａを参照し、本発明の実施形態による、書込みデータストリーム３０８の一例を示す図が示されている。６つのバースト５１６群が或る期間５１２にわたってストレージコントローラ１０８によって受け取られたと示されており、バースト５１６ごとにメガバイト（ＭＢ）単位のバーストサイズ５０８が示されている。図５ａに示す例は、バースト０  ５１６ａ、バースト１  ５１６ｂ、バースト２  ５１６ｃ、バースト３  ５１６ｄ、バースト４  ５１６ｅ、及びバースト５  ５１６ｆとして識別する、逐次ホスト書込み要求３３２の６つのバースト５１６を示す。
【００３２】
バースト間の時間ｔｌｂが、連続した２つのバースト５１６ごとの間に示されている。バースト０  ５１６ａとバースト１  ５１６ｂとの間の時間はｔｌｂ０である。バースト１  ５１６ｂとバースト２  ５１６ｃとの間の時間はｔｌｂ１である。バースト２  ５１６ｃとバースト３  ５１６ｄとの間の時間はｔｌｂ２である。バースト３  ５１６ｄとバースト４  ５１６ｅとの間の時間はｔｌｂ３である。バースト４  ５１６ｅとバースト５  ５１６ｆとの間の時間はｔｌｂ４である。
【００３３】
次に図５ｂを参照し、本発明の実施形態による、バースト５１６のパラメータを示す図が示されている。データストリームメタデータ３２０内に記憶されるバーストのパラメータを説明するために、図５ｂは図５ａの例を参照する。書込みデータストリーム３０８は、１つ又は複数のバースト５１６を含む。
【００３４】
各バースト５１６は、関連するバースト長５２０のパラメータを有し、バースト０  ５１６ａは２ＭＢのバースト長５２０を有し、バースト１  ５１６ｂは１ＭＢのバースト長５２０を有し、バースト２  ５１６ｃは６ＭＢのバースト長５２０を有し、バースト３  ５１６ｄは２ＭＢのバースト長５２０を有し、バースト４  ５１６ｅは１ＭＢのバースト長５２０を有し、バースト５  ５１６ｆは２ＭＢのバースト長５２０を有する。各バースト５１６の間は、最後のバーストからの時間ｔｌｂ５２４である。Ｔｌｂ０は２００ｍｓであり、Ｔｌｂ１は３０ｍｓであり、Ｔｌｂ２は６０ｍｓであり、Ｔｌｂ３は１２０ｍｓであり、Ｔｌｂ４は２００ｍｓである。
【００３５】
次に図６を参照し、本発明の実施形態による、例示的なホストデータストリーム３０８を示す図が示されている。ホストデータストリーム３０８ａは、或る期間６０８にわたって受け取られる複数のホスト書込み要求３３２を含み、ホスト書込み要求３３２はホスト書込み要求６１２として個々に識別される。図６は、逐次ホスト書込み要求の第１のバースト６１２ａ、６１２ｂ、及び６１２ｃ、逐次ホスト書込み要求の第２のバースト６１２ｇ、６１２ｈ、６１２ｉ、及び６１２ｊ、並びに逐次ホスト書込み要求の第３のバースト６１２ｎ、６１２ｏ、６１２ｐ、及び６１２ｑを示す。ストレージコントローラ１０８は、逐次書込み要求の３つのバーストが受け取られる間に他の非逐次ホスト書込み要求も受け取り、それらの非逐次ホスト書込み要求はホスト書込み要求６１２ｄ、６１２ｅ、６１２ｆ、６１２ｋ、６１２ｌ、及び６１２ｍとして識別される。
【００３６】
ホストデータストリーム３０８は、図６に示すように或る期間６０８にわたってＬＢＡ６０４について逐次的に増加し得る、又は或る期間６０８にわたってＬＢＡ６０４について逐次的に減少し得るホスト書込み要求３３２、６１２を含むが、同じホストデータストリーム３０８内に両方は含まない。
【００３７】
各ホスト書込み要求６１２は関連するホスト書込み要求サイズ６１６を有し、簡潔にするために、この例では全てのホスト書込み要求６１２を同じホスト書込み要求サイズ６１６によって示す。更に、各ホスト書込み要求６１２が、開始ＬＢＡアドレス６２０及び終了ＬＢＡアドレス６２４を含むＬＢＡ範囲にアドレス指定される。ストレージコントローラ１０８は、各ホスト書込み要求６１２を特定の時点６０８において受け取る。例えば、ストレージコントローラ１０８は、逐次ホスト書込み要求０  ６１２ａを時点ｔ０において、逐次ホスト書込み要求１  ６１２ｂを時点ｔ１において、逐次ホスト書込み要求２  ６１２ｃを時点ｔ２において受け取る。
【００３８】
ストレージコントローラ１０８は、受け取られる各ホスト書込み要求６１２が現在のストリーム３０８の一部かどうかを判定し、これについては以下の流れ図及び添付の説明に関してより詳細に説明する。逐次ホスト書込み要求６１２では、ストレージコントローラ１０８が、各ホスト書込みストリーム３０８の最初のホスト書込み要求６１２に基づき、ＬＢＡ範囲６２０、６２４を含むストリームウィンドウ（stream window）６３２を確立する。好ましい実施形態では、ストリームウィンドウのＬＢＡ６０４の範囲が、ホスト書込み要求サイズ６１６に最初に依存する。ストレージコントローラ１０８は、ホスト入出力要求サイズ６１６に８を掛け、ストリームウィンドウオフセット（stream window offset）を作成する。ストレージコントローラ１０８は、ホスト入出力要求の開始ＬＢＡアドレス６２０にストリームウィンドウオフセットを加算して、ストリームウィンドウのＬＢＡ上限を取得し、受け取ったホスト入出力要求の開始ＬＢＡアドレス６２０からストリームウィンドウオフセットを減算し、ストリームウィンドウのＬＢＡ下限を作成する。
【００３９】
ストレージコントローラ１０８が、ストリームウィンドウ６３２の外側にある新たなホスト書込み要求６１２を受け取る場合、ストリームウィンドウ６３２の境界が変わる必要がある。目的は、同じホスト書込みストリーム３０８の逐次ホスト書込み要求６１２をストリームウィンドウ６３２内に保つことである。ストリームウィンドウ６３２を調節するためにストレージコントローラ１０８が使用するプロセスについては、２０１４年８月１１日に出願され、参照により本明細書に援用する、逐次ストリーム入出力処理のための方法及び機器（ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＳＥＱＵＥＮＴＩＡＬ  ＳＴＲＥＡＭ  Ｉ／Ｏ  ＰＲＯＣＥＳＳＩＮＧ）と題された係属中の米国特許出願第１４／４５６，３２８号明細書（整理番号  ＤＨＰ０１１８  ＵＳ）の中で詳述されている。
【００４０】
次に図７を参照し、本発明の実施形態による、高速ストリーム及び低速ストリーム３０８に関するストライプを埋める時間を示す図が示されている。ライトキャッシング７０４は、ライトバックキャッシング７０８又はライトスルーキャッシング７１２を使用することができる。ライトバックキャッシング７０８では、ストレージコントローラ１０８が、ホスト書込み要求３３２をライトキャッシュ３２８にまず伝送し、その後、ホスト書込み要求３３２の書込みデータを１つ又は複数のストレージデバイス１１６に伝送する。ライトスルーキャッシング７１２では、ストレージコントローラ１０８が、ホスト書込み要求３３２のデータをまず１つ又は複数のストレージデバイス１１６に直接伝送し、従ってライトキャッシュ３２８をバイパスする。
【００４１】
本発明では、ホスト書込み要求３３２を含むストライプ７１６を埋める時間に応じて、ホスト書込み要求３３２にライトバックキャッシング７０８を使用するか、またはライトスルーキャッシング７１２を使用するかに関する決定を下す。速いデータ転送速度は、遅いデータ転送速度よりも速くストライプを埋める。ストレージコントローラ１０８がライトバックキャッシング７０８を使用するか、またはライトスルーキャッシング７１２を使用するかを決めるために、ホスト保証書込み時間７２０の所定値をデータ転送速度（ストライプ７１６を埋める時間）と比較する。ストライプ７１６を埋める時間がホスト保証書込み時間７２０を下回る場合、ストレージコントローラ１０８はライトバックキャッシング７０８を使用する。それに対応して、ストライプ７１６を埋める時間がホスト保証書込み時間７２０を上回る場合、ストレージコントローラ１０８はライトスルーキャッシング７１２を使用する。ストライプ７１６を埋める時間がホスト保証書込み時間７２０に等しい場合、ストレージコントローラ１０８は、選択された実施形態に応じてライトバックキャッシング７０８又はライトスルーキャッシング７１２を使用することができる。
【００４２】
次に図８を参照し、本発明の実施形態による、全てのホスト書込みストリーム３０８のグローバルメタデータパラメータ（global metadata parameters）３２０を示す図が示されている。グローバルメタデータ３２０は、ホスト保証書込み時間７２０、８０４のパラメータを含む。ホスト保証書込み時間８０４は、ホスト書込み要求３３２のデータが、ライトキャッシュ３２８又は１つ若しくは複数のストレージデバイス１１６内にあることをストレージコントローラ１０８が保証する時間値である。このパラメータは本発明の要であり、限られたホストデータストレージ及びキャッシングの資源を管理するために、ホストコンピュータ１０４のアプリケーションにとって重要である。
【００４３】
グローバルメタデータ３２０は、ＬＲＵストリーム待ち行列（LRU stream queue）８０８も含む。ＬＲＵストリーム待ち行列８０８は、活性状態にある全てのホスト書込みストリーム３０８の古さをストレージコントローラ１０８が追跡することを可能にする。ＬＲＵストリーム待ち行列８０８内の各エントリは、特定のホスト書込みストリーム３０８のＩＤ値であり、そのため現在活性状態にある全てのホスト書込みストリーム３０８が一意に表わされる。最新のホスト書込みストリーム８０８ａのＩＤがＬＲＵストリーム待ち行列８０８の末尾に投入されるのに対し、最も古いホスト書込みストリーム８０８ｎのＩＤは、ＬＲＵストリーム待ち行列８０８の先頭に投入される。本発明では、諸条件が必要とする場合、ホスト書込みストリーム３０８をＬＲＵストリーム待ち行列８０８に追加し、又はＬＲＵストリーム待ち行列８０８から削除する。
【００４４】
グローバルメタデータ３２０は、ＲＡＷコンテナ一覧（raw container list）８１２も含む。ＲＡＷコンテナ８１２は、ストレージコントローラ１０８がデータに割り当てる、仮想化された空きの及び使用可能なメモリ３１６資源である。ＲＡＷコンテナ８１２は、新たな書込みデータが受け取られるときにストライプベースで割り当てられるデータ構造であり、ストライプの境界を超えない。それぞれのかかるＲＡＷコンテナ８１２は、対応するストライプサイズ８１６を有し、或るＲＡＷコンテナ８１２のストライプサイズ８１６は、別のＲＡＷコンテナ８１２のストライプサイズ８１６と同じでも異なっても良い。好ましい実施形態では、ストレージコントローラ１０８が最大６４のＲＡＷコンテナ８１２をサポートする。
【００４５】
次に図９を参照し、本発明の実施形態による、ストリームごとのメタデータ３２０のパラメータを示す図が示されている。ストリームごとのメタデータ３２０のパラメータは、ホスト書込みストリーム３０８ごとに異なることができ、全てのホスト書込みストリーム３０８が図９に記載のパラメータの全てを有する。
【００４６】
ストリームごとのメタデータ３２０のパラメータは、ストリームＩＤ  ９０４、ストリーム時間ラストヒットｔｌｈ  ９０８、及びストリームデータ転送速度９１２を含む。ストリームＩＤ９０４は、ストリームを他のストリーム３０８から一意に識別する。ストリーム時間ラストヒットｔｌｈ  ９０８は、ホスト書込みストリーム３０８が最後のホスト書込み要求３３２を受け取った時間、又は新たなホスト書込みストリーム３０８が作成された時間を反映するタイムスタンプである。ストリームデータ転送速度９１２は、以下で及び図５ａ及び図５ｂの中で説明する最後のバーストからの時間５２４の値に基づいて計算されるパラメータである。
【００４７】
ストリームごとのメタデータ３２０のパラメータは、現在のホスト書込みストリーム３０８の全てのペンディングの（即ち関連付けられていない（uncommitted））書込み要求３３２のメタデータ３２０を記憶する、ペンディングホスト書込み待ち行列（pending host write queue）９１６も含む。ペンディングホスト書込み待ち行列９１６は、待ち行列９１６の末尾にある最新のペンディングのホスト書込み要求９１６ａ、及び待ち行列９１６の先頭にある最も古いペンディングのホスト書込み要求９１６ｎから構成される。待ち行列９１６の各エントリは、３つのパラメータ、つまりホスト書込み要求９２０、ホスト書込み要求サイズ９２４、及びホスト書込み要求開始論理ブロックアドレス（ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）９２８を含む。
【００４８】
ホストごとの書込みストリームメタデータ３２０のパラメータは、対応するホスト書込みストリーム３０８のデータ転送速度９１２を計算するためにバースト５１６のパラメータを管理するための、１対の結び付けられた待ち行列９３２、９４０を更に含む。
【００４９】
バーストサンプル待ち行列９３２は、直近の幾つかのバースト５１６のそれぞれについて、バースト長５２０を記憶する幾つかの位置を含む巡回待ち行列である。所定数のバースト長５２０よりも古いバースト長５２０は、待ち行列から外される。好ましい実施形態では、バーストサンプル待ち行列９３２内に１０個のエントリがある。他の実施形態では、バーストサンプル待ち行列９３２内に１０個未満の、又は１０個を超えるエントリがある。現在のバースト長ポインタ９３６は、バーストサンプル待ち行列９３２内の現在のバースト長５２０のエントリを識別する。
【００５０】
最後のバーストからの時間（ｔｌｂ）のサンプル待ち行列９４０は、直近の幾つかの連続したバースト５１６の対間の時間を記憶する。最後のバーストからの時間（ｔｌｂ）５２４については、図５ａ及び図５ｂに関してより詳細に解説した。バーストサンプル待ち行列９３２内の各バースト長５２０のエントリは、最後のバーストからの時間（ｔｌｂ）５２４の対応するエントリを最後のバーストからの時間（ｔｌｂ）のサンプル待ち行列９４０内に有し、従って各待ち行列９３２、９４０内には同数のエントリがある。現在の前のバーストからの時間ポインタ９４４は、最後のバーストからの時間（ｔｌｂ）のサンプル待ち行列９４０内の、最後のバーストからの時間（ｔｌｂ）５２４の現在のエントリを識別する。
【００５１】
次に図１０を参照し、本発明の実施形態による、ホスト書込み要求３３２のプロセスを示す流れ図が示されている。流れはブロック１００４で始まる。
ブロック１００４で、ストレージコントローラ１０８が、ホストコンピュータ１０４から新たなホスト書込み要求３３２を受け取る。流れはブロック１００８に進む。
【００５２】
ブロック１００８で、ストレージコントローラ１０８がストリームプロファイリングプロセスを実行し、このプロセスでは、ホスト書込みストリーム３０８が既に存在する場合、既存のホスト書込みストリーム３０８をホスト書込み要求３３２に関連させる。さもなければ、ストレージコントローラ１０８は新たなホスト書込みストリーム３０８を作成する。流れは判定ブロック１０１２に進む。
【００５３】
判定ブロック１０１２で、ストレージコントローラ１０８は、ホスト書込み要求３３２が関連付けられるストライプを埋める時間がホスト保証書込み時間８０４を下回るかどうかを判定する。この決定は本発明の要であり、ホスト書込み要求３３２を完了するためにストレージコントローラ１０８がライトスルーキャッシング７１２を使用するか、またはライトバックキャッシング７０８を使用するかを最終的に決める。ホスト保証書込み時間８０４は、ホスト書込み要求３３２のデータが、ライトキャッシュ３２８又は１つ若しくは複数のストレージデバイス１１６内にあることをストレージコントローラ１０８が保証する時間値であることを思い出されたい。つまり、ストレージコントローラ１０８は、ホスト書込み要求３３２を伝送したホストコンピュータ１０４に肯定応答を送り、その肯定応答は、ホスト書込み要求３３２のデータがライトキャッシュ３２８又はストレージデバイス１１６内にあることを示す。ホスト書込み要求３３２が関連付けられるストライプを埋める時間がホスト保証書込み時間８０４を下回る場合、対応するホスト書込みストリーム３０８は高速のデータ転送速度９１２を有し、流れはブロック１０１６に進む。ホスト書込み要求３３２が関連付けられるストライプを埋める時間がホスト保証書込み時間８０４を下回らない場合、対応するホスト書込みストリーム３０８は低速のデータ転送速度９１２を有し、流れは代わりにブロック１０２０に進む。
【００５４】
ブロック１０１６で、ストレージコントローラ１０８は、ホスト書込み要求３３２を延期すべきかどうかを判定する。延期するとは、ストレージコントローラ１０８が、対応するホスト書込みストリーム３０８について、ペンディングホスト書込み待ち行列９１６上にホスト書込み要求３３２を配置すべきかどうかを判定することを意味し、ホスト書込み要求３３２のデータをストレージコントローラ１０８に入れることが遅れることになる。但し、如何なる場合でも（即ちホスト書込み要求３３２が延期されてもされなくても）、ホスト書込み要求３３２は常にライトバック７０８書込み要求として最終的に処理される。ブロック１０１６の詳細については、図１２のプロセスステップによってより詳細に図示し、説明している。
【００５５】
ブロック１０２０で、ストレージコントローラ１０８が、ホスト書込み要求３３２をライトスルー７１２書込み要求として処理する。つまり、ホスト書込み要求３３２に対応するホスト書込みストリーム３０８のデータ転送速度は遅く、従って、ホスト書込み要求３３２のデータをライトキャッシュ３２８内に記憶せず、代わりにホスト書込み要求３３２のデータをライトスルー７１２操作としてストレージデバイス１１６に直接記憶することにより効率が改善される。流れはブロック１００４に続き、次のホスト書込み要求３３２を待つ。
【００５６】
代替的実施形態では、ストライプを埋める時間を測定する代わりに、ストライプのチャンクを埋める時間を代わりに測定することができる。遅く動くストリーム３０８は、全ストライプを書き込むのにホスト保証書込み時間８０４よりも長くかかる場合があるが、場合によってはチャンクを書き込むのにホスト保証書込み時間８０４よりも短い時間しかかからないことがある。チャンクに属する全てのホスト書込み要求３３２は、ライトキャッシュ３２８内に与えられ得る。複数のかかるホスト書込み要求３３２を、チャンクを含むストレージデバイス１１６への単一の書込みへと合体させ、それにより、単一のチャンクのリードモディファイ・ライトサイクル（read-modify write cycles）の数を最小限にすることができる。
【００５７】
次に図１１を参照し、本発明の実施形態による、ストリーム３０８のプロファイリングプロセスを示す流れ図が示されている。図１１のステップは、図１０のブロック１０１６を実行するためのプロセスステップを詳述する。流れはブロック１１０４で始まる。
【００５８】
ブロック１１０４で、ストレージコントローラ１０８が、ホストコンピュータ１０４からホスト書込み要求３３２を受け取る。流れは判定ブロック１１０８に進む。
判定ブロック１１０８で、ストレージコントローラ１０８は、ホスト書込み要求６１２が現在のホスト書込みストリーム３０８に適合するかどうかを判定する。ホスト書込み要求６１２が現在のホスト書込みストリーム３０８に適合する場合、流れはブロック１１１６に進む。ホスト書込み要求６１２が現在のホスト書込みストリーム３０８に適合しない場合、流れは代わりにブロック１１１２に進む。
【００５９】
ブロック１１１２で、ホスト書込み要求６１２は現在のホスト書込みストリーム３０８に適合せず、ストレージコントローラ１０８が新たなホスト書込みストリーム３０８を作成する。新たなホスト書込みストリーム３０８は図９に示すメタデータを含み、そのメタデータには作成タイムスタンプ９４８、及び現在のバースト長５２０としてホスト書込み要求サイズが含まれる。現在のバースト長５２０は、現在のバースト長ポインタ９３６によって識別される。流れはブロック１１１２で終わり、従って制御権をブロック１０１６に戻し、ブロック１００４で新たなホスト書込み要求３３２を待つ。
【００６０】
ブロック１１１６で、ホスト書込み要求３３２は現在のホスト書込みストリーム３０８に適合し、ストレージコントローラ１０８が経過時間を計算し、経過時間は、現在の時間から、ホスト書込み要求３３２に対応するホスト書込みストリーム３０８のストリーム時間ラストヒット（ｔｌｈ）９０８を引いたものに等しい。経過時間は、単純にストレージコントローラ１０８が現在のホスト書込みストリーム３０８についての最後のホスト書込み要求３３２を受け取ってからの時間である。図３に関して説明したように、現在の時間は個別のタイマ３４０から、又はタイマソフトウェアルーチンから得ることができる。時間ラストヒット（ｔｌｈ）９０８は、メタデータメモリ３２０から得られ、既存のホスト書込みストリーム３０８が新たなホスト書込み要求３３２を受け取る度に、又はストレージコントローラ１０８が新たなホスト書込みストリーム３０８を作成する度に更新される。流れは判定ブロック１１２０に進む。
【００６１】
判定ブロック１１２０で、ストレージコントローラ１０８は、ブロック１１１６で計算された経過時間が所定時間を上回るかどうかを判定する。所定時間は、ホスト書込み要求３３２が現在のバースト５１６の一部か、新たなバースト５１６の始まりかを確立する期間である。好ましい実施形態では、所定時間が１０ミリ秒（ｍｓ）である。但し、他の実施形態では、所定時間が１０ｍｓを上回っても下回っても良い。経過時間が所定時間を上回る場合、流れはブロック１１２４に進む。経過時間が所定時間以下である場合、流れはブロック１１３２に進む。
【００６２】
ブロック１１２４で、ストレージコントローラ１０８が、ホスト書込み要求３３２に対応するホスト書込みストリーム３０８のメタデータメモリ３２０内に経過時間及びホスト書込み要求サイズを記憶する。経過時間は、最後のバーストからの時間（ｔｌｂ）５２４として、現在の最後のバーストからの時間ポインタ９４４によって識別される最後のバーストからの時間（ｔｌｂ）のサンプル待ち行列９４０内の位置に記憶される。次いで、ストレージコントローラ１０８は、現在の最後のバーストからの時間ポインタ９４４をインクリメントする。その後、新たな最後のバーストからの時間（ｔｌｂ）５２４の値が、現在のホスト書込みストリーム３０８の次の経過時間によって上書きされる。ホスト書込み要求サイズ６１６が、現在のバースト長ポインタ９３６によって識別されるバーストサンプル待ち行列９３２のバースト長５２０の位置に記憶され、その後、ストレージコントローラ１０８が現在のバースト長ポインタ９３６をインクリメントする。流れはブロック１１２８に進む。
【００６３】
ブロック１１２８で、ストレージコントローラ１０８が、ストリームデータ転送速度９１２を加重平均として計算し、ストリームデータ転送速度９１２をメタデータメモリ３２０に記憶する。好ましい実施形態では、ストレージコントローラ１０８が、最後のバーストからの時間（ｔｌｂ）のサンプル待ち行列９４０内の、最後のバーストからの時間５２４の全てのエントリを使用して加重平均（weighted average）を計算する。最後のバーストから最も近い時間５２４のエントリが最大の加重（greatest weighting）を有し、最後のバーストから最も離れた時間５２４のエントリが最も低い加重（lowest weighting）を有し、他のエントリは最大荷重と最低加重との間の均等に分配された加重を有する。最終的に、最後のバーストからの時間５２４の加重値の和が、最後のバーストからの時間（ｔｌｂ）のサンプル待ち行列９４０内のエントリ数の階乗で割られる。他の実施形態では、より適切な値に達するために、ストリームデータ転送速度９１２を別の方法、及びより洗練された方法で計算することができる。例えば、ストレージコントローラ１０８が１０個のバースト５１６の完全な履歴を受け取るまで、ストリームデータ転送速度９１２を計算しなくても良い。流れはブロック１１２８で終わり、従って制御権をブロック１０１６に戻し、ブロック１００４で新たなホスト書込み要求３３２を待つ。
【００６４】
ブロック１１３２で、ホスト書込み要求３３２が現在のバースト５１６の一部であると判定され、ストレージコントローラ１０８が、ホスト書込み要求サイズ９２４を現在のバースト長５２０に追加する。現在のバースト長５２０は、現在のバースト長ポインタ９３６によって識別される。流れはブロック１１３２で終わり、従って制御権をブロック１０１６に戻し、ブロック１００４で新たなホスト書込み要求３３２を待つ。
【００６５】
次に図１２を参照し、本発明の実施形態による、高速ストリーム３０８のプロセスに関する新たなホスト書込み要求３３２を示す流れ図が示されている。図１２に示すプロセスは、図１０のブロック１０１６をより詳細に示す。流れはブロック１２０４で始まる。
【００６６】
ブロック１２０４で、ストレージコントローラ１０８が、ストリームメタデータ３２０からストリームパラメータ及び未処理のコンテナ（raw container）８１２を得る。流れは判定ブロック１２０８に進む。
【００６７】
判定ブロック１２０８で、ストレージコントローラ１０８は、新たなホスト書込み要求３３２がストライプにまたがるか（span）、又はストライプを開始するかを判定する。ホスト書込み要求３３２がストライプの下方境界又は上方境界におけるＬＢＡを含む場合、新たなホスト書込み要求３３２はストライプにまたがる。ホスト書込み要求３３２がストライプの始まりにおけるＬＢＡを含む場合、新たなホスト書込み要求３３２がストライプを開始する。ストライプを作るために、又はストライプに可能な限り近づけるために、ホスト書込みペンディング待ち行列９１６に十分なホスト書込み要求３３２を供給するか又は記憶することが、ストレージコントローラ１０８にとって有利である。ホスト書込みストリーム３０８が無作為ではなく逐次的なので、本発明では、ストレージコントローラ１０８が新たなストライプの追跡を開始し、従ってホスト書込みペンディング待ち行列９１６上の全てのものが、ライトキャッシュ３２８に伝送され、後にストレージデバイス１１６にデステージされるべき古いストライプに属すると仮定する。新たなホスト書込み要求３３２がストライプにまたがり、又はストライプを開始する場合、流れはブロック１２１２に進む。新たなホスト書込み要求３３２がストライプにまたがらず、又はストライプを開始しない場合、流れは判定ブロック１２２４に進む。
【００６８】
ブロック１２１２で、ストレージコントローラ１０８が、現在のストリーム３０８（即ちホスト書込み要求３３２に対応するホスト書込みストリーム）の全てのペンディングのホスト書込み要求９１６ａ〜ｎを実行する。ホストコンピュータ１０４がストレージコントローラ１０８にホスト書込み要求３３２を送ると、ストレージコントローラ１０８はまず、ホスト書込み要求３３２を、ホスト書込み要求３３２に対応するホスト書込みストリーム３０８のペンディングホスト書込み待ち行列９１６上に配置する（place）。この時点で、ストレージコントローラ１０８は、ホスト書込み要求３３２のデータを送信側のホストコンピュータ１０４に要求しておらず、データはホストコンピュータ１０４内に留まる。従って、ペンディングのホスト書込み要求９１６ａ〜ｎは、ストレージコントローラ１０８が受け取るホスト書込み要求３３２だが、データ自体はまだ受け取られていない。
【００６９】
ストレージコントローラ１０８がペンディングのホスト書込み要求９１６ａ〜ｎを実行すると、ストレージコントローラ１０８が、全てのペンディングのホスト書込み要求９１６ａ〜ｎのデータをホストコンピュータ１０４に要求し、そのデータをストレージコントローラのライトキャッシュ３２８内に配置することを意味する。流れはブロック１２１６に進む。
【００７０】
ブロック１２１６で、もはやペンディングのホスト書込み要求９１６ａ〜ｎは一切なく、ストレージコントローラ１０８は、現在のホスト書込みストリーム３０８について、全てのペンディングのホスト書込み要求９１６ａ〜ｎをペンディングホスト書込み要求待ち行列９１６から削除する。流れはブロック１２２０に進む。
【００７１】
ブロック１２２０で、ストレージコントローラ１０８が、新たなストライプの開始ＬＢＡ９４８をメタデータメモリ３２０内に記憶する。この開始ＬＢＡは、ホスト書込み要求３３２が現在のストライプの一部か、または前のストライプの一部かを決めるために、判定ブロック１２２４で使用される。流れはブロック１２３２に進む。
【００７２】
判定ブロック１２２４で、ストレージコントローラ１０８は、ホスト書込み要求３３２の開始ＬＢＡ６２０が現在のストライプの開始ＬＢＡ９４８未満かどうかを判定する。ホスト書込み要求３３２の開始ＬＢＡ６２０が現在のストライプの開始ＬＢＡ９４８を下回る場合、ホスト書込み要求３３２は現在のストライプの一部ではなく、ホスト書込み要求３３２をライトキャッシュ３２８内に与えることによって最高の性能が達成される。その場合、流れはブロック１２４４に進む。ホスト書込み要求３３２の開始ＬＢＡ６２０が現在のストライプの開始ＬＢＡ９４８未満でない場合、流れは判定ブロック１２２８に進み、ペンディングホスト書込み待ち行列９１６上の延期されたホスト書込み要求３３２の有無を確認する。
【００７３】
本明細書に示した流れは、次のホスト書込み要求３３２、６１２が現在のホスト書込み要求３３２よりも高い開始ＬＢＡ６２０を有する、増加型の逐次ホスト書込みストリーム３０８の最も一般的な事例を反映することに留意すべきである。但し、逐次ホスト書込みストリーム３０８は、次のホスト書込み要求３３２、６１２が現在のホスト書込み要求３３２よりも低い開始ＬＢＡ６２０を有する、減少型の逐次ホスト書込みストリーム３０８である場合があり得る。増加型又は減少型の逐次ホスト書込みストリーム３０８の任意の組合せを適合させるために、本発明の示したプロセスを修正する方法を当業者なら理解することが察せられる。何れにせよ、本発明は両方の種類の逐次ホスト書込みストリーム３０８を考える。
【００７４】
判定ブロック１２２８で、ストレージコントローラ１０８は、ペンディングホスト書込み待ち行列９１６上にペンディングのホスト書込み要求９１６ａ〜ｎがあるかどうかを判定する。ペンディングホスト書込み待ち行列９１６上にペンディングのホスト書込み要求９１６ａ〜ｎがある場合、新たなホスト書込み要求３３２をペンディングホスト書込み待ち行列９１６に追加することが有利であり、流れはブロック１２３２に進む。ペンディングホスト書込み待ち行列９１６上にペンディングのホスト書込み要求９１６ａ〜ｎがない場合、新たなホスト書込み要求３３２をライトキャッシュ３２８に直接追加することが有利であり、流れはブロック１２４４に進む。
【００７５】
ブロック１２３２で、ストレージコントローラ１０８は、現在のホスト書込みストリーム３０８について、新たなホスト書込み要求３３２をペンディングホスト書込み待ち行列９１６上の待ち行列９１６の末尾に配置する。流れはブロック１２３６に進む。
【００７６】
ブロック１２３６で、ストレージコントローラ１０８は、ストリーム時間ラストヒット（stream time last hit : ｔｌｈ）９０８として現在の時間を記憶する。現在の時間はタイマ３４０から、又は現在の時間を保つソフトウェアルーチンから提供され得る。流れはブロック１２４０に進む。
【００７７】
ブロック１２４０で、ストレージコントローラ１０８は、現在のホスト書込みストリーム３０８を、最新のストリーム８０８ａとしてＬＲＵストリーム待ち行列８０８の末尾に移す。流れはブロック１２４０で終わり、制御権を図１０のブロック１０１６に戻し、ブロック１００４で新たなホスト書込み要求を待つ。
【００７８】
ブロック１２４４で、ストレージコントローラ１０８は、新たなホスト書込み要求３３２をストレージコントローラのライトキャッシュ３２８に伝送する。流れはブロック１２４４で終わり、制御権を図１０のブロック１０１６に戻し、ブロック１００４で新たなホスト書込み要求を待つ。
【００７９】
次に図１３を参照し、本発明の実施形態による、ＬＲＵストリーム待ち行列８０８の管理プロセスを示す流れ図が示されている。図１３に示すプロセスは他の図示のプロセスと非同期的に実行され、好ましい実施形態では１秒毎に実行される。他の実施形態では、ＬＲＵストリーム待ち行列８０８の管理プロセスが１秒よりも低頻度で、又は１秒よりも高頻度で実行されることに留意すべきである。流れは判定ブロック１３０４で始まる。
【００８０】
判定ブロック１３０４で、ストレージコントローラ１０８は、ＬＲＵストリーム待ち行列８０８が空かどうかを判定する。ＬＲＵストリーム待ち行列８０８が空の場合、更なるストリーム管理動作は必要なく、流れはブロック１３０４で終わる。ＬＲＵストリーム待ち行列８０８が空ではない場合、１つ又は複数のホスト書込みストリーム３０８が待ち行列８０８上にあり、流れはブロック１３０８に進む。
【００８１】
ブロック１３０８で、ストレージコントローラ１０８は、ＬＲＵストリーム待ち行列８０８の先頭８０８ｎにあるエントリを識別する。ＬＲＵストリーム待ち行列の先頭８０８ｎは、ストレージコントローラ１０８によって追跡されている、最も古いホスト書込みストリーム３０８を識別する。流れはブロック１３１２に進む。
【００８２】
ブロック１３１２で、ストレージコントローラ１０８は、現在のホスト書込みストリーム３０８について、現在の時間とストリーム時間ラストヒット（ｔｌｈ）９０８との差に等しい経過時間を計算する。流れは判定ブロック１３１６に進む。
【００８３】
判定ブロック１３１６で、ストレージコントローラ１０８は、経過時間がホスト保証書込み時間８０４以上かどうかを判定する。経過時間がホスト保証書込み時間８０４以上である場合、流れはブロック１３２０に進む。経過時間がホスト保証書込み時間８０４以上ではない場合、流れは判定ブロック１３１６で終わる。
【００８４】
ブロック１３２０で、ストレージコントローラ１０８は、ペンディングホスト書込み待ち行列９１６内の全てのペンディングのホスト書込み要求９１６ａ〜ｎをライトキャッシュ３２８に伝送する。流れはブロック１３２４に進む。
【００８５】
ブロック１３２４で、ストレージコントローラ１０８は、ＬＲＵストリーム待ち行列８０８の先頭８０８ｎにあるエントリを削除する。これにより、ペンディングホスト書込み待ち行列９１６の１つ又は複数のエントリを有するストリーム３０８の更なるホスト書込み要求３３２をストレージコントローラ１０８が受け取っていない場合にさえ、ホスト保証書込み時間８０４を満たすために古いストリーム３０８が除去される。流れは判定ブロック１３０４に進み、ＬＲＵストリーム待ち行列８０８が空かどうかを再び確認する。
【００８６】
最後に、添付の特許請求の範囲によって定める本発明の趣旨及び範囲から逸脱することなしに、本発明の同一目的を実行するための他の構造を設計し又は修正するための基礎として、開示した概念及び具体的実施形態を容易に使用できることを当業者なら理解されよう。
【符号の説明】
【００８７】
１０８  ストレージコントローラ
１０８ａ  ストレージコントローラ
１０８ｂ  ストレージコントローラ
３２８  ライトキャッシュ
４００  ストライプドストレージボリューム
４０４  ストライプＮ
４０８  ストライプＮ＋１
４１２  ストライプＮ＋２
４１６  ストライプＮ＋３
【図１ａ】
2016095829.tif 000003
【図１ｂ】
2016095829.tif 000004
【図１ｃ】
2016095829.tif 000005
【図２ａ】
2016095829.tif 000006
【図２ｂ】
2016095829.tif 000007
【図２ｃ】
2016095829.tif 000008
【図３】
2016095829.tif 000009
【図４ａ】
2016095829.tif 000010
【図４ｂ】
2016095829.tif 000011
【図５ａ】
2016095829.tif 000012
【図５ｂ】
2016095829.tif 000013
【図６】
2016095829.tif 000014
【図７】
2016095829.tif 000015
【図８】
2016095829.tif 000016
【図９】
2016095829.tif 000017
【図１０】
2016095829.tif 000018
【図１１】
2016095829.tif 000019
【図１２】
2016095829.tif 000020
【図１３】
2016095829.tif 000021