JP7291724B2 - ストレージ・ユニットのエラー・チェックを実施するときを決定するための機械学習モジュールの使用 - Google Patents

ストレージ・ユニットのエラー・チェックを実施するときを決定するための機械学習モジュールの使用 Download PDF

Info

Publication number
JP7291724B2
JP7291724B2 JP2020558575A JP2020558575A JP7291724B2 JP 7291724 B2 JP7291724 B2 JP 7291724B2 JP 2020558575 A JP2020558575 A JP 2020558575A JP 2020558575 A JP2020558575 A JP 2020558575A JP 7291724 B2 JP7291724 B2 JP 7291724B2
Authority
JP
Japan
Prior art keywords
error checking
error
output value
machine learning
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020558575A
Other languages
English (en)
Other versions
JP2021531534A (ja
Inventor
ボーリック、マシュー
ニールセン、カール、アレン
ハーディー、クリント
グプタ、ローケーシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021531534A publication Critical patent/JP2021531534A/ja
Application granted granted Critical
Publication of JP7291724B2 publication Critical patent/JP7291724B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

本発明は、ストレージ・ユニットのエラー・チェックを実施するときを決定するために機械学習モジュールを使用するためのコンピュータ・プログラム、システム、および方法に関する。
ストレージ・システムのデータ完全性を維持するために、エラー・チェック、および、エラーが検出された場合のエラー訂正動作を、データに対して実施することができる。独立ディスク冗長アレイ(RAID)のようなストレージ・アレイの場合、データ・エラーがあるか否かをチェックし、データを訂正するために使用することができるパリティ・データを保持することができる。RAIDアレイにおいて、RAIDアレイ内の複数のストレージ・デバイスにまたがって記憶されているRAIDストライプ内のすべてのブロックを読み出し、読み出されたデータをパリティ・データと比較して不一致があるか否かを判定することによって、データおよびパリティ・ブロックの完全性を検証するために、パリティ・スクラブ動作(parity scrub operation)を定期的に実施することができる。パリティ・スクラブ動作は、システム計算リソース、ならびに、ストレージ・アレイからの読み出されたデータおよびパリティ・データへの連続的なアクセスを必要とし、計算コストが高い。駆動容量が増大しているため、パリティ・スクラブのエラー・チェック動作の範囲は対応して増大しており、この結果として、RAIDアレイ内のデータへのアクセスを模索する他の動作およびアプリケーションに待ち時間遅延が発生し得る。
エラー・チェックのための1つの技法は、固定回数の書き込み動作の後にパリティ・スクラブを定期的に実施することである。重要なデータについて、システム管理者は、データ・エラーが重要なデータを通じて伝播することを回避するために、連続的なエラー訂正動作を保証するために上記固定回数を少なく設定することができる。しかしながら、これらの連続的なエラー・チェック動作は、重要なデータへのアクセスにおいて待ち時間遅延を引き起こす可能性がある。
ストレージ・ユニットにおいてエラー訂正チェックおよび動作を実施するときを決定するための改善された技法が、当該技術分野において必要とされている。
第1の実施形態は、ストレージ・ユニットのエラー・チェックを実施するときを決定するために機械学習モジュールを使用するためのコンピュータ・プログラム、システム、および方法を含む。ストレージ・ユニットを含む少なくとも1つのストレージ・デバイスの属性に関する入力が、機械学習モジュールに提供されて、出力値が生成される。エラー・チェック頻度が、出力値から決定される。ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かについて判定が行われる。エラー・チェック動作は、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すという判定に応答して実施される。
第1の態様から見ると、本発明は、ストレージ・デバイスについて記録されている現在の動作パラメータに基づいて、ストレージ・ユニットにおけるエラーの可能性を動的に決定するための機械学習モジュールおよびアルゴリズムを使用することによってエラー・チェックおよび処理を実施するときを決定するための改善されたコンピュータ技術を提供する。このように、記載されている実施形態は、ストレージ・デバイスにおける現在の動作条件を所与としたデータ・エラーの可能性があるか否かについての予測に基づくエラー・チェック動作を実施すべきである頻度を動的に決定することによって、エラー・チェック動作に対する計算およびストレージ・リソースの配分を最適化する。この動的決定は、エラー・チェックを実施する判断が、ストレージ・デバイスにおける現在の動作条件を所与としたデータ・エラーの可能性があるか否かについての予測に基づくようにする。
好ましくは、本発明は、ストレージ・ユニットがストレージ・デバイスのアレイまたは1つのストレージ・デバイスのうちの一方を含む、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、RAIDアレイなどのストレージ・デバイスのストレージ・アレイ、および、単一のストレージ・デバイスのストレージ・ユニットに対するエラー・チェック動作を最適化するように最適化技法を拡張するためのコンピュータ・プログラムを提供する。
好ましくは、本発明は、出力値を定期的に生成するために機械学習モジュールに入力を定期的に提供することを含め、ストレージ・ユニットの属性に関する入力を提供するためのコンピュータ・プログラムであって、エラー・チェック頻度を決定する動作、および、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定する動作を提供する。
好ましくは、本発明は、エラー・チェックを最適化するために、エラー・チェックが必要であるか否かを連続的に判定するために定期的に実施される、エラーの可能性の予測が存在する事例にエラー・チェックを制限するように機械学習アルゴリズムを使用して、エラー・チェックを実施するときを決定するためのコンピュータ・プログラムを提供する。これによって、エラーの可能性が低いときはチェックが実施されないため、エラー発生が増大している任意の期間がエラー・チェックおよび処理を受けることが保証され、エラー率が低い期間がエラー・チェックを受けることにならないことが保証される。
好ましくは、本発明は、出力値からエラー・チェック頻度を決定することが、書き込みの回数を出力値の関数として決定することを含む、コンピュータ・プログラム製品を提供する。エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定することは、書き込みカウンタがエラー・チェック頻度を超えるか否かを判定することを含む。エラー・チェック動作は、書き込みカウンタがエラー・チェック頻度を超えたことに応答して実施される。
好ましくは、本発明は、書き込みカウンタが、ストレージ・デバイスに関するエラー発生の可能性の決定に基づいて調整される、エラー・チェック頻度を超えるときにエラーをチェックするように最適化されているエラー・チェック動作のためのコンピュータ・プログラムを提供する。したがって、この場合、エラー・チェックと他のプロセスとの間の計算リソース配分が最適化されることを保証するために、エラーの決定された可能性に基づいて、エラー・チェックが再び実施される。
好ましくは、本発明は、エラー・チェック動作を実施する決定に応答して、書き込みカウンタをゼロにリセットするためのコンピュータ・プログラムを提供する。
好ましくは、本発明は、現在の動作条件に基づいて訓練される、上記エラー・チェック頻度率において発生するエラー・チェックを実施する次の決定を可能にするために、書き込みカウンタがリセットされる、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、出力値が、ストレージ・ユニット内にエラーが存在する可能性を示す0~1の数を含む、コンピュータ・プログラムを提供する。エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定することは、出力値が下限未満であることに応答してエラー・チェック動作を実施しないことと、出力値が上限よりも大きいことに応答してエラー・チェック動作を実施することと、出力値が下限と上限との間にあることに応答して、出力値に基づいてエラー・チェック頻度を調整することとを含む。
好ましくは、本発明は、エラーの可能性が閾値を下回ることを出力値が示すときは、他の動作に対するリソース配分を最適化するためにエラー・チェック動作が実施されず、エラーのより大きい可能性がある場合はエラー・チェック動作が実施され、エラー率が増大する可能性が高い時間の間はリソースの使用がエラー・チェックにリダイレクトされることが保証される、コンピュータ・プログラムを提供する。さらに、将来のエラー・チェック・リソースのリソース配分をさらに最適化するために、出力値に基づいてエラー・チェック頻度を調整することができる。
好ましくは、本発明は、エラー・チェック動作が、最後の固定回数の書き込みをチェックし、エラー・チェック頻度を調整することが、エラー・チェック頻度を、最後の固定書き込み回数を出力値によって除算した数に設定する、コンピュータ・プログラムを提供する。
好ましくは、本発明は、エラー・チェックの一部として計算リソースが使用されるのをさらに制限するために、制限された回数の書き込みのみがエラー・チェックを受ける、コンピュータ・プログラムを提供する。
好ましくは、本発明は、機械学習モジュールへの入力として使用される少なくとも1つのストレージの属性が、エラー・チェック動作の最後の実行中にエラー・チェック動作がエラーを検出した場合のエラー・タイプ、または、最後の実行中にエラー・チェック動作がエラーを検出しなかった場合のエラーがないという指示と、ストレージ・ユニットを含む少なくとも1つのストレージ・デバイスのタイプと、少なくとも1つのストレージ・デバイスが最初に使用されてからの使用時間と、少なくとも1つのストレージ・デバイスのファームウェア・レベルと、少なくとも1つのストレージ・デバイスにおける1秒あたりの読み出し動作と、少なくとも1つのストレージ・デバイスにおける1秒あたりの書き込み動作とのうちの少なくとも1つを含む、コンピュータ・プログラムを提供する。
好ましくは、本発明は、上記属性が、エラーの可能性を決定するために使用され、エラー・チェックを実施するときを決定する動作を最適化するために、エラー発生を予測する可能性が最も高い属性を含む、コンピュータ・プログラムを提供する。例えば、最後のエラーのエラー・タイプは、エラー・タイプが再発する可能性が高いまたは低いものである場合に、大いに予測的な値になる。使用レベルまたは時間が予測的なものであり得、例えば、より古いまたはより使用されているストレージ・デバイスが、エラーを引き起こしやすい場合がある。特定のファームウェア・レベルがより大きいエラー率と関連付けられる場合、ファームウェア・レベルは予測的なものになり得る。同じく、高い使用率の間にエラーがより頻繁に発生する可能性があるため、行われている読み出し動作および書き込み動作の回数も、大いに予測的であり得る。
好ましくは、本発明は、ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、書き込みカウンタがエラー・チェック頻度に関する条件を満たすか否かを判定することと、書き込みカウンタがエラー・チェック頻度に関する条件を満たすという判定に応答してエラー・チェック動作を実施し、書き込みカウンタをリセットすることとを行うためのコンピュータ・プログラムを提供する。
好ましくは、本発明は、エラー・チェック動作が、書き込みカウンタにおいて示される書き込みの回数がエラー頻度に等しいなど、エラー頻度の条件を満たすときに行われるようにスケジュールされる、コンピュータ・プログラムを提供する。この時点において、訂正すべきエラーがあるか否かを判定するために、エラー・チェックが実施されるべきである。
別の観点から見ると、本発明は、ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・プログラム、方法、およびシステムを提供する。機械学習モジュールを訓練するという決定が行われる。機械学習モジュールを訓練するという決定に応答して、ストレージ・ユニットの少なくとも1つのストレージ・デバイスの属性を含む入力の決定が行われる。機械学習モジュールは、エラーの検出に応答して決定されている入力からストレージ・ユニットのエラー・チェック動作を実施することを示す所望の出力値を生成するように訓練される。機械学習モジュールは、ストレージ・ユニットに関してエラー・チェック動作を実施すべきであるか否かを判定するために使用される出力値を生成するために実行される。
有利には、本発明は、機械学習モジュールが、例えば、単一のストレージ・デバイスまたはストレージ・デバイスのアレイなどの、ストレージ・ユニットにおけるエラーの可能性をより正確に予測するようにするために、ストレージ・デバイスの現在の属性に基づいて現在のエラーの可能性を反映する所望の出力値を生成するように機械学習モジュールを再訓練することによるエラー・チェックのためのコンピュータ技術を提供する。したがって、機械学習モジュールが、現在の動作条件および属性に基づいてエラーの可能性を決定する正確度が改善される。
好ましくは、本発明は、エラー・チェック動作を実施しながらエラーを検出するためのコンピュータ・プログラムであって、機械学習モジュールを訓練するという決定が、エラーの検出に応答して行われる、コンピュータ・プログラムを提供する。所望の出力値は、エラーの検出に応答して機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定される。
好ましくは、本発明は、機械学習モジュールの予測可能性が、エラーが実際に検出されたときに発生している現在の動作条件に基づいてエラーの可能性を決定するようにモジュールを再訓練することによって改善される、コンピュータ・プログラムを提供する。このように、機械学習モジュールは、実際のエラー動作条件中にエラーを予測する可能性を改善するように、リアル・タイムのエラー検出中に訓練される。
好ましくは、本発明は、固定回数のエラー・チェック動作以内にエラーが検出されなかったことを検出するためのコンピュータ・プログラムを提供する。機械学習モジュールを訓練するという決定は、固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して行われる。所望の出力値は、固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して、機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施しないことを示す出力値に設定される。
好ましくは、本発明は、機械学習モジュールの予測可能性が、エラー・チェック中にエラーが検出されなかったときに発生している現在の動作条件に基づいてエラーがない可能性を決定するようにモジュールを再訓練することによって改善される、コンピュータ・プログラムを提供する。このように、機械学習モジュールは、エラーが検出されなかったときの実際の動作条件中にエラーを予測する可能性を改善するために、エラーの可能性が低いことを示すようにリアル・タイムのエラー検出中に訓練される。
好ましくは、本発明は、機械学習モジュールを訓練することが、機械学習モジュールの出力値および所望の出力値のエラーのマージンを決定することを含む、コンピュータ・プログラムを提供する。エラーのマージンおよび入力によって、機械学習モジュール内のノードの重みおよびバイアスを訓練して所望の出力値を生成する。
好ましくは、本発明は、ストレージ・コントローラがストレージ・コントローラによって管理されるストレージ・アレイ内のストレージ・デバイスに関してエラー・チェック動作を実施すべきであるか否かを示す、ストレージ・デバイスからの入力に基づいて、ストレージ・コントローラに出力値を提供するために、機械学習モジュールが、ストレージ・コントローラによって管理されるストレージ・デバイスのストレージ・アレイからの入力から出力値を生成する、コンピュータ・プログラムを提供する。
好ましくは、本発明は、すべてのストレージ・コントローラにおいて発生しているエラーに基づいて再訓練することができる1つの機械学習モジュールによって予測を強化することによって、ネットワーク・エラー予測が改善される、コンピュータ・プログラムを提供する。したがって、ネットワーク内の任意のストレージ・コントローラにおけるエラー検出に基づく再訓練によって、ネットワーク内の任意のストレージ・コントローラに使用するときのエラーの可能性を判定する予測可能性が改善される。
好ましくは、本発明は、エラー・チェック動作から独立してフィールド・エラー(field error)を検出することをさらに含む、コンピュータ・プログラムを提供し、機械学習モジュールを訓練するという決定が、フィールド・エラーの検出に応答して行われる。所望の出力値は、エラーの検出に応答して機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定される。
好ましくは、本発明は、機械学習モジュールの予測可能性が、エラー・チェックの実行から独立して検出された、書き込みの脱落などのフィールド・エラーの検出に基づいてエラーの可能性を決定するようにモジュールを再訓練することによって改善される、コンピュータ・プログラムを提供する。このように、機械学習モジュールは、実際のエラー動作条件中にエラーを予測する可能性を改善するように、リアル・タイムの独立エラー検出中に訓練される。
別の観点から見ると、本発明は、ストレージ・ユニット内のデータをエラー・チェックするための方法であって、出力値を生成するためにストレージ・ユニットを含む少なくとも1つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供することと、出力値からエラー・チェック頻度を決定することと、ストレージ・ユニットに関するエラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定することと、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すという判定に応答してエラー・チェック動作を実施することとを含む、方法を提供する。
別の態様から見ると、本発明は、ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・システムであって、プロセッサと、実行されると動作を実施するコンピュータ可読プログラム・コードを記憶するコンピュータ可読ストレージ媒体とを備え、動作は、出力値を生成するためにストレージ・ユニットを含む少なくとも1つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供することと、出力値からエラー・チェック頻度を決定することと、ストレージ・ユニットに関するエラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定することと、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すという判定に応答してエラー・チェック動作を実施することとを含む、コンピュータ・システムを提供する。
コンピューティング環境の一実施形態を示す図である。 ストレージ・デバイス情報の一実施形態を示す図である。 エラー・チェック情報の一実施形態を示す図である。 エラー・チェック動作のために機械学習モジュールを定期的に実行する動作の一実施形態を示す図である。 書き込み要求を処理する動作の一実施形態を示す図である。 エラー・チェック動作を実施する動作の一実施形態を示す図である。 ストレージ・ユニット内のエラーの可能性を決定するように機械学習モジュールを訓練する動作の一実施形態を示す図である。 フィールド・エラー処理を実施する動作の一実施形態を示す図である。 複数のストレージ・コントローラおよびストレージ・アレイを含むコンピューティング環境の追加の実施形態を示す図である。 図1および図8の構成要素を実施することができるコンピューティング環境を示す図である。
RAIDアレイなどのストレージ・アレイ内でエラー・チェック動作を定期的に実施する従来技術のシステムは、エラー・チェックおよび処理を実施することを目的として、リソースおよびストレージアクセスをアプリケーションから外方に方向付ける。この計算リソースおよびストレージ・リソースのリダイレクトの結果として、ストレージ・アレイ内のデータにアクセスしようとするアプリケーションに対する待ち時間遅延が生じる場合がある。固定間隔をおいてエラー・チェック動作を定期的に実施する従来技術のシステムは、ストレージ・アレイ内のエラーが相対的に少数である場合に、エラー・チェックを必要以上に頻繁に実施し、したがって、待ち時間遅延を不必要に引き起こす場合がある。さらに、固定間隔をおいてエラー・チェック動作を定期的に実施することによって、ストレージ・アレイ内でより多数のエラーが発生する場合に、エラー・チェックが実施される頻度が必要とされるよりも少なくなる場合があり、結果として、システム内でデータ完全性エラーが生じる場合がある。
説明されている実施形態は、ストレージ・デバイスについて記録されている現在の動作パラメータに基づいて、ストレージ・ユニットにおけるエラーの可能性を動的に決定するための機械学習モジュールおよびアルゴリズムを使用するエラー・チェックおよび処理動作を実施するときを決定するための改善されたコンピュータ技術を提供する。機械学習モジュールは、現在の動作状態パラメータ、および、実際の受けているエラーまたはエラーがないことに関するフィードバックを使用して、ストレージ・デバイスがエラーを受けているか否かを判定する予測正確度を改善するように、連続的に再訓練することができる。このように、記載されている実施形態は、ストレージ・デバイスにおける現在の動作条件を所与としたデータ・エラーの可能性があるか否かについての予測に基づくエラー・チェック動作を実施すべきである頻度を動的に決定することによって、エラー・チェック動作に対する計算およびストレージ・リソースの配分を最適化する。
図1は、コンピューティング環境の一実施形態を示す。コンピューティング・システム100は、ストレージ・アレイ104内のストレージ・デバイス102内のデータにアクセスする。コンピューティング・システム100は、プロセッサ106と、ストレージ・アレイ104のデータをキャッシュするためのキャッシュ110を含むメモリ108とを含む。プロセッサ106は、1つまたは複数の中央処理装置(CPU)、または、単一のCPU上の複数のコアのグループを含んでもよい。キャッシュ110は、コンピューティング・システム内のプロセスによって要求されるデータをバッファリングする。代替的に、コンピューティング・システム100は、ネットワーク107を介してコンピューティング・システム100(ストレージ・コントローラ)に接続するホスト105からストレージ・アレイ104内のトラックに対する入出力(I/O)アクセス要求を処理するストレージ・コントローラを備えることができる。
メモリ108は、ストレージ・アレイ104内のトラックに対する、コンピューティング・システム100内の内部プロセスまたはホスト105あるいはその両方からのアクセス要求を管理するためのストレージ・マネージャ112をさらに含む。キャッシュ・マネージャ114が、アクセスされているトラックが、ストレージ・アレイ104から取り出すことを必要とする代わりにより高速のアクセスキャッシュ110から返されることを可能にするために、トラックに対する将来の読み出しアクセスに起因して、アクセスされているトラックをキャッシュ110内に保持する。トラックは、ボリューム、ロジックデバイスなどのような、トラックのより大きいグループ分けの一部である、トラック、ロジックブロック・アドレス(LBA)などのような、ストレージ・アレイ104内に構成される任意のデータ単位を含んでもよい。
メモリ108は、パリティまたはエラー・チェック・コード(ECC)に従ってデータが有効であることを判定するためにパリティ・チェック動作(parity check operation)またはパリティ・スクラブなどのエラー・チェック動作を実施するためのエラー・チェック・モジュール116をさらに含む。エラーが検出される場合、エラー・チェック・モジュール116は、パリティ情報を使用したデータの訂正、パリティ情報の訂正、データのフェンシング、または、ストレージ・デバイスを交換する通知の提供などの、エラー訂正動作を実施することができる。エラー・チェック・モジュール116は、ストレージ・アレイ104内のストレージ・デバイス102に関する情報を有するストレージ・デバイス情報200、および、エラー・チェック動作およびエラー処理を実施すべきであるか否かを判定するために使用されるエラー・チェック情報300を保持する。エラー・チェック・モジュール116は、ストレージ・デバイス102にパリティ・エラー(parity error)などのエラーがあるか否かを判定するためにエラー・チェック動作が実施されることを必要とするエラーが、チェックされているストレージ・デバイス102において発生している可能性を示す出力値122を生成するために、ストレージ・デバイス情報200を、入力118として機械学習モジュール120に提供することができる。
機械学習モジュール120は、ストレージ・デバイス情報200の一部を入力118として受信し、1つのストレージ・デバイスまたはストレージ・デバイス102のアレイ104を含むストレージ・ユニットにエラーがある可能性を示す、出力値122または0~1の値などの確度レベルを生成するために、決定木学習、相関ルール学習、ニューラル・ネットワーク、帰納的プログラミングロジック、サポート・ベクタ・マシン、ベイズ・モデルなどのような機械学習技法を実施することができる。
1つの実施形態において、機械学習モジュール120は、ストレージ・デバイス情報200を含む入力118に基づいて出力値122を生成するために第1の人工ニューラル・ネットワーク・プログラムの隠れ層内のノードにおける重みおよびバイアスを調整するために、誤差逆伝搬を使用して訓練される人工ニューラル・ネットワーク・プログラムを含むことができる。誤差逆伝搬は、勾配降下を使用した人工ニューラル・ネットワークの教師あり学習のためのアルゴリズムを含むことができる。人工ニューラル・ネットワークおよびエラー関数を所与として、本方法は、ニューラル・ネットワークの重みおよびバイアスに対するエラー関数の勾配を計算することができる。
ストレージ・マネージャ112、キャッシュ・マネージャ114、エラー・チェック・モジュール116、および機械学習モジュール120は、図1においては、メモリ108にロードされ、プロセッサ106によって実行されるプログラム・コードとして示されている。代替的に、それらの機能の一部またはすべては、特定用途向け集積回路(ASIC)などのシステム100内のハードウェア・デバイス内で実施されてもよく、または、別個の専用プロセッサによって実行されてもよい。
ストレージ・アレイ104は、ソリッド・ステート電子装置から構成されるソリッド・ステートストレージ・デバイス(SSD)、EEPROM(電気的消去可能プログラマブル読み出し専用メモリ)、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ(RAM)ドライブ、ストレージ・クラス・メモリ(SCM)、相変化メモリ(PCM)、抵抗変化型メモリ(RRAM)、スピン・トランスファー・トルク・メモリ(spin transfer torque memory)(STM-RAM)、導電性ブリッジングRAM(CBRAM)、磁気ハード・ディスク・ドライブ、光ディスク、テープなどのような、当該技術分野において知られている1つまたは複数のストレージ・デバイス102を含んでもよい。ストレージ・デバイス102はさらに、単純ディスク束(JBOD)、直接アクセス・ストレージ・デバイス(DASD)、独立ディスク冗長アレイ(RAID)アレイ、仮想化デバイスなどのような、デバイスのアレイに構成することができる。さらに、ストレージ・デバイスは、異なる供給元または同じ供給元からの異種のストレージ・デバイスを含んでもよい。
メモリ108は、上述したものを含む、適切な揮発性または不揮発性メモリ・デバイスを含んでもよい。
ネットワーク107は、ストレージ・エリア・ネットワーク(SAN)、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、およびイントラネットなどを含んでもよい。
RAID実施形態において、エラー・チェック動作は、エラー・チェック・モジュール116が、ストレージ・デバイス102内に構成されているRAIDアレイのRAIDストライプ内のブロックを読み出し、パリティ・ブロック内のパリティ・データを使用して、書き込みの脱落、メディア・エラー、チェック・サム・エラー、パリティの一貫性などのようなエラーを識別する、パリティ・スクラブを含むことができる。
図1においては、機械学習モジュール120は、エラー・チェック・モジュール116とは別個に示されている。さらなる実施形態において、機械学習モジュール120のいくつかまたはすべての構成要素は、エラー・チェック・モジュール116の一部であってもよい。
図2は、ストレージ・デバイス102iのストレージ・デバイス情報200iのインスタンスの一実施形態を示し、ストレージ・デバイス102iのストレージ・デバイス識別子(ID)202と、エラーがないこと、または、リンク・エラー、ハードウェア・エラー、リンクの脱落を示すエキスパンダ・エラー、書き込みの脱落、電力エラーなどのようなエラーのタイプを示すことができる、エラー・チェック・モジュール116が最後にエラー・チェック動作を実施した結果などの最後のエラー・チェック結果204と、ストレージ・デバイス202の製造元206と、例えば損耗など、最初に使用されてからの時間として測定されてもよく、または、行われた書き込みの回数によって測定されてもよい使用時間208と、ストレージ・デバイス202のファームウェア・レベル210と、ストレージ・デバイス202において追跡される最後の数回の書き込み(N)について測定される1秒あたりの読み出し動作(「OPS」)率212と、ストレージ・デバイス202において追跡される最後の数回の書き込み(N)について測定される1秒あたりの書き込み動作率214とを含む。ストレージ・デバイス情報200iは、202、206、210などの静的情報、ならびに、ブロック204、208、212、および214内などの、連続的に更新され得る動的情報を含む。例えば、最後のエラー・チェック結果204は、ストレージ・デバイス102iにおいてエラー・チェック動作が実施される度に更新されてもよく、1秒あたりの読み出し動作212および書き込み動作214ならびに使用時間208は、1回または複数回の読み出し/書き込み動作の後に更新されてもよい。
図3は、例えば、RAIDランクIDまたはストレージ・デバイスID102iなどのストレージ・ユニットID302と、ストレージ・ユニット302に関する最後のエラー・チェック動作から行われた書き込みの回数を示す書き込みカウンタ304と、ストレージ・ユニット302におけるエラー・チェック動作が実施される前に行われなければならない書き込みの回数を示すエラー・チェック頻度306と、ストレージ・ユニット302について機械学習モジュール120によって計算される最後の出力値308と、エラーが検出されることなくストレージ・ユニット302において行われたエラー・チェック動作の回数を示すエラー・チェック・カウンタ310とを含む、ストレージ・デバイス102のRAIDランクまたは1つのストレージ・デバイス102iなどのストレージ・ユニットについて保持されているエラー・チェック情報300iのインスタンスを示す。
図3の実施形態によれば、エラー・チェック情報300iのインスタンスは、ストレージ・デバイス102iの各々について保持され得、すなわち、ストレージ・デバイス特有のエラー・チェック情報であり得、または、書き込みが複数のストレージ・デバイスにまたがってデータをストライプする、RAIDランクなどのストレージ・ユニット内のすべてのストレージ・デバイスについて保持され得る。
図4は、エラー・チェック動作を実施しまたはエラー・チェック頻度306を調整すべきであるか否かを決定するために機械学習モジュール120を定期的に実行するために、エラー・チェック・モジュール116または機械学習モジュール120あるいはその両方によって実施される動作の一実施形態を示す。機械学習モジュール120は、ある時間間隔をおいて定期的にまたはイベントに応答して実行されてもよい。機械学習モジュール120は、ストレージ・デバイス102の各々について、または、RAIDランク(もしくは他のタイプのストレージ・アレイ)内のすべてのストレージ・デバイス102について訓練するためにRAIDランクについて、別個に呼び出すことができる。1つのストレージ・デバイス102iまたは複数のストレージ・デバイス102のRAIDランクもしくはストレージ・アレイを含んでもよいストレージ・ユニットについて機械学習モジュール120が呼び出されると(ブロック400において)、入力118が、ストレージ・ユニットを含む1つまたは複数のストレージ・デバイス102iのストレージ・デバイス情報200iから決定される(ブロック402において)。エラー・チェック情報300iが個々のストレージ・デバイス102iについて提供される実施形態において、機械学習モジュール120は、入力118として、1つのみのストレージ・デバイス102iのストレージ・デバイス情報200iを受信することができる。エラー・チェック情報300iがストレージ・デバイスのRAIDランクについて提供される実施形態において、機械学習モジュール120は、入力118として、RAIDランク内のすべてのストレージ・デバイス102のストレージ・デバイス情報200iを受信することができる。
機械学習モジュール120は、ストレージ・ユニット(すなわち、ストレージ・デバイスまたはストレージ/RAIDアレイ)においてエラーが発生している可能性を示す出力値122を生成するために決定されている入力118によって呼び出される(ブロック404において)。1つの実施形態において、出力値122は、0~1であってもよく、0により近い値は、ストレージ・ユニットにおいてエラーが発生している可能性がより低いことを示し、1により近い値は、ストレージ・ユニットにおいてエラーが発生している可能性がより高いことを示す。
(ブロック406において)出力値が下限未満である場合、これはデータ・エラーの可能性が低いことを示し得、制御は終了する。(ブロック406のいいえ分岐から)出力値が下限よりも高いが(ブロック408のいいえ分岐から)上限未満である場合、ストレージ・ユニットのエラー・チェック頻度306を、出力値に基づいて調整することができる(ブロック410において)。1つの実施形態において、エラー・チェック頻度306は、エラー・チェック頻度306を、エラー・チェックのための最後の固定書き込み回数(N)を出力値によって除算した数に設定することによって、調整することができる。代替的な実施形態において、エラー・チェック頻度306を調整するために、他の計算および変数が、出力値とともに考慮されてもよい。(ブロック408において)出力値が上限よりも大きい場合、これはストレージ・ユニットにおけるエラーの可能性がより高いことを示し、制御は(ブロック412において)図6に進み、例えばパリティ・チェックなどのエラー・チェック動作を、例えば1つのストレージ・デバイスまたはストレージ・デバイス102のランクなどのストレージ・ユニットにおける最後のN回の書き込みに関して実施する。
図4の実施形態によれば、機械学習モジュール120は、ストレージ・ユニット内の1つまたは複数のストレージ・デバイスの実際の動作条件に基づいて、ストレージ・ユニット内にエラーがある可能性を決定するために実行される。この可能性は、エラーの可能性が、ストレージ・デバイス102における現在の動作条件、ならびに、ストレージ・デバイス102のそのような動作条件をエラーの可能性に関係付ける統計および確率モデルに基づいて決定されるようにする訓練された機械学習アルゴリズムに基づく。このように、エラー・チェック頻度の決定は、ストレージ・ユニットにおけるエラーの可能性がより大きい場合にエラー・チェック頻度306が増大され、すなわち、書き込み回数の頻度が低減され、ストレージ・ユニットにおけるエラーの可能性がより少ない場合にエラー・チェック頻度306が低減される、すなわち、書き込み回数の頻度が増大されるように、エラーの可能性に基づいて調整される。RAIDアレイストレージ・ユニットに対するパリティ・スクラブなどのエラー・チェック動作は、相当の処理リソースを消費し、他の動作における待ち時間を引き起こす場合があるため、実際のエラー条件に基づいてエラー・チェック頻度を調整することによって、システム・リソースの配分が改善する。エラーの可能性が低い場合、エラー・チェック頻度を低減してエラー・チェック動作の回数を低減することができ、したがって、リソースが解放されて他の動作の待ち時間が低減する。一方、エラーの可能性がより高い場合、データ・エラーを補正する利点の重要性が、他の動作の待ち時間が増大する悪影響を埋め合わせるため、エラー・チェック頻度が増大され得る。このように、エラー・チェック頻度を調整するために機械学習モジュール120を使用することによって、エラー・チェックと他の動作との間のリソースの配分が最適化される。
図5は、ストレージ・ユニット(ストレージ・デバイスまたはストレージ・デバイスのRAIDランク)に対する書き込み要求を処理するためにストレージ・マネージャ112によって実施される動作の一実施形態を示す。書き込み要求が受信されると(ブロック502において)、書き込み要求が、ストレージ・デバイス102iに書き込まれるか、または、ストレージ・デバイス102のランクにまたがってストライプされるなど、処理される(ブロック504において)。ストレージ・ユニットの書き込みカウンタ304が増分され(ブロック506において)、ストレージ・ユニット内の1つまたは複数のストレージ・デバイスのストレージ・デバイス情報200iが、フィールド208、212、214内などで更新される(ブロック508において)。(ブロック510において)書き込みカウンタ304がエラー・チェック頻度306以上である場合、書き込みカウンタ304がリセットされ(ブロック512において)、制御は(ブロック514において)図6に進み、例えばパリティ・チェックなどのエラー・チェック動作を、例えば1つのストレージ・デバイスまたはストレージ・デバイス102のランクなどのストレージ・ユニットにおける最後のN回の書き込みに関して実施する。(ブロック510において)書き込みカウンタがエラー・チェック頻度306未満である場合、制御は終了する。
図5において、エラー・チェックすべきか否かの決定は、書き込みカウンタ304がエラー・チェック頻度306よりも大きいかまたは小さいかに基づく。代替的な実施形態において、他の条件または書き込みカウンタ304とエラー・チェック頻度306との間の関係が、エラー・チェックすべきか否かの決定に使用されてもよい。
図5の実施形態によれば、エラー・チェック動作は、書き込みカウンタが、ストレージ・デバイスに関するエラー発生の可能性の決定に基づいて調整される、エラー・チェック頻度306を超えるときにエラーをチェックするように最適化される。
図6は、機械学習モジュール120が高い出力値122を生成するときに図4のブロック412において呼び出され得、および、書き込みカウンタ304がエラー・チェック頻度306を超える場合に図5のブロック514において呼び出され得るエラー・チェック・モジュール116によって実施されるエラー・チェック動作の一実施形態を示す。(ブロック600において)エラー・チェック動作が開始されると、エラー・チェック・カウンタ310が増分され(ブロック602において)、ストレージ・ユニット(1つまたは複数のストレージ・デバイス102)に対する最後の固定回数の書き込み(N)に対してエラー・チェック動作が実施される(ブロック604において)。エラー・チェック動作は、パリティ・チェックまたはエラー訂正コード・チェック動作を含むことができる。(ブロック606において)エラーが検出された場合、エラーのない連続するエラー・チェック動作の回数を示すエラー・チェック・カウンタ310がリセットされる(ブロック608において)。エラー・チェック・モジュール116は、チェックされる最後のN回の書き込みのデータまたはパリティ情報あるいはその両方のエラーを訂正するためにエラー処理動作を実施する(ブロック610において)。エラー処理は、パリティ情報から最後のN回の書き込みにおけるデータを訂正し、または、データからパリティ情報を訂正することができる。エラー処理を実施した後、制御は(ブロック612において)図7に進み、例えば、1の所望の出力値など、エラー・チェック動作を実施すべきであることを示す最高の出力値を含む所望の出力値を有するストレージ・ユニット(エラーを有するデバイスまたはストレージ・デバイスのランク)のために機械学習モジュール120を訓練する。
(ブロック606において)エラーが検出されなかった場合、エラーのない連続するエラー・チェック動作の回数を示すエラー・チェック・カウンタ310が増分される(ブロック614において)。エラー・チェック・カウンタ310がエラー・チェック動作のエラーなし閾値数以上であるか否かの判定が行われる(ブロック616において)。(ブロック616において)エラー・チェック・カウンタがエラーなし閾値を超えた場合、すなわち、エラーが検出されない閾回数のエラー・チェック動作が行われた場合、エラー・チェック・カウンタ318がリセットされ(ブロック618において)、制御は図7に進み(ブロック620において)、0.001などの、エラー・チェック動作を実施すべきでないことを示す低閾値を含む所望の出力値を有するストレージ・ユニット(エラーを有するデバイスまたはストレージ・デバイスのランク)のために機械学習モジュール120を訓練する。(ブロック616において)エラー・チェック・カウンタ310がエラーなし閾値を超えない場合、出力値を下方調整するのを許容するのに十分な数のエラーのないエラー・チェック動作がなかったため、出力値を低減するように機械学習モジュール120を再訓練することなく、制御は終了する。
図6の実施形態によれば、エラー・チェックを実施した後、機械学習モジュール120は、同様の動作条件が将来において生じるときに機械学習モジュール120がエラーを正確に予測することができる可能性を増大させるために、エラーをもたらしたストレージ・ユニットにおける現在の動作の動作条件からエラーの高い可能性を示す出力値を生成するように訓練される。同様に、所定回数のエラー・チェック動作を実施した後、機械学習モジュール120は、同様の動作条件が将来において生じるときに機械学習モジュール120がエラーがないことを正確に予測することができる可能性を増大させるために、数回のエラー・チェック動作についてエラーを発生させなかったストレージ・ユニットにおける現在の動作の動作条件からエラーの低い可能性を示す出力値を生成するように訓練される。
図7は、エラーが検出されたか(図6のブロック612)または閾回数だけ検出されなかったか(図6のブロック620から)に応じて、より高いまたはより低い出力値など、所望の出力値を生成するように機械学習モジュール120を再訓練するために、エラー・チェック・モジュール116または機械学習モジュール120あるいはその両方によって実施される動作の一実施形態を示す。ストレージ・ユニット(ストレージ・デバイスまたはストレージ・デバイスのランク)の所望の出力値を生成するために機械学習モジュール120を訓練する動作が開始されると(ブロック700において)、機械学習モジュール120がそのために訓練されているストレージ・ユニット内の1つまたは複数のストレージ・デバイスの現在のストレージ・デバイス情報200iから入力の決定が行われる(ブロック702において)。現在の出力値122を生成するために決定されている入力を用いて機械学習モジュール120が実行される(ブロック704において)。所望の出力値および現在の出力値122のエラーのマージンの決定が行われる(ブロック706において)。所望の出力値を生成するために決定されている入力118およびエラーのマージンならびに他の情報を使用して機械学習モジュール120が訓練される(ブロック708において)。機械学習モジュール120は、所望の出力値を生成するために、エラーのマージンを低減するために誤差逆伝搬を使用して訓練することができる。機械学習モジュール120のアルゴリズムが人工ニューラル・ネットワークを含む実施形態において、誤差逆伝搬ルーチンを使用して、所望の出力値122を生成するように機械学習モジュール120を再訓練することができる。ベイズ・モデルなどの他のタイプの機械学習アルゴリズムについて、他の技法を使用して、所望の出力値を生成するように機械学習モジュール120を再訓練してもよい。その後、例えば、機械学習モジュール120の隠れ層の調整された重みおよびバイアスなどの設定が、後の使用のために保存される(ブロック710において)。
図7の実施形態によれば、機械学習モジュール120は、機械学習モジュール120が、例えば、単一のストレージ・デバイスまたはストレージ・デバイスのアレイなどの、ストレージ・ユニットにおけるエラーの可能性をより正確に予測するようにするために、ストレージ・デバイスの現在の属性に基づいて現在のエラーの可能性を反映する所望の出力値を生成するように再訓練される。
図1~図7の実施形態において、機械学習モジュール120は、単一のコンピュータ・システム、および、1つまたは複数のRAIDランクを有するストレージ・アレイ104の1つまたは複数のストレージ・デバイスにおけるエラーの可能性を決定する。
図8は、脱落エラーまたは他の単独で遭遇するエラーなどの、検出されているフィールド・エラーを処理するために、エラー・チェック・モジュール116または機械学習モジュール120あるいはその両方によって実施される動作の一実施形態を示す。フィールド・エラー処理が開始されると(ブロック802において)、書き込みの脱落などのフィールド・エラーが検出され(ブロック804において)、エラー・チェック・カウンタ310がリセットされる(ブロック806において)。最後のN回の書き込みのデータまたはパリティあるいはその両方のエラーを訂正するかまたはエラーを有するストレージ・デバイス102をフェンスし、新たなストレージ・デバイス上でデータを再構築するエラー処理動作が実施される(ブロック808において)。制御はその後、図7に進み(ブロック810において)、フィールド・エラーの検出に起因して、エラー・チェック動作を実施すべきであることを示す最高の出力値を含む所望の出力値を有するストレージ・ユニット(エラーを有するデバイスまたはストレージ・デバイスのランク)のために機械学習モジュール120を訓練する。
図8の実施形態によれば、機械学習モジュールは、図6のエラー・チェック動作の外部のフィールド・エラーの検出を受けて、検出されているフィールド・エラーの時点において入力118が行われる場合にエラー・チェックを実施することを示す値を出力するために機械学習モジュール120を再訓練するように、訓練される。
図9は、図1~図8に関連して説明したコンピューティング・システム100が、ネットワーク904を介して、ストレージ・アレイ9021、9022...902mへのアクセスを各々が管理する複数のストレージ・コントローラ9001、9002...900mと通信する追加の実施形態を示す。機械学習モジュール120は、エラー・チェックおよび訂正動作を開始すべきか否かを決定するために使用するための、ストレージ・アレイ9021、9022...902mを管理するストレージ・コントローラ9001、9002...900mの出力値を計算するために、ストレージ・アレイ9021、9022...902m内の1つまたは複数のストレージ・デバイスから入力を受信する。このように、機械学習モジュール120は、複数のストレージ・アレイ9021、9022...902m内のストレージ・デバイスから訓練されるため、より頻繁に、したがってより正確にすることができる。機械学習モジュール120、ストレージ・デバイス情報200およびエラー・チェック情報300は、コンピューティング・システム100内に保持することができるが、エラー・チェック・モジュール116は、ストレージ・コントローラ9001、9002...900mの各々の中にローカルに保持することができる。
記載されている実施形態において、変数「i、m、n」などは、種々の要素とともに使用されるとき、その要素の同じまたは異なるインスタンスを示すことができる。
本発明は、システム、方法、またはコンピュータ・プログラムあるいはその組合せであってもよい。コンピュータ・プログラムは、プロセッサに、本発明の諸態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体を含むこともできる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は例えば、限定ではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せであってもよい。コンピュータ可読ストレージ媒体のより特定的な例の包括的でないリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、メモリ・スティック、フロッピー(R)ディスク、パンチ・カード、または、命令を記録されている溝の中の隆起構造のような機械的に符号化されているデバイス、および、上記の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書において使用されるものとしては、無線波、または、他の自由に伝播する電磁波、導波路もしくは他の伝送媒体(例えば、光ファイバケーブルを通過する光パルス)を通じて伝播する電磁波、または、ワイヤを通じて伝送される電気信号のような、一過性信号自体として解釈されるべきではない。
本明細書において記載されているコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスへ、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークもしくはワイヤレス・ネットワークまたはその両方を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジサーバあるいはその組合せを含んでもよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に記憶するために、コンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Java(R)、Smalltalk(R)、C++などのようなオブジェクト指向プログラミング言語、および、「C」プログラミング言語もしくは同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれているソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、その全体をユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的に遠隔コンピュータ上で、またはその全体を遠隔コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、遠隔コンピュータが、ユーザのローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され、または、接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)行われる。いくつかの実施形態において、例えば、プログラム可能ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラム可能ロジックアレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態による、方法、装置(システム)およびコンピュータ・プログラムのフローチャートの図またはブロック図あるいはその両方を参照して説明されている。フローチャートの図またはブロック図あるいはその両方の各ブロック、および、フローチャートの図またはブロック図あるいはその両方の中の複数のブロックの組合せはそれぞれ、コンピュータ可読プログラム命令によって実装されることができることは理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートの図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成するものであってよい。これらのコンピュータ可読プログラム命令はまた、命令を記憶されているコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読ストレージ媒体内に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイスあるいはその組合せに特定の様式で機能するように指示することができるものであってもよい。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータで実施されるプロセスを生成するために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図面内のフローチャートおよびブロック図は本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、および動作を例示する。これに関連して、フローチャートおよびブロック図内の各ブロックは、指定のロジック機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部分を表すことができる。いくつかの代替的な実施態様において、ブロックに記載されている機能は、図面に記載されている順序と一致せずに行われてもよい。例えば、連続して示されている2つのブロックは実際には、関与する機能に依って、実質的に同時に実行されてもよく、または、これらのブロックは、時として逆順に実行されてもよい。また、ブロック図またはフローチャートの図あるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方のブロックの組合せは、指定の機能もしくは動作を実施するか、または、専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースシステムによって実施することができることも留意されよう。
ホスト105、コンピューティング・システム100、およびストレージ・コントローラ9001、9002...900mを含む図1および図8の計算構成要素は、図10に示すコンピュータ・システム1002などの1つまたは複数のコンピュータ・システム内で実施することができる。コンピュータ・システム/サーバ1002は、コンピュータ・システムによって実行されている、プログラム・モジュールのようなコンピュータ・システム実行可能命令の一般的な文脈において説明され得る。一般的に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含む。コンピュータ・システム/サーバ1002は、タスクが、通信ネットワークを通じてリンクされる遠隔処理デバイスによって実行される、分散クラウド・コンピューティング環境において実践されることもできる。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリストレージ・デバイスを含むローカルおよび遠隔コンピュータ・システムストレージ媒体の両方内に位置することができる。
図10に示すように、コンピュータ・システム/サーバ1002は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ1002の構成要素は、限定ではないが、1つまたは複数のプロセッサまたは処理ユニット1004、システム・メモリ1006、および、システム・メモリ1006を含む様々なシステム構成要素をプロセッサ1004に結合するバス1008を含むことができる。バス1008は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレイテッド・グラフィックス・ポート、および、様々なバスアーキテクチャのうちのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかのうちの1つまたは複数を表す。例として、限定ではなく、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子機器標準規格化協会(VESA)ローカル・バス、および周辺構成要素相互接続(PCI)バスを含む。
コンピュータ・システム/サーバ1002は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ1002によってアクセス可能である任意の利用可能な媒体であってもよく、揮発性および不揮発性両方の媒体、取り外し可能および固定媒体を含む。
システム・メモリ1006は、ランダム・アクセス・メモリ(RAM)1010またはキャッシュ・メモリ1012あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ1002は、他の取り外し可能/固定、揮発性/不揮発性コンピュータ・システムストレージ媒体をさらに含んでもよい。ほんの一例として、固定不揮発性磁気媒体(図示せず、典型的には「ハード・ドライブ」と呼ばれる)に対して読み書きするためのストレージ・システム1013を提供することができる。図示されず、取り外し可能不揮発性磁気ディスク(例えば、「フロッピー(R)ディスク」)に対して読み書きするための磁気ディスク・ドライブ、および、CD-ROM、DVD-ROMまたは他の光媒体などの取り外し可能不揮発性光ディスクに対して読み書きするための光ディスク・ドライブを提供することができる。そのような場合、各々を、1つまたは複数のデータ・メディア・インターフェースによってバス1008に接続することができる。下記にさらに示し、説明するように、メモリ1006は、本発明の実施形態の機能を実行するように構成されているプログラム・モジュールのセット(例えば、少なくとも1つのプログラム・モジュール)を有する少なくとも1つのプログラムを含むことができる。
限定ではなく例として、プログラム・モジュール1016のセット(少なくとも1つのプログラム・モジュール)を有するプログラム/ユーティリティ1014、ならびに、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを、メモリ1006に記憶することができる。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々またはそれらの任意の組合せは、ネットワーキング環境の実施態様を含むことができる。コンピュータ1002の構成要素は、一般的に、本明細書に記載されているような本発明の実施形態の機能または方法論あるいはその両方を実行するプログラム・モジュール1016として実施することができる。図1のシステムは、1つまたは複数のコンピュータ・システム1002において実施することができ、ここで、それらが複数のコンピュータ・システム1002において実施される場合、コンピュータ・システムは、ネットワークを介して通信することができる。
コンピュータ・システム/サーバ1002はまた、キーボード、ポインティング・デバイス、ディスプレイ1020など、ユーザがコンピュータ・システム/サーバ1002と対話することを可能にする1つまたは複数のデバイス、または、コンピュータ・システム/サーバ1002が1つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組合せなどの、1つまたは複数の外部デバイス1018と通信することもできる。そのような通信は、入出力(I/O)インターフェース1022を介して行うことができる。またさらに、コンピュータ・システム/サーバ1002は、ネットワーク・アダプタ1024を介して、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)あるいはその組合せなどの1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ1024は、バス1008を介してコンピュータ・システム/サーバ1002の他の構成要素と通信する。図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方が、コンピュータ・システム/サーバ1002とともに使用されてもよいことは理解されたい。例は、限定ではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ記録ストレージ・システムなどを含む。
「一実施形態(an embodiment)」、「実施形態(embodiment)」、「複数の実施形態(embodiments)」、「その実施形態(the embodiment)」、「それらの実施形態(the embodiments)」、「1つまたは複数の実施形態(one or more embodiments)」、「いくつかの実施形態(some embodiments)」、および「1つの実施形態(one embodiment)」という用語は、明示的に別途指定されない限り、「本発明の1つまたは複数の(ただしすべてではない)実施形態」を意味する。
用語「含む」、「備える」、「有する」およびその変化形は、明示的に別途指定されない限り、「含むが、限定されない」ことを意味する。
項目の列挙されているリストは、明示的に別途指定されない限り、それらの項目のいずれかまたはすべてが相互に排他的であることを暗示しない。
用語「1つの(a)」、「ある(an)」および「その(the)」は、明示的に別途指定されない限り、「1つまたは複数」を意味する。
互いに通信している装置は、明示的に別途指定されない限り、互いに連続的に通信している必要はない。加えて、互いに通信している装置は、直接的に通信してもよく、または、1つまたは複数の中間物を通じて間接的に通信してもよい。
互いに通信しているいくつかの構成要素を有する実施形態の記述は、すべてのそのような構成要素が必要とされることを暗示しない。逆に、様々な任意選択の構成要素は、本発明の多種多様な可能性のある実施形態を例示するために記載されている。
単一のデバイスまたは物品が本明細書において記載されている場合、単一のデバイス/物品の代わりに2つ以上のデバイス/物品が(それらが協働するか否かにかかわらず)使用されてもよいことは容易に明らかとなろう。同様に、2つ以上のデバイスまたは物品が本明細書において記載されている場合(それらが協働するか否かにかかわらず)、2つ以上のデバイスまたは物品の代わりに単一のデバイス/物品が使用されてもよく、または、示されている数のデバイスまたはプログラムの代わりに異なる数のデバイス/物品が使用されてもよいことは容易に明らかとなろう。デバイスの機能または特徴あるいはその両方は代替的に、そのような機能/特徴を有するものとして明示的に記載されていない1つまたは複数の他のデバイスによって具現化されてもよい。したがって、本発明の他の実施形態は、デバイス自体を含む必要はない。
本発明の様々な実施形態の上記の記載は、例示および説明の目的で提示されてきた。排他的であることも、本発明を開示された正確な形態に限定することも意図されてはいない。上記の教示を考慮して多くの改変および変更が可能である。この詳細な説明ではなく、本明細書に添付される特許請求の範囲によって、本発明の範囲が限定されることが意図される。上記の明細書、例およびデータは本発明の構成の製造および使用の完全な記載を提供する。本発明の多くの実施形態は本発明の範囲から逸脱することなく成すことができるため、本発明は、本明細書に添付の特許請求の範囲に含まれる。

Claims (26)

  1. ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・プログラムであって、
    コンピュータに、
    前記ストレージ・ユニットを含む少なくとも1つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して出力値を生成することであって、前記ストレージ・デバイスの属性に関する入力が連続的に更新される動的情報である所の最後にエラー・チェック動作を実施した結果および書き込み動作を含む、前記出力値を生成することと、
    エラー・チェック頻度を前記出力値から決定することと、
    前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
    前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
    を実行させる、コンピュータ・プログラム。
  2. 前記ストレージ・ユニットが、ストレージ・デバイスのアレイまたは1つのストレージ・デバイスのうちの一方を含む、請求項1に記載のコンピュータ・プログラム。
  3. 前記ストレージ・ユニットの属性に関する前記入力を提供することは、前記出力値を定期的に生成するために前記機械学習モジュールに前記入力を定期的に提供することを含み、前記エラー・チェック頻度を決定する動作、および、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定する動作を提供する、請求項1に記載のコンピュータ・プログラム。
  4. 前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
    書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項1に記載のコンピュータ・プログラム。
  5. 前記エラー・チェック動作を実施する決定に応答して、前記書き込みカウンタをゼロにリセットすることをさらに実行させる、請求項4に記載のコンピュータ・プログラム。
  6. 前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す0~1の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
    前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
    前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
    前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
    を含む、請求項1に記載のコンピュータ・プログラム。
  7. 前記エラー・チェック動作が、最後の固定回数の書き込みをチェックし、前記エラー・チェック頻度を調整することが、前記エラー・チェック頻度を、前記最後の固定書き込み回数を前記出力値によって除算した数に設定する、請求項6に記載のコンピュータ・プログラム。
  8. 前記機械学習モジュールへの前記入力として使用される前記少なくとも1つのストレージの前記属性が、
    前記エラー・チェック動作の最後の実行中に前記エラー・チェック動作がエラーを検出した場合のエラー・タイプ、または、前記最後の実行中に前記エラー・チェック動作がエラーを検出しなかった場合のエラーがないという指示と、
    前記ストレージ・ユニットを含む少なくとも1つのストレージ・デバイスのタイプと、
    前記少なくとも1つのストレージ・デバイスが最初に使用されてからの使用時間と、
    前記少なくとも1つのストレージ・デバイスのファームウェア・レベルと、
    前記少なくとも1つのストレージ・デバイスにおける1秒あたりの読み出し動作と、
    前記少なくとも1つのストレージ・デバイスにおける1秒あたりの書き込み動作と
    のうちの少なくとも1つを含む、請求項1に記載のコンピュータ・プログラム。
  9. 前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
    前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
    前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
    をさらに実行させる、請求項1に記載のコンピュータ・プログラム。
  10. ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・プログラムであって、実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ媒体を備え、前記動作は、
    機械学習モジュールを訓練することを決定することと、
    前記機械学習モジュールを訓練するという決定に応答して、
    前記ストレージ・ユニットの少なくとも1つのストレージ・デバイスの属性を含む入力を決定すること、および
    前記エラー・チェックに応答して決定されている前記入力から前記ストレージ・ユニットのエラー・チェック動作を実施することを示す所望の出力値を生成するように、前記機械学習モジュールを訓練すること
    を実施することと、
    前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであるか否かを判定するために使用される出力値を生成するために、前記機械学習モジュールを実行することと
    を含む、コンピュータ・プログラム。
  11. 前記動作は、
    前記エラー・チェック動作を実施しながらエラーを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記エラーの検出に応答して行われる、前記検出することと、
    前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
    をさらに含む、請求項10に記載のコンピュータ・プログラム。
  12. 前記動作は、
    固定回数のエラー・チェック動作以内にエラーが検出されなかったことを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記固定回数のエラー・チェック動作以内に前記エラーが検出されなかったという判定に応答して行われる、前記検出することと、
    前記固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して、前記所望の出力値を、前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施しないことを示す出力値に設定することと
    をさらに含む、請求項10に記載のコンピュータ・プログラム。
  13. 前記機械学習モジュールを訓練することは、
    前記機械学習モジュールの前記出力値および前記所望の出力値のエラーのマージンを決定することと、
    前記所望の出力値を生成するために、前記エラーのマージンおよび前記入力を使用して、前記機械学習モジュール内のノードの重みおよびバイアスを訓練することと
    を含む、請求項10に記載のコンピュータ・プログラム。
  14. ストレージ・コントローラが前記ストレージ・コントローラによって管理されるストレージ・アレイ内の前記ストレージ・デバイスに関してエラー・チェック動作を実施すべきであるか否かを示す、前記ストレージ・デバイスからの入力に基づいて、前記ストレージ・コントローラに出力値を提供するために、前記機械学習モジュールが、前記ストレージ・コントローラによって管理されるストレージ・デバイスの前記ストレージ・アレイからの前記入力から出力値を生成する、請求項10に記載のコンピュータ・プログラム。
  15. 前記動作は、
    前記エラー・チェック動作から独立してフィールド・エラーを検出することであって、前記機械学習モジュールを訓練するという前記決定が、前記フィールド・エラーの検出に応答して行われる、前記検出することと、
    前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
    をさらに含む、請求項10に記載のコンピュータ・プログラム。
  16. ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・システムであって、
    プロセッサと、
    実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ媒体と
    を備え、前記動作は、
    前記ストレージ・ユニットを含む少なくとも1つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して出力値を生成することであって、前記ストレージ・デバイスの属性に関する入力が連続的に更新される動的情報である所の最後にエラー・チェック動作を実施した結果および書き込み動作を含む、前記出力値を生成することと、
    エラー・チェック頻度を前記出力値から決定することと、
    前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
    前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
    を含む、コンピュータ・システム。
  17. 前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
    書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項16に記載のシステム。
  18. 前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す0~1の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
    前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
    前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
    前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
    を含む、請求項16に記載のシステム。
  19. 前記動作は、
    前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
    前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
    前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
    をさらに含む、請求項16に記載のシステム。
  20. ストレージ・ユニット内のデータをエラー・チェックするためのシステムであって、
    プロセッサと、
    実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ・媒体と
    を備え、前記動作は、
    機械学習モジュールを訓練することを決定することと、
    前記機械学習モジュールを訓練するという決定に応答して、
    前記ストレージ・ユニットの少なくとも1つのストレージ・デバイスの属性を含む入力を決定すること、および
    前記エラーの検出に応答して決定されている前記入力から前記ストレージ・ユニットのエラー・チェック動作を実施することを示す所望の出力値を生成するように、前記機械学習モジュールを訓練すること
    を実施することと、
    前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであるか否かを判定するために使用される出力値を生成するために、前記機械学習モジュールを実行することと
    を含む、システム。
  21. 前記動作は、
    前記エラー・チェック動作を実施しながらエラーを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記エラーの検出に応答して行われる、前記検出することと、
    前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
    をさらに含む、請求項20に記載のシステム。
  22. 前記動作は、
    固定回数のエラー・チェック動作以内にエラーが検出されなかったことを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記固定回数のエラー・チェック動作以内に前記エラーが検出されなかったという判定に応答して行われる、前記検出することと、
    前記固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して、前記所望の出力値を、前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施しないことを示す出力値に設定することと
    をさらに含む、請求項20に記載のシステム。
  23. ストレージ・ユニット内のデータをエラー・チェックするための方法であって、
    前記ストレージ・ユニットを含む少なくとも1つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して出力値を生成することであって、前記ストレージ・デバイスの属性に関する入力が連続的に更新される動的情報である所の最後にエラー・チェック動作を実施した結果および書き込み動作を含む、前記出力値を生成することと、
    エラー・チェック頻度を前記出力値から決定することと、
    前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
    前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
    を含む、方法。
  24. 前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを前記判定することは、
    書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項23に記載の方法。
  25. 前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す0~1の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
    前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
    前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
    前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
    を含む、請求項23に記載の方法。
  26. 前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
    前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
    前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
    をさらに含む、請求項23に記載の方法。
