(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-17
(45)【発行日】2024-10-25
(54)【発明の名称】SSD並びにファームウェアベースSSDブロックの故障に対する予測及び回避方法
(51)【国際特許分類】
G06F 11/22 20060101AFI20241018BHJP
G06F 3/08 20060101ALI20241018BHJP
G06F 3/06 20060101ALI20241018BHJP
【FI】
G06F11/22 607Z
G06F3/08 H
G06F3/06 306Z
G06F3/06 304P
G06F11/22 673A
(21)【出願番号】P 2020178218
(22)【出願日】2020-10-23
【審査請求日】2023-09-13
(32)【優先日】2019-10-25
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-12-02
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】エリヤシ ニマ
(72)【発明者】
【氏名】崔 昌 皓
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2019-169141(JP,A)
【文献】特開2019-003649(JP,A)
【文献】特開2012-069107(JP,A)
【文献】再公表特許第2007/010829(JP,A1)
【文献】特開2010-237854(JP,A)
【文献】特表2014-522537(JP,A)
【文献】米国特許出願公開第2019/0278498(US,A1)
【文献】米国特許出願公開第2012/0054541(US,A1)
【文献】米国特許出願公開第2011/0252289(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22
G06F 3/08
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
複数のブロックで構成されるデータ用のフラッシュストレージと、
前記フラッシュストレージからのデータのリード及び前記フラッシュストレージへのデータのライトを管理するコントローラと、
SSD(Solid State Drive)におけるエラーに対する装置ベースのログデータを格納するメタデータストレージと、
プロセッサ上で実行され、前記装置ベースのログデータに応答して前記複数のブロックの中の疑わしい(suspect)ブロックを識別するように動作する識別ファームウェアと、を備えることを特徴とするSSD。
【請求項2】
前記メタデータストレージは、前記SSDにおける最近のエラーのセットのみに対する装置ベースのログデータを格納することを特徴とする請求項1に記載のSSD。
【請求項3】
前記メタデータストレージは、前記SSDにおける前記エラーに関する正確なブロックベースのデータを格納するように更に動作し、
前記SSDは、前記プロセッサ上で実行される検証(verification)ファームウェアを更に含み、
前記検証ファームウェアは、前記正確なブロックベースのデータ及び前記装置ベースのログデータの両方に応答して前記疑わしいブロックが故障すると予測されるか否かを判定するように動作することを特徴とする請求項2に記載のSSD。
【請求項4】
前記検証ファームウェアは、前記疑わしいブロックに対してのみ実行されることを特徴とする請求項3に記載のSSD。
【請求項5】
前記検証ファームウェアは、前記正確なブロックベースのデータ及び前記装置ベースのログデータに応答して前記疑わしいブロックを廃棄(retire)するように動作することを特徴とする請求項3に記載のSSD。
【請求項6】
前記検証ファームウェアは、前記正確なブロックベースのデータ及び前記装置ベースのログデータにランダムフォレスト(Random Forest)、ロジスティック回帰(Logistic Regression)、アウトライア検知分析法(Outlier Detection analysis)、及び異常検知分析法(Anomaly Detection analysis)のいずれか1つを実装することを特徴とする請求項3に記載のSSD。
【請求項7】
前記識別ファームウェアは、前記装置ベースのログデータからおおよそのブロックベースのデータを取得するように動作することを特徴とする請求項2に記載のSSD。
【請求項8】
前記SSDは、識別ファームウェアを定期的に実行するように動作することを特徴とする請求項2に記載のSSD。
【請求項9】
複数のブロックを含むSSD(Solid State Drive)におけるエラーを追跡する段階と、
前記SSDにおける前記エラーに関する装置ベースのログデータを格納する段階と、
前記装置ベースのログデータに応答して前記複数のブロックの中の疑わしい(suspect)ブロックを識別する段階と、を有することを特徴とする方法。
【請求項10】
前記SSDにおける前記エラーに関する装置ベースのログデータを格納する段階は、前記SSDにおける最近のエラーのセットのみに対する装置ベースのログデータを格納する段階を含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記SSDにおける前記エラーに関する正確なブロックベースのデータを格納する段階と、
前記疑わしいブロックが識別されると、前記正確なブロックベースのデータ及び前記装置ベースのログデータの両方に応答して前記疑わしいブロックが故障すると予測されるか否かを判定する段階と、を更に含むことを特徴とする請求項10に記載の方法。
【請求項12】
前記正確なブロックベースのデータ及び前記装置ベースのログデータの両方に応答して前記疑わしいブロックが故障すると予測されるか否かを判定する段階は、前記正確なブロックベースのデータ及び疑わしいブロックのみに対する前記装置ベースのログデータの両方に応答して前記疑わしいブロックが故障すると予測されるか否かを判定する段階を含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記正確なブロックベースのデータ及び前記装置ベースのログデータに少なくとも部分的に基づいて前記疑わしいブロックを廃棄(retire)する段階を更に含むことを特徴とする請求項11に記載の方法。
【請求項14】
前記正確なブロックベースのデータ及び前記装置ベースのログデータの両方に応答して前記疑わしいブロックが故障すると予測されるか否かを判定する段階は、前記正確なブロックベースのデータ及び前記装置ベースのログデータにランダムフォレスト(Random Forest)、ロジスティック回帰(Logistic Regression)、アウトライア検知分析法(Outlier Detection analysis)、及び異常検知分析法(Anomaly Detection analysis)のいずれか1つを適用する段階を含むことを特徴とする請求項11に記載の方法。
【請求項15】
前記装置ベースのログデータに応答して前記複数のブロックの中の疑わしいブロックを識別する段階は、前記装置ベースのログデータからおおよそのブロックベースのデータを取得する段階を含むことを特徴とする請求項10に記載の方法。
【請求項16】
前記装置ベースのログデータに応答して前記複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階を更に含むことを特徴とする請求項10に記載の方法。
【請求項17】
マシンに方法を実行させる命令語が格納された非一時的ストレージ媒体を含む物品(article)であって、
前記命令語によりマシンによって実行される方法は、
複数のブロックを含むSSD(Solid State Drive)におけるエラーを追跡する段階と、
前記SSDにおける前記エラーに関する装置ベースのログデータを格納する段階と、
前記装置ベースのログデータに応答して前記複数のブロックの中の疑わしい(suspect)ブロックを識別する段階と、を有することを特徴とする物品。
【請求項18】
前記SSDにおける前記エラーに関する装置ベースのログデータを格納する段階は、前記SSDにおける最近のエラーのセットのみに対する装置ベースのログデータを格納する段階を含むことを特徴とする請求項17に記載の物品。
【請求項19】
前記非一時的ストレージ媒体は、前記非一時的ストレージ媒体に格納された追加の命令語を更に含み、
前記追加の命令語により前記マシンによって実行される方法は、
前記SSDにおける前記エラーに関する正確なブロックベースのデータを格納する段階と、
前記疑わしいブロックが識別されると、前記正確なブロックベースのデータ及び前記装置ベースのログデータの両方に応答して前記疑わしいブロックが故障すると予測されるか否かを判定する段階と、を含むことを特徴とする請求項18に記載の物品。
【請求項20】
前記正確なブロックベースのデータ及び前記装置ベースのログデータの両方に応答して前記疑わしいブロックが故障すると予測されるか否かを判定する段階は、前記正確なブロックベースのデータ及び疑わしいブロックのみに対する前記装置ベースのログデータの両方に応答して前記疑わしいブロックが故障すると予測されるか否かを判定する段階を含むことを特徴とする請求項19に記載の物品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置に関し、より詳しくは、きめ細かい(fine-grained)ブロックの故障予測を提供するSSD並びにファームウェアベースSSDブロックの故障に対する予測及び回避方法に関する。
【背景技術】
【0002】
現場でのNANDフラッシュソリッド・ステート・ドライブ(SSD:Solid State Drive)の故障(failure)は、サーバシャットダウン(shutdown)につながる可能性があるため、データセンター規模のアプリケーションの性能及び利用可能性を損なうことになる。このような予期せぬ故障を回避するために、SSDを利用するシステムは、故障前にドライブを代替することにより、このような故障を避けるために主に単純なしきい値(threshold)ベースのモデルを使用してきた。このような保護メカニズムは、高度の誤った警告につながるか又は全てのSSDの故障を予測/回避することができない。なお、物理的なエラーの場合には、SSDはエラーから回復することができず、従って装置の故障を回避することができない。
【0003】
このため、きめ細かいブロックの故障予測を提供する必要性が残っている。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許第10223029号明細書
【文献】米国特許第9349476号明細書
【文献】米国特許第9632854号明細書
【文献】米国特許出願公開第20180357535号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、SSD並びにファームウェアベースのSSDブロックの故障に対する予測及び回避方法を提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するためになされた本発明の一態様によるソリッド・ステート・ドライブ(SSD)は、複数のブロックで構成されるデータ用のフラッシュストレージと、前記フラッシュストレージからのデータをリード(read)及び前記フラッシュストレージへのデータのライト(write)を管理するコントローラと、SSD(Solid State Drive)におけるエラーに対する装置ベースのログデータを格納するメタデータストレージと、プロセッサ上で実行され、前記装置ベースのログデータに応答して前記複数のブロックの中の疑わしい(suspect)ブロックを識別するように動作する識別(identification)ファームウェアと、を備える。
【発明の効果】
【0007】
本発明によると、ファームウェアベースのSSDブロックに対する故障の予測及び回避のスキームを提供することで、ドライブの故障を避けるか、或いは少なくとも早期にドライブを代替することを回避することができる。
【図面の簡単な説明】
【0008】
【
図1】本発明の一実施形態によるきめ細かいブロックの故障予測を行うソリッド・ステート・ドライブ(SSD)を含むシステムを示す図である。
【
図4】
図1のSSDによって使用されるブロックベースのデータの一例を示す図である。
【
図5】
図1のSSDによって使用される装置ベースのログデータを示す図である。
【
図6】特定のブロックが故障すると予想されるか否かを判定するために動作する
図3の識別ファームウェア及び検証ファームウェアを示す図である。
【
図7A】本発明の一実施形態によるブロックが故障すると予測されるか否かを判定する手順のフローチャートである。
【
図7B】本発明の一実施形態によるブロックが故障すると予測されるか否かを判定する手順のフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳しい説明では、多様な特定の詳細事項が、本発明の技術的思想の十分な理解を助けるために提供される。しかし、この分野における通常の技術を有する者は、このような特定の詳細事項がなくても、本発明の技術的思想を実現することができる。他の例としてよく知られている方法、手順、構成要素、回路、そしてネットワークは実施形態の側面を不必要に曖昧にしないために詳しく説明されない。
【0010】
ここで、第1、第2などの用語が多様な要素(element)を説明するために使用されるが、このような要素は、このような用語によって限定されない。このような用語は、1つの要素を他の1つの要素と区別するためにのみ使用される。例えば、本発明の技術的思想の範囲から離れずに、第1のモジュールは、第2のモジュールと命名され得る。同様に、第2のモジュールは、第1のモジュールと命名され得る。
【0011】
本発明の技術的思想の説明で使用される用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定するものに意図されない。本発明の技術的思想の説明及び請求項において使用されるように、文脈で明確に明示されない限り、単数表現は複数表現も含んでいるものとして意図される。「及び/又は」の用語は、1つ以上の多くの関連する項目の任意且つ可能な全ての組み合わせを含むものとして参照される。「含む(comprises)」及び/又は「含んでいる(comprising)」の用語は、詳細な説明で使用する際に言及する特性、整数、段階、動作、元素、及び/又は構成要素の存在を明示し、1つ以上の多くの他の特性、整数、段階、動作、エレメント、構成要素、及び/又はそれらのグループの存在若しくは追加を排除しない。図面の構成要素及び特徴は、必ずしも実際の比率に比例していない。
【0012】
エラーの早期検出及び分離のためのファームウェアベースのソリッド・ステート・ドライブ(SSD)の故障保護メカニズム(mechanism)が提供される。このような故障メカニズムは、ドライブの故障を避けるか又は少なくとも早期にドライブを代替するのを回避する。
【0013】
SSDは、それぞれ多数のブロックを含む複数のフラッシュチップを含む。ブロックは、任意の数のページを含む。ページのサイズは、通常複数のキロバイトであり、そして普通のSSDにデータを読み書きするための最小単位である。SSDコントローラ(ファームウェア)は、リード(read)及びライト(write)の要請をサービスし、ウェアレベリング(wear-leveling)のアルゴリズムを実行し、そしてエラー回復手順を実行するのに必要とされる全てのロジック(logic)を含む。
【0014】
各SSDページは、SSDコントローラが限られた数のビットエラー(普通、1~2ビットエラー)を回復・修理するのに使用されるエラー訂正コード(ECC)のメタデータを含む。しかし、ハードウェアの故障に起因するビットエラーの数が特定の数を超えると、SSDコントローラは、エラーを訂正することができないはずであり、これにより、SSDコントローラは、損傷した(corrupted)データをホストに提供することになる。このような故障が複数回発生した場合、全体の装置は、代替のために選択される可能性があり、これは装置の製造業者に高いコストを発生させ、そしてサーバーシャットダウンの結果により、アプリケーションの性能及び利用可能性を損傷させる。
【0015】
一方、フラッシュページにデータをライト(write)する際(プログラム動作)にエラーが発生すると、ページは「故障」とマークされ、これ以上使用されない。ブロックにおける特定の数のページが故障すると、全体のブロックは廃棄(退去)される。SSDは、このような撤回された(withdrawn)ブロックを代替するためにいくつかの余裕(予備)ブロックを残す。SSDが使用可能な余裕ブロックの数が不足になった場合(例えば、予備ブロックの90%を超えて使用)、装置は、代替される必要がある。
【0016】
ドライブにおけるブロックの多くは正常に機能し(正常ブロック)、ブロックの一部は欠陥のある(不良ブロック)状況があり得る。リード(read)動作が不良(バッド)ブロックをターゲットにして頻繁に故障した場合(損傷したデータをリード(read)、又はハードウェアの欠陥のためにリード(read)を失敗)、全体のドライブは、将来の故障を防止してデータの損失を回避するために、代替の対象として指定される。しかし、きめ細かいブロックのエラー/欠陥は早期に予測可能であり、その後に回避/回復することができる場合、不良ブロックは廃棄/撤回され、これにより、SSDが不良ブロックからの情報を格納することを防止して、追加の故障及びデータの損傷/損失を回避することができる。
【0017】
数千個のブロックを有するSSDにおけるきめ細かい(ブロックレベル)エラー/欠陥を予測することは簡単ではなく、(i)各ブロックに対応する非常に多くの量のヒストリー(時系列(time-series))のデータを格納し、そして(ii)故障を予測して回避するために、非常に大きなデータセット(dataset)の処理/分析を要求する。必要なヒストリーのデータ量に関連して、このようなメタデータ情報がSSDのDRAM空間又はフラッシュメモリ自体に格納されるか否かに拘わらず、格納されるデータ量は、故障ヒストリーの情報が増加するにつれて増加する。この情報を格納するのは、非常に高いストレージコストを発生させ、大部分のドライブの容量を犠牲にすることになる。限られた量のDRAMを含み、ギガバイト当たりの価格に非常に敏感なストレージ装置を使用する場合、データのストレージ要件は些細ではないし、そのような故障の時系列データを格納するために、装置のストレージ容量の大きな部分を犠牲にするのは、簡単又は効率的ではない。
【0018】
予測を行うために要求される処理に関連して、SSDは通常限られた処理能力を有し、この処理能力は、フラッシュ変換レイヤー(flash translation layer)、ウェアレベリング(wear levelling)、及びスケジューリング(scheduling)のようなSSDの内部動作に主に使用される。ブロックレベルの故障/エラーを予測するためにSSD内部の大量のデータを処理することは、簡単に実行されるものではない。
【0019】
ブロックレベルの故障予測に関する上記のような問題を解決するために、本発明の実施形態は、各ブロック及び/又は各ブロック内のページの物理的なエラーの時間的及び空間的なローカリティ(locality)を活用する。時間的ローカリティは、同一の物理的ページ及び/又はブロックにおけるエラーの頻繁な発生を指す。空間的ローカリティは、隣接する物理的な部分(例えば、ページ又はブロック)におけるエラーの発生を指す。エラーの発生のローカリティを活用することによって、単に過去のいくつかのエラーに関連するデータの非常に限られた量のみが必要であり(装置のエラーヒストリーの代わりに)、これはブロックの故障を予測するのに使用される。このアイデアの背後にある直観は、欠陥のあるページを生成したページ/ブロックは、将来にエラーを生成しやすいということである。また、ブロックのページが故障した場合、同じブロックで故障したページに隣接するページは、隣接するページが全て同じ物理的コンポーネントに存在するのと同じエラーを生成する可能性が高い。
≪ブロックレベルの故障予測≫
【0020】
上述したように、ブロックレベルの故障を予測することは、容量及び処理要求によって簡単ではない。簡単なアプローチは、正確な予測を行うために数千個のブロックに該当(対応)するきめ細かいヒストリーログデータを使用することであるが、しかしデータセットのサイズは、時間がたつにつれて増加し、ユーザーデータのストレージを縮小することになる。代わりに、本発明の実施形態は、疑わしい(疑われる)ブロックを見つけるために2段階の識別及び検証メカニズムを使用し、その次のブロックの将来の故障を検証するためにラーニングベースのモデルを使用する。
【0021】
第一番目に、疑わしいドライブを識別するために物理的エラーのローカリティを活用する場合、最近のエラー情報のみが格納される必要がある。例えば、ドライブの動作中に全体のエラーのヒストリーの代わりに、単にエラーヒストリーの最後のk個のエントリ、最近のk個の事件(incident)が維持される。最後のk個のエントリよりも古いエラーは捨てられるはずである。最近のエラーに関連する情報を単に格納するにも拘わらず、このような限られた情報は、エラーのローカリティによって疑われるブロックを識別することに役立つ。例えば、過去100個のエラーの中から10個のエラーが識別されたブロック内の特定のページによって生成される場合、その事実は、同じページ又は同じブロックの隣接するページで、将来のエラーが発生する可能性があることを示す。従って、過去のk個のエラーに関する情報が与えられると、疑わしいブロックは、装置全体のエラーヒストリーよりも、潜在的に少ない規模のデータを利用して識別される。
【0022】
第二番目の段階では、疑わしいブロックが、近い将来にエラーを発生させる可能性があるにも拘わらず、単純に欠陥ブロックを呼び出し及び廃棄することは、高い非効率性をもたらすことになる。このようなしきい値ベース(threshold-based)の識別メカニズムは、正確に故障情報をキャプチャーできないことがあり、多くの誤った警告を生成し、正常の(healthy)ブロックを廃棄してドライブの容量を無駄にすることになる。このような不正確でしきい値ベースの予測を防止するために、疑わしいブロックを識別した後に、予測モデル(既に訓練された)がブロックの故障をより正確に予測するために使用される。
≪ブロックレベルのパラメータ取得≫
【0023】
事前訓練された予測モデルを実行することは、疑わしいブロックの故障を検証するために、疑わしいブロックに関連する時系列情報を要求する。このようなきめ細かい情報を追跡し続けることは、ストレージ装置の容量をはるかに超えて大きくなる大容量の要件をもたらす。代わりに、本発明の実施形態は、各パラメータの定義及び解釈に関連して利用可能なドライブベースのログデータから(直接又は一部の修正と共に)ブロックベースのログデータを抽出して得る。特に、疑わしいブロックに対するパラメータのセット(set、集合)(例えば、セットS={パラメータ1、パラメータ2、…})を作成してこれを予測モジュールに供給するために、ログデータは、2つのカテゴリーに分けられる。即ち、
(i)正確なブロックベースのログデータ:S_Block_Precise={p1、p2、…}、そして
(ii)大略的なブロックベースのログデータ:S_Block_Approx={a1、a2、…}。
【0024】
次に、Sを導出するために、S=S_Block_Precise ∪ S_Block_Approxになり、2つのセット(集合)が互いに素(disjoint)であるため、これは、S=S_Block_Precise + S_Block_Approxと同一である。(リード(read)エラー、ライト(write)エラー、及び削除エラーの数のような)エラー/故障情報に直接関連するパラメータのために、各ブロックに対する正確な情報が格納される。要求されるブロックベースのデータの量は無視され(1TBのSSDの場合でも、単に小さなメガバイトの領域が必要である)、DRAM空間の数ギガバイトを既に含んでいるSSDによって管理される。更に、このようなデータは、時系列情報を参照せず、ブロック当たりの各パラメータに対する1つのカウンター(counter)にすぎない。
【0025】
時系列ログデータを抽出するために、このような情報は、過去のk個のエラーに対して維持されたグローバル(global、全域)ドライブレベルのエラー情報から導き出される。疑わしいブロックは、過去のk(個の)エラーの事件をベースに選択されるため、グローバルドライブレベルのエラーデータに疑わしいブロックの最近のエラー情報が既に存在する。ドライブに関連する最近のk個のエラーに対するデータは、ブロックに対して累積されたエラー情報を含み、これは新たなエラーデータとブロックに対するエラーカウンターとを合算することにより導き出される。各ブロックに使用されるカウンターは、単に累積されたエラー情報を含む。グローバルエラー情報は、最新のk個のエラーに対する完全なデータを含んでおり、これは疑わしいブロックによって生成されたエラーを含む。
【0026】
ブロックに対する近似のパラメータ(即ち、S_Block_Approx)は、ドライブレベルのエラー情報から抽出される。このアイデアの背後にある直観は、疑わしいブロックに対するいくつかのログ情報は、エラー情報ではなく、ドライブ/ブロックの状態を参照するためにドライブレベルのパラメータから概ね(近似的に)導出されるということである。即ち、このようなパラメータは、全てのブロックに亘って平均化されることがあるため、単一のブロックの代表になり得る。例えば、ドライブに対する全体のリード(read)及びライト(write)の数(これは、ドライブの寿命の表示である)をベースにした「リードの数(Number of Reads)」と「ライトの数(Number of Writes)」のような、いくつかのパラメータは、疑わしいブロックに対する対応するパラメータを近似化するために、全てのブロックに亘って平均化される。
【0027】
ヒストリーベースのドライブ情報をカウンターベースのブロックレベルのログデータと結合することにより、疑わしいブロックに対するパラメータのセット(集合)が生成されて予測モジュールに供給される。次に、疑わしいブロックに対する故障警告の場合に、ブロックは、このようなブロックに関連する追加のエラー及びそれに伴うドライブの代替を防止するために早期に廃棄される。従って、ますます大きくなる各ブロックに対する時系列データを維持する代わりに、各ブロックに対するライトウェイト(light-weight、軽量の)カウンターのみが維持される必要がある。なお、時系列のドライブ情報について最近のk個のエラーの事件は維持され、これは単に少ないキロバイトのデータのみを占めている。このような最適化を通じて、きめ細かいブロックレベルの故障予測を遂行するために必要なデータセットのサイズ及び計算/遂行する要求が処理される。提案された改善事項に要求されるデータの量は単純な(naive)ブロックレベル時系列ログデータよりも少なく、そしてこのような少量のデータの後続の処理は非常に速くリアルタイムで実行される、
≪要求されるメタデータ及びデータ構造≫
【0028】
上述したように、各ブロックに対する単にライトウェイトのエラー情報/カウンターのみが維持される必要がある。SSDがn個のブロックを含むと仮定すると、単にn個のエントリ(entry)が必要である。一方、ドライブレベルの情報については、過去のk個のエラーの事件の情報をひたすら維持する。それぞれのk個のエラーの事件については、エラーの物理的な位置(ページ、ブロック)に関する情報、エラーが発生した時間(タイムスタンプ)、その時間でのブロックのエラーカウンター、及びSSDのSMARTログデータが格納される。
【0029】
上述したように、本発明の実施形態に要求されるオーバーヘッド(overhead)はかなり低い。1TBのストレージ容量、ブロック毎に256ページ及び4KBのサイズのページのSSDを仮定する。即ち、
ページの数(Number of pages)=1TB/4KB=256,000,000
ブロックの数(Number of blocks)=256,000,000/256=1,000,000
各ブロックについて、3つのエラーの属性(attribute)がある場合(リード(read)エラー、ライト(write)エラー、及び削除エラーの数のそれぞれに対するカウンター(各4バイトの整数である))、ブロックレベルのエラーデータに要求される全体のメモリ空間は、1,000,000×3×4B≒12MBである。
【0030】
ドライブレベルの情報については、kは100であり(即ち、最近の100個のエラーの事件に関連する情報が格納される)、1KBのストレージが必要とする各エラーの事件であると仮定する。従って、ドライブレベルのメタデータに必要な総容量は100KBである。即ち、総メモリのオーバーヘッドは12.1MBとなるはずであり、これはDRAM空間の数ギガバイトを含むSSDの場合、無視することができる。
【0031】
SSDに対するエラーログデータは、通常ファームウェア及び装置モデルに基づいて特定される。説明のために、格納することができるログデータのいくつかのパラメータは、致命的な警告(Critical Warning)、利用可能な空間(Available Space)、Data Units Read、Data Units Written、Power Cycles、Power On Hours、Unsafe Shutdowns、Media Errors、Warning Temperature Time、及びCritical Composite Temperature Timeを含む。本発明の実施形態は、他のパラメータを格納することができる。
≪実行フロー≫
【0032】
ブロックIにおけるエラーの発生の事件の場合に、ブロックレベルのメタデータに対するエラーカウンターは、リード(read)され、アップデートされる。その次のドライブレベルのメタデータは、新たなエラーの事件情報を反映するためにアップデートされる。ドライブレベルのメタデータに格納された情報は、上述したエラーに対する位置(ページID/ブロックID)、タイムスタンプなどのようなパラメータを含む。
≪疑わしいブロックの識別≫
【0033】
疑わしいブロックを識別するために、ドライブレベルのメタデータテーブルは、ブロックが繰り返されたエラーを生成するかを確認するために、定期的にスキャンされる(このテーブルのブロックIDフィールドを確認することにより)。このスキャンは、定期的に(例えば、1分毎に)、又はいくつかのエラーが記録された後(例えば、全てのエラーの後、全ての5番目のエラー毎になど)に遂行される。いくつかの過去のエラーが同じブロックで発生した場合、そのブロックは疑わしいブロックプール(pool)に追加される。その後、SSDは、一時的にデータを格納するのにブロックを使用することを避ける(但し、有効なデータを格納することができるため、ブロックは相変わらずリード(read)される)。より具体的に、最近のk個のエラーの中から特定のブロックに対応する事件の数がしきい値以上を占める場合、そのブロックは、「疑わしいもの」としてマークされる。
【0034】
しきい値を設定するための2つの方法がある。即ち、
(1)静的しきい値αを定義する。特定のブロックに対応するエラーの事件の数が最近のk個のエラーのα%を超える場合に、そのブロックは疑わしいとマークされる。しきい値パラメータαは、保護/信頼性レベルの要求をベースに調整される。例えば、αは10であると設定するのは、最近のk個のエラーの事件の10%以上が特定のブロックIDに関連付けられた場合に、そのブロックは疑わしいとマークされることを示す。或いは、αはパーセンテージではなく、固定された数値である。即ち、αは10であると設定することは、最近のk個のエラーの事件の中の10個以上が特定のブロックIDに関連付けられた場合に、そのブロックは疑わしいとマークされることを示す。
(2)平均ベースのしきい値を定義する。このようなしきい値は、ドライブの全てのブロックの総エラー数(装置ログから)を平均化して得られる。疑わしいブロックの識別決定は、このようなしきい値に基づいて(直接的又は暗示的に)行われる。即ち、特定のブロックが最近のk個のエラーの事件の中の特定のブロックのエラーに対するシェアよりももっと多くのものを経験している場合に、そのブロックは疑わしいとマークされる。例えば、総256,000個のブロックが存在する装置が総100個のエラーを経験したと仮定する。エラーの数とブロックの数との割合は、100/256,000=1/2,560である。ブロックがこのような数よりも多くのエラーを経験した場合に、ブロックは疑わしいとマークされる。
【0035】
エラーの数が、大略ブロックの数に比例するまで、単一のエラーでもブロックが疑わしいとマークされるようにつながることに留意しなければならない。全てのエラーが疑わしいとマークされるブロックをトリガー(trigger)することを防止するために、平均ベースのしきい値は、所望の要因によって拡大(又は縮小)される。従って、例えば効果的に1よりも大きなしきい値を生成するために、平均ベースのしきい値は、数値(例えば、10,000)によって乗じられる。このスケーリング(scaling)の値は、平均ベースのしきい値が大きくなりすぎるのを防止するために、時間に応じて又はエラーの数に応じて異なる。
≪予測≫
【0036】
疑わしいブロックが識別されると、疑わしいブロックに対応するパラメータのセット(セットS)は、生成されて故障予測モジュールに供給される。上述したように、Sの一部はブロックレベルのエラー情報に基づくものであり、Sの一部は過去のk個のエラーが格納されたドライブレベルのメタデータから抽出されるドライブレベルのログ情報から導き出される(これは、ブロックレベルのデータの評価(推定)のために、全てのブロックに亘る平均を反映する)。その次の任意のアルゴリズムでは、このようなデータを処理するために使用され、ブロックが実際に故障すると予測されるか否かを判定する。使用されるアルゴリズムの例としては、ロジスティック回帰(Logistic Regression)又はランダムフォレスト(Random Forest algorithm)を含む。予測された結果が、ブロックが将来故障する可能性があることを示すと、ブロックは、最初にブロックの有効なデータを他のブロックにコピーし、次の疑わしいブロックを利用可能なブロックのリストから除去することで廃棄される。予測モジュールに必要な処理能力を最小限に抑えるために、予測モジュールは、全てのブロックに対して実行すること又は持続的に実行することを必要としない。代わりに、予測モジュールは、疑わしいブロックに対してのみトリガーされ、そのブロックが疑わしいブロックとして識別された場合にのみ、トリガーされる。
【0037】
上述したように、イベント(事件)を予測するためにいくつかの時系列データを使用する任意の所望の予測モジュールが選択される。予測モジュールの例は当初に訓練されており、予測のための情報(例えば、最適化された重み(weight))は、ドライブのファームウェアに既に組み込まれているマシンラーニングベースの故障予測モデル(例えば、ランダムフォレスト、ロジスティック回帰、アウトライア値検知(Outlier Detection)、異常検知(Anomaly Detection)など)である。従って、過去のエラー情報を受信するとき、モデルはライトウェイトを実行して特定のブロックに対する故障の可能性を予測することができる。
【0038】
図1は、本発明の一実施形態によるきめ細かいブロックの故障予測を行うソリッド・ステート・ドライブ(SSD)を含むシステムを示す図である。
図1において、マシンは、プロセッサ105、メモリ110、及びソリッド・ステート・ドライブ115を含む。プロセッサ105は、任意の多様なプロセッサである。例えば、インテルジーオン(Intel Xeon)、セレロン(Celeron)、アイテニアム(Itanium)、又はアトム(Atom)プロセッサ、エーエムディーオプテロン(AMD Opteron)プロセッサ、アーム(ARM)プロセッサなどである。
図1が単一のプロセッサ105を示す一方で、マシン120は、シングルコア又はマルチコアプロセッサ、任意の所望の組み合わせで混合される任意の数のプロセッサを含み得る。
【0039】
プロセッサ105は、メモリ110に結合される。メモリ110は、フラッシュメモリ(flash memory)、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、PRAM(Persistent Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、又は磁気抵抗ランダムアクセスメモリ(MRAM)などの不揮発性メモリ(Non-Volatile Random Access Memory(NVRAM))のような多様なメモリである。メモリ110は、また異なるメモリタイプとの任意の所望の組み合わせであり、メモリコントローラ125によって管理される。メモリ110は、「短期(short-term)」と呼ばれるデータを格納するために使用される。即ち、長期間に格納されないと予想されるデータである。短期データの例には、一時的ファイル、アプリケーションによってローカルに使用されるデータ(他のストレージの位置からコピーされたことがある)などが含まれる。
【0040】
プロセッサ105及びメモリ110は、また多様なアプリケーションが実行されるオペレーティングシステム(operating system)をサポートする。このようなアプリケーションは、メモリ110又はSSD115からデータをリード(read)したり、データをライト(write)したりするための要請を発行する。例えば、SSD115は、シミュレーションを初期化する(initialize)ために使用される初期パラメータ(又は初期パラメータに対する値の範囲、値の範囲が表す動作のタイプ)を格納するために使用される。SSD115は、装置ドライバ130を利用してアクセスされる。
図1がSSD115を示す一方で、本発明の実施形態は、きめ細かいブロック故障予測から利益を得ることができる他のストレージ装置のフォーマットを含む。以下の「SSD」に対する言及は、本発明の他の実施形態を含むものと理解すべきである。
【0041】
図2は、
図1のマシンの詳細構成を示す図である。
図2において、通常マシン120は1つ以上のプロセッサ105を含み、1つ以上のプロセッサ105は、マシンの構成要素の動作を調整するために使用可能なメモリコントローラ125及びクロック205を含む。また、プロセッサ105は、例えばランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、又は他の状態の保存媒体を含むメモリ110に結合される。プロセッサ105は、またストレージ装置115と、例えばイーサネット(登録商標)(Ethernet(登録商標))コネクタ又は無線コネクタであるネットワークコネクタ210に結合される。プロセッサ105は、また他の構成要素の中の入出力エンジン225を使用して管理されるユーザーインターフェース220及び入出力インターフェースポート(port)に付着されるバス215に連結される。
【0042】
図3は、
図1のSSDの詳細構成を示す図である。
図3において、SSD115は、SSD115とホストコンピュータ(
図1のマシン120のような)との間のインターフェースを提供するホストインターフェースロジック305を含む。SSD115は、またSSDコントローラ310、多様なチャンネル(315-1、315-2、315-3、及び315-4)を含み、ここに多様なフラッシュメモリチップ(320-1、320-2、320-3、320-4、320-5、320-6、320-7、320-8)が配列される。
図3は、4つのチャンネル及び8つのフラッシュメモリチップを図示するが、通常の技術者(当業者)は、任意の数のフラッシュメモリチップを含む任意の数のチャンネルがあることを認識することができる。
【0043】
各フラッシュメモリチップ内で、空間はブロックで構成され、これはページでより細分化される。例えば、フラッシュメモリチップ320-8は、第1~第nのブロック(ブロック(325~330)で識別される)を含むものとして図示され、これらのそれぞれは、第1~第mの番号付きページを含む。多数のブロックに同じ番号(例えば、第1のページ)が割り当てられている多数のページがあり得るが、ページ識別子(ID)とブロックIDの組み合わせは、フラッシュメモリチップ(320-8)内の特定のページをユニークに識別することができる(又は、ページID、ブロックID、フラッシュメモリチップIDの組み合わせは、SSD115内のページをユニークに識別することができる)。
【0044】
ブロックとページとを区別する理由は、SSDがリード(read)、ライト(write)、削除の操作を処理する方法から生じる。ページは、通常SSDをリード(read)したり、SSDにライト(write)したりする最小のデータ単位である。ページのサイズは、必要に応じて変わることがある。例えば、ページは4KBのデータである。全体のページよりも少ないページがライト(write)された場合、大部分の空間は、「未使用」である。
【0045】
しかし、ページにライト(write)され、ページがリード(read)されるが、SSDは通常データがオーバーライトされることを許容しない。即ち、既存のデータは、「所定の位置(in place)」で新たなデータに置き換えられない。代わりに、データがアップデートされようとするとき、新たなデータは、SSDの新たなページにライト(write)され、オリジナルのページは無効化される(削除準備としてマークされる)。従って、SSDページは、通常3つの状態のいずれか1つを有する。即ち、フリー(free)(ライト(write)準備)、有効(valid)(有効なデータを含む)、及び無効(invalid)である(これ以上、有効なデータを含んでいないが、削除されるまで使用できない)(この状態の正確な名称は異なる場合がある)。
【0046】
しかし、個別にページにライト(write)され、ページがリード(read)されるが、ブロックは、削除可能なデータの基本単位である。即ち、ページは、個別に削除されない。このことからブロック内の全てのページは、同時に削除される。例えば、ブロックが256ページを含む場合、ブロック内にある全体の256ページは、同時に削除される。このような配列は、SSDのいくつかの管理の問題を引き起こすことがある。いくつかの有効なデータを相変わらず含んでいるブロックが削除のために選択されると、対応する有効なデータは、ブロックが削除される前にSSDのフリーのページにコピーされる必要がある(本発明の実施形態では、削除の単位は、ブロックとは異なる場合がある。例えば、スーパーブロックの可能性がある。即ち、複数のブロックのセット)
【0047】
SSDコントローラ310は、フラッシュ変換レイヤー335、メタデータストレージ340、識別ファームウェア(identification firmware)345、及び検証ファームウェア(verification firmware)350を含む。フラッシュ変換レイヤー335は、データがフラッシュチップ(320-1~320-8)に格納される論理ブロックアドレス(
図1のプロセッサ105によって使用される)及び物理ブロックアドレスの変換を処理する。メタデータストレージ340は、きめ細かいブロック故障予測を遂行するときにSSD115によって使用されるメタデータ情報を格納する。識別ファームウェア345は、メタデータストレージ340に格納されたメタデータ情報を使用して、故障すると疑われるブロックを識別するために使用される。即ち、検証ファームウェア350は、メタデータストレージ340に格納されたメタデータ情報を再利用して、疑わしいブロックが実際に故障する可能性があるか否かを判定する。識別ファームウェア345及び検証ファームウェア350は、SSD115の部分であるプロセッサ(
図3に図示されず)を使用して実行される。例えば、SSDコントローラ310のネイティブの(native)処理能力の使用である。
【0048】
図4は、
図1のSSD115によって使用されるブロックベースのデータの一例を示す図である。
図4において、ブロックベースのデータ405は各ブロックに対するデータを含み、これは
図3のメタデータストレージ340に格納される。例えば、任意の数のブロックに対するデータが含まれるにも拘わらず、(
図1のSSD115の各ブロックに対するデータまで)、
図4では、第1~第nのブロックに対するデータを図示する。各ブロックに対するデータはカウンター(410-1、410-2、及び410-3)を含み、これはそのブロックに対して発生したリード(read)エラーの数(the number of read errors)、ライト(write)エラーの数(the number of write errors)、及び削除エラーの数(the number of erase errors)を格納する。カウンター(410-1、410-2、及び410-3)は、
図1のSSD115が製造された後に累積される。即ち、ブロックベースのデータ405は、また正確なブロックベースのデータとも呼ばれる。ブロックベースのデータ405は、
図5を参照して以下で説明する他のデータと比較して、正確である。
【0049】
カウンター(410-1、410-2、及び410-3)のそれぞれは、カウンター当たり4バイトを要求する。各カウンター(410-1、410-2、及び410-3)が3つのカウンター(リード(read)エラー、ライト(write)エラー、及び削除エラーの数について、それぞれ1つずつ)を含んでいるため、各カウンター(410-1、410-2、及び410-3)を格納するのに総12バイトが使用される。12バイトに
図1のSSDのブロックの数を乗じることにより、ブロックベースのデータ405によって課されるオーバーヘッドが計算される。
【0050】
例えば、総1TBのストレージを提供するSSDを考慮する。ここで各ブロックは256ページを含み、各ページには4KBのデータを含む。4KBページに1TBのデータを格納するために268、435、456個のページが必要である。ブロック当たり256ページを使用するのは、SSDが総1,048,576個のブロックを含むことを意味する。ブロック当たり3つのカウンターに対する12バイトにおいて、ブロックベースのデータ405は総12MBのストレージを要求し、これはSSDによって提供される全体のストレージの1/1000パーセント(百分率)にすぎない。
【0051】
カウンター(410-1、410-2、及び410-3)は、各「ブロック」から発生したエラーの数を示す。このようなエラーはブロックのページの中のいずれか1つ又はいくつに密集されるか、或いはエラーはブロックのページの間に散らされる。このように、1つのエラーがあるページは近くの他のページと同様に(他のブロックにあるページと比較したとき)他のエラーも有する可能性が高いため、ブロックベースのデータ405は、エラーの中のいくつかの空間的ローカリティを決定するために提供される。
【0052】
図5は、
図1のSSD115によって使用される装置ベースのログデータを示す図である。
図5において、装置ベースのログデータ505が示される。装置ベースのログデータ505は、
図1のSSD115上で発生した特定のエラーに対するデータを含み、
図3のメタデータストレージ340に格納される。しかし、
図1のSSD115上で発生した全てのエラーに対するデータを格納せず、装置ベースのログデータ505は、
図1のSSD115上で発生した最近のk個のエラーに対するデータを格納する。古いエラーは捨てられる。従って、第1~第k番目のエラーは、
図1のSSD115上で発生する最初のk個のエラーではない可能性があるものの、最近に発生したk個のエラーであり得る(前に捨てられた古いエラーと共に)。kは任意の所望の値である。即ち、より大きな値は、特定のブロックが故障すると予測されるか否かを判定するために使用される、もっと多くの情報を提供するが、より多くのデータを格納しなければならないコストを負担する(従って、オーバーヘッドが増加する)。
【0053】
多様なデータは、現在追跡中の各エラーに対して格納される。例えば、エラー(510-1、510-2、及び510-3)に示されるように、ページ及びブロックに対するIDは、エラーが発生した時間、ブロックに対するエラーカウンター(即ち、エラーが発生する時点にエラーが発生したブロックに対する
図4の正確なブロックベースのデータ405の値)、エラーが発生したときのタイムスタンプ、及びSMARTログデータ515で示されるような他のログデータと共に格納される。装置ベースのログデータ505に対する
図5に示したデータは、本発明の1つの実施形態を示す。即ち、他の実施形態は、より多いか、より少ないか、又は
図5に示したデータよりも他のデータを限定なしに含む。
【0054】
図4の正確なブロックベースのデータ405とは対照的に、装置ベースのログデータ505は、おおよその(近似的な)ブロックベースのデータを誘導するために使用される。装置ベースのログデータ505は、
図1のSSD115の最近のk個のエラーに対する情報のみを格納するため、装置ベースのログデータ505(従って、そこから誘導された近似のブロックベースのデータ)は、エラーの中のいくつかの時間的ローカリティを決定することを提供し、他のブロックよりも最近のエラーを経験したブロックを識別することを可能にする。
【0055】
最近のk個のエラーに対するデータのみが格納されるため、装置ベースのログデータ505を格納するのに要求されるオーバーヘッドは、1つのエラーについて格納されたデータのサイズを知ってから、そのデータにエラーの数を乗じて計算される。例えば、最近の100個のエラーに対するデータが格納された各エラーに対するストレージが1KBである場合に、装置ベースのログデータを格納するために必要な総ストレージは100KBである。再び、
図1のSSD115のサイズに関連して、このストレージオーバーヘッドは、
図1のSSD115のサイズのパーセントの中の小さい部分である(1TBのSSDの約10万分の1)。
【0056】
kの値は、予め設定される。その後、kの値は、
図1のSSD115のライフタイムの期間中、一定に維持される。また、kは設定可能であり、ユーザーの選好度に応じて時間がたつにつれて変更することができる。例えば、
図1のSSD115が老朽化していくに応じて、より多くのエラー情報が好ましい可能性がある。
【0057】
図6は、特定のブロックが故障すると予想されるか否かを判定するために動作する
図3の識別ファームウェア345及び検証ファームウェア350を示す図である。
図6において、識別ファームウェア345は、装置ベースのログデータ505(SMARTログデータ515を含み、
図6に詳細に図示していない)を受信する。その後、識別ファームウェア345は、それぞれの格納されたエラーが発生したブロックを識別する。最新のk個のエラーの中の特定のブロックのエラーの数があるしきい値を超えると、そのブロックは、直ぐに故障すると疑われる。従って、識別ファームウェア345は、装置ベースのログデータ505から大略的なブロックベースのデータ605を生成することができる。
【0058】
特定のブロックが直ぐに故障すると疑われるか否かを判定するために、任意の所望のしきい値が使用される。例えば、予め決定されたユーザー指定のしきい値が設定され、特定のブロックの中の最近のk個のエラーにおいてしきい値よりも多くの数のエラーが発生すると、そのブロックは、直ぐに故障すると疑われる。このしきい値は、数字(例えば、最近のk個のエラーの中の10個のエラー)又はパーセント(例えば、最近のk個のエラーの中のエラーの10%)である。このしきい値は、実際に発生したエラーの数に基づいて調整される。例えば。しきい(臨界)値が総エラー数のパーセンテージに設定されている場合、エラーの100%がそのブロックに関連付けられているため、最初のエラーが発生したブロックは自動的に疑わしいものになる。このような結果を回避するために、識別ファームウェア345は、
図1のSSD115上で発生したエラーの数が、ある他の値を超えるまで動作しない。即ち、これは、識別ファームウェア345がすごく早く故障すると疑われるブロックを識別することを防止する。
【0059】
使用可能な他のしきい値は、全体のSSDに亘ってブロック当たりのエラーの数の平均を計算するものである。即ち、発生した(SSDが製造された後)総エラー数は、計算可能であり、SSDの総ブロック数で除算される。この平均値に関連して非常に多くのエラーが発生した任意のブロックは、直ぐに故障すると疑われる。この平均のパーセンテージもまた使用される。再び、この平均(又は平均の使用)は調整される。例えば、SSDによって発生したエラーの数がSSDのブロックの数に近づくまで、シングルエラーが発生した任意のブロックは、エラーの平均数よりも多いはずであり、識別ファームウェア345によって自動的に疑わしいものとみなされる。従って、識別ファームウェア345は、エラーの数が予め設定された値を超えるまで、ブロックが直ぐに故障すると疑われるか否かを考慮することを開始しない可能性がある。代わりに、識別ファームウェア345は、(kに関して)特定のブロックから発生するエラーの相対的なパーセンテージを計算し、その値をSSD全体のブロック当たりの平均エラーの数と比較する。ブロックが平均よりももっと高いパーセンテージの最近のk個のエラーを経験すると、識別ファームウェア345は、そのブロックを直ぐに故障するブロックであると疑う。
【0060】
本発明の他の実施形態において、識別ファームウェア345は、ブロックが最近にエラーのより多くのシェアを経験したからではなく、全体のエラーカウントに基づいてブロックが故障するだろうと疑うことができる。例えば、kが100に選択されたと仮定する(即ち、装置ベースのログデータは、ひたすら最近のエラーの100個のみ格納される)。特定のブロックから50番目のエラーが毎回発生する場合は、そのブロックが最近のk個のエラーにおいて、より高いパーセンテージのエラーを有することに基づいて疑わしいと必然的に考慮されない可能性もある。但し、装置のヒストリーでは、このブロックが50個毎のエラーの中の1つがあるということは、このブロックが他のブロックよりもはるかに多くのエラーを経験したことを意味する。従って、識別ファームウェア345は、直ぐに故障するだろうと疑われるブロックを見つけるために、
図4の正確なブロックベースのデータ405を調査する。ブロックが近似的なブロックベースのデータ605に基づいたしきい値を超えていなくても、いくつかのしきい値を超えている総エラーカウントを有するブロックは、疑われると識別される。
【0061】
本発明のいくつかの実施形態において、装置ベースのログデータ505に関係なしに、識別ファームウェア345は、
図4の正確なブロックベースのデータ405を調査する。即ち、本発明のそのような実施形態で、識別ファームウェア345は、
図1のSSD115の全てのブロックの総エラーカウントを調査する。本発明の他の実施形態で、識別ファームウェア345は、最新のk個のエラーの中の1つ(又はそれ以上)を経験したブロックに対してのみ、
図4の正確なブロックベースのデータ405を調査する。即ち、本発明のこのような実施形態で、識別ファームウェア345は、装置ベースのログデータ505と共に、
図4の正確なブロックベースのデータ405を考慮する。
【0062】
使用された特定のアプローチに拘わらず、識別ファームウェア345は、特定のブロックが疑わしいと見なされるかを決定するために、2つの値を比較することにより簡単に動作することができる。このプロセスを介して疑わしいブロックを簡単に識別することができる。
【0063】
識別ファームウェア345は、任意の所望のスケジュールに基づいて動作することができる。識別ファームウェア345は、一定の時間間隔で動作することができる。例えば、1分毎に、10分毎に、又は毎日(より小さく、より大きな間隔も可能である)。代わりに、識別ファームウェア345は、特定の数のエラーが発生した後に動作することができる。例えば、全てのエラー以降、又は5回目のエラー以降に動作する(他のエラーの数も可能である)。
【0064】
識別ファームウェア345は、ブロックが疑わしいか否かを判定するために、装置ベースのログデータ505を使用するものとして説明したが、本発明の実施形態は、装置ベースのログデータ505の代わりに又は追加的に、
図4の正確なブロックベースのデータ405を使用することができる。例えば、特定のファームウェア345は、予め決められたしきい値を超える
図4のカウンター(410-1)の合算に基づいて、ブロックを疑わしいとして簡単に識別することができる。
【0065】
識別ファームウェア345が、直ぐに故障すると疑われるブロックを識別すると、検証ファームウェア350が呼び出される。検証ファームウェア350は、識別ファームウェア345によって疑わしいブロックとして識別されたブロックが、実際に直ぐに故障すると予測されるか否かを判定するために、
図4の正確なブロックベースのデータ405(具体的には、直ぐに故障すると思われるブロックに適用されるブロックのカウンター(410-1))及び大略的なブロックベースのデータ605を使用する。検証ファームウェア350は、このような決定を下すために、任意の所望のアプローチを使用する。例えば、検証ファームウェア350は、ランダムフォレスト、ロジスティック回帰、アウトライア検知、異常検知などのようなマシンラーニングベースの故障予測モデルを実施することができ、このモデルは訓練を受けることができ、予測のための情報(例えば、最適化された重み)が検証ファームウェア350に既に組み込まれている。その後、検証ファームウェア350は、識別ファームウェア345によって、直ぐに故障すると思われるブロックが、実際に直ぐに故障するだろうと予測されるか否かを示す結果610を生成する。
【0066】
図6は、識別ファームウェア345を装置ベースのログデータ505からおおよそのブロックベースのデータ605を生成するものとして図示するが、本発明の実施形態は、おおよそのブロックベースのデータ605を生成する他の構成要素を有し得る。例えば、検証ファームウェア350は、装置ベースのログデータ505を選択して、おおよそのブロックベースのデータ605そのものを生成する。
【0067】
識別ファームウェア345及び検証ファームウェア350は、異なる機能を有するという点に留意する。識別ファームウェア345は、単に直ぐに故障すると思われるブロックを識別するのみである。識別ファームウェア345は、分離されて使用される(即ち、直ぐに故障すると疑われる全てのブロックは、単純に直ぐに故障すると仮定される)。しかし、このようなアプローチは、長い間、適切に動作する多くのブロックが動作から廃棄されることを惹起する。識別ファームウェア345は、罪を犯した被疑者を逮捕する警察と類似すると考えることができる。即ち、被疑者が逮捕されたという事実が、被疑者が有罪であることを自動的に意味するものではない。
【0068】
一方、検証ファームウェア350は、有罪又は無罪の判決を返す刑事裁判と類似したものと考えることができる。検証ファームウェア350は、特定のブロックが実際に使用から廃棄されるべきかに対する最終的な判断を行う。ブロックが実際に廃棄される準備ができているかを確認するために追加の段階を使用すると、ブロックが早期に廃棄されることを防止することができる。
【0069】
ブロックを疑わしいとして識別し、ブロックが廃棄準備されたかを検証するために、どのような計算が実際に必要であるかに注目する必要がある。ブロックを疑わしいとして識別することは、しきい値に関連してそのブロックで発生したエラーの数の単純な比較を通して完了する。この計算は、通常非常に速く、遂行しやすく、ブロックが直ぐに故障すると予測され、これにより廃棄準備されたかを確認するためにブロックを分析する前に複雑な動作を要求しない。
【0070】
検証ファームウェア350は、識別ファームウェア345よりも多くの計算を含む。しかし、検証ファームウェア350は、ブロックが疑わしいとして識別された後にのみ実行される。この条件は、検証ファームウェア350が多くのブロックに対して繰り返し実行されることを防止し、これは上述したように、
図1のSSD115の利用可能な計算(computational)リソースを超過する。ブロックが廃棄されるべきか否かを決定するために集中的な計算で全てのブロックを確認し続けるよりは、個々の疑わしいブロックに対して必要に応じて検証ファームウェア350を呼び出すのがはるかに好ましい。従って、識別ファームウェア345及び検証ファームウェア350の両方の使用は、きめ細かいブロック故障予測を実現するための計算要求を課すことなく、きめ細かいブロック故障予測を提供する目的を達成する。
【0071】
図7A及び
図7Bは、本発明の一実施形態によるブロックが故障すると予想されるか否かを判定する手順のフローチャートである。
図7Aにおいて、段階705で、
図1のSSD115は、
図3のブロック325~ブロック330から発生したエラーを追跡する。段階710で、
図1のSSD115は、
図3のメタデータストレージ340に
図5の装置ベースのログデータ505を格納する。段階715で、
図1のSSD115は、最も古いエラーに対して
図5のドライブベースのログデータ505を捨てる。段階715は、破線720で示すように、捨てられる最も古いエラーに対する
図5のドライブベースのログデータ505が存在しない場合に省略される。段階725で、
図1のSSD115は、
図3のメタデータストレージ340に
図4の正確なブロックベースのデータ405を格納する。
【0072】
段階730で、
図1のSSD115は、
図6のおおよそのブロックベースのデータ605を取得する。
図6を参照して上述したように、
図6のおおよそのブロックベースのデータ605は、
図3の識別ファームウェア345、
図3の検証ファームウェア350、又は
図1のSSD115のいくつかの他の構成要素によって(例えば、
図3のSSDコントローラ310によって)取得される。
【0073】
段階735で、
図3の識別ファームウェア345は、直ぐに故障すると疑われるブロックを識別する。
図6を参照して上述したように、識別ファームウェア345は、
図6のおおよそのブロックベースのデータ605、
図5の装置ベースのログデータ505、又は他のデータを使用してブロックを識別する。段階740で、
図3の検証ファームウェア350は、疑わしいブロックが実際に故障すると予測されるか否かを検証する。
図6を参照して上述したように、
図5の検証ファームウェア350は、
図6のおおよそのブロックベースのデータ605、
図4の正確なブロックベースのデータ405、
図5の装置ベースのログデータ505を使用して、このような決定を下し、ランダムフォレストアルゴリズム、ロジスティック回帰アルゴリズム、アウトライア検知アルゴリズム、異常検知アルゴリズム、又はその他の所望のアルゴリズムを使用するマシンラーニングベースの故障予測モデルのような任意の所望のアルゴリズムを使用して、そのように決定することができる。
【0074】
段階745で、
図3の検証ファームウェア350は、疑わしいブロックが、実際に直ぐに故障すると予測されるか否かを判定する。故障すると予測される場合、段階750で、
図3の検証ファームウェア350は、疑わしいブロックを廃棄する。疑わしいブロックを廃棄するのは、ブロックに現在格納された任意の有効なデータを他のブロック(そして、そのようなデータが格納される位置を識別するテーブルをアップデートする)にコピーすることと、ブロックをマーキングして、
図1のSSD115が任意の新たなデータをそのブロックにライト(write)しないようにすることとを含む。例えば、
図5の検証ファームウェア350は、各ブロックを有効ではないデータを含むものとしてマーキングすることがあるが、あるガーベージコレクションのロジック(garbage collection logic)がガーベージコレクションに対するブロックを選択することを何らかの方法で遮断する。
【0075】
この時点で、
図3の検証ファームウェア350が疑わしいブロックを廃棄したか否かに拘わらず、制御は、複数のポイントの中のいずれかにリターンする。制御は、破線755で示すように、
図3のSSD115から発生した新たなエラーを追跡するために、段階705に戻る。また、破線760で示すように、制御は、直ぐに故障すると疑われる新たなブロックに対して
図3のSSD115をスキャンするために、段階730にリターンする。前者のアプローチは、予め定められた数のエラーが発生した後、疑わしいブロックをスキャンするシステムにおいて使用される。そして後者のアプローチは、予め定められた時間間隔が経過した後、疑わしいブロックをスキャンするシステムにおいて使用される。制御は、また完全に終わる可能性もある。
【0076】
図7A及び
図7Bにおいて、本発明のいくつかの実施形態が示される。しかし、通常の技術者(当業者)は、ブロックの順序を変更したり、ブロックを省略したり、図面に示していないリンクを含んだりすることにより、本発明の他の実施形態が可能であることを認識するだろう。フローチャートの全てのこのような変形は、明示的に記述されていてもいなくても、本発明の実施形態であると見なされる。
【0077】
本発明の実施形態は、以前の技術に比べて技術的利点を提供する。第1番目に、本発明の実施形態は、従来のシステムによって提供されていないきめ細かいブロック故障予測を可能にする。第2番目に、本発明の実施形態は、疑わしいブロックの識別及び疑わしいブロックが実際に故障すると予測されるかを検証することを区分することにより、故障するだろうと予測されるブロックの高い誤検出(false positive:フォールスポジティブ)の可能性を回避する。第3番目に、本発明の実施形態は、従来のシステムにおいて、このような予測に関連する相当な計算リソースを要求することなく、疑わしいブロックが故障すると予測されるかを検証することができる。第4番目に、本発明の実施形態は、他のブロックも故障すると予測されるか否かを判定する必要なく、特定のブロックが故障すると予測されるか否かを検証するようにして、使用される計算リソースを最小化することができる。
【0078】
以下の議論は、本発明の特定の側面が実現され得る適切なマシン、又はマシンの簡単で一般的な説明を提供することである。マシン又は複数のマシンは、少なくとも部分的にキーボード、マウスなどのような従来の入力装置の入力により制御されるだけでなく、他のマシンから受信される指示、バーチャルリアリティ(VR)環境とのインタラクション、生体認証フィードバック、又はその他の入力信号によって制御され得る。本明細書で使用されているように、「マシン」という用語は、シングルマシン、仮想マシン若しくは通信的に結合されたマシン、複数の仮想マシン、又は共に作動している装置のシステムを広く含むものと意図される。例としてのマシンは、パーソナルコンピュータ、ワークステーション(workstation)、サーバ、ポータブルコンピュータ、ハンドヘルド(handheld)装置、電話器、タブレットなどのような計算装置だけでなく、個人又は公共交通機関(例えば、自動車、電車、タクシーなど)のような運送装置を含む。
【0079】
マシン又は複数のマシンは、プログラマブル(programmable)又はノンプログラマブル(non-programmable)論理装置やアレイ、特定用途向け集積回路(ASICs)、エンベデッドコンピュータ、スマートカードなどのようなエンベデッドコントローラを含み得る。マシン又は複数のマシンは、ネットワークインターフェース、モデム、又はその他の通信結合を介したような1つ以上のリモートマシンに対する1つ以上の連結を活用することができる。マシンは、イントラネット、インターネット、ローカルエリアネットワーク、広域ネットワークなどのような物理的及び/又は論理的なネットワークを通じて相互接続することができる。通常の技術者は、ネットワーク通信が無線周波数(RF)、衛星、マイクロウェーブ、米国電気電子工学会(IEEE)802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含む、多様な有線及び/又は無線短距離或いは長距離キャリア、並びにプロトコルを活用できるという点を高く評価するだろう。
【0080】
本発明の実施形態は、機能、手順、データ構造、アプリケーションなどを含む関連データを参照するか、又はそれに関連して説明され、これはマシンによってアクセスされるときにマシンがタスク(task)を遂行するか、或いは抽象データタイプ又は低レベルのハードウェアコンテキスト(context)を定義するようにする。関連データは、例えば揮発性及び/又は非揮発性メモリ(例えば、RAM、ROMなど)、ハードドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生物学的ストレージなどを含む他のストレージ装置、並びに関連ストレージ媒体に格納され得る。関連するデータは、パケット、シリアルデータ、パラレルデータ、伝播される信号などの形態で、物理的及び/又は論理的なネットワークを含む、伝送環境を介して伝達されることがあり、圧縮又は暗号化された形態で使用され得る。関連データは、分散環境で使用され、マシンアクセスのためにローカル及び/又はリモートで格納され得る。
【0081】
本発明の実施形態は、1つ以上のプロセッサによって実行可能な命令語で構成される実在の非一時的マシンリード(read)可能な媒体を含み、命令語は、本明細書で説明した本発明の要素を遂行するための命令語を含む。
【0082】
上述した方法の多様な動作は、多様なハードウェア及び/又はソフトウェアのエレメント、回路、及び/又はモジュールのような動作を遂行する任意の適切な手段によって遂行され得る。ソフトウェアは、論理的な機能を実施するための実行可能な命令語の順序リストを含み、使用のために任意の「プロセッサ可読媒体」に実装されたり、単一若しくは複数のコアプロセッサ又はプロセッサを含むシステムのような命令語の実行システム、器具(apparatus)、又は装置に関連して実装されたりする。
【0083】
本明細書に開示した実施形態に関連して説明した方法、アルゴリズム、又は機能のブロック若しくは段階は、プロセッサによって実行されるソフトウェアモジュール、ハードウェア又はこの両方の組み合わせで直接実装され得る。ソフトウェアで実装される場合に、機能は、実在の非一時的コンピュータ読み取り可能な記録媒体に1つ以上の命令語又はコードとして格納又は伝送され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、リードオンリーメモリ(ROM)、電気的プログラマブルロム(Electrically Programmable ROM)(EPROM)、電気的イレーザブルプログラマブルロム(Electrically Erasable Programmable ROM)(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、又は当業界に公知された任意の他の形態のストレージ媒体に存在する。
【0084】
上述の実施形態を参照して説明した本発明の技術的思想の原則を有していれば、図示した実施形態は、このような原則から離れずに配列及び詳細事項で修正され、必要な任意の方法で組み合わせられることが理解されるだろう。以上の説明が具体的な実施形態に集中したが、他の構成もまた考慮される。具体的には、「本発明の実施形態による」のような説明、又はここに使用された同じようなものにも拘わらず、このようなフレーズは、一般的に実施形態の可能性を参照しており、本発明の技術的思想を具体的な実施形態の構成に限定することを意図していない。ここで使用されるように、このような用語は、他の実施形態に組み合わせ可能な同一の又は異なる実施形態を参照する。
【0085】
上述した実施形態は、本発明の技術的思想を、それらに限定するものと解釈されない。少ない実施形態だけを説明したが、この分野に熟練した者は、本明細書の新規な説明と利点から実質的に離れずに、このような実施形態に多くの修正が可能であることを十分に理解するだろう。従って、このような全ての修正は、請求項において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図される。
【0086】
本発明の実施形態は、限定なしに、次の説明に拡張される。
【0087】
ステートメント(statement)1.本発明のソリッド・ステート・ドライブ(SSD)は、複数のブロックで構成されるデータ用のフラッシュストレージと、フラッシュストレージからのデータのリード(read)及びフラッシュストレージへのデータのライト(write)を管理するコントローラと、SSD(Solid State Drive)におけるエラーに対する装置ベースのログデータを格納するメタデータストレージと、プロセッサ上で実行され、装置ベースのログデータに応答して複数のブロックの中の疑わしい(suspect)ブロックを識別するように動作する識別(identification)ファームウェアと、を備える。
【0088】
ステートメント2.本発明のSSDは、ステートメント1によるSSDを含み、メタデータストレージは、SSDにおける最近のエラーのセットのみに対する装置ベースのログデータを格納する。
【0089】
ステートメント3.本発明のSSDは、ステートメント2によるSSDを含み、新たなエラーが発生すると、装置ベースのログデータの最も古いエントリは、捨てられる。
【0090】
ステートメント4.本発明のSSDは、ステートメント2によるSSDを含み、メタデータストレージは、SSDにおけるエラーに関する正確なブロックベースのデータを格納するように更に動作し、SSDは、プロセッサ上で実行される検証(verification)ファームウェアを更に含み、検証ファームウェアは、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予想されるか否かを判定するように動作する。
【0091】
ステートメント5.本発明のSSDは、ステートメント4によるSSDを含み、検証ファームウェアは、疑わしいブロックに対してのみ実行される。
【0092】
ステートメント6.本発明のSSDは、ステートメント4によるSSDを含み、検証ファームウェアは、疑わしいブロックを除いた複数のブロックの中の任意のブロックに対して実行されない。
【0093】
ステートメント7.本発明のSSDは、ステートメント4によるSSDを含み、検証ファームウェアは、正確なブロックベースのデータ及び装置ベースのログデータに応答して疑わしいブロックを廃棄(retire)するように動作する。
【0094】
ステートメント8.本発明のSSDは、ステートメント4によるSSDを含み、正確なブロックベースのデータは、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを含む。
【0095】
ステートメント9.本発明のSSDは、ステートメント8によるSSDを含み、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターは、複数のブロックの中の各ブロックに対するリードエラーカウンター、ライトエラーカウンター、及び削除エラーカウンターを含む。
【0096】
ステートメント10.本発明のSSDは、ステートメント8によるSSDを含み、正確なブロックベースのデータは、SSDが製造された後、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを含む。
【0097】
ステートメント11.本発明のSSDは、ステートメント4によるSSDを含み、検証ファームウェアは、正確なブロックベースのデータ及び装置ベースのログデータにランダムフォレスト(Random Forest)、ロジスティック回帰(Logistic Regression)、アウトライア検知分析法(Outlier Detection analysis)、及び異常検知分析法(Anomaly Detection analysis)のいずれか1つを実装する。
【0098】
ステートメント12.本発明のSSDは、ステートメント4によるSSDを含み、識別ファームウェアは、装置ベースのログデータ及び正確なブロックベースのデータの両方に応答して複数のブロックの中の疑わしいブロックを識別するように動作する。
【0099】
ステートメント13.本発明のSSDは、ステートメント2によるSSDを含み、識別ファームウェアは、装置ベースのログデータからおおよそのブロックベースのデータを取得するように動作する。
【0100】
ステートメント14.本発明のSSDは、ステートメント13によるSSDを含み、識別ファームウェアは、装置ベースのログデータから平均ブロックベースのデータとしておおよそのブロックベースのデータを決定するように動作する。
【0101】
ステートメント15.本発明のSSDは、ステートメント2によるSSDを含み、SSDは、識別ファームウェアを定期的に実行するように動作する。
【0102】
ステートメント16.本発明のSSDは、ステートメント15によるSSDを含み、SSDは、識別ファームウェアを一定の時間間隔で実行するように動作する。
【0103】
ステートメント17.本発明のSSDは、ステートメント15によるSSDを含み、SSDは、識別ファームウェアを一定の数のエラーが発生した後に実行するように動作する。
【0104】
ステートメント18.本発明のソリッド・ステート・ドライブ(SSD)は、複数のブロックで構成されるデータ用のフラッシュストレージと、フラッシュストレージからのデータのリード(read)及びフラッシュストレージへのデータのライト(write)を管理するコントローラと、SSDにおけるエラーに対する正確なブロックベースのデータを格納するメタデータストレージと、プロセッサ上で実行され、正確なブロックベースのデータに応答して複数のブロックの中の疑わしいブロックを識別するように動作する識別ファームウェアと、を備える。
【0105】
ステートメント19.本発明のSSDは、ステートメント18によるSSDを含み、識別ファームウェアは、正確なブロックベースのデータの中の疑わしいブロックに対する総エラー数に応答して疑わしいブロックを識別するように動作する。
【0106】
ステートメント20.本発明のSSDは、ステートメント18によるSSDを含み、正確なブロックベースのデータは、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを含む。
【0107】
ステートメント21.本発明のSSDは、ステートメント20によるSSDを含み、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターは、複数のブロックの中の各ブロックに対するリードエラーカウンター、ライトエラーカウンター、及び削除エラーカウンターを含む。
【0108】
ステートメント22.本発明のSSDは、ステートメント21によるSSDを含み、識別ファームウェアは、疑わしいブロックに対するリードエラーカウンター、ライトエラーカウンター、及び削除エラーカウンターから総エラーカウントを計算するように動作して総エラーカウンターをしきい値と比較する。
【0109】
ステートメント23.本発明のSSDは、ステートメント18によるSSDを含み、SSDは、識別ファームウェアを定期的に実行するように動作する。
【0110】
ステートメント24.本発明のSSDは、ステートメント23によるSSDを含み、SSDは、識別ファームウェアを一定の時間間隔で実行するように動作する。
【0111】
ステートメント25.本発明のSSDは、ステートメント23によるSSDを含み、SSDは、識別ファームウェアを一定の数のエラーが発生した後に実行するように動作する。
【0112】
ステートメント26.本発明の方法は、複数のブロックを含むSSD(Solid State Drive)におけるエラーを追跡する段階と、SSDにおけるエラーに関する装置ベースのログデータを格納する段階と、装置ベースのログデータに応答して複数のブロックの中の疑わしいブロックを識別するための段階と、を有する。
【0113】
ステートメント27.本発明の方法は、ステートメント26による方法を含み、SSDにおけるエラーに関する装置ベースのログデータを格納する段階は、SSDにおける最近のエラーのセットのみに対する装置ベースのログデータを格納する段階を含む。
【0114】
ステートメント28.本発明の方法は、ステートメント27による方法を含み、SSDにおけるエラーに関する装置ベースのログデータを格納する段階は、SSDで新たなエラーが発生したとき、装置ベースのログデータにおける最も古いエントリを捨てる段階を更に含む。
【0115】
ステートメント29.本発明の方法は、ステートメント27による方法を含み、SSDにおけるエラーに関する正確なブロックベースのデータを格納する段階と、疑わしいブロックが識別されると、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階と、を更に含む。
【0116】
ステートメント30.本発明の方法は、ステートメント29による方法を含み、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階は、正確なブロックベースのデータ及び疑わしいブロックのみに対する装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階を含む。
【0117】
ステートメント31.本発明の方法は、ステートメント29による方法を含み、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階は、任意の他のブロックが故障すると予測されるか否かを判定しない段階を含む。
【0118】
ステートメント32.本発明の方法は、ステートメント29による方法を含み、正確なブロックベースのデータ及び装置ベースのログデータに少なくとも部分的に基づいて疑わしいブロックを廃棄(retire)する段階を更に含む。
【0119】
ステートメント33.本発明の方法は、ステートメント29による方法を含み、SSDにおけるエラーに関する正確なブロックベースのデータを格納する段階は、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを格納する段階を含む。
【0120】
ステートメント34.本発明の方法は、ステートメント33による方法を含み、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを格納する段階は、複数のブロックの中の各ブロックに対するリード(read)エラーカウンター、ライト(write)エラーカウンター、及び削除エラーカウンターを格納する段階を含む。
【0121】
ステートメント35.本発明の方法は、ステートメント33による方法を含み、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを格納する段階は、SSDが製造された後、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを格納する段階を含む。
【0122】
ステートメント36.本発明の方法は、ステートメント29による方法を含み、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階は、正確なブロックベースのデータ及び装置ベースのログデータにランダムフォレスト(Random Forest)、ロジスティック回帰(Logistic Regression)、アウトライア検知分析法(Outlier Detection analysis)、及び異常検知分析法(Anomaly Detection analysis)のいずれか1つを適用する段階を含む。
【0123】
ステートメント37.本発明の方法は、ステートメント29による方法を含み、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階は、疑わしいブロックに対する空間的ローカリティ情報に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階を含む。
【0124】
ステートメント38.本発明の方法は、ステートメント27による方法を含み、装置ベースのログデータに応答して複数のブロックの中の疑わしいブロックを識別する段階は、装置ベースのログデータからおおよそのブロックベースのデータを取得する段階を含む。
【0125】
ステートメント39.本発明の方法は、ステートメント38による方法を含み、装置ベースのログデータからおおよそのブロックベースのデータを取得する段階は、装置ベースのログデータから平均ブロックベースのデータを決定する段階を含む。
【0126】
ステートメント40.本発明の方法は、ステートメント27による方法を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階を更に含む。
【0127】
ステートメント41.本発明の方法は、ステートメント40による方法を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階は、疑わしいブロックに対する複数のブロックを一定の時間間隔で確認する段階を含む。
【0128】
ステートメント42.本発明の方法は、ステートメント40による方法を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階は、一定の数のエラーが発生した後、疑わしいブロックに対する複数のブロックを確認する段階を含む。
【0129】
ステートメント43.本発明の方法は、複数のブロックを含むSSD(Solid State Drive)におけるエラーを追跡する段階と、SSDにおけるエラーに関する正確な装置ベースのログデータを格納する段階と、正確なブロックベースのログデータに応答して複数のブロックの中の疑わしいブロックを識別する段階と、を備える。
【0130】
ステートメント44.本発明の方法は、ステートメント43による方法を含み、正確なブロックベースのデータに応答して複数のブロックの中の疑わしいブロックを識別する段階は、正確なブロックベースのデータから疑わしいブロックに対する総エラーカウントを計算する段階と、総エラーカウントをしきい値のエラーカウントと比較する段階と、を含む。
【0131】
ステートメント45.本発明の方法は、ステートメント44による方法を含み、正確なブロックベースのデータから疑わしいブロックに対する総エラーカウントを計算する段階は、正確なブロックベースのデータから疑わしいブロックに対するリード(read)エラーカウンター、ライト(write)エラーカウンター、及び削除エラーカウンターを決定する段階と、疑わしいブロックに対する総エラーカウントを計算するために、リード(read)エラーカウンター、ライト(write)エラーカウンター、及び削除エラーカウンターを合算する段階と、を含む。
【0132】
ステートメント46.本発明の方法は、ステートメント43による方法を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階を更に含む。
【0133】
ステートメント47.本発明の方法は、ステートメント46による方法を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階は、疑わしいブロックに対する複数のブロックを一定の時間間隔で確認する段階を含む。
【0134】
ステートメント48.本発明の方法は、ステートメント46による方法を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階は、一定の数のエラーが発生した後、疑わしいブロックに対する複数のブロックを確認する段階を含む。
【0135】
ステートメント49.本発明の物品は、マシンに方法を実行させる命令語が格納された非一時的ストレージ媒体を含む物品であって、命令語によりマシンによって実行される方法は、複数のブロックを含むSSD(Solid State Drive)におけるエラーを追跡する段階と、SSDにおけるエラーに関する装置ベースのログデータを格納する段階と、装置ベースのログデータに応答して複数のブロックの中の疑わしい(suspect)ブロックを識別する段階と、を有する。
【0136】
ステートメント50.本発明の物品は、ステートメント49による物品を含み、SSDにおけるエラーに関する装置ベースのログデータを格納する段階は、SSDにおける最近のエラーのセットのみに対する装置ベースのログデータを格納する段階を含む。
【0137】
ステートメント51.本発明の物品は、ステートメント50による物品を含み、SSDにおけるエラーに関する装置ベースのログデータを格納する段階は、SSDで新たなエラーが発生したとき、装置ベースのログデータにおける最も古いエントリを捨てる段階を更に含む。
【0138】
ステートメント52.本発明の物品は、ステートメント50による物品を含み、非一時的ストレージ媒体は、非一時的ストレージ媒体に格納された追加の命令語を更に含み、追加の命令語によりマシンによって実行される方法は、SSDにおけるエラーに関する正確なブロックベースのデータを格納する段階と、疑わしいブロックが識別されると、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階と、を含む。
【0139】
ステートメント53.本発明の物品は、ステートメント52による物品を含み、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階は、正確なブロックベースのデータ及び疑わしいブロックのみに対する装置ベースのデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階を含む。
【0140】
ステートメント54.本発明の物品は、ステートメント52による物品を含み、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階は、任意の他のブロックが故障すると予測されるか否かを判定しない段階を含む。
【0141】
ステートメント55.本発明の物品は、ステートメント52による物品を含み、非一時的ストレージ媒体は、非一時的ストレージ媒体に格納された追加の命令語を更に含み、追加の命令語によりマシンによって実行される方法は、正確なブロックベースのデータ及び装置ベースのログデータに少なくとも部分的に基づいて疑わしいブロックを廃棄(retire)する段階を含む。
【0142】
ステートメント56.本発明の物品は、ステートメント52による物品を含み、SSDにおけるエラーに関する正確なブロックベースのデータを格納する段階は、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを格納する段階を含む。
【0143】
ステートメント57.本発明の物品は、ステートメント56による物品を含み、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを格納する段階は、複数のブロックの中の各ブロックに対するリード(read)エラーカウンター、ライト(write)エラーカウンター、及び削除エラーカウンターを格納する段階を含む。
【0144】
ステートメント58.本発明の物品は、ステートメント56による物品を含み、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを格納する段階は、SSDが製造された後、複数のブロックの中の各ブロックに対するエラーの数に対するカウンターを格納する段階を含む。
【0145】
ステートメント59.本発明の物品は、ステートメント52による物品を含み、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階は、正確なブロックベースのデータ及び装置ベースのログデータにランダムフォレスト(Random Forest)、ロジスティック回帰(Logistic Regression)、アウトライア検知分析法(Outlier Detection analysis)、及び異常検知分析法(Anomaly Detection analysis)のいずれか1つを適用する段階を含む。
【0146】
ステートメント60.本発明の物品は、ステートメント52による物品を含み、正確なブロックベースのデータ及び装置ベースのログデータの両方に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階は、疑わしいブロックに対する空間的ローカリティ情報に応答して疑わしいブロックが故障すると予測されるか否かを判定する段階を含む。
【0147】
ステートメント61.本発明の物品は、ステートメント50による物品を含み、装置ベースのログデータに応答して複数のブロックの中の疑わしいブロックを識別する段階は、装置ベースのログデータからおおよそのブロックベースのデータを取得する段階を含む。
【0148】
ステートメント62.本発明の物品は、ステートメント61による物品を含み、装置ベースのログデータからおおよそのブロックベースのデータを取得する段階は、装置ベースのログデータから平均ブロックベースのデータを決定する段階を含む。
【0149】
ステートメント63.本発明の物品は、ステートメント50による物品を含み、非一時的ストレージ媒体は、非一時的ストレージ媒体に格納された追加の命令語を更に含み、追加の命令語によりマシンによって実行される方法は、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階を含む。
【0150】
ステートメント64.本発明の物品は、ステートメント63による物品を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階は、疑わしいブロックに対する複数のブロックを一定の時間間隔で確認する段階を含む。
【0151】
ステートメント65.本発明の物品は、ステートメント63による物品を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階は、一定の数のエラーが発生した後、疑わしいブロックに対する複数のブロックを確認する段階を含む。
【0152】
ステートメント66.本発明の物品は、マシンに方法を実行させる命令語が格納された非一時的ストレージ媒体を含む物品であって、命令語によりマシンによって実行される方法は、複数のブロックを含むSSD(Solid State Drive)におけるエラーを追跡する段階と、SSDにおけるエラーに関する正確な装置ベースのログデータを格納する段階と、正確なブロックベースのログデータに応答して複数のブロックの中の疑わしいブロックを識別する段階と、を備える。
【0153】
ステートメント67.本発明の物品は、ステートメント66による物品を含み、正確なブロックベースのデータに応答して複数のブロックの中の疑わしいブロックを識別する段階は、正確なブロックベースのデータから疑わしいブロックに対する総エラーカウントを計算する段階と、総エラーのカウントをしきい値のエラーカウントと比較する段階と、を含む。
【0154】
ステートメント68.本発明の物品は、ステートメント67による物品を含み、正確なブロックベースのデータから疑わしいブロックに対する総エラーカウントを計算する段階は、正確なブロックベースのデータから疑わしいブロックに対するリード(read)エラーカウンター、ライト(write)エラーカウンター、及び削除エラーカウンターを決定する段階と、疑わしいブロックに対する総エラーカウントを計算するために、リード(read)エラーカウンター、ライト(write)エラーカウンター、及び削除エラーカウンターを合算する段階と、を含む。
【0155】
ステートメント69.本発明の物品は、ステートメント66による物品を含み、非一時的ストレージ媒体は、非一時的ストレージ媒体に格納された追加の命令語を更に含み、追加の命令語によりマシンによって実行される方法は、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階を含む。
【0156】
ステートメント70.本発明の物品は、ステートメント69による物品を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階は、疑わしいブロックに対する複数のブロックを一定の時間間隔で確認する段階を含む。
【0157】
ステートメント71.本発明の物品は、ステートメント69による物品を含み、装置ベースのログデータに応答して複数のブロックの中の新たな疑わしいブロックを定期的に識別する段階は、一定の数のエラーが発生した後、疑わしいブロックに対する複数のブロックを確認する段階を含む。
【0158】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0159】
105 プロセッサ
110 メモリ
115 ソリッド・ステート・ドライブ(SSD)
120 マシン
125 メモリコントローラ
130 装置ドライバ
305 ホストインターフェースロジック
310 SSDコントローラ
315-1~315-4 チャンネル
320-1~320-8 フラッシュメモリチップ
325~330 ブロック
335 フラッシュ変換レイヤー
340 メタデータストレージ
345 識別ファームウェア
350 検証ファームウェア
405 (正確な)ブロックベースのデータ
410-1~410-3 カウンター
505 装置ベースのログデータ
510-1~510-3 エラー
515 SMARTログデータ
605 (近似的な)ブロックベースのデータ
610 結果