(57)【要約】【課題】ＲＡＩＤのリビルドを強化するための機械学習を利用した方法、コンピュータ・プログラム製品およびコンピュータ・システムを提供する。【解決手段】（ｉ）ＲＡＩＤアレイの複数のディスク・ドライブにわたる複数のファイル、および（ｉｉ）ファイルのためのチェックサム・データを記憶するためのマシン・ロジック（例えば、ソフトウェア）。マシン・ロジック規則は、ファイルの１つまたは複数の属性に基づいて各ファイルに優先度値を割り当てる。これらの優先度値を用いて、最も重要なファイルが最初にリビルドされるように、チェックサム・データを用いてファイルがリビルドされる順序を決定する。【選択図】図２
2021503115.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置を含む、ストライピングされた独立デバイス冗長アレイ（ＲＡＩＤ）ストレージ・システムに複数のデータ・ブロックを記憶することと、
前記複数のデータ・ブロックのためのパリティ・データを記憶することと、
前記複数のデータ・ブロックの所与のデータ・ブロックの各々について、優先度データ値を前記所与のデータ・ブロックに割り当てることと、
前記複数の記憶装置のうちの第１の記憶装置の故障に応答して、前記第１の記憶装置以外の前記複数の記憶装置に記憶された前記パリティ・データおよび前記データ・ブロックのデータを用いて、前記第１の記憶装置に記憶されていたデータ・ブロックの優先度値によって決定された順序で、前記第１の記憶装置に記憶されていた前記データ・ブロックをリビルドすることと、
を含む、方法。
【請求項２】
マシン・ロジックによって、優先度データ値を割り当てるときに検討される要素のセットに割り当てられた相対的重みと、前記複数のデータ・ブロックの各データ・ブロックにどの優先度データ値が割り当てられたかとの再検討に少なくとも部分的に基づいて、前記優先度データ値を割り当てるためのアルゴリズムを更新することを更に含む、請求項１に記載の方法。
【請求項３】
前記優先度データ値を割り当てることは、ブロック・サイズ、読出し頻度、読出し傾向、データ保護含有、および重複排除されたブロックに対する参照数のうちの少なくとも１つに、少なくとも部分的に基づく、請求項１に記載の方法。
【請求項４】
前記優先度データ値を割り当てることは、ｋ平均クラスタリング・アルゴリズムを用いて、前記複数のデータ・ブロックの各データ・ブロックをクラスタリングすることを含む、請求項１に記載の方法。
【請求項５】
前記リビルドすることは、前記データ・ブロックを第２の記憶装置上にリビルドする、請求項１に記載の方法。
【請求項６】
前記第１の記憶装置の前記データ・ブロックに関連付けられた前記パリティ・データを、前記第２の記憶装置の前記データ・ブロックに再マッピングすることを更に含む、請求項５に記載の方法。
【請求項７】
前記所与のブロックのための優先度データ値を割り当てることは、前記所与のブロックに関連付けられたメタデータを含むデータ・ブロックにも同一の優先度値を割り当てる、請求項１に記載の方法。
【請求項８】
コンピュータ・プログラム製品であって、
機械可読記憶媒体と、
前記機械可読記憶媒体に記憶されたコンピュータ・コードであって、前記コンピュータ・コードは、プロセッサ・セットに以下を含む動作、
複数の記憶装置を含む、ストライピングされた独立デバイス冗長アレイ（ＲＡＩＤ）ストレージ・システムに複数のデータ・ブロックを記憶することと、
前記複数のデータ・ブロックのためのパリティ・データを記憶することと、
前記複数のデータ・ブロックの所与のデータ・ブロックの各々について、優先度データ値を前記所与のデータ・ブロックに割り当てることと、
前記複数の記憶装置のうちの第１の記憶装置の故障に応答して、前記第１の記憶装置以外の前記複数の記憶装置に記憶された前記パリティ・データおよび前記データ・ブロックのデータを用いて、前記第１の記憶装置に記憶されていたデータ・ブロックの優先度値によって決定された順序で、前記第１の記憶装置に記憶されていた前記データ・ブロックをリビルドすることと、
を実行させるための命令を含む、コンピュータ・コードと、
を備える、コンピュータ・プログラム製品。
【請求項９】
前記コンピュータ・コードは、前記プロセッサ・セットに、以下の動作、
マシン・ロジックによって、優先度データ値を割り当てるときに検討される要素のセットに割り当てられた相対的重みと、前記複数のデータ・ブロックの各データ・ブロックにどの優先度データ値が割り当てられたかとの再検討に少なくとも部分的に基づいて、前記優先度データ値を割り当てるためのアルゴリズムを更新することを実行させるための命令を更に含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１０】
前記優先度データ値を割り当てることは、、ブロック・サイズ、読出し頻度、読出し傾向、データ保護含有、および重複排除されたブロックに対する参照数のうちの少なくとも１つに、少なくとも部分的に基づく、請求項８に記載のコンピュータ・プログラム製品。
【請求項１１】
前記優先度データ値を割り当てることは、ｋ平均クラスタリング・アルゴリズムを用いて、前記複数のデータ・ブロックの各データ・ブロックをクラスタリングすることを含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１２】
前記リビルドすることは、前記データ・ブロックを第２の記憶装置上にリビルドする、請求項８に記載のコンピュータ・プログラム製品。
【請求項１３】
前記コンピュータ・コードは、前記プロセッサ・セットに、以下の動作、  前記第１の記憶装置の前記データ・ブロックに関連付けられた前記パリティ・データを、前記第２の記憶装置の前記データ・ブロックに再マッピングすることを実行させるための命令を更に含む、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１４】
前記所与のブロックのための優先度データ値を割り当てることは、前記所与のブロックに関連付けられたメタデータを含むデータ・ブロックにも同一の優先度値を割り当てる、請求項８に記載のコンピュータ・プログラム製品。
【請求項１５】
コンピュータ・システムであって、
プロセッサ・セットと、
機械可読記憶装置と、
前記機械可読記憶装置に記憶されたコンピュータ・コードであって、前記コンピュータ・コードは、プロセッサ・セットに以下を含む動作、
複数の記憶装置を含む、ストライピングされた独立デバイス冗長アレイ（ＲＡＩＤ）ストレージ・システムに複数のデータ・ブロックを記憶することと、
前記複数のデータ・ブロックのためのパリティ・データを記憶することと、
前記複数のデータ・ブロックの所与のデータ・ブロックの各々について、優先度データ値を前記所与のデータ・ブロックに割り当てることと、
前記複数の記憶装置のうちの第１の記憶装置の故障に応答して、前記第１の記憶装置以外の前記複数の記憶装置に記憶された前記パリティ・データおよび前記データ・ブロックのデータを用いて、前記第１の記憶装置に記憶されていたデータ・ブロックの優先度値によって決定された順序で、前記第１の記憶装置に記憶されていた前記データ・ブロックをリビルドすることと、
を実行させるための命令を含む、コンピュータ・コードと、
を備える、コンピュータ・システム。
【請求項１６】
前記コンピュータ・コードは、前記プロセッサ・セットに、以下の動作、  マシン・ロジックによって、優先度データ値を割り当てるときに検討される要素のセットに割り当てられた相対的重みと、前記複数のデータ・ブロックの各データ・ブロックにどの優先度データ値が割り当てられたかとの再検討に少なくとも部分的に基づいて、前記優先度データ値を割り当てるためのアルゴリズムを更新することを実行させるための命令を更に含む、請求項１５に記載のシステム。
【請求項１７】
前記優先度データ値を割り当てることは、ブロック・サイズ、読出し頻度、読出し傾向、データ保護含有、および重複排除されたブロックに対する参照数のうちの少なくとも１つに、少なくとも部分的に基づく、請求項１５に記載のシステム。
【請求項１８】
前記優先度データ値を割り当てることは、ｋ平均クラスタリング・アルゴリズムを用いて、前記複数のデータ・ブロックの各データ・ブロックをクラスタリングすることを含む、請求項１５に記載のシステム。
【請求項１９】
前記リビルドすることは、前記データ・ブロックを第２の記憶装置上にリビルドする、請求項１５に記載のシステム。
【請求項２０】
前記コンピュータ・コードは、前記プロセッサ・セットに、以下の動作、
前記第１の記憶装置の前記データ・ブロックに関連付けられた前記パリティ・データを、前記第２の記憶装置の前記データ・ブロックに再マッピングすることを実行させるための命令を更に含む、請求項１９に記載のシステム。
【請求項２１】
前記所与のブロックのための優先度データ値を割り当てることは、前記所与のブロックに関連付けられたメタデータを含むデータ・ブロックにも同一の優先度値を割り当てる、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、独立ディスク冗長アレイデータストレージ（ＲＡＩＤ）に関し、より詳細には、ＲＡＩＤの実装をリビルドするためのプロセスに関する。
【背景技術】
【０００２】
ストレージの独立ディスク冗長アレイ（ＲＡＩＤアレイ）技術は、通常、大量のコンピュータデータを記憶するのに用いられる。データ冗長性のために、一般的な方法は、複数のドライブにわたってデータをストライピングし、そして故障時にフル・ドライブをコピー・バックすることである。故障時においてコピーが完了する場合、データ冗長性は成功する。ＲＡＩＤアレイにおいて、パリティ・ドライブは、フォールト・トレランスを提供するハード・ドライブ（またはハード・ドライブの方式で機能する他の記憶装置）である。例えば、ＲＡＩＤ３は、パリティ・ドライブを用いて、フォールト・トレラントであり、かつ（ＲＡＩＤ３のデータ・ストライピングに起因して）高速なシステムを生成する。メッセージ内のビット数が奇数または偶数でることを確実にするために、データ・ブロックの最後に単一のデータビットが加えられる。ＲＡＩＤアレイにおいてパリティ・ドライブを実装する１つの方式は、様々な形態のパリティ・データのうちの１つを記憶することである。
【０００３】
パリティ・データは、ソース・データの大きなセットから導出された、このソース・データの大きなセットよりも大幅に小さなデータである。パリティ・データは、（ソース・データのビットの選択された対にわたってＸＯＲ関数を用いる等の）様々な既知の方式で導出され、ソース・データの一部分が失われた場合（例えば、ＲＡＩＤアレイ内の１つのドライブが誤動作する）、失われたデータを、（ｉ）パリティ・ドライブにおけるパリティ・データと、（ｉｉ）残りの損なわれていないソース・データ（この例において、誤動作しなかったＲＡＩＤアレイのドライブ上のソース・データ）とを用いて導出することができるようにする。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明によれば、独立ディスク冗長アレイのリビルドを強化するための機械学習を提供することができる。
【課題を解決するための手段】
【０００５】
本発明の態様によれば、以下の動作（必ずしも以下の順序ではない）、すなわち、（ｉ）複数の記憶装置を含む、ストライピングされた独立デバイス冗長アレイ（ＲＡＩＤ）ストレージ・システムに複数のデータ・ブロックを記憶することと、（ｉｉ）複数のデータ・ブロックのためのパリティ・データを記憶することと、（ｉｉｉ）複数のデータ・ブロックの所与のデータ・ブロックの各々について、優先度データ値を所与のデータ・ブロックに割り当てることと、（ｉｖ）複数の記憶装置のうちの第１の記憶装置の故障に応答して、第１の記憶装置以外の複数の記憶装置に記憶されたパリティ・データおよびデータ・ブロックのデータを用いて、第１の記憶装置に記憶されていたデータ・ブロックの優先度値によって決定された順序で、第１の記憶装置に記憶されていたデータ・ブロックをリビルドすることと、を行う方法、コンピュータ、プログラム製品、またはシステム、あるいはその組合せが存在する。
【０００６】
ここで、単なる例として、本発明の実施形態を添付の図面を参照して説明する。
【図面の簡単な説明】
【０００７】
【図１】本発明の好ましい実施形態によるシステムの第１の実施形態のブロック図である。
【図２】第１の実施形態のシステムによって少なくとも部分的に実行される第１の実施形態の方法を示すフローチャートである。
【図３】第１の実施形態のシステムのマシン・ロジック（例えばソフトウェア）部分を示すブロック図である。
【図４】第１の実施形態のシステムのＲＡＩＤアレイの３つのディスク・ドライブ上のメモリ空間へのデータ・ブロック割り当てを示すブロック図である。
【図５】本発明の実施形態によるＲＡＩＤシステムにおける故障したディスク・ドライブのリビルドを示すブロック図である。
【図６】本発明の実施形態によるＲＡＩＤシステムにおける故障したディスク・ドライブのリビルドを示すブロック図である。
【図７】本発明の実施形態によるＲＡＩＤシステムにおける故障したディスク・ドライブのリビルドを示すブロック図である。
【図８】本発明の実施形態によるＲＡＩＤシステムにおける故障したディスク・ドライブのリビルドを示すブロック図である。
【図９】本発明の実施形態によるＲＡＩＤシステムにおける故障したディスク・ドライブのリビルドを示すブロック図である。
【発明を実施するための形態】
【０００８】
本発明のいくつかの実施形態は、（ｉ）ＲＡＩＤアレイの複数のディスク・ドライブにわたる複数のファイルと、（ｉｉ）ファイルのためのチェックサム・データとを記憶するためのマシン・ロジック（例えば、ソフトウェア）を対象とする。いくつかの実施形態では、次に、ファイルの１つまたは複数の属性に基づいて各ファイルに優先度値が割り当てられる。いくつかの実施形態では、これらの優先度値を用いて、最も重要なファイルが最初にリビルドされるように、チェックサム・データを用いてファイルがリビルドされる順序を決定する。この発明を実施するための形態のセクションは、以下のサブセクション、すなわち、（ｉ）ハードウェアおよびソフトウェア環境、（ｉｉ）例示的な実施形態、（ｉｉｉ）更なる解説または実施形態あるいはその両方、ならびに（ｉｖ）定義に分割される。
【０００９】
Ｉ．ハードウェアおよびソフトウェア環境
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含むことができる。
【００１０】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持および格納できる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、または上記のいずれかの適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読出し専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、および上記の任意の適切な組合せが挙げられる。本明細書で使用される場合、コンピュータ可読記憶媒体は、電波、または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、またはワイヤを通って送られる電気信号等の、一過性の信号自体として解釈されない。
【００１１】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク、あるいはその組合せ等のネットワークを介して外部コンピュータもしくは外部記憶装置にダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体内に格納する。
【００１２】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語もしくは類似のプログラミング言語等の通常の手続き型プログラミング言語を含む１つもしくは複数のプログラミング言語の任意の組合せで記述されたソース・コードもしくオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、または完全に遠隔コンピュータもしくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、または（例えば、インターネットサービスプロバイダを用いたインターネットを通じて）外部コンピュータへの接続がなされる場合もある。いくつかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【００１３】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して説明される。フローチャート図またはブロック図、あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００１４】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロック内で指定された機能／動作を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに与えられてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作の態様を実施する命令を含む製品を含むように、コンピュータ可読記憶媒体内に格納され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示することができるものであってもよい。
【００１５】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実施するように、コンピュータ実施のプロセスを生成するために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００１６】
図面内のフローチャートおよびブロック図は、本発明の種々の実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能および動作を示す。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表すことができる。いくつかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、またはこれらのブロックはときとして逆順で実行されることもある。ブロック図またはフローチャート図、あるいはその両方の各ブロック、およびブロック図またはフローチャート図、あるいはその両方内のブロックの組合せは、指定された機能もしくは動作を実行する、または専用のハードウェアとコンピュータ命令との組合せを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【００１７】
次に、図面を参照して、ソフトウェアまたは方法あるいはその両方のための可能なハードウェアおよびソフトウェア環境の実施形態を詳細に説明する。図１は、ＲＡＩＤサブシステム１０２、クライアント・サブシステム１０４、１０６、１０８、１１０、１１２、通信ネットワーク１１４、ＲＡＩＤコンピュータ２００、通信ユニット２０２、プロセッサ・セット２０４、入力／出力（Ｉ／Ｏ）インタフェース・セット２０６、メモリ・デバイス２０８、持続性記憶装置（persistent storage device）２１０、ディスプレイ・デバイス２１２、ＲＡＩＤディスク・ドライブのセット２１４、ランダム・アクセス・メモリ（ＲＡＭ）デバイス２１６、キャッシュ・メモリ・デバイス２１８および制御プログラム３００を含む、ネットワーク接続されたコンピュータ・システム１００の様々な部分を示す機能ブロック図である。
【００１８】
サブシステム１０２は、多くの観点において、本発明の好ましい実施形態における様々なコンピュータ・サブシステムを表す。したがって、次に、以下の段落において、サブシステム１０２のいくつかの部分を論ずる。
【００１９】
サブシステム１０２は、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ（ＰＣ）、デスクトップ・コンピュータ、携帯用情報端末（ＰＤＡ）、スマート・フォン、またはネットワーク１１４を介してクライアント・サブシステムと通信することが可能な任意のプログラム可能な電子デバイスとすることができる。プログラム３００は、以下でこの発明を実施するための形態のセクションの例示的な実施形態のサブセクションにおいて詳細に論じられる特定のソフトウェア機能を生成、管理および制御するのに用いられる機械可読命令またはデータあるいはその両方の集合である。
【００２０】
サブシステム１０２は、ネットワーク１１４を介して他のコンピュータ・サブシステムと通信することが可能である。ネットワーク１１４は、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、インターネット等の広域ネットワーク（ＷＡＮ）、または２つの組合せとすることができ、有線、無線、または光ファイバ接続を含むことができる。一般的に、ネットワーク１１４は、サーバとクライアント・サブシステムとの間の通信をサポートする接続およびプロトコルの任意の組合せとすることができる。
【００２１】
サブシステム１０２は、多くの両方向矢印を有するブロック図として示される。これらの両方向矢印（別個の参照符号を有しない）は、サブシステム１０２の様々なコンポーネント間の通信を提供する通信ファブリックを表す。この通信ファブリックは、プロセッサ（マイクロプロセッサ、通信およびネットワーク・プロセッサ等）、システム・メモリ、周辺デバイス、およびシステム内の任意の他のハードウェア・コンポーネント間でデータまたは制御情報あるいはその両方を渡すように設計された任意のアーキテクチャを用いて実施することができる。例えば、通信ファブリックは、少なくとも部分的に、１つまたは複数のバスを用いて実施することができる。
【００２２】
メモリ２０８および持続性ストレージ２１０は、コンピュータ可読記憶媒体である。通常、メモリ２０８は、任意の適切な揮発性または不揮発性コンピュータ可読記憶媒体を含むことができる。現在または近い将来あるいはその両方に、（ｉ）外部デバイス２１４は、いくらかのもしくは全てのメモリをサブシステム１０２に供給することが可能であり得るか、または（ｉｉ）サブシステム１０２の外部のデバイスがサブシステム１０２にメモリを提供することが可能であり得るか、あるいはその両方であることに更に留意されたい。
【００２３】
制御プログラム３００は、通例、メモリ２０８のうちの１つまたは複数のメモリを通じてそれぞれのコンピュータプロセッサ２０４のうちの１つまたは複数のアクセスまたは実行あるいはその両方のために持続性ストレージ２１０に記憶される。持続性ストレージ２１０は、（ｉ）少なくとも、輸送中の信号よりも持続性があり、（ｉｉ）有形媒体上（磁気または光領域等）にプログラム（そのソフト・ロジックまたはデータあるいはその両方を含む）を記憶し、（ｉｉｉ）永久ストレージよりも実質的に持続性が低い。代替的に、データ・ストレージは、持続性ストレージ２１０によって提供されるタイプのストレージよりも持続性が高いか、または永久であるか、あるいはその両方とすることができる。
【００２４】
制御プログラム３００は、機械可読かつ実行可能命令または実体データ（すなわち、データベースに記憶されるデータのタイプ）あるいはその両方を含むことができる。この特定の実施形態において、持続性ストレージ２１０は、磁気ハードディスク・ドライブを含む。いくつかのあり得る変形を挙げると、持続性ストレージ２１０は、ソリッド・ステート・ハード・ドライブ、半導体記憶装置、読出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読出し専用メモリ（ＥＰＲＯＭ）、フラッシュ・メモリ、またはプログラム命令もしくはデジタル情報を記憶することが可能な任意の他のコンピュータ可読記憶媒体を含むことができる。
【００２５】
持続性ストレージ２１０によって用いられる媒体は、取り外し可能であってもよい。例えば、取り外し可能なハード・ドライブは、持続性ストレージ２１０のために用いることができる。他の例には、同様に持続性ストレージ２１０の一部である別のコンピュータ可読記憶媒体への転送のためにドライブに挿入された、光ディスクおよび磁気ディスク、サム・ドライブ、ならびにスマート・カードが含まれる。
【００２６】
これらの例において、通信ユニット２０２は、サブシステム１０２の外部の他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット２０２は、１つまたは複数のネットワーク・インタフェース・カードを含む。通信ユニット２０２は、物理的通信リンクおよび無線通信リンクのいずれか、もしくはその両方の使用を通じて通信を提供することができる。本明細書において論考される任意のソフトウェア・モジュールは、通信ユニット（通信ユニット２０２等）を通じて持続性記憶装置（持続性記憶装置２１０等）にダウンロードすることができる。
【００２７】
Ｉ／Ｏインタフェース・セット２０６は、サーバ・コンピュータ２００とローカルで接続してデータ通信することができる他のデバイスに対するデータの入力および出力を可能にする。例えば、Ｉ／Ｏインタフェース・セット２０６は、外部デバイス・セット２１４への接続を提供する。外部デバイス・セット２１４は、通常、キーボード、キーパッド、タッチ・スクリーンまたは何らかの他の適切な入力デバイス、あるいはその組合せなどのデバイスを含む。外部デバイス・セット２１４は、例えば、サム・ドライブ、ポータブル光または磁気ディスク、およびメモリカード等の、ポータブル・コンピュータ可読記憶媒体も含むことができる。本発明の実施形態を実施するのに用いられるソフトウェアおよびデータ、例えばプログラム３００は、そのようなポータブル・コンピュータ可読記憶媒体上に記憶することができる。これらの実施形態において、関連ソフトウェアは、全体的にまたは部分的に、Ｉ／Ｏインタフェース・セット２０６を介して持続性記憶装置２１０にロードされてもよい（またはロードされなくてもよい）。また、Ｉ／Ｏインタフェース・セット２０６は、ディスプレイ・デバイス２１２と接続してデータ通信する。
【００２８】
ディスプレイ・デバイス２１２は、データをユーザに表示するメカニズムを提供し、例えば、コンピュータ・モニターまたはスマート・フォン表示スクリーンとすることができる。
【００２９】
本明細書に記載のプログラムは、本発明の特定の実施形態において実施される用途に基づいて識別される。しかしながら、本明細書における任意の特定のプログラムの命名は、単に便宜上用いられるものであるため、本発明は、そのような命名によって識別されるかまたは暗に意味されるかあるいはその両方である任意の特定の用途においてのみ用いられるように限定されるべきでない。
【００３０】
本発明の様々な実施形態の説明は、例示の目的で提示されたが、網羅的であることも、開示された実施形態に限定されることも意図したものではない。説明される実施形態の範囲および思想から逸脱することなく、多くの変更および変形が当業者に明らかとなるであろう。本明細書において用いられる用語は、実施形態の原理、市場に見られる技術を上回る実際の用途もしくは技術的改善を最も良好に説明するように、または他の当業者が本明細書に開示された実施形態を理解することを可能にするように選択された。
【００３１】
ＩＩ．例示的な実施形態
図２は、本発明の好ましい実施形態による方法を示すフローチャート２５０を示す。図３は、フローチャート２５０の方法動作の少なくともいくつかを実行するためのプログラム３００を示す。（方法動作ブロックについて）図２、（ソフトウェアブロックについて）図３、および（データ・ブロックについて）図４を詳細に参照して、この方法および関連ソフトウェアを、以下の段落にわたって論考する。
【００３２】
処理は、動作Ｓ２５５において開始する。動作Ｓ２５５において、制御プログラム３００は、ＲＡＩＤディスク・ドライブ２１４のセットにわたってデータ・ブロックのセットを複数のストライプに記憶する（図１を参照）。この実施形態において、ＲＡＩＤディスク・ドライブのセットを含む３つのディスク・ドライブにわたる３つのデータ・ストライプが存在する（図４を参照）。各ディスク・ドライブの各データ・ストライプは、データを記憶するためのブロックの６つのアドレスを含み、各アドレスはファイルのための１つのデータ・ブロックを含むことができる。すなわち、データ・ブロックは、単一のファイルに関連付けられたデータのみを含むが、単一のファイルは、通例、２つ以上のデータ・ブロックを有する。例えば、図４において、第１のファイル（Ｆ１）は、以下のように、（ｉ）Ｆ１Ｂ１、（ｉｉ）Ｆ１Ｂ２および（ｉｉｉ）Ｆ１Ｂ３の３つのデータ・ブロックを含む。図４は、（ｉ）ＲＡＩＤディスク・ドライブのセット２１４と、（ｉｉ）ディスク・ドライブＡ３５２（ａ）と、（ｉｉｉ）（ａ）Ｆ１Ｂ１、（ｂ）Ｆ１Ｂ２、（ｃ）Ｆ２Ｂ１、（ｄ）Ｆ２Ｂ２、（ｅ）Ｆ２Ｂ３、および（ｆ）Ｆ２Ｂ４を有する第１のストライプ３５４ａと、（ｉｖ）ファイル・ブロックを有しない第２のストライプ３５６ａと、（ｖ）（ａ）Ｆ１Ｂ３、（ｂ）Ｆ４Ｂ２、および（ｃ）Ｆ４Ｂ１を有する第３のストライプ３５８ａと、（ｖｉ）ディスク・ドライブＢ３５２ｂと、（ｖｉｉ）（ａ）Ｆ２Ｂ５、（ｂ）Ｆ３Ｂ１、および（ｃ）Ｆ４Ｂ４を有する第１のストライプ３５４ｂと、（ｖｉｉｉ）（ａ）Ｆ８Ｂ１、（ｂ）Ｆ３Ｂ２、（ｃ）Ｆ７Ｂ１、（ｄ）Ｆ７Ｂ２、および（ｅ）Ｆ７Ｂ３を有する第２のストライプ３５６ｂと、（ｉｘ）（ａ）Ｆ５Ｂ１、（ｂ）Ｆ６Ｂ２、（ｃ）Ｆ５Ｂ３、（ｄ）Ｆ６Ｂ３、（ｅ）Ｆ６Ｂ２、および（ｆ）Ｆ６Ｂ１を有する第３のストライプ３５８ｂと、（ｘ）ディスク・ドライブＣ３５２ｃと、（ｘｉ）（ａ）Ｆ２Ｂ６、（ｂ）Ｆ４Ｂ３、および（ｃ）Ｆ８Ｂ３を有する第１のストライプ３５４ｃと、（ｘｉｉ）（ａ）Ｆ３Ｂ３および（ｂ）Ｆ２Ｂ７を有する第２のストライプ３５６ｃと、（ｘｉｉｉ）Ｆ７Ｂ４を有する第３のストライプ３５８ｃとを含む。
【００３３】
この実施形態において、ブロックは、１バイトのメモリを含み、ここで、１バイトは８ビットとして定義される。各ファイルは、３つのディスク・ドライブの３つのストライプのブロックにわたって書き込むことができる複数のブロックを含む。例えば、図４に示すこの実施形態では、ファイル２は、（ｉ）ディスク・ドライブＡ３５２ａ（Ｆ２Ｂ１、Ｆ２Ｂ２、Ｆ２Ｂ３、Ｆ２Ｂ４）の第１のストライプ３５４ａに書き込まれた４つのブロックと、（ｉｉ）ディスク・ドライブＢ３５２ｂ（Ｆ２Ｂ５）の第１のストライプ３５４ｂに書き込まれた１つのブロックと、（ｉｉｉ）ディスク・ドライブＣ３５２ｃ（Ｆ２Ｂ６）の第１のストライプ３５４ｃに書き込まれた１つのブロックと、（ｉｖ）ディスク・ドライブＣ（Ｆ２Ｂ７）の第２のストライプ３５６ｃに書き込まれた１つのブロックとを有する。代替的に、ＲＡＩＤディスク・ドライブのセットは、ＲＡＩＤアレイに含まれる最大ディスク・ドライブ数に対する制限なしで、僅か２つのディスク・ドライブを含んでもよい。更なる代替形態として、ＲＡＩＤディスク・ドライブのセットのディスク・ドライブにおけるストライプ数は、僅か１つとすることができ、最大ストライプ数は、ディスク・ドライブのストライプ・バイト配分およびストレージ容量によって決まる。例えば、ディスク・ドライブＡ、ＢおよびＣが全て１メガバイト（１００万バイト）の記憶容量を有し、各ストライプが１キロバイト（１０００バイト）のストレージを配分される場合、各ディスク・ドライブは、最大で１０００個のストライプを収容することができる。例示の目的で、図４に示すディスク・ドライブは、各々、１８バイトのストレージ容量、および６バイトのストライプ配分を有するが、他のストレージ容量およびストライプ配分が可能である。更なる代替形態として、ブロックは、２バイト以上を含むように定義されてもよく、またはコンピュータ可読ストレージ容量を識別するための異なるユニットおよびラベルを用いてもよい。
【００３４】
処理は動作Ｓ２６０に進む。動作Ｓ２６０において、図３の優先値割り当てモジュール（「ｍｏｄ」）３０２が、マシン・ロジック規則のセット３０４を適用して、ブロックのセットにおける各ブロックの相対的優先度レーティングを決定することによって、ブロックのセットの各ブロックに相対的優先度値を割り当てる。この実施形態において、ブロックのセットの各ブロックへの割り当てに利用可能な整数１〜５の５つの異なる相対的優先度レーティングが存在し、１は最も重要であり、５は最も重要でない。
【００３５】
この実施形態において、マシン・ロジック規則のセット３０４は、以下の要素、すなわち、（ｉ）ブロック・サイズ、（ｉｉ）ブロック・レベルにおける個々のブロックの最近の読出し頻度、（ｉｉｉ）ブロックが属するファイルの最近の読出し頻度、（ｉｖ）ブロックが属するファイルが属するファイル一式の読出し頻度、（ｖ）ブロック・レベルにおける個々のブロックの履歴読出し総数、（ｖｉ）読出し頻度の変化率（読出し傾向とも呼ばれる）、（ｖｉｉ）ブロックのデータ保護レベル、（ｖｉｉｉ）重複排除されたブロックの参照数、（ｉｘ）ファイル、ファイル一式またはブロックの優先レベルのマニュアル決定（例えば、人間のシステム管理者による）、（ｘ）ブロックへの様々なアクセスタイミング（例えば、非常にセキュアな動作中に行うアクセス）、（ｘｉ）ブロックの暗号化ステータス、（ｘｉｉ）様々なブロック、ファイル、またはファイル一式、あるいはその組合せへのアクセス許可を有するもののアイデンティティ、（ｘｉｉｉ）様々なブロック、ファイル、またはファイル一式、あるいはその組合せの所有者のアイデンティティ、（ｘｉｖ）ブロックが属するファイルのファイルタイプ、（ｘｖ）ブロックの経過時間（すなわち、ブロックが最初に作成されてからの時間）、および（ｘｖｉ）ブロックが属するファイルのファイル名、に基づいて優先度レーティングを割り当てる。
【００３６】
以下のサブセクションにおいて更に説明されるように、ｋ平均クラスタリング・アルゴリズムのユークリッド距離は、動作Ｓ２６０を行う際に用いることができる。以下のサブセクションは、重心の属性の分析等の優先度値を割り当てる際に用いることができ、各重心の相対的優先度をランク付けする他の技法についても論じる。
【００３７】
処理は動作Ｓ２６５に進み、動作Ｓ２６５において、図３の故障条件ｍｏｄ３１２が、図４のＲＡＩＤディスク・ドライブのセット２１４の１つのディスク・ドライブのドライブ故障条件を判断する。ドライブ故障条件は、物理的または論理的のいずれかであり得る。物理的ドライブ故障条件は、ディスクをスピンさせ、ドライブ・ヘッドを動かすモータ等の可動部の機械的故障、ドライブ・ヘッドまたはディスクの位置合わせ不良、およびディスクまたはドライブ・ヘッドの磁気特性に対する損傷または劣化を含む。論理ドライブ故障条件は、欠落するかまたは不適切に変更されたドライブ・レジストリからのファイル・システムの破損を含む。故障条件ｍｏｄ３１２は、図１のＲＡＩＤディスク・ドライブのセット２１４における各ディスク・ドライブからのログを監視することによって、これらの故障条件のうちの１つまたは複数を検出する。この例示的な実施形態において、故障条件ｍｏｄ３１２は、図４のＲＡＩＤディスク・ドライブのセット２１４のディスク・ドライブＡ３５２ａのログ内の故障したモータの物理的エラーを読み取る。代替形態として、故障条件ｍｏｄ３１２は、自己監視、分析および報告技術（Ｓ．Ｍ．Ａ．Ｒ．Ｔ．）監視システムを監視し、所定の閾値を超えるＳ．Ｍ．Ａ．Ｒ．Ｔ．属性が検出されるときに、ドライブ故障を検出する。更なる代替形態として、Ｓ．Ｍ．Ａ．Ｒ．Ｔ．監視システムからの閾値超過条件報告において報告される推定故障日付の前の所定の日付に故障条件が検出される。更なる代替形態として、故障条件ｍｏｄ３１２は、ＲＡＩＤディスク・ドライブのセットの各ディスク・ドライブにおいて周期的自己試験を開始し、自己試験の結果に基づいてドライブ故障条件を判断する。
【００３８】
ほとんどのＲＡＩＤ故障はドライブ単位で生じる。上記の段落で論考した故障例に対する代替的な例として、ディスク・ドライブＢ３５２ｂが、突然かつ破滅的に電力サージを受け、故障すると仮定する。図４に示すように、このドライブは、故障前にそのドライブにわたってストライピングされた３つのストライプ部分３５４、３５６、３５８におけるファイルＦ２、Ｆ３、Ｆ４、Ｆ５、Ｆ６、Ｆ７およびＦ８からのデータを有する。この例において、チェックサム・データ・ストア３０８のパリティ・データに基づいたデータのリビルドが、別のディスク・ドライブが故障する前に完了する場合、ディスク・ドライブＢ３５２ｂの全てのデータを、フレッシュな新規のディスク・ドライブ（図示せず）上にリビルドすることができ、全てのファイルＦ２、Ｆ３、Ｆ４、Ｆ５、Ｆ６、Ｆ７およびＦ８のデータを完全に復元することができる。しかしながら、理解されるように、方法２５０が進行する際、この実施形態の優先度値は、ディスク・ドライブＢ３５２ｂからのデータがリビルドされている間、およびこれらの全てのファイルが完全に復元される前に、別のドライブが故障する場合に潜在的に重要である。より具体的には、優先度値は、ブロック、ファイル、またはファイル一式、あるいはその組合せがリビルドされる時間順序を決定するのに役立つ。このようにして、別のドライブがリビルド中に「ダウン」する場合、（ｉ）残りの機能しているドライブのデータと、（ｉｉ）チェックサム・データ・ストア３０８のパリティ・データとを用いることによって、比較的重要なブロック／ファイル／ファイル一式が、更なるドライブ故障が生じ、ディスク・ドライブ３５２ｂの損失データが復元不可能になる前に復元される尤度を増大させる。
【００３９】
処理は動作Ｓ２７０に進み、動作Ｓ２７０において、図３の再構成ｍｏｄ３１４が、優先度値データ・ストア３１０から、図４のＲＡＩＤディスク・ドライブのセット２１４の故障したディスク・ドライブＡ３５２ａ上の全てのファイルのための優先度値を取り出す。この例示的な実施形態において、図４のＲＡＩＤディスク・ドライブのセット２１４の３つのディスク・ドライブ（ディスク・ドライブＡ３５２ａ、ディスク・ドライブＢ３５２ｂおよびディスク・ドライブＣ３５２ｃ）の３つのストライプ（３５４ａ／ｂ／ｃ〜３５８ａ／ｂ／ｃ）のメモリに記憶された８つのファイルが存在する。図３の優先度値割り当てｍｏｄ３０２によって、８つのファイルの各々が優先度値を割り当てられている。再構成ｍｏｄは、ドライブＡが故障条件を有すると判断すると、図３のチェックサム・データ・ストア３０８を検査して、いずれのファイルがドライブＡ上のストライプに書き込まれたデータ・ブロックを有していたかを判断する。この例示的な実施形態において、再構成ｍｏｄは、チェックサム・データ・ストアから、ドライブＡがファイル１（Ｆ１）、ファイル２（Ｆ２）およびファイル４（Ｆ４）からのブロックを含んでいたと判断し、次に、図３の優先度値データ・ストア３１０からファイル１、ファイル２およびファイル４の優先度値を取り出す。この例では、優先度値は、それぞれ、２、１および３である。
【００４０】
処理は動作Ｓ２７５に進み、Ｓ２７５において、図３の再構成ｍｏｄ３１４の順序付けサブｍｏｄ３１６は、故障したディスク・ドライブ上のデータの優先度値に基づくデータ優先度順で故障したディスク・ドライブのデータをリビルドする。この例示的な実施形態では、順序付けサブｍｏｄ３１６は、ファイル２が故障したディスク・ドライブＡ上に存在するいかなる他のファイルよりも高い相対的優先度値を有することを検出すると、チェックサム・データ・ストア３０８に記憶されたチェックサム・データを用いて、スペア・ディスク・ドライブ上に、まず、この例では故障したディスク・ドライブＡの第１のストライプ３５４ａ上のブロック１〜４を含む、故障したディスク・ドライブＡ上に存在するファイル２のブロックをリビルドする。順序付けサブｍｏｄ３１６が、故障したディスク・ドライブＡ上に存在するファイル２のブロックの、スペア・ディスク・ドライブ上へのリビルドを完了した後、次に順序付けサブｍｏｄ３１６は、２つの残りのファイル（ファイル１およびファイル４）のうち、ファイル１が故障したディスク・ドライブＡ上に存在するいかなる他の残りのファイルよりも高い相対的優先度値を有すると判断し、第１のストライプ３５４ａからブロック１および２をリビルドし、第３のストライプ３５８ａからブロック３をリビルドする。次に、ファイル４のみが残っている順序付けサブｍｏｄは、第３のストライプ３５８ａからのブロック１および２（Ｆ４Ｂ１およびＦ４Ｂ２）を含む、故障したディスク・ドライブＡ上に存在していたファイル４の全てのブロックをリビルドする。代替形態として、完全なデータ・バックアップ、リモートもしくはローカル、または他のバックアップ復元データ源等の、他のタイプのバックアップ・データを用いて、故障したディスク・ドライブのデータを復元してもよい。
【００４１】
処理は動作Ｓ２８０に進み、Ｓ２８０において、優先度値割り当てｍｏｄ３０２の機械学習サブｍｏｄ３０６は、優先度値を特定するためのマシン・ロジックを修正する。この例示的な実施形態では、図３の制御プログラム３００の優先度値割り当てｍｏｄ３０２の機械学習サブｍｏｄ３０６は、マシン・ロジック規則のセット３０４によって８つのファイルに割り当てられた優先度値に精度の改善余地があるか否かを分析する。この例示的な実施形態では、機械学習サブｍｏｄは、ファイル３が、ファイル４と優先度値分類３を共有し、これにより、ファイル１よりも６００％高い頻度で読み出されているにもかかわらず、ファイル１よりも低い優先度値を有するというファイル３の準最適な結果がもたらされたため、１分ごとの読出し数カテゴリの値に更なる重みが与えられるべきであると判断する。また、機械学習サブｍｏｄは、データ保護のための０値を有するファイルが、データ保護のための１値を有するファイルと優先度値を共有することができないという規則を生成する。これは、未来のディスク・ドライブの故障時に優先度値の割り当てを更に最適化する。
【００４２】
ＩＩＩ．更なる解説または実施形態あるいはその両方
本発明のいくつかの実施形態は、現時点の最新技術に関する改善について、以下の事実、潜在的問題、または潜在的分野、あるいはその組合せを認識している。すなわち、（ｉ）コピー・バック・プロセスが別の故障が生じる前にドライブ・コピーを完了することができず、ＲＡＩＤアレイのスペアが使い果たされたとき、技術設計により、潜在的に、データの損失または関連する経済的損失、あるいはその両方が生じる、（ｉｉ）データがストライピングされているため、再構成プロセスが故障の前にドライブの３０％をリビルドすることができたとしても、コピーがリビルドされたファイルを有することが保証されるのではなく、いくつかのリビルドされたファイル片が存在する一方で、他のいくつかのオリジナルファイル片が依然として欠落している場合があることのみが保証される、（ｉｉｉ）加えて、コピー・バック・プロセスは、ユーザ・データをコピーしたが、様々なファイルの様々なファイル片をどのように合わせるかを記載するメタデータを有していない場合がある、または（ｉｖ）コピー・バック・プロセスが、部分的リビルド（例えば、上述した３０％のリビルド）の全ての片を、それと合わせるメタデータと共に識別したとしても、これはランダムＯＳ（オペレーティング・システム）バッチ・ファイルである可能性があり、一方で重要なデータ・ファイルは部分的リビルドを通じて永久に失われる、あるいはその組合せである。
【００４３】
本発明のいくつかの実施形態は、以下の特徴、特性または利点、あるいはその組合せのうちの１つまたは複数を含むことができる。（ｉ）機械学習を、ＲＡＩＤアレイ技術と併せて利用して、リビルド中にＲＡＩＤアレイに記憶されるデータに重み値が割り当てられることを可能にする方法、（ｉｉ）アレイにわたるデータのそれぞれの優先度値に基づいてＲＡＩＤアレイに記憶されたデータをカテゴリ化すること、（ｉｉｉ）リビルド中に、具体的にいずれのデータが全体としてアレイおよびユーザの双方により関連しているかをアレイに指示し、関連データに対応する優先度カテゴリを有するデータがコピープロセスにおいてより早期にコピーされる（例えば、最初にコピーされる）ことを確実にすること、（ｉｖ）アレイにわたる更なるディスク故障が生じた場合、最も重要なデータが依然として保持されている尤度が増大すること、（ｖ）ＲＡＩＤアレイの使用パターンを追跡すること、（ｖｉ）使用パターンの追跡は、最後の読出しまたは書き込みの時点にのみ依拠するのではなく、使用の一貫性（例えば、年に約１回のみ用いられるデータは、１の使用の一貫性のカテゴリであり得る）にも依拠する。
【００４４】
本発明のいくつかの実施形態は、以下の特徴、特性または利点、あるいはその組合せのうちの１つまたは複数を含むことができる。（ｉ）ユーザ・データに関連するアレイ・メタデータが、データ・タイプ間で直接の関連付けを可能にするように追跡される、（ｉｉ）ドライブおよび現在進行中のリビルドに関連するアレイ・ヘルスを一貫して監視する、（ｉｉｉ）数値的に量子化された重みシステムにおいてユーザ・データ「価値」を確立する（例えば、１〜５の取り得る所定の重みであり、１は最も価値が高く、５は最も価値が低い）、（ｉｖ）データ・タイプの認識により、優先度値が、全体的にまたは部分的にタイプ・データに基づいて割り当てられることが可能になる（例えば、ピクチャは通常、より小さいが、大きな価値を保持する可能性があり、このため、それらの利用頻度を考慮すると、ＲＡＩＤアレイに記憶される際にそれらの対応データについて３の優先度値のみが保証される場合があるが、いくつかの実施形態では、このデータは、１の優先度値まで高まることになる）、（ｖ）データ目録作成は、優先度値を適切に調整しながらアレイにわたって一貫して行われる、（ｖｉ）小さなデータは大きなデータに対し重み付けされる（例えば、ユーザの関心にとって、１０００個の小さなファイルと３つの大きなファイルとのどちらを迅速にコピーする方が良いかを判断するのに役立つため）、（ｖｉｉ）ドライブ故障の場合、ＲＡＩＤが通常、現時点において従来のＲＡＩＤシステムにおいて行うように設計されているように、故障したドライブに記憶されたデータのスペアをリビルドする、（ｖｉｉｉ）「価値」のシステム割り当てに基づいて、このリビルドは、比較的高い優先度値でフラグ付けされたデータのみを書き込むことから開始する（例えば、開始時に、１の優先度値を有するデータのみをリビルドする）、（ｉｘ）リビルド・プロセスの開始時に、ユーザ・データおよび比較的高い優先度データのメタデータの双方を転送し、リビルドの完了前に故障する場合のデータの使用可能性を可能にする、または（ｘ）リビルド・プロセスは、リビルドが完了し、全てのデータがスペアにコピー・バックされ、アレイが再び正常状態になるまで、これらの価値に取り組む、あるいはその組合せである。
【００４５】
ここで、優先度値の割り当ての例が論考される。この例において、（ｉ）アルゴリズムがｋ平均である（これは、クラスタまたはグループに対応する各要素にラベルを割り当てることによって、要素の特性の組合せに基づいて要素のグループを生成するクラスタリングのためのアルゴリズムである）、（ｉｉ）距離はユークリッドであり（別の一般的な距離関数はマンハッタンである）、ここで、異なる距離関数は、クラスタが形成される方式、およびそれらのサイズに影響を及ぼし、これは特定のタイプのデータ・パターンには有利であり得る一方、他のタイプにとっては不利であり得る、（ｉｉｉ）観測変数は、Ｘ（ｎ）＝（ｘ（１），ｘ（２），ｘ（３），ｘ（４），ｘ（５））であり、ここで、ｘ（１）はブロック・サイズであり、ｘ（２）は時間ユニットあたりの読出し数で表される読出し頻度であり、ｘ（３）は次の読出しまでの推定時間ユニットを有する読出し傾向であり、ｘ（４）はデータ保護含有であり、ｘ（５）は、重複排除ブロックの参照数のために用いられる。すなわち、重複排除環境におけるブロックへの参照数である。この例では、重複排除ブロックは、ブロックを１回のみ記憶することによって、重複情報を削除するために用いられ、同じデータ・パターンを再び記憶しようとするとき、この元のブロックへのポインタを単に１増大させる。この例において、ｘ（１）、ｘ（２）、ｘ（３）、ｘ（４）、ｘ（５）は、ｎと呼ばれるデータ・ブロック（またはデータ・ブロックのセット）のための優先度値Ｘ（ｎ）を特定するようにマシン・ロジック規則下で組み合わされた数値量である。検討される多くの更なる要素（および更には既に述べたものの組合せ）が存在し得る。本発明のいくつかの実施形態は、これらの要素を考慮に入れ（しかし、ｋ平均アルゴリズムはこれらのみに限定されない）、優先度値がどのように特定されるかを調整および変更する柔軟性を有する機械学習アルゴリズムを提供する。更に、ファイル名は、ファイルが最終的に異なる複数のクラスタに入ることを防ぐための重要な要素である。
【００４６】
本発明のいくつかの実施形態は、（ｉ）ブロック・サイズ、（ｉｉ）ブロック・レベルにおける個々のブロックの最近の読出し頻度、（ｉｉｉ）ブロックが属するファイルの最近の読出し頻度、（ｉｖ）ブロックが属するファイルが属するファイル一式の読出し頻度、（ｖ）ブロック・レベルにおける個々のブロックの履歴読出し総数、（ｖｉ）読出し頻度の変化率（読出し傾向とも呼ばれる）、（ｖｉｉ）ブロックのデータ保護レベル、（ｖｉｉｉ）重複排除されたブロックの参照数、（ｉｘ）ファイル、ファイル一式またはブロックの優先レベルのマニュアル決定（例えば、人間のシステム管理者による）、（ｘ）ブロックへの様々なアクセスタイミング（例えば、非常にセキュアな動作中に行うアクセス）、（ｘｉ）ブロックの暗号化ステータス、（ｘｉｉ）様々なブロック、ファイル、またはファイル一式、あるいはその組合せへのアクセス許可を有するもののアイデンティティ、（ｘｉｉｉ）様々なブロック、ファイル、またはファイル一式、あるいはその組合せの所有者のアイデンティティ、（ｘｉｖ）ブロックが属するファイルのファイルタイプ、（ｘｖ）ブロックの経過時間（すなわち、ブロックが最初に作成されてからの時間）、および（ｘｖｉ）ブロックが属するファイルのファイル名、を含む、優先度値を割り当てる際に検討することができる要素のより大きなリストを検討することができる。
【００４７】
いくつかの実施形態は、ＲＡＩＤアレイにおける故障したハードディスク・ドライブを、それぞれ図５〜図９における略図４００ａ〜４００ｅに示されるようなスペア・ハードディスク・ドライブにリビルドする。図５〜図９は、５つの連続する時点（図５におけるＴ０から図９におけるＴ４）における、ＲＡＩＤアレイにおける故障したハードディスク・ドライブのスペア・ディスク・ドライブ４００へのリビルドを示す図である。略図４００ａ〜４００ｅは、ハードディスク・ドライブ０（ＨＤＤ０）４０２ａ〜４０２ｅ（参照符号は、異なる連続時点を示す）、ハードディスク・ドライブ１（ＨＤＤ１）４０４ａ〜４０４ｅ、ハードディスク・ドライブ（ＨＤＤ２）４０６ａ〜４０６ｅ、パリティ・ドライブ４０８ａ〜４０８ｅ、およびスペア・ドライブ４１０ａ〜４１０ｅを含む。
【００４８】
Ｔ０において、ＨＤＤ０  ４０２ａ、ＨＤＤ１  ４０４ａおよびＨＤＤ２  ４０６ａは、各々、相対的重み値（代替的に、相対的優先度レベルと呼ばれる）によって１〜５をランク付けされたデータのブロックのクラスタを記憶する。この例において、クラスタは、異なるサイズとすることができる。Ｔ１において、ＨＤＤ１  ４０４ｂは故障し、ＨＤＤ１  ４０４ｂからリビルドされたデータを受信するためにスペア４１０ｂが利用可能となる。Ｔ２において、ＨＤＤ１  ４０４ｃからの第１のランクを付けられたクラスタがスペア４１０ｃ上にリビルドされる。Ｔ３において、ＨＤＤ１  ４０４ｄからの第２のランクを付けられたクラスタがスペア４１０ｄ上にリビルドされる。Ｔ４において、ＨＤＤ１  ４０４ｅからの残りのデータ・クラスタがスペア４１０ｅ上にリビルドされ（第３〜第５のランクを付けられたクラスタをリビルドする個々のステップは示されていない）、リビルド動作が完了する。単一のクラスタは、異なる複数のＨＤＤ内に存在するブロックを含むことができる。ユーザは、ＲＡＩＤのタイプ（連続ｖｓストライピング）を選択することによって、または他の技法を用いることによってこれを制御することができる。本発明のいくつかの実施形態は、クラスタを形成するときに考慮するためのファイル名を要素のセットに追加することによって、所与のファイルの異なるフラグメントを異なるクラスタに割り当てることを回避する。
【００４９】
スクリーンショット４００ａを生成する本発明の実施形態において、優先度順に１〜５のランクを付けられた５つのデータ・クラスタが、３つのハードディスク・ドライブ（ＨＤＤ０  ４０２ａ、ＨＤＤ１  ４０４ａ、ＨＤＤ２  ４０６ａ）にわたってフラグメント化される。ここで、クラスタは、各ハードディスク・ドライブ上に異なる構成で記憶される。これらの実施形態において、ハードディスク・ドライブ上のデータ・クラスタの位置は、ドライブ故障の場合には無関係である。なぜなら、図８のスクリーンショット４００ｄに示すように、リビルドは、重要なデータを、より重要でないデータの前にリビルドすることを優先するためである。これらの実施形態において、ＨＤＤ１のデータ・クラスタ２は、ＨＤＤ１上でデータ・クラスタ１、５および４の後ろに配置されているにもかかわらず、スペア上で２番目にリビルドされるデータ・クラスタである。
【００５０】
本発明のいくつかの実施形態は、ＲＡＩＤアレイ・アーキテクチャ技術において用いられ、アレイにわたるデータの割り当てられた値に基づくカテゴリ化によって、優先度値がリビルド中に（ブロックのクラスタに）割り当てられることを可能にするように、機械学習をＲＡＩＤアレイと併せて利用することによって、ファイル・レベルにおけるリビルドを管理および優先付けする。これらの実施形態において、リビルド中に優先度値を用いて、いずれのデータがＲＡＩＤアレイおよびユーザの双方により関連しているかを特定し、より高い優先度値に対応するデータが、相対的に低い優先度値に対応するデータの前にまずコピーされることを確実にする。
【００５１】
本発明のいくつかの実施形態は、以下の特徴、特性または利点、あるいはその組合せのうちの１つまたは複数を含むことができる。（ｉ）損傷したＲＡＩＤアレイのリビルド・プロセスを支援し、優先付けするための分類を作成する、（ｉｉ）ボリューム単位で優先度値を割り当てるのではなく、優先度割り当て目的でデータのブロック（例えば単一のファイルに対応するブロック）をグループ化する、（ｉｉｉ）同じボリューム内に異なる優先度値のデータが存在する可能性がある（しかし、本発明は、好ましくは、ボリュームのより低い優先度の部分の前に、より高い優先度の部分がコピーされることを可能にする）、（ｉｖ）潜在的に存在し得る異なるデータ・タイプに適応するクラスタリング・アルゴリズムを用いて、優先度値をブロック（あるいはブロックのセット）に割り当てる、（ｖ）絶えず監視される異なる特徴に基づいて、データ・ブロックを分析し、グループ（クラスタ）を作成する、（ｖｉ）これらのラベル（グループ）を用いて、潜在的な後続の故障により、修復が及ばずＲＡＩＤアレイに損傷を与えることになることを防ぐために、最も重要なデータが最初にリビルドされるようにする、（ｖｉｉ）データ自体の読出し／書き込みアクティビティ、およびデータがアクセスされる頻度を動的に用い、次に、重大なデータを最初にリビルドするようにデータを自動的に分類する、（ｖｉｉｉ）リビルドを優先付けする方法を決定する、より複雑なアルゴリズム、（ｉｘ）書き込みアクティビティまたはアクセスの頻度あるいはその両方を用いて、優先度値をブロックのセットに割り当てる目的でデータの重要度を特定する、（ｘ）適応可能なアルゴリズムを用いてデータをカテゴリ化し、履歴使用に基づいてデータを分類および優先付けする、（ｘｉ）相対的に最も高い優先度のデータを、後続の故障の場合に保持しようとして、このデータを最初にリビルドする、（ｘｉｉ）ホストが行っていることに対し、何を最初にリビルドするかに焦点を当てる、または（ｘｉｉｉ）既に故障したドライブを取得し、何をどの順序でリビルドするかを決定する、あるいはその組合せ。
【００５２】
ＩＶ．定義
本発明：「本発明」という用語によって記述される主題が出願時の請求項または特許審査手続き後に最終的に交付することができる請求項のいずれかの範囲に含まれることの絶対的な指標として解釈すべきものではない。「本発明」という用語は、読者が、本明細書における開示が潜在的に新規であると考えられる一般的な心証を得ることを助けるために使用されるものであるが、この理解は、「本発明（現在の発明）」という用語の使用によって示されるように、仮の、暫定的なものであり、特許審査の過程で、関連情報が現れたときおよび請求項が潜在的に補正されたときに、変更を受ける。
【００５３】
実施形態：上記「本発明」の定義を参照のこと。同様の注意が用語「実施形態」にも当てはまる。
【００５４】
〜、または〜、あるいはその両方（組合せ）：包含的論理和；例えば、「Ａ、Ｂ、またはＣ、あるいはその組合せ」は、ＡまたはＢまたはＣのうちの少なくとも１つが真であり該当することを意味する。
【００５５】
含む：別段の明確な指示がない限り、「〜を含むが必ずしもこれ（ら）に限定されない」を意味する。
【００５６】
モジュール／サブモジュール：ある種類の機能を行うように動作可能に働くハードウェア、ファームウェア、またはソフトウェア、あるいはその組合せの任意の組であり、（ｉ）単一の局所的近傍にある、（ｉｉ）広域に分散している、（ｉｉｉ）ソフトウェアコードのより大きな部分内の単一の近傍にある、（ｉｖ）ソフトウェアコードの単一部分内に位置する、（ｖ）単一の記憶装置、メモリまたは媒体内に位置する、（ｖｉ）機械的に接続されている、（ｖｉｉ）電気的に接続されている、または（ｖｉｉｉ）データ通信接続されている、あるいはその組合せのいずれかを問わない。
【００５７】
コンピュータ：顕著なデータ処理能力または機械可読命令読み取り能力あるいはその両方を有する任意のデバイスであって、デスクトップ・コンピュータ、メインフレームコンピュータ、ラップトップ・コンピュータ、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）ベース・デバイス、スマート・フォン、携帯情報端末（ＰＤＡ）、身体装着式または挿入式コンピュータ、埋込みデバイス型コンピュータ、特定用途向け集積回路（ＡＳＩＣ）ベース・デバイスを含むがこれらに限定されない。
【図１】
2021503115.tif 000003
【図２】
2021503115.tif 000004
【図３】
2021503115.tif 000005
【図４】
2021503115.tif 000006
【図５】
2021503115.tif 000007
【図６】
2021503115.tif 000008
2021503115.tif 000009
【図７】
2021503115.tif 000010
【図８】
2021503115.tif 000011
【図９】
2021503115.tif 000012
【手続補正書】
【提出日】令和2年6月19日(2020.6.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の記憶装置を含む、ストライピングされた独立デバイス冗長アレイ（ＲＡＩＤ）ストレージ・システムに複数のデータ・ブロックを記憶することと、
前記複数のデータ・ブロックのためのパリティ・データを記憶することと、
前記複数のデータ・ブロックの所与のデータ・ブロックの各々について、優先度データ値を前記所与のデータ・ブロックに割り当てることと、
前記複数の記憶装置のうちの第１の記憶装置の故障に応答して、前記第１の記憶装置以外の前記複数の記憶装置に記憶された前記パリティ・データおよび前記データ・ブロックのデータを用いて、前記第１の記憶装置に記憶されていたデータ・ブロックの優先度値によって決定された順序で、前記第１の記憶装置に記憶されていた前記データ・ブロックをリビルドすることと、
を含む、方法。
【請求項２】
マシン・ロジックによって、優先度データ値を割り当てるときに検討される要素のセットに割り当てられた相対的重みと、前記複数のデータ・ブロックの各データ・ブロックにどの優先度データ値が割り当てられたかとの再検討に少なくとも部分的に基づいて、前記優先度データ値を割り当てるためのアルゴリズムを更新することを更に含む、請求項１に記載の方法。
【請求項３】
前記優先度データ値を割り当てることは、ブロック・サイズ、読出し頻度、読出し傾向、データ保護含有、および重複排除されたブロックに対する参照数のうちの少なくとも１つに、少なくとも部分的に基づく、請求項１に記載の方法。
【請求項４】
前記優先度データ値を割り当てることは、ｋ平均クラスタリング・アルゴリズムを用いて、前記複数のデータ・ブロックの各データ・ブロックをクラスタリングすることを含む、請求項１に記載の方法。
【請求項５】
前記リビルドすることは、前記データ・ブロックを第２の記憶装置上にリビルドする、請求項１に記載の方法。
【請求項６】
前記第１の記憶装置の前記データ・ブロックに関連付けられた前記パリティ・データを、前記第２の記憶装置の前記データ・ブロックに再マッピングすることを更に含む、請求項５に記載の方法。
【請求項７】
前記所与のブロックのための優先度データ値を割り当てることは、前記所与のブロックに関連付けられたメタデータを含むデータ・ブロックにも同一の優先度値を割り当てる、請求項１に記載の方法。
【請求項８】
コンピュータに、請求項１から請求項７のいずれか一項に記載の方法における各ステップを実行させる、コンピュータ・プログラム。
【請求項９】
コンピュータ・システムであって、
プロセッサ・セットと、
コンピュータ・プログラムを記憶した機械可読記憶装置と、
を備え、
前記コンピュータ・プログラムは、前記プロセッサ・セットに、請求項１から請求項７のいずれか一項に記載の方法における各ステップを実行させる、コンピュータ・システム。
【国際調査報告】
2021503115.tif 000013
2021503115.tif 000014