JP2020558575A 2018-06-29 2019-06-20 ストレージ・ユニットのエラー・チェックを実施するときを決定するための機械学習モジュールの使用 Active JP7291724B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/023,443 US11119850B2 (en) 2018-06-29 2018-06-29 Determining when to perform error checking of a storage unit by using a machine learning module
US16/023,443 2018-06-29
PCT/IB2019/055213 WO2020003073A1 (en) 2018-06-29 2019-06-20 Using a machine learning module to determine when to perform error checking of a storage unit

Publications (2)

Publication Number Publication Date
JP2021531534A JP2021531534A (ja) 2021-11-18
JP7291724B2 true JP7291724B2 (ja) 2023-06-15

Family

ID=68986838

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020558575A Active JP7291724B2 (ja) 2018-06-29 2019-06-20 ストレージ・ユニットのエラー・チェックを実施するときを決定するための機械学習モジュールの使用

Country Status (6)

Country Link
US (3) US11119850B2 (ja)
JP (1) JP7291724B2 (ja)
CN (1) CN112088364B (ja)
DE (1) DE112019003288T5 (ja)
GB (1) GB2587314B (ja)
WO (1) WO2020003073A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11119662B2 (en) * 2018-06-29 2021-09-14 International Business Machines Corporation Determining when to perform a data integrity check of copies of a data set using a machine learning module
US11099743B2 (en) 2018-06-29 2021-08-24 International Business Machines Corporation Determining when to replace a storage device using a machine learning module
US11119850B2 (en) 2018-06-29 2021-09-14 International Business Machines Corporation Determining when to perform error checking of a storage unit by using a machine learning module
US11074005B1 (en) * 2020-01-03 2021-07-27 International Business Machines Corporation Coordinated storage media verification
CN111767165B (zh) * 2020-06-30 2024-06-14 杭州海康存储科技有限公司 数据处理方法、装置及控制设备
KR20220096466A (ko) * 2020-12-31 2022-07-07 삼성전자주식회사 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치
KR102317788B1 (ko) 2021-05-14 2021-10-26 삼성전자주식회사 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US11734141B2 (en) * 2021-07-14 2023-08-22 International Business Machines Corporation Dynamic testing of systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130128666A1 (en) 2011-11-21 2013-05-23 Chris Avila Scrub Techniques for Use with Dynamic Read
US20180174658A1 (en) 2016-12-15 2018-06-21 Fanuc Corporation Machine learning apparatus, life prediction apparatus, numerical control device, production system, and machine learning method for predicting life of nand flash memory

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4053751A (en) * 1976-04-28 1977-10-11 Bell Telephone Laboratories, Incorporated Adaptable exerciser for a memory system
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6986075B2 (en) 2001-02-23 2006-01-10 Hewlett-Packard Development Company, L.P. Storage-device activation control for a high-availability storage system
US6745303B2 (en) 2002-01-03 2004-06-01 Hitachi, Ltd. Data synchronization of multiple remote storage
US6947234B2 (en) * 2002-07-23 2005-09-20 International Business Machines Corporation Method, system, and program for performing error correction in a storage device having a magnetic storage medium
JP2005353110A (ja) * 2004-06-08 2005-12-22 Nec Electronics Corp 不揮発性メモリ装置
US7236911B1 (en) 2004-06-16 2007-06-26 Western Digital Technologies, Inc. Using a genetic algorithm to select a subset of quality metrics as input to a disk drive failure prediction algorithm
US7587626B2 (en) 2004-12-15 2009-09-08 Dell Products L.P. Intelligent hotspare or “SmartSpare” drive with pre-emptive drive rebuild
US7382673B2 (en) * 2005-06-15 2008-06-03 Infineon Technologies Ag Memory having parity generation circuit
US20070022244A1 (en) * 2005-07-25 2007-01-25 Honeywell International Inc. Methods and systems for refresh and error scrubbing of dynamic memory devices
US7650367B2 (en) 2006-01-13 2010-01-19 Tekelec Methods, systems, and computer program products for detecting and restoring missing or corrupted data in a distributed, scalable, redundant measurement platform database
DE602006019010D1 (de) * 2006-10-20 2011-01-27 Fujitsu Ltd Speicheranordnung und auffrisch-justierverfahren
US8468244B2 (en) 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
US8706914B2 (en) 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US7752489B2 (en) 2007-05-10 2010-07-06 International Business Machines Corporation Data integrity validation in storage systems
US20090055357A1 (en) 2007-06-09 2009-02-26 Honeywell International Inc. Data integrity checking for set-oriented data stores
JP5012898B2 (ja) * 2007-07-18 2012-08-29 富士通株式会社 メモリリフレッシュ装置およびメモリリフレッシュ方法
US7793168B2 (en) 2007-08-23 2010-09-07 International Business Machines Corporation Detection and correction of dropped write errors in a data storage system
US7974036B2 (en) * 2008-08-19 2011-07-05 Seagate Technology Llc Time-shifted bits for write synchronization correction
US8296626B2 (en) * 2008-11-07 2012-10-23 Spansion Llc Error correction for flash memory
US8327250B1 (en) 2009-04-21 2012-12-04 Network Appliance, Inc. Data integrity and parity consistency verification
US8351289B1 (en) * 2009-12-30 2013-01-08 Micron Technology, Inc. Apparatuses and methods for sensing a phase-change test cell and determining changes to the test cell resistance due to thermal exposure
US8904244B2 (en) 2012-10-17 2014-12-02 Lsi Corporation Heuristic approach for faster consistency check in a redundant storage system
WO2014085849A1 (en) 2012-12-03 2014-06-12 National Ict Australia Limited Bayesian nonparametric method for infrastructure failure prediction
US20140188405A1 (en) 2012-12-28 2014-07-03 International Business Machines Corporation Predicting a time of failure of a device
CN103902448A (zh) * 2012-12-28 2014-07-02 中国科学院深圳先进技术研究院 多核处理器软错误压力测试程序生成系统及方法
US9678617B2 (en) 2013-01-14 2017-06-13 Patrick Soon-Shiong Shared real-time content editing activated by an image
US9069737B1 (en) * 2013-07-15 2015-06-30 Amazon Technologies, Inc. Machine learning based instance remediation
US20150074450A1 (en) 2013-09-09 2015-03-12 International Business Machines Corporation Hard disk drive (hdd) early failure detection in storage systems based on statistical analysis
CN103761162B (zh) 2014-01-11 2016-12-07 深圳清华大学研究院 分布式文件系统的数据备份方法
US9558068B1 (en) 2014-03-31 2017-01-31 EMC IP Holding Company LLC Recovering from metadata inconsistencies in storage systems
US10243807B2 (en) 2014-06-03 2019-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Operational lifetime of communication network nodes
CN104167224B (zh) * 2014-06-12 2018-06-29 上海新储集成电路有限公司 降低dram软错误的方法
US9621421B1 (en) 2014-06-30 2017-04-11 Juniper Networks, Inc. Systems and methods for prognostic network management
US10983859B2 (en) * 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US20160042024A1 (en) 2014-08-08 2016-02-11 Front Porch Digital, Inc. Continuous data health check
CN105450704A (zh) 2014-08-28 2016-03-30 北京兆易创新科技股份有限公司 一种用于闪存的网络存储设备及其处理方法
US9785374B2 (en) 2014-09-25 2017-10-10 Microsoft Technology Licensing, Llc Storage device management in computing systems
KR20160059050A (ko) * 2014-11-17 2016-05-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9747177B2 (en) 2014-12-30 2017-08-29 International Business Machines Corporation Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US10067840B1 (en) 2015-03-31 2018-09-04 EMC IP Holding Company LLC Life expectancy data migration
US10419530B2 (en) 2015-11-02 2019-09-17 Telefonaktiebolaget Lm Ericsson (Publ) System and methods for intelligent service function placement and autoscale based on machine learning
US10713587B2 (en) * 2015-11-09 2020-07-14 Xerox Corporation Method and system using machine learning techniques for checking data integrity in a data warehouse feed
US9858148B2 (en) * 2015-11-22 2018-01-02 International Business Machines Corporation Raid data loss prevention
KR102435873B1 (ko) * 2015-12-18 2022-08-25 삼성전자주식회사 스토리지 장치 및 그것의 리드 리클레임 방법
US11222266B2 (en) 2016-07-15 2022-01-11 Intuit Inc. System and method for automatic learning of functions
JP6224186B1 (ja) 2016-08-01 2017-11-01 株式会社東芝 Raidストレージシステム、ストレージコントローラ及びraidアレイパトロール方法
US10310749B2 (en) 2016-09-16 2019-06-04 Netscout Systems Texas, Llc System and method for predicting disk failure
GB2569262B (en) 2016-10-12 2023-02-15 Harman Int Ind Systems and methods for in-vehicle predictive failure detection
KR102643916B1 (ko) * 2016-10-18 2024-03-08 삼성전자주식회사 스토리지 장치, 메모리 시스템, 및 그것의 읽기 전압 결정 방법
US9678817B1 (en) 2016-10-28 2017-06-13 International Business Machines Corporation Lifespan forecast for storage media devices
KR102656190B1 (ko) * 2016-11-24 2024-04-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법
JP6926472B2 (ja) 2016-12-27 2021-08-25 株式会社ジェイテクト 解析装置および解析システム
US10552729B2 (en) 2017-03-20 2020-02-04 Hewlett Packard Enterprise Development Lp Baseboard management controller to deconfigure field replaceable units according to deep learning model
US11586960B2 (en) 2017-05-09 2023-02-21 Visa International Service Association Autonomous learning platform for novel feature discovery
US11049009B2 (en) * 2017-06-12 2021-06-29 Western Digital Technologies, Inc. Identifying memory block write endurance using machine learning
CN107506252A (zh) * 2017-08-11 2017-12-22 云南电网有限责任公司信息中心 基于配置项关联关系的信息系统错误配置检测系统及方法
US20190095299A1 (en) 2017-09-28 2019-03-28 Cnex Labs, Inc. Storage system with machine learning mechanism and method of operation thereof
US10572323B1 (en) 2017-10-24 2020-02-25 EMC IP Holding Company LLC Predicting physical storage unit health
US10410111B2 (en) 2017-10-25 2019-09-10 SparkCognition, Inc. Automated evaluation of neural networks using trained classifier
US10613962B1 (en) 2017-10-26 2020-04-07 Amazon Technologies, Inc. Server failure predictive model
US10909017B2 (en) 2017-12-27 2021-02-02 Intel Corporation Latency reporting for algorithm weighting in multiagent systems
US11099551B2 (en) 2018-01-31 2021-08-24 Hitachi, Ltd. Deep learning architecture for maintenance predictions with multiple modes
US11132133B2 (en) * 2018-03-08 2021-09-28 Toshiba Memory Corporation Workload-adaptive overprovisioning in solid state storage drive arrays
US10838833B1 (en) 2018-03-26 2020-11-17 Pure Storage, Inc. Providing for high availability in a data analytics pipeline without replicas
US10608994B2 (en) 2018-04-03 2020-03-31 Bank Of America Corporation System for managing communication ports between servers
US11119850B2 (en) 2018-06-29 2021-09-14 International Business Machines Corporation Determining when to perform error checking of a storage unit by using a machine learning module
US11099743B2 (en) 2018-06-29 2021-08-24 International Business Machines Corporation Determining when to replace a storage device using a machine learning module
US11119662B2 (en) 2018-06-29 2021-09-14 International Business Machines Corporation Determining when to perform a data integrity check of copies of a data set using a machine learning module
US20200097921A1 (en) 2018-09-24 2020-03-26 Hitachi, Ltd. Equipment repair management and execution

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130128666A1 (en) 2011-11-21 2013-05-23 Chris Avila Scrub Techniques for Use with Dynamic Read
US20180174658A1 (en) 2016-12-15 2018-06-21 Fanuc Corporation Machine learning apparatus, life prediction apparatus, numerical control device, production system, and machine learning method for predicting life of nand flash memory

