JP6197666B2 - 記憶装置、複製方法及び複製プログラム - Google Patents

記憶装置、複製方法及び複製プログラム Download PDF

Info

Publication number
JP6197666B2
JP6197666B2 JP2014012449A JP2014012449A JP6197666B2 JP 6197666 B2 JP6197666 B2 JP 6197666B2 JP 2014012449 A JP2014012449 A JP 2014012449A JP 2014012449 A JP2014012449 A JP 2014012449A JP 6197666 B2 JP6197666 B2 JP 6197666B2
Authority
JP
Japan
Prior art keywords
data
replica
storage
arrangement
destination
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
Application number
JP2014012449A
Other languages
English (en)
Other versions
JP2015141451A (ja
Inventor
年弘 小沢
年弘 小沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014012449A priority Critical patent/JP6197666B2/ja
Priority to US14/559,374 priority patent/US20150215404A1/en
Publication of JP2015141451A publication Critical patent/JP2015141451A/ja
Application granted granted Critical
Publication of JP6197666B2 publication Critical patent/JP6197666B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Description

本発明は、記憶装置、複製方法及び複製プログラムに関する。
複数のサーバを記憶ノードとしてデータを分散して記憶するデータ分散方法の代表的な方法に、コンシステントハッシュ法がある。コンシステントハッシュ法では、予め用意されたハッシュ関数により、各サーバ及びデータに対してハッシュ値が求められる。例えば、サーバのIPアドレスやデータの名前から数値がハッシュ値として計算される。また、ハッシュ関数の値域はリング形態のハッシュ空間で表される。
図8は、リング形態のハッシュ空間の一例を示す図である。図8において、あるサーバは、リング上のある範囲のハッシュ値を持つデータを担当する。例えば、「サーバS00」は、黒塗りされた範囲のデータを担当し、「サーバS11」は、斜線で模様づけされた範囲のデータを担当する。
そして、データの配置については、データ名のハッシュ値からリング上の位置が求まり、さらに担当するサーバが決まり、決まったサーバに第1番目の複製(1stレプリカ)が配置される。第2番目のレプリカ(2ndレプリカ)は、例えばリングを時計回りに回った次の領域を担当するサーバ(「データ1」の場合は「サーバS11」)に配置される。
ndレプリカの配置の仕方はリングの時計回りの次の領域以外の選び方もあるが、サーバが一つ故障してもデータにアクセスできることが複数のレプリカを持つ目的であるから、2つのレプリカを同一のサーバに置かないように2ndレプリカの配置を選ぶ必要がある。例えば、1stレプリカ用にはデータの名前からハッシュ値を求め、2ndレプリカ用には違う値からハッシュ値を求めて同じリング上で配置サーバを決めたとすると、2つのハッシュ値が同一の担当範囲にはいり、レプリカが同一のサーバに配置されるかもしれない。
この場合、2つのレプリカが配置されたサーバが故障すると2つのレプリカへのアクセスが不可能となり、データの消失を招くことになる。なお、データの名前からハッシュ値を求める以外のハッシュ値の求め方としては、例えば、名前を逆さにする、あるいはデータの値自体からハッシュ値を求めるなどの方法がある。
また、複数のレプリカを記憶する分散データ管理システムで、データの値から得られる値に基づいて選択したノードにデータを書き込むと共に、メタデータから得られる値に基づいて選択したノードにデータを書き込む従来技術がある(例えば、特許文献1参照)。
また、分散システム内の指定された範囲内にあるデータ蓄積域にデータ要求側が要求する可能性のあるデータのレプリカを事前に生成、蓄積しておき、データ要求側から要求を受信すると、レプリカを用いて応答する従来技術がある(例えば、特許文献2参照)。また、ストレージノードの容量、データ記憶コスト、場所などの特徴に基づいてレプリカの配置を決定する従来技術がある(例えば、特許文献3参照)。
特開2010−271798号公報 特開2007−133503号公報 特表2012−524947号公報
コンシステントハッシュ方式は、データの名前をハッシュ関数によりハッシュすることで、ほぼ均等にデータが分配されるという特性を持つ。レプリカも、リング上で次の領域を担当するサーバに置かれるので、同様にほぼ均等に分配されることになる。
一方、データの利用を考えると、一連のデータをなるべく多くのサーバに配置したい場合と、なるべく少数のサーバに配置したい場合がある。例えば、動画を分割して、データA、データB、・・・のようにしたとき、動画として再生したい場合は、順番に読まれるので、なるべく1つのサーバにまとめてデータを置きたい。一方、動画の解析(色の分布を調べるなど)の場合は、並列に読み出して高速に処理するためにデータをなるべく多くのサーバに配置した方が有利になる。
このように、データはその使われ方によって、なるべく多くのサーバに分散しておいた方がよい場合と、なるべく少数のサーバにまとめた方がよい場合とがある。しかしながら、一般にデータがどう使われるかは、処理によって変わるので、予めどちらかだけのデータ配置にすべきかを決めることはできないという問題がある。また、同一データのレプリカは同一サーバに記憶させてはいけないことは必須の要件である。
本発明は、1つの側面では、一連のデータを多くのサーバに配置したい場合と、少数のサーバに配置したい場合の両方に対応すると共に、同一データのレプリカを同一サーバに記憶させない記憶装置、複製方法及び複製プログラムを提供することを目的とする。
本願の開示する記憶装置は、1つの態様において、複数の記憶ノードを用いてデータの複数のレプリカを記憶する記憶装置であり、第1の決定部と第2の決定部とを備える。第1の決定部は、データが記憶ノードに分散して記憶されるように第1のレプリカの記憶ノードへの配置を決定する。第2の決定部は、データが同一の記憶ノードに連続して記憶され、かつ、第1のレプリカを記憶する記憶ノードと異なる記憶ノードに記憶されるように第2のレプリカの記憶ノードへの配置を決定する。
1実施態様によれば、一連のデータを多くのサーバに配置したい場合と、少数のサーバに配置したい場合の両方に対応すると共に、同一データのレプリカを同一サーバに記憶させないようにすることができる。
図1は、実施例に係る分散ストレージの構成を示す図である。 図2は、実施例に係る分散ストレージによるレプリカ配置を説明するための図である。 図3は、複製装置の機能構成を示す図である。 図4は、第2配置先決定部がデータ分散テーブルの行を増やす場合の例を示す図である。 図5は、2ndレプリカの配置処理のフローを示すフローチャートである。 図6は、読み出し処理のフローを示すフローチャートである。 図7は、実施例に係る複製プログラムを実行するコンピュータのハードウェア構成を示す図である。 図8は、リング形態のハッシュ空間の一例を示す図である。
以下に、本願の開示する記憶装置、複製方法及び複製プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係る分散ストレージの構成について説明する。図1は、実施例に係る分散ストレージの構成を示す図である。図1に示すように、分散ストレージ1は、複数の複製装置2と、複数のサーバ3とを有する。
複製装置2は、分散ストレージ1のユーザが分散ストレージ1のアクセスに使用するクライアント5からインターネット6を介してデータアクセス要求を受け付ける装置である。複製装置2は、データの書き込み要求をクライアント5から受け付けると、データの2つのレプリカを異なるサーバ3に転送する。
また、複製装置2は、データの読み出し要求をクライアント5から受け付けると、データのレプリカを記憶する2つのサーバ3のいずれかからデータを読み出してクライアント5に送信する。なお、複製装置2とクライアント5は1対1に対応する。
サーバ3は、データのレプリカをHDD(Hard Disk Drive)に記憶する記憶ノードである。なお、複数の複製装置2は、複数のサーバ3とLAN(Local Area Network)4を介して接続されるが、他のネットワークを介して接続されてもよい。また、複製装置2間は通信が可能である。
次に、実施例に係る分散ストレージ1によるレプリカ配置について説明する。図2は、実施例に係る分散ストレージ1によるレプリカ配置を説明するための図である。図2に示すように、複製装置2はレプリカの配置に用いられるデータ分散テーブル22と、2ndレプリカの最終送付先のサーバ3の識別子を記憶する最終送付先記憶部24とを有する。
複製装置2は、1stレプリカをデータ分散テーブル22の1st列に識別子が記憶されたいずれかのサーバ3からデータのハッシュ値に基づいて選択されたサーバ3に1stレプリカを配置する。また、複製装置2は、2ndレプリカを最終送付先記憶部24が識別子を記憶するサーバ3に配置し、データ分散テーブル22の2nd列に送付先のサーバ3の識別子を記憶する。
ただし、複製装置2は、最終送付先記憶部24が識別子を記憶するサーバ3が1stレプリカを配置したサーバ3と同じである場合には、ハッシュ空間を示すリングで最終送付先の次のサーバ3に2ndレプリカを配置する。そして、複製装置2は、2ndレプリカを配置したサーバ3の識別子で最終送付先記憶部24を更新し、データ分散テーブル22の2nd列に送付先のサーバ3の識別子を記憶する。
例えば、データから計算されたハッシュ値が「abc」である場合には、複製装置2は、1stレプリカをデータ分散テーブル22の1st列に識別子「C」が記憶された「サーバC」に配置する。そして、複製装置2は、2ndレプリカを最終送付先記憶部24に識別子「D」が記憶された「サーバD」に配置し、データ分散テーブル22の2nd列に送付先のサーバ3の識別子「D」を記憶する。
このように、複製装置2は、データのハッシュ値に基づいて選択されたサーバ3に1stレプリカを配置する。したがって、複製装置2は、1stレプリカを用いて一連のデータを多くのサーバ3に分散して配置することができる。このため、例えば色の分布を調べるなどの動画解析で、分散ストレージ1は、データを並列に読み出すことができ、高速にデータを読み出すことができる。
また、複製装置2は、データの最終送付先に2ndレプリカを配置する。したがって、複製装置2は、2ndレプリカを用いて一連のデータを同一のサーバ3に配置することができる。このため、例えば複数のファイルに分割して分散ストレージ1に格納した動画を再生する場合など、分散ストレージ1は、一連のファイルを同一サーバ3から高速に読み出すことができる。
また、複製装置2は、最終送付先が1stレプリカの配置先と同じである場合には、ハッシュ空間を示すリングで最終送付先の次のサーバ3に2ndレプリカを配置する。したがって、複製装置2は、1stレプリカと2ndレプリカを異なるサーバ3に配置することができる。
次に、複製装置2の機能構成について説明する。図3は、複製装置2の機能構成を示す図である。図3に示すように、複製装置2は、受信部21と、データ分散テーブル22と、第1配置先決定部23と、最終送付先記憶部24と、第2配置先決定部25と、転送部26と、読出部27と、テーブル同期部28とを有する。
受信部21は、クライアント5から分散ストレージ1へのアクセス要求を受信し、データの書き込み要求であればアクセス要求を第1配置先決定部23及び第2配置先決定部25に渡し、データの読み出し要求であればアクセス要求を読出部27に渡す。
データ分散テーブル22は、レプリカの配置先の決定に用いられるテーブルであり、ハッシュ範囲と各レプリカの配置先のサーバ3の識別子を対応させて記憶する。図2に示した例では、データ分散テーブル22は、ハッシュ範囲毎に、1stと2ndを記憶する。1stは、1stレプリカの配置先のサーバ3の識別子を示し、2ndは、2ndレプリカの配置先のサーバ3の識別子を示す。1stは、ハッシュ範囲から静的に決定される配置先を示し、2ndは、ハッシュ範囲、最終送付先などから動的に決定される配置先を示す。2ndの初期値は、空白である。
図2に示した例では、データ分散テーブル22は、ハッシュ範囲「000〜aaa」に対応付けて、1stレプリカの配置先のサーバ3の識別子として静的に決定される「A」を記憶し、2ndレプリカの配置先のサーバ3の識別子はこの時点では記憶していない。また、データ分散テーブル22は、ハッシュ範囲「aaa〜afa」に対応付けて、1stレプリカの配置先のサーバ3の識別子として静的に決定される「C」を記憶し、2ndレプリカの配置先のサーバ3の識別子として動的に決定された「D」を記憶する。
データ分散テーブル22は、複数の複製装置2で同一の情報を記憶する。したがって、データ分散テーブル22の情報は、複製装置2の間で同期がとられる。また、データ分散テーブル22の行数はサーバ数に比べて非常に大きく、例えばサーバ数の1万倍程度である。
第1配置先決定部23は、データの書き込み要求を受信部21から受け取り、書き込みデータからハッシュ値を計算する。そして、第1配置先決定部23は、1stレプリカの配置先をハッシュ値及びデータ分散テーブル22に基づいて決定し、決定した配置先を書き込みデータと共に転送部26に渡す。
最終送付先記憶部24は、2ndレプリカの最終送付先のサーバ3の識別子を記憶する。複製装置2はクライアント5と1対1に対応するため、最終送付先記憶部24は、クライアント5毎に最終送付先のサーバ3の識別子を記憶する。最終送付先記憶部24の初期値はランダムに決定される。
第2配置先決定部25は、データの書き込み要求を受信部21から受け取り、書き込みデータからハッシュ値を計算する。そして、第2配置先決定部25は、2ndレプリカの配置先をハッシュ値、データ分散テーブル22及び最終送付先記憶部24に基づいて決定し、決定した配置先を書き込みデータと共に転送部26に渡す。
第2配置先決定部25は、クライアント5から書き込みが行われる一連のデータの2ndレプリカが、なるべく同一のサーバ3に配置されるように配置先を決定する。具体的には、第2配置先決定部25は、データのハッシュ値に対応するデータ分散テーブル22の2ndの列が空白ならば、2ndの列を最終送付先記憶部24が記憶する値に設定し、最終送付先に2ndレプリカを配置する。これで、このクライアント5から前回書かれた2ndレプリカと同じサーバ3に2ndレプリカが配置されることになる。
ただし、1st列と最終送付先記憶部24が記憶する値が同一の場合は、そのままでは2つのレプリカが同一のサーバ3に置かれてしまう。そのような場合には、第2配置先決定部25は、2ndレプリカを前回書いたサーバ3に続けて書くことを諦めて、最終送付先記憶部24が記憶する値をハッシュ空間を示すリング上で時計方向に一つ移動した値に変更する。
データのハッシュ値に対応するデータ分散テーブル22の2ndの列が最終送付先記憶部24が記憶する値と等しいならば、第2配置先決定部25は、最終送付先記憶部24が示すサーバ3に2ndレプリカを配置する。なお、2ndの列が最終送付先記憶部24が記憶する値と等しいときは、それまでの処理により1st列と2nd列の値が等しいことはない。
データのハッシュ値に対応するデータ分散テーブル22の2ndの列が空白でもなく、最終送付先記憶部24が記憶する値と等しくもない場合は、第2配置先決定部25は、このままでは、前回書いたサーバ3に2ndレプリカを続けて書くことができない。そこで、第2配置先決定部25は、データ分散テーブル22のハッシュ値に対応する行の担当範囲を複数の行に分割することを所定の最大回(例えば10回)に渡って試みる。
具体的には、第2配置先決定部25は、ハッシュ値に対応する行をn(例えば100)行に分け、それまで2ndレプリカを保持していたサーバ3(2nd列に書かれているサーバ3)に増やした行のどの行に対応するデータを保持しているかを聞く。そして、第2配置先決定部25は、2ndレプリカを保持していたサーバ3が回答した行の2nd列に分割前の2nd列に書かれていた値を設定する。これにより、データのハッシュ値に対応するデータ分散テーブル22の2ndの列が空白になり、最終送付先と同じサーバ3に2ndレプリカを配置することができる可能性がでる。
ただし、所定の最大回分割を試みても2nd列が空白にならない場合には、第2配置先決定部25は、2ndレプリカを前回書いたサーバ3に続けて書くことを諦める。そして、第2配置先決定部25は、2nd列の示すサーバ3にデータを配置すると共に、最終送付先記憶部24をそのサーバ3の識別子に更新する。
このように、第2配置先決定部25は、2ndレプリカの配置先を予め決めておくのではなく、データを蓄積していく過程で決めて行く。したがって、分散ストレージ1は、2ndレプリカの配置状況に応じて適切に新たな2ndレプリカを配置することができる。
図4は、第2配置先決定部25がデータ分散テーブル22の行を増やす場合の例を示す図である。ハッシュ値が「ada」のデータYを書き込み済で、データ分散テーブル22が図4(a)に示す状態であるとする。なお、ハッシュ範囲「ppp〜qqq」は、ハッシュ値が「ppp」以上「qqq」未満を示す。
このとき、最終送付先記憶部24の値=Bである複製装置2から、ハッシュ値が「abc」であるデータXを書き込む場合、データXのハッシュ値「abc」を担当するのは、データ分散テーブル22のハッシュ範囲から2行目になる。したがって、図4(a)の2行目の1st列の値「C」より、1stレプリカはサーバCに配置される。
データ分散テーブル22の2行目の2nd列はDであり、空白でも、最終送付先記憶部24が記憶する値=Bと等しくもないので、第2配置先決定部25は、データ分散テーブル22の行数を増やす。この例では、第2配置先決定部25は4行増やす。
そして、第2配置先決定部25は、元々の2行目の2ndレプリカに対応するデータを持っているサーバ3の識別子は「D」なので、行数を増やした部分のどの行に2nd列の識別子を設定すべきかをサーバDに聞き、サーバDが回答した行の2nd列に「D」を設定する。
図4(b)は、第2配置先決定部25によるデータ分散テーブル22のアップデート結果を示す。図4(b)に示すように、ハッシュ値が「ada」であるデータYは、行を増加させたデータ分散テーブル22では5行目で管理されるので、5行目の2ndは「D」になる。一方、その他の増加した行に対応する2ndレプリカは存在しないので、その他の増加した行に対応する2nd列は空白となる。
そして、図4(b)のデータ分散テーブル22でデータXのハッシュ値「abc」を担当するのは、3行目になる。3行目の2nd列は空白であり、第2配置先決定部25は、最終送付先記憶部24が示す、前回2ndレプリカを書き込んだサーバBを2ndレプリカの配置先とし、データ分散テーブル22を図4(c)に示すように更新する。
図3に戻って、転送部26は、第1配置先決定部23又は第2配置先決定部25からデータとデータの送信先指定とを受け取り、指定された送信先サーバ3にデータを送信する。
読出部27は、受信部21からデータの読み出し要求を受け取り、データを読み出すサーバ3を特定する。データの読み出し要求には同一サーバ3から読み出したいデータであるか否かが指定されており、読出部27は、同一サーバ3から読み出したいデータであるか否かの指定とデータ分散テーブル22に基づいてデータを読み出すサーバ3を特定する。
すなわち、読出部27は、同一サーバ3から読み出したいデータである場合には、データ分散テーブル22の2nd列を用いてデータを読み出すサーバ3を特定する。一方、同一サーバ3から読み出したいデータでない場合には、読出部27は、データ分散テーブル22の1st列を用いてデータを読み出すサーバ3を特定する。そして、読出部27は、特定したサーバ3からデータを読み出す。
テーブル同期部28は、他の複製装置2との間でデータ分散テーブル22の情報の同期をとる。テーブル同期部28は、行の増加や2nd列の更新などがあると、他の複製装置2との間で同期を行う。
次に、2ndレプリカの配置処理のフローについて説明する。図5は、2ndレプリカの配置処理のフローを示すフローチャートである。図5に示すように、第2配置先決定部25は、まずcountを「1」で初期化する(ステップS1)。ここで、countは、データ分散テーブル22の行を分割する回数を数えるためのカウンタである。
そして、第2配置先決定部25は、データのハッシュ値を求め、データ分散テーブル22のハッシュ範囲がデータのハッシュ値を含む行のidを特定する(ステップS2)。ここで、idは行の番号である。そして、第2配置先決定部25は、データ分散テーブル22の2nd列のid行の識別子を判定する(ステップS3)。
その結果、データ分散テーブル22の2nd列のid行の識別子が最終送付先記憶部24が記憶する値と等しい場合には、転送部26が、データをデータ分散テーブルの2nd列のid行が示すサーバ3に転送する(ステップS7)。
また、データ分散テーブル22の2nd列のid行の識別子が空白である場合には、第2配置先決定部25は、データ分散テーブル22のid行の1st列の識別子と最終送付先記憶部24が記憶する値が一致するか否かを判定する(ステップS4)。その結果、一致する場合には、第2配置先決定部25は、最終送付先記憶部24が記憶する値をリング上で次のサーバ3の識別子に変更し(ステップS5)、一致しない場合には、ステップS6に進む。
そして、第2配置先決定部25は、データ分散テーブル22の2nd列のid行に最終送付先記憶部24が記憶する値を代入する(ステップS6)。そして、転送部26が、データをデータ分散テーブルの2nd列のid行が示すサーバ3に転送する(ステップS7)。
また、データ分散テーブル22の2nd列のid行の識別子が最終送付先記憶部24が記憶する値と等しくなく、かつ、空白でもない場合には、第2配置先決定部25は、countに「1」を加える(ステップS8)。そして、第2配置先決定部25は、countの値が所定の最大回数より大きいか否かを判定する(ステップS9)。
その結果、countの値が所定の最大回数より大きくない場合には、第2配置先決定部25は、データ分散テーブル22のid行をn行に分ける(ステップS10)。ここで、nは例えば100である。また、分けて得られる各行の1st列は元と同じであり、2nd列は空白である。例えば、図4(b)では、nを5として、ハッシュ範囲「aaa〜afa」の行が5行に分けられ、分けられた各行の1st列は元のハッシュ範囲「aaa〜afa」の1st列と同じ「C」となる。
そして、第2配置先決定部25は、id行に相当するデータを格納しているサーバ3に対し、増やしたどの行に対応させてデータを保持しているかを聞き、その行の2nd列にそのサーバ3の識別子を設定する(ステップS11)。例えば、図4(b)では、ハッシュ値が「ada」であるデータYは、「サーバD」が格納しているので、第2配置先決定部25は、増やしたどの行に対応させてデータを保持しているかを「サーバD」に聞く。そして、第2配置先決定部25は、「サーバD」から5行目であると知らされると、5行目の2nd列を「D」に設定する。そして、第2配置先決定部25は、ステップS2に戻る。そして、データXのハッシュ値「abc」を担当するのは、データ分散テーブル22の3行目になるので、ステップS2において、第2配置先決定部25は、idを「3」として特定する。そして、ステップS6において、第2配置先決定部25は、図4(c)に示すように、データ分散テーブル22の3行目に、最終送付先記憶部24が記憶する「B」を代入する。
一方、countの値が所定の最大回数より大きい場合には、転送部26が、データをデータ分散テーブル22の2nd列のid行が示すサーバ3に転送する(ステップS12)。また、第2配置先決定部25は、最終送付先記憶部24の値を転送先のサーバ3の識別子に更新する(ステップS13)。
このように、第2配置先決定部25がハッシュ値とデータ分散テーブル22と最終送付先記憶部24に基づいて2ndレプリカの配置を決定することで、分散ストレージ1は2ndレプリカを用いて一連のデータをできる限り同一のサーバ3に格納することができる。
次に、読み出し処理のフローについて説明する。図6は、読み出し処理のフローを示すフローチャートである。図6に示すように、読出部27は、データのハッシュ値を求め、データ分散テーブル22の該当行のidを特定する(ステップS21)。
そして、読出部27は、読み出し要求に基づいて、同一サーバ3から読み出したいデータであるか否かを判定する(ステップS22)。その結果、同一サーバ3から読み出したいデータである場合には、読出部27は、データ分散テーブル22の2nd列のid行が示すサーバ3からデータを読み出す(ステップS23)。
一方、同一サーバ3から読み出したいデータでない場合には、読出部27は、データ分散テーブル22の1st列のid行が示すサーバ3からデータを読み出す(ステップS24)。
このように、読出部27が読み出し要求に基づいて1stレプリカ又は2ndレプリカを読み出すことによって、分散ストレージ1はクライアント5の要求に適したレプリカを用いて高速にデータを読み出すことができる。
上述してきたように、実施例では、第1配置先決定部23がデータが分散して配置されるように1stレプリカの配置先を決定する。また、第2配置先決定部25がデータが同一のサーバ3に連続して記憶され、かつ1stレプリカと異なるサーバに記憶されるように2ndレプリカの配置を決定する。したがって、分散ストレージ1は、一連のデータを多くのサーバに配置したい場合と、少数のサーバに配置したい場合の両方に対応すると共に、同一データのレプリカを同一サーバに記憶させないようにすることができる。
また、実施例では、データ分散テーブル22が1stレプリカと2ndレプリカの配置先のサーバ3の識別子をハッシュ範囲毎に記憶し、最終送付先記憶部24が2ndレプリカの最終配布先のサーバ3の識別子を記憶する。そして、第2配置先決定部25は、データのハッシュ値、データ分散テーブル22及び最終送付先記憶部24に基づいて2ndレプリカの配置先を決定する。したがって、第2配置先決定部25は、データが同一のサーバ3に連続して記憶され、かつ1stレプリカと異なるサーバに記憶されるように2ndレプリカの配置を決定することができる。
また、実施例では、ハッシュ値に基づく2ndレプリカの配置先と、最終送付先記憶部24に基づく最終送付先が異なる場合に、第2配置先決定部25は、ハッシュ範囲を分割して両者が一致するよう試みる。したがって、第2配置先決定部25は、一連のデータができるだけ同一のサーバ3に記憶されるように、2ndレプリカを配置することができる。
また、実施例では、第2配置先決定部25は、ハッシュ範囲の分割を所定の回数繰り返してもハッシュ値に基づく配置先と最終送付先を一致させることができない場合に、ハッシュ値に基づく配置先に2ndレプリカを配置する。したがって、データが同一のサーバ3だけに過度に集中することを防ぐことができる。
なお、実施例では、複製装置2について説明したが、複製装置2が有する構成をソフトウェアによって実現することで、同様の機能を有する複製プログラムを得ることができる。そこで、複製プログラムを実行するコンピュータについて説明する。なお、コンピュータは、複数の複製プログラムを実行することができる。
図7は、実施例に係る複製プログラムを実行するコンピュータのハードウェア構成を示す図である。図7に示すように、コンピュータ30は、メインメモリ31と、CPU(Central Processing Unit)32と、LANインタフェース33と、HDD34とを有する。また、コンピュータ30は、スーパーIO(Input Output)35と、DVI(Digital Visual Interface)36と、ODD(Optical Disk Drive)37とを有する。
メインメモリ31は、プログラムやプログラムの実行途中結果などを記憶するメモリである。CPU32は、メインメモリ31からプログラムを読み出して実行する中央処理装置である。CPU32は、メモリコントローラを有するチップセットを含む。
LANインタフェース33は、コンピュータ30をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD34は、プログラムやデータを格納するディスク装置であり、スーパーIO35は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。DVI36は、液晶表示装置を接続するインタフェースであり、ODD37は、DVDの読み書きを行う装置である。
LANインタフェース33は、PCIエクスプレスによりCPU32に接続され、HDD34及びODD37は、SATA(Serial Advanced Technology Attachment)によりCPU32に接続される。スーパーIO35は、LPC(Low Pin Count)によりCPU32に接続される。
そして、コンピュータ30において実行される複製プログラムは、DVDに記憶され、ODD37によってDVDから読み出されてコンピュータ30にインストールされる。あるいは、複製プログラムは、LANインタフェース33を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ30にインストールされる。そして、インストールされた複製プログラムは、HDD34に記憶され、メインメモリ31に読み出されてCPU32によって実行される。
また、実施例では、複製装置が分散ストレージに含まれる場合について説明したが、本発明はこれに限定されるものではなく、例えば、複製プログラムがクライアントに近接するコンピュータやクライアントで実行される場合にも同様に適用することができる。
また、実施例では、ハッシュを用いてレプリカの配置を決定する場合について説明したが、本発明はこれに限定されるものではなく、例えば、順番に配置サーバを交替していく場合など他の方法でレプリカの配置を決定する場合にも同様に適用することができる。
また、実施例では、複製装置とクライアントが1対1に対応する場合について説明したが、本発明はこれに限定されるものではなく、m及びnを任意の正の整数として、複製装置とクライアントがm対nに対応する場合にも同様に適用することができる。
1 分散ストレージ
2 複製装置
3 サーバ
4 LAN
5 クライアント
21 受信部
22 データ分散テーブル
23 第1配置先決定部
24 最終送付先記憶部
25 第2配置先決定部
26 転送部
27 読出部
28 テーブル同期部
30 コンピュータ
31 メインメモリ
32 CPU
33 LANインタフェース
34 HDD
35 スーパーIO
36 DVI
37 ODD

Claims (7)

  1. 複数の記憶ノードを用いてデータの複数のレプリカを記憶する記憶装置において、
    第1のレプリカの記憶ノードへの配置について、データを記憶ノードに分散して記憶させる配置を決定する第1の決定部と、
    第2のレプリカの記憶ノードへの配置について、データを同一の記憶ノードに連続して記憶させ、かつ、第1のレプリカを記憶する記憶ノードと異なる記憶ノードに記憶させる配置を決定する第2の決定部と、
    を備えたことを特徴とする記憶装置。
  2. 第1のレプリカ及び第2のレプリカの配置先の記憶ノードを識別する識別子を記憶する配置先記憶部と、
    データの最終送付先の記憶ノードを識別する識別子を記憶する最終送付先記憶部とをさらに備え、
    前記第2の決定部は、前記配置先記憶部及び前記最終送付先記憶部に基づいて第2のレプリカの記憶ノードへの配置を決定することを特徴とする請求項1に記載の記憶装置。
  3. 前記第2の決定部は、ハッシュ値を算出して第2のレプリカの配置先を選定し、選定した配置先が前記最終送付先と異なる場合には、前記ハッシュ値を含むハッシュ範囲を複数に分割することによって前記ハッシュ値に基づく第2のレプリカの配置先を前記最終送付先と同じにすることを特徴とする請求項2に記載の記憶装置。
  4. 前記第2の決定部は、前記ハッシュ範囲の分割を所定の回数繰り返しても第2のレプリカの配置先を前記最終送付先と同じにすることができない場合に、前記ハッシュ値に基づいて選定した配置先への第2のレプリカの配置を決定し、前記最終送付先を該配置先に更新することを特徴とする請求項3に記載の記憶装置。
  5. 同一記憶ノードから読み出したいデータであるか否かを判定し、判定結果に基づいてデータを読み出す記憶ノードを決定する読出部をさらに備えたことを特徴とする請求項1〜4のいずれか1つに記載の記憶装置。
  6. 複数の記憶ノードを用いてデータの複数のレプリカを記憶する記憶装置による複製方法において、
    第1のレプリカの記憶ノードへの配置について、データを記憶ノードに分散して記憶させる配置を決定し、
    第2のレプリカの記憶ノードへの配置について、データを同一の記憶ノードに連続して記憶させ、かつ、第1のレプリカを記憶する記憶ノードと異なる記憶ノードに記憶させる配を決定する
    処理を含むことを特徴とする複製方法。
  7. 複数の記憶ノードを用いてデータの複数のレプリカを記憶する分散ストレージが有するコンピュータで実行される複製プログラムにおいて、
    第1のレプリカの記憶ノードへの配置について、データを記憶ノードに分散して記憶させる配置を決定し、
    第2のレプリカの記憶ノードへの配置について、データを同一の記憶ノードに連続して記憶させ、かつ、第1のレプリカを記憶する記憶ノードと異なる記憶ノードに記憶させる配を決定する
    処理を前記コンピュータに実行させることを特徴とする複製プログラム。
JP2014012449A 2014-01-27 2014-01-27 記憶装置、複製方法及び複製プログラム Active JP6197666B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014012449A JP6197666B2 (ja) 2014-01-27 2014-01-27 記憶装置、複製方法及び複製プログラム
US14/559,374 US20150215404A1 (en) 2014-01-27 2014-12-03 Replication device, replication method, and replication system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014012449A JP6197666B2 (ja) 2014-01-27 2014-01-27 記憶装置、複製方法及び複製プログラム

Publications (2)

Publication Number Publication Date
JP2015141451A JP2015141451A (ja) 2015-08-03
JP6197666B2 true JP6197666B2 (ja) 2017-09-20

Family

ID=53680245

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014012449A Active JP6197666B2 (ja) 2014-01-27 2014-01-27 記憶装置、複製方法及び複製プログラム

Country Status (2)

Country Link
US (1) US20150215404A1 (ja)
JP (1) JP6197666B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015156111A (ja) * 2014-02-20 2015-08-27 日本電気株式会社 配置先決定装置、配置先決定方法、及び配置先決定プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040088380A1 (en) * 2002-03-12 2004-05-06 Chung Randall M. Splitting and redundant storage on multiple servers
US9292620B1 (en) * 2007-09-14 2016-03-22 Hewlett Packard Enterprise Development Lp Retrieving data from multiple locations in storage systems
US7870409B2 (en) * 2007-09-26 2011-01-11 Hitachi, Ltd. Power efficient data storage with data de-duplication
US8849955B2 (en) * 2009-06-30 2014-09-30 Commvault Systems, Inc. Cloud storage and networking agents, including agents for utilizing multiple, different cloud storage sites
WO2011027775A1 (ja) * 2009-09-01 2011-03-10 日本電気株式会社 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード
US20130046845A1 (en) * 2010-04-28 2013-02-21 Nec Corporation Storage system, control method for storage system, and computer program
US8977660B1 (en) * 2011-12-30 2015-03-10 Emc Corporation Multi-level distributed hash table for data storage in a hierarchically arranged network
US8930312B1 (en) * 2012-01-17 2015-01-06 Amazon Technologies, Inc. System and method for splitting a replicated data partition
JP5723309B2 (ja) * 2012-03-05 2015-05-27 日本電信電話株式会社 サーバおよびプログラム

Also Published As

Publication number Publication date
US20150215404A1 (en) 2015-07-30
JP2015141451A (ja) 2015-08-03

Similar Documents

Publication Publication Date Title
US9213489B1 (en) Data storage architecture and system for high performance computing incorporating a distributed hash table and using a hash on metadata of data items to obtain storage locations
CN104580439B (zh) 一种云存储系统中使数据均匀分布的方法
EP4340331A2 (en) Replicated database distribution for workload balancing after cluster reconfiguration
US9323791B2 (en) Apparatus and method for expanding a shared-nothing system
US20130332418A1 (en) Method of managing data in asymmetric cluster file system
JP6388339B2 (ja) 分散キャッシングおよびキャッシュ分析
US9773012B2 (en) Updating map structures in an object storage system
JP2012524943A (ja) ストレージクラスタを指定可能な複製されたコンテンツのための非同期的分散オブジェクトアップロード
US20150236974A1 (en) Computer system and load balancing method
TW201314470A (zh) 分散式儲存系統管理裝置及方法
JP6028641B2 (ja) 情報処理システム、情報処理装置の制御プログラム及び情報処理システムの制御方法
CN111125065B (zh) 可视化数据同步方法、系统、终端和计算机可读存储介质
US20180336231A1 (en) Reconciler for a distributed storage system
WO2014107901A1 (zh) 数据存储方法、数据库存储节点故障处理方法及装置
US9037762B2 (en) Balancing data distribution in a fault-tolerant storage system based on the movements of the replicated copies of data
JP6197666B2 (ja) 記憶装置、複製方法及び複製プログラム
WO2009088007A1 (ja) コンテンツ管理装置、コンテンツ管理システム、コンテンツ管理方法およびプログラム
US11188258B2 (en) Distributed storage system
CN106527960B (zh) 多存储盘负载管理方法、装置、文件系统及存储网络系统
CN115563073A (zh) 分布式元数据的数据处理的方法、装置及电子设备
JP2012243039A (ja) スナップショットデータ保管方法
US20220309050A1 (en) Method and system for managing cross data source data access requests
US8990612B2 (en) Recovery of a document serving environment
JP6127005B2 (ja) クラスタシステムのサーバ装置およびプログラム
JP6353395B2 (ja) 配信要求分散方法、ノード、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170712

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: 20170725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170807

R150 Certificate of patent or registration of utility model

Ref document number: 6197666

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150