(57)【特許請求の範囲】
【請求項１】
プロセッサを含む分散型ストレージ・ネットワーク（ＤＳＮ）の記憶ユニットによって実行するための方法であって、前記方法は、
前記記憶ユニットのメモリ・デバイスの複数の記憶ゾーンのうちの第１の記憶ゾーンをゾーン割り当てパラメータに基づいて選択することと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンを書き込み向けにオープンなものとして指定することと、
記憶するために第１のデータ・スライスをネットワークを介して受信することと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンの記憶場所において前記第１のデータ・スライスを順次に書き込むことと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンおよび前記記憶場所を指示する前記第１のデータ・スライスに対応するポインタを生成することと、
前記第１のデータ・スライスを指示する要求側エンティティからの第１の読み取り要求を前記ネットワークを介して受信することと、
前記ポインタに基づいて前記メモリ・デバイスから前記第１のデータ・スライスを取得することと、
前記第１のデータ・スライスを前記要求側エンティティに送信することと
を含む、方法。
【請求項２】
前記第１のデータ・スライスが、スモール・コンピュータ・システム・インターフェース・プロトコルに基づいて順次に書き込まれる、請求項１に記載の方法。
【請求項３】
前記第１のデータ・スライスが、追記ポイントに基づいて順次に書き込まれ、前記追記ポイントは、前記第１のデータ・スライスの長さに基づいて、前記第１のデータ・スライスが書き込まれた後に更新される、請求項１に記載の方法。
【請求項４】
厳密に１つの記憶ゾーンが、前記ゾーン割り当てパラメータに基づいて、選択され、書き込み向けにオープンなものとして指定され、前記厳密に１つの記憶ゾーンが、前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンであり、前記方法が、
前記厳密に１つの記憶ゾーンではない前記複数の記憶ゾーンのうちの残りのすべての記憶ゾーンを書き込み向けにクローズドなものとして指定すること
をさらに含む、請求項１に記載の方法。
【請求項５】
前記ゾーン割り当てパラメータに基づいて前記複数の記憶ゾーンから記憶ゾーンのサブセットを選択することであって、前記記憶ゾーンのサブセットのサイズが前記ゾーン割り当てパラメータに基づいて選択され、前記記憶ゾーンのサブセットが前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンを含む、前記選択することと、
書き込み向けにオープンなものとして前記記憶ゾーンのサブセットを指定することと、
前記記憶ゾーンのサブセットに含まれない前記複数の記憶ゾーン内のすべての記憶ゾーンを書き込み向けにクローズドなものとして指定することと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記第１のデータ・スライスが書き込まれた後の時点においてゾーン再割り当て要件を決定することと、
前記ゾーン再割り当て要件に基づいて書き込み向けにクローズドなものとして指定された前記複数の記憶ゾーンのうちの第２の記憶ゾーンを選択することと、
書き込み向けにオープンなものとして前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンを指定することと、
記憶のために第２のデータ・スライスをネットワークを介して受信することと、
前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンの記憶場所に前記第２のデータ・スライスを順次に書き込むことと
をさらに含む、請求項１に記載の方法。
【請求項７】
読み取り頻度閾値と比較して好ましい前記メモリ・デバイスに記憶された複数のデータ・スライスからのデータ・スライスのサブセットを識別することと、
前記データ・スライスのサブセットを前記記憶ユニットの揮発性メモリに記憶することであって、前記揮発性メモリからの前記データ・スライスのサブセットの読み取りが、前記メモリ・デバイスからの前記データ・スライスのサブセットの読み取りよりも速い、前記記憶することと、
第２のデータ・スライスを指示する第２の読み取り要求を前記ネットワークを介して受信することと、
前記第２のデータ・スライスが前記揮発性メモリに記憶されることを決定することと、
前記ネットワークを介して前記要求側エンティティに送信するために前記揮発性メモリから前記第２のデータ・スライスを取得することと
をさらに含む、請求項１に記載の方法。
【請求項８】
複数のデータ・スライス書き込み要求を前記ネットワークを介して受信することであって、前記複数のデータ・スライス書き込み要求が複数のデータ・スライスを含む、前記受信することと、
前記複数のデータ・スライスを前記記憶ユニットのキャッシュに記憶することと、
前記複数のデータ・スライスを含むデータ・オブジェクトを生成し、前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に応答して前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンに順次に前記データ・オブジェクトを書き込み、前記キャッシュから前記複数のデータ・スライスを除去することによって、キャッシュ・フラッシュ要件の決定に応答して前記キャッシュをフラッシュすることと
をさらに含む、請求項１に記載の方法。
【請求項９】
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンを含まない前記複数の記憶ゾーンのサブセットを書き込み向けにクローズドなものとして指定することと、
複数のデータ・スライス書き込み要求を前記ネットワークを介して受信することであって、前記複数のデータ・スライス書き込み要求が複数のデータ・スライスを含む、前記受信することと、
キャッシュ内の複数の待ち行列のうちの１つに前記複数のデータ・スライスの各々を割り当てることによって前記複数のデータ・スライスを前記記憶ユニットの前記キャッシュに記憶することであって、前記複数の待ち行列のうちの各待ち行列が、書き込み向けにクローズドなものとして指定された前記複数の記憶ゾーンの前記サブセット内の記憶ゾーンに対応する、前記記憶することと、
前記複数のデータ・スライスが前記キャッシュに記憶された後にゾーン再割り当て要件を決定することと、
前記ゾーン再割り当て要件に基づいて前記複数の記憶ゾーンのうちの第２の記憶ゾーンを選択することであって、前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンが前記サブセットに含まれる、前記選択することと、
書き込み向けにオープンなものとして前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンを指定することと、
前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に応答して前記複数の待ち行列のうちの第１の待ち行列の中の前記複数のデータ・スライスを前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンに順次に書き込み、前記複数の待ち行列のうちの前記第１の待ち行列を前記キャッシュから除去することによって、前記キャッシュから前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンに対応する前記複数の待ち行列のうちの前記第１の待ち行列をフラッシュすることと
をさらに含む、請求項１に記載の方法。
【請求項１０】
前記ゾーン再割り当て要件が、キャッシュ容量要件と比較して好ましくない前記キャッシュの容量に基づく、請求項９に記載の方法。
【請求項１１】
前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンが、前記複数の待ち行列に対応する待ち行列優先度ランキングに基づいて選択され、前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンが、前記待ち行列優先度ランキングの最も高い優先度ランキングに対応する、請求項９に記載の方法。
【請求項１２】
前記待ち行列優先度ランキングはデータ依存性要件に基づいており、前記複数の記憶ゾーンのうちの前記第２の記憶ゾーン内の第２のデータ・スライスは、前記データ依存性要件による前記複数の記憶ゾーンのうちの第３の記憶ゾーン内の第３のデータ・スライスの前に、書き込まれなければならないという決定に応答して、前記複数の記憶ゾーンのうちの前記第２の記憶ゾーンは前記最も高い優先度ランキングを割り当てられる、請求項１１に記載の方法。
【請求項１３】
分散型ストレージ・ネットワーク（ＤＳＮ）内の記憶ユニットの処理システムであって、前記処理システムは、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに、
ゾーン割り当てパラメータに基づいて前記記憶ユニットのメモリ・デバイスの複数の記憶ゾーンのうちの第１の記憶ゾーンを選択すること、
書き込み向けにオープンなものとして前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンを指定すること、
記憶のために第１のデータ・スライスをネットワークを介して受信すること、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンの記憶場所に前記第１のデータ・スライスを順次に書き込むこと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンおよび前記記憶場所を指示する前記第１のデータ・スライスに対応するポインタを生成すること、
前記第１のデータ・スライスを指示する要求側エンティティからの第１の読み取り要求を前記ネットワークを介して受信すること、
前記ポインタに基づいて前記メモリ・デバイスから前記第１のデータ・スライスを取得すること、ならびに
前記第１のデータ・スライスを前記要求側エンティティに送信すること
を実行させるためのプログラムを記憶する、メモリと
を備える、処理システム。
【請求項１４】
プロセッサに、
ゾーン割り当てパラメータに基づいてメモリ・デバイスの複数の記憶ゾーンのうちの第１の記憶ゾーンを選択すること、
書き込み向けにオープンなものとして前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンを指定すること、
記憶のために第１のデータ・スライスをネットワークを介して受信すること、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンの記憶場所に前記第１のデータ・スライスを順次に書き込むこと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンおよび前記記憶場所を指示する前記第１のデータ・スライスに対応するポインタを生成すること、
前記第１のデータ・スライスを指示する要求側エンティティからの第１の読み取り要求を前記ネットワークを介して受信すること、
前記ポインタに基づいて前記メモリ・デバイスから前記第１のデータ・スライスを取得すること、ならびに
前記第１のデータ・スライスを前記要求側エンティティに送信すること
を実行させるためのプログラムを記録する記録媒体。
【請求項１５】
プロセッサを含む分散型ストレージ・ネットワーク（ＤＳＮ）の記憶ユニットによって実行するための方法であって、前記方法は、
記憶ユニットのメモリ・デバイスの複数の記憶ゾーンのうちの第１の記憶ゾーンをゾーン割り当てパラメータに基づいて選択することと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンを書き込み向けにオープンなものとして指定することと、
記憶するために第１のデータ・スライスをネットワークを介して受信することと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンの記憶場所において前記第１のデータ・スライスを順次に書き込むことと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンおよび前記記憶場所を指示する前記第１のデータ・スライスに対応するポインタを生成することであって、前記ポインタが、前記第１のデータ・スライスを指示する要求側エンティティからの第１の読み取り要求に応答して前記第１のデータ・スライスの取得を円滑にする、前記生成することと
を含む、方法。
【請求項１６】
前記第１のデータ・スライスが、追記ポイントに基づいて順次に書き込まれ、前記追記ポイントが、前記第１のデータ・スライスの長さに基づいて、前記第１のデータ・スライスが書き込まれた後に更新される、請求項１５に記載の方法。
【請求項１７】
厳密に１つの記憶ゾーンが、前記ゾーン割り当てパラメータに基づいて、選択され、書き込み向けにオープンなものとして指定され、前記厳密に１つの記憶ゾーンが、前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンであり、前記方法が、
前記厳密に１つの記憶ゾーンではない前記複数の記憶ゾーンのうちの残りのすべての記憶ゾーンを書き込み向けにクローズドなものとして指定すること
をさらに含む、請求項１５に記載の方法。
【請求項１８】
前記ゾーン割り当てパラメータに基づいて前記複数の記憶ゾーンから記憶ゾーンのサブセットを選択することであって、前記記憶ゾーンのサブセットのサイズが前記ゾーン割り当てパラメータに基づいて選択され、前記記憶ゾーンのサブセットが前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンを含む、前記選択することと、
書き込み向けにオープンなものとして前記記憶ゾーンのサブセットを指定することと、
前記記憶ゾーンのサブセットに含まれない前記複数の記憶ゾーン内のすべての記憶ゾーンを書き込み向けにクローズドなものとして指定することと
をさらに含む、請求項１５に記載の方法。
【請求項１９】
プロセッサを含む分散型ストレージ・ネットワーク（ＤＳＮ）の記憶ユニットによって実行するための方法であって、前記方法は、
記憶するために第１のデータ・スライスをネットワークを介して受信することと、
複数の記憶ゾーンのうちの第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンの記憶場所において前記第１のデータ・スライスを順次に書き込むことと、
前記複数の記憶ゾーンのうちの前記第１の記憶ゾーンおよび前記記憶場所を指示する前記第１のデータ・スライスに対応するポインタを生成することであって、前記ポインタが、前記第１のデータ・スライスを指示する要求側エンティティからの第１の読み取り要求に応答して前記第１のデータ・スライスの取得を円滑にする、前記生成することと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してコンピュータ・ネットワークに関し、より詳細には、分散エラー・エンコードされたデータ（dispersing error encoded data）に関する。
【背景技術】
【０００２】
コンピューティング・デバイスは、データを通信する、データを処理する、またはデータを記憶する、あるいはその組合せを行うことが知られている。そのようなコンピューティング・デバイスは、ワイヤレス・スマート・フォン、ラップトップ、タブレット、パーソナル・コンピュータ（ＰＣ）、ワークステーション、およびビデオ・ゲーム・デバイスから、毎日数百万のウェブ検索、株式取引、またはオンライン購入をサポートするデータセンタまで、多岐にわたる。一般に、コンピューティング・デバイスは、中央処理ユニット（ＣＰＵ）、メモリ・システム、ユーザ入出力インターフェース、周辺デバイス・インターフェース、および相互接続バス構造を含む。
【０００３】
さらに知られているように、コンピュータは、コンピュータの１つまたは複数の計算機能（たとえば、サービス、アプリケーション、アルゴリズム、論理演算機能など）を実行するために「クラウド・コンピューティング」を使用することによって、そのＣＰＵを効果的に拡張することができる。さらに、大きなサービス、アプリケーション、または機能、あるいはその組合せについて、クラウド・コンピューティングは、サービス、アプリケーション、または機能、あるいはその組合せを完了するための応答時間を改善するために、分散方式で複数のクラウド・コンピューティング資源によって実行され得る。たとえば、Ｈａｄｏｏｐは、数千のコンピュータによるアプリケーション実行を可能にする分散型アプリケーションをサポートするオープン・ソース・ソフトウェア・フレームワークである。
【０００４】
クラウド・コンピューティングに加えて、コンピュータは、そのメモリ・システムの一部として「クラウド・ストレージ」を使用することができる。知られているように、クラウド・ストレージは、ユーザがそのコンピュータを介してインターネットの記憶システムにファイル、アプリケーションなどを記憶することを可能にする。インターネット記憶システムは、レイド（ＲＡＩＤ：redundant array of independent disks）システム、または記憶するためにデータをエンコードするためのエラー訂正方式を使用する分散型記憶システム、あるいはその両方を含み得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プロセッサを含む分散型ストレージ・ネットワークの記憶ユニットによって実行するための方法、記憶ユニットの処理システム、および記憶媒体を提供する。
【課題を解決するための手段】
【０００６】
本発明の実施形態は、以下のような添付の図面を参照して、単に例として、ここで説明される。
【図面の簡単な説明】
【０００７】
【図１】本発明による分散型または分散されたストレージ・ネットワーク（ＤＳＮ：dispersed or distributed storage network）の一実施形態の概略ブロック図である。
【図２】本発明によるコンピューティング・コアの一実施形態の概略ブロック図である。
【図３】本発明によるデータの分散型ストレージ・エラー・エンコード（dispersed storage error encoding）の一例の概略ブロック図である。
【図４】本発明によるエラー・エンコード関数（error encoding function）の一般例の概略ブロック図である。
【図５】本発明によるエラー・エンコード関数の具体例の概略ブロック図である。
【図６】本発明によるエンコードされたデータ・スライス（ＥＤＳ：encoded data slice）のスライス名の一例の概略ブロック図である。
【図７】本発明によるデータの分散型ストレージ・エラー・デコードの一例の概略ブロック図である。
【図８】本発明によるエラー・デコード関数の一般例の概略ブロック図である。
【図９】本発明による分散型または分散されたストレージ・ネットワーク（ＤＳＮ）の一実施形態の概略ブロック図である。
【図１０】本発明によるゾーンにおいて順次に記憶する方法の一例の論理図である。
【発明を実施するための形態】
【０００８】
図１は、複数のコンピューティング・デバイス１２〜１６、管理ユニット１８、整合性処理ユニット２０、およびＤＳＮメモリ２２を含む、分散型の、または分散された、ストレージ・ネットワーク（ＤＳＮ）１０の一実施形態の概略ブロック図である。ＤＳＮ１０の構成要素は、ネットワーク２４に結合され、ネットワーク２４は、１つもしくは複数のワイヤレスもしくはワイヤ接続通信システムまたはその両方、１つもしくは複数の非公開イントラネット・システムもしくは公開インターネット・システムまたはその両方、あるいは、１つもしくは複数のローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）またはその両方、あるいはその組合せを含み得る。
【０００９】
ＤＳＮメモリ２２は、地理的に異なる場所に（たとえば、１つはシカゴに、１つはミルウォーキーに、など）、共通の場所に、またはその組合せで置かれてもよい複数の記憶ユニット３６を含む。たとえば、ＤＳＮメモリ２２が８つの記憶ユニット３６を含む場合、各記憶ユニットが、異なる場所に置かれる。もう１つの例として、ＤＳＮメモリ２２が８つの記憶ユニット３６を含む場合、すべての８つの記憶ユニットが、同じ場所に置かれる。さらにもう１つの例として、ＤＳＮメモリ２２が８つの記憶ユニット３６を含む場合、第１のペアの記憶ユニットは第１の共通の場所にあり、第２のペアの記憶ユニットは第２の共通の場所にあり、第３のペアの記憶ユニットは第３の共通の場所にあり、第４のペアの記憶ユニットは第４の共通の場所にある。ＤＳＮメモリ２２は８つより多いまたは少ない記憶ユニット３６を含み得ることに留意されたい。各記憶ユニット３６は、コンピューティング・コア（図２に示すような、またはその構成要素）と、分散型エラー・エンコードされたデータを記憶するための複数のメモリ・デバイスとを含むことにさらに留意されたい。
【００１０】
様々な実施形態において、各々の記憶ユニットは、分散されたストレージおよびタスク（ＤＳＴ：distributed storage and task）実行ユニットとして動作し、分散型エラー・エンコードされたデータを記憶するように、またはデータ上の１つまたは複数のタスクを分散方式で実行するように、あるいはその両方を行うように動作可能である。タスクは、単純な機能（たとえば、数学関数、論理関数、識別機能、探索機能、検索エンジン機能、置換機能など）、複雑な機能（たとえば、圧縮、人間言語またはコンピュータ言語あるいはその両方の変換、テキストの音声への変換、音声のテキストへの変換など）、複数の単純な機能または複雑な機能あるいはその両方、１つまたは複数のアルゴリズム、１つまたは複数のアプリケーションなどでもよい。以下で、記憶ユニットは、分散型ストレージおよびタスク（ＤＳＴ）実行ユニットと同義で呼ばれてもよく、１セットの記憶ユニットは、１セットのＤＳＴ実行ユニットと同義で呼ばれてもよい。
【００１１】
コンピューティング・デバイス１２〜１６、管理ユニット１８、および整合性処理ユニット２０の各々は、コンピューティング・コア２６を含み、ネットワークインターフェース３０〜３３を含む。コンピューティング・デバイス１２〜１６は各々、持ち運び可能なコンピューティング・デバイス、または固定コンピューティング・デバイス、あるいはその両方でもよい。持ち運び可能なコンピューティング・デバイスは、ソーシャル・ネットワーキング・デバイス、ゲーム・デバイス、携帯電話、スマートフォン、情報端末、デジタル音楽プレーヤ、デジタル・ビデオ・プレーヤ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、タブレット、ビデオ・ゲーム・コントローラ、またはコンピューティング・コアを含む他の任意の持ち運び可能なデバイス、あるいはその組合せでもよい。固定コンピューティング・デバイスは、コンピュータ（ＰＣ）、コンピュータ・サーバ、ケーブル・セットトップ・ボックス、衛星放送受信機、テレビジョン・セット、プリンタ、ファックス機、家庭用娯楽機器、ビデオ・ゲーム機、または任意のタイプの家庭またはオフィス・コンピューティング機器、あるいはその組合せでもよい。各管理ユニット１８および整合性処理ユニット２０は、別個のコンピューティング・デバイスでもよく、共通のコンピューティング・デバイスでもよく、コンピューティング・デバイス１２〜１６のうちの１つまたは複数に、または記憶ユニット３６のうちの１つまたは複数に、あるいはその両方に統合されてもよく、あるいはこれらの組合せであってもよいことに留意されたい。様々な実施形態において、コンピューティング・デバイス１２〜１６は、ユーザ・デバイスを含んでもよく、またはＤＳＮ内の記憶ユニットからデータを読み出すもしくはこれにデータを書き込む要求を含み得るアクセス要求を生成する要求側エンティティによって使用されてもよく、あるいはその両方であってもよい。
【００１２】
各インターフェース３０、３２、および３３は、ネットワーク２４を介して間接的にまたは直接的にあるいはその両方で１つまたは複数の通信リンクをサポートするために、ソフトウェアおよびハードウェアを含む。たとえば、インターフェース３０は、コンピューティング・デバイス１４とコンピューティング・デバイス１６との間の通信リンク（たとえば、ワイヤード、ワイヤレス、直接、ＬＡＮを介する、ネットワーク２４を介するなど）をサポートする。もう１つの例として、インターフェース３２は、コンピューティング・デバイス１２および１６とＤＳＮメモリ２２との間の通信リンク（たとえば、ワイヤード接続、ワイヤレス接続、ＬＡＮ接続、またはネットワーク２４との他の任意のタイプの接続、あるいはその組合せ）をサポートする。さらにもう１つの例として、インターフェース３３は、ネットワーク２４への管理ユニット１８および整合性処理ユニット２０の各々のための通信リンクをサポートする。
【００１３】
コンピューティング・デバイス１２および１６は、図３〜図８のうちの１つまたは複数を参照して後で説明するように、コンピューティング・デバイスがデータを分散型ストレージ・エラー・エンコードおよびデコードすることを可能にする、分散型ストレージ（ＤＳ：dispersed storage）・クライアント・モジュール３４を含む。この例示的実施形態では、コンピューティング・デバイス１６は、コンピューティング・デバイス１４の分散型ストレージ処理エージェントとして機能する。この役割において、コンピューティング・デバイス１６は、コンピューティング・デバイス１４のためにデータを分散型ストレージ・エラー・エンコードおよびデコードする。分散型ストレージ・エラー・エンコードおよびデコードを使用して、ＤＳＮ１０は、データの損失なく、且つデータの冗長またはバックアップ・コピーの必要なく、かなりの数の記憶ユニット障害（障害の数は、分散型ストレージ・エラー・エンコード関数のパラメータに基づく）に耐える。さらに、ＤＳＮ１０は、データ損失なく、安全な形で、無期限でデータを記憶する（たとえば、このシステムは、データにアクセスする無許可の試みに対して非常に耐性を有する）。
【００１４】
動作中に、管理ユニット１８は、ＤＳ管理サービスを実行する。たとえば、管理ユニット１８は、個別にまたは１群のユーザ・デバイスの一部としてコンピューティング・デバイス１２〜１４のための分散型データ・ストレージ・パラメータ（たとえば、ボルト（vault）作成、分散型ストレージ・パラメータ、セキュリティ・パラメータ、課金情報、ユーザ・プロフィール情報など）を確立する。具体例として、管理ユニット１８は、ユーザ・デバイスのための、１群のデバイスのための、または公開アクセスのためのＤＳＮメモリ２２内のボルト（たとえば、ＤＳＮの名前空間全体の一部分と関連する仮想メモリ・ブロック）の作成を調整し、ボルトのためのボルトごとの分散型ストレージ（ＤＳ）エラー・エンコード・パラメータを確立する。管理ユニット１８は、ＤＳＮ１０のレジストリ情報を更新することによって各ボルトのＤＳエラー・エンコード・パラメータの記憶を円滑にし、レジストリ情報は、ＤＳＮメモリ２２、コンピューティング・デバイス１２〜１６、管理ユニット１８、または整合性処理ユニット２０、あるいはその組合せに記憶され得る。
【００１５】
ＤＳＮ管理ユニット１８は、ユーザ・プロフィール情報（たとえば、アクセス制御リスト（ＡＣＬ：access control list））を作成し、ローカル・メモリに、またはＤＳＮメモリ２２のメモリ内に、あるいはその両方に記憶する。ユーザ・プロフィール情報は、認証情報、許可、またはセキュリティ・パラメータ、あるいはその組合せを含む。セキュリティ・パラメータは、暗号化／解読方式、１つまたは複数の暗号化鍵、鍵生成方式、またはデータ・エンコード／デコード方式、あるいはその組合せを含み得る。
【００１６】
ＤＳＮ管理ユニット１８は、特定のユーザ、ユーザ・グループ、ボルト・アクセス、公開ボルト・アクセスなどの課金情報を作成する。たとえば、ＤＳＮ管理ユニット１８は、アクセスごとの課金情報を生成するために使用することができる、ユーザが非公開ボルトまたは公開ボルトあるいはその両方にアクセスする回数を追跡する。別の例では、ＤＳＮ管理ユニット１８は、データ量ごとの課金情報を生成するために使用することができる、ユーザ・デバイスまたはユーザ・グループあるいはその両方によって記憶または取得あるいはその両方が行われたデータの量を追跡する。
【００１７】
もう１つの例として、管理ユニット１８は、ネットワーク運用、ネットワーク管理、またはネットワーク保守、あるいはその組合せを実行する。ネットワーク運用は、ユーザ・データ割り当て要求（たとえば、読み取りもしくは書き込みまたはその両方の要求）を認証すること、ボルトの作成を管理すること、ユーザ・デバイスの認証信用状を確立すること、ＤＳＮ１０に構成要素（たとえば、ＤＳクライアント・モジュール３４を有するユーザ・デバイス、記憶ユニット、もしくはコンピューティング・デバイス、またはその組合せ）を追加すること、もしくはＤＳＮ１０から構成要素を削除すること、または記憶ユニット３６のための認証信用状を確立すること、あるいはその組合せを含む。ネットワーク管理は、障害についてデバイスもしくはユニットまたはその両方を監視すること、ボルト情報を保持すること、デバイスもしくはユニットまたはその両方の起動状況を決定すること、デバイスもしくはユニットまたはその両方のローディングを決定すること、またはＤＳＮ１０の性能レベルに影響を及ぼす他の任意のシステム・レベル動作を決定すること、あるいはその組合せを含む。ネットワーク保守は、ＤＳＮ１０のデバイスまたはユニットあるいはその両方の置換、アップグレード、修理、または拡張、あるいはその組合せを円滑にすることを含む。
【００１８】
整合性処理ユニット２０は、「間違った」または見つからないエンコードされたデータ・スライスの再構築を実行する。高いレベルにおいて、整合性処理ユニット２０は、エンコードされたデータ・スライスまたはエンコードされたデータ・スライスのスライス名あるいはその両方の、ＤＳＮメモリ２２からの取得またはリスト表示を定期的に試みることによって、再構築を実行する。取得されるエンコードされたスライスについては、それらは、データ破損、期限切れのバージョンなどによるエラーについてチェックされる。スライスがエラーを含む場合、それは、「間違った」スライスのフラグを付けられる。受信またはリスト表示あるいはその両方が行われなかったエンコードされたデータ・スライスについては、それらは、見つからないスライスのフラグを付けられる。間違ったまたは見つからないあるいはその両方のスライスは、再構築されたスライスを生み出すための正常なスライスと見なされる他の取得されるエンコードされたデータ・スライスを使用し、後で再構築される。再構築されたスライスは、ＤＳＮメモリ２２に記憶される。
【００１９】
図２は、処理モジュール５０、メモリ・コントローラ５２、メイン・メモリ５４、ビデオ・グラフィックス処理ユニット５５、入出力（ＩＯ）コントローラ５６、周辺構成要素相互接続（ＰＣＩ：peripheral component interconnect）インターフェース５８、ＩＯインターフェース・モジュール６０、少なくとも１つのＩＯデバイス・インターフェース・モジュール６２、読み出し専用メモリ（ＲＯＭ：read-only memory）基本入出力システム（ＢＩＯＳ：basic input output system）６４、および１つまたは複数のメモリ・インターフェース・モジュールを含む、コンピューティング・コア２６の一実施形態の概略ブロック図である。１つまたは複数のメモリ・インターフェース・モジュールは、ユニバーサル・シリアル・バス（ＵＳＢ：universal serial bus）インターフェース・モジュール６６、ホスト・バス・アダプタ（ＨＢＡ：host bus adapter）インターフェース・モジュール６８、ネットワーク・インターフェース・モジュール７０、フラッシュ・インターフェース・モジュール７２、ハード・ドライブ・インターフェース・モジュール７４、およびＤＳＮインターフェース・モジュール７６のうちの１つまたは複数を含む。
【００２０】
ＤＳＮインターフェース・モジュール７６は、従来のオペレーティング・システム（ＯＳ：operating system）ファイル・システム・インターフェース（たとえば、ネットワーク・ファイル・システム（ＮＦＳ：network file system）、フラッシュ・ファイル・システム（ＦＦＳ：flash file system）、ディスク・ファイル・システム（ＤＦＳ：disk file system）、ファイル転送プロトコル（ＦＴＰ：file transfer protocol）、ウェブベースの分散型オーサリングおよびバージョニング（ＷｅｂＤＡＶ）など）またはブロック・メモリ・インターフェース（たとえば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ：small computer system interface）、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ：internet small computer system interface）など）、あるいはその組合せに類似した機能を果たす。ＤＳＮインターフェース・モジュール７６またはネットワーク・インターフェース・モジュール７０あるいはその両方は、図１のインターフェース３０〜３３のうちの１つまたは複数として機能することができる。ＩＯデバイス・インターフェース・モジュール６２またはメモリ・インターフェース・モジュール６６〜７６あるいはその組合せは、集合的にまたは別個にＩＯポートと呼ばれ得ることに留意されたい。
【００２１】
図３は、データの分散型ストレージ・エラー・エンコードの一例の概略ブロック図である。コンピューティング・デバイス１２または１６が、記憶するデータを有する場合、それは、分散型ストレージ・エラー・エンコード・パラメータに基づいて分散型ストレージ・エラー・エンコード・プロセスに従ってデータを分散ストレージ・エラー・エンコードする。ここで、コンピューティング・デバイスは、ファイル（たとえば、テキスト、ビデオ、オーディオなど）または他のデータ配列を含むことができる、データ・オブジェクト４０を記憶する。分散型ストレージ・エラー・エンコード・パラメータは、エンコード関数（たとえば、情報分散アルゴリズム（ＩＤＡ：information dispersal algorithm）、リードソロモン、コーシー・リードソロモン（Cauchy Reed-Solomon）、系統的エンコード、非系統的エンコード、オンライン・コードなど）、データ切り出しプロトコル（たとえば、データ・セグメント・サイズ、固定、変数など）、およびデータ・セグメントごとのエンコード値を含む。データ・セグメントごとのエンコード値は、データ・セグメントのエンコードごとの（すなわち、１セットのエンコードされたデータ・スライス内の）エンコードされたデータ・スライスの合計の、またはピラー幅の、数（Ｔ）、データ・セグメントを回復するために必要とされる１セットのエンコードされたデータ・スライスのエンコードされたデータ・スライスのデコード閾値数（Ｄ）、データ・セグメントのデコードのためにストレージから読み取られるセットごとのエンコードされたデータ・スライスの数を指示するためのエンコードされたデータ・スライスの読み取り閾値数（Ｒ）、または、エンコードされたデータ・セグメントが適切に記憶されたと見なされる前に正確に記憶されなければならないセットごとのエンコードされたデータ・スライスの数を指示する書き込み閾値数（Ｗ）、あるいはその組合せを含む。分散型ストレージ・エラー・エンコード・パラメータは、スライス情報（たとえば、各データ・セグメントのために作成されることになるエンコードされたデータ・スライスの数）、またはスライス・セキュリティ情報（たとえば、エンコードされたデータ・スライスごとの暗号化、圧縮、整合性チェックサムなど）、あるいはその両方をさらに含み得る。
【００２２】
本例では、コーシー・リードソロモンが、エンコード関数として選択されており（一般例が図４に示され、具体例が図５に示されている）、データ切り出しプロトコルは、データ・オブジェクトを固定サイズのデータ・セグメントに分割することになり、データ・セグメントごとのエンコード値は、以下を含む：ピラー幅の５、デコード閾値の３、読み取り閾値の４、および書き込み閾値の４。データ切り出しプロトコルに従って、コンピューティング・デバイス１２または１６は、データ・オブジェクト４０を複数の固定サイズのデータ・セグメント（たとえば、数キロバイトから数テラバイト以上の範囲の固定サイズの１からＹ）に分割する。作成されるデータ・セグメントの数は、データのサイズおよびデータ切り出しプロトコルに応じて決まる。
【００２３】
コンピューティング・デバイス１２または１６は、次いで、１セットのエンコードされたデータ・スライスを生み出すために、選択されたエンコード関数（たとえば、コーシー・リードソロモン）を使用し、データ・セグメントを分散ストレージ・エラー・エンコードする。図４は、エンコード行列（ＥＭ：encoding matrix）、データ行列（ＤＭ：data matrix）、およびコード化行列（ＣＭ：coded matrix）を含む、汎用コーシー・リードソロモン・エンコード関数を示す。エンコード行列（ＥＭ）のサイズは、選択されたデータ・セグメントごとのエンコード値（selected per data segment encoding values）のピラー幅数（Ｔ）およびデコード閾値数（Ｄ）に応じて決まる。データ行列（ＤＭ）を生み出すために、データ・セグメントは、複数のデータ・ブロックに分割され、データ・ブロックは、行ごとにＺデータ・ブロックを有するＤ個の行に配列される。Ｚは、データ・セグメントから作成されるデータ・ブロックの数とデコード閾値数（Ｄ）との関数であることに留意されたい。コード化行列は、データ行列にエンコード行列を掛ける行列によって生み出される。
【００２４】
図５は、ピラー番号（Ｔ）の５とデコード閾値数の３とを有するコーシー・リードソロモン・エンコードの具体例を示す。この例では、第１のデータ・セグメントは、１２個のデータ・ブロック（Ｄ１〜Ｄ１２）に分割される。コード化行列は、コード化されたデータ・ブロックの５つの行を含み、第１の行のＸ１１〜Ｘ１４は、第１のエンコードされたデータ・スライス（ＥＤＳ１＿１）に対応し、第２の行のＸ２１〜Ｘ２４は、第２のエンコードされたデータ・スライス（ＥＤＳ２＿１）に対応し、第３の行のＸ３１〜Ｘ３４は、第３のエンコードされたデータ・スライス（ＥＤＳ３＿１）に対応し、第４の行のＸ４１〜Ｘ４４は、第４のエンコードされたデータ・スライス（ＥＤＳ４＿１）に対応し、第５の行のＸ５１〜Ｘ５４は、第５のエンコードされたデータ・スライス（ＥＤＳ５＿１）に対応する。ＥＤＳ表示の第２の数はデータ・セグメント番号に対応することに留意されたい。
【００２５】
図３の論考に戻ると、コンピューティング・デバイスはまた、エンコードされたデータ・スライスのセット内の各エンコードされたデータ・スライス（ＥＤＳ）のためのスライス名（ＳＮ：slice name）を作成する。スライス名８０の通常のフォーマットが、図６に示される。図示するように、スライス名（ＳＮ）８０は、エンコードされたデータ・スライスのピラー番号（たとえば、１〜Ｔのうちの１つ）、データ・セグメント番号（たとえば、１〜Ｙのうちの１つ）、ボルト識別子（ＩＤ）、データ・オブジェクト識別子（ＩＤ）を含み、エンコードされたデータ・スライスの改正レベル情報をさらに含み得る。スライス名は、少なくとも部分的に、ＤＳＮメモリ２２からの記憶および取得のためのエンコードされたデータ・スライスのＤＳＮアドレスとして機能する。
【００２６】
エンコードの結果として、コンピューティング・デバイス１２または１６は、記憶するために記憶ユニットに対するそれぞれのスライス名を与えられた、エンコードされたデータ・スライスの複数のセットを生み出す。図示するように、エンコードされたデータ・スライスの第１のセットはＥＤＳ１＿１からＥＤＳ５＿１を含み、第１のセットのスライス名はＳＮ１＿１からＳＮ５＿１を含み、エンコードされたデータ・スライスの最後のセットはＥＤＳ１＿ＹからＥＤＳ５＿Ｙを含み、最後のセットのスライス名はＳＮ１＿ＹからＳＮ５＿Ｙを含む。
【００２７】
図７は、図４の例における分散型ストレージ・エラー・エンコードされ且つ記憶されたデータ・オブジェクトの分散型ストレージ・エラー・デコードの一例の概略ブロック図である。この例では、コンピューティング・デバイス１２または１６は、データ・セグメントごとの少なくともデコード閾値数のエンコードされたデータ・スライスを記憶ユニットから取得する。具体例として、コンピューティング・デバイスは、エンコードされたデータ・スライスの読み取り閾値数を取得する。
【００２８】
デコード閾値数のエンコードされたデータ・スライスからデータ・セグメントを回復するために、コンピューティング・デバイスは、図８に示すようにデコード関数を使用する。図示するように、デコード関数は、基本的に、図４のエンコード関数の逆数である。コード化行列は、デコード閾値数（たとえば、この例では３）の行と、コード化行列の対応する行を含むエンコード行列の反転におけるデコード行列とを含む。たとえば、コード化行列が行１、２、および４を含む場合、エンコード行列は、行１、２、および４まで減らされ、次いで、反転させられてデコード行列を生み出す。
【００２９】
図９は、図１のコンピューティング・デバイス１６、図１のネットワーク２４、および少なくとも１つの記憶ユニット９１０を含む、分散型ストレージ・ネットワーク（ＤＳＮ）のもう１つの実施形態の概略ブロック図である。記憶ユニット９１０は、図１のインターフェース３２および図１のコンピューティング・コア２６を含むことができ、図１の記憶ユニット３６を使用することによって実装することができる。記憶ユニット９１０は、１つまたは複数のメモリ・デバイス９２０を含むことができ、各メモリ・デバイス９２０は、記憶ゾーン９２２−１および９２２−２を含む、複数の記憶ゾーンに分割することができる。各記憶ゾーンは、データ・オブジェクトのサブセット、データ・セグメント、またはメモリ・デバイス９２０に記憶された、データ・スライス９３０−１、９３０−２、９３０−３、および９３０−４を含み得る、データ・スライス、あるいはその組合せを含むことができる。記憶ユニットはまた、ＲＡＭ９４５を含むことができ、これは、揮発性メモリまたは他のメモリを含むことができ、コンピューティング・コア２６を使用することによって実装することができる。ＲＡＭ９４５は、追記ポイント９５６−１および追記ポイント９５６−２を含む、複数の追記ポイントを含むことができ、複数の追記ポイントは、次のデータが、シーケンシャルなまたは追記のみの書き込みプロトコルに従って、記憶されるべきである、複数の記憶ゾーンの記憶場所に対応する。ＲＡＭ９４５はまた、対応するデータ・スライスがその対応するポインタを使用することによってメモリからフェッチされ得るように、記憶場所、オフセット情報、ゾーン情報、またはメモリ・デバイス情報あるいはその組合せを含む記憶ユニットに記憶されたデータ・スライスに対応する複数のポインタを含むことができる。ＤＳＮは、ゾーンに順次にデータを記憶するように機能する。
【００３０】
ＤＳＮでの要求レイテンシの主要な構成要素は、メモリ・デバイスからのデータの読み取りおよびメモリ・デバイスへのデータの書き込みに費やされる時間記憶ユニットである。一般に、データの読み取りまたは書き込みにメモリ・デバイスが費やす時間の大部分では、要求されたデータがあるトラックおよびセクタをシークしている。メモリ・デバイスシークを完全に制御する１つの方法は、たとえば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）プロトコルまたは生メモリへの直接書き込みをサポートする他のプロトコルを使用することによって、サポートされたプロトコルを介する生メモリ・デバイスの直接読み取りおよび書き込みの代わりに、ファイル・システムで記憶ユニットのメモリ・デバイスのフォーマットを回避することである。シーケンシャルな書き込みまたはデータ除去あるいはその両方をサポートするために、記憶ユニットの１つまたは複数のメモリ・デバイス９２０は、記憶ユニットが完全にシーケンシャルな書き込みプロトコルを使用する、固定サイズのゾーンに分けることができる。たとえば、記憶ユニットは、追記された書き込みは最適な形のアクセスである、またはデータを記憶するときに追記のみの書き込み方式が使用される、あるいはその両方の、追記最適記憶デバイス（ＡＯＳＤ：Append Optimal Storage Devices）または他のメモリ・デバイスを使用することによって、実装することができる。追記のみの書き込み方式は、新しいデータ・オブジェクトまたはスライスあるいはその両方が、最後、または記憶ゾーン９２２−１および９２２−２などのストレージ内のゾーンの「追記ポイント」に追記されることによって書き込まれるよう指図する。データ・スライスが書き込まれるとき、それらは、ゾーンの対応する追記ポイントに従ってメモリのそれぞれのゾーン内の次の空間に書き込まれ、追記ポイントは、データ・スライス９３０−１〜９３０−４などの新たに書き込まれたデータの長さに基づいて更新される。追記ポイント９５６−１および９５６−２など、各ゾーンの追記ポイントは、記憶ユニットのＲＡＭ９４５または他のメモリなどの揮発性メモリにおいて保持することができ、ポインタ、またはメモリ・デバイスの追記ポイントの場所への他の参照として、記憶することができる。
【００３１】
記憶ユニットは、固定数のアクティブ・ゾーン、または最適であると決定されたいくつかのアクティブ・ゾーン、あるいはその両方を保持するために、動的に、１つまたは複数のメモリ・デバイスの新しいゾーンを割り当て、古いゾーンの割り当てを解除することができる。そのいくつかのゾーン、またはサブセット内の選択されるゾーン、あるいはその両方は、入出力要求頻度、メモリもしくは処理またはその両方の要件、入出力速度要件、または他のゾーン割り当てもしくは再割り当てまたはその両方の要件、あるいはその組合せに基づき得る、ゾーン割り当てパラメータまたはゾーン再割り当てパラメータあるいはその両方に基づいて、決定することができる。書き込み向けにオープンなゾーンのより小さいサブセットを選択することで、シークをさらに最小限に抑え、それにより、入出力速度を改善することができる。一部の実施形態では、メモリ・デバイスごとに厳密に１つのゾーンが、いつでも書き込み用にオープンである。書き込みは各メモリ・デバイス上で完全にシーケンシャルなので、これにより各メモリ・デバイスでのシークをなくすることができる。様々な実施形態において、アクティブ・ゾーンは、ゾーン内の利用可能な空間に基づいて、以前に選択されたゾーンに基づいて、またはランダムに、あるいはその組合せで、選択することができる。記憶ユニットは、どのゾーンが書き込みにまたは読み取りにあるいはその両方にオープンなものとして指定されるか、およびどのゾーンが書き込みにまたは読み取りにあるいはその両方にクローズドであるかに関する情報を保持することができ、再割り当て要件が満たされているという決定に応答してこれらの指定を変更することができる。記憶ユニットはまた、ゾーン優先度情報または各々のゾーンの空き容量情報あるいはその両方を保持することができる。この情報は、記憶ユニットのＲＡＭ９４５または他のメモリに記憶することができる。
【００３２】
ＤＳＮでの純粋に書き込みベースの作業負荷において、新しいゾーンが割り当てられ、新たなゾーンが割り当てられる必要があるまでさらなるシークは必要とされないときに、前述の強化は、メモリ・デバイスシークを単回まで減らすことができる。メモリ・デバイスからのデータの読み取りに関して利用することができる強化もまた存在する。これは、任意の要求されたデータがメモリ・デバイス上の厳密にどこに記憶されるかを説明するすべてのデータの、ポインタ９４０−１〜９４０−３のような、ポインタを保持し、それにより、データを読み取るための単一のシークまで減らすことを含み得る。そのようなポインタは、記憶デバイスのＲＡＭ９４５または他のメモリのような、より高速のメモリに記憶することができる。ポインタは、メモリ・デバイス、ゾーン、ファイル、オフセット、またはデータ・スライスの長さ、あるいはその組合せに関する情報を含むことができる。
【００３３】
より高速の読み取りを促進するために記憶ユニットによって使用されるもう１つの戦略は、たとえば、頻繁に使用されるデータが揮発性メモリ内に止まる頻度ベースのポリシで、ＲＡＭ９４５などのより高速の揮発性メモリにおいて知的に読み取りをキャッシュすることを含む。データ・スライスの読み取り頻度は、たとえば、データがデータ優先度の変更に基づいて最初にまたは後で書き込まれるときの優先度インジケータのように、ネットワークを介してコンピューティング・デバイス１６または他のエンティティから受信され得る。記憶ユニットは、データ・スライスの読み取り頻度を追跡することもでき、そして、読み取り頻度、たとえば一定期間内の読み取りの数が、既定義の読み取り頻度閾値を超えるあるいはそれと比較して好ましいときに、データ・スライスを揮発性メモリに移動することを決定することができる。
【００３４】
入出力の間にシークに費やされる時間を最小限に抑えるために記憶ユニットによって使用されるもう１つの戦略は、ＲＡＭ９４５などのより高速の揮発性メモリに入ってくる読み取りもしくは書き込みまたはその両方をキャッシュすること、または永続メモリ・デバイスもしくはゾーンまたはその両方にバッチで順次に大量のデータを書き込むこと、あるいはその両方を含む。キャッシュからのデータのフラッシュは、定期的に、たとえば、１秒ごと、別の固定時間間隔で、フラッシュ要件の受信に応答して、または揮発性メモリの使用量が、既定義の閾値に近づいている、超える、もしくはそれと比較して好ましくない場合に、あるいはその組合せで、行われてもよい。データのフラッシュは、複数のデータ・スライスを含む大きなデータ・オブジェクトを生成することを含むことができ、データ・スライスは、シーケンシャルであってもなくてもよいプロトコルに基づいて大きなデータ・オブジェクト内に編成される。大きなデータ・オブジェクトは、永続メモリ・デバイスまたはゾーンあるいはその両方に順次に書き込まれる。
【００３５】
入ってくる読み取りまたは書き込みあるいはその両方のキャッシングはまた、ゾーン間の切り替えの数および頻度を最小限に抑えるために使用することができる。メモリ・デバイス内の１つのゾーンに書き込む間に、１つまたは複数の他のゾーンに向けられた新しいデータの書き込みは、１つまたは複数の対応するキャッシュにおいて待ち行列に入れる、たとえばＲＡＭ９４５に記憶する、ことができる。記憶ユニットは、受け付け時刻または他のデータ優先度要件に基づいて、データを待ち行列に入れることができる。記憶ユニットは、データ依存性、データのサイズ、他のゾーンにおける利用可能な空間、名前空間もしくはマッピングまたはその両方の要件、あるいはある特定のデータがある特定のゾーンに記憶されなければならないかを指図する他の場所要件に基づいて、どのゾーンデータが待ち行列に入れられるかを決定することができる。様々な実施形態において、いくつかのまたはすべてのデータが、ランダムに待ち行列に入れられる。記憶ユニットは、既定義のキャッシュ容量閾値にキャッシュ容量が近づく、超える、またはそのような閾値と比較して好ましくないことに応答して、ゾーンを切り替えることまたは新しいゾーンを選択することあるいはその両方が最適であると決定することができる。記憶ユニットは、たとえば、何らかのコンテンツ入力の前にジャーナル入力が書き込まれなければならないと決定すること、大量の高優先度データが待ち行列に記憶されることを決定すること、または待ち行列内のデータ・スライスがある特定の期限までに書き込まれなければならないと決定すること、あるいはその組合せによって、データタイミングまたはデータ依存性要件あるいはその両方に基づいて、新しいゾーンに切り替えることができる。切り替えが実行された後は、記憶ユニットは、新しいデータをキャッシュに書き込み、新しいゾーン向けの待ち行列のキャッシュをフラッシュすることができる。
【００３６】
様々な実施形態において、ＤＳＮの処理システム記憶ユニットは、少なくとも１つのプロセッサと、少なくとも１つのプロセッサによって実行されると処理システムにゾーン割り当てパラメータに基づいて記憶ユニットのメモリ・デバイスの複数の記憶ゾーンのうちの第１の記憶ゾーンを選択させる、動作の命令を記憶するメモリとを含む。複数の記憶ゾーンのうちの第１の記憶ゾーンは書き込み向けにオープンなものとして指定されている。第１のデータ・スライスは、記憶のためにネットワークを介して受信される。第１のデータ・スライスは、複数の記憶ゾーンのうちの第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、複数の記憶ゾーンのうちの第１の記憶ゾーンの記憶場所に順次に書き込まれる。複数の記憶ゾーンのうちの第１の記憶ゾーンおよび記憶場所を指示する第１のデータ・スライスに対応するポインタが生成される。第１の読み取り要求が、第１のデータ・スライスを指示する要求側エンティティからネットワークを介して受信される。第１のデータ・スライスが、ポインタに基づいてメモリ・デバイスから取得され、要求側エンティティに送信される。
【００３７】
図１０は、ゾーンにおいてデータを順次に記憶することの一例を示すフローチャートである。具体的には、方法は、プロセッサを含む記憶ユニットによって、あるいは少なくとも１つのプロセッサと後述のステップを実行するように１つまたは複数のプロセッサを構成する命令を記憶するメモリとを含む分散型ストレージ・ネットワークの別の処理システムを介して、実行するための、図１〜図９と併せて説明された１つまたは複数の機能および特徴と関連して使用するために提示される。ステップ１００２は、記憶ユニットのメモリ・デバイスの複数の記憶ゾーンのうちの第１の記憶ゾーンをゾーン割り当てパラメータに基づいて選択することを含む。ステップ１００４は、複数の記憶ゾーンのうちの第１の記憶ゾーンを書き込み向けにオープンなものとして指定することを含む。ステップ１００６は、記憶するために第１のデータ・スライスをネットワークを介して受信することを含む。ステップ１００８は、複数の記憶ゾーンのうちの第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、複数の記憶ゾーンのうちの第１の記憶ゾーンの記憶場所において第１のデータ・スライスを順次に書き込むことを含む。ステップ１０１０は、複数の記憶ゾーンのうちの第１の記憶ゾーンおよび記憶場所を指示する第１のデータ・スライスに対応するポインタを生成することを含む。ステップ１０１２は、第１のデータ・スライスを指示する要求側エンティティからの第１の読み取り要求をネットワークを介して受信することを含む。ステップ１０１４は、ポインタに基づいてメモリ・デバイスから第１のデータ・スライスを取得することを含む。ステップ１０１６は、第１のデータ・スライスを要求側エンティティに送信することを含む。
【００３８】
様々な実施形態において、第１のデータ・スライスが、スモール・コンピュータ・システム・インターフェース・プロトコルに基づいて順次に書き込まれる。様々な実施形態において、第１のデータ・スライスが、追記ポイントに基づいて順次に書き込まれ、追記ポイントは、第１のデータ・スライスの長さに基づいて、第１のデータ・スライスが書き込まれた後に更新される。
【００３９】
様々な実施形態において、ゾーン再割り当て要件は、第１のデータ・スライスが書き込まれた後の時点において決定される。書き込み向けにクローズドなものとして指定された複数の記憶ゾーンのうちの第２の記憶ゾーンがゾーン再割り当て要件に基づいて選択され、複数の記憶ゾーンのうちの第２の記憶ゾーンが、次いで、書き込み向けにオープンなものとして指定される。第２のデータ・スライスが、記憶のためにネットワークを介して受信される。第２のデータ・スライスが、複数の記憶ゾーンのうちの第２の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、複数の記憶ゾーンのうちの第２の記憶ゾーンの記憶場所に順次に書き込まれる。
【００４０】
様々な実施形態において、厳密に１つの記憶ゾーンが、ゾーン割り当てパラメータに基づいて、選択され、書き込み向けにオープンなものとして指定され、この厳密に１つの記憶ゾーンは、複数の記憶ゾーンのうちの第１の記憶ゾーンである。厳密に１つの記憶ゾーンではない複数の記憶ゾーンのうちの残りのすべての記憶ゾーンが、書き込み向けにクローズドなものとして指定される。様々な実施形態において、記憶ゾーンのサブセットが、ゾーン割り当てパラメータに基づいて、複数の記憶ゾーンから選択される。記憶ゾーンのサブセットのサイズが、ゾーン割り当てパラメータに基づいて選択され、記憶ゾーンのサブセットは、複数の記憶ゾーンのうちの第１の記憶ゾーンを含む。記憶ゾーンのサブセットは、書き込み向けにオープンなものとして指定される。記憶ゾーンのサブセットに含まれない複数の記憶ゾーン内のすべての記憶ゾーンが、書き込み向けにクローズドなものとして指定される。
【００４１】
様々な実施形態において、読み取り頻度閾値と比較して好ましいメモリ・デバイスに記憶された複数のデータ・スライスからのデータ・スライスのサブセットが識別される。データ・スライスのサブセットが、記憶ユニットの揮発性メモリに記憶され、揮発性メモリからのデータ・スライスのサブセットの読み取りは、メモリ・デバイスからのデータ・スライスのサブセットの読み取りよりも速い。第２のデータ・スライスを指示する第２の読み取り要求が、ネットワークを介して受信される。記憶ユニットが、第２のデータ・スライスが揮発性メモリに記憶されることを決定し、ネットワークを介して要求側エンティティに送信するために揮発性メモリから第２のデータ・スライスを取得する。
【００４２】
様々な実施形態において、複数のデータ・スライス書き込み要求がネットワークを介して受信され、これらの複数のデータ・スライス書き込み要求は複数のデータ・スライスを含む。記憶ユニットのキャッシュ内に複数のデータ・スライスが記憶される。複数のデータ・スライスを含むデータ・オブジェクトを生成し、複数の記憶ゾーンのうちの第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に応答して複数の記憶ゾーンのうちの第１の記憶ゾーンに順次にデータ・オブジェクトを書き込み、キャッシュからこの複数のデータ・スライスを除去することによって、キャッシュ・フラッシュ要件の決定に応答してキャッシュがフラッシュされる。
【００４３】
様々な実施形態において、複数の記憶ゾーンのうちの第１の記憶ゾーンを含まない複数の記憶ゾーンのサブセットが、書き込み向けにクローズドなものとして指定される。複数のデータ・スライス書き込み要求がネットワークを介して受信され、これらの複数のデータ・スライス書き込み要求は、複数のデータ・スライスを含む。複数のデータ・スライスが記憶ユニットのキャッシュに記憶され、データ・スライスを記憶することは、キャッシュ内の複数の待ち行列のうちの１つに複数のデータ・スライスの各々を割り当てることを含み、そして、複数の待ち行列のうちの各待ち行列は、書き込み用にクローズドとして指定された複数の記憶ゾーンのサブセット内の記憶ゾーンに対応する。ゾーン再割り当て要件は、複数のデータ・スライスがキャッシュに記憶された後に決定される。複数の記憶ゾーンのうちの第２の記憶ゾーンが、ゾーン再割り当て要件に基づいて選択され、複数の記憶ゾーンのうちの第２の記憶ゾーンは、サブセットに含まれる。複数の記憶ゾーンのうちの第２の記憶ゾーンは、書き込み向けにオープンなものとして指定される。複数の記憶ゾーンのうちの第２の記憶ゾーンに対応する複数の待ち行列のうちの第１の待ち行列がキャッシュからフラッシュされ、このフラッシュは、複数の記憶ゾーンのうちの第２の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に応答して複数の待ち行列のうちの第１の待ち行列の中の複数のデータ・スライスを複数の記憶ゾーンのうちの第２の記憶ゾーンに順次に書き込むことを含み、複数の待ち行列のうちの第１の待ち行列をキャッシュから除去することをさらに含む。
【００４４】
様々な実施形態において、ゾーン再割り当て要件は、キャッシュの容量がキャッシュ容量要件と比較して好ましくないことに基づく。様々な実施形態において、複数の記憶ゾーンのうちの第２の記憶ゾーンが、複数の待ち行列に対応する待ち行列優先度ランキングに基づいて選択され、複数の記憶ゾーンのうちの第２の記憶ゾーンは、待ち行列優先度ランキングのうちの最も高い優先度ランキングに対応する。様々な実施形態において、待ち行列優先度ランキングはデータ依存性要件に基づいており、複数の記憶ゾーンのうちの第２の記憶ゾーンが、複数の記憶ゾーンのうちの第２の記憶ゾーン内の第２のデータ・スライスはデータ依存性要件による複数の記憶ゾーンのうちの第３の記憶ゾーン内の第３のデータ・スライスの前に書き込まれる必要があるという決定に応答して、最も高い優先度ランキングを割り当てられる。
【００４５】
様々な実施形態において、非一過性コンピュータ可読記憶媒体は、プロセッサおよびメモリを含む分散型ストレージ・ネットワーク（ＤＳＮ）の処理システムによって実行されると、ゾーン割り当てパラメータに基づいてメモリ・デバイスの複数の記憶ゾーンのうちの第１の記憶ゾーンを処理システムに選択させる動作の命令を記憶する少なくとも１つのメモリ・セクションを含む。複数の記憶ゾーンのうちの第１の記憶ゾーンは書き込み向けにオープンなものとして指定される。第１のデータ・スライスは、記憶のためにネットワークを介して受信される。第１のデータ・スライスは、複数の記憶ゾーンのうちの第１の記憶ゾーンは書き込み向けにオープンなものとして指定されているという決定に基づいて、複数の記憶ゾーンのうちの第１の記憶ゾーンの記憶場所に順次に書き込まれる。複数の記憶ゾーンのうちの第１の記憶ゾーンおよび記憶場所を指示する第１のデータ・スライスに対応するポインタが生成される。第１の読み取り要求が、第１のデータ・スライスを指示する要求側エンティティからネットワークを介して受信される。第１のデータ・スライスが、ポインタに基づいてメモリ・デバイスから取得され、要求側エンティティに送信される。
【００４６】
ビット・ストリーム、ストリーム、信号シーケンス（またはこれらの同義語）などの本明細書で使用され得る専門用語は、その内容がいくつかの所望のタイプ（たとえば、いずれも概して「データ」と称され得る、データ、ビデオ、スピーチ、オーディオなど）のいずれかに対応するデジタル情報を説明するために同義で使用されていることに留意されたい。
【００４７】
本明細書では、「実質的に」および「ほぼ」という用語は、その対応する用語またはアイテム間の相関性あるいはその両方についての業界で受け入れられる許容範囲を規定する。そのような業界で受け入れられる許容範囲は、１パーセント未満から５０パーセントにわたり、構成要素値、集積回路プロセス変動、温度変動、立上がりおよび立下り時間、または熱雑音、あるいはその組合せに対応するが、これらに限定されない。アイテム間のそのような相関性は、数パーセントの差から重大な差にわたる。本明細書でやはり使用され得る、「ように構成される」、「に動作可能なように結合される」、「に結合される」、または「結合する」という用語、あるいはその組合せは、アイテム間の直接結合、または介在するアイテムを介するアイテム間の間接結合、あるいはその両方を含み（たとえば、アイテムは、構成要素、要素、回路、またはモジュール、あるいはその組合せを含むが、これらに限定されない）、間接結合の一例として、介在するアイテムは、信号の情報を修正しないが、その電流レベル、電圧レベル、または電力レベル、あるいはその組合せを調節し得る。本明細書でさらに使用され得る、推定される結合（すなわち、１つの要素が推定によって別の要素に結合される）は、「に結合される」と同じ形での２つのアイテムの間の直接および間接結合を含む。本明細書でさらに使用され得る、「ように構成される」、「ように動作可能」、「に結合される」、または「に動作可能なように結合される」という用語は、アイテムが、起動されると１つまたは複数のそれの対応する機能を実行するための電力接続、入力、出力などのうちの１つまたは複数を含み、１つまたは複数の他のアイテムへの推定される結合をさらに含み得ることを示す。本明細書でさらに使用され得る、「に関連する」という用語は、別個のアイテム、または別のアイテム内に組み込まれている１つのアイテム、あるいはその両方の直接結合または間接結合あるいはその両方を含む。
【００４８】
本明細書で使用され得る、「比較して好ましい」という用語は、２つ以上のアイテム、信号などの比較が所望の関係をもたらすことを示す。たとえば、所望の関係が、信号１が信号２より大きいマグニチュードを有することであるとき、好ましい比較は、信号１のマグニチュードが信号２のマグニチュードより大きいとき、または信号２のマグニチュードが信号１のマグニチュードより小さいときに、達成され得る。本明細書で使用され得る、「比較して好ましくない」という用語は、２つ以上のアイテム、信号などの比較が、所望の関係をもたらすことに失敗することを示す。
【００４９】
本明細書でやはり使用され得る、「処理モジュール」、「処理回路」、「プロセッサ」、または「処理ユニット」という用語、あるいはその組合せは、単一の処理デバイスまたは複数の処理デバイスでもよい。そのような処理デバイスは、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、マイクロコンピュータ、中央処理ユニット、フィールド・プログラマブル・ゲート・アレイ、プログラマブル論理デバイス、状態機械、論理電気回路、アナログ電気回路、デジタル電気回路、または電気回路のハード・コーディングもしくは動作の命令またはその両方に基づいて信号（アナログもしくはデジタルまたはその両方）を操作する任意のデバイス、あるいはその組合せでもよい。処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せは、単一のメモリ・デバイス、複数のメモリ・デバイス、または別の処理モジュール、モジュール、処理回路もしくは処理ユニット、もしくはこれらの組合せの埋め込まれた電気回路でもよい、メモリまたは集積メモリ要素あるいはその両方でもよく、あるいはこれをさらに含んでもよい。そのようなメモリ・デバイスは、読み取り専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、スタティック・メモリ、ダイナミック・メモリ、フラッシュ・メモリ、キャッシュ・メモリ、またはデジタル情報を記憶する任意のデバイス、あるいはその組合せでもよい。処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せが、複数の処理デバイスを含む場合、処理デバイスは、中央に置かれてもよく（たとえば、ワイヤードまたはワイヤレスあるいはその両方のバス構造を介して共に直接結合されてもよく）、あるいは、分散して置かれてもよい（たとえば、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークあるいはその両方を介する間接結合を介するクラウド・コンピューティング）ことに留意されたい。処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せが、状態機械、アナログ電気回路、デジタル電気回路、または論理電気回路、あるいはその組合せを介してその機能のうちの１つまたは複数を実装する場合、対応する動作の命令を記憶するメモリまたはメモリ要素あるいはその両方は、状態機械、アナログ電気回路、デジタル電気回路、または論理電気回路、あるいはその組合せを備える電気回路内に組み込まれてもよく、あるいはそのような電気回路の外部にあってもよいことにさらに留意されたい。図のうちの１つまたは複数に示されたステップまたは機能あるいはその両方のうちの少なくともいくつかに対応するハード・コード化された命令または動作の命令あるいはその両方をメモリ要素は記憶することができ、処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せは、そのような命令を実行することにさらに留意されたい。そのようなメモリ・デバイスまたはメモリ要素は、製造品に含まれ得る。
【００５０】
１つまたは複数の実施形態が、特定の機能の性能およびその関係を示す方法のステップを用いて前述された。これらの機能のビルディング・ブロックおよび方法ステップの境界線およびシーケンスは、説明の都合上、本明細書では任意に定義されている。特定の機能および関係が適切に実行される限り、代替の境界線およびシーケンスが定義され得る。したがって、任意のそのような代替の境界線またはシーケンスは、本特許請求の範囲および思想内にある。さらに、これらの機能のビルディング・ブロックの境界線は、説明の都合上、任意に定義されている。ある特定の重要な機能が適切に実行される限り、代替の境界線が定義され得る。同様に、フロー図のブロックもまた、ある特定の重要な機能性を示すために本明細書で任意に定義されていることがある。
【００５１】
使用される範囲で、フロー図のブロックの境界線およびシーケンスは、他の方法で定義されて、ある特定の重要な機能性をやはり実行することが可能である。したがって、機能のビルディング・ブロックとフロー図のブロックおよびシーケンスとの両方のそのような代替の定義は、本特許請求の範囲および思想内にある。本明細書の機能のビルディング・ブロック、および他の例示的ブロック、モジュールおよび構成要素は、図示されているように、あるいは個別の構成要素、特定用途向け集積回路、適切なソフトウェアを実行するプロセッサなど、またはその任意の組合せによって、実装し得ることを、当分野における通常の技能を有する者であれば認めるであろう。
【００５２】
さらに、フロー図は、「開始」または「続く」の表示あるいはその両方を含むことがある。「開始」および「続く」の表示は、提示されているステップが、任意選択的に、他のルーチンに組み込まれ得るまたは別の方法で他のルーチンと共に使用され得ることを示す。これに関連して、「開始」は、提示されている第１のステップの開始を示し、具体的に示されていない他の活動によって先行され得る。さらに、「続く」の表示は、提示されているステップが複数回実行され得ること、または具体的に示されていない他の活動が後に続き得ること、あるいはその両方を示す。さらに、フロー図は特定の順序のステップを示しているが、因果関係の原理が維持されることを条件として、他の順序も同様に可能である。
【００５３】
１つまたは複数の実施形態が、１つまたは複数の態様、１つまたは複数の特徴、１つまたは複数の概念、または１つまたは複数の例、あるいはその組合せを示すために本明細書では使用されている。装置、製造品、機械、またはプロセス、あるいはその組合せの物理的実施形態は、本明細書で論じる実施形態のうちの１つまたは複数を参照して説明される態様、特徴、概念、例などのうちの１つまたは複数を含み得る。さらに、図によって、実施形態は、同じまたは異なる参照番号を使用し得る同じまたは同様の名前の機能、ステップ、モジュールなどを包含し得、そのようなものとして、これらの機能、ステップ、モジュールなどは、同じまたは同様の機能、ステップ、モジュールなどであることがあり、あるいは異なるものであることがある。
【００５４】
反対のことが具体的に述べられていない限り、本明細書で提示される図のうちのいずれかの図中の要素への信号、そのような要素からの信号、またはそのような要素間の信号、あるいはその組合せは、アナログまたはデジタル、連続時間または個別の時間、ならびにシングルエンドまたは差分信号でもよい。たとえば、信号経路がシングルエンド経路として示される場合、それはまた、差分信号経路を表す。同様に、信号経路が差分経路として示される場合、それはまた、シングルエンド信号経路を表す。１つまたは複数の特定のアーキテクチャが本明細に記載されるが、明示的に示されていない１つまたは複数のデータ・バス、要素間の直接接続、または他の要素間の間接結合、あるいはその組合せを使用する、他のアーキテクチャが、同様に実装され得ることは、当分野における通常の技能を有する者によって認められる。
【００５５】
「モジュール」という用語が、実施形態のうちの１つまたは複数の説明に使用されている。モジュールは、動作の命令を記憶するメモリを含み得るまたはこれに関連して動作し得るプロセッサまたは他の処理デバイスまたは他のハードウェアなどのデバイスを介して１つまたは複数の機能を実装する。モジュールは、独立して、またはソフトウェアもしくはファームウェアまたはその両方と連動して、あるいはその両方で、動作することができる。本明細書では、モジュールは、その各々が１つまたは複数のモジュールであってもよい、１つまたは複数のサブモジュールを含み得る。
【００５６】
本明細書でさらに使用され得るものとして、コンピュータ可読メモリは、１つまたは複数のメモリ要素を含む。メモリ要素は、別個のメモリ・デバイス、複数のメモリ・デバイス、またはメモリ・デバイス内の１セットの記憶場所でもよい。そのようなメモリ・デバイスは、読み取り専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、スタティック・メモリ、ダイナミック・メモリ、フラッシュ・メモリ、キャッシュ・メモリ、またはデジタル情報を記憶する任意のデバイス、あるいはその組合せでもよい。メモリ・デバイスは、ソリッド・ステート・メモリ、ハード・ドライブ・メモリ、クラウド・メモリ、サム・ドライブ、サーバ・メモリ、コンピューティング・デバイス・メモリ、またはデジタル情報を記憶するための他の物理的媒体、あるいはその組合せの形をとってもよい。
【００５７】
１つまたは複数の実施形態の様々な機能および特徴の特定の組合せが本明細書において明示的に説明されているが、これらの特徴および機能の他の組合せが同様に可能である。本開示は、本明細書で開示されている具体例によって限定されず、これらの他の組合せを明示的に組み込む。
【図１】
0006955571.tif 000002
【図２】
0006955571.tif 000003
【図３】
0006955571.tif 000004
【図４】
0006955571.tif 000005
【図５】
0006955571.tif 000006
【図６】
0006955571.tif 000007
【図７】
0006955571.tif 000008
【図８】
0006955571.tif 000009
【図９】
0006955571.tif 000010
【図１０】
0006955571.tif 000011