JP5475085B1 - データ整合装置、データ整合方法およびデータ整合プログラム - Google Patents

データ整合装置、データ整合方法およびデータ整合プログラム Download PDF

Info

Publication number
JP5475085B1
JP5475085B1 JP2012234965A JP2012234965A JP5475085B1 JP 5475085 B1 JP5475085 B1 JP 5475085B1 JP 2012234965 A JP2012234965 A JP 2012234965A JP 2012234965 A JP2012234965 A JP 2012234965A JP 5475085 B1 JP5475085 B1 JP 5475085B1
Authority
JP
Japan
Prior art keywords
data
redundant
unit
storage units
redundant data
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
JP2012234965A
Other languages
English (en)
Other versions
JP2014085883A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012234965A priority Critical patent/JP5475085B1/ja
Application granted granted Critical
Publication of JP5475085B1 publication Critical patent/JP5475085B1/ja
Publication of JP2014085883A publication Critical patent/JP2014085883A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】上位アプリケーションの性能を低下させることなく冗長データを整合させる。
【解決手段】実施の形態に係るデータ整合装置は、比較部と同一化部とを備える。比較部は、複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較する。また、同一化部は、前記比較部が前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える。
【選択図】図1

Description

本発明は、冗長化されたデータ間の整合性を維持する技術に関する。
従来、データを格納する装置が故障した場合に、当該装置に格納されたデータが破損または消失することを防止するため、複数の装置に同じデータを格納する冗長化が行われている。たとえば、同じデータのレプリカを複数のサーバに分散させて管理する分散型ファイルシステムが実現されている。
たとえば、非特許文献1は、分散型ファイルシステムの一例を開示している。このシステムは、各クラスタを1つのマスタと複数のサーバとで構成する。複数のクライアントがクラスタにアクセスする。クラスタにファイルを格納するときは、ファイルを固定長の複数のブロックに分割し、ブロック1つ1つの複製をサーバに格納する。このように、ファイルを複製して冗長化し、複数サーバ上に分散して保持することにより、耐故障性を向上させ、複数サーバにおける並列処理を可能にして処理効率の向上を図ることができる。
Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung著、「The Google File System」、19th ACM Symposium on Operating Systems Principles、2003年10月、p. 20-43 Vijayan Prabhakaran, Lakshmi N. Bairavasundaram, Nitin Agrawal, Haryadi S. Gunawi, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau著、「IRON File Systems」、SOSP ’05 Proceedings of the twentieth ACM symposium on Operating systems principles、2005年10月、p. 206-220
しかしながら、上記の技術においては、冗長化した複数のデータ(以下、「冗長データ」とも呼ぶ。冗長データは、複製元のデータおよび複製先のデータを含む。)間での整合性を維持する際に、処理性能が低下するという問題があった。
たとえば、ファイルシステムのひとつのサーバへの書込処理が途中で異常終了した場合、当該サーバに格納されたデータと、他のサーバに格納されたデータとの間でデータが不一致となる。かかる問題に対処する手法として、トランザクション処理やチェックサムを利用して不一致状態を検知し自動的に冗長データを相互に一致させる手法や、上位アプリケーションから書込処理を再実行して冗長データを相互に一致させる手法が存在する。
しかしながら、トランザクション処理を利用した不一致状態の検知手法では、冗長データの同一性は維持されるが、ファイルシステム上のファイルにデータを書き込む際の処理手順が多くなり、上位アプリケーションの書込性能が低下する。
これに対して、たとえば、非特許文献2が開示する、チェックサムを利用することで不一致状態を検知する手法では、まず、冗長データのチェックサムを取得しておく。そして、定期的または冗長データへのアクセスの際または書込処理が失敗した際などに、複数の冗長データ間でチェックサムを比較して、チェックサムが異なる場合には、冗長データが同一になるように冗長データの書き換えを行う。
しかし、チェックサムを利用した不一致状態の検知手法では、上位アプリケーションからファイルシステム上のファイルにアクセスする処理と、ファイルシステム内部のチェックサムを比較する処理が競合する。このため、やはり、ファイルシステムの書込処理および読出処理の性能が低下する。
上位アプリケーションから書込処理を再実行する手法では、書込みが失敗した場合、上位アプリケーションが再度、失敗した書込の対象データを書き込む。この手法によれば、冗長データの整合性維持にかかる負荷を上位アプリケーションが制御することができ、自動的に冗長データの整合性を維持する手法に比べて上位アプリケーションの書込性能低下を抑制することができる。
しかし、上位アプリケーションから書込処理を再実行する手法では、書込処理を行っている上位アプリケーションが異常終了した場合、再度書込処理を行うためには、上位アプリケーション自身がローカルファイルなどのデータ永続化装置に、処理結果を書き込んでおく必要がある。このため、上位アプリケーションの書込処理時間が長くなり、上位アプリケーションの書込性能が低下してしまう。
本発明は、上記に鑑みてなされたものであって、上位アプリケーションの性能を低下させることなく、冗長データを整合させることができるデータ整合装置、データ整合方法およびデータ整合プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較し、前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃えることを特徴とする。
本発明にかかるデータ整合装置、データ整合方法およびデータ整合プログラムは、上位アプリケーションの性能を低下させることなく、冗長データを整合させることができるという効果を奏する。
図1は、本発明の第1の実施形態に係るデータ整合装置の概要を示すブロック図である。 図2は、第1の実施形態に係るデータ整合装置のデータ整合処理の流れの一例を示すフローチャートである。 図3は、本発明の第2の実施形態に係るデータ整合システムの概要を示すブロック図である。 図4−1は、第2の実施形態に係る冗長データ位置テーブルに格納する情報の一例を説明するための図である。 図4−2は、第2の実施形態に係る冗長データ位置テーブルに格納する情報とデータを格納するディスクとの対応を説明するための図である。 図5は、第2の実施形態に係る処理対象リストに格納するデータの一例を示す図である。 図6は、第2の実施形態に係るデータ配置制御部による、書込処理時のデータ配置制御処理の流れの一例を示すフローチャートである。 図7は、第2の実施形態に係るデータ配置制御部による、書込制御処理の流れの一例を示すフローチャートである。 図8は、第2の実施形態に係る書込部による書込処理の流れの一例を示すフローチャートである。 図9は、第2の実施形態に係るデータアクセス部における書込実行前処理の流れの一例を示すフローチャートである。 図10は、第2の実施形態に係るデータアクセス部における書込実行処理の流れの一例を示すフローチャートである。 図11は、第2の実施形態に係るデータ整合システムにおける正常時の処理の流れの一例を概括的に示す図である。 図12は、第2の実施形態に係るデータ配置制御部による、読出処理時のデータ配置制御処理の流れの一例を示すフローチャートである。 図13は、第2の実施形態に係る読出部による読出処理の流れの一例を示すフローチャートである。 図14は、第2の実施形態に係るデータアクセス部における読出実行処理の流れの一例を示すフローチャートである。 図15は、第2の実施形態に係るデータアクセス部が、書込処理中に異常終了した場合の冗長データの状態を説明するための図である。 図16は、第2の実施形態に係るデータ整合装置におけるデータ整合処理の流れの一例を示すフローチャートである。 図17は、第2の実施形態に係るデータ整合装置における同一化処理の流れの一例を示すフローチャートである。 図18は、データ整合システムによる一連の処理を実行するプログラムであるデータ整合プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。
以下に、本発明にかかるデータ整合装置、データ整合方法およびデータ整合プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
[第1の実施形態]
[データ整合装置の構成の一例]
図1は、本発明の第1の実施形態に係るデータ整合装置10の概要を示すブロック図である。図1を参照して、第1の実施形態に係るデータ整合装置10について説明する。第1の実施形態に係るデータ整合装置10は、同一のデータを複製して作成した複数の冗長データを異なる記憶装置に記憶させる場合に生じた冗長データの不整合を検出して、冗長データ同士のデータ長を一致させる。
図1に示すように、データ整合装置10は、比較部11と同一化部12とを備える。比較部11は、データの複製を作成して冗長化した冗長データをそれぞれ格納する複数の記憶部(図示せず)に対して、冗長データのデータ長を比較する比較処理を実行する。同一化部12は、比較処理の結果、比較部11が冗長データのデータ長が同一ではないと判定した場合に、当該冗長データのうち、最も短いデータ長の冗長データに他の冗長データのデータ長を揃える。
データ整合装置10は、たとえば、分散型ファイルシステムのマスタ装置であってよい。また、たとえば、データ整合装置10の機能は、クライアントライブラリによって実現されるように構成してもよい。ただし、分散型ファイルシステムに限らず、複数の独立した記憶部を有し、記憶部各々に同一の複製データを格納することでシステムの冗長性を確保するシステムに適用することができる。たとえば、外部からのアクセスによって各記憶部に対する並列処理が実行され、複数の外部からの命令を調整して処理するシステムに適用することができる。
また、図1には図示しないが、データ整合装置10は、冗長データを格納する複数の記憶部や、記憶部に対するデータの読出要求や書込要求を送信する情報処理装置等とネットワーク等を介して接続される。複数の記憶部は例えば、物理サーバと当該サーバに接続されたディスク装置や、データセンタ内に仮想的に構築された仮想サーバと仮想ストレージ等であってよい。また、情報処理装置は、物理サーバやデータセンタを利用するクライアント装置であってよい。
また、ネットワークとして、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)等任意のネットワークを使用できる。
[データ整合処理の流れの一例]
図2は、第1の実施形態に係るデータ整合装置10のデータ整合処理の流れの一例を示すフローチャートである。図2を参照して、第1の実施形態に係るデータ整合装置10によるデータ整合処理の流れの一例を説明する。
図2に示すように、データ整合装置10はまず、整合要求を受ける(ステップS21)。整合要求はたとえば、データ整合装置10に接続され、記憶部に格納されたデータを利用するクライアントから発行される。クライアントはたとえば、記憶部にデータを書き込む処理が異常終了した場合等に、データ整合装置10に対して整合要求を発行する。ただし、整合要求は、クライアントにおいて記憶部への書込処理が異常終了したことを検出した場合に、自動的にデータ整合装置10に発行されるものとしてもよい。
整合要求は、比較部11に渡される。比較部11は、整合要求によって特定される冗長データを格納する複数の記憶部にアクセスし、格納された冗長データのデータ長を抽出する(ステップS22)。そして比較部11は、抽出したデータ長を相互に比較する(ステップS23)。比較部11がデータ長は同一であると判定した場合(ステップS24、肯定)、データ整合処理は終了する。他方、比較部11がデータ長は同一ではないと判定した場合(ステップS24、否定)、比較部11は処理を同一化部12に渡す。同一化部12は、比較部11がデータ長を比較した冗長データのデータ長を揃える(ステップS25)。すなわち、同一化部12は、複数の冗長データのうち、最も短いデータ長の冗長データに他の冗長データのデータ長を揃える。これによってデータ整合処理は終了する。
[第1の実施形態の効果]
このように、第1の実施形態に係るデータ整合装置10は、複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を比較する比較部11と、比較部11が冗長データのデータ長が同一ではないと判定した場合に、複数の記憶部に格納された冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化部12と、を備える。このため、第1の実施形態に係るデータ整合装置10は、複数の記憶部が格納する冗長データ間で整合性を確保することができる。
また、データ整合装置10は、整合要求を受けたときにデータ整合処理を実行し、特に必要がない場合は冗長データ間の不整合に対処しないように構成してもよい。このように構成することで、クライアント側が利用するアプリケーションのニーズに合わせて、冗長データの整合性制御を実行することができる。
たとえば、クライアント側が利用するアプリケーションが多少の冗長データの不整合があっても問題なく動作できるものであれば、クライアントは整合要求を発行せずに処理を継続する。そして、クライアントまたはデータ整合装置10にかかる処理負荷の低いときに整合要求を発行してデータ整合処理を実行させることができる。また、クライアント側が利用するアプリケーションが冗長データの高い整合性を要求するものである場合は、書込動作が予期せず終了した場合等に、クライアントが直ちに整合要求を発行することで、冗長データの整合性を確保することができる。
また、データ整合装置10は、書込処理の異常終了が発生した場合は常にデータ整合処理を実行するように設定してもよい。また、データ整合装置10は、予め定められたアプリケーションからの書込要求に対応した書込処理が異常終了した場合はデータ整合処理を実行し、他のアプリケーションからの書込要求に対応した書込処理が異常終了した場合はデータ整合処理を実行しないように設定してもよい。
このように、第1の実施形態のデータ整合装置10は、上位アプリケーションに係る負荷を抑制して処理性能の低下を防止しつつ、複数の記憶部に格納された冗長データ間の整合性を確保することができる。
[第2の実施形態]
図3は、本発明の第2の実施形態に係るデータ整合システム1の概要を示すブロック図である。図3を参照して、第2の実施形態に係るデータ整合システム1の構成の概要について説明する。
[データ整合システム]
図3に示すように、データ整合システム1は、マスタ100と、サーバ200A,200B,200Cと、ディスク300A,300B,300Cと、クライアント400A,400B,400Cと、を備える。マスタ100は、ネットワークを介して、サーバ200A,200B,200Cおよびクライアント400A,400B,400Cと接続され、相互に情報の送受信を行う。また、クライアント400A,400B,400Cは、マスタ100から送信された情報に基づき、サーバ200A,200B,200Cに対して適宜、読出命令、書込命令、またはデータ整合命令を送信する。マスタ100は、クライアント400A,400B,400Cからデータの読み出しまたは書込の要求を受信し、クライアント400A,400B,400Cに対して、読み出しまたは書込みまたはデータ整合化のための情報を送信する。サーバ200A,200B,200Cは、クライアント400A,400B,400Cからの命令に基づき、ディスク300A,300B,300Cに対して読出処理または書込処理またはデータ整合処理を実行する。
マスタ100はたとえば、分散型ファイルシステムのマスタである。サーバ200A,200B,200Cはたとえば、分散型ファイルシステムのチャンクサーバである。クライアント400A,400B,400Cはたとえば、分散型ファイルシステムを利用するユーザである。
また、マスタ100は、インタークラウドシステムのインタークラウドサーバとして構成してもよい。その場合、サーバ200A,200B,200Cおよびディスク300A,300B,300Cは、クラウドシステムによって仮想的に構成してもよい。また、マスタ100、サーバ200A,200B,200C、ディスク300A,300B,300Cは、1つのデータセンタ内に構築したものであってもよいし、複数のデータセンタに分散して構築したものでもよい。
サーバ200A,200B,200Cは、マスタ100およびクライアント400A,400B,400Cからの命令に応じて、各々の配下のディスク300A,300B,300Cにアクセスし、データの読み出しや書込みを行う。サーバ200A,200B,200Cはそれぞれ、配下のディスク300A,300B,300Cへのアクセスを制御するためのデータアクセス部201A,201B,201Cを備える。
サーバ200A,200B,200Cは、いずれかのサーバに障害が発生した場合でもデータが失われないように、それぞれ同一のデータを冗長データとして格納する。クライアント400A,400B,400Cは、サーバ200A,200B,200Cのいずれかにアクセスすることで同一のデータに対して並列処理を実行することができる。なお、図3には、3つのサーバ200A,200B,200Cを示すが、サーバの数は3に限定されない。また、冗長データを格納するディスクおよびサーバの数は、第2の実施形態では3として説明するが、たとえば10のサーバを備えるデータ整合システムの場合、同じデータの冗長データは10のサーバのうち適宜選択した3つのサーバの配下のディスクに格納する等としてよい。どのサーバのディスクに冗長データを格納するかは、マスタ100が決定制御してクライアント400A,400B,400Cに指示する。ただし、クライアント400A,400B,400Cが冗長データを格納するサーバを指定するように構成してもよい。
ディスク300A,300B,300Cは、データを記憶するデータベース等の記憶装置である。ディスク300A,300B,300Cへのアクセスはそれぞれサーバ200A,200B,200Cにより制御される。
クライアント400A,400B,400Cは、ディスク300A,300B,300Cに格納されたデータを利用する。たとえば、クライアント400A,400B,400Cは、インタークラウドシステムを利用するユーザ端末である。クライアント400A,400B,400Cはそれぞれ、アプリケーション実行部401A,401B,401C、書込部402A,402B,402C、読出部403A,403B,403C、データ整合装置410A,410B,410Cを備える。アプリケーション実行部401A,401B,401Cはそれぞれ、クライアントのアプリケーションを実行する機能部である。書込部402A,402B,402C、読出部403A,403B,403Cおよびデータ整合装置410A,410B,410Cはそれぞれ、アプリケーション実行部401A,401B,401Cの制御の下、ディスク300A,300B,300Cへの書込命令、読出命令、データ整合命令を送信する。
[データ整合装置の構成の一例]
クライアント400A,400B,400Cはそれぞれ、データ整合装置410A,410B,410Cを備える。データ整合装置410A,410B,410Cにつき、以下に更に説明する。データ整合装置410(以下、「データ整合装置410」は、データ整合装置410A,410B,410Cのいずれか1つを示す)は、比較部412(以下、「比較部412」は、比較部412A,412B,412Cのいずれか1つを示す)と、同一化部413(以下、「同一化部413」は、同一化部413A,413B,413Cのいずれか1つを示す)と、を備える。
比較部412は、クライアントからの整合要求に応じて比較処理を実行する。比較部412はたとえば、クライアントが要求した書込処理が正常に終了しなかった場合に比較処理を実行する。第2の実施形態のマスタ100では、データの冗長性を確保するため、サーバ200A,200B,200Cにそれぞれ同一のデータを格納させる。しかし、書込処理が異常終了した場合等、サーバ200Aに格納されたデータとサーバ200Bに格納されたデータに不一致が生じていることがある。また、書込が異常終了した場合、いずれかのサーバが外部からアクセスできない状態となり、他のサーバについてもデータが適切に書込完了したか否かを外部(クライアント)から知ることができない場合がある。そこで、比較部412は、異常終了した書込処理の書込対象データを、アクセス可能なサーバから検出して、それぞれのデータ長を比較する比較処理を実行する。
同一化部413は、比較部412が複数のサーバに格納された冗長データを比較した結果、データ長に不一致が検出された場合に、それらのデータのうち、最もデータ長が短いデータのデータ長に他の冗長データの長さを揃えるデータ同一化処理を実行する。なお、比較部412および同一化部413による処理についてはさらに詳細に後述する。
[マスタの構成の一例]
マスタ100の構成の一例につき説明する。図3に示すようにマスタ100は、データ配置制御部110と、記憶部120と、入出力部130と、を備える。データ配置制御部110は、マスタ100における各部の機能および動作を制御する。記憶部120は、マスタ100における処理に使用する情報および処理の結果として生成される情報を適宜格納する。入出力部130は、外部とマスタ100との間での情報のやりとりを行う。入出力部130が受信した情報は適宜、データ配置制御部110および記憶部120に渡される。
データ配置制御部110は、データの書込みおよび読み出しを行う場所を判定し、冗長データを識別するための情報や冗長データの所在を示す情報を記憶部120に記憶する処理を実行する。また、サーバ200A,200B,200Cにおける読出処理および書込処理およびデータ整合処理の結果に応じて、記憶部120に格納された情報を更新する。また、データ配置制御部110は、クライアント400A,400B,400Cからの要求に応じて、データの書込みおよび読み出しおよびデータ整合化に必要な情報をクライアント400A,400B,400Cに送信する。
[記憶部の構成および記憶する情報の一例]
次に、記憶部120の構成および記憶部120に記憶する情報の一例につき説明する。図3に示すように、記憶部120は、冗長データ位置テーブル121と、処理対象リスト(リースリスト)122と、を備える。
冗長データ位置テーブル121は、各サーバ200A,200B,200Cに格納したデータの識別子(ID:Identifier)と、当該データを格納したサーバの情報とを記憶する。図4−1は、冗長データ位置テーブル121に格納する情報の一例を説明するための図である。図4−2は、冗長データ位置テーブル121に格納する情報とデータを格納するディスクとの対応を説明するための図である。
たとえば、クライアント400Aからの書込要求に応じてファイル名、すなわち、ファイルID「A」のデータをディスク300A,300B,300Cに格納するとする。この場合、ファイルID「A」のデータはまず、固定長に分割されて複数のデータブロックとなる(図4−1参照)。そして、各ブロックにハンドル名とバージョン番号が付与される。ハンドル名とバージョン番号とを組み合わせたものが、当該ブロックのデータIDとなる。たとえば、図4−1の例では、ファイルID「A」のデータを3つの固定長のブロックに分割している。そして、最初のブロックにハンドル名「a1」とバージョン番号「2」を付与する。したがって、ファイルID「A」のデータの最初のブロックのデータIDは、「a12」となり、当該データIDがファイルID「A」に対応づけて、冗長データ位置テーブル121に格納される。同様に、2番目のデータブロックに、ハンドル名「a2」とバージョン番号「3」が付与され、冗長データ位置テーブル121に格納される。また、3番目のデータブロックに、ハンドル名「a3」とバージョン番号「3」が付与され、冗長データ位置テーブル121に格納される。
なお、各データブロックに付与するデータIDのうち、ハンドル名については、各データブロックを一意に識別できるよう、各ブロックに異なるハンドル名を付与する。バージョン番号については、複数のデータブロックに同一のバージョン番号が付与されている場合がある。また、データブロックを一意に特定できるのであれば、他の形式のIDを付与してもよい。
本実施形態では、各データブロックの冗長データを3つのディスク300A,300B,300Cに格納する。そこで、冗長データ位置テーブル121には、たとえば、ファイルID「A」のデータの各ブロックについて、冗長データが格納されている場所を示す位置情報が記憶される。図4−2の例では、ファイルID「A」のデータ中、データID「a33」のデータブロックの冗長データが、サーバID「200A」,「200B」,「200C」のサーバが制御するディスクに格納されていることが示されている。すなわち、ここでは位置情報は当該データブロックのデータを管理するデータアクセス部が動作しているサーバを特定する。
なお、冗長データが格納されている場所を示す位置情報としては、たとえば、サーバのIPアドレスやホスト名、サーバ上で動作するデータアクセス部のIPアドレスやホスト名などを用いることができる。
処理対象リスト122は、その時点で、書込処理を実行しているサーバ又はデータアクセス部と、処理対象データとを特定するリストである。図5は、処理対象リスト122に格納するデータの一例を示す図である。
処理対象リスト122は、その時点で書込処理を実行しているデータブロックを特定する情報と、当該データブロックへの書込処理を制御している機能部を特定する情報とを記憶する。たとえば、データID「a12」のデータブロックに対する書込処理を、データアクセス部「201A」が制御している場合、処理対象リスト122には、当該データのハンドル名である「a1」と、データアクセス部「201A」の位置情報である「201A」とが対応づけて格納される。データアクセス部「201A」による、ハンドル名「a1」のデータブロックに対する書込処理が終了すると、所定の時間が経過した後、データ配置制御部110が、処理対象リスト122からハンドル名「a1」とデータアクセス部「201A」の情報を削除する。なお、ここでは処理対象リスト122は、処理対象データのハンドル名のみを格納し、バージョン番号は格納しないものとする。
[書込処理時のデータ配置制御処理の流れの一例]
図6は、第2の実施形態に係るマスタ100による、データ配置制御処理の流れの一例を示すフローチャートである。図6を参照して、マスタ100による、データ配置制御処理の流れを説明する。
まず、たとえばクライアント400Aが、ファイルID「A」のデータの書込みを要求する書込要求をマスタ100に対して送信する。書込要求は、データを書き込む対象であるファイルのファイルIDと、ファイル中の書込データの位置を示すオフセット「Z」とを含む。なお、書込要求は後述する同一化部413によっても送信される。この場合の処理も以下と同様である。
データ配置制御部110は、書込要求を受信すると(ステップS601)、書込要求に含まれた情報に基づき、データを書き込む位置を特定する(ステップS602)。たとえば、書込要求に含まれたオフセット「Z」が正の数である場合、データ配置制御部110は、オフセット「Z」と予め定められたブロックサイズ(固定長)とを加算して、ブロックサイズで除算する。データ配置制御部110は、その結果得られた整商に応じた場所にあるブロックを、データを書き込むブロックであると判断する。また、書込要求に含まれたオフセット「Z」が負の数である場合、データ配置制御部110は、当該ファイルの終端ブロックがデータを書き込むブロックであると判断する。
次に、データ配置制御部110は、データを書き込むブロックのデータIDの取得を試みる(ステップS603)。すなわち、データ配置制御部110は、冗長データ位置テーブル121を参照して、該当するデータIDのデータについての情報が格納されているか否かを判定する。情報が格納されていない場合(ステップS603、否定)、データ配置制御部110は、対応するデータがまだいずれのディスクにも格納されていないと判断して、新しいハンドル名を作成する(ステップS604)。そして、データ配置制御部110は、当該データの冗長データを格納するディスク(すなわち、対応するサーバまたはデータアクセス部)を決定する(ステップS605)。たとえば、データ配置制御部110は、予め作成すると定められている冗長データの数が3である場合、「3−1」個以上のスイッチ配下で動作するサーバを、作成する冗長データの数「3」だけ選択する。
そして、データ配置制御部110は、ステップS604で作成したハンドル名にもとづくデータIDと、ステップS605で選択したサーバの位置情報と、を対応づけて冗長データ位置テーブル121に登録する。冗長データ位置テーブル121への登録が失敗した場合(ステップS606、否定)、データ配置制御部110は、書込処理が失敗したことを、書込要求を出したクライアント400A(要求元)に送信する(ステップS607)。そして、書込処理を終える。冗長データ位置テーブル121への登録が成功した場合(ステップS606、肯定)は、ステップS603において、データ書込ブロックのデータIDを冗長データ位置テーブル121から取得し、かつ、ステップS608において冗長データ位置テーブル121から位置情報を取得した場合と同じ処理となる(後述)。
ステップS603に戻り、データ配置制御部110は、データ書込ブロックのデータIDを冗長データ位置テーブル121から取得した場合(ステップS603、肯定)、次に、当該データIDに対応する冗長データが格納される位置情報を取得する(ステップS608)。すなわち、冗長データ位置テーブル121を参照して、当該データIDに対応づけて格納されている位置情報を取得する。位置情報を取得できなかった場合(ステップS608、否定)、ステップS607に進み、書込処理失敗をクライアント400Aに通知する。そして、処理を終える。
位置情報を取得できた場合(ステップS608、肯定)、データ配置制御部110は、位置情報によって示されるサーバまたはデータアクセス部に対する書込制御処理を実行する(ステップS609)。図7は、第2の実施形態に係るマスタ100による、書込制御処理の流れの一例を示すフローチャートである。図7を参照し、データ配置制御部110の書込制御処理の流れの一例を説明する。
データ配置制御部110は、クライアント400Aから受信した書込要求に対応するデータIDと書込場所を示す位置情報とを取得すると(図6、ステップS608、肯定)、取得したデータIDのハンドル名が、処理対象リスト122に登録されているか否かを判定する(ステップS701)。処理対象リスト122に当該データIDのハンドル名が登録されている場合、当該データIDに対応するデータブロックの書込処理が実行中であることを意味する。したがって、処理対象リスト122に当該データIDのハンドル名が登録されている場合(ステップS701、肯定)、データ配置制御部110は書込制御処理をそのまま終了する。
処理対象リスト122に当該データIDが登録されていない場合(ステップS701、否定)、当該データIDに対応するデータブロックに対する書込処理は実行中ではないことを意味する。したがって、データ配置制御部110は、次の処理に進み、ステップS608において取得した位置情報に含まれるデータアクセス部(または対応するサーバ若しくはディスク)を1つ選択する(ステップS702)。たとえば、データ配置制御部110は、データアクセス部をランダムに選択する。また、たとえば、クライアント400Aから経由するスイッチ数が最も少ないデータアクセス部を選択してもよい。そして、データ配置制御部110は、選択した位置情報に対応するデータアクセス部に対して、書込制御命令を送信する(ステップS703)。書込制御命令は、書込対象であるデータブロックを特定する情報を含む。書込制御命令は、書込対象のデータハンドルについて書込制御を行うことを命令するものである。
そして、データ配置制御部110は、書込制御命令の送信先であるデータアクセス部から、命令受信応答を受信したか否かを判定する(ステップS704)。なお、命令受信応答は、書込制御命令に応じて、書込制御処理および書込処理が完了したことを意味するものではなく、書込制御命令を受信したことを意味するものである。
データ配置制御部110は、命令受信応答を受信していないと判定した場合(ステップS704、否定)、再び、ステップS702に戻って、データアクセス部を選択しなおし(ステップS702)、書込制御命令を送信する(ステップS703)。命令受信応答を受信しない場合としては、たとえば、タイムアウトやコネクションが切れた場合等が考えられる。他方、データ配置制御部110は、命令受信応答を受信したと判定すると(ステップS704、肯定)、冗長データ位置テーブル121に、当該データIDに対応付けて格納されている位置情報の中から、ステップS702において選択したデータアクセス部に対応する位置情報を抽出し、当該位置情報が、リストの先頭にくるように、冗長データ位置テーブル121を更新する(ステップS705)。そして、データ配置制御部110は、処理対象リスト122に、書込制御命令の対象である書込対象データのハンドル名と、書込制御命令の送信先であるデータアクセス部の位置情報と、を登録する(ステップS706)。そして、データ配置制御部110は、冗長データ位置テーブル121に登録した、書込対象データのデータIDのうち、バージョン番号を更新する(ステップS707)。データ配置制御部110は、更新したバージョン番号を、当該データIDに対応づけて格納されている位置情報に含まれるデータアクセス部に通知する(ステップS708)。これによって、データ配置制御部110による書込制御処理が終了する。
再び図6に戻り、書込処理を説明する。ステップS609におけるデータ配置制御部110による書込制御処理が完了すると、データ配置制御部110は、書込要求の送信元であるクライアント400Aに、冗長データ位置テーブル121に登録した情報を送信する(ステップS610)。すなわち、データ配置制御部110は、図6の書込制御処理を通じて、冗長データ位置テーブル121に格納されている、書込要求の対象であるデータブロックのデータIDと当該データIDに対応付けられている位置情報とを、クライアント400Aに送信する。
そして、データ配置制御部110は、クライアント400Aからの情報を受信した旨の受信応答の受信有無によって、要求元への送信処理が成功したか否かを判定する(ステップS611)。送信処理が成功したと判定した場合(ステップS611、肯定)、データ配置制御部110は、データ配置制御処理を終了する。また、送信処理が失敗したと判定した場合(ステップS611、否定)、データ配置制御部110は、送信処理を行った回数がN回(Nは1以上の自然数)以下であるか否かを判定する(ステップS612)。N回以下であると判定した場合(ステップS612、肯定)、データ配置制御部110は、ステップS610に戻って再び情報を送信する。また、N回以下ではないと判定した場合(ステップS612、否定)、データ配置制御部110は、それ以上情報を送信することなく、データ配置制御処理を終了する。これによって、書込処理時の、データ配置制御部110によるデータ配置制御処理が終了する。
[書込部による書込処理の流れの一例]
図6及び図7に示すように、データ配置制御部110がデータ配置制御処理および書込制御処理を実行すると、要求元(クライアント)に対して、処理を実行するために必要なデータが送信される。クライアントは受信したデータを使用して、データアクセス部にアクセスし、データの書込みおよび読み出しを実行させる。次に、クライアント側からの書込処理の流れの一例を説明する。
図8は、第2の実施形態に係る書込部による書込処理の流れの一例を示すフローチャートである。図8は、たとえばクライアント400Aが備える書込部402Aによる書込処理の流れの一例を示す図である。図8を参照し、クライアント400Aによる書込処理の流れの一例を説明する。
まず、クライアント400Aがデータの書込処理を実行しようとする場合、アプリケーション実行部401Aは、書込要求を生成する。書込要求は、書き込むデータのファイルIDと、ファイル終端の位置を示すオフセットと、を含む。書込要求に含まれるファイルID、オフセットは、書き込む対象であるデータとともに、アプリケーション実行部401Aから書込部402Aに送られる(ステップS801)。また、書込部402Aが受けた書込要求は、書込部402Aからマスタ100に送信される(図6のS601参照)。
また、書込要求を受信したマスタ100のデータ配置制御部110は、書込要求に応じてデータを書き込む対象となるデータブロックのデータIDおよび当該データブロックの位置情報を、冗長データ位置テーブル121を参照して取得し、書込部402Aに送信する。これによって書込部402Aは、書き込む対象となるデータブロックのデータIDと当該データブロックの位置情報を取得する(ステップS802)。
次に、書込部402Aは、取得した位置情報から、書込対象データブロックが格納されるディスクを配下にもつサーバまたは書込対象データブロックへの書込アクセスを制御するデータアクセス部の情報を抽出する。そして、抽出したサーバまたはデータアクセス部のうち、書込部402Aから最も近いサーバまたはデータアクセス部を1つ選択する(ステップS803)。ここで、「最も近い」とは、たとえば、書込部402Aから当該サーバまたはデータアクセス部までの間に介装されているスイッチの数が最も少ないこと、さらに、経由するスイッチの数が最も少ないデータアクセス部が複数存在する場合は、「log(「自身のIPアドレス」EXOR「相手のIPアドレス」)」の値が最も小さい値、さらに、この値が同一となるデータアクセス部が複数存在する場合は、同一となるデータアクセス部のうち取得した位置情報の中で先に取得したデータアクセス部を選択する。
書込部402Aは、データアクセス部、たとえば、データアクセス部201Aを選択する。そして、書込部402Aは、選択したデータアクセス部201Aに対して、書込処理のための情報を送信する(ステップS804)。たとえば、書込部402Aは、書込対象ブロックのデータIDと、書込対象ブロックのオフセットと、実際に書き込むデータと(ステップS801で取得)、位置情報(ステップS802で取得)と、メッセージIDと、を送信する。メッセージIDとは、書込部402Aが、データ整合システム1において一意となるように生成して付与する識別子である。
そして、データアクセス部201Aに書込処理のための情報を送信した後、書込部402Aは、メッセージIDに対応づけられた書込命令を、位置情報の中でリストの先頭のサーバ(すなわち、書込制御を行うデータアクセス部)に送信する(ステップS805)。書込命令は、メッセージIDに対応付けられたデータの書込を命令する。
そして、書込部402Aは、書込命令の送信先のデータアクセス部から命令受信応答を受信したか否かを判定する(ステップS806)。たとえば、予め所定の時間を設定しておき、当該所定の時間内に命令受信応答を受信した場合は受信したと判定し、当該所定の時間内に命令受信応答を受信していない場合は受信していないと判定すればよい。そして、命令受信応答を受信した場合(ステップS806、肯定)、書込部402Aは、アプリケーション実行部401Aに、データアクセス部201Aからの命令受信応答を受信した旨を通知できるか否かを判定する(ステップS807)。書込部402Aは、通知できると判定した場合(ステップS807、肯定)、アプリケーション実行部401Aに通知する(ステップS808)。そして、書込処理を正常終了する(ステップS809)。
これに対し、ステップS807において、書込部402Aは命令受信応答を受信した旨を通知できないと判定した場合(ステップS807、否定)、通知を行わずに、書込処理を異常終了する(ステップS810)。
また、ステップS806において、データアクセス部201Aから命令受信応答を受信していないと判定した場合(ステップS806、否定)、書込部402Aは、アプリケーション実行部401Aに書込命令が失敗した旨を通知できるか否かを判定する(ステップS811)。そして、通知できると判定した場合(ステップS811、肯定)、書込部402Aは、アプリケーション実行部401Aに、書込命令が失敗した旨を通知する(ステップS812)。そして、書込処理を異常終了する(ステップS813)。これに対して、通知できないと判定した場合(ステップS811、否定)、通知は行わずに、書込処理を異常終了する(ステップS810)。これによってクライアント400Aにおける書込処理が終了する。
[データアクセス部における書込実行前処理の流れの一例]
図9は、第2の実施形態に係るデータアクセス部における書込実行前処理の流れの一例を示すフローチャートである。図9を参照し、データアクセス部における書込処理の流れの一例を説明する。
まず、たとえばデータアクセス部201Aは、データの書込処理を実行するための情報を、書込部402Aまたは他のデータアクセス部から受信する(ステップS901)。受信する情報は、たとえば図8のステップS804において、書込部402Aが送信した情報である。本実施例では、書込のための情報は、書込部402Aから1つのデータアクセス部に送られ、当該データアクセス部から他のデータアクセス部に送信される。
データアクセス部201Aは、受信した情報のうち、位置情報を抽出し、その中に、自身以外のデータアクセス部が含まれているか否かを判定する(ステップS902)。他のデータアクセス部が位置情報に含まれていない場合(ステップS902、否定)、データアクセス部201Aは、書込要求の送信元であるクライアント400Aに情報受信に成功した旨の通知を送信する(ステップS903)。
これに対して、他のデータアクセス部が位置情報に含まれている場合(ステップS902、肯定)、データアクセス部201Aは、他のデータアクセス部を1つ選択する(ステップS904)。このとき、データアクセス部201Aは、図8のステップS803と同様の基準でデータアクセス部を選択すればよい。そして、データアクセス部201Aは、自身の位置情報を除いた位置情報を作成する。
次に、データアクセス部201Aは、受信した書込処理のためのデータのうち、位置情報をステップS904において作成した位置情報と置き換えて、ステップS904で選択したデータアクセス部に送信する(ステップS905)。そして、データアクセス部201Aは、情報を受信した旨の応答が送信されるのを待つ。情報を受信した旨の応答を受信した場合(ステップS906、肯定)、データアクセス部201Aは、ステップS903に進み、送信元のクライアント400Aに、情報受信が成功した旨の通知を送信する。これに対して、情報を受信した旨の応答を受信しない場合(ステップS906、否定)、データアクセス部201Aは、送信元のクライアント400Aに、情報受信に失敗した旨の通知を送信する(ステップS907)。これによってデータアクセス部201Aでの処理が終了する。
[データアクセス部における書込実行処理の流れの一例]
次に、図10を参照して、データアクセス部における書込実行処理の流れを説明する。図10は、第2の実施形態に係るデータアクセス部における書込実行処理の流れの一例を示すフローチャートである。なお、本実施例では、複数のサーバに冗長データを書き込む場合、まず、書込処理のための情報を1つのサーバに送信し、当該サーバから他の該当するサーバに順次情報を送信する。そして、書込を実行する際には、書込部が予め定められた処理順序に従い、最初に書込を行うサーバに書込命令を送信する。他のサーバに対しては、書込部ではなく、最初に書込を行うサーバから書込命令を送信する。図10は、最初に書込を行うサーバ(すなわち、書込制御を行うデータアクセス部)での書込実行処理を示す。
まず、たとえばデータアクセス部201Aは、書込部402Aから書込命令を受信する(ステップS1001)。データアクセス部201Aは、それまでに例えば、図9に示すステップS901の処理によって、書込処理を実行するためのデータを受信している。そして、データアクセス部201Aは、書込命令に応じて、書込対象データを指定された位置に書き込む処理を実行する(ステップS1002)。このとき、データアクセス部201Aは、書込部402Aから受信した書込命令に含まれるメッセージIDによって、書込対象データを特定する。次に、データアクセス部201Aは、ステップS703(図7)において受信したデータに含まれる位置情報の中の他のデータアクセス部に対して、書込命令を送信する(ステップS1003)。そして、データアクセス部201Aは、命令を送信できたか否かを判定する(ステップS1004)。命令を送信できなかったと判定した場合(ステップS1004、否定)、データアクセス部201Aは、それ以上処理を行わず、異常終了する(ステップS1008)。
これに対して、命令を送信できたと判定した場合(ステップS1004、肯定)、データアクセス部201Aは、書込命令の送信先であるデータアクセス部から命令成功応答があったか否かを判定する(ステップS1005)。全てのデータアクセス部から命令成功応答があったと判定した場合(ステップS1005、肯定)、データアクセス部201Aは、送信元のクライアント400Aに、書込が完了した旨の通知を送信する(ステップS1006)。そして、データアクセス部201Aは、書込実行処理を正常終了する(ステップS1007)。これに対して、全てのデータアクセス部からの命令成功応答を受信していないと判定した場合(ステップS1005、否定)、データアクセス部201Aは、それ以上処理を行わず、異常終了する(ステップS1008)。これによって書込実行処理が終了する。
[第2の実施形態に係るデータ整合システムにおける処理の流れ]
図11は、第2の実施形態に係るデータ整合システム1における正常時の処理の流れの一例を概括的に示す図である。図11を参照し、第2の実施形態に係るデータ整合システム1における正常時の処理の流れの一例について説明する。
図11に示すように、クライアント400(以下、「クライアント400」は、クライアント400A,400B,400Cのいずれか1つを示す)が、マスタ100に対して書込要求を送信する(図11の(1))。書込要求は、ファイルIDとオフセットを含む。書込要求を受信したマスタ100は、ファイルIDとオフセットに基づき、冗長データ位置テーブル121を参照して、要求された書込処理の対象データのデータIDと位置情報とを抽出する。対応するデータIDが冗長データ位置テーブル121に登録されていない場合は、新たなハンドル名を作成して登録する(図11の(2))。
マスタ100はさらに、処理対象リスト122を参照して(図11の(3))、書込対象データのハンドル名が登録されていない場合、書込処理制御を行うデータアクセス部を1つ選択する(図11の(4))。そして、選択したデータアクセス部に書込制御命令を送信する(図11の(5))。データアクセス部から応答を受信する(図11の(6))と、マスタ100は、冗長データ位置テーブル121と処理対象リスト122とを更新し(図11の(7))、更新後のバージョン番号をデータアクセス部に通知する(図11の(8))。その後、マスタ100は、クライアント400に書込処理の対象データのデータIDと、対応する位置情報とを送信する(図11の(9))。
クライアント400は、書込要求に含めたファイルIDおよびオフセット(図11の(1)参照)と、書込むデータと、マスタ100から受信したデータIDおよび位置情報(図11の(9))と、クライアント400において一意となるよう付与したメッセージIDと、を図8のステップS803と同様の基準で選択したデータアクセス部に送信する(図11の(10))。情報を受信したデータアクセス部は、位置情報を参照して、他のデータアクセス部が位置情報に含まれていれば、自身の情報を位置情報から削除した上で、当該他のデータアクセス部に受信した情報を送信する(図11の(11))。情報を受信した他のデータアクセス部も同様の処理を実行する(図11の(12))。
その後、クライアント400は、書込制御を行うデータアクセス部(図11の(4)参照)に書込実行命令を送信する(図11の(13))。書込実行命令を受信したデータアクセス部は、データを配下のディスクに書き込んだ上で、書込実行命令を位置情報に含まれていた他のデータアクセス部(複数あれば全てに)送信する(図11の(14))。データが該当する全てのディスクに書き込まれると、書込制御を行うデータアクセス部に他のデータアクセス部から完了応答が送信される(図11の(15))。書込制御を行うデータアクセス部は、全ての完了応答を受信すると、クライアントに完了応答を送信する(図11の(16))。正常時の書込処理はこのようにして完了する。
[読出処理時のデータ配置制御処理の流れの一例]
図12は、第2の実施形態に係るデータ配置制御部110による、読出処理時のデータ配置制御処理の流れの一例を示すフローチャートである。図12を参照し、第2の実施形態に係るマスタ100における、読出処理時のデータ配置制御処理の流れの一例につき説明する。
まず、たとえばクライアント400Aがマスタ100に読出要求を送信する。なお、読出要求は後述する比較部412によっても送信される。この場合の処理も以下と同様である。読出要求は、読み出す対象ファイルのファイルIDと、読み出す対象ファイルの終端位置を示すオフセット「Z」と、を含む。マスタ100のデータ配置制御部110は、読出要求を受信する(ステップS1201)と、読出要求に含まれるファイルIDとオフセット「Z」とを抽出する。そして、データ配置制御部110は、抽出した情報に基づき、当該ファイルの何番目のブロックからの読み出しを行うのかを特定する(ステップS1202)。この処理は図6のステップS602と同様である。
次に、データ配置制御部110は、冗長データ位置テーブル121から、特定したブロックに対応するブロックデータのデータIDを取得することを試みる(ステップS1203)。データIDを取得できなかった場合(ステップS1203、否定)、データ配置制御部110は、読出要求を送信したクライアント400A(要求元)に対して、読出処理に失敗した旨を通知して(ステップS1204)、処理を終える。他方、データIDを取得できた場合(ステップS1203、肯定)、データ配置制御部110は、次に、当該データIDに対応する位置情報を、冗長データ位置テーブル121から取得することを試みる(ステップS1205)。位置情報を取得できなかった場合(ステップS1205、否定)は、データIDを取得できなかった場合(ステップS1203、否定)と同様に、クライアント400Aに読出処理に失敗した旨を通知して(ステップS1204)、処理を終える。
位置情報を取得できた場合(ステップS1205、肯定)は、データ配置制御部110は、冗長データ位置テーブル121から取得したデータID(ステップS1203)および位置情報(ステップS1205)を、クライアント400A(要求元)に送信する(ステップS1206)。そして、データ配置制御部110は、送信処理が成功したか否かを判定する(ステップS1207)。たとえば、クライアント400Aから受信応答を受け取ることによって、成功したか否かを判定すればよい。
送信処理が成功したと判定した場合(ステップS1207、肯定)、データ配置制御部110は、処理を終える。他方、送信処理が失敗したと判定した場合(ステップS1207、否定)、データ配置制御部110は、送信処理の失敗回数がN回(Nは1以上の自然数)以下であるか否かを判定する(ステップS1208)。N回以下であると判定した場合(ステップS1208、肯定)、データ配置制御部110は、ステップS1206に戻って再び情報を要求元に送信する。他方、N回以下ではないと判定した場合(ステップS1208、否定)、データ配置制御部110は、そのまま処理を終える。ここで、Nはリトライ数の上限値として予め定めておけばよい。
[読出部による読出処理の流れの一例]
図13は、第2の実施形態に係る読出部による読出処理の流れの一例を示すフローチャートである。図13を参照し、読出部(たとえば403A)による読出処理の流れの一例を説明する。
まず、読出部403Aは、アプリケーション実行部401Aからデータを読み出すファイルIDを取得する(ステップS1301)。次に、読出部403Aは、アプリケーション実行部401Aから読み出すデータのオフセットと、データ長を取得する(ステップS1302)。次に、読出部403Aは、データ配置制御部110から、取得したファイルID、オフセットおよびデータ長に基づき、読み出すデータを保持するブロックのデータIDと、当該データIDに対応付けられた位置情報を取得する(ステップS1303)。データIDと、当該データIDに対応付けられた位置情報と、を取得する際のデータ配置制御部110の処理が、図12の処理にあたる。
次に、読出部403Aは、データ配置制御部110から取得した位置情報のうち最も近いデータアクセス部を1つ選択する(ステップS1304)。このとき、読出部403Aは、図8のステップS803と同様の基準でデータアクセス部を選択すればよい。
そして、読出部403Aは、選択したデータアクセス部に読出命令を送信してデータを読み出す(ステップS1305)。読出命令は、当該処理でアプリケーション実行部401Aが指定したデータを読み出す命令である。
読出部403Aは、読み出したデータをアプリケーション実行部401Aに送信する(ステップS1306)。これによって、読出処理が完了する。
[データアクセス部における読出実行処理の流れの一例]
図14は、第2の実施形態に係るデータアクセス部における読出実行処理の流れの一例を示すフローチャートである。図14を参照し、図13のように読出部403Aから読出命令があった場合のデータアクセス部における処理の流れの一例を説明する。
まず、データアクセス部、たとえばデータアクセス部201Aは、読出部403Aから読出命令を受信する(ステップS1401)。データアクセス部201Aは、読出命令に応じて、配下のディスクから該当するデータを読み出す(ステップS1402)。そして、データアクセス部201Aは、読み出したデータを読出部403Aに送信する(ステップS1403)。これによってデータアクセス部における読出実行処理が終了する。
[異常終了時の冗長データの状態]
図15は、データアクセス部が、書込処理中に異常終了した場合の冗長データの状態を説明するための図である。図15を参照して、書込処理が異常終了した場合に発生しうる冗長データの状態について説明する。
たとえば、図10のステップS1005においてデータアクセス部201Aが他のデータアクセス部からの命令成功応答を受信しなかった場合、他のデータアクセス部において冗長データの正常な書込が完了していない場合が考えられる。また、図10の処理を実行する書込制御を実行するデータアクセス部が、他のデータアクセス部に書込命令を送信(ステップS1003、図10)した後に何らかの理由で停止した場合、当該データアクセス部は、外部からアクセス不可能な状態となる。また、他のデータアクセス部は書込が成功したか否かの応答を当該データアクセス部に送信することができないため、これらのデータアクセス部において冗長データの書込が成功したか否かを、外部から知ることができない。
図15に示すように、ファイル「A」のデータを3つのブロックに分割して、データID「a33」の冗長データを3つのディスクに格納しようとした場合を考える。この場合、最初に書込を実行しようとしたサーバが停止すると、当該サーバに対応するディスクに冗長データが書き込まれたのか否かは不明であり、また当該ディスクにはデータアクセスすることができなくなる。この状態を図15の(1)に示す。このようにサーバが停止して書込の成否が不明になった場合、冗長データ位置テーブル121においては、データIDに対応して格納されていたサーバの位置情報が削除される。
また、停止したサーバのデータアクセス部に対して書込の成否を通知するデータアクセス部については、書込が成功したのか否かを知ることができない。したがって、これらのデータアクセス部が制御する書き込みデータの状態は、図15の(2),(3)に示すようになる。
[データ整合処理の流れの一例]
図16は、第2の実施形態に係るデータ整合装置410におけるデータ整合処理の流れの一例を示すフローチャートである。図16を参照し、第2の実施形態に係るデータ整合装置410におけるデータ整合処理の流れの一例を説明する。
まず、クライアント400がデータ整合処理を実行しようとする場合、整合要求を生成する。データ整合装置410(比較部412)は、生成された整合要求を受け取る(ステップS1601)。整合要求は、たとえば、データアクセス部201A,201B,201Cのいずれかにおいて、データの書込処理が正常に終了せず、書込要求の要求元であるクライアント400A,400B,400Cのいずれかに、書込完了の通知が送信されなかった場合等に、クライアント400A,400B,400Cが生成する。クライアント400A,400B,400Cではアプリケーション実行部401A,401B,401Cが、書込対象データの重要性や処理の内容に応じて、整合要求を送るか否かを判断すればよい。整合要求は、整合の対象となるファイルIDを含む。整合要求はまた、指定するファイルIDの末尾ブロックのデータ長を揃える要求である。
整合要求を受けたデータ整合装置410は、冗長データ位置テーブル121から、整合要求に含まれるファイルIDで書き込まれているデータブロックのうち、末尾のブロックに対応するデータIDと、当該データIDに対応付けられている位置情報の取得を試みる(ステップS1602)。データ整合装置410は、データIDと位置情報を取得できなかった場合(ステップS1602、否定)は、そのままデータ整合処理を終了する。なお、データIDと位置情報の取得は図13に示す手順と同様に行えばよい。
他方、データ整合装置410は、データIDと位置情報を取得できた場合(ステップS1602、肯定)、次に、取得した位置情報の中に複数のデータアクセス部が含まれているか否かを判定する(ステップS1603)。
そして、複数のデータアクセス部が含まれていない(ステップS1603、否定)と判定した場合、そのままデータ整合処理を終了する。他方、複数のデータアクセス部が含まれている(ステップS1603、肯定)と判定した場合、比較部412は、各データアクセス部が制御するディスクに格納された、整合要求(具体的には、ステップS1062)によって特定されたデータIDに対応するデータブロックのデータ長を取得する(ステップS1604)。データ長を取得できなかった場合(ステップS1605、否定)は、再びステップS1602に戻る。これに対して、データ長を取得できた場合(ステップS1605、肯定)は、次に比較部412は、複数のデータブロックのデータ長がすべて一致するか否かを判定する(ステップS1606)。比較部412は、データ長が一致したと判定した場合(ステップS1606、肯定)、データ整合処理を終了する。これに対して、データ長が一致しないと判定した場合(ステップS1606、否定)、比較部412は、処理を同一化部413に渡し、同一化部413が同一化処理を実行する(ステップS1607)。同一化処理については、詳しく後述する。同一化処理が完了すると、データ整合処理は終了する。
[同一化処理の流れの一例]
図17は、第2の実施形態に係るデータ整合装置410における同一化処理の流れの一例を示す図である。図17を参照し、同一化部413による同一化処理の流れの一例を説明する。なお、図17の例では、比較部412が比較した冗長データの数は2であるとする。
まず、比較部412が、複数(2つ)のデータのデータ長が一致しないと判定した場合(図16のステップS1606、否定)、同一化部413は、比較部412が比較した2つのデータブロックのデータ長のうち、短い方のデータ長を選択する(ステップS1701)。ここでは、比較した2つのデータブロックをそれぞれ「データA」、「データB」と呼ぶ。そして、同一化部413は、選択したデータ長がデータAのものであるか否かを判定する(ステップS1702)。選択したデータ長がデータBのものであると判定した場合(ステップS1702、否定)、同一化部413は、データAのデータ長をデータBに合わせるように、データAを切り詰める(ステップS1703)。他方、選択したデータ長がデータAのものであると判定した場合(ステップS1702、肯定)、同一化部413は、データBのデータ長をデータAに合わせるように、データBの長さを切り詰める(ステップS1704)。そして、同一化部413は、同一化処理が完了した旨を、整合要求の要求元に通知する(ステップS1705)。
同一化部413が、同一化処理を行う際は、図6に示したデータ配置制御処理と同様の処理が実行される。すなわち、同一化部413は、データ配置制御部110に対して、データ長を揃える対象データブロックを取得するため、ファイルIDと、負数を指定したオフセットと、を含む命令を送信する。データは位置制御部110では、オフセットに負数を指定した場合は、ファイルの末尾ブロックが指定されたことと同意であると判定する。そのため、命令に応じてデータ配置制御部110が、指定したファイルIDのファイル末尾のデータIDと位置情報を同一化部413に送信するとともに、データアクセス部に制御命令を送る。その後の処理は、図6に例示したものと同様である。
なお、データ整合処理を行った場合の読出処理も図13、図14に示した処理と同様に実行される。ただし、データアクセス部のいずれかの異常終了等により、ディスクがアクセスできない状態になっている場合は、冗長データ位置テーブル121の位置情報からは当該データアクセス部の情報が削除されているため、読出部が取得できる位置情報の内容が通常とは変更されている。また、データ整合処理の結果、通常の書込処理時と同様に冗長データ位置テーブル121や処理対象リスト122が更新されている。
[第2の実施形態の効果]
このように第2の実施形態に係るデータ整合システム1は、1以上のクライアントとネットワークを介して接続されるシステムであって、同一のデータの複製である冗長データをそれぞれ格納する複数の記憶装置と、複数の記憶装置に格納される冗長データへのアクセスを制御し、それぞれ複数の記憶装置の1つに接続される複数のサーバと、クライアントからの要求に応じて、複数の記憶装置それぞれに格納される、冗長データのデータ長を比較する比較部412と、比較部412が冗長データのデータ長が同一ではないと判定した場合に、複数の記憶装置に格納された冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化部413と、を備える。このため、書込処理が異常終了した場合であっても、上位アプリケーション側の選択に応じて、冗長データのデータ長を揃えることができる。したがって、異なる記憶装置に格納される冗長データ相互間で不整合が生じることが防止されるとともに、データの信頼性を向上させることができる。また、上位アプリケーションは、異常終了した書込処理の対象データの特徴に応じて、データ整合処理の要否を判定した上で、整合要求を発行することができ、異常終了時に自動的に再書き込みを行う等の対処法に比べて、上位アプリケーションにかかる負荷を減じて、処理性能の低下を抑制することができる。
また、第2の実施形態に係るデータ整合システム1においては、複数の記憶部はそれぞれ、同一のファイルデータを固定長のブロックに分割し同一のデータブロックを複製して得た前記冗長データを格納し、比較部412は、データブロックの識別子と、当該データブロックの格納先として指定される複数の記憶部の中から選択された2以上の記憶部の位置情報と、を対応付けて記憶する冗長データ位置テーブル121を参照して、同一のデータブロックに対応づけて記憶される2以上の記憶部の冗長データのうち末尾のデータブロックのデータ長を比較する。このため、ファイル末尾のブロックの冗長データ間でデータ長が一致している場合は、データ長を揃える処理を実行しない。したがって、チェックサム等を用いて冗長データ間の不一致を検出する場合と比較して、短い処理時間で上位アプリケーションに応答を返すことができる。また、上位アプリケーションは、データ整合処理を実行するか否かを選択するのみで冗長データの整合性を維持することができ、処理負荷が低減される。また、書込処理が異常終了した場合には自動的にデータ整合処理を実行するものとしておけば、アプリケーション実行部自体が停止した場合でも、冗長データ間の整合性を維持することができる。
[第3の実施形態]
これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。以下に、その他の実施形態を説明する。
[システム構成]
上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、上記実施形態の説明においては、クライアント400Aがアプリケーション実行部401A、書込部402A、読出部403A、データ整合装置410Aを備えるものとして説明したが、これらの機能の一部をマスタ100に組み入れてもよい。たとえば、書込命令、読出命令、またはデータ整合命令はマスタ100のデータ配置制御部110がデータアクセス部201A,201B,201Cに対して送信するように構成してもよい。また、書込部402A,402B,402C、読出部403A,403B,403C、またはデータ整合装置410A,410B,410Cの機能の一部をサーバ200A,200B,200Cのデータアクセス部201A,201B,201Cが実行してもよい。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、図3に示す例では、書込部402A、かつ、読出部403A、かつ、データ整合装置410Aを、クライアント400Aの一部として図示したが、書込部402A、読出部403A、および、データ整合装置410Aの機能の一部を、マスタ100に組み込んでもよい。たとえば、クライアント400Aの動作または機能として説明した動作または機能は、マスタ100に組み入れることができる。
[プログラム]
図18は、データ整合システム1による一連の処理を実行するプログラムであるデータ整合プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。図18に例示するように、コンピュータ3000は、例えば、メモリ3010と、CPU(Central Processing Unit)3020と、ハードディスクドライブ3080と、ネットワークインタフェース3070とを有する。コンピュータ3000の各部はバス3100によって接続される。
メモリ3010は、図18に例示するように、ROM3011及びRAM3012を含む。ROM3011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。
ここで、図18に例示するように、ハードディスクドライブ3080は、例えば、OS3081、アプリケーションプログラム3082、プログラムモジュール3083、プログラムデータ3084を記憶する。すなわち、開示の技術に係るデータ整合プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール3083として、例えばハードディスクドライブ3080に記憶される。例えば、データ配置制御部110、データ整合装置410、および、データアクセス部における処理と同様の情報処理を実行する手順各々が記述されたプログラムモジュール3083が、ハードディスクドライブ3080に記憶される。
また、記憶部120に記憶されるデータのように、データ整合プログラムによる情報処理に用いられるデータは、プログラムデータ3084として、例えばハードディスクドライブ3080に記憶される。そして、CPU3020が、ハードディスクドライブ3080に記憶されたプログラムモジュール3083やプログラムデータ3084を必要に応じてRAM3012に読み出し、各種の手順を実行する。
なお、データ整合プログラムに係るプログラムモジュール3083やプログラムデータ3084は、ハードディスクドライブ3080に記憶される場合に限られない。例えば、プログラムモジュール3083やプログラムデータ3084は、着脱可能な記憶媒体に記憶されてもよい。この場合、CPU3020は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、更新プログラムに係るプログラムモジュール3083やプログラムデータ3084は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。この場合、CPU3020は、ネットワークインタフェース3070を介して他のコンピュータにアクセスすることで各種データを読み出す。
[その他]
なお、本実施例で説明したデータ整合プログラムは、インターネット等のネットワークを介して配布することができる。また、データ整合プログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM(Compact Disk Read Only Memory)、MO(Magnetooptic Disc)、DVD(Digital Versatile Disc)などのコンピュータで読取可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
1 データ整合システム
10,410A,410B,410C データ整合装置
11 比較部
12 同一化部
100 マスタ
110 データ配置制御部
120 記憶部
121 冗長データ位置テーブル
122 処理対象リスト
130 入出力部
200A,200B,200C サーバ
201A,201B,201C データアクセス部
300A,300B,300C ディスク
400A,400B,400C クライアント
401A,401B,401C アプリケーション実行部
402A,402B,402C 書込部
403A,403B,403C 読出部
412A,412B,412C 比較部
413A,413B,413C 同一化部
3000 コンピュータ
3010 メモリ
3011 ROM
3012 RAM
3020 CPU
3070 ネットワークインタフェース
3080 ハードディスクドライブ
3081 OS
3082 アプリケーションプログラム
3083 プログラムモジュール
3084 プログラムデータ
3100 バス

Claims (6)

  1. 複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較する比較部と、
    前記比較部が前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化部と、
    を備えるデータ整合装置。
  2. 前記複数の記憶部はそれぞれ、同一のファイルデータを固定長のブロックに分割し同一のデータブロックを複製して得た前記冗長データを格納し、
    前記比較部は、前記データブロックの識別子と、当該データブロックの格納先として指定される前記複数の記憶部の中から選択された2以上の記憶部の位置情報と、を対応付けて記憶する冗長データ位置テーブルを参照して、同一のデータブロックに対応づけて記憶される前記2以上の記憶部の前記冗長データのうち末尾のデータブロックのデータ長を比較することを特徴とする請求項1に記載のデータ整合装置。
  3. 複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較する比較工程と、
    前記比較工程において前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化工程と、
    を備えるデータ整合方法。
  4. 前記複数の記憶部は、同一のファイルデータを固定長のブロックに分割し同一のデータブロックを複製して得た前記冗長データをそれぞれ格納し、
    前記比較工程は、前記データブロックの識別子と、当該データブロックの格納先として指定される前記複数の記憶部の中から選択された2以上の記憶部の位置情報と、を対応付けて記憶する冗長データ位置テーブルを参照して、前記冗長データ位置テーブル中に、同一のデータブロックに対応づけて記憶される前記2以上の記憶部の前記冗長データのうち末尾のブロックのデータ長を比較することを特徴とする請求項3に記載のデータ整合方法。
  5. 複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較する比較手順と、
    前記比較手順において前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化手順と、
    をコンピュータに実行させることを特徴とするデータ整合プログラム。
  6. 前記複数の記憶部は、同一のファイルデータを固定長のブロックに分割し同一のデータブロックを複製して得た前記冗長データをそれぞれ格納し、
    前記比較手順は、前記データブロックの識別子と、当該データブロックの格納先として指定される前記複数の記憶部の中から選択された2以上の記憶部の位置情報と、を対応付けて記憶する冗長データ位置テーブルを参照して、前記冗長データ位置テーブル中に、同一のデータブロックに対応づけて記憶される前記2以上の記憶部の前記冗長データのうち末尾のブロックのデータ長を比較することを特徴とする請求項5に記載のデータ整合プログラム。
JP2012234965A 2012-10-24 2012-10-24 データ整合装置、データ整合方法およびデータ整合プログラム Active JP5475085B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012234965A JP5475085B1 (ja) 2012-10-24 2012-10-24 データ整合装置、データ整合方法およびデータ整合プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012234965A JP5475085B1 (ja) 2012-10-24 2012-10-24 データ整合装置、データ整合方法およびデータ整合プログラム

Publications (2)

Publication Number Publication Date
JP5475085B1 true JP5475085B1 (ja) 2014-04-16
JP2014085883A JP2014085883A (ja) 2014-05-12

Family

ID=50749833

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012234965A Active JP5475085B1 (ja) 2012-10-24 2012-10-24 データ整合装置、データ整合方法およびデータ整合プログラム

Country Status (1)

Country Link
JP (1) JP5475085B1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016170619A1 (ja) * 2015-04-22 2016-10-27 株式会社日立製作所 計算機システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001350645A (ja) * 2000-06-06 2001-12-21 Mitsubishi Electric Corp 計算機システム
JP2004005628A (ja) * 2003-05-01 2004-01-08 Mitsubishi Electric Corp 二重化メモリシステム
JP3790756B2 (ja) * 2003-09-01 2006-06-28 株式会社東芝 ディスクアレイ装置、ディスク制御装置及びディスクアレイのデータ障害を復旧する方法
JP4236677B2 (ja) * 2006-09-20 2009-03-11 株式会社日立製作所 Cdpを用いたリカバリ方法

