(57)【要約】【課題】  散在ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスのための方法、ストレージ・システム、コンピュータ・プログラムを提供する。【解決手段】  方法は、符号化データスライスのセットに関する書き込み動作において、コンピューティング・デバイスにより、書き込み動作が、符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断すること（２００）を含む。方法は、書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスである場合、コンピューティング・デバイスにより、書き込み要求のセットをストレージ・ユニットに送ること（２０２）であって、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットの書き込みの最初のインスタンスの表示を含む、送ること（２０２）をさらに含む。方法は、書き込み要求のセットのうちの１つの書き込み要求に応答して、ストレージ・ユニットにより、符号化データスライスのセットの旧バージョンが、現在、ストレージ・ユニットにより格納されているかどうかを判断すること（２０４）をさらに含む。旧バージョンが、現在、ストレージ・ユニットにより格納されている場合、ストレージ・ユニットにより、競合メッセージをコンピューティング・デバイスに送る（２０６）。方法は、コンピューティング・デバイスにより、競合メッセージに基づいて書き込み要求のセットを更新すること（２０８）をさらに含む。【選択図】      図３
2019515381.tif 000002
【特許請求の範囲】
【請求項１】
散在ストレージ・ネットワーク（ＤＳＮ）のストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作のための方法であって、
コンピューティング・デバイスにより、前記書き込み動作が、前記符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断することであって、データ・オブジェクトのデータ・セグメントは、前記符号化データスライスのセットに散在ストレージ・エラー符号化される、判断することと、
前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスである場合、前記コンピューティング・デバイスにより、書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、スライス名のセット、及び前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの表示を含む、送ることと、
前記書き込み要求のセットのうちの１つの書き込み要求に応答して、前記ストレージ・ユニットのうちの１つのストレージ・ユニットにより、前記符号化データスライスのセットのうちの１つの符号化データスライスの旧バージョンが、現在、前記ストレージ・ユニットにより格納されているかどうかを判断することと、
前記符号化データスライスのセットのうちの１つの符号化データスライスの前記旧バージョンが、現在、前記ストレージ・ユニットにより格納されている場合、前記ストレージ・ユニットにより、競合メッセージを前記コンピューティング・デバイスに送ることと、
前記コンピューティング・デバイスにより、前記競合メッセージに基づいて前記書き込み要求のセットを更新することと、
を含む、方法。
【請求項２】
前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの前記表示は、
前記書き込み要求のセットの各書き込み要求において、ゼロの改訂レベルを提供することと、
前記書き込み要求のセットの各書き込み要求において、改訂レベル表示を省略することと、
の一方を含む、請求項１に記載の方法。
【請求項３】
前記書き込み動作が前記符号化データスライスのセットの書き込みの前記最初のインスタンスではない場合、
前記コンピューティング・デバイスにより、前記符号化データスライスのセットに関する読み取り要求のセットを前記ストレージ・ユニットに送ることと、
前記コンピューティング・デバイスにより、前記ストレージ・ユニットの少なくとも幾つかからの読み取り応答に基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記コンピューティング・デバイスにより、前記書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての次の改訂レベルを含む、送ることと、
好適な書き込み応答の書き込み閾値数を受け取っていた場合、前記コンピューティング・デバイスにより、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項４】
前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスである場合、
前記ストレージ・ユニットの少なくとも幾つかから好適な書き込み応答を受け取ることと、
前記好適な書き込み応答の書き込み閾値数を受け取っていた場合、前記コンピューティング・デバイスにより、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項５】
前記書き込み要求のセットを更新することは、
前記コンピューティング・デバイスにより、前記ストレージ・ユニットの１つ又は複数からの前記競合メッセージに基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記コンピューティング・デバイスにより、前記符号化データスライスのセットについての次の改訂レベルを含むように前記書き込み要求のセットを更新することと、
前記コンピューティング・デバイスにより、前記更新された書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記更新された書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての前記次の改訂レベルを含む、送ることと、
を含む、前記請求項のいずれかに記載の方法。
【請求項６】
前記書き込み要求のセットの別の書き込み要求に応答して、前記ストレージ・ユニットの別のストレージ・ユニットにより、前記符号化データスライスのセットの別の符号化データスライスの旧バージョンが、現在、前記他のストレージ・ユニットにより格納されているかどうかを判断することと、
前記他の符号化データスライスが前記他のストレージ・ユニットにより格納されている場合、前記他のストレージ・ユニットにより、前記他のストレージ・ユニットが、前記他の符号化データスライスの旧バージョンを格納していることを示す別の競合メッセージを送ることと、
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項７】
散在ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスのための方法であって、
前記ＤＳＮのストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作について、前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断することであって、データ・オブジェクトのデータ・セグメントは、前記符号化データスライスのセットに散在ストレージ・エラー符号化される、判断することと、
前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスである場合、書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、スライス名のセット、及び前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの表示を含む、送ることと、
前記ストレージ・ユニットの少なくとも幾つかから、前記書き込み要求のセットに関する応答を受け取ることと、
前記応答のうちの１つの応答が競合メッセージである場合、前記競合メッセージに基づいて前記書き込み要求のセットを更新することであって、前記競合メッセージは、前記符号化データスライスのセットのうちの少なくとも１つの符号化データスライスの旧バージョンが、前記ストレージ・ユニットのうちの１つのストレージ・ユニットにより格納されていることを示す、更新することと、
前記応答の書き込み閾値数が好適な書き込み応答である場合、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
を含む、方法。
【請求項８】
前記書き込み要求のセットを更新することは、
前記ストレージ・ユニットの１つ又は複数からの前記競合メッセージに基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記符号化データスライスのセットについての次の改訂レベルを含むように前記書き込み要求のセットを更新することと、
前記更新された書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記更新された書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての前記次の改訂レベルを含む、送ることと、
を含む、請求項７に記載の方法。
【請求項９】
前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの前記表示は、
前記書き込み要求のセットの各書き込み要求において、ゼロの改訂レベルを提供することと、
前記書き込み要求のセットの各書き込み要求において、改訂レベル表示を省略することと、
の一方を含む、請求項７又は請求項８のいずれかに記載の方法。
【請求項１０】
前記書き込み動作が前記符号化データスライスのセットの書き込みの前記最初のインスタンスではない場合、
前記符号化データスライスのセットに関する読み取り要求のセットを前記ストレージ・ユニットに送ることと、
前記ストレージ・ユニットの少なくとも幾つかからの読み取り応答に基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての次の改訂レベルを含む、送ることと、
前記好適な書き込み応答の書き込み閾値数を受け取っていた場合、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
をさらに含む、請求項７から請求項９までのいずれかに記載の方法。
【請求項１１】
ストレージ・システムであって、
散在ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記ＤＳＮのストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作について、前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断することであって、データ・オブジェクトのデータ・セグメントは、前記符号化データスライスのセットに散在ストレージ・エラー符号化される、判断することと、
前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスである場合、書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、スライス名のセット、及び前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの表示を含む、送ることと、
を行わせる、第１のモジュールと、
前記ストレージ・ユニットのうちの１つのストレージ・ユニット内で動作可能なとき、前記ストレージ・ユニットに、
前記書き込み要求のセットのうちの１つの書き込み要求に応答して、前記符号化データスライスのセットのうちの１つの符号化データスライスの旧バージョンが、現在、前記ストレージ・ユニットにより格納されているかどうかを判断することと、
前記符号化データスライスのセットのうちの１つの符号化データスライスの前記旧バージョンが、現在、前記ストレージ・ユニットにより格納されている場合、競合メッセージを前記コンピューティング・デバイスに送ることと、
を行わせる、第２のモジュールと、
前記コンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記競合メッセージに基づいて前記書き込み要求のセットを更新することと、
を行わせる第３のモジュールと、
を含む、ストレージ・システム。
【請求項１２】
前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの前記表示は、
前記書き込み要求のセットの各書き込み要求について、ゼロの改訂レベルを提供することと、
前記書き込み要求のセットの各書き込み要求について、改訂レベル表示を省略することと、
の一方を含む、請求項１１に記載のストレージ・システム。
【請求項１３】
前記コンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記書き込み動作が前記符号化データスライスのセットの書き込みの前記最初のインスタンスではない場合、
前記符号化データスライスのセットに関する読み取り要求のセットを前記ストレージ・ユニットに送ることと、
前記ストレージ・ユニットの少なくとも幾つかからの読み取り応答に基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての次の改訂レベルを含む、送ることと、
好適な書き込み応答の書き込み閾値数を受け取っていた場合、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
を行わせる第４のモジュールをさらに含む、請求項１１又は請求項１２のいずれかに記載のストレージ・システム。
【請求項１４】
前記第１のモジュールは、前記コンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記ストレージ・ユニットの少なくとも幾つかから好適な書き込み応答を受け取ることと、
前記好適な書き込み応答の書き込み閾値数を受け取っていた場合、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
をさらに行わせる、請求項１１から請求項１３までのいずれかに記載のストレージ・システム。
【請求項１５】
前記第１のモジュールは、さらに、前記コンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記ストレージ・ユニットの１つ又は複数からの前記競合メッセージに基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記符号化データスライスのセットについての次の改訂レベルを含むように前記書き込み要求のセットを更新することと、
前記更新された書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記更新された書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての前記次の改訂レベルを含む、送ることと、
によって、前記書き込み要求のセットを更新させる、請求項１１から請求項１４までのいずれかに記載のストレージ・システム。
【請求項１６】
前記ストレージ・ユニットの別のストレージ・ユニット内で動作可能なとき、前記他のストレージ・ユニットに、
前記書き込み要求のセットの別の書き込み要求に応答して、前記符号化データスライスのセットの別の符号化データスライスの旧バージョンが、現在、前記他のストレージ・ユニットにより格納されているかどうかを判断することと、
前記他の符号化データスライスが前記他のストレージ・ユニットにより格納されている場合、前記他のストレージ・ユニットが前記他の符号化データスライスの旧バージョンを格納していることを示す別の競合メッセージを送ることと、
を行わせる第４のモジュールをさらに含む、請求項１１から請求項１５までのいずれかに記載のストレージ・システム。
【請求項１７】
散在ストレージ・ネットワーク（ＤＳＮ）のストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作のためのコンピュータ・プログラム製品であって、
処理回路により可読であり、請求項１から請求項１０までのいずれかに記載の方法を実行するための前記処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品。
【請求項１８】
コンピュータ可読媒体上に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、請求項１から請求項１０までのいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の態様は、一般に、コンピュータ・ネットワークに関し、より特定的には、データの散在ストレージ（dispersed storage）及びデータの分散タスク処理（distributed task processing）に関する。
【背景技術】
【０００２】
コンピューティング・デバイスは、データの通信、データの処理、及び／又はデータの格納を行うことが知られている。そのようなコンピューティング・デバイスは、無線スマートフォン、ラップトップ、タブレット、パーソナル・コンピュータ（ＰＣ）、ワークステーション、及び／又はビデオ・ゲーム・デバイスから、日々の何百万ものウェブ検索、株式取引、又はオンライン購入をサポートするデータセンタにまで及ぶ。一般に、コンピューティング・デバイスは、中央処理装置（ＣＰＵ）、メモリ・システム、ユーザ入力／出力インターフェース、周辺機器インターフェース、及び相互接続バス構造を含む。
【０００３】
さらに知られているように、コンピュータは、「クラウド・コンピューティング」を使用してコンピュータの代わりに１つ又は複数のコンピューティング機能（例えば、サービス、アプリケーション、アルゴリズム、算術論理機能等）を実行することによって、そのＣＰＵを有効に拡張することができる。さらに、大きなサービス、アプリケーション及び／又は機能について、サービス、アプリケーション、及び／又は機能の完了のための応答時間を改善するために、クラウド・コンピューティングは、分散様式で複数のクラウド・コンピューティング・リソースによって実行されることがある。例えば、Ｈａｄｏｏｐは、何千ものコンピュータによるアプリケーションの実行を可能にする分散アプリケーションをサポートするオープン・ソース・ソフトウェア・フレームワークである。
【０００４】
クラウド・コンピューティングに加えて、コンピュータは、そのメモリ・システムの一部として「クラウド・ストレージ」を使用することができる。周知のように、クラウド・ストレージは、ユーザが、そのコンピュータを介してインターネット・ストレージ・システム上にファイル、アプリケーション等を格納することを可能にする。インターネット・ストレージ・システムは、格納するデータを符号化するためにエラー訂正スキームを使用するＲＡＩＤ（redundant array of independent disks、独立ディスク冗長アレイ）システム、及び／又散在ストレージ・システムを含むことができる。
【０００５】
分散ストレージ・システムは、散在ストレージ・ネットワーク（ＤＳＮ）メモリへの一貫した書き込みを行うために３段階のプロセスを用いることが知られており、この３段階は、
１．書き込み段階、
２．利用可能化段階、及び
３．終了（finalize）段階
を含む。
【０００６】
３段階は、異なる改訂版の符号化されたデータスライス（encoded data slice）を保持するＤＳＮの異なるストレージ・ユニットから生じ得る一貫性問題に対処し、ここで、符号化データスライスを生成するために、データは散在ストレージ・エラー符号化される（dispersed storage error encoded）。３段階は、閾値手法を用いて、書き込みプロセスを次の段階に進め、又は競合及びエラーが生じたときにプロセスを後戻りさせ、改訂ストレージの一貫性を維持することが知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、当技術分野において、上述の問題に対処するための必要性がある。発明が解決しようとする課題は一貫性を有する散在ストレージ・ネットワークにおけるデータの格納方法、システム、コンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明のさらに別の態様から見ると、本発明は、散在ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスのための方法を提供し、この方法は、ＤＳＮのストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作について、書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断することであって、データ・オブジェクトのデータ・セグメントは、符号化データスライスのセットに散在ストレージ・エラー符号化される、判断することと；書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスである場合、書き込み要求のセットをストレージ・ユニットに送ることであって、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットの書き込みの最初のインスタンスの表示を含む、送ることと；ストレージ・ユニットの少なくとも幾つかから、書き込み要求のセットに関する応答を受け取ることと；応答のうちの１つの応答が競合メッセージである場合、競合メッセージに基づいて書き込み要求のセットを更新することであって、競合メッセージは、符号化データスライスのセットのうちの少なくとも１つの符号化データスライスの旧バージョンがストレージ・ユニットのうちの１つのストレージ・ユニットにより格納されることを示す、更新することと；応答の書き込み閾値数が好適な（favorable）書き込み応答である場合、書き込みコミット要求の（write commit request）セットをストレージ・ユニットに送ることと、を含む。
【０００９】
本発明のさらに別の態様から見ると、散在ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイス内で動作可能なとき、コンピューティング・デバイスに、ＤＳＮのストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作について、書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断することであって、データ・オブジェクトのデータ・セグメントは、符号化データスライスのセットに散在ストレージ・エラー符号化される、判断することと、書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスである場合、書き込み要求のセットをストレージ・ユニットに送ることであって、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットの書き込みの最初のインスタンスの表示を含む、送ることとを行わせる第１のモジュールと；ストレージ・ユニットのうちの１つのストレージ・ユニット内で動作可能なとき、ストレージ・ユニットに、書き込み要求のセットのうちの１つの書き込み要求に応答して、符号化データスライスのセットのうちの１つの符号化データスライスの旧バージョンが、現在、ストレージ・ユニットにより格納されているかどうかを判断することと、符号化データスライスのセットのうちの１つの符号化データスライスの旧バージョンが、現在、ストレージ・ユニットにより格納されている場合、競合メッセージをコンピューティング・デバイスに送ることとを行わせる、第２のモジュールと；コンピューティング・デバイス内で動作可能なとき、コンピューティング・デバイスに、競合メッセージに基づいて書き込み要求のセットを更新することとを行わせる第３のモジュールと、を含むシステムを提供する。
【００１０】
さらに別の態様から見ると、本発明は、散在ストレージ・ネットワーク（ＤＳＮ）のストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作のためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、処理回路により可読であり、本発明のステップを実行するための方法を実行するための処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。
【００１１】
さらに別の態様から見ると、本発明は、コンピュータ可読媒体上に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、プログラムがコンピュータ上で実行されるとき、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
ここで、本発明の実施形態を、添付図面を参照して単なる例として説明する。
【図面の簡単な説明】
【００１２】
【図１】本発明による分散コンピューティング・システムの実施形態の概略ブロック図である。
【図２】本発明によるコンピューティング・コアの実施形態の概略ブロック図である。
【図３】本発明による散在ストレージ・ネットワーク（ＤＳＮ）の実施形態の概略ブロック図である。
【図４】本発明による散在ストレージ・ネットワーク（ＤＳＮ）の実施形態の概略ブロック図である。
【図５】本発明による散在ストレージ・ネットワーク（ＤＳＮ）の実施形態の概略ブロック図である。
【図６】本発明による、データの格納の例を示すフローチャートである。
【図７】本発明による、データの格納の別の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
図１は、分散コンピューティング・システム１０の実施形態の概略ブロック図であり、分散コンピューティング・システム１０は、ユーザ・デバイス１２及び／又はユーザ・デバイス１４、分散ストレージ及び／又はタスク（ＤＳＴ）処理ユニット１６、分散ストレージ及び／又はネットワーク（ＤＳＴＮ）管理ユニット１８、ＤＳＴ整合性（integrity）処理ユニット２０、及び分散ストレージ及び／又はタスク・ネットワーク（ＤＳＴＮ）モジュール２２を含む。分散コンピューティング・システム１０のコンポーネントは、ネットワーク２４を介して結合され、ネットワーク２４は、１つ又は複数の無線及び／又は有線通信システム、１つ又は複数の非パブリック・イントラネット・システム及び／又は公衆インターネット・システム、及び／又は１つ又は複数のローカル・エリア・ネットワーク（ＬＡＮ）及び／又は広域ネットワーク（ＷＡＮ）を含むことができる。以下、分散コンピューティング・システム１０は、交換可能に、散在ストレージ・ネットワーク（ＤＳＮ）と呼ぶことができる。
【００１４】
ＤＳＴＮモジュール２２は、複数の分散ストレージ及び／又はタスク（ＤＳＴ）実行ユニット３６を含み、これらのユニットは、地理的に異なる場所（例えば、１つはシカゴ、１つはミルウォーキーなど）に配置され得る。ＤＳＴ実行ユニットの各々は、分散エラー符号化データを格納するように、及び／又は分散方式でデータに対して１つ又は複数のタスクを実行するように動作可能である。タスクは、単純な機能（例えば、数学関数、論理関数、識別関数、発見機能、検索エンジン機能、置換機能など）、複雑な機能（例えば、圧縮、人間及び／又はコンピュータの言語の翻訳、テキスト−音声変換、音声−テキスト変換など）、複数の単純及び／又は複雑な機能、１つ又は複数のアルゴリズム、１つ又は複数のアプリケーションなどであり得る。以下、ＤＳＴ実行ユニットは、交換可能に、ストレージ・ユニットと呼ぶことができ、ＤＳＴ実行ユニットのセットは、交換可能に、ストレージ・ユニットのセットと呼ぶことができる。
【００１５】
ユーザ・デバイス１２〜１４、ＤＳＴ処理ユニット１６、ＤＳＴＮ管理ユニット１８、及びＤＳＴ整合性処理ユニット２０の各々は、コンピューティング・コア２６を含み、携帯型コンピューティング・デバイス及び／又は固定型コンピューティング・デバイスとすることができる。携帯型コンピューティング・デバイスは、ソーシャル・ネットワーキング・デバイス、ゲーミング・デバイス、携帯電話、スマートフォン、携帯情報端末、デジタル音楽プレーヤ、デジタル・ビデオ・プレーヤ、ラップトップ・コンピュータ、手持ち式コンピュータ、タブレット、ビデオ・ゲーム・コントローラ、及び／又はコンピューティング・コアを含む任意の他の携帯型デバイスとすることができる。固定型コンピューティング・デバイスは、パーソナル・コンピュータ（ＰＣ）、コンピュータ・サーバ、ケーブル・セットトップ・ボックス、衛星放送受信器、テレビ・セット、プリンタ、ファックス装置、家庭用娯楽機器、ビデオ・ゲーム機、及び／又は任意のタイプの家庭用若しくはオフィス用コンピューティング機器とすることができる。ユーザ・デバイス１２及びＤＳＴ処理ユニット１６は、ＤＳＴクライアント・モジュール３４を含むように構成される。
【００１６】
インターフェースについては、各インターフェース３０、３２、及び３３が、ネットワーク２４を介して間接的に及び／又は直接的に１つ又は複数の通信リンクをサポートするためのソフトウェア及び／又はハードウェアを含む。例えば、インターフェース３０は、ユーザ・デバイス１４とＤＳＴ処理ユニット１６との間の通信リンク（例えば、有線、無線、直接、ＬＡＮを介する、ネットワーク２４を介するなど）をサポートする。別の例として、インターフェース３２は、ユーザ・デバイス１２とＤＳＴＮモジュール２２との間並びにＤＳＴ処理ユニット１６とＤＳＴＮモジュール２２との間の通信リンク（例えば、有線接続、無線接続、ＬＡＮ接続、及び／又はネットワーク２４との間の任意の他のタイプの接続）をサポートする。さらに別の例として、インターフェース３３は、ネットワーク２４に対するＤＳＴＮ管理ユニット１８及びＤＳＴ整合性処理ユニット２０の各々のための通信リンクをサポートする。
【００１７】
分散コンピューティング・システム１０は、散在ストレージ（ＤＳ）エラー符号化データの格納及び取り出しのサポート、受け取ったデータに対する分散タスク処理のサポート、及び／又は格納したデータに対する分散タスク処理のサポートを行うように動作可能である。一般に及びＤＳエラー符号化データの格納及び取り出しに関して、分散コンピューティング・システム１０は、３つの主要な動作：すなわち、ストレージ管理、データの格納及び取り出し、並びにデータ・ストレージの整合性検証をサポートする。これら３つの主要機能に従って、データを符号化し（例えば、情報伝播アルゴリズム（ＩＤＡ）を用いて、散在ストレージ・エラー符号化プロセスを用いて）、物理的に異なる位置に分散して格納し、信頼できるセキュアな様式で後で取り出すことができる。以下、分散して格納される（distributedly stored）は、交換可能に、散在して格納される（dispersed stored）ということができる。そのようなシステムは、個々のストレージ・デバイス（例えば、ＤＳＴ実行ユニット３６）の障害及び／又はネットワーク機器の障害に起因し得るかなりの数の障害に対して、（例えば、ピラー（pillar）幅（例えば、ＩＤＡのＩＤＡ幅）マイナス復号閾値マイナス１より大きいか又はこれと等しいものであり得る障害レベルまで）耐性があり、データの損失がなく、冗長又はバックアップ・コピーの必要がない。さらに、分散コンピューティング・システム１０は、データ損失なしに無期限にデータを格納することを可能にし、セキュアな（例えば、システムが、データに不正アクセスしようとする試みに対して非常に耐性がある）方法でデータを格納する。
【００１８】
第２の主要機能（すなわち、分散データの格納及び取り出し）は、ユーザ・デバイス１２〜１４で開始し終了する。例えば、第２のタイプのユーザ・デバイス１４が、ＤＳＴＮモジュール２２に格納するデータ４０を有する場合、ユーザ・デバイス１４は、そのインターフェース３０を介して、データ４０をＤＳＴ処理ユニット１６に送る。インターフェース３０は、従来のオペレーティング・システム（ＯＳ）ファイル・システム・インターフェース（例えば、ネットワーク・ファイル・システム（ＮＦＳ）、フラッシュ・ファイル・システム（ＦＦＳ）、ディスク・ファイル・システム（ＤＦＳ）、ファイル転送プロトコル（ＦＴＰ）、ウェブベースの分散オーサリング及びバージョニング（ＷｅｂＤＡＶ）など）、及び／又はブロック・メモリ・インターフェース（例えば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）など）を模倣するように機能する。さらに、インターフェース３０は、ユーザ識別コード（ＩＤ）をデータ４０に取り付けることができる。
【００１９】
ストレージ管理をサポートするために、ＤＳＴＮ管理ユニット１８は、ＤＳ管理サービスを実行する。１つのそのようなＤＳ管理サービスは、ＤＳＴＮ管理ユニット１８が、ユーザ・デバイス１２〜１４に対して個々に、又はユーザ・デバイスのグループの一部として、分散データ・ストレージ・パラメータ（例えば、ボールト（vault）の作成、分散ストレージ・パラメータ、セキュリティ・パラメータ、課金情報、ユーザ・プロファイル情報など）を確立することを含む。例えば、ＤＳＴＮ管理ユニット１８は、ユーザ・デバイス、デバイスのグループ、又はパブリック・アクセスのためのＤＳＴＮモジュール２２のメモリ内のボールト（例えば、ＤＳＮのネーム空間全体の一部と関連した仮想メモリ・ブロック）の作成を調整し、ボールトについての散在ストレージ（ＤＳ）エラー符号化パラメータを、ボールトごとに確立する。ＤＳＴＮ管理ユニット１８は、分散コンピューティング・システム１０のためのレジストリ情報を更新することによって、複数のボールトの各ボールトについてのＤＳエラー符号化パラメータの格納を容易にすることができる。この容易化は、更新されたレジストリ情報を、ＤＳＴＮモジュール２２、ユーザ・デバイス１２、ＤＳＴ処理ユニット１６、及びＤＳＴ整合性処理ユニット２０のうちの１つ又は複数に格納することを含む。
【００２０】
ＤＳエラー符号化パラメータ（例えば、すなわち散在ストレージ・エラー・コード化パラメータ）は、データ・セグメント化情報（例えば、幾つのセグメント・データ（例えば、ファイル、ファイルのグループ、データ・ブロックなど）に分割されるか）、セグメント・セキュリティ情報（例えば、セグメントごとの暗号化、圧縮、整合性チェックサムなど）、エラー・コード化情報（例えば、ピラー／ＩＤＡ幅、復号閾値、読み取り閾値、書き込み閾値など）、スライス化情報（例えば、各データ・セグメントについて作成される符号化データスライスの数）、及びスライス・セキュリティ情報（例えば、符号化データスライスごとの暗号化、圧縮、整合性チェックサムなど）を含む。
【００２１】
ＤＳＴＮ管理ユニット１８は、ユーザ・プロファイル情報（例えば、アクセス制御リスト（ＡＣＬ））を作成し、ローカル・メモリ内及び／又はＤＳＴＮモジュール２２のメモリ内に格納する。ユーザ・プロファイル情報は、認証情報、許可、及び／又はセキュリティ・パラメータを含む。セキュリティ・パラメータは、暗号化／解読スキーム、１つ又は複数の暗号化鍵、鍵生成スキーム、及び／又はデータ符号化／復号スキームを含むことができる。
【００２２】
ＤＳＴＮ管理ユニット１８は、特定のユーザ、ユーザ・グループ、ボールト・アクセス、パブリック・ボールト・アクセスなどに対する課金情報を作成する。例えば、ＤＳＴＮ管理ユニット１８は、非パブリック・ボールト及び／又はパブリック・ボールトにユーザがアクセスした回数を追跡し、それをアクセスごとの課金情報を生成するために使用することができる。別の例では、ＤＳＴＮ管理ユニット１８は、ユーザ・デバイス及び／又はユーザ・グループによって格納された及び／又は取り出されたデータの量を追跡し、それを用いてデータ量ごとの課金情報を生成することができる。
【００２３】
別のＤＳ管理サービスは、ＤＳＴＮ管理ユニット１８が、ネットワーク動作、ネットワーク管理、及び／又はネットワーク保守を実行することを含む。ネットワーク動作は、ユーザ・データ割り当て要求（例えば、読み取り及び／又は書き込み要求）を認証すること、ボールトの作成を管理すること、ユーザ・デバイスに対する認証資格証明を確立すること、分散コンピューティング・システム１０からコンポーネント（例えば、ユーザ・デバイス、ＤＳＴ実行ユニット、及び／又はＤＳＴ処理ユニット）を追加／削除すること、及び／又はＤＳＴ実行ユニット３６に対する認証資格証明を確立することを含む。ネットワーク管理は、デバイス及び／又はユニットの障害を監視すること、ボールト情報を保持すること、デバイス及び／又はユニットのアクティブ化ステータスを決定すること、デバイス及び／又はユニットのロードを決定すること、及び／又はシステム１０の性能レベルに影響を与える任意の他のシステム・レベル動作を決定することを含む。ネットワーク保守は、システム１０のデバイス及び／又はユニットの交換、アップグレード、修理、及び／又は拡張を容易にすることを含む。
【００２４】
分散コンピューティング・システム１０内のデータ・ストレージ整合性検証をサポートするために、ＤＳＴ整合性処理ユニット２０は、「不良」又は欠損している符号化データスライスの再構築を実行する。高レベルにおいては、ＤＳＴ整合性処理ユニット２０は、ＤＳＴＮモジュール２２から、符号化データスライス、及び／又は符号化データスライスのスライス名の取り出し／列挙を定期的に試みることによって再構築を実行する。取り出された符号化スライスについて、それらは、データ破損、古いバージョンなどに起因するエラーに関してチェックされる。スライスがエラーを含む場合、それは「不良」スライスとしてフラグが立てられる。受け取られなかった及び／又は列挙されなかった符号化データスライスについては、欠損スライスとしてフラグが立てられる。不良及び／又は欠損スライスは、その後、再構築されたスライスを作成するために良好なスライスとみなされる他の取り出された符号化データスライスを使用して再構築される。再構築されたスライスは、ＤＳＴＮモジュール２２のメモリに格納される。ＤＳＴ整合性処理ユニット２０は、図示されるように別個のユニットであってもよく、ＤＳＴＮモジュール２２内に含まれてもよく、ＤＳＴ処理ユニット１６内に含まれてもよく、及び／又はＤＳＴ実行ユニット３６間に分散されてもよいことに留意されたい。各スライス名は、対応する符号化データスライスに対して一意であり、ＤＳＮのネーム空間全体と関連した複数のフィールドを含む。例えば、フィールドは、ピラー数／ピラー・インデックス、ボールト識別子、格納のために特定のファイルと一意に関連付けられたオブジェクト数、及び複数のデータ・セグメントのデータ・セグメント識別子を含むことができ、ここで特定のファイルは複数のデータ・セグメントに分割される。例えば、各々が共通のボールト識別子、共通のオブジェクト数、及び共通のデータ・セグメント識別子を共有するので、共通のデータ・セグメントから散在ストレージ・エラー符号化された符号化データスライスのセットに対応するスライス名のセットのうちの各スライス名は、ピラー数フィールドのエントリのみによって変わる。
【００２５】
受け取ったデータに対する分散タスク処理をサポートするために、分散コンピューティング・システム１０は、２つの主要な動作：すなわち、ＤＳＴ（分散ストレージ及び／又はタスク処理）管理、並びに受け取ったデータに対するＤＳＴ実行を有する。ＤＳＴ管理のストレージ部分に関して、ＤＳＴＮ管理ユニット１８は、前述のように機能する。ＤＳＴ管理のタスク処理に関して、ＤＳＴＮ管理ユニット１８は、分散タスク処理（ＤＴＰ）管理サービスを実行する。１つのそのようなＤＴＰ管理サービスは、ＤＳＴＮ管理ユニット１８が、ユーザ・デバイス１２〜１４について個々に、又はユーザ・デバイスのグループの一部として、ＤＴＰパラメータ（例えば、ユーザ・ボールト関連情報、課金情報、ユーザ・タスク情報など）を確立することを含む。
【００２６】
別のＤＴＰ管理サービスは、ＤＳＴＮ管理ユニット１８が、ＤＴＰネットワーク動作、ネットワーク管理（上述されたものと本質的に同じ）、及び／又はネットワーク保守（上述されたものと本質的に同じ）を実行することを含む。ネットワーク動作は、これらに限定されるものではないが、ユーザ・タスク処理要求（例えば、有効な要求、有効なユーザなど）を認証すること、結果及び／又は部分的結果を認証すること、ユーザ・デバイスに対するＤＴＰ認証資格証明を確立すること、分散コンピューティング・システムからコンポーネント（例えば、ユーザ・デバイス、ＤＳＴ実行ユニット、及び／又はＤＳＴ処理ユニット）を追加／削除すること、及び／又はＤＳＴ実行ユニットに対するＤＴＰ認証資格証明を確立することを含む。
【００２７】
格納されたデータに対する分散タスク処理をサポートするために、分散コンピューティング・システム１０は、２つの主要な動作：すなわち、ＤＳＴ（分散ストレージ及び／又はタスク）管理、並びに格納されたデータに対するＤＳＴ実行を有する。格納されたデータに対するＤＳＴ実行に関して、第２のタイプのユーザ・デバイス１４が、ＤＳＴＮモジュール２２によって実行されるタスク要求３８を有する場合、ユーザ・デバイス１４は、そのインターフェース３０を介してタスク要求３８をＤＳＴ処理ユニット１６に送る。ＤＳＴ管理に関して、それは、受け取ったデータに対する分散タスク処理をサポートするためのＤＳＴ管理と実質的に類似している。
【００２８】
図２は、処理モジュール５０、メモリ・コントローラ５２、メイン・メモリ５４、ビデオ・グラフィック処理ユニット５５、入力／出力（ＩＯ）コントローラ５６、周辺コンポーネント相互接続（ＰＣＩ）インターフェース５８、ＩＯインターフェース・モジュール６０、少なくとも１つのＩＯデバイス・インターフェース・モジュール６２、読み出し専用メモリ（ＲＯＭ）基本入出力システム（ＢＩＯＳ）６４、及び１つ又は複数のメモリ・インターフェース・モジュールを含むコンピューティング・コア２６の実施形態の概略ブロック図である。１つ又は複数のメモリ・インターフェース・モジュールは、ユニバーサル・シリアル・バス（ＵＳＢ）インターフェース・モジュール６６、ホスト・バス・アダプタ（ＨＢＡ）インターフェース・モジュール６８、ネットワーク・インターフェース・モジュール７０、フラッシュ・インターフェース・モジュール７２、ハード・ドライブ・インターフェース・モジュール７４、及びＤＳＴＮインターフェース・モジュール７６のうちの１つ又は複数を含む。
【００２９】
ＤＳＴＮインターフェース・モジュール７６は、従来のオペレーティング・システム（ＯＳ）ファイル・システム・インターフェース（例えば、ネットワーク・ファイル・システム（ＮＦＳ）、フラッシュ・ファイル・システム（ＦＦＳ）、ディスク・ファイル・システム（ＤＦＳ）、ファイル転送プロトコル（ＦＴＰ）、ウェブベースの分散オーサリング及びバージョニング（ＷｅｂＤＡＶ）など）、及び／又はブロック・メモリ・インターフェース（例えば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）など）を模倣するように機能する。ＤＳＴＮインターフェース・モジュール７６及び／又はネットワーク・インターフェース・モジュール７０は、図１のユーザ・デバイス１４のインターフェース３０として機能することができる。さらに、ＩＯデバイス・インターフェース・モジュール６２及び／又はメモリ・インターフェース・モジュールは、集合的に又は個々にＩＯポートと呼ぶことができることに留意されたい。
【００３０】
図３〜図５は、図１の分散ストレージ及びタスク（ＤＳＴ）処理ユニット１６、図１のネットワーク２４、及びＤＳＴ実行ユニットのセット１〜ｎを含む分散ストレージ・ネットワーク（ＤＳＮ）の実施形態の概略ブロック図である。各ＤＳＴ実行ユニットは、図２の処理モジュール５０及びメモリ８８を含む。メモリ８８は、ソリッド・ステート・メモリ、磁気ディスク・ドライブ・メモリ、光ディスク・ドライブ・メモリ等のうちの１つ又は複数を用いて実装することができる。以下、ＤＳＴ実行ユニットのセットは、交換可能に、ストレージ・ユニットのセットと呼ぶことができる。
【００３１】
ＤＳＮ内では、ＤＳＴ実行ユニット１６は、データ・オブジェクトのデータ・セグメントを散在ストレージ・エラー符号化し、ＤＳＴ実行ユニット１〜ｎのセットへの格納のために符号化データスライスを生成する。時間が経つにつれて、データ・オブジェクトのデータ・セグメントを編集すること又は他の方法で変更することができ、各編集又は変更について、ＤＳＴ実行ユニットは、データ・セグメントを散在ストレージ・エラー符号化し、符号化データスライスのセットを作成する。符号化データスライスのセットの各バージョン（例えば、オリジナル又は後の編集及び／又は変更）について、各バージョンは、類似したスライス名のセットを共有し、各バージョンは、異なる改訂レベル（例えば、初期バージョンについての改訂レベル０、最初の編集についての改訂レベル１など）を有する。
【００３２】
ＤＳＮにおいて、複数のユーザ・デバイスが、実質的に同時に符号化データスライスのセットを編集／変更しようとすることがある。既存のＤＳＮにおいて、ストレージ・ユニットに対するデータ書き込みの並行性（concurrency）を維持するために、書き込み動作は、３段階プロセスを使用する。ユーザ・デバイスが、符号化データスライスのセットを書き込みたいと願う場合、オリジナルのセットであるか又は修正済み／編集済みのセットであるかに関わりなく、ユーザは、書き込み要求のセットをストレージ・ユニットに送る。書き込み要求は、符号化データスライス及びその対応するスライス名の１つを含む。書き込み要求を受け取ると、ストレージ・ユニットは、スライス名に対してプロセス内に別の書き込み要求（例えば、異なるユーザ・デバイスからの符号化データスライスに関する別の書き込み要求）があるかどうかを判断する。例えば、３段階書き込み動作が保留中のとき、書き込み要求の受信及び別の書き込み要求が保留中でないことの検証後、ストレージ・ユニットは、書き込み要求が完了するまで、符号化データスライスへのアクセスをロックする。符号化データスライスへのアクセスがロックされない場合、ストレージ・ユニットは、現在の書き込み動作において符号化データスライスをロックし、符号化データスライスを一時的に格納するが、符号化データスライスへのアクセスを許容せず、ストレージ・ユニットがユーザの書き込み要求を処理できることを示す書き込み応答メッセージを送る。
【００３３】
ユーザ・デバイスが、ストレージ・ユニットから好適な書き込み応答の書き込み閾値数を得た場合、ユーザ・デバイスは、利用可能化（make available）要求をストレージ・ユニットに送る。ストレージ・ユニットは、利用可能化要求を受け取ると、符号化データスライスにアクセスできるようにし、書き込み利用可能応答をユーザ・デバイスに送る。
【００３４】
ユーザ・デバイスが、ストレージ・ユニットに対する好適な書き込み利用可能応答の書き込み閾値数を受け取ると、ユーザ・デバイスは、書き込み終了要求をストレージ・ユニットに送る。書き込み終了要求を受け取ると、ストレージ・ユニットは、新しく格納した符号化データスライスのステータスを最新バージョンの符号化データスライスとして更新し、ロックを解除し、古いバージョンの符号化データスライスを削除することができる。
【００３５】
図３を参照すると、ユーザ・デバイス（例えば、ＤＳＴ処理ユニット又はコンピューティング・デバイス）が、ストレージ・ユニット内に格納する符号化データスライスのセットを有するとき、ユーザ・デバイスは、これが符号化データスライスのセットの書き込みの最初のインスタンスかどうかを判断する。コンピューティング・デバイスは、書き込み動作が新しい仮想ストレージ・ボールトと関連付けられることを検知すること、データと関連付けられた仮想ＤＳＮアドレスが最近ランダムに生成されたことを検知すること、データが実質的に新しいデータであることを検知すること、ストレージ・ボールトが実質的に空であることを検知すること、新しいデータの書き込みのインスタンスが、以前に格納されたデータの上書きのインスタンスより数がはるかに多いことを示す履歴アクセス記録を解釈すること、事前判断、及び新しい書き込み動作の実行と関連したパターンのうちの１つ又は複数に基づいて、判断を行う。
【００３６】
書き込み動作が書き込みの最初のインスタンスである場合、ＤＳＴ処理ユニット１６は、ネットワーク２４を介して、書き込み要求のセット１〜ｎをストレージ・ユニットに送り、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットの書き込みの最初のインスタンスの表示を含む。書き込みの最初のインスタンスの表示は、各書き込み要求内に、第１の改訂と関連した改訂レベル（例えば、０又は１）を含むことができる。或いは、各書き込み要求内の改訂レベルの表示を省略することは、書き込みの最初のインスタンスを示し得る。例えば、ＤＳＴ処理ユニット１６は、テータの属性（例えば、データ名）、要求中のエンティティの属性（例えば、仮想ボールトの所属）、及びランダム生成手法の１つ又は複数に基づいてスライス名のセットを生成し；スライス名のセット、符号化データスライスのセット（例えば、Ａ１〜Ａｎ）、及び改訂レベルの省略を含むように書き込み要求のセットを生成し；ネットワーク２４を介して、格納のために、スライス書き込み要求（write slice request）のセットをＤＳＴ実行ユニットのセット１〜ｎに送る。書き込み要求に応答して、ストレージ・ユニットは、同じスライス名を有する符号化データスライスの旧バージョンを格納しているのかどうかを判断する。例えば、ＤＳＴ実行ユニット１の処理モジュール５０は、これがそのスライス名を有する符号化データスライスの格納の記録を有していない場合、符号化データスライスの旧バージョンを格納していないことを示す。代替的な例として、ＤＳＴ実行ユニット１（又は、ストレージ・ユニット１）の処理モジュールは、これがそのスライス名を有する符号化データスライスの格納の記録を有する場合、符号化データスライスの旧バージョンを格納していることを示す。
【００３７】
ストレージ・ユニットが、現在、符号化データスライスの旧バージョンを格納していない場合、ストレージ・ユニットは、好適な書き込み応答をＤＳＴ処理ユニット１６に発行する。好適な書き込み応答は、対応するスライス書き込み要求が、符号化データスライスの以前に格納された改訂に起因する競合なしに、好都合に処理されたことを示す。さらに、ストレージ・ユニットは、符号化データスライスをアクセスできるようにする。
【００３８】
ＤＳＴ処理ユニット１６が、ストレージ・ユニットの少なくとも幾つかから好適な書き込み応答（例えば、書き込み閾値）を受け取ると、ＤＳＴ処理ユニット１６は、書き込みコミット要求（write commit request）のセットをストレージ・ユニットに送り、格納された符号化データスライスの少なくとも幾つかの後の取り出しを容易にする。書き込みコミット要求を受け取ると、ストレージ・ユニットは、書き込み動作を終了する。この例において、３段階書き込みプロセスにおける３つのやりとりとは対照的に、ユーザ・デバイスとストレージ・ユニットとの間には２つのやりとりが存在する。
【００３９】
図４は、データの格納の別の例を示す。この例においては、ＤＳＴ処理ユニット１６は、符号化データスライスのセットについての書き込み動作が書き込みの最初のインスタンスであるかどうかを判断する。書き込み動作が最初のインスタンスである場合、ＤＳＴ処理ユニット１６は、ネットワーク２４を介して、書き込み要求のセットをストレージ・ユニットに送り、ここで、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットの書き込みの最初のインスタンスの表示を含む。
【００４０】
この例では、ＤＳＴ処理ユニット１６は間違っており、符号化データスライスのセットの書き込みの最初のインスタンスではなかった。示されるように、ＤＳＴ実行ユニット１の各々は、旧バージョンの符号化データスライスを格納している。例えば、ＤＳＴ実行ユニット１の処理モジュール５０は、これが２つの旧バージョン（改訂１及び改訂２）の符号化データスライスを格納していると判断する。同様に、ＤＳＴ実行ユニット２は、これが１つの旧バージョンを格納していると判断し、ＤＳＴ実行ユニットｎは、これが同じく２つの旧バージョンを格納していると判断する。
【００４１】
これが発生すると、ＤＳＴ実行ユニットは、競合応答をＤＳＴ処理ユニット１６に送り、旧バージョンの符号化データスライスが既に格納されていることを示す。競合応答を受け取ると、ＤＳＴ処理ユニット１６は、書き込み動作が最初のインスタンスではないと判断する。従って、ＤＳＴ処理ユニット１６は、ネットワークを介して、符号化データスライスのセットに関する読み取り要求のセットをストレージ・ユニットに送る。読み取り要求のセットを発行すると、ＤＳＴ処理ユニット１６は、ストレージ・ユニットの少なくとも幾つかからの読み取り応答に基づいて、符号化データスライスのセットについての現在の改訂レベルを判断する。例えば、ＤＳＴ処理ユニット１６が、少なくとも、改訂２の符号化データスライスの復号閾値数が、ＤＳＴ処理ユニットのセットにより格納されていると判断した場合、ＤＳＴ処理ユニット１６は、現在の改訂レベルがレベル２であることを示し、受け取った読み取り応答は、格納された符号化データスライスの改訂レベルを示す。
【００４２】
現在の改訂レベルを判断すると、ＤＳＴ処理ユニット１６は、新しい書き込み要求のセットをストレージ・ユニットに送り、そこで、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットについての次の改訂レベルを含む。例えば、ＤＳＴ処理ユニット１６は、２の現在の改訂レベルに基づいて、次の改訂レベルをレベル３と判断し、書き込み要求のセット内にレベル３の次の改訂レベルを含む。好適な書き込み応答の書き込み閾値数を受け取ると、ＤＳＴ処理ユニット１６は、利用可能化要求のセットをストレージ・ユニットに送り、符号化データスライスのセットが後で回復されることを可能にする。
【００４３】
従って、符号化データスライスのセットの書き込みが最初のインスタンスである場合、図３のプロセスは、２つのやりとりを用いて実施される。これが最初のインスタンスではないことが判明した場合、図４のプロセスは、３つのやりとりを用いて実施される。
【００４４】
図５は、データの格納の他の例をさらに示し、そこで、ＤＳＴ処理ユニット１６は、競合メッセージを受け取ったとき、競合メッセージに基づいて書き込み要求のセットを更新する。書き込み要求のセットを更新することは、ＤＳＴ処理ユニット１６が、ストレージ・ユニットの１つ又は複数からの競合メッセージに基づいて、符号化データスライスのセットについての現在の改訂レベル（例えば、改訂２）を判断すること、符号化データスライスのセットについての次の改訂レベル（例えば、改訂レベル３）を含むように、書き込み要求のセットを更新すること、及び更新された書き込み要求のセットをストレージ・ユニットに送ることを含み、ここで、更新された書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットについての次の改訂レベルを含む。例えば、ＤＳＴ処理ユニット１６は、ネットワーク２４を介して、更新された書き込み要求のセットをＤＳＴ実行ユニット１〜ｎのセットに送り、ここで、更新された書き込み要求のセットは、改訂レベル３を含む。
【００４５】
代替的に、書き込み動作が符号化データスライスのセットの書き込みの第１のインスタンスであり、ＤＳＴ処理ユニット１６がストレージ・ユニットの少なくとも幾つかから好適な書き込み応答を受け取る場合、及び、好適な書き込み応答の書き込み閾値数を受け取っていた場合、ＤＳＴ処理ユニット１６は、書き込みコミット要求のセットをストレージ・ユニットに送る。
【００４６】
図６は、データの格納の一例を示すフローチャートである。特に、図１〜図２、図３〜図５及び同じく図６と関連して説明される１つ又は複数の機能及び特徴と共に用いられる方法が提示される。方法は、ステップ２００で始まり、そこで、散在ストレージ・ネットワーク（ＤＳＮ）の１つ又は複数のコンピューティング・デバイスのうちの１つのコンピューティング・デバイスが、ＤＳＮのストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作について、書き込み動作が、符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断し、ここで、データ・オブジェクトのデータ・セグメントは、符号化データスライスのセットに散在ストレージ・エラー符号化される。判断することは、書き込み動作が新しい仮想ストレージ・ボールトと関連付けられることを検知すること、データ・オブジェクトと関連付けられた仮想ＤＳＮアドレスが最近ランダムに生成されたことを検知すること、データ・オブジェクトが実質的に新しいデータであることを検知すること、ストレージ・ボールトが実質的に空であることを検知すること、新しいデータの書き込みインスタンスが、以前に格納されたデータの上書きのインスタンスより数がはるかに多いことを示す履歴アクセス記録を解釈すること、事前判断、及び新しい書き込み動作の実行と関連したパターンのうちの１つ又は複数に基づくことができる。コンピューティング・デバイスが、書き込み動作が書き込みの最初のインスタンスではないと判断する場合、方法はステップ２１０に分岐する。コンピューティング・デバイスが、書き込み動作が書き込みの最初のインスタンスであると判断する場合、方法はステップ２０２に続く。
【００４７】
書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスである場合、方法は、コンピューティング・デバイスは書き込み要求のセットをストレージ・ユニットに送るステップ２０２を続行し、そこで、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットの書き込みの最初のインスタンスの表示を含む。符号化データスライスのセットの書き込みの最初のインスタンスの表示は、書き込み要求のセットの各書き込み要求において０の改訂レベルを提供すること、及び、書き込み要求のセットの各書き込み要求において改訂レベルの表示を省略することのうちの１つを含む。
【００４８】
書き込み要求のセットの書き込み要求に応答して、方法は、ストレージ・ユニットのセットのうちの１つのストレージ・ユニットが、符号化データスライスのセットのうちの１つの符号化データスライスの旧バージョンが、現在、ストレージ・ユニットにより格納されているかどうかを判断するステップ２０４に続く。書き込み要求のセットの別の書き込み要求に応答して、ストレージ・ユニットのうちの別のストレージ・ユニットは、符号化データスライスのセットのうちの別の符号化データスライスの旧バージョンが、現在、他のストレージ・ユニットにより格納されているかどうかを判断する。
【００４９】
符号化データスライスのセットのうちの１つの符号化データスライスの旧バージョンが、現在、ストレージ・ユニットにより格納されている場合、方法は、ストレージ・ユニットが競合メッセージをコンピューティング・デバイスに送るステップ２０６に続く。他の符号化データスライスが他のストレージ・ユニットにより格納されている場合、他のストレージ・ユニットは、他のストレージ・ユニットが他の符号化データスライスの旧バージョンを格納していることを示す別の競合メッセージを送る。
【００５０】
方法は、コンピューティング・デバイスが、競合メッセージに基づいて書き込み要求のセットを更新するステップ２０８に続く。更新することは、コンピューティング・デバイスが、ストレージ・ユニットの１つ又は複数からの競合メッセージに基づいて符号化データスライスのセットについての現在の改訂レベルを判断することと、符号化データスライスのセットについての次の改訂レベルを含むように書き込み要求のセットを更新することと、更新された書き込み要求のセットをストレージ・ユニットに送ることとを含み、ここで、更新された書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットについての次の改訂レベルを含む。
【００５１】
代替的に、書き込み動作が、符号化データスライスのセットの書き込みの最初のインスタンスである場合、コンピューティング・デバイスは、ストレージ・ユニットの少なくとも幾つかから好適な書き込み応答を受け取り、好適な書き込み応答の書き込み閾値数を受け取っていた場合、コンピューティング・デバイスは、書き込みコミット要求のセットをストレージ・ユニットに送る。
【００５２】
書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスではない場合、方法は、コンピューティング・デバイスが、符号化データスライスのセットに関する読み取り要求のセットをコンピューティング・デバイスに送るステップ２１０に続く。方法は、コンピューティング・デバイスが、ストレージ・ユニットの少なくとも幾つかからの読み取り応答（例えば、次の改訂レベル）に基づいて、符号化データスライスのセットについての現在の改訂レベルを判断するステップ２１２に続く。方法は、コンピューティング・デバイスが、ストレージ・ユニットの書き込み要求のセットをストレージ・ユニットに送るステップ２１４に続き、そこで、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットについての次の改訂レベルを含む。好適な書き込み応答の書き込み閾値数を受け取っていた場合、方法は、コンピューティング・デバイスが、書き込みコミット要求のセットをストレージ・ユニットに送るステップ２１６に続く。
【００５３】
コンピューティング・デバイス及びストレージ・ユニットと関連して上述された方法は、代替的に、散在ストレージ・ネットワークの他のモジュール、又は他のデバイスにより実行することができる。例えば、コンピューティング・デバイスの第１のモジュール、第２のモジュール、第３のモジュール、第４のモジュール等、並びにストレージ・ユニットのいずれの組み合わせも、上述した方法を実行することができる。さらに、動作命令を格納する少なくとも１つのメモリ・セクション（例えば、非一時的コンピュータ可読ストレージ媒体及び／又はコンピュータ可読メモリ・デバイスの第１のメモリ・セクション、第２のメモリ・セクション、第３のメモリ・セクション、第４のメモリ・セクション、第５のメモリ・セクション、第６のメモリ・セクション等）は、１つ又は複数のコンピューティング・デバイスの１つ又は複数の処理モジュール及び／又は散在ストレージ・ネットワーク（ＤＳＮ）のストレージ・ユニットにより実行されるとき、１つ又は複数のコンピューティング・デバイス及び／又はストレージ・ユニットに、上述した方法ステップのいずれか又は全てを実行させる。
【００５４】
図７は、データの格納の別の例を示すフローチャートである。特に、図１〜図２、図３〜図５及び同じく図７と関連して説明される１つ又は複数の機能及び特徴と共に用いられる方法が提示される。方法は、ステップ２３０で始まり、ここで、散在ストレージ・ネットワーク（ＤＳＮ）の１つ又は複数のコンピューティング・デバイスのうちの１つのコンピューティング・デバイスの処理モジュールが、ＤＳＮのストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作について、書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断し、データ・オブジェクトのデータ・セグメントは、符号化データスライスのセットに散在ストレージ・エラー符号化される。書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスではない場合、方法は、ステップ２４０に分岐する。書き込み動作が最初のインスタンスである場合、方法は、ステップ２３２に続く。
【００５５】
書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスである場合、方法は、処理モジュールが書き込み要求のセットをストレージ・ユニットに送るステップ２３２に続き、ここで、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットの書き込みの最初のインスタンスの表示を含む。方法は、処理モジュールがストレージ・ユニットの少なくとも幾つかから書き込み要求のセットに関する応答を受け取るステップ２３４に続く。いずれの応答も競合メッセージを含まない場合、方法は、ステップ２３８に分岐する。少なくとも１つの応答が競合メッセージを含む場合、方法は、ステップ２３６に続く。
【００５６】
応答のうちの１つの応答が競合メッセージである場合、方法は、処理モジュールが競合に基づいて書き込み要求のセットを更新するステップ２３６に続き、ここで、競合メッセージは、符号化データスライスのセットのうちの少なくとも１つの符号化データスライスの旧バージョンが、ストレージ・ユニットのセットのうちの１つのストレージ・ユニットにより格納されていることを示す。書き込み要求のセットを更新することは、処理モジュールが、ストレージ・ユニットの１つ又は複数からの競合メッセージに基づいて、符号化データスライスのセットについての現在の改訂レベルを判断することと、符号化データスライスのセットについての次の改訂レベルを含むように、書き込み要求のセットを更新することと、更新された書き込み要求のセットをストレージ・ユニットに送ることとを含み、ここで、更新された書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットの次の改訂レベルを含む。いずれの応答も競合メッセージを含まず、かつ、応答の書き込み閾値数が好適書き込み応答である場合、方法は、処理モジュールが書き込みコミット要求をストレージ・ユニットに送るステップ２３８に続く。
【００５７】
書き込み動作が符号化データスライスのセットの書き込みの最初のインスタンスではない場合、方法は、処理モジュールが符号化データスライスのセットに関する読み取り要求のセットをストレージ・ユニットに送るステップ２４０に続く。代替的に、処理モジュールは、符号化データスライスのセットのスライス名に関するリスト要求のセットをストレージ・ユニットに送る。方法は、処理モジュールが、ストレージ・ユニットの少なくとも幾つかからの（例えば、或いは代替的に、リスト応答からの）読み取り応答に基づいて符号化データスライスのセットについての現在の改訂レベルを判断するステップ２４２に続く。
【００５８】
方法は、処理モジュールが書き込み要求のセットをストレージ・ユニットに送るステップ２４４に続き、ここで、書き込み要求のセットは、符号化データスライスのセット、スライス名のセット、及び符号化データスライスのセットについての次の改訂レベルを含む。好適な書き込み応答の書き込み閾値数を受け取っていた場合、方法は、処理モジュールが書き込みコミット要求のセットをストレージ・ユニットに送るステップ２４６に続く。
【００５９】
処理モジュールに関連して上述された方法は、代替的に、散在ストレージ・ネットワークの他のモジュール又は他のデバイスにより実行することができる。例えば、処理モジュールの第１のモジュール、第２のモジュール、第３のモジュール、第４のモジュール等のいずれの組み合わせも、上述した方法を実行する。さらに、動作命令を格納する少なくとも１つのメモリ・セクション（例えば、非一時的コンピュータ可読ストレージ媒体及び／又はコンピュータ可読メモリ・デバイスの第１のメモリ・セクション、第２のメモリ・セクション、第３のメモリ・セクション、第４のメモリ・セクション、第５のメモリ・セクション、第６のメモリ・セクション等）は、散在ストレージ・ネットワーク（ＤＳＮ）の１つ又は複数の処理モジュールにより実行されるとき、１つ又は複数のコンピューティング・デバイスに、上述した方法ステップのいずれか又は全てを実行させる。
【００６０】
本明細書で使用できる場合、「実質的に」及び「約」という用語は、その対応する用語及び／又はアイテム間の相関性について業界で受け入れられる許容範囲を与える。そのような業界で受け入れられる許容範囲は、１パーセント未満から５０パーセントまでに及び、これらに限定されるものではないが、成分値、集積回路プロセス変動、温度変動、立ち上がり及び立ち下がり時間、及び／又は熱雑音に対応する。そのようなアイテム間の相関性は、数パーセントの差から大規模な差に及ぶ。同じく本明細書で使用できる場合、「動作可能に結合された」、「結合された」、及び／又は「結合」という用語は、アイテム間の直接結合、及び／又は介在するアイテムを介するアイテム間の間接結合を含み（例えば、アイテムは、これらに限定されるものではないが、コンポーネント、要素、回路、及び／又はモジュール）、ここで、間接結合については、介在するアイテムは、信号の情報を変更しないが、その電流レベル、電圧レベル、及び／又は電力レベルを調整することができる。さらに本明細書で使用できる場合、推論結合（inferred coupling）（すなわち、１つの要素が別の要素に推論によって結合される）は、「結合される」と同じように２つのアイテム間の直接及び間接結合を含む。さらに本明細書で使用できる場合、「動作可能」又は「動作可能に結合された」という用語は、アイテムが、アクティブにされたときに１つ又は複数の対応する機能を実行するための電力接続、入力、出力等のうちの１つ又は複数を含むことを示し、１つ又は複数の他のアイテムに推論結合することをさらに含むことができる。さらに本明細書で使用できる場合、「関連付けられた」という用語は、別個のアイテム、及び／又は別のアイテム内に埋め込まれている１つのアイテムの直接及び／又は間接結合を含む。本明細書で使用できる場合、「比較して好ましい」という用語は、２つ又はそれより多いアイテム、信号等の間の比較が望ましい関係を与えることを示す。例えば、望ましい関係が、信号１が信号２より大きい強さを有することである場合、信号１の強さが信号２の強さよりも大きいとき、又は信号２の強さが信号１の強さよりも小さいときに、好ましい比較が達成され得る。
【００６１】
また本明細書で使用できる場合、「処理モジュール」、「処理回路」、及び／又は「処理ユニット」という用語は、単一の処理デバイス又は複数の処理デバイスであり得る。そのような処理デバイスは、マイクロプロセッサ、マイクロコントローラ、デジタル・シグナル・プロセッサ、マイクロコンピュータ、中央処理装置、フィールド・プログラマブル・ゲート・アレイ、プログラマブル論理デバイス、状態機械、論理回路、アナログ回路、デジタル回路、及び／又は回路のハード・コーディング及び／又は動作命令に基づいて信号（アナログ及び／又はデジタル）を操作する任意のデバイスであり得る。処理モジュール、モジュール、処理回路、及び／又は処理ユニットは、メモリ及び／又は集積メモリ要素であることができ、又はそれらをさらに含むことができ、それらは、単一のメモリ・デバイス、複数のメモリ・デバイス、及び／又は別の処理モジュール、モジュール、処理回路、及び／又は処理ユニットの組み込み回路であり得る。そのようなメモリ・デバイスは、読み出し専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、スタティック・メモリ、ダイナミック・メモリ、フラッシュ・メモリ、キャッシュ・メモリ、及び／又はデジタル情報を格納する任意のデバイスであり得る。処理モジュール、モジュール、処理回路、及び／又は処理ユニットが１つより多い処理デバイスを含む場合、処理デバイスは、中央に配置されてよく（例えば、有線及び／又は無線のバス構造を介して一緒に直接結合される）、又は分散して配置されてもよい（例えば、ローカル・エリア・ネットワー及び／又は広域ネットワークを介した間接結合によるクラウド・コンピューティング）ことに留意されたい。さらに、処理モジュール、モジュール、処理回路、及び／又は処理ユニットが、状態機械、アナログ回路、デジタル回路、及び／又は論理回路を介してその機能の１つ又は複数を実装する場合、対応する動作命令を格納するメモリ及び／又はメモリ要素は、状態機械、アナログ回路、デジタル回路、及び／又は論理回路を含む回路の内部又は外部に組み込まれ得ることに留意されたい。さらに、図の１つ又は複数に示されるステップ及び／又は機能の少なくとも幾つかに対応するハード・コード命令及び／又は動作命令を、メモリ要素が格納し、処理モジュール、モジュール、処理回路、及び／又は処理ユニットが実行することができることにも留意されたい。そのようなメモリ・デバイス又はメモリ要素は、製造品内に含まれ得る。
【００６２】
本発明は、指定された機能及びその関係の性能を示す方法ステップを用いて上記に説明されている。これらの機能的な基本構成要素（functional building block）及び方法ステップの範囲及びシーケンスは、説明の便宜のために本明細書では任意に定められている。指定された機能及び関係が適切に実施される限り、代替的な範囲及びシーケンスを定めることもできる。従って、いずれのそのような代替的な範囲又はシーケンスも、特許請求される発明の範囲内にある。さらに、これらの機能的基本構成要素の範囲は、説明の便宜のために任意に定められている。特定の重要な機能が適切に実施される限り、代替的な範囲を定めることができる。同様に、フロー図のブロックは、特定の重要な機能を示すために本明細書では任意に定められ得る。使用される範囲において、フロー図のブロックの範囲及びシーケンスは、別様に定められてもよく、依然として特定の重要な機能を実施することができる。従って、機能的基本構成要素及びフロー図のブロックの両方のそうした代替的定義は、特許請求される発明の範囲内にある。当業者であれば、本明細書における機能的基本構成要素、及び他の例示的なブロック、モジュール、及びコンポーネントは、例示されたように実装されてよく、又は個別部品、特定用途向け集積回路、適切なソフトウェアなどを実行するプロセッサ、又はこれらの任意の組み合わせによって実装されてもよいことも認識するであろう。
【００６３】
本発明はまた、少なくとも部分的に、１つ又は複数の実施形態に関して説明されている。本発明の実施形態は、本明細書において、本発明、その態様、その特徴、その概念、及び／又はその例を示すために使用されている。本発明を具体化する装置、製品、機械、及び／又はプロセスの物理的実施形態は、本明細書で論じられる実施形態の１つ又は複数を参照して説明される態様、特徴、概念、例等の１つ又は複数を含むことができる。さらに、図ごとに、実施形態は、同じ若しくは異なる参照番号を使用することができる同じ又は類似した名前の機能、ステップ、モジュール等を組み込んでもよく、従って、それらの機能、ステップ、モジュール等は、同じ又は類似した機能、ステップ、モジュール等であってもよく、又は異なるものであってもよい。
【００６４】
特に記述されていない限り、本明細書に提示された図面のいずれかの図における要素への、要素からの、及び／又は要素間の信号は、アナログ又はデジタル、連続時間又は離散時間、及びシングルエンド又は差動であり得る。例えば、信号経路がシングルエンド経路として示されている場合、それは差動信号経路も表す。同様に、信号経路が差動経路として示されている場合、それはシングルエンド信号経路も表す。１つ又は複数の特定のアーキテクチャが本明細書に説明されるが、当業者により認識されるように、明確に示されていない１つ又は複数のデータ・バス、要素間の直接接続、及び／又は他の要素間の間接結合を使用する他のアーキテクチャが同様に実装されてもよい。
【００６５】
「モジュール」という用語は、本発明の種々の実施形態の説明で使用される。モジュールは、本明細書で説明され得るような１つ又は複数の機能を実行するための処理モジュール、機能ブロック、ハードウェア、及び／又はメモリ上に格納されたソフトウェアを含む。モジュールがハードウェアによって実装される場合、ハードウェアは、ソフトウェア及び／又はファームウェアと独立して及び／又は関連して動作することができることに留意されたい。本明細書で使用される場合、モジュールは、１つ又は複数のサブ・モジュールを含むことができ、サブ・モジュールの各々は、１つ又は複数のモジュールであり得る。
【００６６】
本発明の種々の機能及び特徴の特定の組み合わせが本明細書で明示的に説明されているが、これらの特徴及び機能の他の組み合わせも同様に可能である。本発明は、本明細書に開示された特定の例により限定されるものではなく、これらの他の組み合わせを明白に組み込む。
【符号の説明】
【００６７】
１０：分散コンピューティング・システム
１２、１４：ユーザ・デバイス
１６：分散ストレージ及び／又はタスク（ＤＳＴ）処理ユニット
１８：分散ストレージ及び／又はネットワーク（ＤＳＴＮ）管理ユニット
２０：ＤＳＴ整合性処理ユニット
２２：分散ストレージ及び／又はタスク・ネットワーク（ＤＳＴＮ）モジュール
２４：ネットワーク
２６：コンピューティング・コア
３０、３２、３３：インターフェース
３６：ＤＳＴ実行ユニット
３８：タスク要求
４０：データ
５０：処理モジュール
５２：メモリ・コントローラ
５４：メイン・メモリ
５５：ビデオ・グラフィック処理ユニット
５６：入力／出力（ＩＯ）コントローラ
５８：周辺コンポーネント相互接続（ＰＣＩ）インターフェース
６０：ＩＯインターフェース・モジュール
６２：ＩＯデバイス・インターフェース・モジュール
６４：読み出し専用メモリ（ＲＯＭ）基本入出力システム（ＢＩＯＳ）
６６：ユニバーサル・シリアル・バス（ＵＳＢ）インターフェース・モジュール
６８：ホスト・バス・アダプタ（ＨＢＡ）インターフェース・モジュール
７０：ネットワーク・インターフェース・モジュール
７２：フラッシュ・インターフェース・モジュール
７４：ハード・ドライブ・インターフェース・モジュール
７６：ＤＳＴＮインターフェース・モジュール
８８：メモリ
【図１】
2019515381.tif 000003
【図２】
2019515381.tif 000004
【図３】
2019515381.tif 000005
【図４】
2019515381.tif 000006
【図５】
2019515381.tif 000007
【図６】
2019515381.tif 000008
【図７】
2019515381.tif 000009
【手続補正書】
【提出日】平成31年1月25日(2019.1.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
散在ストレージ・ネットワーク（ＤＳＮ）のストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作のための方法であって、
コンピューティング・デバイスにより、前記書き込み動作が、前記符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断することであって、データ・オブジェクトのデータ・セグメントは、前記符号化データスライスのセットに散在ストレージ・エラー符号化される、判断することと、
前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスである場合、前記コンピューティング・デバイスにより、書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、スライス名のセット、及び前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの表示を含む、送ることと、
前記書き込み要求のセットのうちの１つの書き込み要求に応答して、前記ストレージ・ユニットのうちの１つのストレージ・ユニットにより、前記符号化データスライスのセットのうちの１つの符号化データスライスの旧バージョンが、現在、前記ストレージ・ユニットにより格納されているかどうかを判断することと、
前記符号化データスライスのセットのうちの１つの符号化データスライスの前記旧バージョンが、現在、前記ストレージ・ユニットにより格納されている場合、前記ストレージ・ユニットにより、競合メッセージを前記コンピューティング・デバイスに送ることと、
前記コンピューティング・デバイスにより、前記競合メッセージに基づいて前記書き込み要求のセットを更新することと、
を含む、方法。
【請求項２】
前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの前記表示は、
前記書き込み要求のセットの各書き込み要求において、ゼロの改訂レベルを提供することと、
前記書き込み要求のセットの各書き込み要求において、改訂レベル表示を省略することと、
の一方を含む、請求項１に記載の方法。
【請求項３】
前記書き込み動作が前記符号化データスライスのセットの書き込みの前記最初のインスタンスではない場合、
前記コンピューティング・デバイスにより、前記符号化データスライスのセットに関する読み取り要求のセットを前記ストレージ・ユニットに送ることと、
前記コンピューティング・デバイスにより、前記ストレージ・ユニットの少なくとも幾つかからの読み取り応答に基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記コンピューティング・デバイスにより、前記書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての次の改訂レベルを含む、送ることと、
好適な書き込み応答の書き込み閾値数を受け取っていた場合、前記コンピューティング・デバイスにより、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項４】
前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスである場合、
前記ストレージ・ユニットの少なくとも幾つかから好適な書き込み応答を受け取ることと、
前記好適な書き込み応答の書き込み閾値数を受け取っていた場合、前記コンピューティング・デバイスにより、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項５】
前記書き込み要求のセットを更新することは、
前記コンピューティング・デバイスにより、前記ストレージ・ユニットの１つ又は複数からの前記競合メッセージに基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記コンピューティング・デバイスにより、前記符号化データスライスのセットについての次の改訂レベルを含むように前記書き込み要求のセットを更新することと、
前記コンピューティング・デバイスにより、前記更新された書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記更新された書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての前記次の改訂レベルを含む、送ることと、
を含む、前記請求項のいずれかに記載の方法。
【請求項６】
前記書き込み要求のセットの別の書き込み要求に応答して、前記ストレージ・ユニットの別のストレージ・ユニットにより、前記符号化データスライスのセットの別の符号化データスライスの旧バージョンが、現在、前記他のストレージ・ユニットにより格納されているかどうかを判断することと、
前記他の符号化データスライスが前記他のストレージ・ユニットにより格納されている場合、前記他のストレージ・ユニットにより、前記他のストレージ・ユニットが、前記他の符号化データスライスの旧バージョンを格納していることを示す別の競合メッセージを送ることと、
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項７】
散在ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスのための方法であって、
前記ＤＳＮのストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作について、前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断することであって、データ・オブジェクトのデータ・セグメントは、前記符号化データスライスのセットに散在ストレージ・エラー符号化される、判断することと、
前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスである場合、書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、スライス名のセット、及び前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの表示を含む、送ることと、
前記ストレージ・ユニットの少なくとも幾つかから、前記書き込み要求のセットに関する応答を受け取ることと、
前記応答のうちの１つの応答が競合メッセージである場合、前記競合メッセージに基づいて前記書き込み要求のセットを更新することであって、前記競合メッセージは、前記符号化データスライスのセットのうちの少なくとも１つの符号化データスライスの旧バージョンが、前記ストレージ・ユニットのうちの１つのストレージ・ユニットにより格納されていることを示す、更新することと、
前記応答の書き込み閾値数が好適な書き込み応答である場合、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
を含む、方法。
【請求項８】
前記書き込み要求のセットを更新することは、
前記ストレージ・ユニットの１つ又は複数からの前記競合メッセージに基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記符号化データスライスのセットについての次の改訂レベルを含むように前記書き込み要求のセットを更新することと、
前記更新された書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記更新された書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての前記次の改訂レベルを含む、送ることと、
を含む、請求項７に記載の方法。
【請求項９】
前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの前記表示は、
前記書き込み要求のセットの各書き込み要求において、ゼロの改訂レベルを提供することと、
前記書き込み要求のセットの各書き込み要求において、改訂レベル表示を省略することと、
の一方を含む、請求項７又は請求項８のいずれかに記載の方法。
【請求項１０】
前記書き込み動作が前記符号化データスライスのセットの書き込みの前記最初のインスタンスではない場合、
前記符号化データスライスのセットに関する読み取り要求のセットを前記ストレージ・ユニットに送ることと、
前記ストレージ・ユニットの少なくとも幾つかからの読み取り応答に基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての次の改訂レベルを含む、送ることと、
前記好適な書き込み応答の書き込み閾値数を受け取っていた場合、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
をさらに含む、請求項７から請求項９までのいずれかに記載の方法。
【請求項１１】
ストレージ・システムであって、
散在ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記ＤＳＮのストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作について、前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスであるかどうかを判断することであって、データ・オブジェクトのデータ・セグメントは、前記符号化データスライスのセットに散在ストレージ・エラー符号化される、判断することと、
前記書き込み動作が前記符号化データスライスのセットの書き込みの最初のインスタンスである場合、書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、スライス名のセット、及び前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの表示を含む、送ることと、
を行わせる、第１のモジュールと、
前記ストレージ・ユニットのうちの１つのストレージ・ユニット内で動作可能なとき、前記ストレージ・ユニットに、
前記書き込み要求のセットのうちの１つの書き込み要求に応答して、前記符号化データスライスのセットのうちの１つの符号化データスライスの旧バージョンが、現在、前記ストレージ・ユニットにより格納されているかどうかを判断することと、
前記符号化データスライスのセットのうちの１つの符号化データスライスの前記旧バージョンが、現在、前記ストレージ・ユニットにより格納されている場合、競合メッセージを前記コンピューティング・デバイスに送ることと、
を行わせる、第２のモジュールと、
前記コンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記競合メッセージに基づいて前記書き込み要求のセットを更新することと、
を行わせる第３のモジュールと、
を含む、ストレージ・システム。
【請求項１２】
前記符号化データスライスのセットの前記書き込みの前記最初のインスタンスの前記表示は、
前記書き込み要求のセットの各書き込み要求について、ゼロの改訂レベルを提供することと、
前記書き込み要求のセットの各書き込み要求について、改訂レベル表示を省略することと、
の一方を含む、請求項１１に記載のストレージ・システム。
【請求項１３】
前記コンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記書き込み動作が前記符号化データスライスのセットの書き込みの前記最初のインスタンスではない場合、
前記符号化データスライスのセットに関する読み取り要求のセットを前記ストレージ・ユニットに送ることと、
前記ストレージ・ユニットの少なくとも幾つかからの読み取り応答に基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての次の改訂レベルを含む、送ることと、
好適な書き込み応答の書き込み閾値数を受け取っていた場合、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
を行わせる第４のモジュールをさらに含む、請求項１１又は請求項１２のいずれかに記載のストレージ・システム。
【請求項１４】
前記第１のモジュールは、前記コンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記ストレージ・ユニットの少なくとも幾つかから好適な書き込み応答を受け取ることと、
前記好適な書き込み応答の書き込み閾値数を受け取っていた場合、書き込みコミット要求のセットを前記ストレージ・ユニットに送ることと、
をさらに行わせる、請求項１１から請求項１３までのいずれかに記載のストレージ・システム。
【請求項１５】
前記第１のモジュールは、さらに、前記コンピューティング・デバイス内で動作可能なとき、前記コンピューティング・デバイスに、
前記ストレージ・ユニットの１つ又は複数からの前記競合メッセージに基づいて、前記符号化データスライスのセットについての現在の改訂レベルを判断することと、
前記符号化データスライスのセットについての次の改訂レベルを含むように前記書き込み要求のセットを更新することと、
前記更新された書き込み要求のセットを前記ストレージ・ユニットに送ることであって、前記更新された書き込み要求のセットは、前記符号化データスライスのセット、前記スライス名のセット、及び前記符号化データスライスのセットについての前記次の改訂レベルを含む、送ることと、
によって、前記書き込み要求のセットを更新させる、請求項１１から請求項１４までのいずれかに記載のストレージ・システム。
【請求項１６】
前記ストレージ・ユニットの別のストレージ・ユニット内で動作可能なとき、前記他のストレージ・ユニットに、
前記書き込み要求のセットの別の書き込み要求に応答して、前記符号化データスライスのセットの別の符号化データスライスの旧バージョンが、現在、前記他のストレージ・ユニットにより格納されているかどうかを判断することと、
前記他の符号化データスライスが前記他のストレージ・ユニットにより格納されている場合、前記他のストレージ・ユニットが前記他の符号化データスライスの旧バージョンを格納していることを示す別の競合メッセージを送ることと、
を行わせる第４のモジュールをさらに含む、請求項１１から請求項１５までのいずれかに記載のストレージ・システム。
【請求項１７】
散在ストレージ・ネットワーク（ＤＳＮ）のストレージ・ユニットに書き込まれる符号化データスライスのセットに関する書き込み動作のためのコンピュータ・プログラム製品であって、
処理回路により可読であり、請求項１から請求項１０までのいずれかに記載の方法を実行するための前記処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品。
【請求項１８】
コンピュータ可読媒体上に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、請求項１から請求項１０までのいずれかに記載の方法をコンピュータに実行させるソフトウェア・コード部分を含む、コンピュータ・プログラム。
【国際調査報告】
2019515381.tif 000010
2019515381.tif 000011