(57)【要約】ハイブリッドストレージデバイスが、たとえば、ソリッドステートドライブ（ＳＳＤ）にデータをキャッシュするために、ハードディスクドライブなどの書込みキャッシュを使用する。データは、連続して書込みキャッシュにログを取られ、その後、ＳＳＤに移送される。本ＳＳＤは、永久にデータを記憶する１次のストレージである。書込みキャッシュは、ログ構造化された形で一時的にディスク書込み動作のデータを記憶することができる永続的な耐久性のあるキャッシュである。移送ポリシーが、データをＳＤＤに移送する前にどの位長くその書込みキャッシュでそのデータをキャッシュするかを決定するために、使用され得る。移送ポリシーは、書込みキャッシュの内容をＳＳＤにフラッシュさせる１つまたは複数の移送トリガーを使用し、実装され得る。移送トリガーは、たとえば、時間切れトリガー、読出し閾値トリガー、および移送サイズトリガーを含み得る。
2013513186.tif 000002
【特許請求の範囲】
【請求項１】
書込みキャッシュおよびソリッドステートドライブを備えるハイブリッドストレージデバイスにて書込み動作を受信するステップと、
前記ハイブリッドストレージデバイスのハイブリッドディスクコントローラーによって前記書込み動作に関連するデータのキャッシングポリシーを決定するステップと、
前記キャッシングポリシーに基づいて前記書込みキャッシュ内または前記ソリッドステートドライブ内に前記データを記憶するステップと
を備えることを特徴とする記憶方法。
【請求項２】
前記書込みキャッシュは、ハードディスクドライブを備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記キャッシングポリシーは、前記書込みキャッシュ内の前記データのフルキャッシングであることを特徴とする請求項１に記載の方法。
【請求項４】
前記キャッシングポリシーは、前記データの選択的キャッシングであり、
前記ソリッドステートドライブのメモリブロックの上書き率を判定するステップであって、前記メモリブロックが前記書込み動作に関連する前記データと関連付けられている、ステップと、
前記上書き率を閾値と比較するステップと、
前記上書き率が前記閾値よりも大きい場合には前記書込みキャッシュ内に前記データを記憶し、そうでない場合には前記ソリッドステートドライブ内に前記データを記憶するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記上書き率は、前記メモリブロックが受信する書込みの数に対する前記メモリブロックが受信する上書きの数の比率であることを特徴とする請求項４に記載の方法。
【請求項６】
前記書込み動作は、ファイルシステムから前記ハイブリッドストレージデバイスにて受信されることを特徴とする請求項１に記載の方法。
【請求項７】
前記データは前記書込みキャッシュ内に記憶され、時間切れトリガー、読出し閾値トリガー、または移送サイズトリガーの起動に応答して前記書込みキャッシュから前記ソリッドステートドライブに前記データを移動するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記ハイブリッドストレージデバイスにて追加の書込み動作を受信するステップと、
前記キャッシングポリシーに基づいて前記書込みキャッシュ内または前記ソリッドステートドライブ内に前記追加の書込み動作の追加のデータを記憶するステップであって、前記データのうちの少なくとも一部および前記追加のデータが前記書込みキャッシュ内に記憶される、ステップと、
移送ポリシーにしたがって、前記書込みキャッシュ内の前記記憶されたデータを前記ソリッドステートドライブに移送するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
前記移送ポリシーは、所定の量の時間が移送なしに経過した場合に起動する時間切れトリガーに基づき、前記データを移送することは、前記時間切れトリガーの起動に準じて実行されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記移送ポリシーは、読出しペナルティが閾値を超えるときに起動する読出し閾値トリガーに基づき、前記データを移送することは、前記読出し閾値トリガーの起動に準じて実行されることを特徴とする請求項８に記載の方法。
【請求項１１】
前記移送ポリシーは、移送されようとする前記データの前記サイズがサイズ閾値を超えるときに起動する移送サイズトリガーに基づき、前記データを移送することは、前記移送サイズトリガーの起動に準じて実行されることを特徴とする請求項８に記載の方法。
【請求項１２】
書込みキャッシュと、
ソリッドステートドライブと、
書込み動作を受信し、前記書込み動作に関連するデータのキャッシングポリシーを決定し、前記キャッシングポリシーに基づいて前記書込みキャッシュ内または前記ソリッドステートドライブ内に前記データを記憶するようになされたハイブリッドディスクコントローラーと
を備えることを特徴とするストレージデバイス。
【請求項１３】
前記書込みキャッシュは、ログ構造化されたハードドライブを備えることを特徴とする請求項１２に記載のデバイス。
【請求項１４】
前記ハイブリッドディスクコントローラーは、移送ポリシーにしたがって前記ソリッドステートドライブに前記書込みキャッシュ内に記憶されたデータを移送するようにさらになされたことを特徴とする請求項１２に記載のデバイス。
【請求項１５】
前記移送ポリシーは、時間切れトリガー、読出し閾値トリガー、または移送サイズトリガーのうちの少なくとも１つを使用することを特徴とする請求項１４に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関し、特に、ＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）に関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）は、従来のハードディスクドライブの代替として人気を集めている。ＳＳＤは、いくつかの点で従来のハードディスクドライブとは異なる。たとえば、ＳＳＤは、半導体特性をもち、可動部をもたず、固有の並列性をもつ。
【０００３】
ＳＳＤはハードディスクドライブに置き換わる潜在能力をもつが、ＳＳＤの導入の大きな障壁はそれらの限られた寿命である。ＳＳＤは、フラッシュメモリブロックに発行され得る書込み動作の数を限定するＮＡＮＤフラッシュメモリを使用し、構築される。メモリブロックは、各上書きの前に消去されなければならず、そのような消去がＳＳＤの寿命を減らす。加えて、ＮＡＮＤフラッシュメモリのコストがビット密度の増加とともに減少したため、フレッシュメモリが許容し得る消去サイクル（したがって、書込み動作）の数は損なわれた。
【０００４】
さらに、汎用オペレーティングシステムの作業負荷は、特に書込み量および非連続性に関して、ストレージサブシステムでは高くなる。よりストレスの多い作業負荷とより少ない利用可能な消去サイクルの組合せが、場合によっては１年未満まで、ＳＳＤの有用な寿命を減らす。
【発明の概要】
【０００５】
ハイブリッドストレージデバイスは、たとえばソリッドステートドライブ（ＳＳＤ）にデータをキャッシュするために、ハードディスクドライブなどの書込みキャッシュを使用する。データは書込みキャッシュに連続してログを取られ、その後、ＳＳＤに移送される。ＳＳＤは、データを永久に記憶する１次のストレージである。書込みキャッシュは、ログ構造化された形で一時的にディスク書込み動作のデータを記憶することができる永続的な耐久性のあるキャッシュである。
【０００６】
ある実装においては、論理アドレス空間に発行される各書込み動作のデータを書込みキャッシュがキャッシュするフルキャッシングが使用される。代わりに、選択的キャッシングが使用され得る。選択的キャッシングでは、データのうちの一部のみ（たとえば、ＳＳＤの最も多く上書きされたメモリブロックと関連するもの）が書込みキャッシュでキャッシュされる。
【０００７】
ある実装においては、ＳＳＤにデータを移送する前に書込みキャッシュでデータをどの位長くキャッシュするかを決定するために、移送ポリシーが使用され得る。移送ポリシーは、書込みキャッシュの内容をＳＳＤにフラッシュさせる１つまたは複数の移送トリガーを使用して、実装され得る。移送トリガーは、たとえば、時間切れトリガー、読出し閾値トリガー、および移送サイズトリガーを含み得る。
【０００８】
本概要は、詳細な説明で以下にさらに説明される概念の選択を単純化した形で紹介するために、提供される。本概要は、特許請求される主題の重要な特徴または本質的特徴を特定するものではなく、特許請求される主題の範囲を限定するために使用されるものではない。
【０００９】
前述の概要、ならびに例示的実施形態の以下の詳細な説明は、添付の図面とあわせて読まれるときによりよく理解される。実施形態の説明を目的として、それらの図面に実施形態の例示的構造が示されているが、実施形態は開示された特定の方法および手段に限定されない。
【図面の簡単な説明】
【００１０】
【図１】例示的なハイブリッドストレージ環境を示す図である。
【図２】ハイブリッドストレージに使用され得るハイブリッドディスクコントローラーの一実施形態のブロック図である。
【図３】フルキャッシングを使用するハイブリッドストレージの方法の一実装の操作フロー図である。
【図４】選択的キャッシングを使用するハイブリッドストレージの方法の一実装の操作フロー図である。
【図５】移送ポリシーを使用するハイブリッドストレージの方法の一実装の操作フロー図である。
【図６】例示的なコンピュータ環境の図である。
【発明を実施するための形態】
【００１１】
図１は、ハイブリッドストレージデバイス１１０およびファイルシステム１８０を備える例示的なハイブリッドストレージ環境１００を示す。ハイブリッドストレージデバイス１１０は、たとえば、ＭＬＣ（マルチレベルセル）ベースのＳＳＤなどのソリッドステートドライブ（ＳＳＤ）１５０に書込み動作のデータをキャッシュするために、ハードディスクドライブ（ＨＤＤ）などの書込みキャッシュ１４０を使用する。本明細書でさらに説明するように、書込み動作のデータは、連続して書込みキャッシュ１４０にログを取られ、その後、ＳＳＤ１５０に移送される。読出し動作は、通常はＳＳＤ１５０から、時にはより遅い書込みキャッシュ１４０から供される。ハイブリッドストレージデバイス１１０、またはその態様は、図６に示すコンピュータデバイス６００などの１つまたは複数のコンピュータデバイスを使用し、実装され得る。
【００１２】
ハイブリッドストレージデバイス１１０は、書込みキャッシュ１４０およびＳＳＤ１５０を備える。ＳＳＤ１５０は、永久にデータを記憶する１次のストレージである。ＳＳＤは図１に示されているが、任意のタイプのフラッシュチップまたは当技術分野で知られている他の不揮発性メモリデバイスが、ＳＳＤ１５０の代わりにストレージとして使用され得る。書込みキャッシュ１４０は、ログ構造化された形で一時的にディスク書込み動作のデータを記憶することができる永続的な耐久性のあるキャッシュである（たとえば、書込みキャッシュ１４０は、ログ構造化された書込みキャッシュである）。ある実装においては、書込みキャッシュ１４０は、ハードディスク（ＨＤＤとも呼ばれる）または他の形態のソリッドステートメモリ（ＳＬＣ（シングルレベルセル）チップなど）などの耐久性のあるストレージを備えることができ、ディスク書込み動作のデータのみを記憶することができる。書込みキャッシュ１４０は、ＳＳＤ１５０よりも遅くてもよく、ＳＳＤ１５０よりも大きくてもよい（より大きな記憶空間をもつなど）。ＳＳＤ１５０は書込みキャッシュ１４０よりも速いので、ある実装においては、読出し動作の多くは、ＳＳＤ１５０に送信される。
【００１３】
データは、フルキャッシングまたは選択的キャッシングなどのキャッシングポリシーにしたがって、書込みキャッシュ１４０に保存され得る。フルキャッシングでは、すべてのデータがキャッシュされるのに対し、選択的キャッシングでは、最も多く書き込まれたデータなどのある種のデータのみが書込みキャッシュ１４０にキャッシュされる。ある時点で、キャッシュされたデータは、移送ポリシーにしたがって、書込みキャッシュ１４０からＳＳＤ１５０に移され得る。いくつかの実装において、データは、書込みキャッシュ１４０内のデータの量が所定の量を超えると必ず、および／または、ある種のデータが書込みキャッシュ１４０で記憶されるときに、定期的に（たとえば、１５秒、３０秒、１分ごと等に、書込みキャッシュ１４０からＳＳＤ１５０に）移動（すなわち、移送）され得る。書込みキャッシュ１４０によってサポートされ得るＳＳＤの数に制限はない。したがって、たとえば、単一のＨＤＤが、複数のＳＳＤの書込みキャッシュの役割を果たすことができる。１つのみのＳＳＤ１５０が図１には示されているが、複数のＳＳＤがハイブリッドストレージデバイス１１０内に備わることができ、書込みキャッシュ１４０は、複数のＳＳＤの各ＳＳＤのためにデータをキャッシュすることができる。さらに、書込みキャッシュ１４０内のデバイスの数に制限はない。たとえば、いくつかのＨＤＤが書込みキャッシュ１４０内に備えられ得る。
【００１４】
ＳＳＤ専門用語では、ブロックはページのコレクションである（たとえば、１セットの６４個の４ＫＢページが２５６ＫＢブロックを形成することになる）。しかし、本明細書では、ブロックは、読出しまたは書込みのユニットであり、フラッシュ特有のブロックではない。したがって、本明細書において、ブロックが読取られるまたは書き込まれる場合、読出しまたは書込みは、たとえば、ＳＳＤブロックではなくＳＳＤ１５０内で、セクタまたはページに実行される。一時的に書込みキャッシュ１４０内にある、特定のメモリブロックのデータなどのキャッシングデータは、ＳＳＤの読出し性能に大きく影響を及ぼすことなく、１次のストレージＳＳＤ１５０へのデータの書込みの総数を減らす。たとえば、より長い時間書込み動作のデータをキャッシュすることによって、移送中のＳＳＤ１５０の同メモリブロックへの複数の上書きが回避可能であり、消去サイクルは保護され得る。上書きは、メモリの同じ論理セクタに繰り返される書込みである。ＳＳＤ１５０へのデータの書込みの数を減らすことは、場合によっては１００パーセントより多く、ＳＳＤ１５０の寿命を延ばすことができる。
【００１５】
ハイブリッドストレージデバイス１１０はさらに、バス１２５を介して書込みキャッシュ１４０およびＳＳＤ１５０に通信で結合されたハイブリッドディスクコントローラー１２０を備え得る。ハイブリッドディスクコントローラー１２０の一実装のブロック図が、図２に示される。ハイブリッドディスクコントローラー１２０は、バス１２５を介して、ブロック特有の動作（ページ読出し、ページ書込み、ブロック消去など）またはオブジェクト特有の動作（オブジェクト作成、オブジェクト削除、オブジェクト読出し、オブジェクト書込みなど）を実行するように動作することができる。ブロック特有のまたはオブジェクト特有の動作は、ハイブリッドディスクコントローラー１２０によってサポートされ得る。ハイブリッドディスクコントローラー１２０はさらに、本明細書に記載するようにデータ読出し（たとえば、データ読出しモジュール２４０を介する）、データ書込み（たとえば、データ書込みモジュール２５０を介する）、およびデータ移送（たとえば、移送・トリガーモジュール２２０を介する）を実行するように動作することができる。
【００１６】
書込みキャッシュ１４０およびＳＳＤ１５０は、ハイブリッドディスクコントローラー１２０のインターフェース１１５などのインターフェースを介してファイルシステム１８０に公開され得る。ファイルシステム１８０は次いで、ハイブリッドストレージデバイス１１０にデータ読出しおよび書込み要求を送信することができ、その要求は、書込みキャッシュ１４０またはＳＳＤ１５０からハイブリッドディスクコントローラー１２０によって応じられ得る。１つのみの書込みキャッシュ１４０および１つのＳＳＤ１５０が示されているが、これは単に説明を目的とするものである。キャッシュ、バッファ、メモリ、ストレージデバイス、およびサポートされ得る同類のものの数に制限はない。
【００１７】
書込み動作の多数は、小さな１セットのメモリブロックの上書きである。書込みキャッシュ１４０は、上書きを融合することができ、それによってＳＳＤ１５０への書込みトラフィックを減らす。ある実装においては、ファイルシステム１８０は、ハイブリッドストレージデバイス１１０にアクセスすることなく任意の即時の読出し動作を供することができるキャッシュを備える。それにより、ハイブリッドストレージデバイス１１０は、わずかな読出しが生じる間に、書込みキャッシュ１４０での上書きを融合させる期間をもつ。
【００１８】
ある実装において、書込み動作のデータは、書込みキャッシュ１４０で記憶されたログに付加され、好ましくは次の読出しの前に、ＳＳＤ１５０に最終的に移送される。ログとして書込みキャッシュ１４０を構造化することは、書込みキャッシュ１４０がその高速順次書込みモードで動作することを可能にする。上書きの融合に加えて、書込みキャッシュ１４０はまた、ＳＳＤ１５０によって観測される作業負荷の連続性を増やす。これは、その寿命にわたってハイブリッドストレージデバイス１１０に発行され得る書込み動作の総数である、書込み寿命の増大をもたらす。書込み寿命は、ＳＳＤ１５０の信頼性特性を大幅に変えることなしに、増大される。書込みキャッシュ１４０は、障害の追加のポイントを表すが、いずれのそのような事象もファイルシステムをＳＳＤ１５０上にそのままに残し、最近のデータの損失のみをもたらす。
【００１９】
ある実装においては、書込みキャッシュ１４０が論理アドレス空間に発行されるあらゆる書込みのデータをキャッシュする、フルキャッシングが使用される。図３は、フルキャッシングを使用するハイブリッドストレージの方法３００の一実装の動作フローである。本方法３００は、たとえば、ハイブリッドストレージデバイス１１０によって実装され得る。
【００２０】
３１０で、書込み動作が、ファイルシステム１８０からハイブリッドストレージデバイス１１０に発行される。書込み動作は、３２０で、インターフェース１１５を介してハイブリッドディスクコントローラー１２０で受信される。３３０で、ハイブリッドディスクコントローラー１２０が、書込みキャッシュ１４０（たとえば、キャッシュモジュール２１０を介して）にその書込みに関連するデータを記憶するように命令し、そのデータが書込みキャッシュ１４０に記憶される。ある時点で、３４０で、本明細書でさらに説明される、移送ポリシーと移送・トリガーモジュール２２０とにしたがって、データは、書込みキャッシュ１４０からＳＳＤ１５０に移動される。
【００２１】
論理アドレス空間に発行されるあらゆる書込みに関連するデータのフルキャッシングの代わりに、選択的キャッシングが、キャッシュモジュール２１０によって使用および実装され得る。選択的キャッシングでは、ＳＳＤ１５０の最も多く上書きされたメモリブロックに関連するデータのみが書込みキャッシュ１４０内にキャッシュされる。図４は、選択的キャッシングを使用するハイブリッドストレージの方法４００の一実装の動作フローである。本方法４００は、たとえば、ハイブリッドストレージデバイス１１０によって実装され得る。
【００２２】
４１０で、書込み動作が、ファイルシステム１８０からハイブリッドストレージデバイス１１０に発行される。その書込み動作は、４２０で、インターフェース１１５を介してハイブリッドディスクコントローラー１２０で受信される。４３０で、ハイブリッドディスクコントローラー１２０の上書き率モジュール２３０が、その書込みに関連するメモリブロックの上書き率を判定する。上書き率は、そのブロックが受信する書込みの数に対する上書きの数の比率である。上書き率は、ストレージ２６０などのハイブリッドディスクコントローラー１２０のストレージ内に記憶され得る。
【００２３】
４４０で、メモリブロックの上書き率が、上書き閾値（ストレージ２６０などのストレージから検索され得る）と呼ばれる所定の値に比較される。そのブロックの上書き率が４４０で判定されるように上書き閾値を超える場合、次いで、その書込み動作（そのメモリブロックに関連する）のデータが、４５０で書込みキャッシュ１４０に書き込まれる（たとえば、実装によっては、ハイブリッドディスクコントローラー１２０のデータ書込みモジュール２５０および／またはキャッシュモジュール２１０が、書込みキャッシュ１４０にその書込みに関連するデータを記憶するように命令し、そのデータが書込みキャッシュ１４０内に記憶される）。ある時点で、４６０で、本明細書でさらに説明される、移送ポリシーにしたがって、そのデータは、移送・トリガーモジュール２２０を使用し、書込みキャッシュ１４０からＳＳＤ１５０に移動され得る。
【００２４】
しかし、ブロックの上書き率が４４０で判定されるように上書き閾値を超えない場合、次いで、そのデータは、４７０でＳＤＤ１５０に書き込まれる（たとえば、ハイブリッドディスクコントローラー１２０が、ＳＤＤ１５０にその書込みに関連するデータを記憶するように命令し、そのデータがＳＤＤ１５０内に記憶される）。
【００２５】
上書き閾値は、たとえば、ユーザまたは管理者によって設定され、ストレージ２６０に記憶され得る。上書き閾値は、たとえば、そのユーザまたは管理者によってその後に変更可能である。上書き閾値が増やされるとき、頻繁に上書きされた結果として、より高い上書き率をもつそれらのメモリブロックのデータのみが、書込みキャッシュ１４０内にキャッシュされる。ある実装においては、フルキャッシングは、上書き閾値をゼロに設定することによって、可能にすることができる。上書き率は、頻繁に書き込まれたブロックの判定で使用することができるが、任意の技法が頻繁に書き込まれたブロックの判定に使用され得る。
【００２６】
読出しペナルティが、書込みキャッシュ１４０によって供される全読出しのパーセンテージとして定義され得る。たとえば、ハイブリッドストレージデバイス１１０が５０Ｍの読出しを受信し、書込みキャッシュ１４０がこれらの読出しのうちの１Ｍを受信する場合、読出しペナルティは２パーセントである。理想的には、読出しペナルティは、できる限り低く保たれる。選択的キャッシングは、読出しペナルティを下げ、移送されるデータの量を減らすことができる。しかし、ハイブリッドストレージデバイス１１０はストレージ２６０内でブロック毎の上書き率を計算および記憶することができるため、選択的キャッシングは、オーバヘッドをもつ。加えて、選択的キャッシングは、障害からの回復が困難であることがある。
【００２７】
前述のように、データは、ＳＳＤ１５０に移送される前に書込みキャッシュ１４０内にキャッシュされる。移送ポリシーは、データをＳＤＤ１５０に移送する前に、書込みキャッシュ１４０内にデータをどの位長くキャッシュするかを判断するために、使用され得る。ある実装においては、その時間は、相当な数の上書きをキャプチャするのに十分な長さであるが、書込みキャッシュ１４０への相当な数の読出しを受信するほど長くはない。ＷＡＷ（write-after-write：書込み後の書込み）は、同じブロックへの介入する読出しの前のメモリブロックへの２つの連続する書込みの間の時間間隔として定義することができ、そして、ＲＡＷ（read-after-write：書込み後の読出し）は、同じメモリブロックへの書込みとその後の読出しの間の時間間隔として定義され得る。ある実装においては、移送に先立つメモリブロックのデータのキャッシングの時間は、ＲＡＷ間隔の所定の数または小数よりも低い書込みキャッシュ１４０へのいくつかの読出しを受信する間に、ＷＡＷ間隔の所定の数または小数よりも高いいくつかの上書きをキャプチャするのに十分な長さである。
【００２８】
どの位長くデータをキャッシュするかのポリシーは、ブロック毎の時間値によって判断され得るが、これは維持および実施する費用が高くなり得る。代わりに、移送ポリシーは、書込みキャッシュ１４０の内容をＳＳＤ１５０にフラッシュさせる１つまたは複数の移送トリガーを使用し、実装され得る。移送トリガーは、たとえば、時間切れトリガー、読出し閾値トリガー、および移送サイズトリガーを含み得る。トリガーおよび移送ポリシーは、たとえば、ハイブリッドディスクコントローラー１２０の移送・トリガーモジュール２２０によって維持および監視され得る。ある実装においては、そのトリガーおよび移送ポリシーは、ユーザまたは管理者によって設定または更新され得る。
【００２９】
時間切れトリガーは、所定の量の時間が移送なしに経過した場合に起動するトリガーである。そのようなトリガーは、予測可能であり、書込みキャッシュ１４０の障害により損失され得るデータの新しさを抑制する。たとえば、５分間の時間切れ値は、５分間よりも古い書込み動作のデータが失われないことを確実にすることになる。しかし、時間切れトリガーは作業負荷に反応しないので、ある一定の作業負荷が高い読出しペナルティを受け得る。
【００３０】
読出し閾値トリガーは、最後の移送以後の測定された読出しペナルティが閾値を超えたときに起動する。そのような手法は、読出しペナルティが有限になることを可能にする。しかし、孤立して使用される場合、読出しペナルティトリガーは、たとえば、データがそのハイブリッドストレージデバイス１１０から読み出されない場合に、測定された読出しペナルティはゼロに留まることになり、そのデータは書込みキャッシュ１４０からＳＤＤ１５０に移動されないことになるなどのシナリオに依存し得る。これは、書込みキャッシュ１４０が空間を使い果たす結果をもたらし、そしてまた、書込みキャッシュ１４０の障害でのデータ損失に対してシステムをより脆弱なままにする可能性がある。
【００３１】
移送サイズトリガーは、移行可能なデータ全体のサイズがサイズ閾値を超えるときに起動する。これは、書込みキャッシュ１４０の障害で失われ得るデータの量を抑制することができる。単独でまたは組合せで使用されて、これらのトリガーは、複雑な移送ポリシーを可能にすることができる。たとえば、あるポリシーが、読出しペナルティは５パーセントを上回るべきではないこと、および、書込みキャッシュ１４０が機能しなくなる場合、たかだか１００ＭＢまたは５分間に値するデータが失われるべきであることを提示することができる。
【００３２】
図５は、移送ポリシーを使用するハイブリッドストレージの方法５００の一実装の動作フローである。本方法５００は、たとえば、ハイブリッドストレージデバイス１１０によって実装され得る。５１０で、１つまたは複数の移送トリガーが、ハイブリッドストレージデバイス１１０内で設定可能であり、たとえば、時間切れトリガー、読出し閾値トリガー、および／または移送サイズトリガーなどが、ハイブリッドディスクコントローラー１２０の移送・トリガーモジュール２２０によって設定され得る。５２０で、データが、たとえば、ファイルシステム１８０からハイブリッドストレージデバイス１１０に発行されている書込みに準じて、書込みキャッシュ１４０内に記憶され得る。データは、その実装に応じて、フルキャッシングポリシーまたは選択的キャッシングポリシーにしたがって書込みキャッシュ１４０に書き込み可能である。ある実装においては、追加データが、時間とともに、書込みキャッシュ１４０に書き込み可能である。
【００３３】
ある時点で、５３０で、トリガーに関する条件が満たされることがあり、そのトリガーがそれに応じて５４０で起動し得る。５５０で、トリガーの起動に準じて、そのデータが、書込みキャッシュ１４０からＳＤＤ１５０に移送され得る。ハイブリッドディスクコントローラー１２０は、書込みキャッシュ１４０からＳＳＤ１５０にそのトリガーに関連する適切なデータを移動させることによって、そのトリガーの起動に反応することができる。５２０で、プロセスを続けることができる。
【００３４】
本データ移送は、速く、直接的である。ある実装においては、データは、書込みキャッシュログから連続して読み出され、ＳＳＤ１５０に書き込まれる。書込みキャッシュ１４０のログおよびファイルシステム１８０は異なるデバイス上にあるので、このプロセスは、同一デバイス上のログおよびファイルシステム間の往復がランダムなシークを引き起こし得る従来のログ構造化されたファイルシステム内の従来のクリーニング機構の性能の欠点に悩まされない。
【００３５】
ある実装においては、ハイブリッドストレージは、ブロックデバイスレベルの代わりにファイルシステムレベルで実装され得る。ファイルシステムは、ブロックの空間局所参照性を利用するために、メモリブロック間の意味関係の知識を活用することができる。加えて、ハイブリッドストレージは、書込みキャッシュ１４０上の更新ジャーナル（ｕｐｄａｔｅ  ｊｏｕｒｎａｌ）およびＳＳＤ１５０上の実際のデータを記憶するために、既存のジャーナリング（ｊｏｕｒｎａｌｉｎｇ）ファイルシステムを修正することによって、実装され得る。
【００３６】
ファイルシステムデザインはまた、理想的な書込みキャッシュの性能にそれが近づくことを可能にすることができる情報へのアクセスを提供する。理想的なキャッシュは、汚れたデータが時間内に移送されて書込みキャッシュからの読出しを回避することができるように、読出しが生じる直前にブロックに差し迫った読出しをそれに通知するオラクル（ｏｒａｃｌｅ）を使用する。ブロックレベルでは、そのようなオラクルは存在せず、移送ポリシーが使用される。しかし、ファイルシステムレベルでは、ファイルシステムのバッファキャッシュからのブロックの削除が使用されて、差し迫った読出しを信号で伝えることができる。ファイルシステムがそのバッファキャッシュ内のブロックを記憶する限り、それは、ハイブリッドストレージデバイスにそのブロックについての読出しを発行しないことになる。それがそのブロックを削除した後は、任意のその後の読出しがハイブリッドストレージデバイスから供される。したがって、バッファキャッシュからの削除に応じて書込みキャッシュからＳＳＤにブロックを移送するポリシーは、読出しペナルティなしに最大の書込みの節減をもたらすことになる。
【００３７】
図６は、例示的実装および態様が実装され得る例示的なコンピュータ環境の図である。本コンピュータシステム環境は、適切なコンピュータ環境の一例に過ぎず、使用または機能の範囲に関する何らかの限定を示唆するものではない。
【００３８】
多数の他の汎用または専用コンピュータシステム環境または構成が使用可能である。使用に適し得るよく知られているコンピュータシステム、環境、および／または構成の例は、パーソナルコンピュータ（ＰＣ），サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、組込み型システム、前述のシステムまたはデバイスを含む分散コンピュータ環境などを含むがこれらに限定されない。
【００３９】
コンピュータによって実行されている、プログラムモジュールなどのコンピュータ実行可能命令が使用され得る。概して、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象的データタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。分散コンピュータ環境は、タスクが通信ネットワークまたは他のデータ伝送媒体を介してリンクされた遠隔プロセシングデバイスによって実行される場合に、使用され得る。ある分散コンピュータ環境では、プログラムモジュールおよび他のデータは、メモリストレージデバイスを含むローカルおよび遠隔の両方のコンピュータストレージ媒体内に置かれ得る。
【００４０】
図６を参照すると、本明細書に記載の態様を実装する例示的なシステムは、コンピュータデバイス６００などのコンピュータデバイスを含む。その最も基本的構成では、コンピュータデバイス６００は通常は、少なくとも１つのプロセシングユニット６０２およびメモリ６０４を含む。コンピュータデバイスの正確な構成およびタイプに応じて、メモリ６０４は、揮発性（ランダムアクセスメモリ（ＲＡＭ）など）、不揮発性（読出し専用メモリ（ＲＯＭ）、フラッシュメモリなど）またはそれら２つの何らかの組合せでもよい。この最も基本的構成は、破線６０６によって図６に示される。
【００４１】
コンピュータデバイス６００は、追加の特徴／機能性をもち得る。たとえば、コンピュータデバイス６００は、磁気または光ディスクまたはテープを含むがこれらに限定されない追加のストレージ（リムーバブルおよび／または非リムーバブル）を含み得る。そのような追加のストレージは、リムーバブルストレージ６０８および非リムーバブルストレージ６１０によって、図６に示される。
【００４２】
コンピュータデバイス６００は通常は、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、デバイス６００によってアクセス可能な任意の利用可能な媒体でもよく、揮発性および不揮発性の両方の媒体と、リムーバブルおよび非リムーバブルな媒体とを含み得る。
【００４３】
コンピュータストレージ媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性、ならびにリムーバブルおよび非リムーバブルな媒体を含む。メモリ６０４、リムーバブルストレージ６０８、および非リムーバブルストレージ６１０はすべて、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、電気的消去可能プログラム読出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリまたは他の揮発性もしくは不揮発性メモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、所望の情報を記憶するために使用され得る、およびコンピュータデバイス６００によってアクセス可能な任意の他の媒体を含む。任意のそのようなコンピュータストレージ媒体は、コンピュータデバイス６００の一部でもよい。
【００４４】
コンピュータデバイス６００は、そのデバイスが他のデバイスと通信できるようにする１つまたは複数の通信接続６１２を含み得る。コンピュータデバイス６００はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの１つまたは複数の入力デバイス６１４も含み得る。ディスプレイ、スピーカ、プリンタなどの１つまたは複数の出力デバイス６１６もまた、含まれ得る。すべてのこれらのデバイスは、当技術分野でよく知られており、本文で詳細に論じられる必要はない。
【００４５】
コンピュータデバイス６００は、ネットワークによって相互接続された複数のコンピュータデバイス６００のうちの１つでもよい。理解され得るように、本ネットワークは、任意の適当なネットワークでもよく、各コンピュータデバイス６００は、１つまたは複数の通信接続６１２を用いて任意の適当な形でそこに接続可能であり、そして、各コンピュータデバイス６００は、任意の適当な形でそのネットワーク内の他方のコンピュータデバイス６００のうちの１つまたは複数と通信することができる。たとえば、本ネットワークは、組織または住宅などの中のワイヤードまたはワイヤレスネットワークでもよく、インターネットまたは同類のものなどの外部ネットワークへの直接または間接的結合を含み得る。
【００４６】
本明細書に記載された様々な技法は、ハードウェアまたはソフトウェアに、あるいは、適切な場合には、その両方の組合せに関して実装され得ることを理解されたい。したがって、現在開示される主題のプロセスおよび装置、またはそれらのある種の態様または部分は、フロッピディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または任意の他の機械読取り可能なストレージ媒体などの有形的表現媒体で実施されたプログラムコード（即ち、命令）の形をとることができ、そのプログラムコードがコンピュータなどの機械によってロードおよび実行されるとき、その機械は現在開示される主題を実行するための装置になる。
【００４７】
プログラマブルコンピュータでのプログラムコード実行の場合、コンピュータデバイスは概して、プロセッサと、プロセッサによって読出し可能なストレージ媒体（揮発性および不揮発性メモリおよび／またはストレージ要素を含む）と、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスとを含む。１つまたは複数のプログラムが、たとえば、ＡＰＩ、再使用可能制御、または同類のものの使用を介して、現在開示される主題に関して記載されるプロセスを実装または使用することができる。そのようなプログラムは、コンピュータシステムと通信するために、高レベルの手続き型またはオブジェクト指向のプログラミング言語で実装され得る。しかし、１つまたは複数の本プログラムは、必要に応じて、アセンブリまたは機械言語で実装可され得る。いずれの場合にも、その言語はコンパイルされたまたは翻訳された言語でもよく、それは、ハードウェア実装と組み合わせ可能である。
【００４８】
例示的な実装は、１つまたは複数の独立型コンピュータシステムとの関連での現在開示される主題の態様の使用を参照し得るが、本主題はそのように限定されず、そうではなくて、ネットワークまたは分散コンピュータ環境などの任意のコンピュータ環境に関して実装され得る。さらに、現在開示される主題の態様は、複数のプロセシングチップまたはデバイス内でまたはそれらを横切って実装可能であり、ストレージは複数のデバイスにわたって同様に影響を受け得る。そのようなデバイスは、たとえば、ＰＣ、ネットワークサーバ、およびハンドヘルドデバイスを含み得る。
【００４９】
本主題は、構造的特徴および／または方法論的行動に特有の言語で説明されてあるが、添付の特許請求の範囲で定義される本主題は、前述の特有の特徴または行動に必ずしも限定されないことを理解されたい。そうではなくて、前述の特有の特徴および行動は、本特許請求の範囲を実装する例示的な形として開示される。
【図１】
2013513186.tif 000003
【図２】
2013513186.tif 000004
【図３】
2013513186.tif 000005
【図４】
2013513186.tif 000006
【図５】
2013513186.tif 000007
【図６】
2013513186.tif 000008
【国際調査報告】
2013513186.tif 000009
2013513186.tif 000010