(57)【要約】  データ記憶システムの操作方法は、ホストコマンドを受信するためのシステムインターフェースを可能にするステップと、ホスト仮想ブロックアドレスを記憶装置の物理アドレスに変換することを含むホストコマンド用の論理ブロックアドレスのトランザクションレコードを監視するためのマッピングレジスタを更新するステップと、記憶プロセッサによって、マッピングレジスタにアクセスしてトランザクションレコードを階層ポリシーレジスタと比較するステップと、トランザクションレコードが階層ポリシーレジスタを超えると記憶プロセッサが判定した場合に、階層記憶エンジンによってホストデータブロックをシステムインターフェースにより転送し、かつ同時にティア０、ティア１またはティア２間で転送することを可能にするステップとを含む。
2014500542.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶システムの操作方法であって、
ホストコマンドを受信するためのシステムインターフェースを可能にするステップと、
ホスト仮想ブロックアドレスを記憶装置の物理アドレスに変換することを含む前記ホストコマンド用の論理ブロックアドレスのトランザクションレコードを監視するためのマッピングレジスタを更新するステップと、
記憶プロセッサによって、前記マッピングレジスタにアクセスして前記トランザクションレコードを階層ポリシーレジスタと比較するステップと、
前記トランザクションレコードが前記階層ポリシーレジスタを超えると前記記憶プロセッサが判定した場合に、階層記憶エンジンによってホストデータブロックを前記システムインターフェースにより転送し、かつ同時にティア０、ティア１またはティア２間で転送することを可能にするステップとを含む、データ記憶システムの操作方法。
【請求項２】
前記システムインターフェースによって前記ホストデータブロックを転送するステップは、
前記階層記憶エンジンによって記憶ポートにアクセスするステップと、
前記記憶ポートを介して記憶データを転送するステップとを含み、
前記記憶データを転送するステップは、前記階層記憶エンジンによって前記記憶データを記憶インターフェースに移動するステップを含む、請求項１に記載の方法。
【請求項３】
前記階層記憶エンジンに結合され、記憶データと前記ホストデータブロックとの間で転送するためのローカルキャッシュにアクセスするステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記ホストコマンドを実行するためのコマンドハンドラを前記システムインターフェースにより活性化するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記ティア０、前記ティア１、前記ティア２の一部またはそれらの組合わせを有するホスト記憶要素の全ボリュームのスナップショットデータを捕捉するステップをさらに含む、請求項１に記載の方法。
【請求項６】
ホストコマンドを受信するためのシステムインターフェースと、
前記システムインターフェースによりアドレス指定され、前記ホストコマンド用の論理ブロックアドレスのトランザクションレコードを監視するためのマッピングレジスタとを備え、
前記マッピングレジスタは、記憶装置の物理アドレスに変換されたホスト仮想ブロックアドレスを含み、さらに
前記マッピングレジスタに結合され、前記トランザクションレコードを階層ポリシーレジスタと比較するための記憶プロセッサと、
前記記憶プロセッサに結合され、前記トランザクションレコードが前記階層ポリシーレジスタを超えると前記記憶プロセッサが判定した場合に、前記システムインターフェースによってホストデータブロックを転送し、かつ同時にティア０、ティア１またはティア２間で転送するための階層記憶エンジンとを備える、データ記憶システム。
【請求項７】
前記システムインターフェースによって転送される前記ホストデータブロックは、
前記階層記憶エンジンによってアクセスされる記憶ポートと、
前記階層記憶エンジンに結合されるローカルキャッシュとを含み、
前記ローカルキャッシュは、前記階層記憶エンジンによって、前記記憶ポートを介して転送され、かつ、記憶インターフェースに移動した記憶データを含む、請求項６に記載のシステム。
【請求項８】
前記階層記憶エンジンに結合され、記憶データおよび前記ホストデータブロックが格納されるローカルキャッシュをさらに備える、請求項６に記載のシステム。
【請求項９】
前記システムインターフェースによって活性化され、前記ホストコマンドを実行するためのコマンドハンドラをさらに備える、請求項６に記載のシステム。
【請求項１０】
前記ティア０、前記ティア１、前記ティア２の一部またはそれらの組合わせを有するホスト記憶要素をさらに備え、
前記ホスト記憶要素は、その残余の部分において、前記記憶プロセッサによりアクセスされ、かつ、前記ホスト記憶要素の全ボリュームを再生するためのスナップショット容量を含む、請求項６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１０年１０月２７日付で出願された米国仮特許出願第６１／４０７，４３２号、および２０１１年１０月２６日付で出願された米国特許出願１３／２８２，４１１号の利益を主張し、その主題が参照によってここに援用される。
【０００２】
技術分野
この発明は、概略的には、データ記憶システムに関し、より具体的には、サーバおよびネットワーク上でデータ記憶を管理するためのシステムに関する。
【背景技術】
【０００３】
今日の現代的なデータセンターや、ネットワーク化されたコンピュータ、企業情報システムにおいて作成されている非構造化データの飛躍的な増加で、頻繁にアクセスされる重要なデータを最高性能のストレージ（しばしば「主ストレージ」とも称される。）に置き、古いデータを低コストかつ低性能のアーカイブ向けストレージに置くことを管理し、保証することがますます困難になっている。主ストレージの例には、１５０００ｒｐｍベースの「シリアル・アタッチド・ＳＣＳＩ（Serial  Attached  SCSI）」（「ＳＡＳ」）ディスクドライブのような、「ソリッド・ステート・ディスク（Solid  State  Disks）」（「ＳＳＤ」）や最高性能の磁気ディスクドライブが含まれる。
【０００４】
アーカイブストレージの例には、たとえば「シリアル・アドバンスト・テクノロジー・アタッチメント（Serial  Advanced  Technology  Attachment）」（「ＳＡＴＡ」）ディスクアレイや、「マッシブ・アレイ・オブ・アイドル・ディスク（Massive  Arrays  of  Idle  Disks）」（「ＭＡＩＤ」）、あるいは古いテープメディアに基づくアーカイブ等の、低コストのディスクドライブ技術を利用する「二次ストレージ」が含まれる。各タイプのストレージは、アクセス時間および待ち時間、本来の性能ならびにコストに関して異なる属性を有している。たとえば、今日の価格では、ハイエンドＳＳＤは、ギガバイト容量ベースで、テープメディアの価格の１０００倍以上であり、ＳＡＳディスクドライブの価格の５０倍以上である。
【０００５】
コスト、性能およびエネルギー面でのこれらの相違のために、多くのコンピュータシステムは、仮想化されたストレージ環境により多く依存しており、それによって、混じり合った種々のタイプの記憶メディアを、ホストコンピュータのファイルシステムに対する一つの大きな（または分割された）仮想データボリュームとして仮想化し得るとともに、ホストコンピュータの適用やコンピュータファイルシステムの関与なしに、最も適切なタイプのストレージあるいは階層（ティア）にデータを自動的に割り当てることができる。
【０００６】
データ管理を有するデータ記憶システムは、依然として必要とされている。データストレージについて性能およびコストの範囲にわたりますます高まる需要の観点から、これらの問題に対して答えを見つけることがますます重要になっている。消費者の高まる期待と市場における有意な製品差別化の機会減少とに伴ない、ますます高まる商業的な競争圧力の観点から、これらの問題に対して答えを見つけることが重要になっている。さらに、コストを削減し、効率および性能を向上させ、競争圧力に対応する必要性によって、これらの問題に対する答えを見つける重大な必要性に一層の緊急性さえも加わっている。
【０００７】
これらの問題に対する解決策は、長い間求められてきたが、これまでいかなる教示も示唆も与えられておらず、そして、これらの問題に対する解決策は、長い間当業者によって見出されていない。
【発明の概要】
【課題を解決するための手段】
【０００８】
発明の開示
この発明は、データ記憶システムの操作方法を提供するものであって、操作方法は、ホストコマンドを受信するためのシステムインターフェースを可能にするステップと、ホスト仮想ブロックアドレスを記憶装置の物理アドレスに変換することを含むホストコマンド用の論理ブロックアドレスのトランザクションレコードを監視するためのマッピングレジスタを更新するステップと、記憶プロセッサによって、マッピングレジスタにアクセスしてトランザクションレコードを階層ポリシーレジスタと比較するステップと、トランザクションレコードが階層ポリシーレジスタを超えると記憶プロセッサが判定した場合に、階層記憶エンジンによってホストデータブロックをシステムインターフェースにより転送し、かつ同時にティア０、ティア１またはティア２間で転送することを可能にするステップとを含む。
【０００９】
この発明は、データ記憶システムを提供するものであって、データ記憶システムは、ホストコマンドを受信するためのシステムインターフェースと、システムインターフェースによりアドレス指定され、ホストコマンド用の論理ブロックアドレスのトランザクションレコードを監視するためのマッピングレジスタとを含み、マッピングレジスタは、記憶装置の物理アドレスに変換されたホスト仮想ブロックアドレスを含み、さらに、データ記憶システムは、マッピングレジスタに結合され、トランザクションレコードを階層ポリシーレジスタと比較するための記憶プロセッサと、記憶プロセッサに結合され、トランザクションレコードが階層ポリシーレジスタを超えると記憶プロセッサが判定した場合に、システムインターフェースによってホストデータブロックを転送し、かつ同時にティア０、ティア１またはティア２間で転送するための階層記憶エンジンとを含む。
【００１０】
本発明のある実施の形態は、上述のものに加えて、または上述のものに代えて、他のステップまたは要素を有する。そのステップまたは要素は、添付の図面を参照した以下の詳細な説明を読むことにより当業者に明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施の形態における階層データ記憶システムの機能ブロック図である。
【図２】階層データ記憶システムのシステムアプリケーションの機能ブロック図である。
【図３】この発明の第２の実施の形態における階層データ記憶システムのシステムアプリケーションの機能ブロック図である。
【図４】階層データ記憶システムによって管理される階層記憶アレイの機能ブロック図である。
【図５】階層データ記憶システムによって実行されるホスト読出コマンドのフロー図である。
【図６】階層データ記憶システムによって実行されるホスト書込コマンドのフロー図である。
【図７】階層データ記憶システムの仮想ビューを有するコンピュータシステムである。
【図８】階層データ記憶システムのアーキテクチャーのブロック図である。
【図９】階層データ記憶システムのシステムアプリケーションのブロック図である。
【図１０】階層データ記憶システムのバックグラウンドスキャンのフロー図である。
【図１１】スナップショット操作における階層データ記憶システムの機能ブロック図である。
【図１２】この発明のさらなる実施の形態における階層データ記憶システムの操作方法のフローチャートである。
【発明を実施するための形態】
【００１２】
発明を実施するためのベストモード
以下の実施の形態は、当業者が本発明を作り、かつ、使用することができるように十分詳細に記載されている。本開示に基づいて他の実施の形態が明らかであろうこと、そして、本発明の範囲から逸脱することなく、システム、プロセス、または機械的な変更がなされ得ることが理解されるべきである。
【００１３】
以下の説明において、本発明の完全な理解を提供するために多数の特定の詳細が与えられる。しかしながら、本発明は、これらの特定の詳細なしに実施され得ることは明らかであろう。本発明を不明瞭にすることを避けるために、いくつかの周知の回路、システム構成、およびプロセスのステップは、詳細には開示されていない。
【００１４】
システムの実施の形態を示す図面は、概略図であってスケーリングされておらず、特に、いくつかの寸法は、提示を明確にするためのものであって、図面で誇張して示されている。同様に、図の表示は、説明を容易にするために一般的に同様の方向を示しているが、図面のこの描画は、大部分において任意である。概略的には、本発明は、任意の向きで操作され得る。
【００１５】
複数の実施の形態がいくつかの共通の特徴を有して開示され記載されている場合には、図、記述およびそれらの理解を明瞭かつ容易にするために、類似の特徴は互いに、通常、同じ参照符号を付して説明されるであろう。
【００１６】
解説用として、本明細書で使用される用語「水平（horizontal）」は、向きに拘わらず、地面または地球の表面に平行な平面として定義される。用語「垂直（vertical）」は、上記で定義された「水平」に垂直な方向を示す。「上の（above）」、「下の（below）」、「下端（bottom）」、「上端（top）」、「側（side）」（「側壁（sidewall）」のような）、「より高い（higher）」、「より低い（lower）」、「上方の（upper）」、「超えて（over）」、および「下に（under）」等の用語は、図に示されるように、水平面に対して定義される。
【００１７】
本明細書において用語「処理（processing）」は、システムデータおよびプログラムを転送し格納することとして用いられる。用語「階層記憶（tiered  storage）」は、データ利用の頻度に見合う性能を有する装置にデータを格納し得る構造と定義される。一例として、国勢調査データのような稀にしか使用しないデータは、低性能かつ安価なアーカイブ記憶装置に格納し、一方、頻繁にアクセスされるプログラムデータは、ソリッド・ステート・ディスクや、１５０００ｒｐｍで回転し、かつ、より高価な高性能インターフェースを介して通信する磁気ハードディスクドライブに格納し得る。用語「アーカイブ装置（archival  device）」は、たとえば、磁気テープ記憶装置や光媒体記憶装置のような、非常に高容量の低性能記憶装置として定義される。
【００１８】
用語「ティア０（tier  zero）」は、最高性能の記憶装置のグループと定義され、高性能のインターフェースを有する、キャッシュメモリ構造、ソリッド・ステート・ディスク、および最高性能の磁気ハードディスクドライブを含み得る。用語「ティア１（tier  one）」は、高容量を提供する中間性能の記憶装置のグループと定義され、適度な性能のインターフェースを有する磁気ハードディスクドライブを含み得る。用語「ティア２（tier  two）」は、最も性能の低い記憶装置のグループと定義され、最も性能の低いインターフェースを有する、磁気テープ記憶装置や光媒体記憶装置のようなアーカイブ装置を含み得る。本発明の説明は、動作を説明するために３つの階層を用いるが、任意の数の階層が他の実装において定義され得ることが理解される。多数の階層は、多くのアプリケーションにおいて典型的であるが、しかしながら、他の性能あるいはデータ保護の基準、ストレージ・クラス・メモリ（ＳＣＭ）のような他の記憶メディアのタイプ、または他の新しいメモリ技術（すなわち、位相変化、スピンプログラマブル、メモリスタ、その他同様の技術）に対処するために、これらの３タイプを超える異なる数の記憶の階層も存在し得る。
【００１９】
用語「インバンド（in-band）」は、プライマリインターフェースを利用してシステム管理情報を伝達するメッセージング方法論と定義され、それによってプライマリインターフェースの帯域のいくらかを消費する。用語「アウトオブバンド（out-of-band）」は、プライマリインターフェース以外の手段を使用してシステム管理情報を伝達するメッセージング方法論と定義され、それによってプライマリインターフェースの帯域の消費はない。
【００２０】
階層記憶に関して、用語「昇格（promote）」は、ある性能の階層よりも高性能の階層に関連する、より高性能の記憶装置に対象データを物理的に動かすことによって、ある性能の階層からより高性能の階層へ対象データを転送することを意味するものと定義される。階層記憶に関して、用語「降格（demote）」は、ある性能の階層よりも低性能の階層に関連する、より低性能の記憶装置に対象データを物理的に動かすことによって、ある性能の階層からより低性能の階層へ対象データを転送することを意味するものと定義される。
【００２１】
本願において用語「相応（commensurate）」は、データの使用頻度に対して適切な性能レベルと定義され、それによって、頻繁に使用されるデータに対して高性能の記憶装置を提供し、稀にしか使用されないデータに対して低性能の記憶装置を提供する。本願において用語「自律（autonomous）」は、対象データを昇格または降格するのに階層データ記憶システムが外部のいかなるホストのリソースの支援や許可を必要としないことを意味するものと定義される。
【００２２】
図１を参照して、ここでは、この発明の実施の形態における階層データ記憶システム１００の機能ブロック図が示される。階層データ記憶システム１００の機能ブロック図には、たとえば、パーソナルコンピュータ・インターフェース・エクスプレス（ＰＣＩ−ｅ）TM、ユニバーサル・シリアル・バス（ＵＳＢ）TM、サンダーボルトTMのようなシステムインターフェース１０２が描かれている。システムインターフェース１０２は、コマンドハンドラ１０４に結合され得る。
【００２３】
コマンドハンドラ１０４は、システムインターフェース１０２を介して受信されるコマンドを復号して実行するためのハードウェアアクセラレータと定義される。コマンドハンドラ１０４は、たとえば、組合せ論理や、プログラムシーケンサ、順次ステートマシンの組合せであり得る。コマンドハンドラ１０４は、システムインターフェース１０２からのコマンドの受信を管理し、コマンドを復号し、コマンドの実行を管理し、そしてシステムインターフェース１０２との任意のやり取りのためのエラー管理および回復を実行する。
【００２４】
コマンドハンドラ１０４は、マイクロプロセッサや組込マイコン等の記憶プロセッサ１０６に結合され得る。記憶プロセッサ１０６は、ホストインターフェース１０２からのあらゆるデータ転送要求とは関係なく、階層データ記憶システム１００の動作全体を制御する。記憶プロセッサ１０６は、割込みで駆動され、ポーリングにより動作し、またはそれらの組合せで動作し得る。記憶プロセッサは、階層ポリシーレジスタ１０８によって案内され得る。階層ポリシーレジスタ１０８は、システムインターフェース１０２を介して転送されたデータの記憶と関連付けられるルールを含む抵抗アレイまたは不揮発性メモリであり得る。階層ポリシーレジスタ１０８のルールは、ホスト中央処理装置（図示せず）と予め取り決められ得る。
【００２５】
記憶プロセッサ１０６は、階層ポリシーレジスタ１０８のポリシーまたは他のパラメータを修正するために、ホスト中央処理装置（図示せず）とのインバンドまたはアウトオブバンドの管理インターフェース（図示せず）を提供することができる。このインターフェースは、たとえば、アドバンスト・ホスト・コンピュータ・インタフェース（ＡＨＣＩ）や、記憶プロセッサ１０６と通信するための他の手段を用いて、ベンダー固有の「ＳＭＡＲＴ」コマンドのような方法を用いてもよい。
【００２６】
マッピングレジスタ１１０は、システムインターフェース１０２を介して転送されたデータの記憶位置およびアクセスを管理するために、記憶プロセッサ１０６によってアクセスされる抵抗アレイまたは不揮発性メモリであり得る。マッピングレジスタ１１０は、仮想から物理的なブロックへのマッピングや、システムインターフェース１０２を介して転送されたデータブロックへのアクセス回数および頻度の統計のような、トランザクションレコード１１１を保持することができる。
【００２７】
記憶プロセッサ１０６とマッピングレジスタ１１０との間の相互作用は、システムインターフェース１０２を介して転送されたデータが階層ポリシーレジスタ１０８に基づいて昇格されるべきか降格されるべきかを常に監視し得る。階層ポリシーレジスタ１０８のルールに基づいて、記憶プロセッサ１０６は、システムインターフェース１０２を介して転送されたデータが、マッピングレジスタ１１０に入力されたアクセス回数およびタイプに相応の性能を有する記憶装置（図示せず）に移動されるべきであることを決定することができる。
【００２８】
昇格または降格の決定をする際に、記憶プロセッサ１０６は、優先順位、階層化に割り当てられる論理ドライブのレベル、任意のロック変数、および使用されるソリッド・ステート・ドライブ（ＳＳＤ’ｓ）の任意のウェアレベリングを含む、アロケーションブロックでの読み書きのトランザクションレコード１１１を考慮し得る。
【００２９】
論理ブロックアドレス適合ブロック１１２は、コマンドハンドラ１０４とマッピングレジスタ１１０との間に結合される。論理ブロックアドレス適合ブロック１１２は、ホスト仮想ブロック要求を物理デバイスまたは他の仮想デバイス要求に変換し、システムインターフェース１０２を介して受信されるデータブロックがマッピングレジスタ１１０において参照されるかどうかを迅速に確認することができる。論理ブロックアドレス適合ブロック１１２は、記憶プロセッサ１０６による介入なしにマッピングレジスタ１１０を更新することができる。
【００３０】
マッピングレジスタ１１０は、論理ブロックアドレス適合ブロック１１２からホスト仮想論理ブロックアドレスを取り込み、どの物理ディスクにホスト仮想論理ブロックアドレスがマップされるかを検索し、そして、特定の物理ディスク内のどのページおよびオフセットかを決定する。物理ディスクに代えて、２つの物理ディスクを１セットとするＲＡＩＤのような仮想ディスクを用いてもよい。論理ブロックアドレス適合ブロック１１２は、ルックアップ関数を用いることによって、ホスト仮想論理ブロックアドレスを物理ディスクのページおよびオフセットに変換することができる。
【００３１】
コマンドハンドラ１０４は、階層記憶エンジン１１４に結合され得る。階層記憶エンジン１１４は、コマンドハンドラ１０４から入力を直接受信して、システムインターフェース１０２を介して転送されたデータブロックを格納し、またはアクセスすることができる。階層記憶エンジン１１４は、システムインターフェース１０２を介して転送されたデータを、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）キャッシュのようなローカルキャッシュ１１６内に任意選択で保持することができる。ローカルキャッシュ１１６は、階層データ記憶システム１００に任意に追加され、それを用いない場合には、階層記憶エンジン１１４は、シリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）ディスクドライブ（図示せず）のような記憶装置（図示せず）にデータを直接転送することができる。ローカルキャッシュ１１６が用いられる場合には、階層記憶エンジン１１４は、適切な性能レベルの装置をデータ用に決定し、あるいはシステムインターフェース１０２を介して記憶装置に直接転送されたデータを転送するために、ローカルキャッシュ１１６にデータを維持することができる。
【００３２】
階層記憶エンジン１１４は、記憶ポート１１８を介して、ＳＡＴＡディスクドライブや、ＳＡＳディスクドライブ、ＰＣＩ−ｅ付属ディスクドライブにアクセスすることができる。記憶ポート１１８は、ローカルキャッシュ１１６またはシステムインターフェース１０２のいずれかから格納用のＳＡＴＡディスクドライブへデータを転送するために、バッファや、コマンド発行器、インターフェースシーケンサのような支援ハードウェアを含むことができる。システムインターフェース１０２を介してデータがアクセスされると、コマンドハンドラ１０４は、マッピングレジスタ１１０内のトランザクションレコード１１１をそのデータブロック用に更新するために、論理ブロックアドレス適合ブロック１１２にその動作を伝達する。
【００３３】
マッピングレジスタ１１０がトランザクションレコード１１１を収集すると、階層ポリシーレジスタ１０８に格納された、制限を超えるデータブロックの使用について、記憶プロセッサ１０６は、記憶ポート１２０のバンクを介してアクセスされ得る異なる性能の装置（図示せず）へデータブロックを移動させることを開始することができる。記憶プロセッサ１０６によって開始されたデータブロックの移動により、記憶要素（図示せず）の適切な階層にデータブロックを格納することができる。記憶要素の階層は、記憶要素の性能によって分割され得る。
【００３４】
データブロックの使用パターンに相応の性能を提供する記憶要素にデータブロックを格納することによって、階層データ記憶システム１００が最適なシステム性能を維持可能であることが判明した。データブロックの使用は、論理ブロックアドレス適合ブロック１１２およびマッピングレジスタ１１０によって監視され得る。記憶プロセッサ１０６は、データブロックの使用の増減に基づいて、特定の階層にデータを昇格または降格させることができる。記憶プロセッサ１０６は、システムインターフェース１０２を介してデータ転送を要求されたホストの実行直後にデータブロックを昇格または降格させることが可能である。
【００３５】
図２を参照して、ここでは、図１の階層データ記憶システム１００のシステムアプリケーション２０１の機能ブロック図が示される。階層データ記憶システム１００のシステムアプリケーション２０１の機能ブロック図には、少なくともホスト中央処理ユニット２０４、ホスト中央処理ユニット２０４に結合されるホストメモリ２０６、およびホストバスコントローラ２０８から成るサーバまたはワークステーションのようなホストコンピュータ２０２にインストールされた階層データ記憶システム１００が描かれている。ホストバスコントローラ２０８は、ホストインターフェースバス２０４を提供し、それによってホストコンピュータ２０２は階層データ記憶システム１００を利用することができる。ホストバスコントローラ２０８の機能は、いくつかの実施ではホスト中央処理ユニット２０４により提供され得ることが理解される。
【００３６】
階層データ記憶システム１００は、階層記憶エンジン１１４と、それが任意選択で含まれている場合にはローカルキャッシュ１１６とを含む。階層データ記憶システム１００は、周辺インターフェースシステムを有する不揮発性メモリベースの記憶装置のようなソリッド・ステート・ディスク２１０や、展開または拡張された不揮発性システムメモリ用の内部メモリカードのような不揮発性メモリ２１２に結合され得る。
【００３７】
階層データ記憶システム１００は、ホストコンピュータ２０２に搭載されるか、ホストコンピュータ２０２の外部にあるか、またはそれらの組合せであり得るハードディスクドライブ（ＨＤＤ）２１６にも結合され得る。ソリッド・ステート・ディスク２１０、不揮発性メモリ２１２、およびハードディスクドライブ２１６は、全てダイレクト・アタッチト・ストレージ（ＤＡＳ）装置と扱われる。
【００３８】
階層データ記憶システム１００は、ローカル・エリア・ネットワーク（ＬＡＮ）２２０（それに代えてストレージ・エリア・ネットワーク（ＳＡＮ）でもよい。）を結合するためのネットワーク取付ポート２１８を支援し得る。ネットワーク取付ポート２１８は、ネットワーク・アタッチト・ストレージ（ＮＡＳ）装置２２２へのアクセスを提供し得る。ネットワーク・アタッチト・ストレージ装置２２２は、ハードディスクドライブとして示されているが、これは例示にすぎない。ネットワーク・アタッチト・ストレージ装置２２２は、ネットワーク取付ポート２１８を介してアクセスされる、磁気テープ記憶（図示せず）、およびソリッド・ステート・ディスク２１０、不揮発性メモリ２１２またはハードディスクドライブ２１６に類似の記憶装置を含み得ることが理解される。
【００３９】
階層データ記憶システム１００は、たとえば、記憶装置に取付けられるシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）、シリアル・アタッチド・ＳＣＳＩ（ＳＡＳ）、またはパーソナルコンピュータ・インターフェース−エクスプレス（ＰＣＩ−ｅ）のような、ケーブル２２４により図１の記憶ポート１２０のバンクを介して複数のダイレクト・アタッチト・ストレージ（ＤＡＳ）装置へのアクセスを提供し相互作用するためのホストインターフェースバス２１４に取付けられる。階層記憶エンジン１１４およびローカルキャッシュ１１６によって、階層データ記憶システム１００は、ホストコンピュータ２０２によって与えられるデータの性能要求を満足させ、相応の性能を有するソリッド・ステート・ディスク２１０、不揮発性メモリ２１２、またはハードディスクドライブ２１６にそのデータを格納することができる。
【００４０】
階層データ記憶システム１００は、指定されたデータを低性能の記憶装置に移動することによって、最も頻繁に使用されるデータに対して最高性能の記憶装置の利用を制御するために、ホストコンピュータ２０２により与えられるデータを管理可能であることが判明した。最高性能に満たない高容量の記憶装置は、メガバイトあたりの単価が安いことが理解される。データの使用パターンに相応の性能を有する記憶装置にデータを格納することによって、最高性能の記憶装置の空き容量を効率的に利用することができる。
【００４１】
図３を参照して、ここでは、この発明の第２の実施の形態における階層データ記憶システム３００のシステムアプリケーション３０１の機能ブロック図が示される。階層データ記憶システム３００のシステムアプリケーション３０１の機能ブロック図には、階層データ記憶システム３００のシステムインターフェース３０６に結合されるインターフェースケーブル３０４を有するホストコンピュータ３０２が描かれている。階層データ記憶システム３００は、独立した筐体および電源を有するスタンドアローンのシステムであり得るが、ブレードサーバの筐体のように、ホストコンピュータ３０２と同じ筐体内に統合されてもよいことが理解される。
【００４２】
インターフェースケーブル３０４は、システムインターフェース３０６を介してホストコンピュータ３０２と階層データ記憶システム３００との間の通信経路を提供し得る。システムインターフェース３０６は、アドバンスト・ホスト・コンピュータ・インタフェース（ＡＨＣＩ）や、不揮発性メモリ・ホスト・コンピュータ・インターフェース（ＮＶＭＨＣＩ）、拡張不揮発性メモリ・ホスト・コンピュータ・インターフェース（ＮＶＭｅ）、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）・オーバー・ＰＣＩ−ｅ（ＳＯＰ）、またはＳＣＳＩのようなプロトコルを利用するインターフェースを含み得る。
【００４３】
読出専用メモリやフラッシュメモリ装置のような基本入出力システム（ＢＩＯＳ）３０８が任意選択で取り付けられ得る。ＢＩＯＳ３０８の取付けは、階層データ記憶システム３００のためにシステムブート可能な環境を提供し、あるいはホストコンピュータ３０２にブートプログラムを提供し得る。
【００４４】
システムインターフェース３０６は、階層記憶機能、すなわち、図１の、データブロックのトランザクションレコード１１１を収集し、データブロックを一時的な性能の階層に格納し、トランザクションレコード１１１に基づいてデータブロックを異なる性能の階層に昇格または降格させることから成る階層記憶機能を実行し、またはブロックレベル・ボリューム・スナップショット機能のような他の機能を実行するための階層記憶プロセッサ３１０に結合され得る。階層記憶プロセッサ３１０は、専用ハードウェアの論理ゲートおよび状態論理、マイクロコード化されたハードウェアエンジン、または、異なるタイプの格納処理あるいは階層化機能を実行するホストコンピュータシステムによって専用化されあるいは再プログラム可能なインターフェース論理を有する汎用中央処理ユニットとして実装され得る。
【００４５】
階層記憶プロセッサ３１０は、ローカルキャッシュ１１６に結合され、階層記憶プロセッサ３１０用のローカルキャッシュを任意選択で与え得る。ローカルキャッシュ１１６は、バッテリのバックアップや不揮発性のソリッド・ステート・メモリと同等物のような、任意の電力損失保護回路（図示せず）を含み得る。
【００４６】
階層記憶プロセッサ３１０は、ケーブル２２４を介してハードディスクドライブ２１６にアクセスするダイレクト・アタッチ・ストレージ（ＤＡＳ）インターフェース３１２に結合され得る。ハードディスクドライブ２１６は例示にすぎず、ダイレクト・アタッチ・ストレージ・インターフェース３１２は、シリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）ディスクドライブや、シリアル・アタッチト・ＳＣＳＩ（ＳＡＳ）ディスクドライブ、またはＰＣＩ−ｅスモールフォームファクタの記憶装置に結合され得る。
【００４７】
階層記憶プロセッサ３１０は、ローカル・エリア・ネットワーク（ＬＡＮ）２２０（それに代えてストレージ・エリア・ネットワーク（ＳＡＮ）でもよい。）を結合するためのネットワーク取付ポート２１８を介した接続を提供し得るネットワーク・アタッチ・ストレージ（ＮＡＳ）インターフェースに結合され得る。ネットワーク取付ポート２１８は、図２のネットワーク・アタッチト・ストレージ（ＮＡＳ）装置２２２へのアクセスを提供し得る。ネットワーク・アタッチト・ストレージ装置２２２は、ネットワーク取付ポート２１８を介してアクセスされる、磁気テープのストレージ（図示せず）、ソリッド・ステート・ディスク２１０、フラッシュメモリ２１２、またはハードディスクドライブ２１６を含み得ることが理解される。
【００４８】
階層記憶プロセッサ３１０は、ネットワーク・アダプタ３１４に結合され得る。ネットワーク・アダプタ３１４は、ローカル・エリア・ネットワーク（ＬＡＮ）２２０（それに代えてストレージ・エリア・ネットワーク（ＳＡＮ）でもよい。）を結合するためのネットワーク取付ポート２１８を介して結合され得る。ローカル・エリア・ネットワーク２２０は、階層データ記憶システム３００によって利用され得る追加の記憶装置（図示せず）へのアクセスを提供し得ることが理解される。
【００４９】
階層記憶プロセッサ３１０は、ソリッド・ステート・ドライブ３１８となり得る、ＳＡＴＡ記憶装置や、ＳＡＳ記憶装置、またはＰＣＩ−ｅ付属記憶装置へのアクセスを提供するフラッシュ・インターフェース３１６に結合され得る。ソリッド・ステート・ドライブ３１８は、ローカルの高性能記憶階層または他の記憶階層用のデータキャッシュを加えたハイブリッド階層を提供するために、モジュール（図示せず）またはソリッド・ステート・ドライブ３１８に直接搭載された部品（図示せず）を用いて、階層データ記憶システム３００にケーブル２２４を介して接続され、または直接組み込まれ得る。フラッシュ・インターフェース３１６に結合される記憶装置は、ソリッド・ステート・ドライブ３１８または任意の他の不揮発性メモリベースの記憶装置（図示せず）であり得ることが理解される。
【００５０】
階層データ記憶システム３００は、指定されたデータを低性能の記憶装置に移動することによって、最も頻繁に使用されるデータに対して最高性能の記憶装置の利用を制御するために、ホストコンピュータ２０２により与えられるデータを管理するスタンドアローンの周辺装置として動作し得ることが判明した。最高性能に満たない高容量の記憶装置は、メガバイトあたりの単価が安いことが理解される。データの使用頻度に相応の性能を有する記憶装置にデータを格納することによって、最高性能の記憶装置の空き容量を効率的に利用することができる。
【００５１】
図４を参照して、ここでは、階層データ記憶システム１００によって管理される階層記憶アレイ４０１の機能ブロック図が示される。階層記憶アレイ４０１の機能ブロック図には、パーソナルコンピュータ・インターフェース・バス（ＰＣＩ−ｅ）またはホストローカルバスに対するインターフェース接続４０２を有する階層データ記憶システム１００が描かれている。
【００５２】
インターフェース接続４０２は、アドバンスト・ホスト・コンピュータ・インタフェース（ＡＨＣＩ）コマンドや、ＳＯＰコマンド、ＮＶＭｅコマンドのようなホストコマンド４０４、およびホストデータブロック４０６を階層データ記憶システム１００へ伝えることができる。ランダム・アクセス・メモリのような拡張キャッシュ４０８が階層データ記憶システム１００に結合され得る。拡張キャッシュ４０８に保持され得るあらゆるホストデータブロック４０６を保護するために、非常用電源を拡張キャッシュ４０８に供給するようにバッテリバックアップ４１０が取り付けられ得る。ホストデータブロック４０６に関する図１のトランザクションレコード１１１を記録するために、拡張キャッシュ４０８および図１の記憶プロセッサ１０６も、拡張キャッシュ４０８を管理し格納するのに任意選択で用いられ得る。バッテリバックアップ４１０は、動作中の停電の場合に、拡張キャッシュ４０８のインテグリティを維持するように任意選択で設けられる。
【００５３】
階層データ記憶システム１００は、ケーブル２２４またはバックプレーン接続（図示せず）によって、ソリッド・ステート・ディスクのような最高性能の記憶装置４１４のティア０（４１２）に結合される。最高性能の記憶装置４１４は、格納データ上の読出ヘッドを位置決めするための機械的な遅延を招くことなく、全ての記憶システムに共通するファイルシステム構造を維持する能力を提供する。
【００５４】
階層データ記憶システム１００は、拡張キャッシュ４０８から、またはインターフェース接続４０２を介して図２のホストメモリ２０６から直接、ホストデータブロック４０６を取り出すことができ、そして記憶データ４１８をティア０（４１２）へ転送することができる。記憶データ４１８の転送は、シリアル・アタッチド・ＳＣＳＩ（ＳＡＳ）コマンド４２０、ＳＡＳベースのＳＡＴＡトンネルプロトコル（ＳＴＰ）４２２によって、またはＳＡＴＡや、ＮＶＭｅ、ＰＣＩ−ｅ、もしくはＳＯＰのようなインターフェースからの他の記憶インターフェースコマンドによって、通信することを含み得る。階層データ記憶システム１００は、性能要件がティア０（４１２）上の空間を消費することを正当化していないと記憶データ４１８のトランザクションレコード１１１が示唆していることを判定し、図１の記憶プロセッサ１０６の制御の下で、ティア１（４２４）またはティア２（４２６）のいずれかへデータを移動することができる。
【００５５】
階層データ記憶システム１００の階層の数および定義は異なってもよいことが理解される。いかなる数の階層も、最高性能の記憶装置４１４から最低性能の記憶装置（図示せず）までの順序で実装され得る。最高性能の記憶装置４１４の最新版が導入されると、それらは、現行版の最高性能の記憶装置４１４をより低い性能階層に移動させ得る。
【００５６】
ティア１（４２４）は、シリアル・アタッチト・ＳＣＳＩ（ＳＡＳ）磁気ディスクやシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）磁気ディスクのような中間速度の記憶装置４２８を含み得る。中間速度の記憶装置４２８の性能は、最高性能の記憶装置４１４よりも低い一方、それらは、メガバイトあたり低コストでかなり多くの容量を提供する。中間速度の記憶装置４２８は、記憶データ４１８にアクセスするために同心のデータトラック上で機械的にヘッドを位置決めしなければならないので、最高性能の記憶装置４１４よりも遅い応答時間を有し得る。
【００５７】
ティア２（４２６）は、低性能のディスクドライブや、テープドライブ、または光学記憶装置のようなアーカイブ装置４３０を含み得る。アーカイブ装置４３０は、位置決めやメディアとの相互作用に必要な時間のために最も低い性能を提供し得る。これらの装置は、典型的には、記憶容量に対してメガバイトあたりのコストが非常に低いけれども、最高性能の記憶装置４１４および中間速度の記憶装置４２８と比較したときに非常に高容量を提供し得る。
【００５８】
最高性能の記憶装置４１４および中間速度の記憶装置４２８は２つだけ示されているけれども、これは一例であって、任意の適切な数の最高性能の記憶装置４１４および中間速度の記憶装置４２８が階層データ記憶システム１００に結合され得ることが理解される。
【００５９】
階層データ記憶システム１００は、図３のホストコンピュータ３０２にソフトウェアドライバをインストールすることなく、ホストコンピュータ３０２へのインターフェース接続４０２を介して、最高性能の記憶装置４１４、中間速度の記憶装置４２８、およびアーカイブ装置４３０へのアクセスを提供することが判明した。これは、専用のインターフェース以上に次の価値を提供する。ユーザは、オペレーティングシステムを再構成する必要なしに、ホストコンピュータ３０２の現行の構成に階層データ記憶システム１００をインストールすることができ、また、階層データ記憶システム１００は、全ての標準のＸ８６ベースのサーバ、ワークステーション、およびＰＣとシームレスに動作し、ＶＭｗａｒｅのＥＳＸｉTM、ＯＳＸTM、Ｓｏｌａｒｉｓ  Ｘ８６TM、ＬｉｎｕｘTM、およびＷｉｎｄｏｗｓTMのような、それらが利用するオペレーティングシステムから独立して動作し得る。
【００６０】
階層データ記憶システム１００は、記憶データ４１８の利用に相応の記憶装置の性能を提供するために記憶データがティア０（４１２）、ティア１（４２４）、またはティア２（４２６）に移動可能かどうかを判定するために、記憶データ４１８のトランザクションレコード１１１を監視し得ることも判明した。ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）間で記憶データを移動する階層データ記憶システム１００の能力は、ティア（０）４１２の容量の使用を最適化し、システム全体の性能を向上させる。
【００６１】
図面および説明では３つのティアのみを取り上げたが、これは理解を容易にするための一例にすぎないことが理解される。メディアのタイプ、接続性、書込み耐久性、データ保護レベルまたは性能に基づいて、任意の数のティアが実装され得る。
【００６２】
図５を参照して、ここでは、図１の階層データ記憶システム１００によって実行されるホスト読出コマンド５０１のフロー図が示される。ホスト読出コマンド５０１のフロー図には、読出コマンド受信ブロック５０４に移行するホスト読出エントリー５０２が描かれている。読出コマンド受信ブロック５０４は、図１のコマンドハンドラ１０４によって開始される。
【００６３】
トランザクションレコード用ＬＢＡ適合ブロック５０６において、コマンドハンドラ１０４は、図１のマッピングレジスタ１１０にアクセスするために、図１の論理ブロックアドレス適合ブロック１１２を活性化し得る。次いで、フローは、記憶データをキャッシュへ移動するブロック５０８と、ＬＢＡトランザクションレコードを更新するブロック５１０との双方を活性化することによって進行する。記憶データをキャッシュへ移動するブロック５０８は、任意選択で省略することができ、その場合、フローは、データをホストへ転送するブロック５１２へ移行する。
【００６４】
図１の階層データ記憶システム１００は、フローチャートの双方のパスを同時に実行するために処理を分割することができる。図１の階層記憶エンジン１１４は、図１のシステムインターフェース１０２へのデータ転送を実行することができ、一方、図１の記憶プロセッサ１０６は、図１のトランザクションレコード１１１を管理し、必要とされ得る階層の任意の変更を扱うことができる。フローの双方の部分は同時に実行すると理解されるけれども、フローの記述は、階層記憶エンジン１１４によって最初に実行される部分を説明するであろう。
【００６５】
階層記憶エンジン１１４によって実行されるフローは、記憶データをキャッシュへ移動するブロック５０８に移行するか、システムインターフェース１０２を介してホストメモリへ直接記憶データを移動する。フローのこのブロックでは、キャッシュが利用される場合、階層記憶エンジン１１４は、コマンドハンドラ１０４によって与えられる情報を利用して、図４のティア０（４１２）、図４のティア１（４２４）、または図４のティア２（４２６）にアクセスし、図４の記憶データ４１８を図１のローカルキャッシュ１１６へ転送する。そして、フローは、データをホストへ転送するブロック５１２へ移行する。
【００６６】
階層記憶エンジン１１４は、ローカルキャッシュ１１６を介してデータをシステムインターフェース１０２へ転送して図３のホストコンピュータ３０２へ転送することができる。転送が完了すると、フローは、ステータスを送信するブロック５１４へ移行し、そこで階層記憶エンジン１１４は、システムインターフェース１０２へ終了ステータスを与えてホストコンピュータ３０２へそのステータスを転送することができる。そして、フローは、出口ブロック５１６へ移行して階層記憶エンジン１１４による実行を終了する。
【００６７】
一方で、記憶プロセッサ１０６によって実行されるフローは、ＬＢＡトランザクションレコードを更新するブロック５１０へ移行する。論理ブロックアドレス適合ブロック１１２は、仮想から物理へのマッピング、およびコマンドハンドラ１０４からの論理ブロックアドレスに関連する統計を強制的に更新し得る。記憶プロセッサ１０６は、図１のマッピングレジスタ１１０からトランザクションレコード１１１を取得するとともに、記憶データ４１８を保持するティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のための情報を階層ポリシーレジスタ１０８から取得することができる。
【００６８】
その後、フローは、しきい値チェックブロック５１８へ移行する。記憶プロセッサは、マッピングレジスタ１１０から取得されるトランザクションレコード１１１を階層ポリシーレジスタ１０８から読出された基準と比較し、記憶データ４１８が配置されているティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの関連するものに対するしきい値を超えたかどうかを判定し得る。しきい値を超えていない場合は、記憶プロセッサ１０６は、フローを出口ブロック５１６へ向けて記憶プロセッサ１０６による実行を終了する。
【００６９】
しきい値を超える場合は、フローは、次いで、新たな階層を判定するブロック５２０へ移行する。記憶プロセッサ１０６は、記憶データ４１８がティア０（４１２）、ティア１（４２４）、またはティア２（４２６）に昇格すべきか、または降格すべきかを判定することができる。そして、フローは、記憶データを移動するブロック５２２へと移行し、そのブロックにおいて、記憶データが元の場所から読み出され、ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの適切なものに書き込まれる。あるいは、記憶データは、記憶データの再配置の遅延処理のための支援ハードウェア構造においてフラグで通知される。そして、記憶データ４１８は、ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの適切なものにおける新たな位置に書き込まれる。
【００７０】
記憶プロセッサ１０６により実行されるフローは、元のティアからデータを削除するブロック５２４に移行し、そのブロックにおいて、記憶プロセッサは、ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの元の適切なティアから記憶データ４１８を削除する。その後、フローは、レコードを更新するブロック５２６へと移行し、そのブロックにおいて、記憶プロセッサ１０６は、記憶データ４１８用にマッピングレジスタ１１０のエントリーを更新して、ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの適切なものにおける新たな位置を示し、マッピングレジスタ１１０内のトランザクションコード１１１をリセットまたは調整する。そして、フローは、出口ブロック５１６へ移行して記憶プロセッサ１０６による実行を終了する。
【００７１】
図６を参照して、ここでは、図１の階層データ記憶システム１００によって実行されるホスト書込コマンド６０１のフロー図が示される。ホスト書込コマンド６０１のフロー図には、書込コマンド受信ブロック６０４に移行するホスト書込エントリー６０２が描かれている。書込コマンド受信ブロック６０４は、図１のコマンドハンドラ１０４によって開始される。
【００７２】
トランザクションレコード用適合ＬＢＡブロック６０６において、コマンドハンドラ１０４は、図１のマッピングレジスタ１１０にアクセスするために、図１の論理ブロックアドレス適合ブロック１１２を活性化し得る。次いで、フローは、ホストデータをキャッシュへ移動するブロック６０８と、ＬＢＡトランザクションレコードを更新するブロック５１０との双方を活性化することによって進行する。あるいは、ローカルキャッシュ１１６が用いられない場合は、適切なティアへの経路が準備されているとき、フローは、図１のシステムインターフェース１０２を介して図２のホストメモリ２０６からデータを直接転送するために、ステップ６０８をバイパスしてデータを階層へ転送するブロック６１２へ直接移行してもよい。
【００７３】
図１の階層データ記憶システム１００は、フローチャートの双方のパスを同時に実行するために処理を分割することができる。図１の階層記憶エンジン１１４は、図１のシステムインターフェース１０２へのデータ転送を実行することができ、一方、図１の記憶プロセッサ１０６は、図１のトランザクションレコード１１１を管理し、必要とされ得る階層の任意の変更を扱うことができる。フローの双方の部分は同時に実行すると理解されるけれども、フローの記述は、階層記憶エンジン１１４によって最初に実行される部分を説明するであろう。
【００７４】
図１のローカルキャッシュ１１６が任意選択で実装される場合、階層記憶エンジン１１４によって実行されるフローは、ホストデータをキャッシュへ移動するブロック６０８へ移行する。フローのこのブロックでは、階層記憶エンジン１１４は、図４のティア０（４１２）、図４のティア１（４２４）、または図４のティア２（４２６）の書込みに備えて、コマンドハンドラ１１４によって与えられる情報を利用して図４のホストデータブロック４０６をローカルキャッシュ１１６へ転送する。階層記憶エンジン１１４は、図３のホストコンピュータ３０２からの転送のためにシステムインターフェース１０２にアクセスし得る。転送が完了すると、フローは、データを階層に転送するブロック６１２に移行する。
【００７５】
階層記憶エンジン１１４は、ローカルキャッシュ１１６を介して、ティア０（４１２）、ティア１（４２４）またはティア２（４２６）のうち図４の記憶データ４１８として選択されたものへデータを転送することができる。データ転送が完了すると、フローは、ステータスを送信するブロック６１４へ移行し、そこで階層記憶エンジン１１４は、システムインターフェース１０２へ終了ステータスを与えてホストコンピュータ３０２へそのステータスを転送することができる。そして、フローは、出口ブロック６１６へ移行して階層記憶エンジン１１４による実行を終了する。
【００７６】
一方で、記憶プロセッサ１０６によって実行されるフローは、ＬＢＡトランザクションレコードを更新するブロック５１０へ移行する。記憶プロセッサ１０６によって実行される、書込コマンド６０１に対しての処理は、図５の読出コマンド５０１に対しての処理と同じである。論理ブロックアドレス適合ブロック１１２は、コマンドハンドラ１０４からの論理ブロックアドレスに関連するトランザクションレコード１１１を強制的に更新し得る。記憶プロセッサ１０６は、図１のマッピングレジスタ１１０からトランザクションレコード１１１を取得するとともに、記憶データ４１８を保持するティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のための情報を階層ポリシーレジスタ１０８から取得することができる。
【００７７】
その後、フローは、しきい値チェックブロック５１８へ移行する。記憶プロセッサは、マッピングレジスタ１１０から取得されるトランザクションレコード１１１を階層ポリシーレジスタ１０８から読出された基準と比較し、記憶データ４１８が配置されているティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの関連するものに対するしきい値を超えたかどうかを判定し得る。しきい値を超えていない場合は、記憶プロセッサ１０６は、フローを出口ブロック６１６へ向けて記憶プロセッサ１０６による実行を終了する。
【００７８】
しきい値を超える場合は、記憶プロセッサ１０６のフローは、新たな階層を判定するブロック５２０へ移行する。記憶プロセッサ１０６は、記憶データ４１８がティア０（４１２）、ティア１（４２４）、またはティア２（４２６）に昇格すべきか、または降格すべきかを判定することができる。そして、フローは、記憶データを移動するブロック５２２へと移行し、そのブロックにおいて、記憶データが元の場所からティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの適切なものに読み出される。そして、記憶データ４１８は、ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの適切なものにおける新たな位置に書き込まれる。
【００７９】
記憶プロセッサ１０６により実行されるフローは、元のティアからデータを削除するブロック５２４に移行し、そのブロックにおいて、記憶プロセッサは、ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの元の適切なティアから記憶データ４１８を削除する。その後、フローは、レコードを更新するブロック５２６へと移行し、そのブロックにおいて、記憶プロセッサ１０６は、記憶データ４１８用にマッピングレジスタ１１０のエントリーを更新して、ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの適切なものにおける新たな位置を示し、マッピングレジスタ１１０内のトランザクションコード１１１をリセットする。そして、フローは、出口ブロック６１６へ移行して記憶プロセッサ１０６による実行を終了する。
【００８０】
図７を参照して、ここでは、階層データ記憶システム３００の仮想ビューを有するコンピュータシステム７０１が示される。階層データ記憶システム３００の仮想ビューを有するコンピュータには、階層データ記憶システム３００に結合されたインターフェースケーブル３０４を有するホストコンピュータ３０２が描かれている。仮想記憶インターフェース７０２によって、ホストコンピュータ３０２は、階層データ記憶システム３００を単一の記憶要素７０４を有するものとして検出することができる。
【００８１】
階層データ記憶システム３００は、データの使用に相応の最適化された性能を提供するために、ティア０（４１２）、ティア１（４２４）、およびティア２（４２６）を自律的に管理し得る。頻繁に読み出されるデータについては、階層データ記憶システム３００は、ティア０（４１２）にデータを見つけることができる。一度書き込まれると稀にしか読み出されないデータについては、階層データ記憶システム３００は、ティア２（４２６）にデータを見つけることができる。
【００８２】
階層データ記憶システム３００は、最初にティア１（４２４）にデータを格納し、そのデータのための図１のトランザクションレコード１１１を作成するために、図１のローカルキャッシュ１１６内にコピーを必要に応じて維持する。適切なレコードが一旦作成されると、階層データ記憶システム３００は、ホストコンピュータ３０２の知識または支援なしに、図４の記憶データ４１８を、ティア０（４１２）、ティア１（４２４）、またはティア２（４２６）のうちの適切なものに昇格または降格させ得る。
【００８３】
階層データ記憶システム３００は、指定されたデータを低性能の記憶装置に移動することによって、最も頻繁に使用されるデータに対して最高性能の記憶装置の利用を制御するために、サーバ、ワークステーションもしくはＰＣの内部の周辺装置、またはホストコンピュータ３０２により与えられるデータを管理するスタンドアローンの外部装置のいずれかとして動作し得ることが判明した。最高性能に満たない高容量の記憶装置は、メガバイト当たりの単価が安いことが理解される。データの使用パターンに相応の性能を有する記憶装置にデータを格納することによって、最高性能の記憶装置の空き容量を効率的に利用することができる。さらに、ＡＨＣＩ，ＳＯＰまたはＮＶＭｅのようなシステムインターフェース１０２を用いる階層データ記憶システム３００を実装することによって、階層データ記憶システム３００は、オペレーティングシステムやそのドライバのいかなる変更も必要とせずに、オペレーティングシステムの大部分で動作するであろう。さらに、無停止で、かつ、サーバや仮想サーバ環境に階層を追加するための複雑な手順なしに、現行のインストールされたシステムを更新することが可能である。
【００８４】
図８を参照して、ここでは、図１の階層データ記憶システム１００のアーキテクチャーのブロック図が示される。階層データ記憶システム１００のアーキテクチャーのブロック図には、ホストデータブロック４０６を受信するための、仮想チャネルやアドレス可能ポートのようなチャネル８０２を有するシステムインターフェース１０２が描かれている。記憶プロセッサは、コマンドハンドラ１０４、マッピングレジスタ１１０、階層記憶エンジン１１４、ローカルキャッシュ１１６、拡張キャッシュ＆バッテリバックアップ４０８、ならびに階層ポリシーレジスタ１０８とやり取りすることができる。ローカルキャッシュ１１６、および拡張キャッシュ＆バッテリバックアップ４０８は、任意選択で省略され得る。
【００８５】
ダイレクト・アタッチ・ストレージ・インターフェース３１２は、記憶データ４１８用のレジスタを含み得る。ダイレクト・アタッチ・ストレージ・インターフェース３１２は、図４のティア０（４１２）、図４のティア１（４２４）、または図４のティア２（４２６）をそれぞれ示す最高性能の記憶装置４１４、中間速度の記憶装置４２８、またはアーカイブ装置４３０に結合され得る。
【００８６】
ダイレクト・アタッチ・ストレージ・インターフェース３１２は、ポート毎に一つの記憶装置を有するように示されるが、これは一例にすぎず、任意の数の記憶装置がダイレクト・アタッチ・ストレージ・インターフェース３１２に結合され得る。オプションの読出専用メモリ３０８は、システムインターフェース１０２に結合されるように示されるが、オプションの読出専用メモリ３０８は記憶プロセッサ１０６または階層記憶エンジン１１４に結合され得ると理解されるので、これは一例にすぎない。
【００８７】
図９を参照して、ここでは、階層データ記憶システム１００のシステムアプリケーション９０１のブロック図が示される。システムアプリケーション９０１のブロック図には、階層化集積回路９０２を有するホスト・バス・アダプタ（ＨＢＡ）のような階層データ記憶システム１００が描かれている。
【００８８】
階層化集積回路９０２は、システムインターフェース１０２、階層記憶プロセッサ３１０、ＰＣＩエクスプレス・バスコントローラのような周辺コントローラ９０４、およびバッファマネージャ９０６を含む。階層化集積回路９０２は、ダイレクト・アタッチ・ストレージ・インターフェース３１２、マッピングレジスタ１１０、階層ポリシーレジスタ１０８、および統合化ランダム・アレイ・オブ・インディペンデント・ディスク（ＲＡＩＤ）機能９０８に結合され得る。
【００８９】
階層化集積回路９０２は、ファイバーチャネルやｉＳＣＳＩのような別のディスクドライブ技術をサポートするためにダイレクト・アタッチ・ストレージ・インターフェース３１２や統合ＲＡＩＤ機能９０８を変更する柔軟性を提供しつつ、階層データ記憶システム１００の、高度に統合されたコンパクト版を提供し得ることが判明した。
【００９０】
図１０を参照して、ここでは、階層データ記憶システム１００のバックグラウンドスキャン１００１のフロー図が示される。バックグラウンドスキャン１００１のフロー図には、マッピングレジスタ・スキャンエントリー１００２が描かれており、それによって、図１の記憶プロセッサ１０６により実行されるバックグラウンドのポーリング処理が開始する。フローは、ポインタを始点に設定するブロック１００４に直ちに移行する。
【００９１】
記憶プロセッサ１０６は、図１のマッピングレジスタ１１０の最初のページにアドレスを指定し得る。記憶プロセッサ１０６は、マッピングレジスタ１１０の現在のアドレス指定されたページについての、図１のトランザクションレコード１１１を読み出すことができる。そして、フローは、しきい値をチェックするブロック１００６へ移行する。
【００９２】
しきい値をチェックするブロック１００６は、現在のアドレス指定されたページのトランザクションレコード１１１を比較するために、記憶プロセッサ１０６に階層ポリシーレジスタ１０８の内容を読むことを要求する。しきい値をチェックするブロック１００６は、トランザクションレコード１１１が階層ポリシーレジスタ１０８の内容によって確立された制限を超えるかどうかを判定することができる。階層ポリシーレジスタ１０８の内容は、マッピングレジスタ１１０の現在のアドレス指定されたページに記載されたデータの論理ブロックが現在の階層にとどまるべきか、上位の性能の階層に昇格すべきか、あるいは下位の性能の階層に降格すべきかを確立することができる。
【００９３】
しきい値を超えたことを、しきい値をチェックするブロック１００６が判定すると、フローは、新たな階層を判定するブロック１００８へ移行する。新たな階層を判定するブロック１００８では、記憶プロセッサ１０６による比較結果は、相応の性能を有する階層に格納されるためにデータの論理ブロックがどの階層に移動されるべきかを決定することに用いられる。その後、フローは、データを移動させるブロック１０１０に進む。
【００９４】
データを移動させるブロック１０１０は、データの論理ブロックをハードウェア支援構造（図示せず）による移動用の待ち行列に加えるか、または記憶プロセッサ１０６によって物理的に再配置するかのいずれかをすることができる。データを移動させるブロック１０１０は、図３のホストコンピュータ３０２のいかなる支援または知識なしに、バックグラウンド処理の一環としてデータの論理ブロックを昇格または降格させ得る。
【００９５】
データの論理ブロックが新たな階層に移動されるまでフローは進行しない。データの論理ブロックが新たな階層に移動すると、フローは、データを削除するブロック１０１２に進む。そこでは、記憶プロセッサ１０６は、データの論理ブロックを元の階層から削除し得る。記憶プロセッサ１０６は、データの論理ブロックの内容を消去するか、またはディレクトリを更新することによって、データの論理ブロックを削除することができる。
【００９６】
次いで、フローは、マッピングレジスタを更新するブロック１０１４へ進む。記憶プロセッサ１０６は、マッピングレジスタ１１０内のトランザクションレコード１１１を更新して、データの論理ブロックが新たな階層に移動したことを示すことができる。
【００９７】
続いて、フローは、ポインタをインクリメントするブロック１０１６へ進み、そこでは、記憶プロセッサ１０６は、マッピングレジスタ１１０の後続のページのアドレスを指定する。ポインタをインクリメントするブロック１０１６は、データの論理ブロックのしきい値が超えられずにデータの論理ブロックが現在の階層に留まるべきであるとしきい値をチェックするブロック１００６が判定した場合のフローの移動先でもある。そして、フローは、全ページがスキャンされたかをチェックするブロック１０１８へ進む。
【００９８】
ポインタが最終ページを超えてアドレスを指定していると記憶プロセッサ１０６が判定すると、フローは出口１０２０へ進む。ポインタは最終ページを超えてアドレスを指定していないと記憶プロセッサ１０６が判定すると、フローは、次ページにある図１のトランザクションレコード１１１を続けてスキャンするために、しきい値をチェックするブロック１００６に戻る。
【００９９】
図１１を参照して、ここでは、スナップショット操作１１０１における階層データ記憶システム１００の機能ブロック図が示される。階層データ記憶システム１００の機能ブロック図には、階層データ記憶システム１００内に示されるティア０（４１２）、ティア１（４２４）、およびティア２（４２６）が描かれている。階層データ記憶システム１００は、ティア０（４１２）、ティア１（４２４）、およびティア２（４２６）の記憶装置の総容量を利用可能であるが、図３のホストコンピュータ３０２は、総容量の一部のみを利用可能である。
【０１００】
記憶プロセッサ１０６は、いくつかのデータ移行および保護ベースのスキームを実行することができ、たとえば、階層データ記憶システム１００において容易に復元され得るデータのコピーを後の時点で作成する目的で、全ボリュームのスナップショットを作成することができる。
【０１０１】
ホスト記憶要素１１０２は、ホストコンピュータ３０２が利用可能な総容量の一部を含み得る。スナップショット容量１１０４は、データに対するボリュームの増分変化やバックアップおよび回復用のメタデータのようなスナップショットデータ１１０６を格納するために確保される。
【０１０２】
一例として、ホスト論理ブロック１１０８は、ホスト記憶要素１１０２内に書き込まれてもよい。書込動作中、書込前のホスト論理ブロック１１０８の内容を反映するスナップショットブロック１１１０は、スナップショット容量１１０４に保存され得る。スナップショット操作１１０１は、予め定められた時間間隔１１１２で繰り返され、スナップショットデータ１１０６の全ては、スナップショットプールエリア１１１４に格納される。
【０１０３】
予め定められた時間間隔１１２の任意の特定タイミングにおけるスナップショットデータ１１０６は、スナップショットデータ１１０６が格納されたときのホスト記憶要素１１０２の完全な内容を再生するのに使用することができる。任意の数のスナップショットデータ１１０６がスナップショットプールエリア１１１４に保存可能であることが理解される。スナップショットプールエリア１１１４は、回復可能な状態の固定期間を提供するために循環待ち行列として動作し得る。さらに、スナップショットデータ１１０６、スナップショットプール１１１４、および元のボリューム１１０２の全てまたは一部は、それらの相対的な活動レベルに依存して、および図１の階層ポリシー１０８に応じて、ティア４１２，４２４，４２６のいずれかに存在してもよい。
【０１０４】
スナップショットデータ１１０６が取得される各ポイントで、メタデータは、前回のスナップショットデータ１１０６からその時点までにホスト記憶要素１１０２になされた変更を記録する。ホストコンピュータ３０２によってデータの復旧が開始された場合、記憶プロセッサ１０６は、図１のマッピングレジスタ１１０を更新して、対象領域に対応する、予め定められた時間間隔１１１２のスナップショットデータ１１０６を一時的に適合させ、元のボリュームを以前の状態に回復しまたは調べるための他のホスト記憶要素（図示せず）のように、ホスト記憶要素１１０２をホストコンピュータ３０２に対する読出専用ボリュームとして提示することができる。あるいは、記憶プロセッサ１０６は、マッピングレジスタ１１０を恒久的に更新して、スナップショットデータ１１０６の所望のコピーを、ホスト記憶要素１１０２の新たな現在のワーキングコピーとすることができる。
【０１０５】
図１２を参照して、ここでは、この発明のさらなる実施の形態における階層データ記憶システム１００の操作の方法１２００のフローチャートが示される。方法１２００は、ブロック１２０２において、ホストコマンドを受信するためのシステムインターフェースを可能にするステップと、ブロック１２０４において、ホスト仮想ブロックアドレスを記憶装置の物理アドレスに変換することを含むホストコマンド用の論理ブロックアドレスのトランザクションレコードを監視するマッピングレジスタを更新するステップと、ブロック１２０６において、記憶プロセッサによりマッピングレジスタにアクセスしてトランザクションレコードを階層ポリシーレジスタと比較するステップと、ブロック１２０８において、トランザクションレコードが階層ポリシーレジスタを超えると記憶プロセッサが判定した場合に、階層記憶エンジンによってホストデータブロックをシステムインターフェースにより転送し、かつ同時にティア０、ティア１またはティア２間で転送することを可能にするステップとを含む。
【０１０６】
以上のように、この発明の階層データ記憶システムおよび装置または製品は、階層データ記憶システムを操作するための、重要かつこれまで未知で利用されていない解決策、能力、および機能的な面を提供して、階層データ記憶システムに特有のソフトウェアドライバを読み込む必要なしに、階層データ記憶システムの性能を最適化することが判明した。
【０１０７】
得られた方法、プロセス、設備、装置、製品、および／またはシステムは、簡易で、費用効果があり、複雑でなく、汎用性が高く、正確で、精度が高く、効果的であり、そして、公知の要素を適合させることにより実装して、容易に、効率的に、そして経済的に製造し、応用し、利用することができる。
【０１０８】
本発明のもう一つの重要な側面は、コストを低減し、システムを簡素化し、性能を向上させる歴史的なトレンドを有益にサポートしサービスを提供することである。
【０１０９】
それゆえに、本発明のこれらおよび他の価値ある側面は、少なくとも次のレベルへの技術の状態を促進するものである。
【０１１０】
本発明は、特定のベストモードに関連して説明されているが、多くの代替、修正および変形が上述の説明に照らして当業者に明らかであろうことが理解されるべきである。したがって、クレームの範囲に含まれる全てのそのような代替、修正および変形を包含することが意図される。本明細書に記載され、または添付の図面に示される全ての事項は、例示的かつ非限定的な意味で解釈されるべきである。
【図１】
2014500542.tif 000003
【図２】
2014500542.tif 000004
【図３】
2014500542.tif 000005
【図４】
2014500542.tif 000006
【図５】
2014500542.tif 000007
【図６】
2014500542.tif 000008
【図７】
2014500542.tif 000009
【図８】
2014500542.tif 000010
【図９】
2014500542.tif 000011
【図１０】
2014500542.tif 000012
【図１１】
2014500542.tif 000013
【図１２】
2014500542.tif 000014
【国際調査報告】
2014500542.tif 000015