JP6033370B2 - ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム - Google Patents
ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム Download PDFInfo
- Publication number
- JP6033370B2 JP6033370B2 JP2015130494A JP2015130494A JP6033370B2 JP 6033370 B2 JP6033370 B2 JP 6033370B2 JP 2015130494 A JP2015130494 A JP 2015130494A JP 2015130494 A JP2015130494 A JP 2015130494A JP 6033370 B2 JP6033370 B2 JP 6033370B2
- Authority
- JP
- Japan
- Prior art keywords
- file
- management information
- identification information
- block
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims description 335
- 238000000034 method Methods 0.000 title claims description 79
- 238000012545 processing Methods 0.000 claims description 39
- 230000008569 process Effects 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 103
- 238000010586 diagram Methods 0.000 description 27
- 230000007246 mechanism Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 241001362551 Samba Species 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
より行われる。
報オブジェクト)も、いずれもオブジェクトとして、複数のストレージ装置に分散して保存されるため、本ストレージサービス提供装置が、多数のファイルの全てのブロックについての管理情報を集中して保存することはなく、システムにおいて単一障害点となる要素を低減することが可能となる。
報を付与し、当該ブロックオブジェクトのデータから前記ファイルを構築するための情報を含む管理情報オブジェクトにも新たなオブジェクト識別情報を付与し、前記管理情報オブジェクトの新たなオブジェクト識別情報が前記ファイルに対応する先頭オブジェクト識別情報として求められるように設定することにより、同一のオブジェクト識別情報を有するオブジェクトの内容を不変とする管理を行ってもよい。
上を特定する手段と、特定された二つ以上のストレージ装置に並行してアクセスし、応答の早かったストレージ装置からオブジェクト又はその複製を取得する手段とさらに備えるようにしてもよい。
にしてもよい。
該長さを有する前記領域中のどの部分にどのオブジェクト識別情報が付与されたオブジェクトが配置されるかを示す情報とを含み、前記オブジェクト識別情報が付与されたオブジェクトがブロックオブジェクトである場合には、当該ブロックオブジェクトは、前記ファイルを構成するデータと、該データの長さの情報とを有するようにしてもよい。
クセス方法との対応を示す情報をシステム内に保持することになるが、この情報の量は、ストレージ装置の数の分だけに限られ、上述した管理情報のようにファイルの数及びそれを構成するオブジェクトの数によって爆発的に増加するものではないため、単一障害点となる要素を極めて少なくできる。
ービス提供装置が、読み出すべきファイルの識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段をさらに備え、ここで特定されるストレージ装置が、読み出すべきファイルに対応する先頭オブジェクト識別情報を、管理情報オブジェクトの一種として保存するようにしてもよい。
発明としても成立し、上述したストレージサービス提供システムの各発明は、そこでクライアント装置として動作するストレージサービス提供装置の発明としても成立するものである。
」がパラメータとして用いられる。ここで、「file-id」は、ファイルを識別するための
識別情報である。
ている。「READ」の機能では、「file-id」、「offset」、「data」などがパラメータと
して用いられる。「WRITE」の機能では、「file-id」、「offset」、「データ領域」など
がパラメータとして用いられる。ここで、「offset」は、データがデータ領域内でどの部分に配置されるべきかを示す情報である。「data」は、文字列や数値などのデータの情報であり、データの長さ(length)の情報も含まれる。「データ領域」は、データが書き込まれる領域の情報であり、その領域に書き込むことができるデータの長さ(length)の情報も含まれる。
「length」の情報を持つ「箱」として表現することができる。
は、「table-1」というテーブルIDのテーブルであり、「950」という「length」の情報と、「<0,block-20>、<100,table-3>、<600,block-12>、<750,table-10>」というリスト
の情報を持っている。
00バイトの長さの「block-20」のデータと、オフセット100の位置に配置された「table-3」のテーブル(リスト)と、オフセット600の位置に配置された150バイトの
長さの「block-12」のデータと、オフセット750の位置に配置された「table-10」のテ
ーブル(リスト)が読み出される。なお、「readAt」は、データの読み出しをするための命令(インターフェース)である。なお、上述のように、「オフセット」は、ファイル内での位置(そのファイルの先頭からの位置)を表す情報である。
場合、「table-3」のテーブルは、「500」という「length」の情報と、「<0,block-120>
、<300,block-130>」というリストの情報を持っている。したがって、この「table-3」のテーブルを「readAt」すると、領域オフセット0の位置に配置された100バイトの長さの「block-120」のデータと、領域オフセット300の位置に配置された200バイトの
長さの「block-130」のデータが読み出される。また、「table-10」のテーブルは、「200」という「length」の情報と、「<0,block-800>、<50,block-900>」というリストの情報
を持っている。したがって、この「table-10」のテーブルを「readAt」すると、領域オフセット0の位置に配置された50バイトの長さの「block-800」のデータと、領域オフセ
ット50の位置に配置された150バイトの長さの「block-900」のデータが読み出され
る。なお、「領域オフセット」は、そのテーブルが示す領域内でのオフセット(そのテーブルが示す領域の先頭からの相対位置)を表す情報である。
バイトの長さの「block-20」のデータと、オフセット100(領域オフセット0)の位置に配置された100バイトの長さの「block-120」のデータと、オフセット400(領域
オフセット300)の位置に配置された200バイトの長さの「block-130」のデータと
、オフセット600の位置に配置された150バイトの長さの「block-12」のデータと、オフセット750(領域オフセット0)の位置に配置された50バイトの長さの「block-800」のデータと、オフセット800(領域オフセット50)の位置に配置された150
バイトの長さの「block-900」のデータが、読み出されることになる。なお、オフセット
200から400までの間のデータがない領域は「nul」で埋められている。
るためのテーブル(先頭テーブル)の「table-id」に対応付けされている。本システムにおいて、ファイルの内容に関する情報は、先頭テーブルに書き込まれた「table-id」のみであり、詳細な内容は「table-id」から再帰的にデータを取得することにより得られるようになっている。なお、実装上は、「file-id」と先頭テーブルの「table-id」の対応表
もネットワーク上にオブジェクトとして保存されていてよい。ファイルの長さ(length)は、先頭テーブルに対して「getLength」して取得できるの長さ(length)と同じである
。すなわち、「getLength(ファイルオブジェクト) = getLength(該当ファイルの先頭テーブル)」である。なお、ファイルは、属性情報(所有者、アクセス権限、更新日時)や管
理情報を持っていてもよい。
」で取得することができる。また、テーブルは、「putTable(table-id,<offset,object-id>)」で「table-id」と「<offset,object-id>」を与えることにより、新規に生成するこ
ともできる。なお、テーブルの上書きは不可である。また、<offset0,object0>というエ
ントリについては、「offset0 ≧ 0(「offset」の値が0以上であること)」、「object0.getLength() > 0(そのオブジェクトの「length」の値が0より大きいこと)」、「offset0 + object0.getlength() ≦ table.getLength()(「offset」の値にそのオブジェクトの「length」の値を加えた値が、テーブルの「length」の値以下であること)」が、すべて成り立つことが条件とされる。
ークサーバへのアクセス手段は、例えば「10.0.50.11:/users/isi(NFSの場合)」や
「samba://10.0.60.1/public(CIFSの場合)」などであり、物理デバイスへのアクセス手段は、例えば「/dev/sd0a」などである。なお、サービステーブルの詳細については
後述する。
スが特定され、その「block-id」に対応するデータを保存する。このとき、「HTTP PUT」や「NFS WRITE」など、仮想デバイスに応じたデータ保存の仕組みを利用してもよい。なお、上述のとおり、本システムでは、ブロックの新規保存のみ可能であり、ブロックの上書きは不可である。
デバイスに応じたデータ保存の仕組みを利用してもよい。なお、その「block-id」に対応するデータがない場合には「エラー」となる。
す方法である。エンコード手法の例としては、(1)可読文字列で表現する手法(例えば、「10」を、文字列の「10」で表現する手法)や、(2)バイト列で保存する手法(例えば、「int」は4バイト、「long」は8バイトの列で保存する手法)や、(3)「tuple(タイプ、長さ、データ)」の列としてデータを保存する手法などがある。
」までに収まっていること」が条件とされる。また、「最終の「offset」に位置する「object-id」の「length」については、「テーブルの「length」≧ 最終の「offset」+ (sub) length(最終の「offset」の値に「(sub) length」の値を加えた値が、テーブルの「length」の値以下であること)」が、成り立つことが条件とされる。
である。「writeAt」は、「offset」と「length」と「データのバイト列」を受け取る。
「writeAt (object-id, object_offset, buffer, bufoff, buflen)」は、「object-id」
と「object_offset」と「buffer」と「bufoff」と「buflen」を与えると、更新されたデ
ータを持った新しい「object-id」を返す。読み出し用の共通インターフェースは「readAt」である。「readAt」は、「offset」と「length」と「読み出すデータ領域の情報」を
受け取る。「readAt (object-id, object_offset, buffer, bufoff, buflen)」は、「obj
ect-id」と「object_offset」と「buffer」と「bufoff」と「buflen」を与えると、該当
の領域のデータを読み出した内容を、「buffer」、「bufferoff」、「bufferlen」で示される領域にコピーし、読み出せたデータの長さ「length」を返す。
り当て、その「file-id」の先頭テーブルを「EMPTY_TABLE」にセットし、その「file-id
」を返すというものである。ここで、「EMPTY_TABLE」は、長さがゼロであって、リスト
の要素数がゼロである特別なテーブルである。これは、実データを持たないため、仮想デバイス上に実態を持つ必要がなく、特別なオブジェクトID(空テーブルを示す全ファイルに共通のID)だけが存在する。「create」は、「file-id」を割り当てるだけのもの
であるともいえる。
×1000d」以上である場合に、階層構造をひとつ増やす(木構造を一段深くする)処理が行われる。このとき、「現在のlength」と<0,先頭テーブルのtable-id>を持ったテーブルが新規に作成され、そのファイルの先頭テーブルの「tabale-id」が書き換えられる
。また、ファイルに対応づけられている「table-id」に対して「writeAt (table-id, object_offset, buffer, bufoff, buflen)」を実行すると、新しく割り当てられた「table-id」が先頭テーブルとして登録される。これにより、特別なオブジェクトID又は以前の
「table-id」が、新たな「table-id」に書き換えられる。「writeAt」は、更新されたオ
ブジェクトのIDを返す必要があるが、ファイルへの書き込みでは、先頭テーブルだけを書き換えて、自身の「file-id」を返すようになっている。
クト(テーブルまたはブロック)を検索する。例えば、「object_offset + bufoff」がテーブルの各要素の「offset + getLength()」に入る場合を検索する。
、「child-id」は、該当のサブオブジェクトを示すIDである。また、「child-length」は、そのサブオブジェクトの長さ(すなわち、getLength(child-id)で取得される長さ)
であり、「child-offset」は、そのサブオブジェクトのoffsetの値である。また、「writelen」は、「Min(buflen, child-length)」である。
」を「buflen − writelen」として、パラメータの更新を実行する。
、「object_offset」から始まる部分に対して、「(buffer, bufoff, min(buflen, currentLength))」のデータを上書きする。そして、最終的にできあがったデータと、上記の「currentLength」に対して、「createId()」により「newId」を作成し、「putContent(newId, currentLength, currentData)」を実行したうえで、「newId」を返すようにされてい
る。
クト(テーブルまたはブロック)を検索する。
得される長さ)であり、「child-offset」は、そのサブオブジェクトのoffsetの値である。また、「readlen」は、「Min(buflen, child-length)」である。
の更新を実行する。
して、「object_offset」から始まる「readlen」バイト分のデータを、「(buffer, bufoff, readlen)」にロードして、「readlen」を返す。ここで、「readlen」は、「min(buflen, currentLength) 」である。
」の対応表も一つのオブジェクトとしてネットワーク上に保存されていてもよい。
ている。ここでは、まず、新規ファイルの作成について説明する。図10に示すように、ユーザ端末からファイルを書き込むアクセスがあると、まず、「CREATE」の機能により、新規ファイルが作成される。このとき、先頭テーブルに「EMPTY_TABLE」がセットされる
。
ーブルの「EMPTY_TABLE」に対して、「writeAt(EMPTY_TABLE, 0, data, 0, 100)」が実行される。その後、「WRITE-2」の機能により、テーブルへの書き込みが実行される。この
場合、「offset」に該当するブロックが存在しないため、ブロックを作成する。例えば、「block-a = createId()」、「putContent(block-a, 0 − 0, data, 0, 100)」により「block-a」のブロックを作成して、リストを更新する。次いで、「writeAt」内のメインル
ープを抜けて、「length」を「100」に更新した後、「table-x = createId()」、「putTable(table-x, 100, <0, block-a>)」を実行し、「table-x」を返す。そして、上記「table-x」を先頭テーブルにセットし、処理を終了する。
」を、新たなブロックとして、リストを更新する。その結果、新しいリストは<0,block-b>になる。その後、「object_offset 」に「50 + 50 = 100」をセットし、「buflen」に「150 − 50 = 100」をセットし、「bufoff」に「0 + 50 = 50」をセットして、次のループへ進む。
新され、新しいリストは「<0,block-b>,<100,block-c>」になる。このとき、「object_offset」に「100 + 100 = 200」をセットし、「buflen」に「100 − 100」をセットし、「bufoff」に「50 + 100 = 150」をセットする。この場合、「buflen」がゼロになるので、
ループを終了する。そして、「length」を「200」にセットしたうえで、「table-y = createId()」、「putTable(table-y, 200, <0,block-b>,<100,block-c>)」を実行して新
規テーブルを作成し、「table-y」を返す。その後、ファイルの先頭テーブルを「table-y」にセットして処理を終了する。
っている。動的なサービステーブルでは、各サービス名称(一意な名称)がハッシュ値に変換されて、オブジェクトIDがそのハッシュ値に一番近いサービスが特定されるようになっている。
cation」の情報、サービスを利用するための認証情報、その他、サービスに依存する付加情報がある。サービス提供事業者の情報は、自ネットワークの場合には「local」の情報
であってよい。「location」の情報には、「http,nfs,cifs,ftp,webdav」などのプロトコルの情報や、「%o(オブジェクトIDに置き換え)」や「%u(ユーザIDに置き換え)」などのパス情報(必要に応じてパラメータ変換を行うための情報)が含まれる。また、サービスを利用するための認証情報には、ユーザID、パスワード、必要に応じて認証鍵情報などが含まれる。また、サービスに依存する付加情報には、ウェイト、暗号化手法、各種のパラメータ(ブロックサイズ、並列度、待ち行列のサイズなど)が含まれる。
ー構造によるデータアクセスが可能であり、任意の場所のデータを「O(log N)」のオーダーの処理時間で更新、追加、削除可能である(N=ファイルサイズ)。なお、固定配列にすると、保存できるファイルのサイズに制限ができてしまい、リスト構造にすると「O(N)」のオーダーの処理時間が必要になってしまう。そして、本システムでは、書き込み時に、オフセットと領域を指定して更新を行う。そのため、更新が必要なブロック、及び、上位のテーブルのみ更新すればよいという利点がある。また、本システムでは、読み込み時には、オフセットと領域を指定して読み出しを行う。そのため、読み出しが必要なテーブルとブロックだけ読み出せばよいという利点がある。
ち、固定長配列をもたないためファイルサイズは事実上無制限であり、例えば、ブロックサイズ4MB、テーブルあたりの要素数が1024の場合には、深さ4で「4MB×1024×1024×1024×1024=4EB」を表現できる。また、データ構造がツリー型の再帰構造をとるため、ファイルサイズNに対し、データの検索、追加、削除の処理時間は「O(log N)」のオーダーであり、実用的な速度(十分な速度)でアクセスできる。
あるという点に特徴がある。つまり、本システムでは、ファイルを示す「file-id」とそ
の先頭の「table-id」のみが必要であり、実装上は、「file-id」と「table-id」の対も
ネットワーク上のオブジェクトとして保存することができる。例えば、「file-id」をキ
ーに単一の値を持つオブジェクトとして分散配置することができる。なお、「file-id」
と「table-id」の対は、テーブルやブロックとは異なり、上書き可能なオブジェクトである。また、サービステーブルは、別途管理すればよく、ファイルやデータの「量に依存しない」参照情報のみを含めるようにすることができる。
ことがある。スパースファイルでは、使ってないところが「nul埋め」される。したがっ
て、例えば、「readAt」を実行した場合、データがないところは「nul」データとして読
み出される。これにより、物理容量を使わずに論理的なファイルサイズが大きくできる。スパースファイルの第1のメリットとして、論理的には事実上無限サイズのファイルを作成可能であることが挙げられる。ファイルの構造は、テーブルだけで表現することが可能であり、データのないところは「nul」データとして読み出される。スパースファイルの
第2のメリットとして、実際にデータを書き込んだときに初めてブロックが作成されることが挙げられる。データを書き込まない部分は、必要な容量は最小限(テーブル情報のみ)で済む。
回新規作成され、「table-id」と「block-id」は、いずれも「更新」するたびに新しいIDが割り当てられる。すなわち、「table-id」が決められると、それ以降、その中身は同一であり変更されることがない。このような特徴を備えることにより、本システムでは「書き込み中の読み込みが可能である」というメリットが得られる。ファイルは常に「完全な状態」であるため、先頭テーブルの「table-id」が書き換えられるまでは、以前のファイルのままであり、先頭テーブルの「table-id」が書き換えられると、即座に、更新されたファイルの内容になる。したがって、ファイルのロックをしなくても「書き込み中に読み込みも実行できる」ようになる。また、本システムでは「コピー、スナップショットが容易である」というメリットも得られる。コピーやスナップショットの方法としては、例えば、新しい「file-id」に対して、既存ファイルの「table-id」をコピーする方法がある
。これにより、同一の「table-id」の内容の同一性が保証される。
ようにしている。したがって、図18において実線で示すように、各仮想ストレージが独立に仮想デバイスにアクセスすることで分散処理を実現することができる。例えば、仮想デバイスがサービス事業者である場合には、事業者間の負荷分散が可能になる。また、仮想デバイスがサーバである場合には、サーバ間での負荷分散が可能になる。いずれの場合にも、フロントエンドの個々の仮想ストレージはお互いに干渉しない。また、本システムでは、特に大容量ファイルの場合に負荷分散が容易である。その場合、構成するテーブル、ブロック数が多くなるため、統計的にアクセスが分散することになる。結果として、本システムでは、極めてスケーラビリティが高い「アクセス分散」の仕組みが実現できる。
て決定される。なお、書き込み時の処理は、該当の仮想デバイスすべてに対して同じオブジェクトのデータを書き込む。また、読み出し時の処理は、該当の仮想デバイスに対して順次読み込みを行い、最初にレスポンスが返ってきた時点で、それを読み込みデータとして用いる、または、該当の仮想デバイスに対して並列読み込みを行い、最もレスポンスが早かったものを読み込みデータとして用いる。
2 ユーザ端末
3 クライアント装置(ストレージサービス提供装置)
4 ストレージ装置
5 通信部
6 書き込み・読み出し処理部
7 サービステーブル記憶部
8 通信部
9 ファイル・オブジェクト管理部
10 ファイル・オブジェクト保存部
Claims (18)
- 複数のストレージ装置とネットワークを介して接続され、これらのストレージ装置を利用してファイルのストレージサービスを提供するストレージサービス提供装置であって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクトを保存する手段と、前記ストレージサービス提供装置からの要求に応じて、オブジェクト識別情報により識別されるオブジェクトを返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを特定するための情報の各部分となる管理情報を有する各管理情報オブジェクトとがあり、
前記各管理情報オブジェクトは、再帰構造を有する複数の管理情報オブジェクトのうちの一つとすることが可能なものであり、
前記ブロックオブジェクトの数が所定数より多い場合には、前記再帰構造の階層を増加させて、複数の管理情報オブジェクトが生成されるものであり、
前記ストレージサービス提供装置は、
指定されたファイルに対応するオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、管理情報オブジェクトを取得する手段と、
取得した管理情報オブジェクトの管理情報により示されるオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、管理情報オブジェクト又はブロックオブジェクトを取得する手段と、
取得したブロックオブジェクトのデータを、取得した管理情報オブジェクトの管理情報を参照して対応する部分に配置することにより、前記ファイルを提供可能とする手段と
を備えることを特徴とするストレージサービス提供装置。 - 前記複数のストレージ装置の各々は、保存すべきオブジェクトとして、前記ストレージサービス提供装置から、オブジェクト識別情報により識別されるオブジェクトを受信する手段をさらに備えるものであり、
前記ストレージサービス提供装置は、
指定されたファイルを分割し、各データを前記ブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与する手段と、
前記各ブロックオブジェクトについての管理情報を作成し、該情報を前記管理情報オブジェクトとして、各管理情報オブジェクトにオブジェクト識別情報を付与する手段と、
オブジェクト識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段と、
前記各ブロックオブジェクト及び前記各管理情報オブジェクトを、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ送信して保存させる手段とをさらに備える、請求項1に記載のストレージサービス提供装置。 - 前記ストレージサービス提供装置が前記要求を送信するストレージ装置は、取得対象のオブジェクトのオブジェクト識別情報に基づいて特定されるものであり、
あるファイルに対応する管理情報オブジェクトと、別のファイルに対応する管理情報オブジェクトとが、前記複数のストレージ装置のうちの別々のストレージ装置に保存されるように、前記オブジェクト識別情報が付与されるものである、請求項1〜2のいずれかに
記載のストレージサービス提供装置。 - 前記管理情報オブジェクトには、
前記ファイル内のある領域におけるそれぞれ別の部分のデータを有する複数のブロックオブジェクトのオブジェクト識別情報と、各ブロックオブジェクトのデータが前記ある領域中のどの部分に並ぶべきかを示す領域内オフセット情報とを含む第1の管理情報オブジェクトと、
前記第1の管理情報オブジェクトのオブジェクト識別情報と、該第1の管理情報オブジェクトが情報を有する前記ある領域が前記ファイル内でどこに位置するものかを示すファイル内オフセット情報とを含む第2の管理情報オブジェクトとがある、請求項1〜3のいずれかに記載のストレージサービス提供装置。 - 前記管理情報オブジェクトは、複数のオブジェクト識別情報を含み、
前記複数のオブジェクト識別情報のうちある一つに基づいて特定されるストレージ装置に対して、該ある一つのオブジェクトの保存又は取得を要求する処理と、前記複数のオブジェクト識別情報のうち別の一つに基づいて特定されるストレージ装置に対して、該別の一つのオブジェクトの保存又は取得を要求する処理とを、並行して行う、請求項1〜4のいずれかに記載のストレージサービス提供装置。 - 保存されているファイルのデータの一部を更新する場合、データが書き換わるブロックオブジェクトに新たなオブジェクト識別情報を付与し、当該ブロックオブジェクトについての前記管理情報を含む管理情報オブジェクトにも新たなオブジェクト識別情報を付与し、前記管理情報オブジェクトの新たなオブジェクト識別情報が前記ファイルに対応するオブジェクト識別情報として求められるように設定することにより、同一のオブジェクト識別情報を有するオブジェクトの内容を不変とする管理を行うものである、請求項1〜5のいずれかに記載のストレージサービス提供装置。
- 前記ストレージサービス提供装置が前記要求を送信するストレージ装置は、取得対象のオブジェクトのオブジェクト識別情報に基づいて特定されるものであり、
前記オブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの二つ以上を特定することが可能であり、
前記各ブロックオブジェクト及び前記管理情報オブジェクトは、複製されて、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれの前記二つ以上のストレージ装置に保存されるものである、請求項1〜6のいずれかに記載のストレージサービス提供装置。 - 保存されているファイルに対し部分的にデータを書き込む場合、書き込み対象のデータが前記ファイル中のどの部分に並ぶべきものかが指定され、
前記ファイルに属する全てのブロックオブジェクト及び管理情報オブジェクトのうち前記指定された部分に関係するものを選択して又は新たにオブジェクトを生成して、この選択又は新たに生成された各オブジェクトのオブジェクト識別情報に基づいてそれぞれ特定されるストレージ装置に要求を送信し、残りのオブジェクトについてはストレージ装置へのアクセスを行わない、請求項1〜7のいずれかに記載のストレージサービス提供装置。 - 保存されているファイルからデータを部分的に読み出す場合、読み出し対象のデータが前記ファイル中のどの部分に並んでいるものかが指定され、
前記ファイルに属する全てのブロックオブジェクト及び管理情報オブジェクトのうち前記指定された部分に関係するものを選択して、この選択された各オブジェクトのオブジェクト識別情報に基づいてそれぞれ特定されるストレージ装置に要求を送信し、残りのオブジェクトについてはストレージ装置へのアクセスを行わない、請求項1〜8のいずれかに記載のストレージサービス提供装置。 - 指定されたファイルに対応するオブジェクト識別情報が付与された管理情報オブジェクトは、該ファイルの全体の長さの情報と、該長さを有する前記ファイル内のどの部分にどのオブジェクト識別情報が付与されたオブジェクトが対応するかを示す情報とを含み、
前記オブジェクト識別情報が付与されたオブジェクトが再び管理情報オブジェクトである場合には、当該管理情報オブジェクトは、当該オブジェクトが前記ファイル内で占める領域の長さの情報と、該長さを有する前記領域中のどの部分にどのオブジェクト識別情報が付与されたオブジェクトが対応するかを示す情報とを含み、
前記オブジェクト識別情報が付与されたオブジェクトがブロックオブジェクトである場合には、当該ブロックオブジェクトは、前記ファイルを構成するデータと、該データの長さの情報とを有する、請求項1〜9のいずれかに記載のストレージサービス提供装置。 - 保存されているファイルのデータの一部を更新する場合、前記ファイルに属するブロックオブジェクト及び管理情報オブジェクトのうち、データが書き換わるブロックオブジェクト及び当該ブロックオブジェクトのオブジェクト識別情報を含む管理情報オブジェクトを、各オブジェクトを保存しているストレージ装置から取得し、取得された各オブジェクトの内容のうち、前記データの書き換えによって変更されない部分はそのまま残し、変更される部分にデータを書き込むことにより、新たな各オブジェクトを生成し、該新たな各オブジェクトのオブジェクト識別情報に基づいて特定されるストレージ装置に保存させる、請求項1〜10のいずれかに記載のストレージサービス提供装置。
- 前記複数のストレージ装置のそれぞれに該装置の担当する値の範囲を割り振り、前記オブジェクト識別情報の値に対して所定の計算を行った結果と各装置の担当する値の範囲とを比較することにより、前記複数のストレージ装置のうちの少なくとも一つが特定されるものである、請求項1〜11のいずれかに記載のストレージサービス提供装置。
- クライアント装置及び該クライアント装置にネットワークを介して接続された複数のストレージ装置を備え、該クライアント装置がユーザに対してファイルのストレージサービスを提供するシステムであって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、
オブジェクトを保存する手段と、
前記クライアント装置からの要求に応じて、オブジェクト識別情報により識別されるオブジェクトを返送する手段とを備え、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを特定するための情報の各部分となる管理情報を有する各管理情報オブジェクトとがあり、
前記各管理情報オブジェクトは、再帰構造を有する複数の管理情報オブジェクトのうちの一つとすることが可能なものであり、
前記ブロックオブジェクトの数が所定数より多い場合には、前記再帰構造の階層を増加させて、複数の管理情報オブジェクトが生成されるものであり、
前記クライアント装置は、
指定されたファイルに対応するオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、管理情報オブジェクトを取得する手段と、
取得した管理情報オブジェクトの管理情報により示されるオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、管理情報オブジェクト又はブロックオブジェクトを取得する手段と、
取得したブロックオブジェクトのデータを、取得した管理情報オブジェクトの管理情報を参照して対応する部分に配置することにより、前記ファイルを提供可能とする手段とを備えることを特徴とするシステム。 - 前記システムが、複数の前記クライアント装置を備え、
前記管理情報オブジェクトは、複数のオブジェクト識別情報を含み、
前記複数のクライアント装置のそれぞれは、
前記指定されたファイルに対応する先頭オブジェクト識別情報を求めることができるように設定され、
前記先頭オブジェクト識別情報に基づいて前記管理情報オブジェクトの取得を要求する処理及び前記複数のオブジェクト識別情報に基づいて各オブジェクトの取得を要求する処理を、他のクライアント装置から独立して行う、請求項13に記載のシステム。 - 複数のストレージ装置とネットワークを介して接続されたコンピュータにより、これらのストレージ装置を利用してファイルのストレージサービスを提供する方法であって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクト識別情報により識別されるオブジェクトを受信して保存する手段と、オブジェクト識別情報により識別されるオブジェクトを要求に応じて返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを特定するための情報の各部分となる管理情報を有する各管理情報オブジェクトとがあり、
前記方法は、
書き込むべきファイルを分割し、各データを前記ブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与し、
前記各ブロックオブジェクトについての管理情報を作成し、該情報を前記管理情報オブジェクトとして、各管理情報オブジェクトにオブジェクト識別情報を付与し、
前記各管理情報オブジェクトは、再帰構造を有する複数の管理情報オブジェクトのうちの一つとすることが可能なものであり、
前記ブロックオブジェクトの数が所定数より多い場合には、前記再帰構造の階層を増加させて、複数の管理情報オブジェクトが生成されるものであり、
前記各ブロックオブジェクト及び前記各管理情報オブジェクトを、前記複数のストレージ装置のうち、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ、送信して保存させることを特徴とするサービス提供方法。 - 複数のストレージ装置とネットワークを介して接続されたコンピュータにより、これらのストレージ装置を利用してファイルのストレージサービスを提供する方法であって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクトを保存する手段と、オブジェクト識別情報により識別されるオブジェクトを要求に応じて返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを特定するための情報の各部分となる管理情報を有する各管理情報オブジェクトとがあり、
前記各管理情報オブジェクトは、再帰構造を有する複数の管理情報オブジェクトのうちの一つとすることが可能なものであり、
前記ブロックオブジェクトの数が所定数より多い場合には、前記再帰構造の階層を増加させて、複数の管理情報オブジェクトが生成されるものであり、
前記方法は、
読み出すべきファイルに対応するオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、管理情報オブジェ
クトを取得し、
取得した管理情報オブジェクトの管理情報により示されるオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、管理情報オブジェクト又はブロックオブジェクトを取得し、
取得したブロックオブジェクトのデータを、取得した管理情報オブジェクトの管理情報を参照して対応する部分に配置することにより、前記ファイルを取得することを特徴とするサービス提供方法。 - 複数のストレージ装置とネットワークを介して接続されたコンピュータを、これらのストレージ装置を利用してファイルのストレージサービスを提供する装置として動作させるためのプログラムであって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクト識別情報により識別されるオブジェクトを受信して保存する手段と、オブジェクト識別情報により識別されるオブジェクトを要求に応じて返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを特定するための情報の各部分となる管理情報を有する各管理情報オブジェクトとがあり、
前記プログラムは、
書き込むべきファイルを分割し、各データを前記ブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与するためのプログラムコードと、
前記各ブロックオブジェクトについての管理情報を作成し、該情報を前記管理情報オブジェクトとして、各管理情報オブジェクトにオブジェクト識別情報を付与するためのプログラムコードと、
前記各ブロックオブジェクト及び前記各管理情報オブジェクトを、前記複数のストレージ装置のうち、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ、送信して保存させるためのプログラムコードとを備え、
前記各管理情報オブジェクトは、再帰構造を有する複数の管理情報オブジェクトのうちの一つとすることが可能なものであり、
前記ブロックオブジェクトの数が所定数より多い場合には、前記再帰構造の階層を増加させて、複数の管理情報オブジェクトが生成されるものであることを特徴とするサービス提供プログラム。 - 複数のストレージ装置とネットワークを介して接続されたコンピュータを、これらのストレージ装置を利用してファイルのストレージサービスを提供する装置として動作させるためのプログラムであって、
前記ストレージサービスにおいて、前記ファイルは、複数の部分に分割され、分散して複数のストレージ装置に保存され、
前記複数のストレージ装置の各々は、オブジェクトを保存する手段と、オブジェクト識別情報により識別されるオブジェクトを要求に応じて返送する手段とを備えるものであり、
前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの各部分のデータを有する各ブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの部分に対応するものであるかを特定するための情報の各部分となる管理情報を有する各管理情報オブジェクトとがあり、
前記各管理情報オブジェクトは、再帰構造を有する複数の管理情報オブジェクトのうちの一つとすることが可能なものであり、
前記ブロックオブジェクトの数が所定数より多い場合には、前記再帰構造の階層を増加させて、複数の管理情報オブジェクトが生成されるものであり、
前記プログラムは、
読み出すべきファイルに対応するオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、管理情報オブジェクトを取得するためのプログラムコードと、
取得した管理情報オブジェクトの管理情報により示されるオブジェクト識別情報に基づいて、前記複数のストレージ装置のうちの少なくとも一つに対して要求を送信することにより、管理情報オブジェクト又はブロックオブジェクトを取得するためのプログラムコー
ドと、
取得したブロックオブジェクトのデータを、取得した管理情報オブジェクトの管理情報を参照して対応する部分に配置することにより、前記ファイルを取得するためのプログラムコードと
を備えることを特徴とするサービス提供プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015130494A JP6033370B2 (ja) | 2015-06-29 | 2015-06-29 | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015130494A JP6033370B2 (ja) | 2015-06-29 | 2015-06-29 | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010237828A Division JP5822452B2 (ja) | 2010-10-22 | 2010-10-22 | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015207305A JP2015207305A (ja) | 2015-11-19 |
JP6033370B2 true JP6033370B2 (ja) | 2016-11-30 |
Family
ID=54604011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015130494A Active JP6033370B2 (ja) | 2015-06-29 | 2015-06-29 | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6033370B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7061635B2 (ja) * | 2020-03-10 | 2022-04-28 | 株式会社日立製作所 | 計算機システム、ファイルストレージ、及び、データ転送方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3817339B2 (ja) * | 1997-06-26 | 2006-09-06 | 株式会社日立製作所 | ファイル入出力制御方法 |
JP4043800B2 (ja) * | 2002-02-19 | 2008-02-06 | 大日本印刷株式会社 | ビデオアーカイヴ装置およびマルチメディアアーカイヴ装置 |
-
2015
- 2015-06-29 JP JP2015130494A patent/JP6033370B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015207305A (ja) | 2015-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5822452B2 (ja) | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム | |
US11200332B2 (en) | Passive distribution of encryption keys for distributed data stores | |
US11520670B2 (en) | Method and apparatus for restoring data from snapshots | |
US10846411B2 (en) | Distributed database systems and methods with encrypted storage engines | |
JP6479020B2 (ja) | 分散ストレージシステムにおけるオブジェクトの階層チャンキング | |
JP5236129B2 (ja) | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム | |
CN105678189B (zh) | 加密数据文件存储和检索***及方法 | |
US8200788B2 (en) | Slice server method and apparatus of dispersed digital storage vaults | |
CN110636141B (zh) | 基于云雾协同的多云存储***及其管理方法 | |
Li et al. | Write-only oblivious RAM-based privacy-preserved access of outsourced data | |
US10909143B1 (en) | Shared pages for database copies | |
US10719554B1 (en) | Selective maintenance of a spatial index | |
CN110633261A (zh) | 一种图片存储方法、图片查询方法及装置 | |
JP5174255B2 (ja) | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム | |
JP6033370B2 (ja) | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム | |
Yatskiv et al. | Protected Distributed Data Storage Based on Residue Number System and Cloud Services | |
Amaechi et al. | Data Storage Management in Cloud Computing Using Deduplication Technique | |
Zhang et al. | A study of the use of idas in cloud storage | |
Darcy et al. | BUILDING A CLOUD FILESYSTEM | |
Mallikarjuna et al. | Cloud storage for data sharing: infrastructure as service (IaaS) in cloud environment | |
US20240005017A1 (en) | Fencing off cluster services based on access keys for shared storage | |
US20240004712A1 (en) | Fencing off cluster services based on shared storage access keys | |
Ruan et al. | Design and implementation of ZTE object storage system | |
Aladyshev et al. | Expectations of the High Performance Computing Cluster File System Selection | |
NAGOTIA et al. | Big File Cloud Based On Amazon Cloud Storage with Key-Value Store |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160428 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160510 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160706 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160907 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160927 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161025 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6033370 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |