【手続補正書】
【提出日】平成25年11月28日(2013.11.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のストレージ装置とネットワークを介して接続され、これらのストレージ装置を利用してファイルのストレージサービスを提供するストレージサービス提供装置であって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクトを保存する手段と、前記ストレージサービス提供装置からの要求に応じて、オブジェクト識別情報により識別されるオブジェクトを返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、
前記ストレージサービス提供装置は、
指定されたファイルに対応する管理情報オブジェクトのオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、前記管理情報オブジェクトを取得する手段と、
取得した前記管理オブジェクトの管理情報により示されるオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、前記ブロックオブジェクトを取得する手段と、
取得した前記ブロックオブジェクトのデータを、前記管理情報を参照して対応する部分に配置することにより、前記ファイルを提供可能とする手段と
を備えることを特徴とするストレージサービス提供装置。
【請求項２】
前記複数のストレージ装置の各々は、保存すべきオブジェクトとして、前記ストレージサービス提供装置から、オブジェクト識別情報により識別されるオブジェクトを受信する手段をさらに備えるものであり、
前記ストレージサービス提供装置は、
指定されたファイルを分割し、各データを前記ブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与する手段と、
前記各ブロックオブジェクトについての前記管理情報を作成し、該情報を管理情報オブジェクトとして、管理情報オブジェクトにオブジェクト識別情報を付与する手段と、
オブジェクト識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段と、
前記各ブロックオブジェクト及び前記管理情報オブジェクトを、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ送信して保存させる手段と
をさらに備える、請求項１に記載のストレージサービス提供装置。
【請求項３】
前記ストレージサービス提供装置が前記要求を送信するストレージ装置は、取得対象のオブジェクトのオブジェクト識別情報に基づいて特定されるものであり、
あるファイルに対応する管理情報オブジェクトと、別のファイルに対応する管理情報オブジェクトとが、前記複数のストレージ装置のうちの別々のストレージ装置に保存されるように、前記オブジェクト識別情報が付与されるものである、請求項１〜２のいずれかに記載のストレージサービス提供装置。
【請求項４】
前記ストレージサービス提供装置が前記要求を送信するストレージ装置及び該ストレージ装置に適合するアクセス方法は、取得対象のオブジェクトのオブジェクト識別情報に基づいて特定されるものであり、
前記特定されたアクセス方法に従い、前記特定されたストレージ装置に対して、前記オブジェクト識別情報の付与されたオブジェクトの保存又は取得を要求することにより、前記ネットワークを介して接続されたストレージ装置の利用が行われる、請求項１〜３のいずれかに記載のストレージサービス提供装置。
【請求項５】
前記複数のストレージ装置は、それぞれ、前記ストレージサービス提供装置をクライアントとし、任意のアクセスプロトコルにて動作することが可能な、ストレージサーバである、請求項１〜４のいずれかに記載のストレージサービス提供装置。
【請求項６】
前記複数のストレージ装置のうち、ある一部のストレージ装置と他の一部のストレージ装置とが、異なるサービス提供事業者により提供されるストレージサービスに係るものである、請求項１〜５のいずれかに記載のストレージサービス提供装置。
【請求項７】
前記複数のストレージ装置を利用して保存されるファイルに対する書き込み要求又は読み出し要求を、ユーザ端末から受信する手段をさらに備え、
前記書き込み要求又は読み出し要求は、汎用のファイルシステムで用いられる形式の要求である、請求項１〜６のいずれかに記載のストレージサービス提供装置。
【請求項８】
前記管理情報オブジェクトは、前記ファイルのそれぞれ別の部分のデータを有する複数のブロックオブジェクトのオブジェクト識別情報と、各ブロックオブジェクトのデータが前記ファイル中のどの部分に並ぶべきかを示すオフセット情報とを含むものである、請求項１〜７のいずれかに記載のストレージサービス提供装置。
【請求項９】
前記管理情報オブジェクトには、
前記ファイル内のある領域におけるそれぞれ別の部分のデータを有する複数のブロックオブジェクトのオブジェクト識別情報と、各ブロックオブジェクトのデータが前記ある領域中のどの部分に並ぶべきかを示す領域内オフセット情報とを含む第１の管理情報オブジェクトと、
前記第１の管理情報オブジェクトのオブジェクト識別情報と、該第１の管理情報オブジェクトが情報を有する前記ある領域が前記ファイル内でどこに位置するものかを示すファイル内オフセット情報とを含む第２の管理情報オブジェクトとがある、請求項１〜８のいずれかに記載のストレージサービス提供装置。
【請求項１０】
前記管理情報オブジェクトは、再帰構造を有する複数の管理情報オブジェクトから構成されることが可能なものであり、
前記ブロックオブジェクトの数が所定数より多い場合には、前記再帰構造の階層を増加させて、複数の管理情報オブジェクトを生成する、請求項１〜９のいずれかに記載のストレージサービス提供装置。
【請求項１１】
前記管理情報オブジェクトは、複数のオブジェクト識別情報を含み、
前記複数のオブジェクト識別情報のうちある一つに基づいて特定されるストレージ装置に対して、該ある一つのオブジェクトの保存又は取得を要求する処理と、前記複数のオブジェクト識別情報のうち別の一つに基づいて特定されるストレージ装置に対して、該別の一つのオブジェクトの保存又は取得を要求する処理とを、並行して行う、請求項１〜１０のいずれかに記載のストレージサービス提供装置。
【請求項１２】
保存されているファイルのデータの一部を更新する場合、データが書き換わるブロックオブジェクトに新たなオブジェクト識別情報を付与し、当該ブロックオブジェクトについての前記管理情報を含む管理情報オブジェクトにも新たなオブジェクト識別情報を付与し、前記管理情報オブジェクトの新たなオブジェクト識別情報が前記ファイルに対応するオブジェクト識別情報として求められるように設定することにより、同一のオブジェクト識別情報を有するオブジェクトの内容を不変とする管理を行うものである、請求項１〜１１のいずれかに記載のストレージサービス提供装置。
【請求項１３】
前記ストレージサービス提供装置が前記要求を送信するストレージ装置は、取得対象のオブジェクトのオブジェクト識別情報に基づいて特定されるものであり、
前記オブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの二つ以上を特定することが可能であり、
前記各ブロックオブジェクト及び前記管理情報オブジェクトは、複製されて、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれの前記二つ以上のストレージ装置に保存されるものである、請求項１〜１２のいずれかに記載のストレージサービス提供装置。
【請求項１４】
読み出すべきファイルに対応する管理情報オブジェクト及び各ブロックオブジェクトのそれぞれのオブジェクト識別情報に基づいて、前記複数のストレージ装置のうち該当するオブジェクト又はその複製を保存している二つ以上を特定する手段と、
特定された一つのストレージ装置に要求を送信して応答がなかった場合に、特定された別のストレージ装置に要求を送信してオブジェクト又はその複製を取得する手段と
をさらに備える、請求項１〜１３に記載のストレージサービス提供装置。
【請求項１５】
読み出すべきファイルに対応する管理情報オブジェクト及び各ブロックオブジェクトのそれぞれのオブジェクト識別情報に基づいて、前記複数のストレージ装置のうち該当するオブジェクト又はその複製を保存している二つ以上を特定する手段と、
特定された二つ以上のストレージ装置に並行して要求を送信し、応答の早かったストレージ装置からオブジェクト又はその複製を取得する手段と
をさらに備える、請求項１〜１４に記載のストレージサービス提供装置。
【請求項１６】
保存されているファイルに対し部分的にデータを書き込む場合、書き込み対象のデータが前記ファイル中のどの部分に並ぶべきものかが指定され、
前記ファイルに属する全てのブロックオブジェクト及び管理情報オブジェクトのうち前記指定された部分に関係するものを選択して又は新たにオブジェクトを生成して、この選択又は新たに生成された各オブジェクトのオブジェクト識別情報に基づいてそれぞれ特定されるストレージ装置に要求を送信し、残りのオブジェクトについてはストレージ装置へのアクセスを行わない、請求項１〜１５のいずれかに記載のストレージサービス提供装置。
【請求項１７】
保存されているファイルからデータを部分的に読み出す場合、読み出し対象のデータが前記ファイル中のどの部分に並んでいるものかが指定され、
前記ファイルに属する全てのブロックオブジェクト及び管理情報オブジェクトのうち前記指定された部分に関係するものを選択して、この選択された各オブジェクトのオブジェクト識別情報に基づいてそれぞれ特定されるストレージ装置に要求を送信し、残りのオブジェクトについてはストレージ装置へのアクセスを行わない、請求項１〜１６のいずれかに記載のストレージサービス提供装置。
【請求項１８】
前記ファイルの分割は、ユーザにより元のファイルの全体が暗号化されたものを複数の部分に分割することにより行われ、
前記複数の部分のうちある部分のデータを有するブロックオブジェクトと、別の部分のデータを有するブロックオブジェクトとが、前記複数のストレージ装置のうちの別々のストレージ装置に保存されるように、ストレージ装置を特定するためのオブジェクト識別情報が付与されるものである、請求項１〜１７のいずれかに記載のストレージサービス提供装置。
【請求項１９】
前記ファイルの分割は、ユーザにより元のファイルの全体が暗号化されたものを複数の部分に分割することにより行われ、
前記複数の部分のうちある部分のデータを有するブロックオブジェクトと、前記管理情報オブジェクトとが、前記複数のストレージ装置のうちの別々のストレージ装置に保存されるように、ストレージ装置を特定するためのオブジェクト識別情報が付与されるものである、請求項１〜１８のいずれかに記載のストレージサービス提供装置。
【請求項２０】
前記管理情報オブジェクトは、前記ファイルの部分のデータを有するブロックオブジェクトのオブジェクト識別情報と、当該ブロックオブジェクトのデータが前記ファイル中のどの部分に並ぶべきかを示すオフセット情報とを含み、
前記ファイル内にデータが存在しない部分がある場合、該データが存在しない部分に対応するブロックオブジェクトは生成せずに、存在するデータを有するブロックオブジェクト及び前記管理情報オブジェクトを保存させ、
前記管理情報オブジェクトにより、前記ファイル中のある部分に対応するオブジェクト識別情報が存在しないことが示されると、該ある部分にＮＵＬデータを並べることにより、前記ファイルを提供可能とする、請求項１〜１９のいずれかに記載のストレージサービス提供装置。
【請求項２１】
前記管理情報オブジェクトは、前記ファイルの部分のデータを有するブロックオブジェクトのオブジェクト識別情報と、当該ブロックオブジェクトのデータが前記ファイル中のどの部分に並ぶべきかを示すオフセット情報とを含み、
前記ファイル内にデータが存在する部分に続けてデータが存在しない部分がある場合、存在するデータと該データの長さの情報とを有するブロックオブジェクト及び前記管理情報オブジェクトを保存させ、
前記管理情報オブジェクトが示す前記ファイル中のある部分に並ぶべきデータの長さが、該ある部分に対応するブロックオブジェクトが有する長さの情報が示すデータの長さより長いならば、長さが足りない分ＮＵＬデータを並べることにより、前記ファイルを提供可能とする、請求項１〜２０のいずれかに記載のストレージサービス提供装置。
【請求項２２】
指定されたファイルに対応するオブジェクト識別情報が付与された管理情報オブジェクトは、該ファイルの全体の長さの情報と、該長さを有する前記ファイル内のどの部分にどのオブジェクト識別情報が付与されたオブジェクトが対応するかを示す情報とを含み、
前記オブジェクト識別情報が付与されたオブジェクトが再び管理情報オブジェクトである場合には、当該管理情報オブジェクトは、当該オブジェクトが前記ファイル内で占める領域の長さの情報と、該長さを有する前記領域中のどの部分にどのオブジェクト識別情報が付与されたオブジェクトが対応するかを示す情報とを含み、
前記オブジェクト識別情報が付与されたオブジェクトがブロックオブジェクトである場合には、当該ブロックオブジェクトは、前記ファイルを構成するデータと、該データの長さの情報とを有する、請求項１〜２１のいずれかに記載のストレージサービス提供装置。
【請求項２３】
保存されているファイルのデータの一部を更新する場合、前記ファイルに属するブロックオブジェクト及び管理情報オブジェクトのうち、データが書き換わるブロックオブジェクト及び当該ブロックオブジェクトのオブジェクト識別情報を含む管理情報オブジェクトを、各オブジェクトを保存しているストレージ装置から取得し、取得された各オブジェクトの内容のうち、前記データの書き換えによって変更されない部分はそのまま残し、変更される部分にデータを書き込むことにより、新たな各オブジェクトを生成し、該新たな各オブジェクトのオブジェクト識別情報に基づいて特定されるストレージ装置に保存させる、請求項１〜２２のいずれかに記載のストレージサービス提供装置。
【請求項２４】
前記オブジェクト識別情報は、前記複数のストレージ装置に保存される全てのブロックオブジェクト及び管理情報オブジェクトの間で一意になるように、付与されるものである、請求項１〜２３のいずれかに記載のストレージサービス提供装置。
【請求項２５】
前記オブジェクト識別情報の値に対して所定の計算を行った結果を前記複数のストレージ装置の数で割り算して得られる余りの値に従って、前記複数のストレージ装置のうちの少なくとも一つが特定されるものである、請求項１〜２４のいずれかに記載のストレージサービス提供装置。
【請求項２６】
前記複数のストレージ装置のそれぞれに該装置の担当する値の範囲を割り振り、前記オブジェクト識別情報の値に対して所定の計算を行った結果と各装置の担当する値の範囲とを比較することにより、前記複数のストレージ装置のうちの少なくとも一つが特定されるものである、請求項１〜２４のいずれかに記載のストレージサービス提供装置。
【請求項２７】
前記ネットワークを介して接続されるストレージ装置が追加又は削除される場合、複数のオブジェクト識別情報のうちの一部について追加されたストレージ装置が特定されるように、又は、いずれのオブジェクト識別情報についても削除されたストレージ装置が特定されないように、特定の処理方法が変更される、請求項２６に記載のストレージサービス提供装置。
【請求項２８】
前記ファイルに対応する先頭オブジェクト識別情報を記憶する手段をさらに備え、
前記記憶された先頭オブジェクト識別情報に基づいて、前記ファイルについて最初に要求を送信するストレージ装置を特定するものである、請求項１〜２７のいずれかに記載のストレージサービス提供装置。
【請求項２９】
指定されたファイルの識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段をさらに備え、
ここで特定されるストレージ装置が、前記ファイルに対応する先頭オブジェクト識別情報を、管理情報オブジェクトの一種として保存するものである、請求項１〜２７のいずれかに記載のストレージサービス提供装置。
【請求項３０】
各ファイルに対応する先頭オブジェクト識別情報をファイルの属性情報とともに記憶する属性管理装置とネットワークを介して接続する手段をさらに備え、
指定されたファイルに対応する先頭オブジェクト識別情報を前記属性管理装置から取得し、取得した先頭オブジェクト識別情報に基づいて、前記ファイルについて最初に要求を送信するストレージ装置を特定するものである、請求項１〜２７のいずれかに記載のストレージサービス提供装置。
【請求項３１】
クライアント装置及び該クライアント装置にネットワークを介して接続された複数のストレージ装置を備え、該クライアント装置がユーザに対してファイルのストレージサービスを提供するシステムであって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、
オブジェクトを保存する手段と、
前記クライアント装置からの要求に応じて、オブジェクト識別情報により識別されるオブジェクトを返送する手段とを備え、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、
前記クライアント装置は、
指定されたファイルに対応する管理情報オブジェクトのオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、前記管理情報オブジェクトを取得する手段と、
取得した前記管理オブジェクトの管理情報により示されるオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、前記ブロックオブジェクトを取得する手段と、
取得した前記ブロックオブジェクトのデータを、前記管理情報を参照して対応する部分に配置することにより、指定された前記ファイルを提供可能とする手段と
を備えることを特徴とするシステム。
【請求項３２】
前記システムが、複数の前記クライアント装置を備え、
前記管理情報オブジェクトは、複数のオブジェクト識別情報を含み、
前記複数のクライアント装置のそれぞれは、
前記指定されたファイルに対応する先頭オブジェクト識別情報を求めることができるように設定され、
前記先頭オブジェクト識別情報に基づいて前記管理情報オブジェクトの取得を要求する処理及び前記複数のオブジェクト識別情報に基づいて各オブジェクトの取得を要求する処理を、他のクライアント装置から独立して行う、請求項３１に記載のシステム。
【請求項３３】
複数のストレージ装置とネットワークを介して接続されたコンピュータにより、これらのストレージ装置を利用してファイルのストレージサービスを提供する方法であって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置から受信して保存する手段と、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置からの要求に応じて返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、
前記方法は、
書き込むべきファイルを分割し、各データを前記ブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与し、
前記各ブロックオブジェクトについての前記管理情報を作成し、該情報を管理情報オブジェクトとして、管理情報オブジェクトにオブジェクト識別情報を付与し、
前記各ブロックオブジェクト及び前記管理情報オブジェクトを、前記複数のストレージ装置のうち、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ、送信して保存させることを特徴とするサービス提供方法。
【請求項３４】
複数のストレージ装置とネットワークを介して接続されたコンピュータにより、これらのストレージ装置を利用してファイルのストレージサービスを提供する方法であって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクトを保存する手段と、前記ストレージサービス提供装置からの要求に応じて、オブジェクト識別情報により識別されるオブジェクトを返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、
前記方法は、
読み出すべきファイルに対応する管理情報オブジェクトのオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、前記管理情報オブジェクトを取得し、
取得した前記管理オブジェクトの管理情報により示されるオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、前記ブロックオブジェクトを取得し、
取得した前記ブロックオブジェクトのデータを、前記管理情報を参照して対応する部分に配置することにより、前記ファイルを取得することを特徴とするサービス提供方法。
【請求項３５】
複数のストレージ装置とネットワークを介して接続されたコンピュータを、これらのストレージ装置を利用してファイルのストレージサービスを提供する装置として動作させるためのプログラムであって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置から受信して保存する手段と、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置からの要求に応じて返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、
前記プログラムは、
書き込むべきファイルを分割し、各データを前記ブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与するためのプログラムコードと、
前記各ブロックオブジェクトについての前記管理情報を作成し、該情報を管理情報オブジェクトとして、管理情報オブジェクトにオブジェクト識別情報を付与するためのプログラムコードと、
前記各ブロックオブジェクト及び前記管理情報オブジェクトを、前記複数のストレージ装置のうち、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ、送信して保存させる付与するためのプログラムコードと
を備えることを特徴とするサービス提供プログラム。
【請求項３６】
複数のストレージ装置とネットワークを介して接続されたコンピュータを、これらのストレージ装置を利用してファイルのストレージサービスを提供する装置として動作させるためのプログラムであって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクトを保存する手段と、前記ストレージサービス提供装置からの要求に応じて、オブジェクト識別情報により識別されるオブジェクトを返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、
前記プログラムは、
読み出すべきファイルに対応する管理情報オブジェクトのオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、前記管理情報オブジェクトを取得するためのプログラムコードと、
取得した前記管理オブジェクトの管理情報により示されるオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、前記ブロックオブジェクトを取得するためのプログラムコードと、
取得した前記ブロックオブジェクトのデータを、前記管理情報を参照して対応する部分に配置することにより、前記ファイルを取得するためのプログラムコードと
を備えることを特徴とするサービス提供プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
これにより、ファイルに対応する先頭オブジェクト識別情報から、ファイルを構成するデータを有するブロックオブジェクトまでの間に、複数の管理情報オブジェクトを仮想的に配置して、２つ以上の階層を有する再帰構造をとらせることができる。ファイルのサイズが巨大になった場合、階層が一つしかないと、管理情報（本例では、各ブロックオブジェクトのオブジェクト識別情報とオフセット情報のリスト）の量が増加して、管理情報の全体を読み出すのにも、アクセスしたいブロックオブジェクトの情報を検索して選択的に読み出すのにも、時間がかかってしまうが、この膨大な管理情報を複数に分割して複数の管理情報オブジェクト（上記でいう第１の管理情報オブジェクト）を生成し、各管理情報オブジェクトのオブジェクト識別情報とオフセット情報のリストを含む新たな管理情報オブジェクト（上記でいう第２の管理情報オブジェクト）を設ければ、これら複数の管理情報オブジェクトも複数のストレージ装置に分散して保存され、並列でアクセスすることが可能になる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００９３
【補正方法】変更
【補正の内容】
【００９３】
図３は、本システムのストレージ装置４の構成を示すブロック図である。図３に示すように、ストレージ装置４は、クライアント装置３との通信を行う通信部８と、ファイルやオブジェクトが保存されるファイル・オブジェクト管理部９と、保存されているファイルやオブジェクトの管理を行うファイル・オブジェクト保存部１０を備えている。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９７
【補正方法】変更
【補正の内容】
【００９７】
次に、本システムのファイル構造について説明する。図５および図６は、本システムのファイル構造の概念図である。本システムでは、図５に示すようなデータ構造でファイルが表現される。ユーザ端末からアクセスされるファイルは、「ファイルオブジェクト（単にファイルともいう）」、「テーブルオブジェクト（単にテーブルともいう）」、「ブロックオブジェクト（単にブロックともいう）」により構成される階層構造を有している。この場合、「ファイルオブジェクト」の中に「テーブルオブジェクト」が含まれ、「テーブルオブジェクト」の中に「ブロックオブジェクト」が含まれる。図５に示すように、「テーブルオブジェクト」の中に「テーブルオブジェクト」が含まれてもよい。なお、この概念図は、本システムのファイル構造を抽象的に表現したものである（データの実体やデータの保存場所については後述する）。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１０７
【補正方法】変更
【補正の内容】
【０１０７】
次に、本システムにおけるオブジェクトの定義について説明する。オブジェクトは、そのオブジェクトを識別するために一意性を有する識別子（object-id）と、データの長さ（length）の情報を持っている。「object-id」としては、例えば、６４ビットの整数、ＵＵＩＤ、任意の文字列などが使用される。また、「length」は、負でない整数であり、例えば６４ビットの整数などで表現される。オブジェクトの「length」は、「getLength」で取得することができる。本システムのオブジェクトには、ブロックとテーブルが含まれる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１２０
【補正方法】変更
【補正の内容】
【０１２０】
この場合、「object-id」は、「file-id」または「table-id」または「block-id」である。また、「object_offset」は、そのオブジェクト内での相対位置（offset）を表現する情報である。また、「buffer」と「bufoff」と「buflen」は、「バッファ」を表現する情報である。読み出しや書き込みの要求は、実際のデータの受け渡しを「buffer」というポインタで始まるデータ領域の「bufoff」で示される相対位置から、「buflen」という長さのバイト分のデータという形で表現する。「writeAt」で書き込みをするときには、上記のデータ領域（バッファ領域）から書き込むべきデータを取得して、データを書き込む。「readAt」で読み出しをするときには、上記のデータ領域（バッファ領域）に読み出したデータをコピーすることにより、データが読み出される。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１３７
【補正方法】変更
【補正の内容】
【０１３７】
ブロック（ブロックオブジェクト）からの読み出し（READ-3）の機能は、「readAt (object-id, object_offset, buffer, bufoff, buflen)」により実装される。この場合、「object-id」は「block-id」である。このブロックからの読み出しでは、該当ブロックの現在のデータを読み出す処理が行われる。例えば、「getContent(object-id)」により「currentData」が読み出される。「currentLength」は、この「currentData」のバイト列（実データ）の長さである。ブロックからの読み出しでは、「currentData」のバイト列に対して、「object_offset」から始まる「readlen」バイト分のデータを、「(buffer, bufoff, readlen)」にロードして、「readlen」を返す。ここで、「readlen」は、「min(buflen, currentLength) 」である。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１３９
【補正方法】変更
【補正の内容】
【０１３９】
そして、「table-1」の内容を、仮想デバイスの選択アルゴリズム（後述する）を用いて、事業者Ａから取得する。ここでは、例えば「650,<0,table-2>,<300,table-3>」という内容が取得される。以下、「table-2」と「table-3」の内容が再帰的に取得される。図９の例では、「table-2」の内容が「300,<0,block-a>,<100,block-b>,<200,block-c>」であり、「table-3」の内容が「350,<0,block-d>,<250,block-e>」である。そうすると、これらのテーブルの内容に従って、オフセット０の位置に配置された１００バイトの長さの「block-a」のデータと、オフセット１００の位置に配置された１００バイトの長さの「block-b」のデータと、オフセット２００の位置に配置された１００バイトの長さの「block-c」のデータと、オフセット３００（領域オフセット０）の位置に配置された２５０バイトの長さの「block-d」のデータと、オフセット５５０（領域オフセット２５０）の位置に配置された１００バイトの長さの「block-e」のデータが読み出される。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１４４
【補正方法】変更
【補正の内容】
【０１４４】
次に、図１３および図１４を参照して、「object_offset」が「１００００から２００バイト」のデータ（data2）を書き込む処理について説明する。図１３に示すように、「WRITE-1」の機能により、ファイルへの書き込みが実行される。この場合、「object_offset」が十分に大きいと判断され、階層を増やす処理が実行される。つまり、現状の「table-y」を単一要素とする、新テーブルが作成される。なお、このとき、テーブルの深さだけが変わるだけで、「getLength()」で取得できる値は「table-y」と同じである。新しく作られたテーブルについては、「table-α = createId()」、「putTable(table-α, 200, <0,table-y>)」が実行される。そして、この新しく作られたテーブル「table-α」に対して「writeAt(table-α, 10000, data2, 0, 200)」が実行される。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１７０
【補正方法】変更
【補正の内容】
【０１７０】
１ 分散型ストレージサービス提供システム（本システム）
２ ユーザ端末
３ クライアント装置（ストレージサービス提供装置）
４ ストレージ装置
５ 通信部
６ 書き込み・読み出し処理部
７ サービステーブル記憶部
８ 通信部
９ ファイル・オブジェクト管理部
１０ ファイル・オブジェクト保存部
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2012089094.tif 000001
【手続補正１２】
【補正対象書類名】図面
【補正対象項目名】図１３
【補正方法】変更
【補正の内容】
【図１３】
2012089094.tif 000002