(57)【要約】  ストレージ・ユニットのエラー・チェックを実施するときを決定するために機械学習モジュールを使用するためのコンピュータ・プログラム、システム、および方法が提供される。ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力が、機械学習モジュールに提供されて、出力値が生成される。エラー・チェック頻度が、出力値から決定される。ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かについて判定が行われる。エラー・チェック動作は、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すという判定に応答して実施される。
2021531534.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・プログラム製品であって、実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ媒体を備え、前記動作は、
前記ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して、出力値を生成することと、
エラー・チェック頻度を前記出力値から決定することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
を含む、コンピュータ・プログラム製品。
【請求項２】
前記ストレージ・ユニットが、ストレージ・デバイスのアレイまたは１つのストレージ・デバイスのうちの一方を含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項３】
前記ストレージ・ユニットの属性に関する前記入力を提供することは、前記出力値を定期的に生成するために前記機械学習モジュールに前記入力を定期的に提供することを含み、前記エラー・チェック頻度を決定する前記動作、および、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定する前記動作、請求項１に記載のコンピュータ・プログラム製品。
【請求項４】
前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項１に記載のコンピュータ・プログラム製品。
【請求項５】
前記動作は、
前記エラー・チェック動作を実施する決定に応答して、前記書き込みカウンタをゼロにリセットすることをさらに含む、請求項４に記載のコンピュータ・プログラム製品。
【請求項６】
前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す０〜１の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
を含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項７】
前記エラー・チェック動作が、最後の固定回数の書き込みをチェックし、前記エラー・チェック頻度を調整することが、前記エラー・チェック頻度を、前記最後の固定書き込み回数を前記出力値によって除算した数に設定する、請求項６に記載のコンピュータ・プログラム製品。
【請求項８】
前記機械学習モジュールへの前記入力として使用される前記少なくとも１つのストレージの前記属性が、
前記エラー・チェック動作の最後の実行中に前記エラー・チェック動作がエラーを検出した場合のエラー・タイプ、または、前記最後の実行中に前記エラー・チェック動作がエラーを検出しなかった場合のエラーがないという指示と、
前記ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスのタイプと、
前記少なくとも１つのストレージ・デバイスが最初に使用されてからの使用時間と、
前記少なくとも１つのストレージ・デバイスのファームウェア・レベルと、
前記少なくとも１つのストレージ・デバイスにおける１秒あたりの読み出し動作と、
前記少なくとも１つのストレージ・デバイスにおける１秒あたりの書き込み動作と
のうちの少なくとも１つを含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項９】
前記動作は、
前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
をさらに含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項１０】
ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・プログラム製品であって、実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ媒体を備え、前記動作は、
機械学習モジュールを訓練することを決定することと、
前記機械学習モジュールを訓練するという決定に応答して、
前記ストレージ・ユニットの少なくとも１つのストレージ・デバイスの属性を含む入力を決定すること、および
前記エラーの検出に応答して決定されている前記入力から前記ストレージ・ユニットのエラー・チェック動作を実施することを示す所望の出力値を生成するように、前記機械学習モジュールを訓練すること
を実施することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであるか否かを判定するために使用される出力値を生成するために、前記機械学習モジュールを実行することと
を含む、コンピュータ・プログラム製品。
【請求項１１】
前記動作は、
前記エラー・チェック動作を実施しながらエラーを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記エラーの検出に応答して行われる、前記検出することと、
前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
をさらに含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１２】
前記動作は、
固定回数のエラー・チェック動作以内にエラーが検出されなかったことを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記固定回数のエラー・チェック動作以内に前記エラーが検出されなかったという判定に応答して行われる、前記検出することと、
前記固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して、前記所望の出力値を、前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施しないことを示す出力値に設定することと
をさらに含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１３】
前記機械学習モジュールを訓練することは、
前記機械学習モジュールの前記出力値および前記所望の出力値のエラーのマージンを決定することと、
前記所望の出力値を生成するために、前記エラーのマージンおよび前記入力を使用して、前記機械学習モジュール内のノードの重みおよびバイアスを訓練することと
を含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１４】
ストレージ・コントローラが前記ストレージ・コントローラによって管理されるストレージ・アレイ内の前記ストレージ・デバイスに関してエラー・チェック動作を実施すべきであるか否かを示す、前記ストレージ・デバイスからの入力に基づいて、前記ストレージ・コントローラに出力値を提供するために、前記機械学習モジュールが、前記ストレージ・コントローラによって管理されるストレージ・デバイスの前記ストレージ・アレイからの前記入力から出力値を生成する、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１５】
前記動作は、
前記エラー・チェック動作から独立してフィールド・エラーを検出することであって、前記機械学習モジュールを訓練するという前記決定が、前記フィールド・エラーの検出に応答して行われる、前記検出することと、
前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
をさらに含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１６】
ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・システムであって、
プロセッサと、
実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ媒体と
を備え、前記動作は、
前記ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して、出力値を生成することと、
エラー・チェック頻度を前記出力値から決定することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
を含む、コンピュータ・システム。
【請求項１７】
前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項１６に記載のシステム。
【請求項１８】
前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す０〜１の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
を含む、請求項１６に記載のシステム。
【請求項１９】
前記動作は、
前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
をさらに含む、請求項１６に記載のシステム。
【請求項２０】
ストレージ・ユニット内のデータをエラー・チェックするためのシステムであって、
プロセッサと、
実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ・媒体と
を備え、前記動作は、
機械学習モジュールを訓練することを決定することと、
前記機械学習モジュールを訓練するという決定に応答して、
前記ストレージ・ユニットの少なくとも１つのストレージ・デバイスの属性を含む入力を決定すること、および
前記エラーの検出に応答して決定されている前記入力から前記ストレージ・ユニットのエラー・チェック動作を実施することを示す所望の出力値を生成するように、前記機械学習モジュールを訓練すること
を実施することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであるか否かを判定するために使用される出力値を生成するために、前記機械学習モジュールを実行することと
を含む、システム。
【請求項２１】
前記動作は、
前記エラー・チェック動作を実施しながらエラーを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記エラーの検出に応答して行われる、前記検出することと、
前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
をさらに含む、請求項２０に記載のシステム。
【請求項２２】
前記動作は、
固定回数のエラー・チェック動作以内にエラーが検出されなかったことを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記固定回数のエラー・チェック動作以内に前記エラーが検出されなかったという判定に応答して行われる、前記検出することと、
前記固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して、前記所望の出力値を、前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施しないことを示す出力値に設定することと
をさらに含む、請求項２０に記載のシステム。
【請求項２３】
ストレージ・ユニット内のデータをエラー・チェックするための方法であって、
前記ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して、出力値を生成することと、
エラー・チェック頻度を前記出力値から決定することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
を含む、方法。
【請求項２４】
前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを前記判定することは、
書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項２３に記載の方法。
【請求項２５】
前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す０〜１の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
を含む、請求項２３に記載の方法。
【請求項２６】
前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
をさらに含む、請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ・ユニットのエラー・チェックを実施するときを決定するために機械学習モジュールを使用するためのコンピュータ・プログラム、システム、および方法に関する。
【背景技術】
【０００２】
ストレージ・システムのデータ完全性を維持するために、エラー・チェック、および、エラーが検出された場合のエラー訂正動作を、データに対して実施することができる。独立ディスク冗長アレイ（ＲＡＩＤ）のようなストレージ・アレイの場合、データ・エラーがあるか否かをチェックし、データを訂正するために使用することができるパリティ・データを保持することができる。ＲＡＩＤアレイにおいて、ＲＡＩＤアレイ内の複数のストレージ・デバイスにまたがって記憶されているＲＡＩＤストライプ内のすべてのブロックを読み出し、読み出されたデータをパリティ・データと比較して不一致があるか否かを判定することによって、データおよびパリティ・ブロックの完全性を検証するために、パリティ・スクラブ動作（parity scrub operation）を定期的に実施することができる。パリティ・スクラブ動作は、システム計算リソース、ならびに、ストレージ・アレイからの読み出されたデータおよびパリティ・データへの連続的なアクセスを必要とし、計算コストが高い。駆動容量が増大しているため、パリティ・スクラブのエラー・チェック動作の範囲は対応して増大しており、この結果として、ＲＡＩＤアレイ内のデータへのアクセスを模索する他の動作およびアプリケーションに待ち時間遅延が発生し得る。
【０００３】
エラー・チェックのための１つの技法は、固定回数の書き込み動作の後にパリティ・スクラブを定期的に実施することである。重要なデータについて、システム管理者は、データ・エラーが重要なデータを通じて伝播することを回避するために、連続的なエラー訂正動作を保証するために上記固定回数を少なく設定することができる。しかしながら、これらの連続的なエラー・チェック動作は、重要なデータへのアクセスにおいて待ち時間遅延を引き起こす可能性がある。
【０００４】
ストレージ・ユニットにおいてエラー訂正チェックおよび動作を実施するときを決定するための改善された技法が、当該技術分野において必要とされている。
【発明の概要】
【０００５】
第１の実施形態は、ストレージ・ユニットのエラー・チェックを実施するときを決定するために機械学習モジュールを使用するためのコンピュータ・プログラム、システム、および方法を含む。ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力が、機械学習モジュールに提供されて、出力値が生成される。エラー・チェック頻度が、出力値から決定される。ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かについて判定が行われる。エラー・チェック動作は、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すという判定に応答して実施される。
【０００６】
第１の態様から見ると、本発明は、ストレージ・デバイスについて記録されている現在の動作パラメータに基づいて、ストレージ・ユニットにおけるエラーの可能性を動的に決定するための機械学習モジュールおよびアルゴリズムを使用することによってエラー・チェックおよび処理を実施するときを決定するための改善されたコンピュータ技術を提供する。このように、記載されている実施形態は、ストレージ・デバイスにおける現在の動作条件を所与としたデータ・エラーの可能性があるか否かについての予測に基づくエラー・チェック動作を実施すべきである頻度を動的に決定することによって、エラー・チェック動作に対する計算およびストレージ・リソースの配分を最適化する。この動的決定は、エラー・チェックを実施する判断が、ストレージ・デバイスにおける現在の動作条件を所与としたデータ・エラーの可能性があるか否かについての予測に基づくようにする。
【０００７】
好ましくは、本発明は、ストレージ・ユニットがストレージ・デバイスのアレイまたは１つのストレージ・デバイスのうちの一方を含む、コンピュータ・プログラム製品を提供する。
【０００８】
好ましくは、本発明は、ＲＡＩＤアレイなどのストレージ・デバイスのストレージ・アレイ、および、単一のストレージ・デバイスのストレージ・ユニットに対するエラー・チェック動作を最適化するように最適化技法を拡張するためのコンピュータ・プログラムを提供する。
【０００９】
好ましくは、本発明は、出力値を定期的に生成するために機械学習モジュールに入力を定期的に提供することを含め、ストレージ・ユニットの属性に関する入力を提供するためのコンピュータ・プログラムであって、エラー・チェック頻度を決定する動作、および、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定する動作を提供する。
【００１０】
好ましくは、本発明は、エラー・チェックを最適化するために、エラー・チェックが必要であるか否かを連続的に判定するために定期的に実施される、エラーの可能性の予測が存在する事例にエラー・チェックを制限するように機械学習アルゴリズムを使用して、エラー・チェックを実施するときを決定するためのコンピュータ・プログラムを提供する。これによって、エラーの可能性が低いときはチェックが実施されないため、エラー発生が増大している任意の期間がエラー・チェックおよび処理を受けることが保証され、エラー率が低い期間がエラー・チェックを受けることにならないことが保証される。
【００１１】
好ましくは、本発明は、出力値からエラー・チェック頻度を決定することが、書き込みの回数を出力値の関数として決定することを含む、コンピュータ・プログラム製品を提供する。エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定することは、書き込みカウンタがエラー・チェック頻度を超えるか否かを判定することを含む。エラー・チェック動作は、書き込みカウンタがエラー・チェック頻度を超えたことに応答して実施される。
【００１２】
好ましくは、本発明は、書き込みカウンタが、ストレージ・デバイスに関するエラー発生の可能性の決定に基づいて調整される、エラー・チェック頻度を超えるときにエラーをチェックするように最適化されているエラー・チェック動作のためのコンピュータ・プログラムを提供する。したがって、この場合、エラー・チェックと他のプロセスとの間の計算リソース配分が最適化されることを保証するために、エラーの決定された可能性に基づいて、エラー・チェックが再び実施される。
【００１３】
好ましくは、本発明は、エラー・チェック動作を実施する決定に応答して、書き込みカウンタをゼロにリセットするためのコンピュータ・プログラムを提供する。
【００１４】
好ましくは、本発明は、現在の動作条件に基づいて訓練される、上記エラー・チェック頻度率において発生するエラー・チェックを実施する次の決定を可能にするために、書き込みカウンタがリセットされる、コンピュータ・プログラム製品を提供する。
【００１５】
好ましくは、本発明は、出力値が、ストレージ・ユニット内にエラーが存在する可能性を示す０〜１の数を含む、コンピュータ・プログラムを提供する。エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定することは、出力値が下限未満であることに応答してエラー・チェック動作を実施しないことと、出力値が上限よりも大きいことに応答してエラー・チェック動作を実施することと、出力値が下限と上限との間にあることに応答して、出力値に基づいてエラー・チェック頻度を調整することとを含む。
【００１６】
好ましくは、本発明は、エラーの可能性が閾値を下回ることを出力値が示すときは、他の動作に対するリソース配分を最適化するためにエラー・チェック動作が実施されず、エラーのより大きい可能性がある場合はエラー・チェック動作が実施され、エラー率が増大する可能性が高い時間の間はリソースの使用がエラー・チェックにリダイレクトされることが保証される、コンピュータ・プログラムを提供する。さらに、将来のエラー・チェック・リソースのリソース配分をさらに最適化するために、出力値に基づいてエラー・チェック頻度を調整することができる。
【００１７】
好ましくは、本発明は、エラー・チェック動作が、最後の固定回数の書き込みをチェックし、エラー・チェック頻度を調整することが、エラー・チェック頻度を、最後の固定書き込み回数を出力値によって除算した数に設定する、コンピュータ・プログラムを提供する。
【００１８】
好ましくは、本発明は、エラー・チェックの一部として計算リソースが使用されるのをさらに制限するために、制限された回数の書き込みのみがエラー・チェックを受ける、コンピュータ・プログラムを提供する。
【００１９】
好ましくは、本発明は、機械学習モジュールへの入力として使用される少なくとも１つのストレージの属性が、エラー・チェック動作の最後の実行中にエラー・チェック動作がエラーを検出した場合のエラー・タイプ、または、最後の実行中にエラー・チェック動作がエラーを検出しなかった場合のエラーがないという指示と、ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスのタイプと、少なくとも１つのストレージ・デバイスが最初に使用されてからの使用時間と、少なくとも１つのストレージ・デバイスのファームウェア・レベルと、少なくとも１つのストレージ・デバイスにおける１秒あたりの読み出し動作と、少なくとも１つのストレージ・デバイスにおける１秒あたりの書き込み動作とのうちの少なくとも１つを含む、コンピュータ・プログラムを提供する。
【００２０】
好ましくは、本発明は、上記属性が、エラーの可能性を決定するために使用され、エラー・チェックを実施するときを決定する動作を最適化するために、エラー発生を予測する可能性が最も高い属性を含む、コンピュータ・プログラムを提供する。例えば、最後のエラーのエラー・タイプは、エラー・タイプが再発する可能性が高いまたは低いものである場合に、大いに予測的な値になる。使用レベルまたは時間が予測的なものであり得、例えば、より古いまたはより使用されているストレージ・デバイスが、エラーを引き起こしやすい場合がある。特定のファームウェア・レベルがより大きいエラー率と関連付けられる場合、ファームウェア・レベルは予測的なものになり得る。同じく、高い使用率の間にエラーがより頻繁に発生する可能性があるため、行われている読み出し動作および書き込み動作の回数も、大いに予測的であり得る。
【００２１】
好ましくは、本発明は、ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、書き込みカウンタがエラー・チェック頻度に関する条件を満たすか否かを判定することと、書き込みカウンタがエラー・チェック頻度に関する条件を満たすという判定に応答してエラー・チェック動作を実施し、書き込みカウンタをリセットすることとを行うためのコンピュータ・プログラムを提供する。
【００２２】
好ましくは、本発明は、エラー・チェック動作が、書き込みカウンタにおいて示される書き込みの回数がエラー頻度に等しいなど、エラー頻度の条件を満たすときに行われるようにスケジュールされる、コンピュータ・プログラムを提供する。この時点において、訂正すべきエラーがあるか否かを判定するために、エラー・チェックが実施されるべきである。
【００２３】
別の観点から見ると、本発明は、ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・プログラム、方法、およびシステムを提供する。機械学習モジュールを訓練するという決定が行われる。機械学習モジュールを訓練するという決定に応答して、ストレージ・ユニットの少なくとも１つのストレージ・デバイスの属性を含む入力の決定が行われる。機械学習モジュールは、エラーの検出に応答して決定されている入力からストレージ・ユニットのエラー・チェック動作を実施することを示す所望の出力値を生成するように訓練される。機械学習モジュールは、ストレージ・ユニットに関してエラー・チェック動作を実施すべきであるか否かを判定するために使用される出力値を生成するために実行される。
【００２４】
有利には、本発明は、機械学習モジュールが、例えば、単一のストレージ・デバイスまたはストレージ・デバイスのアレイなどの、ストレージ・ユニットにおけるエラーの可能性をより正確に予測するようにするために、ストレージ・デバイスの現在の属性に基づいて現在のエラーの可能性を反映する所望の出力値を生成するように機械学習モジュールを再訓練することによるエラー・チェックのためのコンピュータ技術を提供する。したがって、機械学習モジュールが、現在の動作条件および属性に基づいてエラーの可能性を決定する正確度が改善される。
【００２５】
好ましくは、本発明は、エラー・チェック動作を実施しながらエラーを検出するためのコンピュータ・プログラムであって、機械学習モジュールを訓練するという決定が、エラーの検出に応答して行われる、コンピュータ・プログラムを提供する。所望の出力値は、エラーの検出に応答して機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定される。
【００２６】
好ましくは、本発明は、機械学習モジュールの予測可能性が、エラーが実際に検出されたときに発生している現在の動作条件に基づいてエラーの可能性を決定するようにモジュールを再訓練することによって改善される、コンピュータ・プログラムを提供する。このように、機械学習モジュールは、実際のエラー動作条件中にエラーを予測する可能性を改善するように、リアル・タイムのエラー検出中に訓練される。
【００２７】
好ましくは、本発明は、固定回数のエラー・チェック動作以内にエラーが検出されなかったことを検出するためのコンピュータ・プログラムを提供する。機械学習モジュールを訓練するという決定は、固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して行われる。所望の出力値は、固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して、機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施しないことを示す出力値に設定される。
【００２８】
好ましくは、本発明は、機械学習モジュールの予測可能性が、エラー・チェック中にエラーが検出されなかったときに発生している現在の動作条件に基づいてエラーがない可能性を決定するようにモジュールを再訓練することによって改善される、コンピュータ・プログラムを提供する。このように、機械学習モジュールは、エラーが検出されなかったときの実際の動作条件中にエラーを予測する可能性を改善するために、エラーの可能性が低いことを示すようにリアル・タイムのエラー検出中に訓練される。
【００２９】
好ましくは、本発明は、機械学習モジュールを訓練することが、機械学習モジュールの出力値および所望の出力値のエラーのマージンを決定することを含む、コンピュータ・プログラムを提供する。エラーのマージンおよび入力によって、機械学習モジュール内のノードの重みおよびバイアスを訓練して所望の出力値を生成する。
【００３０】
好ましくは、本発明は、ストレージ・コントローラがストレージ・コントローラによって管理されるストレージ・アレイ内のストレージ・デバイスに関してエラー・チェック動作を実施すべきであるか否かを示す、ストレージ・デバイスからの入力に基づいて、ストレージ・コントローラに出力値を提供するために、機械学習モジュールが、ストレージ・コントローラによって管理されるストレージ・デバイスのストレージ・アレイからの入力から出力値を生成する、コンピュータ・プログラムを提供する。
【００３１】
好ましくは、本発明は、すべてのストレージ・コントローラにおいて発生しているエラーに基づいて再訓練することができる１つの機械学習モジュールによって予測を強化することによって、ネットワーク・エラー予測が改善される、コンピュータ・プログラムを提供する。したがって、ネットワーク内の任意のストレージ・コントローラにおけるエラー検出に基づく再訓練によって、ネットワーク内の任意のストレージ・コントローラに使用するときのエラーの可能性を判定する予測可能性が改善される。
【００３２】
好ましくは、本発明は、エラー・チェック動作から独立してフィールド・エラー（field error）を検出することをさらに含む、コンピュータ・プログラムを提供し、機械学習モジュールを訓練するという決定が、フィールド・エラーの検出に応答して行われる。所望の出力値は、エラーの検出に応答して機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定される。
【００３３】
好ましくは、本発明は、機械学習モジュールの予測可能性が、エラー・チェックの実行から独立して検出された、書き込みの脱落などのフィールド・エラーの検出に基づいてエラーの可能性を決定するようにモジュールを再訓練することによって改善される、コンピュータ・プログラムを提供する。このように、機械学習モジュールは、実際のエラー動作条件中にエラーを予測する可能性を改善するように、リアル・タイムの独立エラー検出中に訓練される。
【００３４】
別の観点から見ると、本発明は、ストレージ・ユニット内のデータをエラー・チェックするための方法であって、出力値を生成するためにストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供することと、出力値からエラー・チェック頻度を決定することと、ストレージ・ユニットに関するエラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定することと、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すという判定に応答してエラー・チェック動作を実施することとを含む、方法を提供する。
【００３５】
別の態様から見ると、本発明は、ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・システムであって、プロセッサと、実行されると動作を実施するコンピュータ可読プログラム・コードを記憶するコンピュータ可読ストレージ媒体とを備え、動作は、出力値を生成するためにストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供することと、出力値からエラー・チェック頻度を決定することと、ストレージ・ユニットに関するエラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すか否かを判定することと、エラー・チェック動作を実施すべきであることをエラー・チェック頻度が示すという判定に応答してエラー・チェック動作を実施することとを含む、コンピュータ・システムを提供する。
【図面の簡単な説明】
【００３６】
【図１】コンピューティング環境の一実施形態を示す図である。
【図２】ストレージ・デバイス情報の一実施形態を示す図である。
【図３】エラー・チェック情報の一実施形態を示す図である。
【図４】エラー・チェック動作のために機械学習モジュールを定期的に実行する動作の一実施形態を示す図である。
【図５】書き込み要求を処理する動作の一実施形態を示す図である。
【図６】エラー・チェック動作を実施する動作の一実施形態を示す図である。
【図７】ストレージ・ユニット内のエラーの可能性を決定するように機械学習モジュールを訓練する動作の一実施形態を示す図である。
【図８】フィールド・エラー処理を実施する動作の一実施形態を示す図である。
【図９】複数のストレージ・コントローラおよびストレージ・アレイを含むコンピューティング環境の追加の実施形態を示す図である。
【図１０】図１および図８の構成要素を実施することができるコンピューティング環境を示す図である。
【発明を実施するための形態】
【００３７】
ＲＡＩＤアレイなどのストレージ・アレイ内でエラー・チェック動作を定期的に実施する従来技術のシステムは、エラー・チェックおよび処理を実施することを目的として、リソースおよびストレージアクセスをアプリケーションから外方に方向付ける。この計算リソースおよびストレージ・リソースのリダイレクトの結果として、ストレージ・アレイ内のデータにアクセスしようとするアプリケーションに対する待ち時間遅延が生じる場合がある。固定間隔をおいてエラー・チェック動作を定期的に実施する従来技術のシステムは、ストレージ・アレイ内のエラーが相対的に少数である場合に、エラー・チェックを必要以上に頻繁に実施し、したがって、待ち時間遅延を不必要に引き起こす場合がある。さらに、固定間隔をおいてエラー・チェック動作を定期的に実施することによって、ストレージ・アレイ内でより多数のエラーが発生する場合に、エラー・チェックが実施される頻度が必要とされるよりも少なくなる場合があり、結果として、システム内でデータ完全性エラーが生じる場合がある。
【００３８】
説明されている実施形態は、ストレージ・デバイスについて記録されている現在の動作パラメータに基づいて、ストレージ・ユニットにおけるエラーの可能性を動的に決定するための機械学習モジュールおよびアルゴリズムを使用するエラー・チェックおよび処理動作を実施するときを決定するための改善されたコンピュータ技術を提供する。機械学習モジュールは、現在の動作状態パラメータ、および、実際の受けているエラーまたはエラーがないことに関するフィードバックを使用して、ストレージ・デバイスがエラーを受けているか否かを判定する予測正確度を改善するように、連続的に再訓練することができる。このように、記載されている実施形態は、ストレージ・デバイスにおける現在の動作条件を所与としたデータ・エラーの可能性があるか否かについての予測に基づくエラー・チェック動作を実施すべきである頻度を動的に決定することによって、エラー・チェック動作に対する計算およびストレージ・リソースの配分を最適化する。
【００３９】
図１は、コンピューティング環境の一実施形態を示す。コンピューティング・システム１００は、ストレージ・アレイ１０４内のストレージ・デバイス１０２内のデータにアクセスする。コンピューティング・システム１００は、プロセッサ１０６と、ストレージ・アレイ１０４のデータをキャッシュするためのキャッシュ１１０を含むメモリ１０８とを含む。プロセッサ１０６は、１つまたは複数の中央処理装置（ＣＰＵ）、または、単一のＣＰＵ上の複数のコアのグループを含んでもよい。キャッシュ１１０は、コンピューティング・システム内のプロセスによって要求されるデータをバッファリングする。代替的に、コンピューティング・システム１００は、ネットワーク１０７を介してコンピューティング・システム１００（ストレージ・コントローラ）に接続するホスト１０５からストレージ・アレイ１０４内のトラックに対する入出力（Ｉ／Ｏ）アクセス要求を処理するストレージ・コントローラを備えることができる。
【００４０】
メモリ１０８は、ストレージ・アレイ１０４内のトラックに対する、コンピューティング・システム１００内の内部プロセスまたはホスト１０５あるいはその両方からのアクセス要求を管理するためのストレージ・マネージャ１１２をさらに含む。キャッシュ・マネージャ１１４が、アクセスされているトラックが、ストレージ・アレイ１０４から取り出すことを必要とする代わりにより高速のアクセスキャッシュ１１０から返されることを可能にするために、トラックに対する将来の読み出しアクセスに起因して、アクセスされているトラックをキャッシュ１１０内に保持する。トラックは、ボリューム、ロジックデバイスなどのような、トラックのより大きいグループ分けの一部である、トラック、ロジックブロック・アドレス（ＬＢＡ）などのような、ストレージ・アレイ１０４内に構成される任意のデータ単位を含んでもよい。
【００４１】
メモリ１０８は、パリティまたはエラー・チェック・コード（ＥＣＣ）に従ってデータが有効であることを判定するためにパリティ・チェック動作（parity check operation）またはパリティ・スクラブなどのエラー・チェック動作を実施するためのエラー・チェック・モジュール１１６をさらに含む。エラーが検出される場合、エラー・チェック・モジュール１１６は、パリティ情報を使用したデータの訂正、パリティ情報の訂正、データのフェンシング、または、ストレージ・デバイスを交換する通知の提供などの、エラー訂正動作を実施することができる。エラー・チェック・モジュール１１６は、ストレージ・アレイ１０４内のストレージ・デバイス１０２に関する情報を有するストレージ・デバイス情報２００、および、エラー・チェック動作およびエラー処理を実施すべきであるか否かを判定するために使用されるエラー・チェック情報３００を保持する。エラー・チェック・モジュール１１６は、ストレージ・デバイス１０２にパリティ・エラー（parity error）などのエラーがあるか否かを判定するためにエラー・チェック動作が実施されることを必要とするエラーが、チェックされているストレージ・デバイス１０２において発生している可能性を示す出力値１２２を生成するために、ストレージ・デバイス情報２００を、入力１１８として機械学習モジュール１２０に提供することができる。
【００４２】
機械学習モジュール１２０は、ストレージ・デバイス情報２００の一部を入力１１８として受信し、１つのストレージ・デバイスまたはストレージ・デバイス１０２のアレイ１０４を含むストレージ・ユニットにエラーがある可能性を示す、出力値１２２または０〜１の値などの確度レベルを生成するために、決定木学習、相関ルール学習、ニューラル・ネットワーク、帰納的プログラミングロジック、サポート・ベクタ・マシン、ベイズ・モデルなどのような機械学習技法を実施することができる。
【００４３】
１つの実施形態において、機械学習モジュール１２０は、ストレージ・デバイス情報２００を含む入力１１８に基づいて出力値１２２を生成するために第１の人工ニューラル・ネットワーク・プログラムの隠れ層内のノードにおける重みおよびバイアスを調整するために、誤差逆伝搬を使用して訓練される人工ニューラル・ネットワーク・プログラムを含むことができる。誤差逆伝搬は、勾配降下を使用した人工ニューラル・ネットワークの教師あり学習のためのアルゴリズムを含むことができる。人工ニューラル・ネットワークおよびエラー関数を所与として、本方法は、ニューラル・ネットワークの重みおよびバイアスに対するエラー関数の勾配を計算することができる。
【００４４】
ストレージ・マネージャ１１２、キャッシュ・マネージャ１１４、エラー・チェック・モジュール１１６、および機械学習モジュール１２０は、図１においては、メモリ１０８にロードされ、プロセッサ１０６によって実行されるプログラム・コードとして示されている。代替的に、それらの機能の一部またはすべては、特定用途向け集積回路（ＡＳＩＣ）などのシステム１００内のハードウェア・デバイス内で実施されてもよく、または、別個の専用プロセッサによって実行されてもよい。
【００４５】
ストレージ・アレイ１０４は、ソリッド・ステート電子装置から構成されるソリッド・ステートストレージ・デバイス（ＳＳＤ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブル読み出し専用メモリ）、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）ドライブ、ストレージ・クラス・メモリ（ＳＣＭ）、相変化メモリ（ＰＣＭ）、抵抗変化型メモリ（ＲＲＡＭ）、スピン・トランスファー・トルク・メモリ（spin transfer torque memory）（ＳＴＭ−ＲＡＭ）、導電性ブリッジングＲＡＭ（ＣＢＲＡＭ）、磁気ハード・ディスク・ドライブ、光ディスク、テープなどのような、当該技術分野において知られている１つまたは複数のストレージ・デバイス１０２を含んでもよい。ストレージ・デバイス１０２はさらに、単純ディスク束（ＪＢＯＤ）、直接アクセス・ストレージ・デバイス（ＤＡＳＤ）、独立ディスク冗長アレイ（ＲＡＩＤ）アレイ、仮想化デバイスなどのような、デバイスのアレイに構成することができる。さらに、ストレージ・デバイスは、異なる供給元または同じ供給元からの異種のストレージ・デバイスを含んでもよい。
【００４６】
メモリ１０８は、上述したものを含む、適切な揮発性または不揮発性メモリ・デバイスを含んでもよい。
【００４７】
ネットワーク１０７は、ストレージ・エリア・ネットワーク（ＳＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、およびイントラネットなどを含んでもよい。
【００４８】
ＲＡＩＤ実施形態において、エラー・チェック動作は、エラー・チェック・モジュール１１６が、ストレージ・デバイス１０２内に構成されているＲＡＩＤアレイのＲＡＩＤストライプ内のブロックを読み出し、パリティ・ブロック内のパリティ・データを使用して、書き込みの脱落、メディア・エラー、チェック・サム・エラー、パリティの一貫性などのようなエラーを識別する、パリティ・スクラブを含むことができる。
【００４９】
図１においては、機械学習モジュール１２０は、エラー・チェック・モジュール１１６とは別個に示されている。さらなる実施形態において、機械学習モジュール１２０のいくつかまたはすべての構成要素は、エラー・チェック・モジュール１１６の一部であってもよい。
【００５０】
図２は、ストレージ・デバイス１０２ｉのストレージ・デバイス情報２００ｉのインスタンスの一実施形態を示し、ストレージ・デバイス１０２ｉのストレージ・デバイス識別子（ＩＤ）２０２と、エラーがないこと、または、リンク・エラー、ハードウェア・エラー、リンクの脱落を示すエキスパンダ・エラー、書き込みの脱落、電力エラーなどのようなエラーのタイプを示すことができる、エラー・チェック・モジュール１１６が最後にエラー・チェック動作を実施した結果などの最後のエラー・チェック結果２０４と、ストレージ・デバイス２０２の製造元２０６と、例えば損耗など、最初に使用されてからの時間として測定されてもよく、または、行われた書き込みの回数によって測定されてもよい使用時間２０８と、ストレージ・デバイス２０２のファームウェア・レベル２１０と、ストレージ・デバイス２０２において追跡される最後の数回の書き込み（Ｎ）について測定される１秒あたりの読み出し動作（「ＯＰＳ」）率２１２と、ストレージ・デバイス２０２において追跡される最後の数回の書き込み（Ｎ）について測定される１秒あたりの書き込み動作率２１４とを含む。ストレージ・デバイス情報２００ｉは、２０２、２０６、２１０などの静的情報、ならびに、ブロック２０４、２０８、２１２、および２１４内などの、連続的に更新され得る動的情報を含む。例えば、最後のエラー・チェック結果２０４は、ストレージ・デバイス１０２ｉにおいてエラー・チェック動作が実施される度に更新されてもよく、１秒あたりの読み出し動作２１２および書き込み動作２１４ならびに使用時間２０８は、１回または複数回の読み出し／書き込み動作の後に更新されてもよい。
【００５１】
図３は、例えば、ＲＡＩＤランクＩＤまたはストレージ・デバイスＩＤ１０２ｉなどのストレージ・ユニットＩＤ３０２と、ストレージ・ユニット３０２に関する最後のエラー・チェック動作から行われた書き込みの回数を示す書き込みカウンタ３０４と、ストレージ・ユニット３０２におけるエラー・チェック動作が実施される前に行われなければならない書き込みの回数を示すエラー・チェック頻度３０６と、ストレージ・ユニット３０２について機械学習モジュール１２０によって計算される最後の出力値３０８と、エラーが検出されることなくストレージ・ユニット３０２において行われたエラー・チェック動作の回数を示すエラー・チェック・カウンタ３１０とを含む、ストレージ・デバイス１０２のＲＡＩＤランクまたは１つのストレージ・デバイス１０２ｉなどのストレージ・ユニットについて保持されているエラー・チェック情報３００ｉのインスタンスを示す。
【００５２】
図３の実施形態によれば、エラー・チェック情報３００ｉのインスタンスは、ストレージ・デバイス１０２ｉの各々について保持され得、すなわち、ストレージ・デバイス特有のエラー・チェック情報であり得、または、書き込みが複数のストレージ・デバイスにまたがってデータをストライプする、ＲＡＩＤランクなどのストレージ・ユニット内のすべてのストレージ・デバイスについて保持され得る。
【００５３】
図４は、エラー・チェック動作を実施しまたはエラー・チェック頻度３０６を調整すべきであるか否かを決定するために機械学習モジュール１２０を定期的に実行するために、エラー・チェック・モジュール１１６または機械学習モジュール１２０あるいはその両方によって実施される動作の一実施形態を示す。機械学習モジュール１２０は、ある時間間隔をおいて定期的にまたはイベントに応答して実行されてもよい。機械学習モジュール１２０は、ストレージ・デバイス１０２の各々について、または、ＲＡＩＤランク（もしくは他のタイプのストレージ・アレイ）内のすべてのストレージ・デバイス１０２について訓練するためにＲＡＩＤランクについて、別個に呼び出すことができる。１つのストレージ・デバイス１０２ｉまたは複数のストレージ・デバイス１０２のＲＡＩＤランクもしくはストレージ・アレイを含んでもよいストレージ・ユニットについて機械学習モジュール１２０が呼び出されると（ブロック４００において）、入力１１８が、ストレージ・ユニットを含む１つまたは複数のストレージ・デバイス１０２ｉのストレージ・デバイス情報２００ｉから決定される（ブロック４０２において）。エラー・チェック情報３００ｉが個々のストレージ・デバイス１０２ｉについて提供される実施形態において、機械学習モジュール１２０は、入力１１８として、１つのみのストレージ・デバイス１０２ｉのストレージ・デバイス情報２００ｉを受信することができる。エラー・チェック情報３００ｉがストレージ・デバイスのＲＡＩＤランクについて提供される実施形態において、機械学習モジュール１２０は、入力１１８として、ＲＡＩＤランク内のすべてのストレージ・デバイス１０２のストレージ・デバイス情報２００ｉを受信することができる。
【００５４】
機械学習モジュール１２０は、ストレージ・ユニット（すなわち、ストレージ・デバイスまたはストレージ／ＲＡＩＤアレイ）においてエラーが発生している可能性を示す出力値１２２を生成するために決定されている入力１１８によって呼び出される（ブロック４０４において）。１つの実施形態において、出力値１２２は、０〜１であってもよく、０により近い値は、ストレージ・ユニットにおいてエラーが発生している可能性がより低いことを示し、１により近い値は、ストレージ・ユニットにおいてエラーが発生している可能性がより高いことを示す。
【００５５】
（ブロック４０６において）出力値が下限未満である場合、これはデータ・エラーの可能性が低いことを示し得、制御は終了する。（ブロック４０６のいいえ分岐から）出力値が下限よりも高いが（ブロック４０８のいいえ分岐から）上限未満である場合、ストレージ・ユニットのエラー・チェック頻度３０６を、出力値に基づいて調整することができる（ブロック４１０において）。１つの実施形態において、エラー・チェック頻度３０６は、エラー・チェック頻度３０６を、エラー・チェックのための最後の固定書き込み回数（Ｎ）を出力値によって除算した数に設定することによって、調整することができる。代替的な実施形態において、エラー・チェック頻度３０６を調整するために、他の計算および変数が、出力値とともに考慮されてもよい。（ブロック４０８において）出力値が上限よりも大きい場合、これはストレージ・ユニットにおけるエラーの可能性がより高いことを示し、制御は（ブロック４１２において）図６に進み、例えばパリティ・チェックなどのエラー・チェック動作を、例えば１つのストレージ・デバイスまたはストレージ・デバイス１０２のランクなどのストレージ・ユニットにおける最後のＮ回の書き込みに関して実施する。
【００５６】
図４の実施形態によれば、機械学習モジュール１２０は、ストレージ・ユニット内の１つまたは複数のストレージ・デバイスの実際の動作条件に基づいて、ストレージ・ユニット内にエラーがある可能性を決定するために実行される。この可能性は、エラーの可能性が、ストレージ・デバイス１０２における現在の動作条件、ならびに、ストレージ・デバイス１０２のそのような動作条件をエラーの可能性に関係付ける統計および確率モデルに基づいて決定されるようにする訓練された機械学習アルゴリズムに基づく。このように、エラー・チェック頻度の決定は、ストレージ・ユニットにおけるエラーの可能性がより大きい場合にエラー・チェック頻度３０６が増大され、すなわち、書き込み回数の頻度が低減され、ストレージ・ユニットにおけるエラーの可能性がより少ない場合にエラー・チェック頻度３０６が低減される、すなわち、書き込み回数の頻度が増大されるように、エラーの可能性に基づいて調整される。ＲＡＩＤアレイストレージ・ユニットに対するパリティ・スクラブなどのエラー・チェック動作は、相当の処理リソースを消費し、他の動作における待ち時間を引き起こす場合があるため、実際のエラー条件に基づいてエラー・チェック頻度を調整することによって、システム・リソースの配分が改善する。エラーの可能性が低い場合、エラー・チェック頻度を低減してエラー・チェック動作の回数を低減することができ、したがって、リソースが解放されて他の動作の待ち時間が低減する。一方、エラーの可能性がより高い場合、データ・エラーを補正する利点の重要性が、他の動作の待ち時間が増大する悪影響を埋め合わせるため、エラー・チェック頻度が増大され得る。このように、エラー・チェック頻度を調整するために機械学習モジュール１２０を使用することによって、エラー・チェックと他の動作との間のリソースの配分が最適化される。
【００５７】
図５は、ストレージ・ユニット（ストレージ・デバイスまたはストレージ・デバイスのＲＡＩＤランク）に対する書き込み要求を処理するためにストレージ・マネージャ１１２によって実施される動作の一実施形態を示す。書き込み要求が受信されると（ブロック５０２において）、書き込み要求が、ストレージ・デバイス１０２ｉに書き込まれるか、または、ストレージ・デバイス１０２のランクにまたがってストライプされるなど、処理される（ブロック５０４において）。ストレージ・ユニットの書き込みカウンタ３０４が増分され（ブロック５０６において）、ストレージ・ユニット内の１つまたは複数のストレージ・デバイスのストレージ・デバイス情報２００ｉが、フィールド２０８、２１２、２１４内などで更新される（ブロック５０８において）。（ブロック５１０において）書き込みカウンタ３０４がエラー・チェック頻度３０６以上である場合、書き込みカウンタ３０４がリセットされ（ブロック５１２において）、制御は（ブロック５１４において）図６に進み、例えばパリティ・チェックなどのエラー・チェック動作を、例えば１つのストレージ・デバイスまたはストレージ・デバイス１０２のランクなどのストレージ・ユニットにおける最後のＮ回の書き込みに関して実施する。（ブロック５１０において）書き込みカウンタがエラー・チェック頻度３０６未満である場合、制御は終了する。
【００５８】
図５において、エラー・チェックすべきか否かの決定は、書き込みカウンタ３０４がエラー・チェック頻度３０６よりも大きいかまたは小さいかに基づく。代替的な実施形態において、他の条件または書き込みカウンタ３０４とエラー・チェック頻度３０６との間の関係が、エラー・チェックすべきか否かの決定に使用されてもよい。
【００５９】
図５の実施形態によれば、エラー・チェック動作は、書き込みカウンタが、ストレージ・デバイスに関するエラー発生の可能性の決定に基づいて調整される、エラー・チェック頻度３０６を超えるときにエラーをチェックするように最適化される。
【００６０】
図６は、機械学習モジュール１２０が高い出力値１２２を生成するときに図４のブロック４１２において呼び出され得、および、書き込みカウンタ３０４がエラー・チェック頻度３０６を超える場合に図５のブロック５１４において呼び出され得るエラー・チェック・モジュール１１６によって実施されるエラー・チェック動作の一実施形態を示す。（ブロック６００において）エラー・チェック動作が開始されると、エラー・チェック・カウンタ３１０が増分され（ブロック６０２において）、ストレージ・ユニット（１つまたは複数のストレージ・デバイス１０２）に対する最後の固定回数の書き込み（Ｎ）に対してエラー・チェック動作が実施される（ブロック６０４において）。エラー・チェック動作は、パリティ・チェックまたはエラー訂正コード・チェック動作を含むことができる。（ブロック６０６において）エラーが検出された場合、エラーのない連続するエラー・チェック動作の回数を示すエラー・チェック・カウンタ３１０がリセットされる（ブロック６０８において）。エラー・チェック・モジュール１１６は、チェックされる最後のＮ回の書き込みのデータまたはパリティ情報あるいはその両方のエラーを訂正するためにエラー処理動作を実施する（ブロック６１０において）。エラー処理は、パリティ情報から最後のＮ回の書き込みにおけるデータを訂正し、または、データからパリティ情報を訂正することができる。エラー処理を実施した後、制御は（ブロック６１２において）図７に進み、例えば、１の所望の出力値など、エラー・チェック動作を実施すべきであることを示す最高の出力値を含む所望の出力値を有するストレージ・ユニット（エラーを有するデバイスまたはストレージ・デバイスのランク）のために機械学習モジュール１２０を訓練する。
【００６１】
（ブロック６０６において）エラーが検出されなかった場合、エラーのない連続するエラー・チェック動作の回数を示すエラー・チェック・カウンタ３１０が増分される（ブロック６１４において）。エラー・チェック・カウンタ３１０がエラー・チェック動作のエラーなし閾値数以上であるか否かの判定が行われる（ブロック６１６において）。（ブロック６１６において）エラー・チェック・カウンタがエラーなし閾値を超えた場合、すなわち、エラーが検出されない閾回数のエラー・チェック動作が行われた場合、エラー・チェック・カウンタ３１８がリセットされ（ブロック６１８において）、制御は図７に進み（ブロック６２０において）、０．００１などの、エラー・チェック動作を実施すべきでないことを示す低閾値を含む所望の出力値を有するストレージ・ユニット（エラーを有するデバイスまたはストレージ・デバイスのランク）のために機械学習モジュール１２０を訓練する。（ブロック６１６において）エラー・チェック・カウンタ３１０がエラーなし閾値を超えない場合、出力値を下方調整するのを許容するのに十分な数のエラーのないエラー・チェック動作がなかったため、出力値を低減するように機械学習モジュール１２０を再訓練することなく、制御は終了する。
【００６２】
図６の実施形態によれば、エラー・チェックを実施した後、機械学習モジュール１２０は、同様の動作条件が将来において生じるときに機械学習モジュール１２０がエラーを正確に予測することができる可能性を増大させるために、エラーをもたらしたストレージ・ユニットにおける現在の動作の動作条件からエラーの高い可能性を示す出力値を生成するように訓練される。同様に、所定回数のエラー・チェック動作を実施した後、機械学習モジュール１２０は、同様の動作条件が将来において生じるときに機械学習モジュール１２０がエラーがないことを正確に予測することができる可能性を増大させるために、数回のエラー・チェック動作についてエラーを発生させなかったストレージ・ユニットにおける現在の動作の動作条件からエラーの低い可能性を示す出力値を生成するように訓練される。
【００６３】
図７は、エラーが検出されたか（図６のブロック６１２）または閾回数だけ検出されなかったか（図６のブロック６２０から）に応じて、より高いまたはより低い出力値など、所望の出力値を生成するように機械学習モジュール１２０を再訓練するために、エラー・チェック・モジュール１１６または機械学習モジュール１２０あるいはその両方によって実施される動作の一実施形態を示す。ストレージ・ユニット（ストレージ・デバイスまたはストレージ・デバイスのランク）の所望の出力値を生成するために機械学習モジュール１２０を訓練する動作が開始されると（ブロック７００において）、機械学習モジュール１２０がそのために訓練されているストレージ・ユニット内の１つまたは複数のストレージ・デバイスの現在のストレージ・デバイス情報２００ｉから入力の決定が行われる（ブロック７０２において）。現在の出力値１２２を生成するために決定されている入力を用いて機械学習モジュール１２０が実行される（ブロック７０４において）。所望の出力値および現在の出力値１２２のエラーのマージンの決定が行われる（ブロック７０６において）。所望の出力値を生成するために決定されている入力１１８およびエラーのマージンならびに他の情報を使用して機械学習モジュール１２０が訓練される（ブロック７０８において）。機械学習モジュール１２０は、所望の出力値を生成するために、エラーのマージンを低減するために誤差逆伝搬を使用して訓練することができる。機械学習モジュール１２０のアルゴリズムが人工ニューラル・ネットワークを含む実施形態において、誤差逆伝搬ルーチンを使用して、所望の出力値１２２を生成するように機械学習モジュール１２０を再訓練することができる。ベイズ・モデルなどの他のタイプの機械学習アルゴリズムについて、他の技法を使用して、所望の出力値を生成するように機械学習モジュール１２０を再訓練してもよい。その後、例えば、機械学習モジュール１２０の隠れ層の調整された重みおよびバイアスなどの設定が、後の使用のために保存される（ブロック７１０において）。
【００６４】
図７の実施形態によれば、機械学習モジュール１２０は、機械学習モジュール１２０が、例えば、単一のストレージ・デバイスまたはストレージ・デバイスのアレイなどの、ストレージ・ユニットにおけるエラーの可能性をより正確に予測するようにするために、ストレージ・デバイスの現在の属性に基づいて現在のエラーの可能性を反映する所望の出力値を生成するように再訓練される。
【００６５】
図１〜図７の実施形態において、機械学習モジュール１２０は、単一のコンピュータ・システム、および、１つまたは複数のＲＡＩＤランクを有するストレージ・アレイ１０４の１つまたは複数のストレージ・デバイスにおけるエラーの可能性を決定する。
【００６６】
図８は、脱落エラーまたは他の単独で遭遇するエラーなどの、検出されているフィールド・エラーを処理するために、エラー・チェック・モジュール１１６または機械学習モジュール１２０あるいはその両方によって実施される動作の一実施形態を示す。フィールド・エラー処理が開始されると（ブロック８０２において）、書き込みの脱落などのフィールド・エラーが検出され（ブロック８０４において）、エラー・チェック・カウンタ３１０がリセットされる（ブロック８０６において）。最後のＮ回の書き込みのデータまたはパリティあるいはその両方のエラーを訂正するかまたはエラーを有するストレージ・デバイス１０２をフェンスし、新たなストレージ・デバイス上でデータを再構築するエラー処理動作が実施される（ブロック８０８において）。制御はその後、図７に進み（ブロック８１０において）、フィールド・エラーの検出に起因して、エラー・チェック動作を実施すべきであることを示す最高の出力値を含む所望の出力値を有するストレージ・ユニット（エラーを有するデバイスまたはストレージ・デバイスのランク）のために機械学習モジュール１２０を訓練する。
【００６７】
図８の実施形態によれば、機械学習モジュールは、図６のエラー・チェック動作の外部のフィールド・エラーの検出を受けて、検出されているフィールド・エラーの時点において入力１１８が行われる場合にエラー・チェックを実施することを示す値を出力するために機械学習モジュール１２０を再訓練するように、訓練される。
【００６８】
図９は、図１〜図８に関連して説明したコンピューティング・システム１００が、ネットワーク９０４を介して、ストレージ・アレイ９０２１、９０２２．．．９０２ｍへのアクセスを各々が管理する複数のストレージ・コントローラ９００１、９００２．．．９００ｍと通信する追加の実施形態を示す。機械学習モジュール１２０は、エラー・チェックおよび訂正動作を開始すべきか否かを決定するために使用するための、ストレージ・アレイ９０２１、９０２２．．．９０２ｍを管理するストレージ・コントローラ９００１、９００２．．．９００ｍの出力値を計算するために、ストレージ・アレイ９０２１、９０２２．．．９０２ｍ内の１つまたは複数のストレージ・デバイスから入力を受信する。このように、機械学習モジュール１２０は、複数のストレージ・アレイ９０２１、９０２２．．．９０２ｍ内のストレージ・デバイスから訓練されるため、より頻繁に、したがってより正確にすることができる。機械学習モジュール１２０、ストレージ・デバイス情報２００およびエラー・チェック情報３００は、コンピューティング・システム１００内に保持することができるが、エラー・チェック・モジュール１１６は、ストレージ・コントローラ９００１、９００２．．．９００ｍの各々の中にローカルに保持することができる。
【００６９】
記載されている実施形態において、変数「ｉ、ｍ、ｎ」などは、種々の要素とともに使用されるとき、その要素の同じまたは異なるインスタンスを示すことができる。
【００７０】
本発明は、システム、方法、またはコンピュータ・プログラムあるいはその組合せであってもよい。コンピュータ・プログラムは、プロセッサに、本発明の諸態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体を含むこともできる。
【００７１】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は例えば、限定ではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せであってもよい。コンピュータ可読ストレージ媒体のより特定的な例の包括的でないリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）ディスク、パンチ・カード、または、命令を記録されている溝の中の隆起構造のような機械的に符号化されているデバイス、および、上記の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書において使用されるものとしては、無線波、または、他の自由に伝播する電磁波、導波路もしくは他の伝送媒体（例えば、光ファイバケーブルを通過する光パルス）を通じて伝播する電磁波、または、ワイヤを通じて伝送される電気信号のような、一過性信号自体として解釈されるべきではない。
【００７２】
本明細書において記載されているコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスへ、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークもしくはワイヤレス・ネットワークまたはその両方を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジサーバあるいはその組合せを含んでもよい。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体内に記憶するために、コンピュータ可読プログラム命令を転送する。
【００７３】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのようなオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語もしくは同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組合せで書かれているソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、その全体をユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的に遠隔コンピュータ上で、またはその全体を遠隔コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、遠隔コンピュータが、ユーザのローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され、または、接続は、外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）行われる。いくつかの実施形態において、例えば、プログラム可能ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラム可能ロジックアレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行することができる。
【００７４】
本発明の態様は、本明細書において、本発明の実施形態による、方法、装置（システム）およびコンピュータ・プログラムのフローチャートの図またはブロック図あるいはその両方を参照して説明されている。フローチャートの図またはブロック図あるいはその両方の各ブロック、および、フローチャートの図またはブロック図あるいはその両方の中の複数のブロックの組合せはそれぞれ、コンピュータ可読プログラム命令によって実装されることができることは理解されよう。
【００７５】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートの図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成するものであってよい。これらのコンピュータ可読プログラム命令はまた、命令を記憶されているコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読ストレージ媒体内に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイスあるいはその組合せに特定の様式で機能するように指示することができるものであってもよい。
【００７６】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実施するように、コンピュータで実施されるプロセスを生成するために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００７７】
図面内のフローチャートおよびブロック図は本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、および動作を例示する。これに関連して、フローチャートおよびブロック図内の各ブロックは、指定のロジック機能を実施するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部分を表すことができる。いくつかの代替的な実施態様において、ブロックに記載されている機能は、図面に記載されている順序と一致せずに行われてもよい。例えば、連続して示されている２つのブロックは実際には、関与する機能に依って、実質的に同時に実行されてもよく、または、これらのブロックは、時として逆順に実行されてもよい。また、ブロック図またはフローチャートの図あるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方のブロックの組合せは、指定の機能もしくは動作を実施するか、または、専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースシステムによって実施することができることも留意されよう。
【００７８】
ホスト１０５、コンピューティング・システム１００、およびストレージ・コントローラ９００１、９００２．．．９００ｍを含む図１および図８の計算構成要素は、図１０に示すコンピュータ・システム１００２などの１つまたは複数のコンピュータ・システム内で実施することができる。コンピュータ・システム／サーバ１００２は、コンピュータ・システムによって実行されている、プログラム・モジュールのようなコンピュータ・システム実行可能命令の一般的な文脈において説明され得る。一般的に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含む。コンピュータ・システム／サーバ１００２は、タスクが、通信ネットワークを通じてリンクされる遠隔処理デバイスによって実行される、分散クラウド・コンピューティング環境において実践されることもできる。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリストレージ・デバイスを含むローカルおよび遠隔コンピュータ・システムストレージ媒体の両方内に位置することができる。
【００７９】
図１０に示すように、コンピュータ・システム／サーバ１００２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ１００２の構成要素は、限定ではないが、１つまたは複数のプロセッサまたは処理ユニット１００４、システム・メモリ１００６、および、システム・メモリ１００６を含む様々なシステム構成要素をプロセッサ１００４に結合するバス１００８を含むことができる。バス１００８は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレイテッド・グラフィックス・ポート、および、様々なバスアーキテクチャのうちのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかのうちの１つまたは複数を表す。例として、限定ではなく、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子機器標準規格化協会（ＶＥＳＡ）ローカル・バス、および周辺構成要素相互接続（ＰＣＩ）バスを含む。
【００８０】
コンピュータ・システム／サーバ１００２は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１００２によってアクセス可能である任意の利用可能な媒体であってもよく、揮発性および不揮発性両方の媒体、取り外し可能および固定媒体を含む。
【００８１】
システム・メモリ１００６は、ランダム・アクセス・メモリ（ＲＡＭ）１０１０またはキャッシュ・メモリ１０１２あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１００２は、他の取り外し可能／固定、揮発性／不揮発性コンピュータ・システムストレージ媒体をさらに含んでもよい。ほんの一例として、固定不揮発性磁気媒体（図示せず、典型的には「ハード・ドライブ」と呼ばれる）に対して読み書きするためのストレージ・システム１０１３を提供することができる。図示されず、取り外し可能不揮発性磁気ディスク（例えば、「フロッピー（Ｒ）ディスク」）に対して読み書きするための磁気ディスク・ドライブ、および、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体などの取り外し可能不揮発性光ディスクに対して読み書きするための光ディスク・ドライブを提供することができる。そのような場合、各々を、１つまたは複数のデータ・メディア・インターフェースによってバス１００８に接続することができる。下記にさらに示し、説明するように、メモリ１００６は、本発明の実施形態の機能を実行するように構成されているプログラム・モジュールのセット（例えば、少なくとも１つのプログラム・モジュール）を有する少なくとも１つのプログラムを含むことができる。
【００８２】
限定ではなく例として、プログラム・モジュール１０１６のセット（少なくとも１つのプログラム・モジュール）を有するプログラム／ユーティリティ１０１４、ならびに、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを、メモリ１００６に記憶することができる。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々またはそれらの任意の組合せは、ネットワーキング環境の実施態様を含むことができる。コンピュータ１００２の構成要素は、一般的に、本明細書に記載されているような本発明の実施形態の機能または方法論あるいはその両方を実行するプログラム・モジュール１０１６として実施することができる。図１のシステムは、１つまたは複数のコンピュータ・システム１００２において実施することができ、ここで、それらが複数のコンピュータ・システム１００２において実施される場合、コンピュータ・システムは、ネットワークを介して通信することができる。
【００８３】
コンピュータ・システム／サーバ１００２はまた、キーボード、ポインティング・デバイス、ディスプレイ１０２０など、ユーザがコンピュータ・システム／サーバ１００２と対話することを可能にする１つまたは複数のデバイス、または、コンピュータ・システム／サーバ１００２が１つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組合せなどの、１つまたは複数の外部デバイス１０１８と通信することもできる。そのような通信は、入出力（Ｉ／Ｏ）インターフェース１０２２を介して行うことができる。またさらに、コンピュータ・システム／サーバ１００２は、ネットワーク・アダプタ１０２４を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的な広域ネットワーク（ＷＡＮ）、または公衆ネットワーク（例えば、インターネット）あるいはその組合せなどの１つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ１０２４は、バス１００８を介してコンピュータ・システム／サーバ１００２の他の構成要素と通信する。図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方が、コンピュータ・システム／サーバ１００２とともに使用されてもよいことは理解されたい。例は、限定ではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ記録ストレージ・システムなどを含む。
【００８４】
「一実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」、「実施形態（ｅｍｂｏｄｉｍｅｎｔ）」、「複数の実施形態（ｅｍｂｏｄｉｍｅｎｔｓ）」、「その実施形態（ｔｈｅ  ｅｍｂｏｄｉｍｅｎｔ）」、「それらの実施形態（ｔｈｅ  ｅｍｂｏｄｉｍｅｎｔｓ）」、「１つまたは複数の実施形態（ｏｎｅ  ｏｒ  ｍｏｒｅ  ｅｍｂｏｄｉｍｅｎｔｓ）」、「いくつかの実施形態（ｓｏｍｅ  ｅｍｂｏｄｉｍｅｎｔｓ）」、および「１つの実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」という用語は、明示的に別途指定されない限り、「本発明の１つまたは複数の（ただしすべてではない）実施形態」を意味する。
【００８５】
用語「含む」、「備える」、「有する」およびその変化形は、明示的に別途指定されない限り、「含むが、限定されない」ことを意味する。
【００８６】
項目の列挙されているリストは、明示的に別途指定されない限り、それらの項目のいずれかまたはすべてが相互に排他的であることを暗示しない。
【００８７】
用語「１つの（ａ）」、「ある（ａｎ）」および「その（ｔｈｅ）」は、明示的に別途指定されない限り、「１つまたは複数」を意味する。
【００８８】
互いに通信している装置は、明示的に別途指定されない限り、互いに連続的に通信している必要はない。加えて、互いに通信している装置は、直接的に通信してもよく、または、１つまたは複数の中間物を通じて間接的に通信してもよい。
【００８９】
互いに通信しているいくつかの構成要素を有する実施形態の記述は、すべてのそのような構成要素が必要とされることを暗示しない。逆に、様々な任意選択の構成要素は、本発明の多種多様な可能性のある実施形態を例示するために記載されている。
【００９０】
単一のデバイスまたは物品が本明細書において記載されている場合、単一のデバイス／物品の代わりに２つ以上のデバイス／物品が（それらが協働するか否かにかかわらず）使用されてもよいことは容易に明らかとなろう。同様に、２つ以上のデバイスまたは物品が本明細書において記載されている場合（それらが協働するか否かにかかわらず）、２つ以上のデバイスまたは物品の代わりに単一のデバイス／物品が使用されてもよく、または、示されている数のデバイスまたはプログラムの代わりに異なる数のデバイス／物品が使用されてもよいことは容易に明らかとなろう。デバイスの機能または特徴あるいはその両方は代替的に、そのような機能／特徴を有するものとして明示的に記載されていない１つまたは複数の他のデバイスによって具現化されてもよい。したがって、本発明の他の実施形態は、デバイス自体を含む必要はない。
【００９１】
本発明の様々な実施形態の上記の記載は、例示および説明の目的で提示されてきた。排他的であることも、本発明を開示された正確な形態に限定することも意図されてはいない。上記の教示を考慮して多くの改変および変更が可能である。この詳細な説明ではなく、本明細書に添付される特許請求の範囲によって、本発明の範囲が限定されることが意図される。上記の明細書、例およびデータは本発明の構成の製造および使用の完全な記載を提供する。本発明の多くの実施形態は本発明の範囲から逸脱することなく成すことができるため、本発明は、本明細書に添付の特許請求の範囲に含まれる。
【図１】
2021531534.tif 000003
【図２】
2021531534.tif 000004
【図３】
2021531534.tif 000005
【図４】
2021531534.tif 000006
【図５】
2021531534.tif 000007
【図６】
2021531534.tif 000008
【図７】
2021531534.tif 000009
【図８】
2021531534.tif 000010
【図９】
2021531534.tif 000011
【図１０】
2021531534.tif 000012
【手続補正書】
【提出日】令和3年5月10日(2021.5.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・プログラムであって、
コンピュータに、
前記ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して、出力値を生成することと、
エラー・チェック頻度を前記出力値から決定することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
を実行させる、コンピュータ・プログラム。
【請求項２】
前記ストレージ・ユニットが、ストレージ・デバイスのアレイまたは１つのストレージ・デバイスのうちの一方を含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記ストレージ・ユニットの属性に関する前記入力を提供することは、前記出力値を定期的に生成するために前記機械学習モジュールに前記入力を定期的に提供することを含み、前記エラー・チェック頻度を決定する前記動作、および、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定する前記動作を提供する、請求項１に記載のコンピュータ・プログラム。
【請求項４】
前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項１に記載のコンピュータ・プログラム。
【請求項５】
前記エラー・チェック動作を実施する決定に応答して、前記書き込みカウンタをゼロにリセットすることをさらに実行させる、請求項４に記載のコンピュータ・プログラム。
【請求項６】
前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す０〜１の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
を含む、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記エラー・チェック動作が、最後の固定回数の書き込みをチェックし、前記エラー・チェック頻度を調整することが、前記エラー・チェック頻度を、前記最後の固定書き込み回数を前記出力値によって除算した数に設定する、請求項６に記載のコンピュータ・プログラム。
【請求項８】
前記機械学習モジュールへの前記入力として使用される前記少なくとも１つのストレージの前記属性が、
前記エラー・チェック動作の最後の実行中に前記エラー・チェック動作がエラーを検出した場合のエラー・タイプ、または、前記最後の実行中に前記エラー・チェック動作がエラーを検出しなかった場合のエラーがないという指示と、
前記ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスのタイプと、
前記少なくとも１つのストレージ・デバイスが最初に使用されてからの使用時間と、
前記少なくとも１つのストレージ・デバイスのファームウェア・レベルと、
前記少なくとも１つのストレージ・デバイスにおける１秒あたりの読み出し動作と、
前記少なくとも１つのストレージ・デバイスにおける１秒あたりの書き込み動作と
のうちの少なくとも１つを含む、請求項１に記載のコンピュータ・プログラム。
【請求項９】
前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
をさらに実行させる、請求項１に記載のコンピュータ・プログラム。
【請求項１０】
ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・プログラムであって、実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ媒体を備え、前記動作は、
機械学習モジュールを訓練することを決定することと、
前記機械学習モジュールを訓練するという決定に応答して、
前記ストレージ・ユニットの少なくとも１つのストレージ・デバイスの属性を含む入力を決定すること、および
前記エラーの検出に応答して決定されている前記入力から前記ストレージ・ユニットのエラー・チェック動作を実施することを示す所望の出力値を生成するように、前記機械学習モジュールを訓練すること
を実施することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであるか否かを判定するために使用される出力値を生成するために、前記機械学習モジュールを実行することと
を含む、コンピュータ・プログラム。
【請求項１１】
前記動作は、
前記エラー・チェック動作を実施しながらエラーを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記エラーの検出に応答して行われる、前記検出することと、
前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
をさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１２】
前記動作は、
固定回数のエラー・チェック動作以内にエラーが検出されなかったことを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記固定回数のエラー・チェック動作以内に前記エラーが検出されなかったという判定に応答して行われる、前記検出することと、
前記固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して、前記所望の出力値を、前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施しないことを示す出力値に設定することと
をさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１３】
前記機械学習モジュールを訓練することは、
前記機械学習モジュールの前記出力値および前記所望の出力値のエラーのマージンを決定することと、
前記所望の出力値を生成するために、前記エラーのマージンおよび前記入力を使用して、前記機械学習モジュール内のノードの重みおよびバイアスを訓練することと
を含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１４】
ストレージ・コントローラが前記ストレージ・コントローラによって管理されるストレージ・アレイ内の前記ストレージ・デバイスに関してエラー・チェック動作を実施すべきであるか否かを示す、前記ストレージ・デバイスからの入力に基づいて、前記ストレージ・コントローラに出力値を提供するために、前記機械学習モジュールが、前記ストレージ・コントローラによって管理されるストレージ・デバイスの前記ストレージ・アレイからの前記入力から出力値を生成する、請求項１０に記載のコンピュータ・プログラム。
【請求項１５】
前記動作は、
前記エラー・チェック動作から独立してフィールド・エラーを検出することであって、前記機械学習モジュールを訓練するという前記決定が、前記フィールド・エラーの検出に応答して行われる、前記検出することと、
前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
をさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１６】
ストレージ・ユニット内のデータをエラー・チェックするためのコンピュータ・システムであって、
プロセッサと、
実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ媒体と
を備え、前記動作は、
前記ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して、出力値を生成することと、
エラー・チェック頻度を前記出力値から決定することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
を含む、コンピュータ・システム。
【請求項１７】
前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項１６に記載のシステム。
【請求項１８】
前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す０〜１の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
を含む、請求項１６に記載のシステム。
【請求項１９】
前記動作は、
前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
をさらに含む、請求項１６に記載のシステム。
【請求項２０】
ストレージ・ユニット内のデータをエラー・チェックするためのシステムであって、
プロセッサと、
実行されると動作を実施するコンピュータ可読プログラム・コードを記憶しているコンピュータ可読ストレージ・媒体と
を備え、前記動作は、
機械学習モジュールを訓練することを決定することと、
前記機械学習モジュールを訓練するという決定に応答して、
前記ストレージ・ユニットの少なくとも１つのストレージ・デバイスの属性を含む入力を決定すること、および
前記エラーの検出に応答して決定されている前記入力から前記ストレージ・ユニットのエラー・チェック動作を実施することを示す所望の出力値を生成するように、前記機械学習モジュールを訓練すること
を実施することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであるか否かを判定するために使用される出力値を生成するために、前記機械学習モジュールを実行することと
を含む、システム。
【請求項２１】
前記動作は、
前記エラー・チェック動作を実施しながらエラーを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記エラーの検出に応答して行われる、前記検出することと、
前記所望の出力値を、前記エラーの検出に応答して前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施することを示す出力値に設定することと
をさらに含む、請求項２０に記載のシステム。
【請求項２２】
前記動作は、
固定回数のエラー・チェック動作以内にエラーが検出されなかったことを検出することであって、前記機械学習モジュールを訓練するという前記決定は、前記固定回数のエラー・チェック動作以内に前記エラーが検出されなかったという判定に応答して行われる、前記検出することと、
前記固定回数のエラー・チェック動作以内にエラーが検出されなかったという判定に応答して、前記所望の出力値を、前記機械学習モジュールを訓練するのに使用するためのエラー・チェックを実施しないことを示す出力値に設定することと
をさらに含む、請求項２０に記載のシステム。
【請求項２３】
ストレージ・ユニット内のデータをエラー・チェックするための方法であって、
前記ストレージ・ユニットを含む少なくとも１つのストレージ・デバイスの属性に関する入力を機械学習モジュールに提供して、出力値を生成することと、
エラー・チェック頻度を前記出力値から決定することと、
前記ストレージ・ユニットに関してエラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することと、
前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すという判定に応答して、前記エラー・チェック動作を実施することと
を含む、方法。
【請求項２４】
前記出力値から前記エラー・チェック頻度を決定することは、書き込みの回数を前記出力値の関数として決定することを含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを前記判定することは、
書き込みカウンタが前記エラー・チェック頻度を超えるか否かを判定することを含み、前記エラー・チェック動作は、前記書き込みカウンタが前記エラー・チェック頻度を超えたことに応答して実施される、請求項２３に記載の方法。
【請求項２５】
前記出力値が、前記ストレージ・ユニット内にエラーが存在する可能性を示す０〜１の数を含み、前記エラー・チェック動作を実施すべきであることを前記エラー・チェック頻度が示すか否かを判定することは、
前記出力値が下限未満であることに応答して前記エラー・チェック動作を実施しないことと、
前記出力値が上限よりも大きいことに応答して前記エラー・チェック動作を実施することと、
前記出力値が前記下限と前記上限との間にあることに応答して、前記出力値に基づいて前記エラー・チェック頻度を調整することと
を含む、請求項２３に記載の方法。
【請求項２６】
前記ストレージ・ユニットに対して書き込み動作が実施されるのに応答して書き込みカウンタを増分することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する条件を満たすか否かを判定することと、
前記書き込みカウンタが前記エラー・チェック頻度に関する前記条件を満たすという判定に応答して前記エラー・チェック動作を実施し、前記書き込みカウンタをリセットすることと
をさらに含む、請求項２３に記載の方法。
【国際調査報告】
2021531534.tif 000013
2021531534.tif 000014