Also Published As

Publication number Publication date
JP2014085883A (ja) 2014-05-12

Similar Documents

Publication Publication Date Title
KR102378367B1 (ko) 분산 파일 시스템
US9430484B2 (en) Data redundancy in a cluster system
US9607001B2 (en) Automated failover of a metadata node in a distributed file system
JP5968554B2 (ja) ディザスタリカバリ仮想化の方法及び装置
US9904689B2 (en) Processing a file system operation in a distributed file system
US10178168B2 (en) Read-after-write consistency in data replication
KR102441997B1 (ko) 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법
US7836017B1 (en) File replication in a distributed segmented file system
US20100138687A1 (en) Recording medium storing failure isolation processing program, failure node isolation method, and storage system
US20110066595A1 (en) Database server, replication server and method for replicating data of a database server by at least one replication server
JP2005196683A (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
WO2015085530A1 (zh) 数据复制方法及存储系统
JP2010527087A (ja) データベースマネジメントシステム(dbms)におけるデータ複製方法およびシステム
JP2011191933A (ja) ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法
JP2007128335A (ja) レプリケーション調停装置と方法並びにプログラム
WO2015145661A1 (ja) ストレージシステム及び重複データ排除方法
JP2007220103A (ja) 結合セッション環境におけるセッションのクラスタのためのセッション情報の統合方法、システム、およびプログラム
JP2021189520A (ja) 分散ファイルシステム、及び分散ファイル管理方法
JP2003015933A (ja) 記憶装置のファイルレベルリモートコピー方法
JP5475085B1 (ja) データ整合装置、データ整合方法およびデータ整合プログラム
CN114063896A (zh) 存储系统、协作方法以及程序
US10671579B2 (en) Information processing apparatus and storage system
JP6181216B2 (ja) 通信制御装置、通信制御方法、プログラムおよび通信システム
US9582384B2 (en) Method and system for data replication
KR20150010242A (ko) 비대칭 파일 시스템의 데이터 복제 방법

Legal Events

Date Code Title Description
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: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140205

R150 Certificate of patent or registration of utility model

Ref document number: 5475085

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150