(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-01
(54)【発明の名称】書き込み回数制限による不揮発性メモリの長寿命化
(51)【国際特許分類】
G06F 11/30 20060101AFI20221124BHJP
G06F 12/00 20060101ALI20221124BHJP
【FI】
G06F11/30 155
G06F11/30 140M
G06F12/00 550Z
G06F12/00 597U
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022520486
(86)(22)【出願日】2020-09-29
(85)【翻訳文提出日】2022-05-26
(86)【国際出願番号】 US2020053211
(87)【国際公開番号】W WO2021067232
(87)【国際公開日】2021-04-08
(32)【優先日】2019-10-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】513113895
【氏名又は名称】ランディス・ギア イノベーションズ インコーポレイテッド
【氏名又は名称原語表記】LANDIS+GYR INNOVATIONS, INC.
(74)【代理人】
【識別番号】100145403
【氏名又は名称】山尾 憲人
(74)【代理人】
【識別番号】100135703
【氏名又は名称】岡部 英隆
(74)【代理人】
【識別番号】100189544
【氏名又は名称】柏原 啓伸
(72)【発明者】
【氏名】ウォルター,チャド
(72)【発明者】
【氏名】デイビス,イアン ジャクソン
(72)【発明者】
【氏名】シャック,オーガスト
【テーマコード(参考)】
5B042
5B160
【Fターム(参考)】
5B042GA34
5B042JJ29
5B042KK04
5B042MA08
5B042MA14
5B042MC25
5B160NA02
(57)【要約】
ストレージデバイスへの書き込みサイクルを制限する方法は、第1のサブシステムによって実行されるメモリへの書き込みの第1のセットの第1のカウントを追跡し、第1のカウントが第1のサブシステムの書き込み閾値を満たすことを判定することを含む。方法は、第1のカウントが第1のサブシステムの書き込み閾値を超えることに基づきブロッキング基準が第1のサブシステムによって満たされることを判定することと、ブロッキング基準がコンピューティングデバイスの第2のサブシステムによって満たされないことを判定することを含む。方法は、ブロッキング基準が第1のサブシステムによって満たされることに基づき第1のセットの書き込みがストレージデバイスに同期されることをブロックすることと、ブロッキング基準が第2のサブシステムによって満たされないことに基づき第2のサブシステムのメモリコンテンツをストレージデバイスに同期させることを含む。
【特許請求の範囲】
【請求項1】
ストレージデバイスへの書き込みサイクルを制限する方法であって、
コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの第1のセットの書き込みの第1のカウントを追跡するステップと、
前記第1のカウントが前記第1のサブシステムの書き込み閾値を満たすことを判定するステップと、
前記第1のカウントが前記第1のサブシステムの書き込み閾値を超えることに基づいて、前記第1のサブシステムによってブロッキング基準が満たされることを判定するステップと、
コンピューティングデバイスの第2のサブシステムによってブロッキング基準が満たされないことを判定するステップと、
前記ブロッキング基準が前記第1のサブシステムによって満たされることに基づいて、前記第1のセットの書き込みが前記ストレージデバイスに同期されることをブロックするステップと、及び、
前記ブロッキング基準が第2のサブシステムによって満たされないことに基づいて、第2のサブシステムのメモリコンテンツをストレージデバイスに同期させるステップと
を含む、方法。
【請求項2】
前記第1のサブシステムについて前記ブロッキング基準が満たされることを判定することは、前記第1のサブシステムが過去に前記書き込み閾値を超えたことを判定することを、更に含む、請求項1に記載の方法。
【請求項3】
前記第1のサブシステムについて前記ブロッキング基準が満たされることを判定することは、前記第1のカウントが前記書き込み閾値よりも高い第2の書き込み閾値を満たすことを判定することを、更に含む、請求項1に記載の方法。
【請求項4】
更に、
前記第1のカウントが前記書き込み閾値を満たすことに基づいて、前記第1のサブシステムのステータスをブラックリスト化に変更するステップと、及び、
前記第1のサブシステムがブラックリスト化のステータスを有する間、前記第1のサブシステムによって実行される追加の書き込みが前記ストレージデバイスに同期されるのをブロックするステップと
を含む、請求項1に記載の方法。
【請求項5】
更に、
前記第1のサブシステムが前記ブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連するリリースタイマを初期化するステップと、及び、
前記リリースタイマの期限切れに応答して、前記第1のサブシステムのステータスをブラックリスト化から変更するステップと
を含む、請求項4に記載の方法。
【請求項6】
更に、
前記第1のサブシステムが前記ブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連付けられた改善タイマを初期化するステップと、及び、
前記改善タイマの期限切れに応答して、改善アクションの少なくとも一部を実行するステップと
を含む、請求項4に記載の方法。
【請求項7】
改善タイマの期限切れに応答して、改善アクションの少なくとも一部を実行するステップは、改善タイマの期限切れに応答して、コンピューティングデバイスを再起動するステップを含む、
請求項6に記載の方法。
【請求項8】
前記改善タイマの期限切れに応答して、前記改善アクションの少なくとも一部を実行するステップは、前記改善タイマの期限切れに応答して、前記第1のサブシステムを終了させるステップを含む、
請求項6に記載の方法。
【請求項9】
更に、
前記第1のサブシステムがブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムをサスペンドするステップ
を含み、
前記改善タイマの期限切れに応答して、前記改善アクションの少なくとも一部を実行するステップは、前記改善タイマの期限切れに応答して、前記第1のサブシステムを再開するステップを含む、
請求項6に記載の方法。
【請求項10】
前記第2のサブシステムについて前記ブロッキング基準が満たされないことを判定するステップは、前記第2のサブシステムがホワイトリスト上にあることを判定するステップを含む、請求項1に記載の方法。
【請求項11】
前記第1のサブシステムは、1つまたは複数のプロセスのセットとして定義される、
請求項1に記載の方法。
【請求項12】
前記第1のサブシステムは、1つまたは複数のファイルのセットとして定義される、
請求項1に記載の方法。
【請求項13】
ストレージデバイスへの書き込みサイクルを制限するためのコンピュータプログラムプロダクトであって、該コンピュータプログラムプロダクトはプログラム命令をその上に具現化したコンピュータ可読記憶媒体を含み、プロセッサにより実行可能な該プログラム命令は該プロセッサに方法を実行させるものであり、
該方法は、
コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの第1のセットの書き込みの第1のカウントを追跡するステップと、
前記第1のカウントが前記第1のサブシステムの書き込み閾値を満たすことを判定するステップと、
前記第1のカウントが前記第1のサブシステムの書き込み閾値を超えることに基づいて、前記第1のサブシステムによってブロッキング基準が満たされることを判定するステップと、
コンピューティングデバイスの第2のサブシステムによってブロッキング基準が満たされないことを判定するステップと、
前記第1のサブシステムによって前記ブロッキング基準が満たされることに基づいて、前記第1のセットの書き込みが前記ストレージデバイスに同期されることをブロックするステップと、及び、
前記ブロッキング基準が前記第2のサブシステムによって満たされないことに基づいて、前記第2のサブシステムのメモリコンテンツを前記ストレージデバイスに同期させるステップと
を含む、コンピュータプログラムプロダクト。
【請求項14】
前記方法は、更に、
前記第1のカウントが前記書き込み閾値を満たすことに基づいて、前記第1のサブシステムのステータスをブラックリストに変更すること、および
前記第1のサブシステムが前記ブラックリストに登録されたステータスを有する間、前記第1のサブシステムによって実行される追加の書き込みが前記ストレージデバイスに同期されるのをブロックするステップと
を含む、
請求項13に記載のコンピュータプログラムプロダクト。
【請求項15】
前記方法は、更に、
前記第1のサブシステムがブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連するリリースタイマを初期化するステップと、及び、
前記リリースタイマの期限切れに応答して、前記第1のサブシステムのステータスをブラックリスト化から変更するステップと
を含む、請求項14に記載のコンピュータプログラムプロダクト。
【請求項16】
前記方法は、更に、
前記第1のサブシステムがブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連する改善タイマを初期化するステップと、及び、
前記改善タイマの期限切れに応答して、改善アクションの少なくとも一部を実行するステップと
を含む、請求項14に記載のコンピュータプログラムプロダクト。
【請求項17】
コンピューティングデバイスであって、
コンピュータ可読命令を実行するように構成されているプロセッサと、及び、
プロセッサによって実行されたときに、プロセッサに動作を実行させるコンピュータ可読命令を格納するように構成されているメモリと
を含み、
前記動作は、
コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの第1のセットの書き込みの第1のカウントを追跡するステップと、
前記第1のカウントが前記第1のサブシステムの書き込み閾値を満たすことを判定するステップと、
前記第1のカウントが前記第1のサブシステムの書き込み閾値を超えることに基づいて、前記第1のサブシステムによってブロッキング基準が満たされることを判定するステップと、
コンピューティングデバイスの第2のサブシステムによってブロッキング基準が満たされないことを判定するステップと、
前記第1のサブシステムによって前記ブロッキング基準が満たされることに基づいて、前記第1のセットの書き込みが前記ストレージデバイスに同期されることをブロックするステップと、及び、
前記第2のサブシステムによって前記ブロッキング基準が満たされないことに基づいて、前記第2のサブシステムのメモリコンテンツを前記ストレージデバイスに同期させるステップと
を含む、コンピューティングデバイス。
【請求項18】
前記動作は、更に、
前記第1のカウントが前記書き込み閾値を満たすことに基づいて、前記第1のサブシステムのステータスをブラックリスト化に変更するステップと、及び、
前記第1のサブシステムが前記ブラックリスト化のステータスを有する間、前記第1のサブシステムによって実行される追加の書き込みが前記ストレージデバイスに同期されることをブロックするステップと
を含む、請求項17に記載のコンピューティングデバイス。
【請求項19】
前記動作は、更に、
前記第1のサブシステムが前記ブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連するリリースタイマを初期化するステップと、及び、
前記リリースタイマの期限切れに応答して、前記第1のサブシステムのステータスをブラックリスト化から変更するステップと
を含む、請求項18に記載のコンピューティングデバイス。
【請求項20】
前記動作は、更に、
前記第1のサブシステムがブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連する改善タイマを初期化するステップと、及び、
前記改善タイマの期限切れに応答して、改善アクションの少なくとも一部を実行するステップと
を含む、請求項18に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本発明の様々な実装は、不揮発性メモリに関し、より詳細には、不揮発性メモリの寿命を延長するための書き込みサイクルの制限に関するものである。
【背景技術】
【0002】
背景
フラッシュストレージは、電気的に書き込みと消去が可能な不揮発性コンピュータメモリの一形態である。フラッシュストレージは、他の形態の不揮発性メモリと比較して様々な利点を有する。例えば、フラッシュストレージは、より経済的で信頼性が高く、より低い電力消費要件を有する。現在、スマートフォンやメモリースティック、デジタルオーディオプレーヤー、科学機器などに幅広く利用されている。
【発明の概要】
【0003】
概要
一実装形態では、ストレージデバイスへの書き込みサイクルを制限する方法は、コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの書き込みの第1のセットの第1のカウントを追跡し、さらに、第1のカウントが第1のサブシステムの書き込み閾値を満たすことを決定することを含む。本方法は、第1のカウントが第1のサブシステムの書き込み閾値を超えることに基づいて、ブロッキング基準が第1のサブシステムによって満たされることを判定することと、さらに、ブロッキング基準がコンピューティングデバイスの第2のサブシステムによって満たされないことを判定することとを含む。この方法は、ブロッキング基準が第1のサブシステムによって満たされることに基づいて、第1のセットの書き込みがストレージデバイスに同期されることをブロックすることと、ブロッキング基準が第2のサブシステムによって満たされないことに基づいて、第2のサブシステムのメモリコンテンツをストレージデバイスに同期させることとを含む。
【0004】
別の実施態様では、ストレージデバイスへの書き込みサイクルを制限するためのコンピュータプログラムプロダクトは、その上に具現化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含む。プログラム命令は、プロセッサにある方法を実行させるためにプロセッサによって実行可能である。本方法は、コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの書き込みの第1のセットの第1のカウントを追跡し、さらに、第1のカウントが第1のサブシステムの書き込み閾値を満たすことを決定することを含む。本方法は、第1のカウントが第1のサブシステムの書き込み閾値を超えることに基づいて、ブロッキング基準が第1のサブシステムによって満たされることを判定することと、さらに、ブロッキング基準がコンピューティングデバイスの第2のサブシステムによって満たされないことを判定することとを含む。この方法は、ブロッキング基準が第1のサブシステムによって満たされることに基づいて、第1のセットの書き込みがストレージデバイスに同期されることをブロックすることと、ブロッキング基準が第2のサブシステムによって満たされないことに基づいて、第2のサブシステムのメモリコンテンツをストレージデバイスに同期させることとを含む。
【0005】
さらに別の実施態様では、コンピューティングデバイスは、プロセッサと、メモリとを含む。プロセッサは、コンピュータ可読命令を実行するように構成され、メモリは、プロセッサによって実行されると、プロセッサに動作を実行させるコンピュータ可読命令を格納するように構成される。動作は、コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの書き込みの第1のセットの第1のカウントを追跡し、さらに、第1のカウントが第1のサブシステムの書き込み閾値を満たすことを判定することを含む。操作は、第1のカウントが第1のサブシステムの書き込み閾値を超えることに基づいて、ブロッキング基準が第1のサブシステムによって満たされることを判定することと、コンピューティングデバイスの第2のサブシステムによってブロッキング基準が満たされないことを判定することとを含む。動作は、ブロッキング基準が第1のサブシステムによって満たされることに基づいて、第1のセットの書き込みがストレージデバイスに同期されることをブロックすることと、ブロッキング基準が第2のサブシステムによって満たされないことに基づいて、第2のサブシステムのメモリコンテンツをストレージデバイスに同期させることとを含む。
【0006】
これらの例示的な態様および特徴は、現在説明されている主題を制限または定義するためではなく、本願で説明される概念の理解を助けるために例を提供するために言及されている。現在説明されている主題の他の態様、利点、および特徴は、本出願全体を検討した後に明らかになるであろう。
【図面の簡単な説明】
【0007】
本開示のこれらおよび他の特徴、態様、および利点は、以下の詳細な説明を添付図面を参照しながら読むと、よりよく理解される。
【0008】
【
図1】
図1は、本明細書に記載される発明の特定の実施態様による、ストレージデバイスの寿命を保護するためのストレージ保護システムの概念図である。
【
図2】
図2は、本発明の特定の実施態様による、ストレージ保護システムが実行可能なコンピューティングデバイス、具体的にはユーティリティメータのアーキテクチャ図である。
【
図3】
図3は、本発明の特定の実施態様による、ストレージデバイスの寿命を保護するためにストレージデバイスへの書き込みを管理するための方法のフロー図である。
【
図4】
図4は、本発明の特定の実施態様による、ストレージデバイスの寿命を保護するように、違反を犯したサブシステムのブラックリストを管理するための方法のフロー図である。
【発明を実施するための形態】
【0009】
詳細な説明
【0010】
NANDや組み込みマルチメディアコントローラ(eMMC)などのフラッシュストレージ技術を利用するデバイスは、実行された書き込みおよび消去操作(すなわち、書き込みサイクル)の累積数の関数である限られた寿命を有する。書き込みサイクルが実行されると、フラッシュストレージは老化し、フラッシュストレージに書き込まれたデータは破損してしまう。具体的には、書き込み回数が多くなると、記憶保持時間(メモリに書き込まれたデータが有効である時間)が短くなる。最終的には、フラッシュストレージのあるブロックに対して多数の書き込みサイクルが発生すると、そのブロックは保持期間が極端に短くなり、使い物にならなくなる可能性がある。この書き込みサイクルによる老化現象は、不可逆的である。デバイスの様々なアプリケーションは、通常、デバイス上の不揮発性メモリを共有する。そのため、あるアプリケーションが誤動作したり、悪意を持って多数の書き込みサイクルを実行したりすると、結果として不揮発性メモリに障害が発生し、デバイス上の他のアプリケーションに影響を与える可能性がある。このように、多数の書き込みサイクルによって引き起こされる保持力の低下は、ソフトウェアの動作によって引き起こされ得るハードウェア障害である。
【0011】
フラッシュストレージの保持期間に対する書き込みサイクルの影響により、フラッシュストレージの使用は、長期使用を意図したデバイスに組み込むことが不可能になっている。フラッシュドライブやスマートフォンなどのライフサイクルの短いデバイスは、しばしばフラッシュストレージを使用するが、何年もの寿命を意図した製品は、通常、磁気ストレージデバイスなどの他の何らかのストレージ技術を使用する。その結果、フラッシュストレージの利点は、そのようなデバイスに組み込まれず、これらのデバイスが、製造によりコストがかかるか、信頼性が低いか、またはより大きな電力要件を有するようになる方向に向かう。
【0012】
本明細書で説明する実施態様では、ストレージ保護システムは、試行された書き込みの数を追跡し、これは、完了した書き込みと本明細書で説明するようにブロックされた書き込みの両方を含むことができる。サブシステムの試行された書き込みが、過剰を表すとみなされる書き込み閾値を満たす(例えば、等しいかまたは超える)場合、ストレージ保護システムは、この過剰を改善するための措置を講じることができる。例えば、ストレージ保護システムは、サブシステムを中断または停止してもよく、またはストレージ保護システムは、デバイス全体を再起動してもよい。したがって、本明細書で説明する実装は、サブシステムの書き込みサイクルを関連する書き込み閾値に制限する。さらに、いくつかの実装では、ストレージ保護システムは、ホワイトリストおよびブラックリストを維持する。ホワイトリスト上のサブシステムは、その書き込みサイクルが制限されることを免除されてもよく、一方、ブラックリスト上のサブシステムは、それぞれの書き込み閾値を満たした履歴を有するために、より厳しい罰則の対象となりうる。このように、発生する書き込みサイクルを制限することによって、ストレージデバイスの寿命が保護され得る。
【0013】
装置のサブシステムの様々な書き込み閾値は、装置の所望の寿命に基づいて選択されてもよい。サブシステムにそのような書き込み閾値に従うか、または改善のリスクを負うことを要求することによって、ストレージ保護システムは、したがって、ストレージデバイス上で発生する書き込みサイクルを制限することができる。ストレージデバイスの寿命は書き込みサイクルの数に基づいているので、ストレージ保護システムは、このように、寿命が期待通りであることを保証し得る。その結果、デバイスの製造業者は、予測できない書き込みサイクルによってそのようなデバイスの寿命が悪影響を受けることを懸念せずにフラッシュストレージを利用することができ、また、本明細書で説明する実装は、書き込みサイクルに関して期待されるパラメータ内でデバイスが動作することを保証することができるので、その製造業者は、デバイス仕様を作成する際にそのようなデバイスの寿命をより正確に提供することができる。
【0014】
図1は、本明細書に記載される発明の特定の実施態様による、ストレージデバイス110の寿命を保護するためのストレージ保護システム100の概念図である。
図1に示すように、ストレージ保護システム100は、デスクトップコンピュータ、ノートブックコンピュータ、ユーティリティメータ、またはフラッシュストレージを利用する他のコンピューティングデバイス120に統合されてもよい。
【0015】
コンピューティングデバイス120は、処理ユニット130、メモリ140、および本明細書においてストレージ110とも呼ばれるストレージデバイス110を含んでもよい。処理ユニット130は、メモリ140またはストレージ110に格納されたプログラムコードを実行するように構成されてもよい。例えば、処理ユニット130は、マイクロプロセッサであってもよいし、処理ユニット130は、メモリ140もしくはストレージ110、またはその両方が統合されたマイクロコントローラであってもよい。メモリ140は、データを格納し、処理ユニット130によって実行されるプログラムコードを格納するように構成された、ランダムアクセスメモリ(RAM)などの揮発性メモリの一形態であってよい。ストレージ110は、データ及びプログラムコードを格納するように構成された不揮発性メモリであってもよい。例えば、ストレージ110は、NANDまたはeMMCなどのフラッシュストレージの一形態である。
【0016】
いくつかの実装では、ストレージ保護システム100は、サブシステムモニタ150およびブラックリストマネージャ160を含み、これらの各々は、コンピューティングデバイス120上で実行されてもよく、コンピューティングデバイス120と通信していてもよい。サブシステムモニタ150は、書き込み閾値のセットを利用してもよく、各書き込み閾値は、コンピューティングデバイス120の対応するサブシステム170に関連付けられる。具体的には、各書き込み閾値は、時間間隔(例えば、1時間)内に対応するサブシステム170によって実行されることを許可される書き込みサイクルの数を示すことができる。それぞれの書き込み閾値と比較した、間隔中にサブシステム170によって実行された書き込み試行に基づき、サブシステムモニタ150は、書き込み試行をブロックするか、サブシステム170をブラックリストに登録するか、または他の改善措置を実行してもよい。ブラックリストマネージャ160は、ブラックリスト180上のサブシステム170を管理してもよく、それらのサブシステム170に対して改善措置を実行してもよく、または必要に応じてブラックリスト180からそれらのサブシステム170を解放してもよい。
【0017】
サブシステム170は、例えば、コンピューティングデバイス120にインストールされたアプリケーションパッケージ、オペレーティングシステム、または共通のタスクに向けて動作する1つ以上のプロセスのセットであり得る。サブシステム170は、1つまたは複数の関連するプロセスを含むことができ、サブシステム170に関連するそれらのプロセスを通じて書き込みを実行することができる。いくつかの実装では、コンピューティングデバイス120の設計者(例えば、製造者またはサービスプロバイダ)は、サブシステム170を定義する;例えば、設計者は、どのプロセスが一緒になってサブシステム170を形成するかを定義する。設計者は、さらに、各サブシステム170に対応する書き込み閾値を決定してもよい。いくつかの実装では、違反行為(例えば、そのそれぞれの書き込み閾値を超える)を犯したサブシステム170は、停止、強制終了、または書き込みアクセスの拒否などの改善措置のリスクを負う。
【0018】
コンピューティングデバイス120の様々なサブシステム170に対する書き込み閾値を選択するために、設計者は、コンピューティングシステムに対する所望の寿命を決定することができる。ストレージ110の耐久性(すなわち、メモリブロックが使用不能になるまでの書き込みサイクル数)および所望の寿命に基づいて、設計者は、コンピューティングデバイス120が所望の寿命の間使用可能であり続けるように、その寿命を達成するための間隔(例えば、1日あたり)ごとの書き込みサイクルの総数を決定してもよい。設計者は、各そのような割り当てが書き込み閾値になるように、または書き込み閾値の基礎となるように、間隔あたりの書き込みサイクルの数をコンピューティングデバイス120に最初にインストールされた様々なサブシステム170に割り当ててもよい。各サブシステム170が、インターバルごとに同じ数の書き込みサイクルを割り当てるということは必要ない。むしろ、例えば、標準的な使用中に多くの書き込みを実行すると予想されるサブシステムが、標準的な使用中に少ない書き込みを実行すると予想されるサブシステムと比較して、間隔あたりの書き込みサイクルのより大きな部分を割り当てるように、割り当ては予想使用に基づいてもよい。
【0019】
いくつかの実装では、様々な書き込み閾値は、コンピューティングデバイス120、たとえば、ストレージ110の専用パーティションに格納されてもよい。さらに、いくつかの実装では、書き込み閾値は動的である。例えば、新しいサブシステム170がコンピューティングデバイス120に追加されたとき、または書き込み閾値の対象とならない重要なプロセスが予想以上の書き込みを実行するとき、発生したまたは発生すると予想される追加の書き込みを収容するためにコンピューティングデバイス120の種々の書き込み閾値は下方調整されてもよい。例えば、新しいサブシステム170がコンピューティングデバイスに追加されたとき、例えば、サードパーティアプリケーションがインストールされたとき、他のサブシステム170の書き込み閾値は、新しいサブシステム170のための新しい書き込み閾値の追加に対応するために下方に調整されてもよい。具体的には、いくつかの実装では、新しい書き込み閾値は、他のサブシステム170の書き込み閾値から減算された書き込み量に等しいか、さもなければ、それに基づくものであってよい。書き込み閾値が調整されるとき、書き込み閾値の格納された値は、新しい値に調整されてもよい。動的書き込み閾値の使用を通じて、コンピューティングデバイス120においてサブシステム170が変化しても、ストレージ110の寿命は保護されることが可能である。
【0020】
いくつかの実装では、ストレージ保護システム100は、ホワイトリスト190、ブラックリスト180、またはその両方を利用する。ホワイトリスト190は、以下でさらに説明するように、好まれるサブシステム170を含んでもよく、ブラックリスト180は、好まれないサブシステム170を含んでもよい。いくつかの実装では、
図1に示すように、ブラックリスト180は、ブラックリスト化されたサブシステム170への参照のセットとして実装され、ホワイトリスト190は、ホワイトリスト化されたサブシステム170への参照のセットとして実装される。
【0021】
ホワイトリスト190は、書き込み閾値なしで自由に動作することが許可されているサブシステム170、または、書き込み閾値が事実上存在しないほど高く設定されているサブシステム170を含むことができる。いくつかの実装では、サブシステム170は、設計時にホワイトリスト190に追加され、ホワイトリスト190への追加は永続的である。さらに、いくつかの実装では、ホワイトリスト190は、コンピューティングデバイス120の管理者により手動で修正され得る。ホワイトリストされたサブシステム170は、例えば、ストレージ保護システム100自体のプロセス、重要なプロセス、信頼できるプロセス、バーストで書き込みアクティビティを生成すると予想されるプロセス、またはデバッグのために利用されるプロセスなどを含むことができる。
【0022】
ブラックリスト180は、その書き込み閾値を1回以上満たすという形で違反を犯したサブシステムを含んでもよい。違反を犯した結果、およびブラックリスト180に載った結果、サブシステム170は、ストレージ保護システム100から罰則またはより厳しい要件に直面する可能性がある。例えば、ブラックリストに載ったサブシステム170は、ストレージ110への書き込みをブロックされてもよいし、以下に説明するような他の改善措置を受けてもよい。
【0023】
ブラックリスト180及びホワイトリスト190は、様々な方法で実装することができる。例えば、ブラックリスト180とホワイトリスト190のそれぞれについて、ストレージ保護システム100は、リストを表すデータ構造を維持してもよい。さらに、または代替的に、各サブシステム170は、サブシステム170がブラックリスト、ホワイトリスト、またはそのどちらでもないかを示すステータスと関連付けられる場合がある。例えば、ストレージ保護システム100は、各サブシステム170をその関連するステータスにマッピングするテーブルまたは他のデータ構造を維持してもよく、または各サブシステム170は、それぞれのステータスを表す変数を含むまたは関連付けられるデータ構造によって表現されてもよい。そのような実装では、サブシステム170がブラックリスト180上にあるか、ホワイトリスト190上にあるか、またはそのどちらでもないかを決定することは、サブシステム170に関連付けられたステータスを決定することを含んでもよい。
【0024】
いくつかの実装では、サブシステム170のステータスがブラックリストである場合、サブシステム170はブラックリスト180上にあると見なされてもよい。同様に、サブシステム170がブラックリスト180上にある場合、サブシステム170は、ブラックリストのステータスを有するとみなされてもよい。さらに、サブシステムのステータスがブラックリストに変更された場合、サブシステム170はブラックリスト180に追加されたとみなされてもよく、サブシステムのステータスがブラックリストから他のステータス(例えば、非ブラックリスト)に変更された場合、サブシステム170はブラックリスト180から削除されたとみなされてもよい。同様に、サブシステム170がブラックリスト180に追加されたときにサブシステムのステータスがブラックリストに変更されたとみなされ、サブシステム170がブラックリスト180から削除されたときにサブシステムのステータスが何らかの他のステータス(例えば、非ブラックリスト)に変更されたとみなされてもよい。同様に、サブシステム170のステータスがホワイトリストのステータスを有する場合、サブシステム170はホワイトリスト190上にあるとみなされてもよく、サブシステム170がホワイトリスト190上にある場合、そのサブシステム170はホワイトリストのステータスを有するとみなされてもよい。
【0025】
上述したように、ブラックリスト180上のサブシステム170に対して、様々な改善措置が取られてもよい。しかし、いくつかの実装では、そのような改善措置が取られる前に、ストレージ保護システム100は、どのサブシステム170が違反を犯しているかを特定しなければならない。いくつかの実装では、サブシステムモニタ150は、試みられた書き込みを監視し、違反を犯しているサブシステム170のストレージ110への書き込みアクセスをブロックし、違反を犯しているサブシステム170をブラックリスト化するように構成される。
【0026】
サブシステムモニタ150は、ハードウェア、ソフトウェア、またはその両方の組み合わせとして実装され得る。例えば、サブシステムモニタ150は、処理ユニット130によって実行されるプログラムコードとして実装されてもよく、またはサブシステムモニタ150は、専用のハードウェアデバイスとして実装されてもよい。いくつかの実装では、サブシステムモニタ150は、信頼されたステータスを有し、したがって、メモリ140への書き込みを監視し、(例えば、ストレージ110への直接書き込みをブロックすることによって、またはストレージ110へのメモリコンテンツの同期をブロックすることによって)ストレージ110への書き込みをブロックし、または(例えば、ストレージへの直接書き込みを許可することによって、またはストレージ110へのメモリコンテンツの同期を許可することによって)ストレージ110への書き込みを許容することが可能である。
【0027】
1つの実装では、サブシステムモニタ150は、メモリ140のためのドライバを含むか、またはそれにアクセスすることができる。したがって、サブシステム170がメモリ140に書き込むとき、サブシステムモニタ150は、書き込みを追跡し、書き込みをメモリ140にメモリコンテンツとして保存することを可能にし、それらのメモリコンテンツがストレージ110に同期されたかどうかを決定する。典型的には、プロセスがメモリ140にデータを書き込み、そのデータは、コンピューティングデバイス120の通常の動作においてストレージ110に同期される(すなわち、書き込まれる)。しかしながら、いくつかの実装では、サブシステムモニタ150は、メモリ140とストレージ110との間の同期を中断し、したがって、ストレージへの書き込みが実際に起こるかどうかを制御する。サブシステムモニタ150は、本開示で説明したように、サブシステム170がその書き込み閾値を満たしていない場合など、特定の条件が満たされたときに、メモリ140をストレージ110に同期させることを開始することができる。別の実装では、各サブシステム170は、データを書き込むためにアプリケーションプログラミングインターフェース(API)を利用し、APIを実装するライブラリは、書き込み動作が実行されるときにサブシステムモニタ150を呼び出す。上述したように、サブシステムモニタ150は、書き込みがメモリ140を修正することを可能にするが、ストレージ110への直接書き込みを防止してもよく、メモリ140のストレージ110への同期を防止してもよい。サブシステムモニタ150は、サブシステム170がその書き込み閾値を満たしていないときなど、書き込み条件が満たされたとき、メモリ140をストレージ110に同期させることを開始してもよいし、ストレージ110への直接書き込みを許可してもよい。
【0028】
定期的に、サブシステムモニタ150は、コンピューティングデバイス120の様々なサブシステム170がメモリ140にどのように書き込んだかを記述する書き込み統計値を決定してもよい。さらに、または代替的に、いくつかの実装では、サブシステムモニタ150は、書き込みが試みられるたびになど、書き込み統計値を連続的に更新する。これらの書き込み統計に基づき、サブシステムモニタ150は、どのサブシステム170が違反を犯したかを決定してもよい。サブシステムモニタ150は、そのようなサブシステム170がストレージ110に書き込むのをブロックして、そのサブシステム170によってメモリ140に書き込まれたメモリコンテンツがストレージ110に同期されないようにしてもよい。さらに、または代替的に、サブシステムモニタ150は、そのようなサブシステム170をブラックリスト180に追加してもよい。さらに、いくつかの実装では、サブシステムモニタ150は、デバッグまたは報告目的のためなど、様々なコンピューティングデバイス120の書き込み統計が一緒に集約または比較され得る、ヘッドエンドシステムなどの集中型ロケーションに書き込み統計を報告してもよい。
【0029】
サブシステムモニタ150は、サブシステム170が違反を犯した(例えば、その書き込み閾値を満たした)ときに、様々な改善措置を開始するように構成され得る。改善措置は、例えば、サブシステム170をブラックリスト180に追加し、サブシステム170がブラックリスト180上にある間、ストレージ110への書き込みアクセスを防止すること、違反を記録すること、1回または限定期間ベースで書き込み閾値の超過を許可すること、サブシステム170に関連するプロセスを一時的に停止すること、サブシステム170に関連するプロセスを終了すること、コンピューティングデバイス120を全体としてリセットまたは再起すること、または重要プロセスを除いてコンピューティングデバイス120内の種々のサブシステム170を終了する(すなわちセーフモードに入る)ことを含んでもよい。これらの改善措置の各々は、それぞれの利点を有する。サブシステム170の各違反において、サブシステムモニタ150は、1つまたは複数の改善アクションを開始することができる。いくつかの実装では、各サブシステム170は、改善措置の所定のセットに関連付けられ、サブシステム170が違反を犯したとき、サブシステムモニタ150は、違反に応答してその所定のセット内の各改善措置を開始してもよい。
【0030】
ストレージ110への書き込みアクセスを防止する改善措置は、サブシステム170がその書き込み閾値を超えること、またはその書き込み閾値を予め定義された程度に超えることを直接防止してもよい。書き込み閾値が満たされたときにストレージ110への書き込みを防止する結果、ストレージ保護システム100は、発生する総書き込みサイクルを制御することによって、ストレージ110の寿命を保護することができる。
【0031】
違反のログを取るという改善措置は、ストレージ保護システム100またはヘッドエンドシステムなどのリモートシステムが、書き込みの履歴を追跡することを可能にする。そのため、保護システム100、ヘッドエンドシステム、または何らかの他のシステムまたはエンティティは、コンピューティングデバイス120が異常な動作をしているかどうかを識別することができ、または異常なサブシステム170を識別することができる。
【0032】
書き込み閾値が1回限りまたは限定期間ベースで満たされることを可能にするという改善措置は、サブシステム170がそれぞれの書き込み閾値に関してある程度の余裕を持つことを可能にし得る。例えば、1回限りまたはまれなベースで書き込みのバーストを経験するサブシステム170の場合、そのようなバーストは、ストレージ110の寿命に影響を与える可能性がない場合がある。しかし、この場合、書き込み閾値を満たすことの発生を記録して、今後一定期間(例えば、サブシステム170がブラックリスト180上にある間)サブシステム170からの書き込みを防止するようにしてもよい。
【0033】
サブシステムを一時的に停止する(例えば、サブシステム170に関連するプロセスを停止する)改善措置は、サブシステム170が再開されるまで、サブシステム170が書き込みを完了するのを遅延させる。したがって、サブシステム170の書き込み速度は、サスペンド期間(すなわち、サブシステム170のサスペンドと再開の間の時間)の関数に基づいて、効果的に低減され得る。いくつかの実施形態では、サブシステム170の書き込み速度を書き込み閾値以下の許容可能なレベルまで低減することを可能にするように、懸濁期間が選択される。さらに、サブシステム170の中断および再開は、サブシステム170内のロジックに対する最小限の破壊を可能にし得る。タイミングに鈍感なサブシステム170では、中断および再開操作の特別な取り扱いは必要なく、機能性は、より遅い速度であることを除いて通常通り継続することができる場合がある。
【0034】
サブシステムを終了させる(例えば、サブシステム170に関連するプロセスを終了させる)改善措置は、少なくともサブシステム170が再起動するのにかかる時間、サブシステム170が書き込みを試みるのを停止してもよい。さらに、サブシステム170の再起動は、サブシステム170が過剰な書き込みの試みを実行する原因となっていた誤動作を修正してもよい。
【0035】
重要なプロセスを除いてコンピューティングデバイス120内の様々なサブシステム170を終了させ、したがってコンピューティングデバイス120をセーフモードに移行させるという改善措置は、そのようなサブシステム170が過剰な書き込みを実行するのを停止し得る。場合によっては、サブシステム170は互いに相互作用し、したがって、あるサブシステム170の過剰な権利は、別のサブシステム170との相互作用によって引き起こされることがある。セーフモードに入ることで、ネットワーク通信や、コンピューティングデバイス120がユーティリティメータである場合、リソースの消費量の測定など、重要なプロセスの継続が可能になる場合がある。したがって、コンピューティングデバイス120は、その重要な機能の実行を継続してもよく、デバッグ、ソフトウェア更新、または消費報告目的のために、ヘッドエンドシステムなどの外部リソースと通信することができるかもしれない。
【0036】
コンピューティングデバイス120を全体としてリセットまたは再起動する改善措置は、セーフモードに入ることと同じ利点を有するが、重要なプロセスが再起動またはリセットの間に一時的に停止されるので、潜在的により抜本的な解決策である。このより抜本的な措置は、特に、その違反が改善措置を促したサブシステム170が重要なプロセスである場合、または重要なプロセスと相互作用するサブシステム170である場合に、有用である場合がある。
【0037】
いくつかの実装では、ブラックリストマネージャ160は、ブラックリスト180上のサブシステム170を管理することができる。例えば、各サブシステム170は、リリースタイマ、改善タイマ、またはその両方などの少なくとも1つのタイマと関連付けられてもよい。各そのようなタイマは、関連するサブシステム170がブラックリスト180に追加されるときに初期化(例えば、リセット)されてもよい。ブラックリストマネージャ160は、ブラックリストに登録されたサブシステム170に関連付けられたタイマを管理してもよく、そのようなタイマの満了時にブラックリストに登録されたサブシステム170に対してアクションを実行してもよい。
【0038】
ブラックリストに登録されたサブシステム170に関連する場合、リリースタイマはリリース時間をカウントアウトしてもよく、その後、ブラックリストマネージャ160はサブシステム170をブラックリスト180からリリース(すなわち、削除)してもよい。したがって、ブラックリストマネージャ160は、関連するサブシステム170が違反のために一時的にしかブラックリストに載らないことを保証するために、リリースタイマを利用してもよい。いくつかの実装では、現在ブラックリストに載っているサブシステム170が別の違反を犯した場合、ブラックリストマネージャ160は、サブシステム170による直近の違反の後にリリース時間が経過するまでサブシステムのリリースが行われないように、リリースタイマをリセットしてもよい。このように、リリース時間は、サブシステム170がブラックリスト180から削除される後の、閾値時間として機能してもよい。
【0039】
ブラックリストに登録されたサブシステム170に関連する場合、改善タイマが改善時間をカウントアウトし、その後、ブラックリストマネージャ160は、改善措置を開始する、またはサブシステムモニタ150によって以前に開始された改善措置を終了するなどの改善措置の少なくとも一部を実行することができる。一例では、サブシステムモニタ150は、サブシステム170をブラックリスト180に追加する際に、サブシステム170を停止させる。その場合、改善タイマは、所望のサスペンド期間に等しい改善時間をカウントアウトするために使用されてもよく、その満了時に、ブラックリストマネージャ160はサブシステム170を再開することができる。別の例では、サブシステム170がブラックリストに載っているとき、ブラックリストマネージャ160は、改善時間が満了した後、サブシステム170を(例えば、サブシステム170の一部またはすべてのプロセスを打ち切ることによって)打ち切り得る。このようにして、ストレージ保護システム100は、サブシステム170が、シャットダウン前のタスクを実行することによって、または自身をシャットダウンすることによってなど、改善時間中に自身のシャットダウンに備えることができるようにすることができる。別の例では、ブラックリストマネージャ160は、改善時間が経過した後、コンピューティングデバイス120を全体として再起動してもよいし、コンピューティングデバイス120上のオペレーティングシステムをリセットしてもよい。したがって、改善タイマの使用は、コンピューティングデバイス120の様々なサブシステム170がシャットダウンの準備をすることを可能にし得る。このように、改善時間は、閾値時間として作用してもよく、その後、何らかの改善措置が実行または終了されてもよい。
【0040】
タイマは、様々な方法で実装することができる。例えば、タイマは、カウントダウンタイマとして実装されてもよい。例えば、サブシステム170がブラックリスト180上に配置されるか、または既にブラックリスト180上にある間に違反を犯した場合、カウントダウンタイマとして実装された関連する解放タイマは、解放時間を表す値で初期化されてよく、時間が経過すると下方にカウントされてよい。リリースタイマがゼロに達すると、リリースタイマおよび関連するリリース時間が満了したとみなされ、ブラックリストマネージャ160は、そのような満了に応答して、ブラックリスト180からサブシステム170を削除してもよい。別の例として、サブシステム170がブラックリスト180に置かれるとき、カウントダウンタイマとして実装される関連する改善タイマは、改善時間を表す値で初期化されてもよく、時間の経過とともに下方にカウントされてもよい。改善タイマがゼロに達すると、改善タイマおよび関連する改善時間は、期限切れとみなされてもよく、期限切れに応答して、ブラックリストマネージャ160は、(たとえば、サブシステム170を終了する、またはコンピューティングデバイス120を再起動する)改善アクションを実行してもよく、または(たとえば、中断後にサブシステム170を再開する)改善アクションを終了してもよい。
【0041】
しかしながら、いくつかの実装では、タイマは上向きにカウントされてもよい。この一例では、サブシステム170がブラックリスト180に載せられたとき、または既にブラックリスト180に載っている間に違反を犯したとき、上向きカウントタイマとして実装された関連リリースタイマは、ゼロの値で初期化されてよく、時間の経過とともにリリース時間に向かって上向きにカウントされてよい。リリースタイマがリリース時間に達すると、リリースタイマおよび関連するリリース時間は期限切れとみなされ、ブラックリストマネージャ160は、そのような期限切れに応答してブラックリスト180からサブシステム170を除去してもよい。別の例として、サブシステム170がブラックリスト180に配置されるとき、上向きカウントタイマとして実装される関連する改善タイマは、ゼロの値で初期化されてもよく、時間の経過とともに改善時間まで上向きにカウントされてもよい。改善タイマが改善時間に達すると、改善タイマおよび改善時間は期限切れとみなされ、期限切れに応答して、ブラックリストマネージャ160は改善措置を実行または結論付けてもよい。
【0042】
各タイマは、そのタイマに関連する確立された時間単位に基づいて時間をカウントしてもよい。例えば、タイマは、時間を秒単位で表してもよく、秒単位で下降または上昇をカウントしてもよい。別の例として、タイマは時間をインターバルで表してもよく、その場合、タイマはインターバルの経過に従って下降または上昇をカウントしてもよい。時間測定の様々な単位がタイマによって使用されてもよいことは理解されるであろう。
【0043】
図2は、本発明の特定の実施態様による、ストレージ保護システム100が実行可能なコンピューティングデバイス120、具体的には、ユーティリティメータ200のアーキテクチャ図である。例えば、限定するわけではないが、ユーティリティメータ200は、水道メータ、ガスメータ、または敷地220上のリソース210の消費を測定する他のタイプのメータであってもよい。この目的のために、ユーティリティメータ200は、リソース210の使用を示す信号を検出し、その信号に基づいて、敷地220上のリソース210の使用を決定する、計量エンジン205を含んでもよい。他のタイプのコンピューティングデバイス120と同様に、ユーティリティメータ200は、処理ユニット130、メモリ140、およびストレージ110を含んでもよく、これらは、システムバス230を介して互いに接続されてもよい。例えば、限定するわけではないが、メモリ140はRAMであってもよく、ストレージ110は、NANDメモリまたはeMMCなどのフラッシュストレージであってもよい。
図2にはユーティリティメータ200が示されているが、コンピューティングデバイス120はユーティリティメータ200に限定されないことは理解されよう。むしろ、例えば、コンピューティングデバイス120は、コレクタ、ゲートウェイ、またはユーティリティメータ200以外の別のコンピューティングデバイスであってもよい。
【0044】
図3は、本発明の特定の実施態様による、ストレージデバイス110の寿命を保護するためにストレージデバイス110への書き込みを管理するための方法300のフロー図である。この方法300は、コンピューティングデバイス120によって実行されてもよい。例えば、方法300は、コンピューティングデバイス120上の処理ユニット130によって実行可能な、サブシステムモニタ150に統合されたプログラムコードとして実装されてもよい。いくつかの実装では、この方法300または同様のもののインスタンスは、書き込みがサブシステム170によって試行されるたびに実行されてもよい。さらに、または代替的に、
図3には示されていないが、方法300または同様のものは、定期的に(例えば、数秒ごとに)実行されてもよい。
【0045】
方法300の最初の実行(例えば、コンピューティングデバイス120の再起動後に方法300が稼働する最初の時)の前に、コンピューティングデバイス120にインストールされた各サブシステム170に対してそれぞれの書き込み閾値が確立され得る。例えば、様々な書き込み閾値は、ストレージ110に符号化され、サブシステムモニタ150によってアクセス可能であってよい。書き込み閾値が動的である場合、書き込み閾値は必要に応じて更新されてもよく、方法300の将来の各実行では、更新された書き込み閾値が使用されてもよい。いくつかの実施形態では、時間は、それぞれ数秒のような間隔に分割され、書き込み閾値は、対応するサブシステム170が所定の間隔において書き込み閾値を満たす場合に改善のリスクを負うように、個別的に各間隔に適用される。
【0046】
いくつかの実装では、ストレージ保護システム100は、完全にメモリ140で実行され、ストレージ保護システム100を実装するプログラムコードは、方法300の実行に先立って検証され得る。そのような実装では、コンピューティングデバイス120は、方法300の最初の実行に先立って、書き込みを管理するこの方法300を実装するプログラムコードをメモリ140にロードしてもよい。
【0047】
さらに、方法300の最初の実行に先立って、サブシステムモニタ150は、ブラックリスト180を確立してもよく、これは、過去に(たとえば、それぞれの書き込み閾値を超えることによって)悪い振る舞いをしたサブシステム170のリストであってよく、したがって罰則の対象になっている。ブラックリスト180は、方法300の最初の実行が開始されたときに空であってもよいが、ブラックリスト180は、(例えば、メモリ140に)保存され、方法300の様々な実行にわたって利用されることがある。ブラックリスト180上の各サブシステム170は、リリースタイマまたは改善タイマなどの少なくとも1つのそれぞれのタイマと関連付けられてもよい。
【0048】
図3に示すように、方法300のブロック305で、サブシステムモニタ150は、書き込みの試み(すなわち、ストレージ110への書き込みの試み)を検出する。例えば、メモリ140への書き込みは、書き込まれたメモリコンテンツが典型的にはその後ストレージ110に同期されるため、書き込み試行とみなすことができる。メモリの単一のブロックに書き込む各試行は、メモリの複数のブロックに書き込む試みが複数の書き込み試行、具体的には、ブロックごとに1つの書き込み試行と見なされる場合がある。
【0049】
ブロック310において、サブシステムモニタ150は、書き込みの試みを実行したサブシステム170を識別する。どのサブシステム170が書き込みを試みたかを決定するために使用される技術は、サブシステム170がどのように定義されるかに部分的に基づいてもよい。例えば、サブシステム170がファイルのセットを含むように定義されている場合、サブシステムモニタ150は、書き込まれるファイルに基づいて書き込みの試みを実行したサブシステム170を識別してもよい。別の例として、サブシステム170がプロセスのセットを含むように定義される場合、サブシステムモニタ150は、書き込みの試みを実行するプロセスに基づいて、書き込みの試みを実行したサブシステム170を特定してもよい。
【0050】
ブロック310において、サブシステムモニタ150は、書き込み試行を実行したサブシステム170の書き込み試行を記述する統計情報を更新する。たとえば、いくつかの実装では、サブシステムモニタ150は、アクティブな間隔(すなわち、開始され、まだ終了していない間隔)中に各サブシステム170によって行われた書き込み試行のカウントを維持する。いくつかの実装では、例えば、サブシステム170の書き込み試行または書き込みサイクル(すなわち、ストレージ110に実際に同期されたメモリブロック)の全時間総数、書き込み試行のレートなど、またはアクティブインターバルにおける書き込み試行の先行インターバル(すなわち、アクティブインターバルより前に発生したインターバル)との比較など、他の統計が維持されてもよい。これらの統計は、本明細書で説明するように使用するため、およびいくつかの実装では、デバッグ、報告、または他の目的のためにログに記録されてもよい。
【0051】
いくつかの実装では、コンピューティングデバイス120は、様々なコンピューティングデバイス120を管理するための集中型ロケーションであるヘッドエンドシステムに統計情報を通信する。例えば、ヘッドエンドシステムは、様々なコンピューティングデバイス120から受信した統計を集約してもよく、追加的または代替的に、ヘッドエンドシステムは、ヘッドエンドシステムに報告する他のコンピューティングデバイス120の統計と比較して、統計に基づいてコンピューティングデバイス120が異常な態度で動作しているかどうかを識別することができる。
【0052】
判定ブロック315で、サブシステムモニタ150は、サブシステム170がブラックリスト180上にあるかどうかを決定する。サブシステム170がブラックリスト180上にある場合(すなわち、サブシステム170が以前にブラックリスト180上に置かれ、まだブラックリスト180から削除されていない場合)、ブロック320で、サブシステムモニタ150は書き込み試行をブロックする。この場合、サブシステムモニタ150は、アクティブインターバル中に発生するサブシステム170のすべての書き込み試行をブロックしてもよい。より具体的には、例えば、書き込み試行をブロックするために、サブシステムモニタ150は、コンピューティングデバイス120のカーネルが、書き込み試行中にサブシステム170が書き込んだメモリコンテンツをストレージ110に同期させることを許さない。いくつかの実装では、サブシステムモニタ150は、書き込み試行がブロックされたことをサブシステム170に通知する(例えば、サブシステム170内のプロセスに通知する)。その場合、方法300はその後終了し、サブシステム170による次の書き込み試行の際に再開することができる。
【0053】
サブシステム170がブラックリスト180上にない場合、判定ブロック325において、サブシステムモニタ150は、サブシステム170がホワイトリスト190上にあるかどうかを決定する。サブシステムがホワイトリスト190上にある場合、ブロック330において、サブシステムモニタ150は、サブシステム170がストレージ110に書き込むことを許可する。具体的には、1つの実装では、サブシステムモニタ150は書き込みプロセスを妨害しないので、カーネルがサブシステム170によって書き込まれたメモリコンテンツをストレージ110に同期させることができる。別の実装では、サブシステムモニタ150は、書き込みの試みでサブシステム170によって書き込まれたメモリコンテンツをカーネルが同期させるよう要求する。その後、方法300は終了し、サブシステム170による次の書き込み試行時に再開することができる。
【0054】
サブシステム170がブラックリスト180にもホワイトリスト190にもない場合、方法300は判定ブロック335に進む。判定ブロック335において、サブシステムモニタ150は、書き込みの試みが完了した場合(例えば、ストレージ110に同期した場合)、サブシステム170がアクティブ区間のその書き込み閾値を満たす(例えば、同等または超える)原因となるかどうかを決定する。書き込みの試みがサブシステム170にその書き込み閾値を満たさせないであろう場合、方法300はブロック340に進み、サブシステムモニタ150は、サブシステム170がストレージ110への書き込み試行を完了することを許可する。その後、方法300は終了し、サブシステム170による次の書き込み試行時に再開することができる。
【0055】
しかしながら、サブシステム170がブラックリスト180およびホワイトリスト190のいずれにもなく、書き込み試行が、サブシステム170がアクティブ間隔のその書き込み閾値を満たす原因となる場合、方法300は、ブロック345に進む。ブロック345において、これが、初期化以来(たとえば、コンピューティングデバイス120が最後に再起動してから)サブシステム170がその書き込み閾値を満たした最初の時間である場合、サブシステムモニタ150は、サブシステム170がその書き込み閾値を満たした最初の時間としてこれをログすることができる。得られたログは、デバッグ、報告、または他の目的のために使用されてもよい。いくつかの実装では、ログは、さらなる使用のために、ヘッドエンドシステムなどの集中型ロケーションに送信されてもよい。
【0056】
図3には示されていないが、いくつかの実装では、これがサブシステムのその書き込み閾値を満たす最初の時間である場合、違反は許されるかもしれない。その場合、サブシステムモニタ150は、書き込みの試みを許可してもよく、したがって、サブシステム170によって書き込まれたメモリコンテンツが、ストレージ110に同期されるようにする。しかし、
図3の例示的な方法300では、これがサブシステムの書き込み閾値を満たす最初の時間であるかどうかの判断は、ロギング目的のためだけに使用され、書き込みの試みは、以下に説明するように依然としてブロックされる可能性がある。
【0057】
いくつかの実装では、サブシステム170が過去にその書き込み閾値を満たしたかどうかにかかわらず、判定ブロック350において、サブシステムモニタ150は、書き込み試行が完了した場合、サブシステム170がアクティブインターバルの第2の書き込み閾値を満たすようになるかどうかを決定する。書き込み閾値と同様に、第2の書き込み閾値は、サブシステム170に関連付けられ、したがって、あるサブシステム170から別のサブシステムに変化してもよい。第2の書き込み閾値は、サブシステム170の書き込み閾値より高くてもよく、より具体的には、書き込み閾値に基づいてもよい。例えば、第2の書き込み閾値は、書き込み閾値の百分率であってよく、その百分率は、百分率よりも大きい。一例では、第2の書き込み閾値は、書き込み閾値の125%である。さらに、または代替的に、第2の書き込み閾値は、アクティブ間隔を含むがより長い拡張間隔に適用される。例えば、書き込み閾値が1時間の長さを有する間隔に適用される場合、第2の書き込み閾値は1日の延長された間隔に適用されてもよい。この場合、書き込みがより長い期間にわたって制限されたままである限り、第2の書き込み閾値を使用して、時折の過剰書き込みのバーストを許容することができる。
【0058】
書き込み試行が、サブシステム170に、適用可能な期間(たとえば、アクティブ間隔またはアクティブ拡張間隔)にわたってその第2の書き込み閾値を満たさせないであろう場合、ブロック355において、サブシステムモニタ150は、書き込み試行の進行を許可し、したがって、書き込み試行にサブシステム170によって書き込まれたメモリコンテンツは、ストレージ110に同期され得る。しかしながら、書き込み試行が、サブシステム170が適用可能な期間にわたってその第2の書き込み閾値を満たすことになる場合、方法300は、判定ブロック360に進む。
【0059】
いくつかの実装は、サブシステム170が、ブラックリストに載るリスクまたは書き込み試行がブロックされるリスクなしに、その書き込み閾値を少々超えることを可能にするために、上記のような第2の書き込み閾値を利用する。しかしながら、他の実装は、この第2の閾値を利用する必要がないことが理解されよう。その場合、判定ブロック350はスキップされてもよく、方法は、ブロック345から判定ブロック360に進行してもよい。
【0060】
より一般的には、ストレージ保護システム100は、サブシステム170をブラックリスト化するか、サブシステム170がストレージ110に書き込むのをブロックするか、またはその両方を行うかを決定するために、一組のブロッキング基準を利用することができる。一実装では、ブロッキング基準は、サブシステム170がその書き込み閾値を満たす場合にのみ満たされ、ブロッキング基準が満たされることに応答して、サブシステムモニタ150は、サブシステム170をブラックリスト化し、書き込み試行をブロックする。別の実装では、サブシステム170がその第2の書き込み閾値を満たす場合にのみ、ブロッキング基準が満たされ、ブロッキング基準が満たされることに応答して、サブシステムモニタ150はサブシステム170をブラックリスト化し、書き込み試行をブロックする。さらに別の実装では、ブロッキング基準は、サブシステム170が時間枠内(たとえば、1週間ごとまたはコンピューティングデバイス120が最後に再起動したときから)にその書き込み閾値を所定回数満たすか、または時間枠内にその第2の書き込み閾値を所定回数満たす場合にのみ満たされ、かかるブロッキング基準が満たされているのに応じて、サブシステムモニタはサブシステム170をブラックリストに入れ、書き込み試行をブロックする。
【0061】
判定ブロック360において、サブシステムモニタ150は、違反閾値が、現在の違反によって(すなわち、サブシステム170が書き込み閾値を超える原因となった書き込み試行によって)満たされたか否かを決定する。いくつかの実装では、違反閾値は、サブシステム170がブラックリスト180に追加される前に、ブラックリスト180上にないサブシステム170によって許容される違反の数であるか、またはそれを表す。違反閾値は、最後の1日以上、最後の1週間以上、設定された数の間隔以上、またはコンピューティングデバイス120の最後の再起動以降など、確立された時間枠に適用されてもよい。その場合、サブシステムモニタ150は、サブシステム170がその時間枠内で違反閾値を満たしたか否かを判断する。違反閾値が満たされていない(例えば、等しいかまたは超えている)と判定ブロック360で決定された場合、サブシステムモニタ150は、ブロック365で書き込み試行を許可する。そうでなければ、サブシステム170が違反閾値を満たした場合、方法300は、ブロック370に進む。
【0062】
いくつかの実装では、違反閾値は使用されない。違反閾値の欠如は、違反閾値として1の値を使用することと論理的に等価であってもよい。その場合、判定ブロック360はスキップされてもよく、方法300は判定ブロック350からブロック370まで進行してもよい。
【0063】
ブロック370において、サブシステムモニタ150は、サブシステム170をブラックリスト180に追加し、サブシステム170に関連する各タイマを初期化する。上述したように、そのようなタイマは、リリースタイマおよび改善タイマのうちの1つまたは両方を含むことができる。
【0064】
判定ブロック375において、サブシステムモニタ150は、サブシステム170の違反を処理するために、書き込み試行をブロックすることに加えて、1つ以上の改善アクションを決定する。この決定は、ストレージ保護システム100においてサブシステム170に関連する以前に確立された設定に基づくことができる。例えば、設定は、サブシステム170がブラックリストに載ったときに、サブシステム170を中断(すなわち、一時停止)すること、サブシステム170を終了(すなわち、その様々なプロセスを停止)すること、または他の何らかの改善措置を取ることを示してもよい。いくつかの実装では、各サブシステム170は、改善措置のセットと関連付けられてもよく、それは空のセットであってもよいし、サブシステム170がブラックリスト180に加えられたときにトリガされる1つまたは複数の改善措置を含んでもよい。どの改善措置を実行するかを決定するために、サブシステムモニタ150は、ストレージ保護システム100の設定をチェックして、どの改善措置がサブシステム170に関連付けられるかを決定してもよい。いくつかの実装では、サブシステムモニタ150は、設定に示された各改善措置を実行する。そのような改善措置が、単に書き込み試行をブロックする以外にサブシステム170に関連付けられていない場合、方法300は、ブロック390にスキップして進むことができる。
【0065】
図3の例では、書き込み試行をブロックする以外に、サブシステム170を一時停止することとサブシステム170を終了させることの2つの改善措置のみが利用可能である。サブシステムモニタ150がサブシステム170を終了させることを決定した場合、ブロック380において、サブシステムモニタ150は、サブシステム170を終了させる。より具体的には、サブシステム170が複数のプロセスを含む場合、サブシステムモニタ150のいくつかの実装は、書き込み試行を行ったプロセスのみを打ち切り得るが、他の実装は、サブシステム170内の複数のプロセスまたはすべてのプロセスを打ち切り得る。そのようなプロセスは互いに依存している可能性があるため、サブシステム170のすべてのプロセスを打ち切ることが有益である場合がある。その後、方法300は、ブロック390にスキップしてもよい。しかしながら、サブシステムモニタ150がサブシステム170をサスペンドすることを決定した場合、ブロック385において、サブシステムモニタ150は、サブシステム170をサスペンドする。より具体的には、サブシステム170が複数のプロセスを含む場合、いくつかの実装は、書き込み試行を行ったプロセスのみをサスペンドし、他の実装は、サブシステム170内の複数のプロセスまたはすべてのプロセスをサスペンドすることができる。そのようなプロセスは互いに依存している可能性があるため、サブシステム170のすべてのプロセスをサスペンドすることが有益である場合がある。サブシステム170をサスペンドする場合、サブシステム170は、改善時間をカウントする改善タイマと関連付けられてもよく、その満了時にサブシステム170が再開されることになる。その後、方法300は、ブロック390に進んでもよい。
【0066】
ブロック390において、サブシステムモニタ150は、書き込み試行をブロックする。言い換えれば、サブシステムモニタ150は、アクティブインターバル中にサブシステム170によって書き込まれたメモリコンテンツがストレージ110に同期されないようにブロックしてもよい。例えば、サブシステムモニタ150は、カーネルがメモリコンテンツを同期しないことを要求してもよく、またはカーネルが要求に応じてのみこの同期を実行する実装では、サブシステムモニタ150は、カーネルがメモリコンテンツを同期することを要求しないことを単に選択してもよい。いくつかの実装では、サブシステムモニタ150は、取られた任意の改善措置(例えば、停止、ブロックされた書き込み試行)をサブシステム170に通知してもよい。その後、方法300は終了し、サブシステム170による次の書き込み試行時に再開することができる。
【0067】
図4は、本発明の特定の実施態様による、ストレージデバイス110の寿命を保護するように、違反を犯したサブシステム170のブラックリスト180を管理する方法400のフロー図である。上述したように、サブシステム170は、それぞれの書き込み閾値を満たす(たとえば、等しいかまたは超える)ためなどに、ブラックリスト180に追加される場合がある。
図4の方法400または同様のものは、例えば、特定の条件が満たされたときにサブシステム170をブラックリスト180から削除することを含む、そのブラックリスト180を管理するために使用されてもよい。いくつかの実装では、
図4に示すようなブラックリスト180を管理する方法400は、
図3に示すような書き込みを管理する方法300と並行して実行されてもよい。例えばいくつかの実装では、
図4の方法400または同様の方法は、書き込みを管理する方法300によって移入されるブラックリスト180を管理するために、1秒に1回または他の何らかの周期的スケジュールで実行されてもよく、書き込みを管理する方法300は書き込み試行が発生すると実行されてもよい。
【0068】
図4の方法400は、ブラックリスト180上のサブシステム170を反復してもよい。
図4に示すように、判定ブロック405において、ブラックリストマネージャ160は、方法400の現在の実行において考慮されるべきブラックリスト180上のサブシステム170がこれ以上残っているかどうかを決定する。考慮すべきサブシステム170が残っていない場合、方法400は、ブロック410で終了してもよい。例えば、ブラックリスト180が空である場合、またはブラックリスト180のすべてのサブシステム170が既に考慮されたように1つ以上の反復が既に実行された場合、考慮すべきサブシステム170が残っていない可能性がある。
【0069】
しかしながら、1つ以上のサブシステム170が検討されるために残っている場合、ブロック415において、ブラックリストマネージャ160は、この反復で検討するサブシステム170を選択することができる。
【0070】
上述したように、各サブシステム170は、リリースタイマ、改善タイマ、またはその両方を含む少なくとも1つのタイマと関連付けられてもよい。判定ブロック420において、選択されたサブシステム170がリリースタイマを有するかどうかが決定され得る。サブシステム170がリリースタイマを有する場合、方法400は判定ブロック425に進み、そうでない場合、サブシステム170がリリースタイマを有しない場合、方法400は判定ブロック440にスキップして進む。
【0071】
サブシステム170がリリースタイマを有する場合、判定ブロック425で、ブラックリストマネージャ160は、リリースタイマが期限切れになったかどうかを決定する。いくつかの実装では、リリースタイマは、サブシステム170が違反を犯した度にリセットされており、したがって、リリースタイマは、最後の違反から関連するリリース時間が経過した後にのみ、失効している。
【0072】
リリースタイマが満了した場合、ブロック430において、ブラックリストマネージャ160は、ブラックリスト180からサブシステム170を削除し、方法400はブロック405に戻り、方法400の現在の実行において考慮すべきサブシステム170がさらに残っているかどうかを決定する。
【0073】
しかしながら、リリースタイマが満了していない場合、ブロック435において、ブラックリストマネージャ160は、方法400の現在の実行と方法400の最後の実行との間で経過した時間だけ、リリースタイマをデクリメントする。例えば、リリースタイマが時間を秒単位で維持し、方法400が1秒に1回実行される場合、リリースタイマは、経過した時間を表すために1だけデクリメントされ得る。次いで、方法400は、適用可能であれば、改善タイマを検討するために判定ブロック440に進む。
【0074】
判定ブロック440で、ブラックリストマネージャ160は、サブシステム170が改善タイマと関連付けられているかどうかを決定する。サブシステム170が改善タイマに関連付けられていない場合、方法はブロック405に戻り、検討のために任意の追加のサブシステム170が残っているかどうかを判断することができる。しかし、サブシステム170が改善タイマと関連付けられている場合、判定ブロック445で、ブラックリストマネージャ160は、改善タイマが期限切れになったかどうかを決定する。
【0075】
改善タイマが期限切れでない場合、ブロック455において、ブラックリストマネージャ160は、方法400の現在の実行と方法400の最後の実行との間に経過した時間だけ、改善タイマをデクリメントしてもよい。その後、方法400は、ブロック405に戻り、任意のサブシステム170が検討のために残っているかどうかを判断してもよい。
【0076】
しかしながら、改善タイマが期限切れになった場合、ブロック450において、ブラックリストマネージャ160は、改善タイマに関連する時限アクションを実行する。たとえば、時限アクションがサスペンドからの復帰である場合、ブラックリストマネージャ160は、サスペンドされていたサブシステム170のプロセスを再開することができる。計時されたアクションが、終了した後のサブシステム170の再スタートである場合、ブラックリストマネージャ160は、終了したサブシステム170のプロセスを再スタートさせてもよい。サブシステム170の再開または再起動の場合、ブラックリストマネージャ160は、サブシステム170をブラックリスト180から削除してもよいし、サブシステム170がリリースタイマに関連している場合、リリースタイマをリセットしてサブシステム170がブラックリスト180から削除される機会を与えるようにしてもよい。時限アクションがコンピューティングデバイス120全体の再起動である場合、ブラックリストマネージャ160は、コンピューティングデバイス120のその再起動を開始することができる。
【0077】
いくつかの実装では、コンピューティングデバイス120を再起動すると、ブラックリスト180が消去される。たとえば、ストレージ保護システム100は、揮発性であってもよいメモリ140で実行されてもよく、したがって、コンピューティングデバイス120の再起動は、メモリ140およびしたがってブラックリスト180をクリアすることができる。あるいは、ブラックリスト180がストレージ110に格納される場合、ブラックリストマネージャ160は、いくつかの実装において、コンピューティングデバイス120を再起動する前に、ブラックリスト180をクリアしてもよい。
【0078】
その後、方法400は、ブロック405に戻り、検討のためにそれ以上のサブシステム170が残っているかどうかを判断する。
【0079】
このように、本明細書で説明する実装は、サブシステム170ごとにストレージデバイス110の書き込みサイクルを制限することによって、ストレージデバイス110を保護する。様々なサブシステム170の書き込みを個別に管理することによって、ストレージ保護システム100は、あまりにも多くの書き込みを実行しているサブシステム170を特定し、そのようなサブシステムによって実行される書き込みを制限することができる。サブシステム170を個別にターゲットにすることは、場合によっては、ストレージデバイス110の寿命を経時的に維持しながら、コンピューティングデバイス120の残りの部分が通常通りに実行し続けることを可能にし得る。
【0080】
請求された主題の徹底的な理解を提供するために、多数の具体的な詳細が本明細書に記載されている。しかしながら、当業者は、請求された主題がこれらの具体的な詳細なしに実施され得ることを理解するであろう。他の例では、当業者によって知られているであろう方法、装置、又はシステムは、クレームされた主題を不明瞭にしないように、詳細には記載されていない。
【0081】
本明細書で議論される特徴は、任意の特定のハードウェアアーキテクチャまたは構成に限定されない。コンピューティングデバイスは、1つ以上の入力を条件とする結果を提供するコンポーネントの任意の好適な配置を含むことができる。好適なコンピューティング装置は、コンピューティングシステムを汎用コンピューティング装置から本主題の1つ以上の態様を実装する特殊コンピューティング装置へとプログラムまたは構成する格納ソフトウェア(すなわち、コンピュータシステムのメモリ上に格納されたコンピュータ可読命令)にアクセスする多目的マイクロプロセッサベースのコンピュータシステムを含んでいる。任意の適切なプログラミング、スクリプト、または他のタイプの言語または言語の組み合わせが、コンピューティング装置をプログラミングまたは構成する際に使用されるソフトウェアにおいて、本明細書に含まれる教示を実装するために使用されてもよい。
【0082】
本明細書に開示される方法の態様は、そのようなコンピューティングデバイスの動作において実行されてもよい。上記の例で提示されたブロックの順序は、変化させることができ、例えば、ブロックは、再順序付けされ、結合され、および/またはサブブロックに分割されることができる。特定のブロックまたはプロセスは、並行して実行することができる。
【0083】
本明細書における「に適合された」又は「に構成された」の使用は、追加のタスク又はステップを実行するように適合又は構成された装置を妨げない、開放的かつ包括的な言語として意図されている。さらに、「に基づく」の使用は、プロセス、ステップ、計算、または他の動作が、1つまたは複数の言及された条件または値に「基づく」場合、実際には、言及されたものを超える追加の条件または値に基づくことができるという意味で、開放的で包括的であることを意図している。本明細書に含まれる見出し、リスト、および番号付けは、説明を容易にするためだけのものであり、限定することを意図していない。
【0084】
本主題は、その特定の態様に関して詳細に説明されてきたが、当業者は、前述の理解を得た時点で、そのような態様に対する変更、変形、及び同等物を容易に作り出すことができることが理解されよう。したがって、本開示は、限定ではなく例示の目的で提示されており、当業者に容易に明らかになるような本主題に対する変更、変形、および/または追加を含めることを排除するものではないことを理解されたい。
【国際調査報告】