特許第5808751号(P5808751)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特許5808751ハイブリッドストレージを使用したSSDの寿命の延長
<>
  • 特許5808751-ハイブリッドストレージを使用したSSDの寿命の延長 図000002
  • 特許5808751-ハイブリッドストレージを使用したSSDの寿命の延長 図000003
  • 特許5808751-ハイブリッドストレージを使用したSSDの寿命の延長 図000004
  • 特許5808751-ハイブリッドストレージを使用したSSDの寿命の延長 図000005
  • 特許5808751-ハイブリッドストレージを使用したSSDの寿命の延長 図000006
  • 特許5808751-ハイブリッドストレージを使用したSSDの寿命の延長 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5808751
(24)【登録日】2015年9月18日
(45)【発行日】2015年11月10日
(54)【発明の名称】ハイブリッドストレージを使用したSSDの寿命の延長
(51)【国際特許分類】
   G06F 13/10 20060101AFI20151021BHJP
   G06F 12/00 20060101ALI20151021BHJP
【FI】
   G06F13/10 340A
   G06F12/00 514M
   G06F12/00 542Z
【請求項の数】11
【全頁数】14
(21)【出願番号】特願2012-543182(P2012-543182)
(86)(22)【出願日】2010年12月6日
(65)【公表番号】特表2013-513186(P2013-513186A)
(43)【公表日】2013年4月18日
(86)【国際出願番号】US2010059100
(87)【国際公開番号】WO2011071818
(87)【国際公開日】20110616
【審査請求日】2013年11月14日
(31)【優先権主張番号】12/631,875
(32)【優先日】2009年12月7日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ヴィジャヤン プラバカラン
(72)【発明者】
【氏名】マヘシュ バラクリシュナン
(72)【発明者】
【氏名】ゴクル サウンダララジャン
【審査官】 木村 雅也
(56)【参考文献】
【文献】 特表2007−528079(JP,A)
【文献】 特開平07−146820(JP,A)
【文献】 特開2000−099274(JP,A)
【文献】 特開2008−097225(JP,A)
【文献】 米国特許出願公開第2006/0143418(US,A1)
【文献】 特開2008−046763(JP,A)
【文献】 特開平03−122734(JP,A)
【文献】 特開2003−167781(JP,A)
【文献】 米国特許出願公開第2008/0005462(US,A1)
【文献】 国際公開第2009/102425(WO,A1)
【文献】 特開平09−297659(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
書込みキャッシュおよびソリッドステートドライブを備えるハイブリッドストレージデバイスにて書込み動作を受信するステップと、
前記ハイブリッドストレージデバイスのハイブリッドディスクコントローラーによって前記書込み動作に関連するデータのキャッシングポリシーを決定するステップと、
前記キャッシングポリシーに基づいて前記書込みキャッシュ内または前記ソリッドステートドライブ内に前記データを記憶するステップと、
前記ハイブリッドストレージデバイスにて追加の書込み動作を受信するステップと、
前記キャッシングポリシーに基づいて前記書込みキャッシュ内または前記ソリッドステートドライブ内に前記追加の書込み動作の追加データを記憶するステップであり、前記書込みキャッシュは前記データおよび前記追加データのうち少なくともいくらかを含むステップと、
移送ポリシーに基づいて前記書込みキャッシュから前記ソリッドステートドライブへ前記記憶されたデータを移送するステップであり、
前記移送ポリシーは、移送することなく所定の量の時間が経過した場合に起動する時間切れトリガーに基づき、かつ、
前記データの移送は、前記時間切れトリガーの起動に従って実行される、ステップと、
前記ソリッドステートドライブのメモリブロックの上書き率を判定するステップであって、前記メモリブロックが前記書込み動作に関連する前記データと関連付けられている、ステップと、
前記上書き率を閾値と比較するステップと、
前記上書き率が前記閾値よりも大きい場合には前記書込みキャッシュ内に前記データを記憶し、そうでない場合には前記ソリッドステートドライブ内に前記データを記憶するステップと、
を備えることを特徴とする記憶方法。
【請求項2】
前記書込みキャッシュは、ハードディスクドライブであることを特徴とする請求項1に記載の方法。
【請求項3】
前記キャッシングポリシーは、前記書込みキャッシュ内の前記データのフルキャッシングであり、前記書込みキャッシュは、全ての書込み動作をキャッシュする、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記キャッシングポリシーは、前記データの選択的キャッシングであり、前記書込みキャッシュは、書込み動作の一部のみをキャッシュする、
ことを特徴とする請求項1に記載の方法。
【請求項5】
前記上書き率は、前記メモリブロックが受信する書込みの数に対する前記メモリブロックが受信する上書きの数の比率であることを特徴とする請求項4に記載の方法。
【請求項6】
前記書込み動作は、ファイルシステムから前記ハイブリッドストレージデバイスにて受信されることを特徴とする請求項1に記載の方法。
【請求項7】
前記移送ポリシーは、さらに、移行されるべき前記データのサイズがサイズ閾値を超えるときに起動する移送サイズトリガーに基づくことを特徴とする請求項1に記載の方法。
【請求項8】
前記方法は、
前記ハイブリッドストレージデバイスにて書込み動作を受信するステップと、
前記ハイブリッドストレージデバイスからの読出し動作のために要求されたデータを読出すステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項9】
書込みキャッシュと、
ソリッドステートドライブと、
書込み動作を受信し、前記書込み動作に関連するデータのキャッシングポリシーを決定し、前記キャッシングポリシーに基づいて前記書込みキャッシュ内または前記ソリッドステートドライブ内に前記データを記憶するようになされたハイブリッドディスクコントローラーと、を含み、
前記ハイブリッドディスクコントローラーは、
ハイブリッドストレージデバイスにて追加の書込み動作を受信し、
前記キャッシングポリシーに基づいて前記書込みキャッシュ内または前記ソリッドステートドライブ内に前記追加の書込み動作の追加データを記憶し、前記データおよび前記追加データのうち少なくともいくらかは前記書込みキャッシュ内に記憶されており、
移送ポリシーに基づいて前記書込みキャッシュから前記ソリッドステートドライブへ前記記憶されたデータを移送し、前記移送ポリシーは、移送することなく所定の量の時間が経過した場合に起動する時間切れトリガーに基づき、かつ、前記データの移送は、前記時間切れトリガーの起動に従って実行され、
前記キャッシングポリシーは、前記書込みキャッシュ内の前記データの全てをキャッシュするフルキャッシングか前記データの一部のみをキャッシュする選択的キャッシングのうちの一つであり、
前記選択的キャッシングは、メモリーブロックが受信する書込みの数に対する前記メモリーブロックが受信する上書きの数の比率である上書き率に基づいている、
ことを特徴とするストレージデバイス。
【請求項10】
前記書込みキャッシュは、ログ構造化されたハードドライブであることを特徴とする請求項9に記載のデバイス。
【請求項11】
前記移送ポリシーは、さらに、移行されるべき前記データのサイズがサイズ閾値を超えるときに起動する移送サイズトリガーに基づくことを特徴とする請求項9に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリシステムに関し、特に、SSD(solid state drive)に関する。
【背景技術】
【0002】
ソリッドステートドライブ(solid state drive:SSD)は、従来のハードディスクドライブの代替として人気を集めている。SSDは、いくつかの点で従来のハードディスクドライブとは異なる。たとえば、SSDは、半導体特性をもち、可動部をもたず、固有の並列性をもつ。
【0003】
SSDはハードディスクドライブに置き換わる潜在能力をもつが、SSDの導入の大きな障壁はそれらの限られた寿命である。SSDは、フラッシュメモリブロックに発行され得る書込み動作の数を限定するNANDフラッシュメモリを使用し、構築される。メモリブロックは、各上書きの前に消去されなければならず、そのような消去がSSDの寿命を減らす。加えて、NANDフラッシュメモリのコストがビット密度の増加とともに減少したため、フレッシュメモリが許容し得る消去サイクル(したがって、書込み動作)の数は損なわれた。
【0004】
さらに、汎用オペレーティングシステムの作業負荷は、特に書込み量および非連続性に関して、ストレージサブシステムでは高くなる。よりストレスの多い作業負荷とより少ない利用可能な消去サイクルの組合せが、場合によっては1年未満まで、SSDの有用な寿命を減らす。
【発明の概要】
【0005】
ハイブリッドストレージデバイスは、たとえばソリッドステートドライブ(SSD)にデータをキャッシュするために、ハードディスクドライブなどの書込みキャッシュを使用する。データは書込みキャッシュに連続してログを取られ、その後、SSDに移送される。SSDは、データを永久に記憶する1次のストレージである。書込みキャッシュは、ログ構造化された形で一時的にディスク書込み動作のデータを記憶することができる永続的な耐久性のあるキャッシュである。
【0006】
ある実装においては、論理アドレス空間に発行される各書込み動作のデータを書込みキャッシュがキャッシュするフルキャッシングが使用される。代わりに、選択的キャッシングが使用され得る。選択的キャッシングでは、データのうちの一部のみ(たとえば、SSDの最も多く上書きされたメモリブロックと関連するもの)が書込みキャッシュでキャッシュされる。
【0007】
ある実装においては、SSDにデータを移送する前に書込みキャッシュでデータをどの位長くキャッシュするかを決定するために、移送ポリシーが使用され得る。移送ポリシーは、書込みキャッシュの内容をSSDにフラッシュさせる1つまたは複数の移送トリガーを使用して、実装され得る。移送トリガーは、たとえば、時間切れトリガー、読出し閾値トリガー、および移送サイズトリガーを含み得る。
【0008】
本概要は、詳細な説明で以下にさらに説明される概念の選択を単純化した形で紹介するために、提供される。本概要は、特許請求される主題の重要な特徴または本質的特徴を特定するものではなく、特許請求される主題の範囲を限定するために使用されるものではない。
【0009】
前述の概要、ならびに例示的実施形態の以下の詳細な説明は、添付の図面とあわせて読まれるときによりよく理解される。実施形態の説明を目的として、それらの図面に実施形態の例示的構造が示されているが、実施形態は開示された特定の方法および手段に限定されない。
【図面の簡単な説明】
【0010】
図1】例示的なハイブリッドストレージ環境を示す図である。
図2】ハイブリッドストレージに使用され得るハイブリッドディスクコントローラーの一実施形態のブロック図である。
図3】フルキャッシングを使用するハイブリッドストレージの方法の一実装の操作フロー図である。
図4】選択的キャッシングを使用するハイブリッドストレージの方法の一実装の操作フロー図である。
図5】移送ポリシーを使用するハイブリッドストレージの方法の一実装の操作フロー図である。
図6】例示的なコンピュータ環境の図である。
【発明を実施するための形態】
【0011】
図1は、ハイブリッドストレージデバイス110およびファイルシステム180を備える例示的なハイブリッドストレージ環境100を示す。ハイブリッドストレージデバイス110は、たとえば、MLC(マルチレベルセル)ベースのSSDなどのソリッドステートドライブ(SSD)150に書込み動作のデータをキャッシュするために、ハードディスクドライブ(HDD)などの書込みキャッシュ140を使用する。本明細書でさらに説明するように、書込み動作のデータは、連続して書込みキャッシュ140にログを取られ、その後、SSD150に移送される。読出し動作は、通常はSSD150から、時にはより遅い書込みキャッシュ140から供される。ハイブリッドストレージデバイス110、またはその態様は、図6に示すコンピュータデバイス600などの1つまたは複数のコンピュータデバイスを使用し、実装され得る。
【0012】
ハイブリッドストレージデバイス110は、書込みキャッシュ140およびSSD150を備える。SSD150は、永久にデータを記憶する1次のストレージである。SSDは図1に示されているが、任意のタイプのフラッシュチップまたは当技術分野で知られている他の不揮発性メモリデバイスが、SSD150の代わりにストレージとして使用され得る。書込みキャッシュ140は、ログ構造化された形で一時的にディスク書込み動作のデータを記憶することができる永続的な耐久性のあるキャッシュである(たとえば、書込みキャッシュ140は、ログ構造化された書込みキャッシュである)。ある実装においては、書込みキャッシュ140は、ハードディスク(HDDとも呼ばれる)または他の形態のソリッドステートメモリ(SLC(シングルレベルセル)チップなど)などの耐久性のあるストレージを備えることができ、ディスク書込み動作のデータのみを記憶することができる。書込みキャッシュ140は、SSD150よりも遅くてもよく、SSD150よりも大きくてもよい(より大きな記憶空間をもつなど)。SSD150は書込みキャッシュ140よりも速いので、ある実装においては、読出し動作の多くは、SSD150に送信される。
【0013】
データは、フルキャッシングまたは選択的キャッシングなどのキャッシングポリシーにしたがって、書込みキャッシュ140に保存され得る。フルキャッシングでは、すべてのデータがキャッシュされるのに対し、選択的キャッシングでは、最も多く書き込まれたデータなどのある種のデータのみが書込みキャッシュ140にキャッシュされる。ある時点で、キャッシュされたデータは、移送ポリシーにしたがって、書込みキャッシュ140からSSD150に移され得る。いくつかの実装において、データは、書込みキャッシュ140内のデータの量が所定の量を超えると必ず、および/または、ある種のデータが書込みキャッシュ140で記憶されるときに、定期的に(たとえば、15秒、30秒、1分ごと等に、書込みキャッシュ140からSSD150に)移動(すなわち、移送)され得る。書込みキャッシュ140によってサポートされ得るSSDの数に制限はない。したがって、たとえば、単一のHDDが、複数のSSDの書込みキャッシュの役割を果たすことができる。1つのみのSSD150が図1には示されているが、複数のSSDがハイブリッドストレージデバイス110内に備わることができ、書込みキャッシュ140は、複数のSSDの各SSDのためにデータをキャッシュすることができる。さらに、書込みキャッシュ140内のデバイスの数に制限はない。たとえば、いくつかのHDDが書込みキャッシュ140内に備えられ得る。
【0014】
SSD専門用語では、ブロックはページのコレクションである(たとえば、1セットの64個の4KBページが256KBブロックを形成することになる)。しかし、本明細書では、ブロックは、読出しまたは書込みのユニットであり、フラッシュ特有のブロックではない。したがって、本明細書において、ブロックが読取られるまたは書き込まれる場合、読出しまたは書込みは、たとえば、SSDブロックではなくSSD150内で、セクタまたはページに実行される。一時的に書込みキャッシュ140内にある、特定のメモリブロックのデータなどのキャッシングデータは、SSDの読出し性能に大きく影響を及ぼすことなく、1次のストレージSSD150へのデータの書込みの総数を減らす。たとえば、より長い時間書込み動作のデータをキャッシュすることによって、移送中のSSD150の同メモリブロックへの複数の上書きが回避可能であり、消去サイクルは保護され得る。上書きは、メモリの同じ論理セクタに繰り返される書込みである。SSD150へのデータの書込みの数を減らすことは、場合によっては100パーセントより多く、SSD150の寿命を延ばすことができる。
【0015】
ハイブリッドストレージデバイス110はさらに、バス125を介して書込みキャッシュ140およびSSD150に通信で結合されたハイブリッドディスクコントローラー120を備え得る。ハイブリッドディスクコントローラー120の一実装のブロック図が、図2に示される。ハイブリッドディスクコントローラー120は、バス125を介して、ブロック特有の動作(ページ読出し、ページ書込み、ブロック消去など)またはオブジェクト特有の動作(オブジェクト作成、オブジェクト削除、オブジェクト読出し、オブジェクト書込みなど)を実行するように動作することができる。ブロック特有のまたはオブジェクト特有の動作は、ハイブリッドディスクコントローラー120によってサポートされ得る。ハイブリッドディスクコントローラー120はさらに、本明細書に記載するようにデータ読出し(たとえば、データ読出しモジュール240を介する)、データ書込み(たとえば、データ書込みモジュール250を介する)、およびデータ移送(たとえば、移送・トリガーモジュール220を介する)を実行するように動作することができる。
【0016】
書込みキャッシュ140およびSSD150は、ハイブリッドディスクコントローラー120のインターフェース115などのインターフェースを介してファイルシステム180に公開され得る。ファイルシステム180は次いで、ハイブリッドストレージデバイス110にデータ読出しおよび書込み要求を送信することができ、その要求は、書込みキャッシュ140またはSSD150からハイブリッドディスクコントローラー120によって応じられ得る。1つのみの書込みキャッシュ140および1つのSSD150が示されているが、これは単に説明を目的とするものである。キャッシュ、バッファ、メモリ、ストレージデバイス、およびサポートされ得る同類のものの数に制限はない。
【0017】
書込み動作の多数は、小さな1セットのメモリブロックの上書きである。書込みキャッシュ140は、上書きを融合することができ、それによってSSD150への書込みトラフィックを減らす。ある実装においては、ファイルシステム180は、ハイブリッドストレージデバイス110にアクセスすることなく任意の即時の読出し動作を供することができるキャッシュを備える。それにより、ハイブリッドストレージデバイス110は、わずかな読出しが生じる間に、書込みキャッシュ140での上書きを融合させる期間をもつ。
【0018】
ある実装において、書込み動作のデータは、書込みキャッシュ140で記憶されたログに付加され、好ましくは次の読出しの前に、SSD150に最終的に移送される。ログとして書込みキャッシュ140を構造化することは、書込みキャッシュ140がその高速順次書込みモードで動作することを可能にする。上書きの融合に加えて、書込みキャッシュ140はまた、SSD150によって観測される作業負荷の連続性を増やす。これは、その寿命にわたってハイブリッドストレージデバイス110に発行され得る書込み動作の総数である、書込み寿命の増大をもたらす。書込み寿命は、SSD150の信頼性特性を大幅に変えることなしに、増大される。書込みキャッシュ140は、障害の追加のポイントを表すが、いずれのそのような事象もファイルシステムをSSD150上にそのままに残し、最近のデータの損失のみをもたらす。
【0019】
ある実装においては、書込みキャッシュ140が論理アドレス空間に発行されるあらゆる書込みのデータをキャッシュする、フルキャッシングが使用される。図3は、フルキャッシングを使用するハイブリッドストレージの方法300の一実装の動作フローである。本方法300は、たとえば、ハイブリッドストレージデバイス110によって実装され得る。
【0020】
310で、書込み動作が、ファイルシステム180からハイブリッドストレージデバイス110に発行される。書込み動作は、320で、インターフェース115を介してハイブリッドディスクコントローラー120で受信される。330で、ハイブリッドディスクコントローラー120が、書込みキャッシュ140(たとえば、キャッシュモジュール210を介して)にその書込みに関連するデータを記憶するように命令し、そのデータが書込みキャッシュ140に記憶される。ある時点で、340で、本明細書でさらに説明される、移送ポリシーと移送・トリガーモジュール220とにしたがって、データは、書込みキャッシュ140からSSD150に移動される。
【0021】
論理アドレス空間に発行されるあらゆる書込みに関連するデータのフルキャッシングの代わりに、選択的キャッシングが、キャッシュモジュール210によって使用および実装され得る。選択的キャッシングでは、SSD150の最も多く上書きされたメモリブロックに関連するデータのみが書込みキャッシュ140内にキャッシュされる。図4は、選択的キャッシングを使用するハイブリッドストレージの方法400の一実装の動作フローである。本方法400は、たとえば、ハイブリッドストレージデバイス110によって実装され得る。
【0022】
410で、書込み動作が、ファイルシステム180からハイブリッドストレージデバイス110に発行される。その書込み動作は、420で、インターフェース115を介してハイブリッドディスクコントローラー120で受信される。430で、ハイブリッドディスクコントローラー120の上書き率モジュール230が、その書込みに関連するメモリブロックの上書き率を判定する。上書き率は、そのブロックが受信する書込みの数に対する上書きの数の比率である。上書き率は、ストレージ260などのハイブリッドディスクコントローラー120のストレージ内に記憶され得る。
【0023】
440で、メモリブロックの上書き率が、上書き閾値(ストレージ260などのストレージから検索され得る)と呼ばれる所定の値に比較される。そのブロックの上書き率が440で判定されるように上書き閾値を超える場合、次いで、その書込み動作(そのメモリブロックに関連する)のデータが、450で書込みキャッシュ140に書き込まれる(たとえば、実装によっては、ハイブリッドディスクコントローラー120のデータ書込みモジュール250および/またはキャッシュモジュール210が、書込みキャッシュ140にその書込みに関連するデータを記憶するように命令し、そのデータが書込みキャッシュ140内に記憶される)。ある時点で、460で、本明細書でさらに説明される、移送ポリシーにしたがって、そのデータは、移送・トリガーモジュール220を使用し、書込みキャッシュ140からSSD150に移動され得る。
【0024】
しかし、ブロックの上書き率が440で判定されるように上書き閾値を超えない場合、次いで、そのデータは、470でSDD150に書き込まれる(たとえば、ハイブリッドディスクコントローラー120が、SDD150にその書込みに関連するデータを記憶するように命令し、そのデータがSDD150内に記憶される)。
【0025】
上書き閾値は、たとえば、ユーザまたは管理者によって設定され、ストレージ260に記憶され得る。上書き閾値は、たとえば、そのユーザまたは管理者によってその後に変更可能である。上書き閾値が増やされるとき、頻繁に上書きされた結果として、より高い上書き率をもつそれらのメモリブロックのデータのみが、書込みキャッシュ140内にキャッシュされる。ある実装においては、フルキャッシングは、上書き閾値をゼロに設定することによって、可能にすることができる。上書き率は、頻繁に書き込まれたブロックの判定で使用することができるが、任意の技法が頻繁に書き込まれたブロックの判定に使用され得る。
【0026】
読出しペナルティが、書込みキャッシュ140によって供される全読出しのパーセンテージとして定義され得る。たとえば、ハイブリッドストレージデバイス110が50Mの読出しを受信し、書込みキャッシュ140がこれらの読出しのうちの1Mを受信する場合、読出しペナルティは2パーセントである。理想的には、読出しペナルティは、できる限り低く保たれる。選択的キャッシングは、読出しペナルティを下げ、移送されるデータの量を減らすことができる。しかし、ハイブリッドストレージデバイス110はストレージ260内でブロック毎の上書き率を計算および記憶することができるため、選択的キャッシングは、オーバヘッドをもつ。加えて、選択的キャッシングは、障害からの回復が困難であることがある。
【0027】
前述のように、データは、SSD150に移送される前に書込みキャッシュ140内にキャッシュされる。移送ポリシーは、データをSDD150に移送する前に、書込みキャッシュ140内にデータをどの位長くキャッシュするかを判断するために、使用され得る。ある実装においては、その時間は、相当な数の上書きをキャプチャするのに十分な長さであるが、書込みキャッシュ140への相当な数の読出しを受信するほど長くはない。WAW(write-after-write:書込み後の書込み)は、同じブロックへの介入する読出しの前のメモリブロックへの2つの連続する書込みの間の時間間隔として定義することができ、そして、RAW(read-after-write:書込み後の読出し)は、同じメモリブロックへの書込みとその後の読出しの間の時間間隔として定義され得る。ある実装においては、移送に先立つメモリブロックのデータのキャッシングの時間は、RAW間隔の所定の数または小数よりも低い書込みキャッシュ140へのいくつかの読出しを受信する間に、WAW間隔の所定の数または小数よりも高いいくつかの上書きをキャプチャするのに十分な長さである。
【0028】
どの位長くデータをキャッシュするかのポリシーは、ブロック毎の時間値によって判断され得るが、これは維持および実施する費用が高くなり得る。代わりに、移送ポリシーは、書込みキャッシュ140の内容をSSD150にフラッシュさせる1つまたは複数の移送トリガーを使用し、実装され得る。移送トリガーは、たとえば、時間切れトリガー、読出し閾値トリガー、および移送サイズトリガーを含み得る。トリガーおよび移送ポリシーは、たとえば、ハイブリッドディスクコントローラー120の移送・トリガーモジュール220によって維持および監視され得る。ある実装においては、そのトリガーおよび移送ポリシーは、ユーザまたは管理者によって設定または更新され得る。
【0029】
時間切れトリガーは、所定の量の時間が移送なしに経過した場合に起動するトリガーである。そのようなトリガーは、予測可能であり、書込みキャッシュ140の障害により損失され得るデータの新しさを抑制する。たとえば、5分間の時間切れ値は、5分間よりも古い書込み動作のデータが失われないことを確実にすることになる。しかし、時間切れトリガーは作業負荷に反応しないので、ある一定の作業負荷が高い読出しペナルティを受け得る。
【0030】
読出し閾値トリガーは、最後の移送以後の測定された読出しペナルティが閾値を超えたときに起動する。そのような手法は、読出しペナルティが有限になることを可能にする。しかし、孤立して使用される場合、読出しペナルティトリガーは、たとえば、データがそのハイブリッドストレージデバイス110から読み出されない場合に、測定された読出しペナルティはゼロに留まることになり、そのデータは書込みキャッシュ140からSDD150に移動されないことになるなどのシナリオに依存し得る。これは、書込みキャッシュ140が空間を使い果たす結果をもたらし、そしてまた、書込みキャッシュ140の障害でのデータ損失に対してシステムをより脆弱なままにする可能性がある。
【0031】
移送サイズトリガーは、移行可能なデータ全体のサイズがサイズ閾値を超えるときに起動する。これは、書込みキャッシュ140の障害で失われ得るデータの量を抑制することができる。単独でまたは組合せで使用されて、これらのトリガーは、複雑な移送ポリシーを可能にすることができる。たとえば、あるポリシーが、読出しペナルティは5パーセントを上回るべきではないこと、および、書込みキャッシュ140が機能しなくなる場合、たかだか100MBまたは5分間に値するデータが失われるべきであることを提示することができる。
【0032】
図5は、移送ポリシーを使用するハイブリッドストレージの方法500の一実装の動作フローである。本方法500は、たとえば、ハイブリッドストレージデバイス110によって実装され得る。510で、1つまたは複数の移送トリガーが、ハイブリッドストレージデバイス110内で設定可能であり、たとえば、時間切れトリガー、読出し閾値トリガー、および/または移送サイズトリガーなどが、ハイブリッドディスクコントローラー120の移送・トリガーモジュール220によって設定され得る。520で、データが、たとえば、ファイルシステム180からハイブリッドストレージデバイス110に発行されている書込みに準じて、書込みキャッシュ140内に記憶され得る。データは、その実装に応じて、フルキャッシングポリシーまたは選択的キャッシングポリシーにしたがって書込みキャッシュ140に書き込み可能である。ある実装においては、追加データが、時間とともに、書込みキャッシュ140に書き込み可能である。
【0033】
ある時点で、530で、トリガーに関する条件が満たされることがあり、そのトリガーがそれに応じて540で起動し得る。550で、トリガーの起動に準じて、そのデータが、書込みキャッシュ140からSDD150に移送され得る。ハイブリッドディスクコントローラー120は、書込みキャッシュ140からSSD150にそのトリガーに関連する適切なデータを移動させることによって、そのトリガーの起動に反応することができる。520で、プロセスを続けることができる。
【0034】
本データ移送は、速く、直接的である。ある実装においては、データは、書込みキャッシュログから連続して読み出され、SSD150に書き込まれる。書込みキャッシュ140のログおよびファイルシステム180は異なるデバイス上にあるので、このプロセスは、同一デバイス上のログおよびファイルシステム間の往復がランダムなシークを引き起こし得る従来のログ構造化されたファイルシステム内の従来のクリーニング機構の性能の欠点に悩まされない。
【0035】
ある実装においては、ハイブリッドストレージは、ブロックデバイスレベルの代わりにファイルシステムレベルで実装され得る。ファイルシステムは、ブロックの空間局所参照性を利用するために、メモリブロック間の意味関係の知識を活用することができる。加えて、ハイブリッドストレージは、書込みキャッシュ140上の更新ジャーナル(update journal)およびSSD150上の実際のデータを記憶するために、既存のジャーナリング(journaling)ファイルシステムを修正することによって、実装され得る。
【0036】
ファイルシステムデザインはまた、理想的な書込みキャッシュの性能にそれが近づくことを可能にすることができる情報へのアクセスを提供する。理想的なキャッシュは、汚れたデータが時間内に移送されて書込みキャッシュからの読出しを回避することができるように、読出しが生じる直前にブロックに差し迫った読出しをそれに通知するオラクル(oracle)を使用する。ブロックレベルでは、そのようなオラクルは存在せず、移送ポリシーが使用される。しかし、ファイルシステムレベルでは、ファイルシステムのバッファキャッシュからのブロックの削除が使用されて、差し迫った読出しを信号で伝えることができる。ファイルシステムがそのバッファキャッシュ内のブロックを記憶する限り、それは、ハイブリッドストレージデバイスにそのブロックについての読出しを発行しないことになる。それがそのブロックを削除した後は、任意のその後の読出しがハイブリッドストレージデバイスから供される。したがって、バッファキャッシュからの削除に応じて書込みキャッシュからSSDにブロックを移送するポリシーは、読出しペナルティなしに最大の書込みの節減をもたらすことになる。
【0037】
図6は、例示的実装および態様が実装され得る例示的なコンピュータ環境の図である。本コンピュータシステム環境は、適切なコンピュータ環境の一例に過ぎず、使用または機能の範囲に関する何らかの限定を示唆するものではない。
【0038】
多数の他の汎用または専用コンピュータシステム環境または構成が使用可能である。使用に適し得るよく知られているコンピュータシステム、環境、および/または構成の例は、パーソナルコンピュータ(PC),サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、組込み型システム、前述のシステムまたはデバイスを含む分散コンピュータ環境などを含むがこれらに限定されない。
【0039】
コンピュータによって実行されている、プログラムモジュールなどのコンピュータ実行可能命令が使用され得る。概して、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象的データタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。分散コンピュータ環境は、タスクが通信ネットワークまたは他のデータ伝送媒体を介してリンクされた遠隔プロセシングデバイスによって実行される場合に、使用され得る。ある分散コンピュータ環境では、プログラムモジュールおよび他のデータは、メモリストレージデバイスを含むローカルおよび遠隔の両方のコンピュータストレージ媒体内に置かれ得る。
【0040】
図6を参照すると、本明細書に記載の態様を実装する例示的なシステムは、コンピュータデバイス600などのコンピュータデバイスを含む。その最も基本的構成では、コンピュータデバイス600は通常は、少なくとも1つのプロセシングユニット602およびメモリ604を含む。コンピュータデバイスの正確な構成およびタイプに応じて、メモリ604は、揮発性(ランダムアクセスメモリ(RAM)など)、不揮発性(読出し専用メモリ(ROM)、フラッシュメモリなど)またはそれら2つの何らかの組合せでもよい。この最も基本的構成は、破線606によって図6に示される。
【0041】
コンピュータデバイス600は、追加の特徴/機能性をもち得る。たとえば、コンピュータデバイス600は、磁気または光ディスクまたはテープを含むがこれらに限定されない追加のストレージ(リムーバブルおよび/または非リムーバブル)を含み得る。そのような追加のストレージは、リムーバブルストレージ608および非リムーバブルストレージ610によって、図6に示される。
【0042】
コンピュータデバイス600は通常は、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、デバイス600によってアクセス可能な任意の利用可能な媒体でもよく、揮発性および不揮発性の両方の媒体と、リムーバブルおよび非リムーバブルな媒体とを含み得る。
【0043】
コンピュータストレージ媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性、ならびにリムーバブルおよび非リムーバブルな媒体を含む。メモリ604、リムーバブルストレージ608、および非リムーバブルストレージ610はすべて、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、RAM、ROM、電気的消去可能プログラム読出し専用メモリ(EEPROM)、フラッシュメモリまたは他の揮発性もしくは不揮発性メモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、所望の情報を記憶するために使用され得る、およびコンピュータデバイス600によってアクセス可能な任意の他の媒体を含む。任意のそのようなコンピュータストレージ媒体は、コンピュータデバイス600の一部でもよい。
【0044】
コンピュータデバイス600は、そのデバイスが他のデバイスと通信できるようにする1つまたは複数の通信接続612を含み得る。コンピュータデバイス600はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの1つまたは複数の入力デバイス614も含み得る。ディスプレイ、スピーカ、プリンタなどの1つまたは複数の出力デバイス616もまた、含まれ得る。すべてのこれらのデバイスは、当技術分野でよく知られており、本文で詳細に論じられる必要はない。
【0045】
コンピュータデバイス600は、ネットワークによって相互接続された複数のコンピュータデバイス600のうちの1つでもよい。理解され得るように、本ネットワークは、任意の適当なネットワークでもよく、各コンピュータデバイス600は、1つまたは複数の通信接続612を用いて任意の適当な形でそこに接続可能であり、そして、各コンピュータデバイス600は、任意の適当な形でそのネットワーク内の他方のコンピュータデバイス600のうちの1つまたは複数と通信することができる。たとえば、本ネットワークは、組織または住宅などの中のワイヤードまたはワイヤレスネットワークでもよく、インターネットまたは同類のものなどの外部ネットワークへの直接または間接的結合を含み得る。
【0046】
本明細書に記載された様々な技法は、ハードウェアまたはソフトウェアに、あるいは、適切な場合には、その両方の組合せに関して実装され得ることを理解されたい。したがって、現在開示される主題のプロセスおよび装置、またはそれらのある種の態様または部分は、フロッピディスケット、CD−ROM、ハードドライブ、または任意の他の機械読取り可能なストレージ媒体などの有形的表現媒体で実施されたプログラムコード(即ち、命令)の形をとることができ、そのプログラムコードがコンピュータなどの機械によってロードおよび実行されるとき、その機械は現在開示される主題を実行するための装置になる。
【0047】
プログラマブルコンピュータでのプログラムコード実行の場合、コンピュータデバイスは概して、プロセッサと、プロセッサによって読出し可能なストレージ媒体(揮発性および不揮発性メモリおよび/またはストレージ要素を含む)と、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含む。1つまたは複数のプログラムが、たとえば、API、再使用可能制御、または同類のものの使用を介して、現在開示される主題に関して記載されるプロセスを実装または使用することができる。そのようなプログラムは、コンピュータシステムと通信するために、高レベルの手続き型またはオブジェクト指向のプログラミング言語で実装され得る。しかし、1つまたは複数の本プログラムは、必要に応じて、アセンブリまたは機械言語で実装可され得る。いずれの場合にも、その言語はコンパイルされたまたは翻訳された言語でもよく、それは、ハードウェア実装と組み合わせ可能である。
【0048】
例示的な実装は、1つまたは複数の独立型コンピュータシステムとの関連での現在開示される主題の態様の使用を参照し得るが、本主題はそのように限定されず、そうではなくて、ネットワークまたは分散コンピュータ環境などの任意のコンピュータ環境に関して実装され得る。さらに、現在開示される主題の態様は、複数のプロセシングチップまたはデバイス内でまたはそれらを横切って実装可能であり、ストレージは複数のデバイスにわたって同様に影響を受け得る。そのようなデバイスは、たとえば、PC、ネットワークサーバ、およびハンドヘルドデバイスを含み得る。
【0049】
本主題は、構造的特徴および/または方法論的行動に特有の言語で説明されてあるが、添付の特許請求の範囲で定義される本主題は、前述の特有の特徴または行動に必ずしも限定されないことを理解されたい。そうではなくて、前述の特有の特徴および行動は、本特許請求の範囲を実装する例示的な形として開示される。
図1
図2
図3
図4
図5
図6