Also Published As

Publication number Publication date
CN112088364B (zh) 2024-09-03
GB202100441D0 (en) 2021-03-03
GB2587314A (en) 2021-03-24
DE112019003288T5 (de) 2021-04-08
US20200004623A1 (en) 2020-01-02
US20200004625A1 (en) 2020-01-02
CN112088364A (zh) 2020-12-15
US11204827B2 (en) 2021-12-21
WO2020003073A1 (en) 2020-01-02
GB2587314B (en) 2021-09-15
US11119850B2 (en) 2021-09-14
US20210141688A1 (en) 2021-05-13
JP2021531534A (ja) 2021-11-18
US11119851B2 (en) 2021-09-14

Similar Documents

Publication Publication Date Title
JP7291724B2 (ja) ストレージ・ユニットのエラー・チェックを実施するときを決定するための機械学習モジュールの使用
US11119660B2 (en) Determining when to replace a storage device by training a machine learning module
US11200174B2 (en) Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US11119662B2 (en) Determining when to perform a data integrity check of copies of a data set using a machine learning module
US11461112B2 (en) Determining feature settings for code to deploy to a system by training a machine learning module
US11281497B2 (en) Determining an allocation of stage and destage tasks by training a machine learning module
US11663129B2 (en) Using a machine learning module to dynamically determine tracks to prestage from storage to cache
US11222265B2 (en) Perform destages of tracks with holes in a storage system by training a machine learning module
US10628241B2 (en) Determining when to send message to computing node to process items by training a machine learning module
US20200042367A1 (en) Determining when to send message to a computing node to process items using a machine learning module
US10817311B1 (en) Applying machine learning in storage system code load problem analysis
US11314649B2 (en) Using a machine learning module to perform destages of tracks with holes in a storage system
US12124969B2 (en) Determining whether to process a host request by training a machine learning module
US20200233716A1 (en) Determining whether to process a host request using a machine learning module

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210510

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211028

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230516

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230605

R150 Certificate of patent or registration of utility model

Ref document number: 7291724

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150