(57)【特許請求の範囲】
【請求項１】
ＲＡＩＤモジュールと、物理的ストレージの第１の層および第２の層とを含むハイブリッドストレージ集合体を操作する方法であって、それぞれの層がストレージコントローラを有し、前記ＲＡＩＤモジュールは、それぞれの層に関連付けられた前記ストレージコントローラを使用して、前記第１の層および第２の層におけるデータにアクセスするように構成されており、前記方法は、
前記物理的ストレージの第１の層を、前記物理的ストレージの第２の層のためのキャッシュとして動作するステップであって、前記物理的ストレージの第１の層は複数のアサインされたブロックを含む、ステップと、
アサインされたブロックの少なくとも一つに関するイベントに応答して、アサインされたブロックのメタデータを更新するステップであって、メタデータは、アサインされたブロック毎の、二つ以上の可能な利用状態を追跡するブロック利用情報を含む、ステップと、
アサインされたブロックのキャッシュの特徴を判別するべくメタデータを処理するステップと
を含み、
前記キャッシュの特徴は、ブロックがどのような頻度で読み取られたか、ブロックがどのような頻度で書き込まれたか、及び／又は、ブロックの温度、を示す情報を含み、前記ブロックの温度は、ブロックが事前設定された閾値より頻度高くアクセスされたかどうかを示す指標である、
方法。
【請求項２】
更に、キャッシュの特徴に基づいて、アサインされたブロックのアロケーションを変更するステップを含む、請求項１に記載の方法。
【請求項３】
物理的ストレージの第１の層の持続性ストレージ媒体が半導体ストレージデバイスを含み、物理的ストレージの第２の層の持続性ストレージ媒体がディスクベースのストレージデバイスを含む、請求項１に記載の方法。
【請求項４】
複数の、アサインされたブロックが、物理的ストレージの第２の層のためのリードキャッシュとして動作するブロックを含み、物理的ストレージの第２の層のためのライトキャッシュとして動作するブロックを含む、請求項１に記載の方法。
【請求項５】
更に、キャッシュの特徴に基づいて、アサインされたブロックのアロケーションを変更するステップであって、リードキャッシュのサイズを変更すること、又は、ライトキャッシュのサイズを変更することを含む、ステップを含む、請求項４に記載の方法。
【請求項６】
更に、キャッシュの特徴に基づいて、アサインされたブロックのアロケーションを変更するステップであって、リードキャッシュのサイズとライトキャッシュのサイズの間の関係に基づいてリードキャッシュのサイズを変更すること、又は、リードキャッシュのサイズとライトキャッシュのサイズの間の関係に基づいてライトキャッシュのサイズを変更することを含む、ステップを含む、請求項４に記載の方法。
【請求項７】
更に、キャッシュの特徴に基づいて、アサインされたブロックのアロケーションを変更するステップを含み、
メタデータは、リードキャッシュのアクセス頻度とライトキャッシュのアクセス頻度を含み、
前記アロケーションを変更するステップは、アクセス頻度の少なくとも一つに基づいてリードキャッシュのサイズを変更すること、又は、アクセス頻度の少なくとも一つに基づいてライトキャッシュのサイズを変更することを含む、請求項４に記載の方法。
【請求項８】
ハイブリッドストレージ集合体は、物理的ストレージの第１の及び第２の層に拡がる、複数のボリュームを含む、請求項２に記載の方法。
【請求項９】
メタデータが、アサインされたブロックのうちの一つのブロックのアクセス頻度を含む、請求項１に記載の方法。
【請求項１０】
前記イベントは、ブロックをアサインすること、ブロックを読み出すこと、ブロックを書き込むこと、ブロックを解放すること、若しくは、ブロックのアクセス頻度の変化のうちの、少なくとも一つを含む
請求項９に記載の方法。
【請求項１１】
ＲＡＩＤモジュールと、物理的ストレージの第１の層および第２の層とを含むハイブリッドストレージ集合体を有するストレージサーバシステムであって、それぞれの層がストレージコントローラを有し、前記ＲＡＩＤモジュールは、それぞれの層に関連付けられた前記ストレージコントローラを使用して、前記第１の層および第２の層におけるデータにアクセスするように構成されており、前記ストレージサーバシステムは、
プロセッサ、及び、
前記プロセッサと連結され、ストレージマネジャを含む、メモリを含み、
前記ストレージマネジャは、前記プロセッサに対して、
物理的ストレージ媒体の第１の層と前記物理的ストレージ媒体の第２の層とを含む、ハイブリッドストレージ集合体を動作するステップであって、前記物理的ストレージ媒体の第１の層が前記物理的ストレージ媒体の第２の層の待ち時間より低い待ち時間を有する、ステップと、
前記物理的ストレージの第１の層の複数のブロックをアサインするステップであって、アサインされたブロックの第１のポーションは前記物理的ストレージの第２の層のためのリードキャッシュとして動作し、アサインされたブロックの第２のポーションは前記物理的ストレージの第２の層のためのライトキャッシュとして動作する、ステップと、
アサインされたブロックの少なくとも一つに関するイベントに応答して、アサインされたブロックのメタデータを更新するステップであって、メタデータは、アサインされたブロック毎の、二つ以上の可能な利用状態を追跡するブロック利用情報を含む、ステップと、
アサインされたブロックのキャッシュの特徴を判別するべくメタデータを処理するステップと、及び、
キャッシュの特徴に基づいて、アサインされたブロックのアロケーションを変更するステップと
を行わせ、
前記キャッシュの特徴は、ブロックがどのような頻度で読み取られたか、ブロックがどのような頻度で書き込まれたか、及び／又は、ブロックの温度、を示す情報を含み、前記ブロックの温度は、ブロックが事前設定された閾値より頻度高くアクセスされたかどうかを示す指標である、
ストレージサーバシステム。
【請求項１２】
前記物理的ストレージ媒体の第１の層が半導体ストレージデバイスを含み、前記物理的ストレージ媒体の第２の層がディスクベースのストレージデバイスを含む、請求項１１に記載のストレージサーバシステム。
【請求項１３】
前記アロケーションを変更するステップが、リードキャッシュのサイズを変更すること、又は、ライトキャッシュのサイズを変更することを含む、請求項１１に記載のストレージサーバシステム。
【請求項１４】
前記アロケーションを変更するステップが、リードキャッシュのサイズとライトキャッシュのサイズの間の関係に基づいてリードキャッシュのサイズを変更すること、又は、リードキャッシュのサイズとライトキャッシュのサイズの間の関係に基づいてライトキャッシュのサイズを変更することを含む、請求項１１に記載のストレージサーバシステム。
【請求項１５】
メタデータは、リードキャッシュのアクセス頻度とライトキャッシュのアクセス頻度を含み、
前記アロケーションを変更するステップは、アクセス頻度の少なくとも一つに基づいてリードキャッシュのサイズを変更すること、又は、アクセス頻度の少なくとも一つに基づいてライトキャッシュのサイズを変更することを含む、請求項１１に記載のストレージサーバシステム。
【請求項１６】
ハイブリッドストレージ集合体は、物理的ストレージの第１の及び第２の層に拡がる、複数のボリュームを含む、請求項１１に記載のストレージサーバシステム。
【請求項１７】
メタデータが、アサインされたブロックのうちの一つのブロックのアクセス頻度を含む、請求項１１に記載のストレージサーバシステム。
【請求項１８】
前記イベントは、ブロックをアサインすること、ブロックを読み出すこと、ブロックを書き込むこと、ブロックを解放すること、若しくは、ブロックのアクセス頻度の変化のうちの、少なくとも一つを含む
請求項１７に記載のストレージサーバシステム。
【請求項１９】
ＲＡＩＤモジュールと、物理的ストレージの第１の層および第２の層とを含むハイブリッドストレージ集合体を操作する方法であって、それぞれの層がストレージコントローラを有し、前記ＲＡＩＤモジュールは、それぞれの層に関連付けられた前記ストレージコントローラを使用して、前記第１の層および第２の層におけるデータにアクセスするように構成されており、前記方法は、
前記物理的ストレージの第１の層を、前記物理的ストレージの第２の層のためのキャッシュとして動作するステップであって、前記物理的ストレージの第１の層は複数のアサインされたブロックを含む、ステップと、
一つ以上のブロックの利用に応答して、一つ以上のブロックの利用状態を記載するメタデータを更新するステップと、
一つ以上のブロックの利用状態を記載するメタデータを処理することに基づいて、一つ以上のブロックのキャッシュの特徴を判別するステップと、
キャッシュの特徴に基づいて、複数のブロックのアロケーションを変更するステップと
を含み、
前記キャッシュの特徴は、ブロックがどのような頻度で読み取られたか、ブロックがどのような頻度で書き込まれたか、及び／又は、ブロックの温度、を示す情報を含み、前記ブロックの温度は、ブロックが事前設定された閾値より頻度高くアクセスされたかどうかを示す指標である、
方法。
【請求項２０】
物理的ストレージの第１の層の第１のポーションは物理的ストレージの第２の層のためのリードキャッシュとして動作し、物理的ストレージの第１の層の第２のポーションは物理的ストレージの第２の層のためのライトキャッシュとして動作する、請求項１９に記載の方法。
【請求項２１】
前記アロケーションを変更するステップが、リードキャッシュのサイズを変更すること、又は、ライトキャッシュのサイズを変更することを含む、請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本願は、２０１２年３月７日出願の米国特許出願第１３／４１３８７７号（特許文献１）の優先権を主張するものであり、該出願は参照の上全体としてこの明細書に組み込まれる。
【０００２】
本願の種々の実施形態は、データストレージシステムを操作する分野に、概略関する。特に、本願の種々の実施形態は、ハイブリッドストレージ集合体にストレージスペースを配置する方法及びシステムに関する。
【背景技術】
【０００３】
背景
コンピュータ及びコンピュータシステムの増殖により、電子データの信頼可能な且つ効率的な格納に対する要求が絶え間無く増大している。ストレージサーバは、データの編成及び格納に関するストレージサービスを提供する特殊化されたコンピュータである。ストレージサーバにより管理されるデータは、通常、不揮発メモリ若しくはディスクなどの、書き込み可能の持続性ストレージ媒体に格納される。ストレージサーバは、多数のクライアント若しくはアプリケーションがシステムにより提供されるデータにアクセスできる情報デリバリのクライアント／サーバモデルに従って動作するように、構成され得る。ストレージサーバは、ネットワーク接続ストレージ（ＮＡＳ）環境におけるファイルレベルか、ストレージエリアネットワーク（ＳＡＮ）におけるブッロクレベルかのいずれかで、ランダム及びストリーミングアクセスパターンの両方で、データを提供する。
【０００４】
ストレージサーバにより用いられる種々のタイプの不揮発ストレージ媒体は、様々な待ち時間を有し得る。アクセス時間（即ち、待ち時間）は、ストレージ媒体からデータを検索するのに要求される時間である。多くの場合、データは、相対的に高い待ち時間を有するハードディスクドライブ（ＨＤＤ）に格納される。ＨＤＤでは、ディスクアクセス時間は、ディスクスピンアップ時間、シーク時間、回転遅延、及びデータ転送時間を含む。別の場合、データは、半導体ドライブ（ＳＳＤ）に格納される。ＳＳＤは、概略、ＨＤＤより低い待ち時間を有する。ＳＤＤは、ＨＤＤの動作に固有の機械的遅延を有さないからである。ＨＤＤは、概略、物理媒体に順次に格納されるデータの大ブロックを読み取るときに、良好なパフォーマンスを示す。しかしながら、ＨＤＤは、ランダムアクセスに対しては同様なパフォーマンスを示さない。装置の機械的部品が媒体上の異なる物理位置に移動しなければならないことがよく有るからである。
【０００５】
ＳＤＤは、不揮発フラッシュメモリなどの、半導体メモリを用いてデータを格納する。移動する部品が無く、ＳＳＤは、通常、比較的低い待ち時間により、ランダムの、頻度の高いメモリアクセスに対して、良好なパフォーマンスを示す。しかしながら、ＳＳＤはＨＨＤより一般に高価であり、摩耗や他の劣化により操作上の寿命が短い。これらの更なる直接的な交換のコストは、膨大な数のストレージ装置を用いる多数のストレージサーバを有するデータセンタのとっては、重大な意義を有する。
【０００６】
ハイブリッドストレージ集合体は、ＨＤＤとＳＤＤの利点を組み合わせる。ストレージ「集合体」は、物理ストレージの論理集合体、即ち、ストレージのプールのための論理コンテナであり、一つ以上の物理大容量ストレージデバイス若しくはそれらの一部を単体の論理ストレージオブジェクト内に組み合わせるものであり、該ストレージ集合体は、より高い抽象度の一つ以上の他の論理データセットのためのストレージ（例えば、ボリューム）を提供する。あるハイブリッドストレージ集合体では、ＳＳＤがハイブリッドストレージ集合体を組成して高いパフォーマンスを提供し、相対的に廉価なＨＤＤは残余のストレージアレイを組成する。場合によっては、様々な待ち時間を備えるストレージデバイスの別の組み合わせも、ＨＤＤとＳＤＤに代わって、又は、ＨＤＤ及びＳＤＤと組み合わせて用いられ得る。これらの他のストレージデバイスは、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、テープドライブ、光学ディスク、及びマイクロ電子機械（ＭＥＭ）ストレージデバイスを含む。ハイブリッドストレージ集合体内の低待ち時間（即ち、ＳＤＤ）のストレージスペースは制限されているので、最も頻度高くアクセスされる（即ち、ホットな）データの格納のために低待ち時間のストレージスペースを用いることにより、低待ち時間のストレージに係る利点は最大限となる。残りのデータは、より高い待ち時間のデバイス内に格納される。データ及びデータ利用は経時的に変化するので、どのデータがホットであり、より低い待ち時間のデバイスに格納されるべきかを判定することは、継続するプロセスとなる。高待ち時間のデバイスと低待ち時間のデバイスの間のデータの移動は、ポインタ更新や、データの位置を識別する他の情報を必要とする、マルチステッププロセスである。
【０００７】
より低い待ち時間のストレージは、より高い待ち時間のストレージのためのキャッシュとして用いられることが多い。場合によっては、最も頻度高くアクセスされるデータのコピーがキャッシュに格納される。データアクセスが為されると、要求されるデータがその中に位置するか判定すべくより速いキャッシュがチェックされ、もしあれば、データはキャッシュからアクセスされ得る。このように、より高い待ち時間のデバイスがアクセスされなければならない回数を減少させることによって、キャッシュは、全体のデータアクセス時間を減少させる。場合によっては、キャッシュスペースは、頻度高く書かれるデータのために用いられる（即ち、ライトキャッシュ）。一方で、若しくは更に、キャッシュスペースは、頻度高く読まれるデータのために用いられる（即ち、リードキャッシュ）。リードキャッシュとライトキャッシュの管理と動作のためのポリシは、異なることが多い。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願第１３／４１３８７７号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ストレージシステムに関して生じる要求は、通常、格納されるデータの量の変化、格納されるデータのタイプ、データがどのような頻度でアクセスされるか、により、更には、他の理由により、経時的に変化するであろう。ストレージシステムのパフォーマンスは、通常、これらの変化する条件下でも変化するであろう。ハイブリッドストレージ集合体の場合、システムの変動するデマンドに合わせるために、低待ち時間の層の構成及び／又はアロケーションを変化させることは有益である。これにより、低待ち時間の層の限定されたリソースは動的にアロケートされ、ストレージシステムの変動するニーズに適合することになる。例えば、ストレージシステムのニーズに適合するのに従前、十分大きかった特定のサイズのリードキャッシュは、システムに関して生じる、変動する要求のため、もはや十分に大きいものではあり得ない。現状では、ハイブリッドストレージ集合体は、特定のブロックがアサインされたが否か追跡し得るが、これらのタイプのアロケーションの決定を最も有効にするのに十分な情報を追跡するものでは無い。
【課題を解決するための手段】
【００１０】
ハイブリッドストレージ集合体のパフォーマンスは、利用可能なストレージデバイスを動的にアロケートすることにより向上し得る。ストレージ集合体の低待ち時間の層で利用可能であるストレージスペースは、システムの変動するニーズに適合するように再アロケートされ得る。低待ち時間の層のブロックがどのように用いられたかに関する追跡履歴情報は、低待ち時間の層内の利用可能なストレージスペースが将来どのように用いられるべきかに関する将来の決定をする際に有用である。従って、ハイブリッドストレージ集合体内の詳細なブロック利用を追跡する方法及び装置を、以下に示す。一つの例では、それら方法は、ハイブリッドストレージ集合体の物理的ストレージの第１の層を、ハイブリッドストレージ集合体の物理的ストレージの第２の層のためのキャッシュとして動作するステップを含む。物理的ストレージの第１の層は複数のアサインされたブロックを含む。方法は、アサインされたブロックの少なくとも一つに関するイベントに応答して、アサインされたブロックのメタデータを更新するステップを含む。メタデータは、アサインされたブロック毎の、二つ以上の可能な利用状態を追跡する、例えば、ブロック毎の、単なる「フリー」や「利用中」の状態以外を追跡するブロック利用情報を含む。例えば、個々のブロックがリードキャッシュとして、ライトキャッシュとして、若しくは、他の目的のために用いられているか、などのブロックがどのように用いられているかに関する情報を、システムは追跡し得る。方法は、アサインされたブロックのキャッシュの特徴を判別するべくメタデータを処理するステップも含む。
【００１１】
別の例では、ストレージサーバシステムは、プロセッサ及びメモリを含む。メモリは、  前記プロセッサと連結され、ストレージマネジャを含む。前記ストレージマネジャは、前記プロセッサに対して、物理的ストレージ媒体の第１の層と物理的ストレージ媒体の第２の層とを含む、ハイブリッドストレージ集合体を動作するステップを行わせる。物理的ストレージ媒体の第１の層は物理的ストレージ媒体の第２の層の待ち時間より低い待ち時間を有する。前記ストレージマネジャは、前記プロセッサに対して、物理的ストレージの第１の層の複数のブロックをアサインするステップを行わせる。アサインされたブロックの第１のポーションは、物理的ストレージの第２の層のためのリードキャッシュとして動作し、アサインされたブロックの第２のポーションは物理的ストレージの第２の層のためのライトキャッシュとして動作する。前記ストレージマネジャは、前記プロセッサに対して、アサインされたブロックの少なくとも一つに関するイベントに応答して、アサインされたブロックのメタデータを更新するステップを行わせる。メタデータは、アサインされたブロック毎の、二つ以上の可能な利用状態を追跡するブロック利用情報を含む。前記ストレージマネジャは更に、前記プロセッサに対して、アサインされたブロックのキャッシュの特徴を判別するべくメタデータを処理するステップと、キャッシュの特徴に基づいて、アサインされたブロックのアロケーションを変更するステップとを行わせる。
【００１２】
ハイブリッドストレージ集合体は、関連するストレージシステムのパフォーマンスを向上させるためにリード及びライトキャッシュが用いられることが多い。ストレージ集合体の低待ち時間の層内で利用可能なデータストレージブロックの一定量は、通常、キャッシュとして利用するためにアサインされる。アサインされたブロックは、リードキャッシュとして、ライトキャッシュとして、若しくは組み合わせとして、用いられ得る。ストレージシステムに出されるデマンドは経時的に変化するので、低待ち時間の層内のブロックがどのようにアサインされるのかを変更することにより、システムのパフォーマンスは向上し得る。一つの例では、システムの利用での変更は、全体的なシステムパフォーマンスがキャッシュの少なくとも一つのサイズが増加すれば向上する、というようなものである。同時に、少なくとも一つのキャッシュに関する現在の利用は、ストレージシステムのパフォーマンスに実質的に影響すること無くサイズが縮小され得る、というようなものである。これらのタイプの判別をすることには、キャッシュを組成するブロックの利用に関するアカウンティング（説明）を実行することが要求される。アカウンティングは、ブロックの利用を追跡すること、及び、ブロックの利用特徴を判別するために利用情報を処理することを含む。
【００１３】
より低い待ち時間のデバイス内の利用可能なストレージスペースは、リードキャッシュとして、ライトキャッシュとして、若しくは、リードキャッシュとライトキャッシュの組み合わせとして用いるために、アサインされ得る。更に、多重ボリュームを格納するのに用いられるハイブリッドストレージ集合体では、ブロックは、ハイブリッドストレージ集合体の様々なボリュームにアサインされ得る。徐々に、ストレージシステムの利用のパターン及び特徴は、より低い待ち時間のストレージの層のブロックについての異なるアサインがより適切であり、及び／又は、より良いシステムパフォーマンスを提供し得る、というものとなり得る。しかしながら、現在のハイブリッドストレージ集合体は、利用中のより低い待ち時間のストレージの層におけるブロックがどのように用いられているか、を追跡しない。現在のハイブリッドストレージ集合体は、より低い待ち時間の層の一つのブロックが利用のためにアサインされたか否か（即ち、ブロックがアサインされているかアサインされていないか）を追跡する。場合によっては、ブロックの利用を経時的にバランスさせるために、又は、選択されたブロックのリサイクルアルゴリズムを実装するために、アサインされていないブロックに関する更なる情報が追跡される。ファーストインファーストアウト（ＦＩＦＯ）利用モデルを実装するために、長時間未使用（ＬＲＵ）アルゴリズムを実装するために、又は、他のリサイクルアルゴリズムを実装するために、アサインされていないブロックに関する情報が追跡され得る。しかしながら、アサインされたブロックがどのように用いられているかに関する更なる情報は、追跡されない。追跡されない情報の例は、ブロックが用いられているキャッシュのタイプ、及び、ブロックがどのような頻度でアクセスされているか、である。この情報が無ければ、システムパフォーマンスを向上させるためにブロックのアルケーションをどのように変更すべきであるか、に関する戦略的判別を行うことは、困難である。
【００１４】
本明細書に示す技術は、より低い待ち時間の層のアサインされたブロック毎に、二つ以上の可能な利用状態を追跡することにより、これらの及び他の問題を解決する。例えば、ブロックに関するメタデータは、ブロックがどのように用いられているかを示すように更新される。このメタデータは、個々のブロックが、リードキャッシュとして、ライトキャッシュとして、又は他の目的のために、用いられているかを示す、情報を含み得る。メタデータは、ブロックがどのボリュームにアサインされているか、及び、ブロックがどれくらい頻繁にアクセスされたか、を含む他のタイプの情報も含み得る。多くの他のタイプの利用情報がメタデータに含まれ得、本明細書に示す例は限定することを意図するものでは無い。メタデータは、ブロックアロケーションがどのように変更されるべきかを判別するように処理され得る。例によっては、アロケーションの変更は、リード若しくはライトキャッシュのサイズを変更することを含み得る。他の例では、ハイブリッドストレージ集合体の多重ボリューム間のブロックのアロケーションが、修正され得る。
【００１５】
これらの技術により、ブロックがどのように用いられているかについてのより詳細な解析を行うことができ、ハイブリッドストレージ集合体内のキャッシュが、動作環境として、若しくは、システム変更のニーズとして、動的にアロケートされ得る。動的アロケーションは、容易には修正され得ないハードアロケーションの剛性を緩和する。
【００１６】
本発明の実施形態は、他の方法、種々のコンポーネントを伴うシステム、並びに、一つ以上のプロセッサにより実行される際には、一つ以上のプロセッサに対して、方法、方法のバリエーション、若しくは、本明細書に記載の他のオペレーションを実行させる命令を格納する持続性機械読み取り可能格納媒体も、含む。多数の実施形態を開示しているが、以下の詳細な説明から当業者には更に他の実施形態が明白であろう。なお以下の詳細な説明は、本発明の例示の実施形態を示して記載するものである。明白なように、本発明は、発明の範囲から乖離すること無く、種々の形態での修正が可能である。従って、図面、及び、発明の詳細な説明は本質的に例示として考慮されるべきであり、限定的に考えられるべきものでは無い。
【図面の簡単な説明】
【００１７】
添付の図面の利用により、本発明の実施形態を記載して説明する。
【図１】図１は、本発明のある実施形態が利用され得る動作環境を示す。
【図２】図２は、本発明のある実施形態が利用され得るストレージサーバシステムを示す。
【図３Ａ】図３Ａは、ハイブリッドストレージ集合体のリードキャッシュの例を示す。
【図３Ｂ】図３Ｂは、ハイブリッドストレージ集合体のライトキャッシュの例を示す。
【図４】図４は、本発明の一つの実施形態に係るハイブリッドストレージ集合体を動作する方法の例を示す。
【図５】図５は、ハイブリッドストレージ集合体のストレージブロックのアロケーションを示す。
【図６】図６は、多重ボリュームを含むハイブリッドストレージ集合体のストレージブロックのアロケーションを示す。
【００１８】
図面は、必ずしも原寸に比例して描かれていない。例えば、図面の要素のうちあるものの寸法は、本発明の実施形態の理解を向上させる助けとなるべく、拡大して若しくは縮小していることがある。同様に、部品及び／又は動作のうちには、本発明の実施形態のうちあるものの議論のために、別のブロックに分離されていたり、単体のブロックに融合されていたりする。更に、本発明は種々の修正や代替の形式を受け入れるものであり、特定の実施形態が例示として図面に示され以下に詳細に記載されている。しかしながら、本発明は、以下に記載の特定の実施形態に限定されるものでは無い。むしろ、本発明は、添付の特許請求の範囲に規定する発明の範囲にある、全ての修正、等価物、及び代替物をカバーすることを意図するものである。
【発明を実施するための形態】
【００１９】
ハイブリッドストレージ集合体などの、データストレージシステムは、様々な待ち時間を伴う様々なタイプのストレージデバイスで組成される持続性のストレージスペースを含む。低待ち時間デバイスは、通常、より良いパフォーマンスを示すが、通常、コストの及び／又は他の欠点を有する。ストレージシステムの一部にのみ低待ち時間デバイスで実装すれば、より低い待ち時間のストレージデバイスで全体のストレージシステムを実装することに関連する、全体のコスト若しくは他の制約を被ることなく、かなりのシステムパフォーマンスの改良が見られる。システムパフォーマンスの改良は、より低い待ち時間のデバイス内で、最も頻度高くアクセスされるデータ（即ち、ホットデータ）を選択してキャッシュすることにより、最適化され得る。この構成は、より速くより低い待ち時間のデバイス内で生じる、システムへのリード及びライトの数を最大化する。多くの場合、ストレージシステムで利用可能なストレージスペースは、ブロックレベルで利用のためにアサインされる。本明細書で用いるように、データの「ブロック」は、特定のアドレスにて開始する周知の長さのデータの連続セットである。ある実施形態では、個々のブロックは、長さ４ｋバイトである。しかしながら、ブロックは他のサイズで有ってもよい。低待ち時間ストレージデバイスの、アサインされたブロックは、通常、ストレージシステムのためのリードキャッシュ若しくはライトキャッシュとして用いられる。本明細書で用いるように、「リードキャッシュ」は一般に、ストレージシステムのより高い待ち時間の層に格納されている、「リードキャッシュされる」データの、より高いパフォーマンスコピーを含む、ストレージシステムのより低い待ち時間の層内の少なくとも一つのデータブロックのことである。「ライトキャッシュ」は一般に、ライトパフォーマンスのために、より低い待ち時間の層内に配置された少なくとも一つのデータブロックのことである。ライトキャッシュブロックは、ライトキャッシュブロックが含むデータの、より高い待ち時間の層内に格納される対応するコピー、というものはない。更に、より低い待ち時間の層のブロックは、別の目的のために用いられ得る。例えば、より低い待ち時間の層のブロックは、メタデータのストレージのために、アロケートされたストレージスペース内に含まれない特別のリードキャッシュ（即ち、アロケートされないリードキャッシュ）のために、又は他の目的のために、用いられ得る。
【００２０】
図１は、本明細書に示される技術に関するある実施形態が用いられ得る動作環境１００を示す。動作環境１００は、ストレージサーバシステム１３０、クライアント１８０Ａ、１８０Ｂ、及びネットワーク１９０を示す。
【００２１】
ストレージサーバシステム１３０は、ストレージサーバ１４０、ＨＤＤ１５０Ａ、ＨＤＤ１５０Ｂ、ＳＳＤ１６０Ａ、ＳＳＤ１６０Ｂを含む。ストレージサーバシステム１３０は、データやデータストレージリソースを管理し、含み、アクセスを提供するのに用いられる、様々なタイプの他のデバイスやストレージコンポーネントも含み得る。ストレージサーバ１４０は、一つ以上のファイルシステムを実装するストレージオペレーティングシステム２３０を含むコンピュータデバイスである。ストレージサーバ１４０は、ＨＤＤ１５０Ａ、ＨＤＤ１５０Ｂ、ＳＳＤ１６０Ａ及びＳＳＤ１６０Ｂなどの、書き込み可能な持続性ストレージ媒体上の、情報の構成に関するストレージサービスを提供するサーバクラスコンピュータで有ればよい。ＨＨＤ１５０Ａ及びＨＤＤ１５０Ｂは、ハードディスクドライブであり、ＳＳＤ１６０Ａ及びＳＳＤ１６０Ｂは、半導体ドライブ（ＳＳＤ）である。
【００２２】
通常のストレージサーバシステムは、図１に示すＨＨＤ及び／又はＳＳＤよりも多くのものを含んでもよい。当然ながら、ストレージサーバシステム１３０は、ＨＨＤやＳＳＤに代えて、又は、それらと組み合わせて、他のタイプの持続性のストレージデバイスを用いて実装されてもよい。これらの他のタイプの持続性ストレージデバイスは、例えば、フラッシュメモリ、ＮＶＲＡＭ、ＭＥＭストレージサーバ、若しくはそれらの組み合わせを、含み得る。ストレージサーバシステム１３０は他のデバイスを含んでもよく、他のデバイスは、持続性ストレージデバイスにアクセスし管理するための、ストレージコントローラを含む。ストレージサーバシステム１３０は、モノリシックシステムとして示されるが、様々な地理的位置に分散されるシステムやデバイスを含んでもよい。ストレージサーバシステム１３０は、ストレージサーバ１４０と同じ若しくは異なるストレージオペレーティングシステムを用いて動作する、更なるストレージサーバを含んでもよい。
【００２３】
ストレージサーバ１４０は、ＨＤＤ１５０Ａ、ＨＤＤ１５０Ｂ、ＳＳＤ１６０Ａ、及びＳＳＤ１６０Ｂに格納されるデータを管理する。ストレージサーバ１４０は、クライアント１８０及びクライアント１８０Ｂなどの、クライアントに、これらデバイスに格納されるデータへのアクセスも提供する。本明細書に記載の技術に従い、ストレージサーバ１４０は、ＳＳＤ１６０Ａ及びＳＳＤ１６０Ｂのアサインされたデータブロックに関するメタデータも更新するのであり、このメタデータは、ブロックがどのように用いられているかについての情報も含む。ストレージサーバ１４０はメタデータを処理し、ブロックの特徴をキャッシュすることを判定する。この記載の教示は、ネットワーク接続ストレージ（ＮＡＳ）、ストレージエリアネットワーク（ＳＡＮ）、若しくはクライアントやホストコンピュータに直接付属するディスクアセンブリを含むがこれらに限定されない様々なストレージサーバアーキテクチャに、適用され得る。「ストレージサーバ」の用語は、従って、それら構成を含む広義に解釈されるべきである。
【００２４】
図２は、本明細書に示される技術に関するある実施形態が再び用いられ得るストレージサーバシステム２００を示す。ストレージサーバシステム２００は、メモリ２２０、プロセッサ２４０、ネットワークインタフェース２９２、及びハイブリッドストレージ集合体２８０を含む。ハイブリッドストレージ集合体２８０は、ＨＤＤアレイ２５０、ＨＤＤコントローラ２５４、ＳＳＤアレイ２６０、ＳＳＤコントローラ２６４、及びＲＡＩＤモジュール２７０を含む。ＨＤＤアレイ２５０及びＳＳＤアレイ２６０は、持続性ストレージ媒体の異機種の層である。ＨＤＤアレイ２５０は、ディスクと、ディスク上の様々な位置に機械的に移動するリード／ライトヘッドとを用いて構築される、相対的に廉価でより高い待ち時間の磁気ストレージ媒体を含む。ＨＤＤ１５０Ａ及びＨＤＤ１５０Ｂは、ＨＤＤアレイ２５０を組成するデバイスの例である。ＳＳＤアレイ２６０は、不揮発性のフラッシュメモリデバイスのアレイを用いて構築される、相対的に高価なより低い待ち時間の電子ストレージ媒体３４０を含む。ＳＳＤ１６０Ａ及びＳＳＤ１６０Ｂは、ＳＳＤアレイ２６０を組成するデバイスの例である。ハイブリッドストレージ集合体２８０は、異なる待ち時間のストレージ媒体の他のタイプを含んでもよい。本明細書に記載の実施形態は、ＨＤＤ／ＳＳＤの構成に限定されず、持続性のストレージ媒体の二つのみの層を有する実装に限定されない。三つ以上の層のストレージを含むハイブリッドストレージ集合体も可能である。これらの実装では、個々の層は、階層的方法で別の層のためのキャッシュとして動作し得る。
【００２５】
ハイブリッドストレージ集合体２８０は、ＨＤＤアレイ２５０及びＳＳＤアレイ２６０内のストレージの論理集合体である。この例では、ハイブリッドストレージ集合体２８０は、一つ以上のボリュームを含み得るＲＡＩＤグループのコレクションである。ＲＡＩＤモジュール２７０は、特定のボリュームの内部に一つ以上のパリティグループ（例えば、ＲＡＩＤグループ）としてＨＤＤ及びＳＳＤを構築し、ＨＤＤ及びＳＳＤ上のデータの配置を管理する。少なくとも一つの実施形態では、データは、ボリューム、ディレクトリ、及びファイルなどの、論理コンテナの形式で、ハイブリッドストレージ集合体２８０により格納される。「ボリューム」は、ディスクなどの、大容量ストレージデバイスのコレクションに関連する格納データのセットであり、該大容量ストレージデバイスのコレクションは、集合体からの（即ち、集合体内部に含まれる）ストレージを取得し、完全なファイルシステムなどの、独立の管理ユニットとして管理される。個々のボリュームは、一つ以上のファイル、ディレクトリ、サブディレクトリ、論理ユニット（ＬＵＮ）、若しくは他のタイプの論理コンテナの形式で、データを含み得る。
【００２６】
ＲＡＩＤモジュール２７０は更に、一つ以上のＨＤＤ若しくはＳＳＤの異常発生時に保護を提供する一つ以上のＲＡＩＤ実装に従って、ＲＡＩＤグループを構成する。ＲＡＩＤ実装は、冗長情報（例えば、パリティ）を含むＲＡＩＤグループ内の所与の数のＨＤＤ及び／又はＳＳＤに亘るデータの書き込みにより、データストレージの信頼性及びインテグリティを、強化する。ＨＤＤコントローラ２５４及びＳＳＤコントローラ２６４は、それらの個々のアレイにおける多重物理デバイスに亘って分配されるデータの低レベルマネジメントを実行する。ＲＡＩＤモジュール２７０は、ＨＤＤコントローラ２５４及びＳＳＤコントローラ２６４を利用して、ＨＤＤアレイ２５０及びＳＳＤアレイ２６０内のデータへのアクセスのためのリクエストに応答する。
【００２７】
メモリ２２０は、本明細書に記載の技術を実行するソフトウエアプログラム及びデータ構造を格納するための、プロセッサ２４０によりアドレス可能な格納場所を含む。プロセッサ２４０は、ソフトウエアプログラムを実行しデータ構造を操作するように構成された、回路を含む。ストレージマネジャ２２４は、このタイプのソフトウエアプログラムの一つの例である。ストレージマネジャ２２４は、とりわけ、一つ以上のファイルシステムを実装するようにプロセッサ２４０に指示する。プロセッサ２４０は、ネットワークインタフェース２９２にも相互接続される。ネットワークインタフェース２９２により、クライアント１８０Ａ及びクライアント１８０Ｂなどの、デバイス若しくはシステムは、ハイブリッドストレージ集合体２８０からのデータを読み取り、若しくはハイブリッドストレージ集合体２８０へデータを書き込むことができる。
【００２８】
一つの実施形態では、ストレージマネジャ２２４は、ハイブリッドストレージ集合体２８０内のリード及びライトパフォーマンスを向上させるデータ配置若しくはデータレイアウトアルゴリズムを実装する。ＳＳＤアレイ２６０内のデータブロックは、データを格納するのに用いるべくアサインされる。ブロックは、リードキャッシュとして、ライトキャッシュとして、若しくは他の目的のために、用いられ得る。概略、目的は、最も頻繁にアクセスされるハイブリッドストレージ集合体２８０のデータを格納するためにＳＳＤアレイ２６０のブロックを用いることである。ランダムにアクセスされることが多いデータブロックが、ＳＳＤアレイ２６０内にキャッシュされることもある。この説明の文脈では、「ランダムに」アクセスされるという用語は、データのブロックに言及する場合、データのブロックがストレージ媒体上のそのブロックと同じ物理的近接部に格納される別のデータブロックのアクセスと連動してアクセスされるかどうか、ということに関連する。特に、ランダムにアクセスされるブロックは、ストレージ媒体上のそのブロックと同じ物理的近接部に格納される別のデータブロックのアクセスと連動しないでアクセスされるブロックである。アクセスのランダム性は、通常、半導体ストレージ媒体のパフォーマンスに殆ど若しくは全く効果を生じないが、機械的ドライブコンポーネントの、ディスクの異なる物理的場所への必要な移動により、ディスクベースのストレージ媒体のパフォーマンスに重要なインパクトを生じ得る。データブロックをホットデータとして別途限定するのには、データブロックが十分にはアクセスされ得なくとも、より低い待ち時間の層にランダムにアクセスされるデータブロックを再配置することにより、重要なパフォーマンスの利点が得られ得る。結果として、アクセスの頻度及びアクセスの性質（即ち、アクセスがランダムであるかどうか）は、どのデータがより低い待ち時間の層に配置されるべきかを判定するに際して、合わせて考慮され得る。
【００２９】
ストレージマネジャ２２４は、システムパフォーマンスを向上させるためにＳＳＤアレイ２６０のブロックがどのようにアロケートされ用いられるかを、経時的に修正するように構成され得る。例えば、ストレージマネジャ２２４は、システムパフォーマンスを向上させるために、又は、複数のブロックをより良く利用するために、ＳＳＤアレイ２６０内に実装されたキャッシュのサイズを変更し得る。ストレージマネジャ２２４は、システムアドミニストレータが困難なアロケーションを実行するように手動でシステムを構成することなく、これらのアロケーションを動的に修正し得る。困難若しくは固定のアロケーションが用いられず、ブロックが利用時にアロケートされることもある。
【００３０】
図３Ａは、ハイブリッドストレージ集合体２８０などのハイブリッドストレージ集合体内のリードキャッシュの例を示す。リードキャッシュは、より低い待ち時間の層内で作成されるコピーであって、より高い待ち時間の層内に格納されるデータブロックのコピーであり、頻度高く読み取られる（即ち、データブロックはホットである）。別の場合、より低い待ち時間の層内のブロックは、頻度高くランダムに読み取られることから、リードキャッシュとなり得る。データブロックをホットデータとして別途限定するのには、データブロックが十分にはアクセス得なくても、より低い待ち時間の層にランダムにアクセスされるデータブロックを再配置することにより、重要なパフォーマンスの利点が得られ得る。結果として、アクセスの頻度及びアクセスの性質（即ち、アクセスがランダムであるかどうか）は、どのデータがより低い待ち時間の層に配置されるべきかを判定するに際して、合わせて考慮され得る。
【００３１】
ハイブリッドストレージ集合体内に格納されるファイルのデータブロックの場所に関する情報は、バッファツリーの形式で構成され得る。バッファツリーは、ファイルに関するメタデータを含む階層データ構造であり、ファイルを組成するデータのブロックを配置するのに用いるポインタを含む。これらのデータのブロックは、シーケンシャルの物理的場所に格納されないことが多く、ストレージアレイの様々な地理的場所若しくは領域に亘り広がり得る。経時的に、移動するデータのブロックもあれば、移動しないファイルのデータの別のブロックもある。結果として、バッファツリーは、ファイルのブロックの全てを配置するルックアップテーブルとして動作する。
【００３２】
バッファツリーは、ｉｎｏｄｅと、より低いレベルの間接ブロック及び／又はデータが格納される直接ブロックに言及するポインタを含む一つ以上のレベルの間接ブロックを含む。ｉｎｏｄｅは、ファイルのオーナシップ、ファイルに対するアクセス許可、ファイルサイズ、ファイルタイプ、更には直接及び間接ブロックのポインタなどの、ファイルに関するメタデータを含む。ｉｎｏｄｅは、通常、独立のｉｎｏｄｅファイルに格納される。ｉｎｏｄｅは、ファイルを組成する関連データファイルの全ての場所を見出すための開始ポインタである。ブロックの実際の物理的場所を判定することには、ｉｎｏｄｏ及び一つ以上のレベルの間接ブロックを介して動作することが要求される。
【００３３】
図３Ａは、二つのバッファツリーを示し、一つはｉｎｏｄｅ３２２Ａに関するものであり、もう一つはｉｎｏｄｅ３２２Ｂに関するものである。ｉｎｏｄｅ３２２Ａは、レベル１関節ブロック３２４Ａ及び３２４Ｂを指し示す、若しくは言及する。これらの間接ブロックの各々は、データを格納するデータブロックの物理的格納場所を指し示す。多重レベルの間接ブロックが用いられることもある。間接ブロックは別の間接ブロックを指し示すが、この場合、後者の間接ブロックはデータの物理的格納場所を指し示す。更なる層の間接ブロックも可能である。
【００３４】
図３Ａに示すデータブロックの充填パターンは、データブロックの内容を示す。例えば、データブロック３６３及びデータブロック３８３は同じデータを含む。従前の時点にて、データブロック３６３はホットであると判定され、データブロック３６３のコピーがＳＳＤアレイ３７０内に作成された（即ち、データブロック３８３）。間接ブロック３２４Ｂ内のデータブロック３６３に関するメタデータは、データブロック３６３を読み取るリクエストがデータブロック３８３を指し示すように、更新された。ＨＤＤアレイ３５０は、このブロックを読むときには、バイパスされる。データブロック３６３からよりも、より迅速にデータブロック３８３からデータが読み出され得るので、ストレージシステムのパフォーマンスは向上する。通常、より多くのデータブロックはリードキャッシュに含まれる。例示のために、図３Ａでは一つのみのブロックが示される。ｉｎｏｄｅ３２２Ｂに関するデータブロックは、この例ではキャッシュされていない。
【００３５】
図３Ｂは、ハイブリッドストレージ集合体２８０などの、ハイブリッドストレージ集合体内のライトキャッシュの例を示す。図３Ｂでは、データブロック３９３はライトキャッシュブロックである。データブロック３９３のデータは、他のブロックに対して高い書き込み頻度を有するものと従前識別され（即ち、ホットであった）、ＨＤＤアレイ２５０ではなくＳＳＤアレイ３７０に書き込まれた。データブロック３９３がＳＳＤアレイ３７０に書き込まれたとき、間接ブロック３２４Ｂは、データブロックの新しい物理的場所を示すように変更された。データブロック３９３はより低い待ち時間アレイ３７０に配置されているので、データブロック３９３への後続の書き込みの各々は、より迅速に完了する。ライトキャッシュのこの例では、データブロック３９３内にキャッシュされるデータのコピーは、ＨＤＤアレイ３６０内には保持されない。換言すれば、図３Ｂに示すライトキャッシュの例は、図３Ａのデータブロック３６３に類似するデータブロックは無い。データブロック３９３が書き込まれる毎にＨＤＤアレイ３６０内のデータブロック３９３のコピーも書き込まれなければならないので、ライトキャッシュにはこの構成が好ましい。このことは、ＳＳＤアレイ３７０内に格納されるデータブロック３９３を有することに関するパフォーマンス上の利点を除外する、若しくは実質的に縮小するものである。通常、遙かに多くのデータブロックがライトキャッシュ内に含まれるものである。図示のために、一つのみのブロックが図３Ｂに示されている。ｉｎｏｄｅ３２２Ｂに関するデータブロックはこの例ではキャッシュされていない。
【００３６】
図４は、本発明の一つの実施形態に係るハイブリッドストレージ集合体を動作する方法４００を示す。方法４００は、図２のストレージシステム２００に関して本図に記載されているが、方法４００は多数の他のシステムで実装され得る。方法４００は、ハイブリッドストレージ集合体２８０の物理的ストレージの第２の層のためのキャッシュとして、ハイブリッドストレージ集合体２８０の物理的ストレージの第１の層を、プロセッサ２４０が操作するステップ（ステップ４１０）を含む。この例では、物理的ストレージの第１の層はＳＳＤアレイ２６０であり、物理的ストレージの第２の層はＨＨＤアレイ２５０である。物理的ストレージの第１の層は、利用のためにアサインされた複数のデータストレージブロックを含む。方法４００は、これらアサインされたブロックの少なくとも一つに関するイベントに応答してアサインされたブロックのメタデータをプロセッサ２４０が更新するステップ（ステップ４２０）を含む。メタデータは、アサインされたブロック毎の二つ以上の可能な使用状態を追跡する使用情報を含む。方法４００は、アサインされたブロックのキャッシュの特徴を判定するためのメタデータを処理するステップ（ステップ４３）を含む。
【００３７】
ステップ４３０にて判定されるキャッシュの特徴は、ブロックがライトキャッシュブロックとして若しくはリードキャッシュブロックとして用いられているかどうかを示す情報を含む。キャッシュの特徴は、ブロックがどのような頻度で読み取られたか、ブロックがどのような頻度で書き込まれたか、及び／又はブロックの温度を示す情報も含み得る。ブロックの温度は、ブロックが予めセットされた閾値よりもより頻度高くアクセスされたかどうかに関するカテゴリ指標である。例えば、指定期間にて所定の回数より多くアクセスされたブロックは「ホット」ブロックとして指定可能であり、指定期間にて所定の回数より少なくアクセスされたブロックは「コールド」として指定可能である。ブロック温度に関する二つ以上のカテゴリレベルも可能である。キャッシュの特徴は、ブロックのアサインに関する情報も含み得る。キャッシュの特徴は、アサインされたブロックがシステムでどのように用いられているかを示す他のタイプの情報も含み得る。
【００３８】
方法４００のバリエーションでは、プロセッサ２４０は、上述のキャッシュの特徴の少なくとも一つに基づいて、ＳＳＤアレイ２６０のアサインされたブロックのアロケーションを変更することも行い得る。例えば、プロセッサ２４０は、キャッシュの特徴に基づいて、ＳＳＤアレイ２６０内のリードキャッシュ若しくはライトキャッシュのいずれかのサイズを、増大することも減少することも可能である。多重ボリュームがストレージシステム２００内に格納される場合、ボリュームのうちの特定のボリュームにアサインされる、アサインされたブロックに関する少なくとも一つのキャッシュの特徴を判定するために、個々のブロックに基づいてメタデータが解析され得る。この解析に応答して、多重ボリューム間でのアサインされたブロックのアロケーションが変更され得る。このことは、ボリュームのリードキャッシュ及び／又はライトキャッシュのサイズを相互に関して変更することを含み得る。換言すれば、キャッシュのサイズは、解析に基づいて、ボリュームの間でバランスが取られ得る。
【００３９】
図５は、ハイブリッドストレージ集合体２８０内のストレージブロックのアロケーションを示す。前述のように、ハイブリッドストレージ集合体２８０は、ＨＤＤ２５０及びＳＳＤアレイ２６０を含む。ストレージシステム２００の反応及びパフォーマンスを向上させるために、ＳＳＤアレイ２６０のより低い待ち時間のストレージデバイスは、ＨＤＤアレイ２５０のより高い待ち時間のストレージデバイスのためのキャッシュとして動作する。ＳＳＤアレイ２６０内のストレージスペースのうちには、メタデータのストレージ、バッファツリー、及び／又は、システムマネジメントデータを含む他のタイプのデータのストレージを含む、他の目的のために利用され得るものもある。
【００４０】
ＳＳＤアレイ２６０は、アサインされたブロック５８０と、アサインされていないブロック５７０とを含む。アサインされたブロック５８０とアサインされていないブロック５７０は、物理的に異なるものでも物理的に分離されたものでもない。それらは、ハイブリッドストレージ集合体２８０内でどのように分類され用いられるかという点においてのみ異なる。アサインされたブロック５８０はデータの格納に用いられるようにアサインされており、アサインされていないブロック５７０は用いるようにアサインされていない。アサインされていないブロック５７０は、ＲＡＩＤモジュール２７０及び／又はＳＳＤアレイ２６０による利用に、通常有効では無い。場合によっては、ＳＳＤアレイ２６０内のブロックの全てがアサインされ、アサインされていないブロック５７０が何らのブロックも含まないこともある。また別の場合には、将来のシステムの拡張に追随するため、若しくは、ピークのシステム使用の期間に追随するため、アサインされていないブロック５７０内にブロックがリザーブされることもある。プロセッサ２４０は、ストレージマネジャ２２４と連動して、アサインされたブロック５８０及びアサインされていないブロック５７０の、アサインメント及び使用を管理する。
【００４１】
図５の例では、ＳＳＤアレイ２６０のアサインされたブロック５８０は、メタデータのストレージ５８１、並びに、リードキャッシュ５８２及びライトキャッシュ５８６を含む。アサインされたブロック５８０内のストレージスペースは、他の目的にも用いられ得る。アサインされたブロック５８０は、多重リードキャッシュ及び／又は多重ライトキャッシュを格納するのにも用いられる。メタデータ５８１は、個々のブロックに基づいて、アサインされたブロック５８０の使用を記載するブロック使用情報を含む。当然ながら、メタデータ５８１は、ＨＤＤアレイ２５０を含む、別の場所内にも格納され得る。
【００４２】
図５のＨＤＤアレイ２５０は、データブロック５９１、データブロック５９２、データブロック５９３、及びデータブロック５９４を含む。通常、更に多くのデータブロックがあるが、例示の目的のため少数のブロックのみを含めている。データブロックの各々は、モノリシックのブロックとして示しているが、個々のブロックを組成するデータは多重ＨＤＤに亘って拡散してもよい。リードキャッシュ５８２及びライトキャッシュ５８６は各々、データブロックを含む。リードキャッシュ５８２及びライトキャッシュ５８６は、物理的デバイスでも構造でもない。それらは、ＳＳＤアレイ２６０内部のブロックのアサイン及び論理関係を示す。特に、それらは、プロセッサ２４０及びストレージマネジャ２２４が、キャッシュの目的のためにＳＳＤアレイ２６０のアサインされたブロックをどのように使用するかを示す。
【００４３】
図５では、リードキャッシュ５８２のブロック５８３は、ＨＤＤアレイ２５０のブロック５９１のためのリードキャッシュである。典型的に、ブロック５８３は一つのリードキャッシュブロックとして記載され、ブロック５９１はそのリードキャッシュされたブロックとして記載されている。ブロック５８３は、ブロック５９１のデータのコピーを含む。リードブロック５９１へのリクエストがストレージシステム２００により受信されると、そのリクエストは、ブロック５８３を読み出すことにより充足する。ブロック５８４とブロック５９３は、同様のリードキャッシュ関係を有する。ブロック５８４は、ブロック５９３のためのリードキャッシュであり、ブロック５９３内のデータのコピーを含む。ライトキャッシュ５８６のブロック５８７及びブロック５８８は、ライトキャッシュブロックである。ある時点では、ブロック５８７及びブロック５８８は、ＨＤＤアレイ２５０内に格納されていたかもしれないが、ライトキャッシュされてデータはライトキャッシュ５８６に再配置された。典型的には、ブロック５８７やブロック５８８などの、ライトキャッシュブロックは、ＨＤＤアレイ２５０内に対応するコピーを有さない。
【００４４】
先立つ時点にて、データブロック５８３、５８４、５８７、及び５８８を格納するのに用いられるストレージブロックが使用のためにアサインされた。これらのストレージブロックは、アサインされていないブロック５７０内に予め含まれており、実際に用いられて論理的にアサインされたブロック５８０の一部となった。図示するように、アサインされたブロックは、リードキャッシュに、ライトキャッシュに、若しくはメタデータのストレージに、用いられ得る。アサインされたブロックは、システムマネジメントデータや管理データを格納することを含む、他の目的にも用いることができる。先行技術のシステムは、ＳＳＤアレイ２６０を組成するブロックについての、二つの可能な利用状態を追跡する。二つの可能な利用状態は、アサインされたこと、若しくはアサインされていないこと、である。
【００４５】
図５では、プロセッサ２４０及びストレージマネジャ２２４は、アサインされたブロックに関するブロック利用情報を追跡する。ブロック利用情報は、先行技術のシステムの二つの利用状態よりも、より詳細な情報を含む。ブロック利用情報は、メタデータ５８１内に含まれる。ブロック利用情報は、キャッシュブロックのタイプ（即ち、リードキャッシュ若しくはライトキャッシュ）、ブロックの読み出し及び／又は書き込みの頻度、ブロックの温度、ブロックのための寿命の読み出し及び／又は書き込みのトータル、ブロックがアサインされるボリューム、又は、他の利用の情報を含み得る。
【００４６】
一つの例では、メタデータ５８１は、ＳＳＤアレイ２６０の各々に対する、時間及び温度マップ（ＴＴＭａｐ）を含む。ＴＴＭａｐは、ブロックタイプ、温度、プールｉｄ、及びリファレンスカウントを含むエントリであればよい。ブロックのタイプ及び温度については前述している。プールｉｄ及びリファレンスカウントは更に、ブロックの利用を記載するものである。プールは、ＳＳＤアレイ２６０のブロックの論理分割に、言及するものである。プールは、ライトキャッシュ、リードキャッシュ、特定のボリューム、特定のファイル、他の特定の利用、又はそれらの組み合わせなどの、特定の利用のために、形成され得る。プールは、特定のボリュームのためのリードキャッシュとして用いることに専用されてもよい。プールは、メタファイルの格納のためにもアロケートされ得る。プールＩＤは、プールの識別子である。
【００４７】
別の例では、メタデータ５８１は、ＴＴＭａｐの種々の要素に関する統計を含むカウンタマップを含み得る。これらの統計は、例えば、特定のタイプのブロックの特徴に関する統計、これらブロックへの参照回数、これらのブロックの温度、又は、他の関連する情報を含み得る。メタデータ５８１は、ＯｗｎｅｒＭａｐ（オーナマップ）も含み得る。ＯｗｎｅｒＭａｐ（オーナマップ）は、アサインされたブロックのオーナシップに関する情報を含む。
【００４８】
メタデータ５８１を組成する種々のフィールドは、アサインされたブロックが用いられると更新される。一つの例では、メタデータは、アサインされたブロックの一つに関連するイベントに応答して更新される。イベントは、ブロックの書き込み、ブロックの読み出し、ブロックの解放、若しくは、ブロックのアクセス頻度の変更を、含み得る。ブロックがデータを格納するために能動的にもはや用いられていないがアサインされていないのではないとき、ブロックは解放されてもよい。イベントは、ブロック、若しくはブロック上で実行されるオペレーションとの、別のインタアクションを含んでもよい。メタデータ５８１は、アサインされたブロック５８０のうちの個別のブロック、若しくはアサインされたブロック５８０からのブロックの組み合わせに関する、利用若しくはキャッシュの特徴を判別するように、処理される。処理の結果は、リードキャッシュ５８２及び／又はライトキャッシュ５８６がどのように用いられているかに関する詳細な説明（アカウンティング）を作成するのに用いられ得る。
【００４９】
プロセッサ２４０及びストレージマネジャ２２４は、前述の説明（アカウンティング）を利用して、アサインされたブロック５８０のアロケーションを変更し得る。一つの例では、メタデータ５８１の処理は、アサインされたブロックの全て若しくは大部分が十全に利用されていることを示し得る。この場合、アサインされていないブロック５７０のうちの更なるブロックのアサインは、システムパフォーマンスを向上させ得る。これらの更なるブロックは、リードキャッシュ５８２、ライトキャッシュ５８６、若しくは両方のサイズを、増加するのに用いられ得る。
【００５０】
別の例では、メタデータ５８１は、リードキャッシュ５８２及びライトキャッシュ５８６の利用、若しくはキャッシュの特徴が別々に識別されるように、処理され得る。キャッシュの各々を組成する個別のブロックのブロック利用情報を別々に集合させることにより、リードキャッシュ５８２及びライトキャッシュ５８６のための、総体の利用情報が生成され得る。集合されたブロック利用情報を処理することは、システムパフォーマンスを維持若しくは向上させるためにキャッシュの一つのサイズが変更されるべきであり他のキャッシュのサイズが変更されずに保持される、ということを示し得る。
【００５１】
別の例では、別々に集合されたブロック利用情報の処理は、一つのキャッシュが十全に利用され別のものはそうではない、ということを示す。この場合、リードキャッシュ５８２か、ライトキャッシュ５８６のいずれかのブロックは、一つのキャッシュからアロケートを解除され他のキャッシュへ再アロケートされ得る。キャッシュのうちの一つが利用中であり他のキャッシュが利用中で無いときに、このことは適切である。キャッシュのサイズは、それらの相対的なサイズ、それらの利用頻度に基づいて、又は、他の要素に基づいて、調整され得る。個別のブロック利用情報を含む、メタデータ５８１により、アサインされたブロックがどのように用いられているかより良く理解するために、種々のタイプのブロック利用の説明（アカウンティング）及び／又は解析が実行され得る。ＳＳＤアレイ２６０の利用若しくはパフォーマンスを最適化するアロケーション決定をするためにも、用いられ得る。
【００５２】
図６は、多重ボリュームを格納することを含む構成におけるハイブリッドストレージ集合体２８０内のストレージブロックのアロケーションを示す。この例では、ボリューム６９１、ボリューム６９２、及びボリューム６９３は、ハイブリッドストレージ集合体２８０に格納される。ボリューム６９１に関するデータの全ては、ＨＤＤアレイ２５０に格納され、ボリューム６９２及びボリューム６９３はＳＳＤアレイ２６０のブロックを用いる、リードキャッシュ及びライトキャッシュの両方である。リード及びライトキャッシュは、前述の例に記載したように動作する。この例では、メタデータは、図５のようなＳＳＤアレイ２６０ではなく、ＨＤＤアレイ２５０に格納される。この例では、メタデータ５８１は、ボリュームのうちのどれがアサインされたブロックの各々を用いているか（即ち、所有するか）を示すことに関する情報も含む。ある場合には、特定のボリュームへのブロックのアサインを示す情報は、ＯｗｎｅｒＭａｐの形式でメタデータ５８１内に格納され得る。ＯｗｎｅｒＭａｐは、アサインされたブロックのオーナシップに関する情報を含む、メタデータ５８１内部のファイルである。
【００５３】
前述の例に記載したように、多数の様々なタイプのアロケーション決定が、メタデータ５８１の処理、若しくはメタデータ５８１から判別されるキャッシュの特徴に基づいて、為され得る。図６の場合、どのボリュームがブロックを用いているかを示す、メタデータ５８１内の情報は、前述の例に記載したようなブロックの他のキャッシュの特徴を含み得る。これらのキャッシュの特徴は、アロケーションの判別を行うためのボリューム利用情報と連動して用いられ得る。ある場合には、メタデータ５８１は、ボリュームに所有されない若しくは用いられない、ブロックに関するブロック利用情報も含み得る。
【００５４】
一つの例では、ボリューム６９２により用いられているリードキャッシュ５８２の全てのブロックに関するブロック利用情報は、ボリューム６９３により用いられているリードキャッシュ５８２の全てのブロックに関する総体ブロック利用情報に対して、総体的に解析され得る。解析は、ボリューム６９２に関するリードキャッシュブロックが、ボリューム６９２に関するリードキャッシュブロックよりもずっと頻繁に用いられていることを、示し得る。より多くのリードキャッシュブロックをボリューム６９３にアロケートすることにより、パフォーマンスの向上は達成され得る。ボリューム６９２に関するリードキャッシュブロックが頻繁には用いられていないので、これらブロックのうちの一部が、ボリューム６９３に用いられるように再アロケートされてもよい。
【００５５】
他の例では、更なるブロックが、更なるブロックが、ライトキャッシュ５８６から、若しくはアサインされないブロック５７０から、リードキャッシュ５８２にアロケートされ得る。別の例では、現在ボリューム６９１がキャッシュされていないとしても、リードキャッシュ５８２及び／又はライトキャッシュ５８６の、比較的低い利用度が、ボリューム６９１による利用のためにこれらキャッシュの一つ若しくは両方のブロックの一部をアロケートすることを、正当化し得る。これらのタイプのブロックアロケーションの決定は、メタデータ６８１内で追跡されるブロック利用情報の多数の様々な配列に基づいて、動的に為され得る。ブロック利用情報に基づく、多数の様々なパフォーマンス拡張ストラテジも可能である。
【００５６】
本発明の実施形態は、前述したように、種々のステップ及び動作を含む。種々のこれらのステップ及び動作は、ハードウエアコンポーネントにより実行可能であり、又は、機械読み取り可能命令で具体化可能であり、該機械読み取り可能命令は、前記ステップを実行する命令でプログラムされた、一つ以上の汎用の若しくは専用のプロセッサを動かすのに用いられ得る。一方で、ハードウエア、ソフトウエア、及び／又はファームウエアの組み合わせにより、前記ステップが実行され得る。
【００５７】
本発明の実施形態は、コンピュータ若しくは他の電子デバイスが本明細書に記載のオペレーションの一部若しくは全てを実行すべくプログラムされるように用いられ得る持続性命令を格納した、機械読み取り可能媒体を含むコンピュータプログラムプロダクトとして、提供され得る。機械読み取り可能媒体は、光学ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、光磁気ディスク、フロッピディスク、ＲＯＭ、ランダムアクセスメモリ（ＲＡＭ）、消去可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、磁気若しくは光学カード、フラッシュメモリ、又は、電子的命令を格納するのに適切である他のタイプの機械読み取り可能媒体を含み得るが、それらに限定されない。更に、本発明の実施形態は、コンピュータプログラムプロダクトとしてもダウンロード可能であり、その場合、プログラムは、搬送波で具体化されるデータ信号により、又は、通信リンクを介する他の伝搬媒体により、リモートコンピュータから、要求を出したコンピュータへ、転送され得る。
【００５８】
「ある実施形態では」、「ある実施形態によると」、「図示する実施形態では」、「他の実施形態では」、「ある例では」などのフレーズは、フレーズに続く特定の特性、構造、若しくは特徴が、本発明の少なくとも一つの実施形態に含まれること、及び、本発明一つ以上の実施形態に含まれ得ることを、概略意味する。更に、それらフレーズは、同じ実施形態若しくは異なる実施形態に、必ずしも言及しない。
【００５９】
本発明の一つ以上の実施形態に関する詳細な説明を上述に示したが、本発明の精神から変動すること無く、様々な代替、修正及び等価物が当業者には明白である。例えば、前述の実施形態は特定の特性に言及するが、本発明の範囲は、特性の様々な組み合わせを有する実施形態、及び、記載の特性の全てを含むわけでは無い実施形態も、含む。従って、本発明の範囲は、請求項の範囲内に在るそのような代替、修正及び変更の全て、更にはそれらの等価物の全てを、含むことを意図するものである。従って、前述の記載は、請求項によって規定される、本発明の範囲を限定するものとして捉えられるべきでは無い。
【符号の説明】
【００６０】
１３０・・・ストレージサーバシステム、１４０・・・ストレージサーバ、１８０Ａ、１８０Ｂ・・・クライアント、１９０・・・ネットワーク、２２０・・・メモリ、２２４・・・ストレージマネジャ、２４０・・・プロセッサ、２５０・・・ＨＤＤアレイ、２５４・・・ＨＤＤコントローラ、２６０・・・ＳＳＤアレイ、２６４・・・ＳＳＤコントローラ、２７０・・・ＲＡＩＤモジュール、２９２・・・ネットワークインタフェース。
【図１】
0006326378.tif 000002
【図２】
0006326378.tif 000003
【図３Ａ】
0006326378.tif 000004
【図３Ｂ】
0006326378.tif 000005
【図４】
0006326378.tif 000006
【図５】
0006326378.tif 000007
【図６】
0006326378.tif 000008