(57)【特許請求の範囲】
【請求項１】
データを記憶する複数の記憶装置と、
ネットワークを介して接続する任意の第１のノードの指示に応じて、所定の数の前記記憶装置に対して同一のデータの書き込みを行なう複数の第２のノードと、
前記第２のノード毎に、該第２のノードと１または２以上の前記記憶装置とを接続する中継網と、
データの所在を管理し、前記第１のノードの問合せに応じて、前記第１のノードの所望のデータの所在を前記第１のノードに通知する第３のノードと、
を備え、
前記第２のノードは、前記中継網を介して、前記所定の数の前記記憶装置に対して同一のデータの書き込みを行ない、
前記第３のノードは、前記記憶装置に記憶するデータ毎に、該データを記憶した前記記憶装置と、該記憶装置と接続する前記第２のノードと、を対応付けた管理情報に基づいて、前記データの所在を管理し、前記第１のノードが所望するデータの書き込み先として、前記所定の数の前記記憶装置と、該所定の数の前記記憶装置全てと接続している前記第２のノードと、を選択して前記第１のノードに通知する、
ことを特徴とするファイルシステム。
【請求項２】
前記第３のノードは、脱退対象の第２のノードと接続している前記記憶装置を、前記脱退対象の第２のノード以外の他の第２のノードと前記中継網を介して接続させる、
ことを特徴とする請求項１に記載のファイルシステム。
【請求項３】
前記第３のノードは、前記記憶装置のうち使用率が最大の第１の記憶装置と前記使用率が最小の第２の記憶装置とに前記中継網を介して接続する前記第２のノードに対して、前記第１の記憶装置から前記第２の記憶装置に一定量のデータの移動を指示する、
ことを特徴とする請求項１に記載のファイルシステム。
【請求項４】
前記第２のノードと前記中継網を介して接続する記憶装置は、前記第２のノード自身が前記第３のノードに対するインタフェースとして機能する第１の記憶装置と、他の前記第２のノードが前記第３のノードに対するインタフェースとして機能する第２の記憶装置と、を含み、
前記第３のノードからデータの書き込みの指示を受けると、自ノードと接続する第１の記憶装置に書き込み対象のデータを書き込むとともに、自ノードと接続する第２の記憶装置であって、前記第３のノードが書き込み先として指定した他の第２のノードと接続する第１の記憶装置、に対して前記中継網を介して前記書き込み対象のデータを書き込む、
ことを特徴とする請求項１に記載のファイルシステム。
【請求項５】
データを記憶する記憶装置と、前記記憶装置に対してデータの書き込みを行なう第２のノードと、データの所在を管理する第３のノードと、を含むファイルシステムを制御する方法において、
前記第３のノードが、ネットワークを介して接続する任意の第１のノードの問合せに応じて、前記第１のノードの所望のデータの所在を前記第１のノードに通知し、
前記第２のノードが、前記第１のノードの指示に応じて、前記第２のノードと１または２以上の前記記憶装置とを接続する中継網を介して、該中継網と接続する所定の数の記憶装置に対して同一のデータを書き込み、
前記第３のノードが、前記記憶装置に記憶するデータ毎に、該データを記憶した前記記憶装置と、該記憶装置と接続する前記第２のノードと、を対応付けた管理情報に基づいて、前記データの所在を管理し、前記第１のノードが所望するデータの書き込み先として、前記所定の数の前記記憶装置と、該所定の数の前記記憶装置全てと接続している前記第２のノードと、を選択して前記第１のノードに通知する、
処理を行なう方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記憶するファイルシステムに関する。
【背景技術】
【０００２】
従来、複数のコンピュータノードにデータを分散して配置する分散ファイルシステムが知られている。この分散ファイルシステムは、データを分散して配置することで、負荷分散、大容量化および広帯域化などを実現している。
【０００３】
複数のディスク制御装置と複数のディスク駆動装置とをネットワーク又はスイッチで接続する記憶サブシステムが知られている。この記憶サブシステムは、ディスク制御装置の負荷に応じてディスク制御装置間で管理するボリウムを交代させる手段とボリウムの交代に応じてホストからディスク制御装置へのアクセスパスを変更する手段とボリウム番号とアクセスパスとの対応を変換する手段とを備える。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２９６３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
図１は、分散ファイルシステム１００の書き込み処理を説明する図である。
分散ファイルシステム１００は、ネームノード１１０と、複数のデータノード１２０−０、１２０−１、・・・、および１２０−ｎと、を備える。そして、ネームノード１１０と、複数のデータノード１２０−０、１２０−１、・・・、および１２０−ｎと、は、互いにネットワーク１５０で接続されている。ｎは自然数である。以下では、データノード１２０−０、１２０−１、・・・、および１２０−ｎのうち１または２以上の任意のデータノードを「データノード１２０」という。
【０００６】
ネームノード１１０は、データブロックと、データブロックが記憶されているデータノード１２０と、の対応を管理する。なお、データブロックが記憶されているデータノード１２０とは、データブロックが記憶されているＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を含むデータノード１２０のことをいう。
【０００７】
例えば、分散ファイルシステム１００にネットワーク１５０を介して接続するクライアントノード１３０が、分散ファイルシステム１００に書き込みを行なう場合、クライアントノード１３０は、ネームノード１１０にデータブロックを書き込むデータノード１２０を問い合わせる。すると、ネームノード１１０は、データブロックを書き込むデータノード１２０を複数選択してクライアントノード１３０に通知する。
【０００８】
クライアントノード１３０は、ネームノード１１０が指定したデータノード１２０の１つ、例えば、データノード１２０−０に対してデータブロックの書き込みを指示する。すると、データノード１２０−０は、データブロックを自装置のＨＤＤに書き込む。そして、データノード１２０−０は、クライアントノード１３０から指定された他のデータノード１２０、例えば、データノード１２０−１およびデータノード１２０−ｎに対して、自装置に書き込んだデータブロックと同じデータブロックの書き込みを指示する。このようにして、データノード１２０−０に書き込んだデータブロックのレプリカ（ｒｅｐｌｉｃａ）が、他のデータノード１２０−１およびデータノード１２０−ｎに作成される。
【０００９】
レプリカを作成する場合、データノード１２０間では、レプリカを作成する数だけネットワーク１５０を介してデータ通信が行なわれることになる。この場合、レプリカ作成のためにネットワーク帯域が使用されるため、クライアントノード１３０から分散ファイルシステム５００へのデータブロックの書き込みの速度が低下する。
【００１０】
また、分散ファイルシステム１００は、各データノード１２０に記憶されているデータブロックに偏りが生じる、データノード１２０の脱退や追加が生じる、などすると、データブロックの再配置を行なう。このデータブロックの再配置を「リバランシング（ｒｅｂａｌａｎｃｉｎｇ）処理」という。
【００１１】
リバランシングを行なう場合、図２に示すように、データノード１２０間でのデータブロックの移動が行なわれる。図２には、データノード１２０−０からネットワーク１５０を介してデータノード１２０−ｎにデータが移動される場合を例示している。
【００１２】
図１で説明したデータブロックの書き込み処理と同様に、データノード１２０間でのデータブロックの移動のためにネットワーク帯域が使用されるため、クライアントノード１３０から分散ファイルシステム５００へのデータブロックの書き込み等の速度が低下する。
【００１３】
また、分散ファイルシステム１００は、データノード１２０が故障すると、フェイルオーバー処理を行なう。このフェイルオーバー処理で、分散ファイルシステム１００は、故障したデータノード１２０に記憶されていたデータブロックのレプリカを、他のデータノード１２０に再作成する。図３は、故障したデータノード１２０−０に記憶されていたデータブロックのレプリカを、そのレプリカを記憶しているデータノード１２０−１から、他のデータノード１２０−ｎにネットワーク１５０を介してコピーすることによりレプリカを再作成している場合を示している。
【００１４】
この場合も、図１で説明したデータブロックの書き込み処理と同様に、レプリカの再作成の移動のためにネットワーク帯域が使用されるので、クライアントノード１３０から分散ファイルシステム５００へのデータブロックの書き込み等の速度が低下する。
【００１５】
本ファイルシステムは、１つの側面では、ファイルシステムへの書き込みを高速に行なうことができるファイルシステムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本ファイルシステムの１つの観点によれば、本ファイルシステムは、以下の構成要素を備える。
記憶装置は、データを記憶する。
【００１７】
第２のノードは、ネットワークを介して接続する任意の第１のノードの指示に応じて、所定の数の前記記憶装置に対して同一のデータの書き込みを行なう。
中継網は、前記第２のノード毎に、該第２のノードと１または２以上の前記記憶装置とを接続する。
【００１８】
第３のノードは、データの所在を管理し、前記第１のノードの問合せに応じて、前記第１のノードの所望のデータの所在を前記第１のノードに通知する。
さらに、前記第２のノードは、前記中継網を介して、前記所定の数の前記記憶装置に対して同一のデータの書き込みを行なう。
【発明の効果】
【００１９】
本ファイルシステムは、１つの態様では、ファイルシステムへの書き込みを高速に行なうことができるファイルシステムを提供することができる。
【図面の簡単な説明】
【００２０】
【図１】分散ファイルシステム１００の書き込み処理を説明する図である。
【図２】分散ファイルシステム１００のデータ移動処理を説明する図である。
【図３】分散ファイルシステム１００のフェイルオーバー処理を説明する図である。
【図４】ファイルシステム４００の概要を説明する図である。
【図５】分散ファイルシステム５００の構成例を示す図である。
【図６】ＤＡＳネットワーク５４０の一例を説明する図である。
【図７】デバイス管理情報７００の一例を示す図である。
【図８】ゾーンパミッションテーブル８００の一例を示す図である。
【図９】ネームノード５１０が使用する管理情報９００の一例を示す図である。
【図１０】管理情報９００の説明に使用する分散ファイルシステム５００の図である。
【図１１】データブロック書き込み処理時の分散ファイルシステム５００の動作の概要を説明する図である。
【図１２】データブロック書き込み時の分散ファイルシステム５００の動作を示すフローチャートである。
【図１３】データブロック読み出し処理時の分散ファイルシステム５００の動作の概要を説明する図である。
【図１４】データブロック読み出し時の分散ファイルシステム５００の動作を示すフローチャートである。
【図１５】データノード５２０の脱退処理について説明する図である。
【図１６】分散ファイルシステム５００の脱退処理を示すフローチャートである。
【図１７】分散ファイルシステム５００のリバランシング処理を示すフローチャートである。
【図１８】分散ファイルシステム１８００の構成例を示す図である。
【図１９】主管理ＨＤＤと副管理ＨＤＤとの接続関係を説明する図である。
【図２０】データブロック管理情報２０００の一例を示す図である。
【図２１】データブロック管理情報２１００の一例を示す図である。
【図２２】ＨＤＤ接続管理情報２２００の一例を示す図である。
【図２３】データブロック書き込み時の分散ファイルシステム１８００の動作を示すフローチャートである。
【図２４】データブロック読み出し時の分散ファイルシステム１８００の動作を示すフローチャートである。
【図２５】分散ファイルシステム１８００の脱退処理を示すフローチャートである。
【図２６】分散ファイルシステム１８００のリバランシング処理を示すフローチャートである。
【図２７】ネームノード５１０の具体的な構成例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態の一例について、図４〜図２７に基づいて説明する。なお、以下に説明する実施形態はあくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図ではない。すなわち、本実施形態は、その趣旨を逸脱しない範囲で、各実施例を組み合わせるなど種々変形して実施することができる。また、図１２、１４、１６、１７、および２３−２６にフローチャートの形式で示した処理手順は、処理の順番を限定する趣旨ではない。したがって、可能な場合には、処理の順番を入れ替えても良いのは当然である。
【００２２】
≪実施例≫
図４は、一実施例に係るファイルシステム４００の概要を説明する図である。
ファイルシステム４００は、記憶装置４１０−０、４１０−１、・・・、および４１０−ｍと、第２のノード４２０−０、４２０−１、・・・、および４２０−ｎと、中継網４３０と、第３のノード４４０と、を備える。ｎおよびｍは自然数である。
【００２３】
また、第２のノード４２０−０、４２０−１、・・・、および４２０−ｎと、第３のノード４４０と、はインターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク４５０を介して互いに通信可能に接続している。
【００２４】
以下では、記憶装置４１０−０、４１０−１、・・・、および４１０−ｍのうち１または２以上の任意の記憶装置を「記憶装置４１０」という。また、第２のノード４２０−０、４２０−１、・・・、および４２０−ｎのうち１または２以上の任意の第２のノードを「第２のノード４２０」という。
【００２５】
記憶装置４１０は、データを記憶する装置である。記憶装置４１０には、例えば、ＨＤＤなどを使用することができる。
第２のノード４２０は、ネットワーク４５０を介して接続する任意の第１のノード４６０の指示に応じて、所定の数の記憶装置４１０に対して同一のデータの書き込みを行なう装置である。第２のノード４２０は、中継網４３０を介して、所定の数の記憶装置４１０に対して同一のデータの書き込みを行なう。
【００２６】
中継網４３０は、第２のノード４２０毎に、第２のノード４２０と１または２以上の記憶装置４１０とを接続する。中継網４３０には、例えば、１または２以上のＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）エキスパンダ（ｅｘｐａｎｄｅｒ）などを使用することができる。
【００２７】
第３のノード４４０は、ファイルシステム４００に記憶されているデータの所在を管理する装置である。第３のノード４４０は、第１のノード４６０の問合せに応じて、第１のノード４６０の所望のデータの所在を第１のノード４６０に通知する。第３のノード４４０が管理するデータの所在には、例えば、データを記憶する記憶装置４１０や、データを記憶する記憶装置４１０と中継網を介して接続する第２のノード４２０などを含むことができる。
【００２８】
以上の構成において、例えば、第１のノード４６０から所望のデータの書き込み先の問合せを受けると、第３のノード４４０は、第１のノード４６０に対して、データの書き込み先の所在を通知する。すると、第１のノード４６０は、第３のノード４４０から通知されたデータの書き込み先の所在に基づいて、第２のノード４２０にデータの書き込みを指示する。
【００２９】
すると、第２のノード４２０は、第１のノード４６０からのデータの書き込み指示にしたがって、所定の数の記憶装置４１０に対してデータの書き込みを行なう。この場合、第２のノード４２０による記憶装置４１０へのデータの書き込みは、ネットワーク４５０を使用せず、中継網４３０を介して行なわれる。そのため、ファイルシステム４００へのデータの書き込み時におけるネットワーク４５０のトラフィックが低く抑えられる。その結果、ファイルシステム４００へのデータの書き込み速度を向上させることができる。
【００３０】
≪その他の実施例≫
図５は、その他の実施例に係る分散ファイルシステム５００の構成例を示す図である。
分散ファイルシステム５００は、ネームノード５１０と、複数のデータノード５２０−０、５２０−１、・・・、および５２０−ｎと、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）ネットワーク５４０と、複数のＨＤＤ５３０−０、５３０−１、・・・、および５３０−ｍと、を備える。
【００３１】
以下では、データノード５２０−０、５２０−１、・・・、および５２０−ｎのうち１または２以上の任意のデータノードを「データノード５２０」という。また、ＨＤＤ５３０−０、５３０−１、・・・、および５３０−ｍのうち１または２以上の任意のＨＤＤを「ＨＤＤ５３０」という。
【００３２】
ネームノード５１０と、複数のデータノード５２０−０、５２０−１、・・・、および５２０−ｎと、は、インターネット、ＬＡＮやＷＡＮなどのネットワーク５６０を介して通信可能に接続されている。また、複数のデータノード５２０−０、５２０−１、・・・、および５２０−ｎと、複数のＨＤＤ５３０−０、５３０−１、・・・、および５３０−ｍと、は、ＤＡＳネットワーク５４０を介して通信可能に接続されている。
【００３３】
ネームノード５１０は、データブロックと、データブロックを記憶するＨＤＤ５３０と、の対応関係を管理する。また、ネームノード５１０は、データノード５２０とＨＤＤ５３０との接続状態を管理する。そして、ネームノード５１０は、必要に応じて、ＤＡＳネットワーク５４０を操作することにより、データノード５２０とＨＤＤ５３０との接続状態を変更する。ネームノード５１０とＤＡＳネットワーク５４０は、イーサネット（Ｅｔｈｅｒｎｅｔ）（登録商標）ケーブルやＲＳ−２３２Ｃケーブルなどの接続線５７０で接続して通信を行なうことができる。
【００３４】
ネームノード５１０は、クライアントノード５５０からの問合せに応じて、データブロックを書き込むＨＤＤ５３０を複数選択する。そして、ネームノード５１０は、選択したＨＤＤ５３０と、選択したＨＤＤに接続しているデータノード１２０と、をクライアントノード５５０に通知する。
【００３５】
ネームノード５１０は、クライアントノード５５０からの問合せに応じて、データブロックが記憶されているＨＤＤ５３０と、そのＨＤＤ５３０に接続しているデータノード５２０と、を選択してクライアントノード５５０に通知する。
【００３６】
ネームノード５１０は、利用者の所定の操作に応じて、リバランシング処理を行なうことができる。このリバランシング処理で、ネームノード５１０は、例えば、移動対象のデータブロックが記憶されているＨＤＤ５３０と、移動対象のデータブロックの移動先のＨＤＤ５３０と、に接続しているデータノード５２０のなかから１つのデータノード５２０を選択する。そして、ネームノード５１０は、選択したデータノード５２０に対して、移動対象のデータブロックの移動を指示する。すると、ＨＤＤ５３０間で、ＤＡＳネットワーク５４０を介したデータブロックの移動が行なわれる。
【００３７】
ネームノード５１０は、利用者の所定の操作に応じて、データノード５２０の脱退処理を行なう。この脱退処理で、例えば、ネームノード５１０は、脱退するデータノード５２０に接続しているＨＤＤ５３０と接続するデータノード５２０の数が所定の数以下の場合、脱退したデータノード５２０に接続していたＨＤＤ５３０に、他のデータノード５２０を新たに接続する。
【００３８】
データノード５２０−０、５２０−１、・・・、５２０−ｎは、それぞれ、ＤＡＳネットワーク５４０を介して、ＨＤＤ５３０−０、５３０−１、・・・、または５３０−ｍのいずれか１つまたは２以上のＨＤＤ５３０と接続する。
【００３９】
データノード５２０は、クライアントノード５５０からの指示にしたがって、ＤＡＳネットワーク５４０を介して接続するＨＤＤ５３０に対して、データブロックの書き込みや読み出しを行なう。
【００４０】
また、データノード５２０は、ネームノード５１０からの指示にしたがって、ＤＡＳネットワーク５４０を介して、または、ネットワーク５６０を介して、ＨＤＤ５３０間でのデータブロックの移動を行なう。
【００４１】
例えば、ＤＡＳネットワーク５４０を介してデータノード５２０と接続しているＨＤＤ５３０間でデータブロックの移動を行なう場合、データノード５２０は、ＤＡＳネットワーク５４０を使用してＨＤＤ５３０間のデータブロックの移動を行なう。
【００４２】
ＤＡＳネットワーク５４０は、例えば、１または２以上のＳＡＳエキスパンダを用いて実現することができる。
図６は、ＤＡＳネットワーク５４０の一例を説明する図である。図６では、ＤＡＳネットワーク５４０として、ＳＡＳエキスパンダ６００を使用している。
ＳＡＳエキスパンダ６００は、複数のポート６１０と、記憶部６２０と、を備える。
【００４３】
図６では、ポート０からポート３１までの３２個のポート６１０を備えるＳＡＳエキスパンダ６００について例示している。各ポート６１０には、データノード５２０またはＨＤＤ５３０が接続される。
【００４４】
各ポート６１０には、ゾーングループ（ｚｏｎｅ  ｇｒｏｕｐ）を識別するゾーングループＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ）を割り当てることができる。そして、このゾーングループＩＤを用いて、ゾーングループ間のポート接続を定義することができる。
【００４５】
ゾーングループＩＤは、デバイス管理情報７００を用いて定義することができる。また、ゾーングループ間のポート接続は、ゾーンパミッションテーブル（ｚｏｎｅ  ｐｅｒｍｉｓｓｉｏｎ  ｔａｂｌｅ）８００を用いて定義することができる。デバイス管理情報７００とゾーンパミッションテーブル８００は、記憶部６２０に記憶することができる。ＳＡＳエキスパンダ６００は、ゾーンパミッションテーブル８００にしたがってポート６１０間を接続する。ネームノード５１０は、ゾーンパミッションテーブル８００を変更することによって、ポート６１０間の接続関係を変更することができる。
【００４６】
図７は、デバイス管理情報７００の一例を示す図である。
デバイス管理情報７００は、ポート６１０を識別するポート番号と、ポート６１０に割り当てられたゾーングループＩＤと、を含む。また、デバイス管理情報７００は、ポート６１０毎に、ポート６１０に接続しているデバイスの識別情報であるデバイスＩＤと、ポート６１０に接続しているデバイスの種別であるデバイス種別と、を含むこともできる。デバイス種類には、ＨＤＤやＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）などを含むことができる。
【００４７】
図８は、ゾーンパミッションテーブル８００の一例を示す図である。
ゾーンパミッションテーブル８００は、接続元のゾーングループＩＤと、接続先のゾーングループＩＤと、を含む。ゾーンパミッションテーブル８００中の「０」は、接続を許可しないことを示している。また、ゾーンパミッションテーブル８００中の「１」は、接続を許可することを示している。
【００４８】
図８では、ゾーングループＩＤ「８」のポート６１０と、ゾーングループＩＤ「１６」のポート６１０と、を接続する設定がされたゾーンパミッションテーブル８００を例示している。なお、図８では、０から１２７をゾーングループＩＤとして使用している場合について例示しているが、ゾーングループＩＤを０から１２７に限定する趣旨ではない。
【００４９】
図９は、ネームノード５１０が使用する管理情報９００の一例を示す図である。
管理情報９００は、データブロックを識別するブロックＩＤと、ブロックＩＤが示すデータブロックが記憶されたＨＤＤ５３０と接続しているデータノード５２０を識別するデータノードＩＤと、含むことができる。さらに、管理情報９００は、ブロックＩＤが示すデータブロックが記憶されたＨＤＤ５３０を識別するＨＤＤ  ＩＤを含むことができる。
【００５０】
図９に示した管理情報９００は、図１０に示す分散ファイルシステム５００の管理情報の一部を示している。図１０に示す分散ファイルシステム５００は、１２台のデータノード＃００−＃１１と３６台のＨＤ＃００−＃３５とを備え、ＨＤＤ＃００−ＨＤＤ＃０８に、ブロックＩＤ＃０−＃２のデータブロックが記憶されている場合の例である。なお、図１０では、説明に必要な構成以外省略してあるが、分散ファイルシステム５００の構成を限定する趣旨ではない。また、説明を簡単にするために、データノード５２０としてデータノード＃００−＃１１を使用し、ＨＤＤ５３０としてＨＤＤ＃００−＃３６を使用した場合の分散ファイルシステム５００を示しているが、データノード数やＨＤＤ数を図１０に示す数に限定する趣旨ではない。図１１、１３および１５についても、図１０と同様の趣旨である。
【００５１】
図１０を参照すると、例えば、ブロックＩＤ＃０のデータブロックが、ＨＤＤ＃００、＃０１および＃０２に記憶されている。そして、ＨＤＤ＃００はデータノード＃００と、ＨＤＤ＃０１はデータノード＃００および＃０１と、ＨＤＤ＃０２はデータノード＃００および＃＃０２と、それぞれ接続している。これらの関係が図９に示した管理情報９００に登録されている。
【００５２】
図１１は、データブロック書き込み処理時の分散ファイルシステム５００の動作の概要を説明する図である。下記（１）〜（３）は、図１１に記載の（１）〜（３）に対応する。
【００５３】
クライアントノード５５０は、書き込み対象のファイルを複数のデータブロックに分割して分散ファイルシステム５００に書き込む。
以下では、クライアントノード５５０がデータブロック０を分散ファイルシステム５００に書き込む場合について説明する。ただし、図１１に示す処理をデータブロック０に対する処理に限定する趣旨ではない。
【００５４】
（１）クライアントノード５５０は、ネームノード５１０に対してデータブロック０の所在を問い合わせる。すると、ネームノード５１０は、管理情報９００から、問合せのあったデータブロック０が記憶されているＨＤＤ５３０と、ＨＤＤ５３０と接続しているデータノード５２０と、を取得してクライアントノード５５０に通知する。
【００５５】
図１１の例では、データブロック０の所在として、データブロック０を記憶しているＨＤＤ＃００−＃０２が、ネームノード５１０からクライアントノード５５０に通知される。また、データブロック０の所在として、ＨＤＤ＃００と接続しているデータノード＃００、ＨＤＤ＃０１と接続している＃００および＃０１、ＨＤＤ＃０２と接続している＃００および＃０２が、ネームノード５１０からクライアントノード５５０に通知される。
【００５６】
（２）クライアントノード５５０は、データブロック０の所在の問合せに対する応答を受信すると、データブロック０が記憶されているＨＤＤ＃００−＃０２と接続しているデータノード＃００に対して、データブロック０の書き込みを要求する。この要求と同時に、クライアントノード５５０は、データブロック０を書き込むＨＤＤ５３０のリスト、図１１の例では、ＨＤＤ＃００−＃０２、を通知する。
【００５７】
（３）データノード＃００は、クライアントノード５５０からデータブロック０の書き込み要求を受けると、データブロック０をクライアントノード５５０が指定したＨＤＤ５３０に書き込む。図１１の例では、データノード＃００は、ＨＤＤ＃００にデータブロック０を書き込む。さらに、データノード＃００は、ＤＡＳネットワーク５４０を介して、データブロック０のレプリカをＨＤＤ＃０１および＃０２にも書き込む。
【００５８】
図１２は、データブロック書き込み時の分散ファイルシステム５００の動作を示すフローチャートである。
クライアントノード５５０は、書き込み対象のファイルを所定のサイズのデータブロックに分割する。そして、クライアントノード５５０は、分散ファイルシステム５００への書き込み処理を開始する（ステップＳ１２００ａ）。なお、図１２では、分散ファイルシステム５００にデータブロック０を書き込む場合の処理について説明する。ただし、図１２に示す処理をデータブロック０に対する処理に限定する趣旨ではない。
【００５９】
クライアントノード５５０は、データブロック０の所在をネームノード５１０に問い合わせる（ステップＳ１２０１ａ）。
一方、ネームノード５１０は、クライアントノード５５０からの問合せを受けると、管理情報９００を参照する（ステップＳ１２０１ｂ）。そして、ネームノード５１０は、管理情報９００から、データブロック０が記憶されている全てのＨＤＤ５３０を選択する（ステップＳ１２０２ｂ）。そして、選択した全てのＨＤＤ５３０と接続するデータノード５２０がない場合、ネームノード５１０は、ＤＡＳネットワーク５４０のゾーンパミッションテーブル８００を操作して、選択した全てのＨＤＤ５３０を同一のデータノード５２０と接続する。さらに、ネームノード５１０は、管理情報９００から、ステップＳ１２０２ｂで選択した全てのＨＤＤ５３０と接続しているデータノード５２０を選択する（ステップＳ１２０３ｂ）。
【００６０】
なお、クライアントノード５５０から問合せのあったデータブロック０が、管理情報９００に登録されていない場合、ネームノード５１０は、あらかじめ設定されたレプリカの数＋１だけ任意のＨＤＤ５３０を選択する。そして、ネームノード５１０は、選択した全てのＨＤＤ５３０と接続するデータノード５２０を選択する。そして、ネームノード５１０は、選択したＨＤＤ５３０とデータノード５２０をデータブロック０と対応付けて管理情報９００に登録する。
【００６１】
ＨＤＤ５３０とデータノード５２０を選択すると、ネームノード５１０は、クライアントノード５５０に対して、データブロック０の所在を通知する（ステップＳ１２０４ｂ）。この所在には、ステップＳ１２０２ｂで選択した１または２以上のＨＤＤ５３０のＨＤＤ  ＩＤと、ステップＳ１２０３ｂで選択したデータノード５２０のデータノードＩＤが含まれる。
【００６２】
一方、ネームノード５１０からデータブロック０の所在の通知を受けると、クライアントノード５５０は、データブロック０の所在の通知に含まれるデータノード５２０に対して、データブロック０の書き込みを要求する（ステップＳ１２０２ａ）。このとき、クライアントノード５５０は、データブロック０の書き込みの要求とともに、データブロック０の書き込み先として、データブロックの所在の通知に含まれるＨＤＤ５３０のリストを送信する。以下では、このリストを「書き込み先ＨＤＤリスト」という。
【００６３】
書き込みの要求を受けると、データノード５２０は、クライアントノード５５０から受信した書き込み先ＨＤＤリストに含まれる全てのＨＤＤ５３０に対して、データブロック０の書き込みを行なう（ステップＳ１２０１ｃ、ステップＳ１２０２ｃ  ＮＯ）。なお、書き込み先ＨＤＤリストに含まれる特定のＨＤＤ５３０以外のＨＤＤ５３０にデータブロック０を書き込む処理をレプリカ作成処理という。
【００６４】
書き込み先ＨＤＤリストに含まれる全てのＨＤＤ５３０に対してデータブロック０の書き込みが完了すると（ステップＳ１２０２ｃ  ＹＥＳ）、書き込み処理の結果をクライアントノード５５０に通知する（ステップＳ１２０３ｃ）。この書き込み結果には、例えば、書き込み処理が正常終了したか否か、書き込みが完了したＨＤＤ５３０、書き込みを失敗したＨＤＤ５３０などの情報を含むことができる。
【００６５】
また、データノード５２０は、データノード５２０と接続しているＨＤＤ５３０に記憶されているデータブロックを、ネームノード５１０に通知する（ステップＳ１２０４ｃ）。この通知を「ブロックリポート」という。なお、このブロックリポートの通知は、ステップＳ１２０１ｃ−Ｓ１２０３ｃによる書き込み処理と関係なく、一定間隔毎に行なうことができる。ブロックリポートを受信すると、ネームノード５１０は、受信したブロックリポートの内容を管理情報９００に反映する（ステップＳ１２０５ｂ）。
【００６６】
以上の処理が完了すると、分散ファイルシステム５００は、書き込み処理を終了する（ステップＳ１２０３ａ、Ｓ１２０６ｂ、Ｓ１２０５ｃ）。
図１３は、データブロック読み出し処理時の分散ファイルシステム５００の動作の概要を説明する図である。下記（１）〜（３）は、図１３に記載の（１）〜（３）に対応する。以下では、読み出し対象のデータブロックがデータブロック０の場合について説明する。ただし、図１３に示す処理をデータブロック０に対する処理に限定する趣旨ではない。
【００６７】
（１）クライアントノード５５０は、読み出し対象のデータブロック０の所在を問い合わせる。すると、ネームノード５１０は、管理情報９００から、問合せのあったデータブロック０が記憶されているＨＤＤ５３０と、ＨＤＤ５３０と接続しているデータノード５２０と、を取得してクライアントノード５５０に通知する。
【００６８】
（２）クライアントノード５５０は、データブロック０の所在の問合せに対する応答を受信すると、データブロック０が記憶されているＨＤＤ＃００−＃０２のいずれかと接続しているデータノード５２０に対して、データブロック０の読み出しを要求する。図７では、データブロック０が記憶されているＨＤＤ＃０２と接続しているデータノード＃０２に対して、データブロック０の読み出しを要求している場合について例示している。
【００６９】
（３）データノード＃０２は、クライアントノード５５０からデータブロック０の読み出し要求を受けると、ＤＡＳネットワーク５４０を介して接続するＨＤＤ＃０２からデータブロック０を読出してクライアントノード５５０に通知する。
【００７０】
図１４は、データブロック読み出し時の分散ファイルシステム５００の動作を示すフローチャートである。図１４では、分散ファイルシステム５００からデータブロック０を読出す場合の処理について説明する。ただし、図１４に示す処理をデータブロック０に対する処理に限定する趣旨ではない。
【００７１】
クライアントノード５５０は、データブロック０の所在をネームノード５１０に問い合わせる（ステップＳ１４０１ａ）。
一方、ネームノード５１０は、クライアントノード５５０からの問合せを受けると、管理情報９００を参照する（ステップＳ１４０１ｂ）。そして、ネームノード５１０は、管理情報９００から、データブロック０が記憶されているＨＤＤ５３０のうち任意の１つを選択する（ステップＳ１４０２ｂ）。なお、ネームノード５１０は、選択するＨＤＤ５３０を、例えば、ラウンドロビン（ｒｏｕｎｄ  ｒｏｂｉｎ）方式などを用いて決定することができる。
【００７２】
さらに、ネームノード５１０は、管理情報９００から、ステップＳ１４０２ｂで選択したＨＤＤ５３０と接続するデータノード５２０を選択する（ステップＳ１４０３ｂ）。そして、ネームノード５１０は、クライアントノード５５０に対して、問合せのあったデータブロック０の所在を通知する（ステップＳ１４０４ｂ）。この所在の通知には、ステップ１４０２ｂで選択したＨＤＤ５３０のＨＤＤ  ＩＤと、ステップＳ１４０３ｂで選択したデータノード５２０のデータノードＩＤが含まれる。
【００７３】
一方、ネームノード５１０からデータブロック０の所在の通知を受けると、クライアントノード５５０は、データブロック０の所在の通知に含まれるデータノード５２０に対して、データブロック０の読み出しを要求する（ステップＳ１４０２ａ）。このとき、クライアントノード５５０は、データブロック０の読み出しの要求とともに、データブロック０の読み出し先として、データブロック０の所在の通知に含まれるＨＤＤ５３０を指定する。
【００７４】
読み出しの要求を受けると、データノード５２０は、ネームノード５１０に指定されたＨＤＤ５３０からデータブロック０を読出す（ステップＳ１４０１ｃ）。そして、データノード５２０は、読出したデータブロック０をクライアントノード５５０に通知する（ステップＳ１４０２ｃ）。
【００７５】
以上の処理が完了すると、分散ファイルシステム５００は、読み出し処理を終了する（ステップＳ１４０３ａ、Ｓ１４０５ｂ、Ｓ１４０３ｃ）。
図１５は、データノード５２０の脱退処理について説明する図である。
【００７６】
分散ファイルシステム５００に含まれるデータノード５２０の１が故障等により動作しなくなると、動作しなくなったデータノード５２０を分散ファイルシステム５００から脱退させる処理が行なわれる。図１５は、図１０に示した分散ファイルシステム５００からデータノード＃００を脱退した場合について例示している。ただし、図１５に示す処理をデータノード＃００に対する処理に限定する趣旨ではない。
【００７７】
脱退処理の一例によると、図１５に示すように、脱退前のデータノード＃００に接続されていたＨＤ＃００−＃０２および＃３４は、ＨＤＤ＃００はデータノード＃０１に、ＨＤＤ＃０１、＃０２および＃３４はデータノード＃０２に引き継がれている。
【００７８】
図１６は、分散ファイルシステム５００の脱退処理を示すフローチャートである。以下の説明では、一例としてデータノード＃００を脱退するときのフェイルオーバー処理について説明する。ただし、図１６に示す処理をデータノード＃００に対する処理に限定する趣旨ではない。
【００７９】
利用者の所定の操作によりデータノード＃００の脱退指示を受信すると（ステップＳ１６０１）、ネームノード５１０は、管理情報９００を参照する（ステップＳ１６０２）。そして、ネームノード５１０は、データノード＃００と接続しているＨＤＤ５３０を１つ選択する（ステップＳ１６０３）。
【００８０】
ステップＳ１６０３で選択したＨＤＤ５３０と接続する、データノード＃００以外のデータノード５２０の数が所定数以下の場合（ステップＳ１６０４  ＹＥＳ）、ネームノード５１０は、処理をステップＳ１６０５に移行する。この場合、ネームノード５１０は、所定数に不足する数のデータノード５２０を選択する（ステップＳ１６０５）。なお、ここで選択するデータノード５２０の対象から、既にステップＳ１６０３で選択したＨＤＤと接続しているデータノード５２０は除かれる。
【００８１】
データノード５２０を選択すると、ネームノード５１０は、選択したデータノード５２０それぞれと、ステップＳ１６０３で選択したＨＤＤ５３０と、を接続する（ステップＳ１６０５）。なお、ＨＤＤ５３０とデータノード５２０とを接続するには、例えば、図８に示したデータパミッションテーブル８００を変更することにより行なうことができる。データパミッションテーブル８００の設定方法については、図８で前述したので省略する。
【００８２】
ステップＳ１６０５の処理が完了すると、ネームノード５１０は、ステップＳ１６０５によって変更されたＨＤＤ５３０とネームノード５１０との接続関係を管理情報９００に反映する（ステップＳ１６０６）。
【００８３】
データノード＃００と接続するＨＤＤ５３０のうち、まだステップＳ１６０３で選択していないＨＤＤ５３０がある場合（ステップＳ１６０７  ＮＯ）、ネームノード５１０は、処理をステップＳ１６０２に移行して、ステップＳ１６０２〜Ｓ１６０７の処理を繰り返す。
【００８４】
また、データノード＃００と接続するＨＤＤ５３０の全てがステップＳ１６０３で選択済みである場合（ステップＳ１６０７  ＹＥＳ）、ネームノード５１０は、脱退処理を終了する（ステップＳ１６０８）。
【００８５】
図１７は、分散ファイルシステム５００のリバランシング処理を示すフローチャートである。
使用者の所定の操作によりリバランシング処理の指示を受信すると、ネームノード５１０は、リバランシング処理を開始する（ステップＳ１７００ａ）。そして、ネームノード５１０は、管理情報９００を参照し（ステップＳ１７０１ａ）、管理情報９００に登録されている各ＨＤＤ５３０の使用率を算出する（ステップＳ１７０２ａ）。なお、本実施例では、ＨＤＤ５３０の使用率を使用しているが、ＨＤＤ５３０の空き容量やアクセス頻度などＨＤＤ５３０にかかる負荷を示す様々な情報を使用することができる。
【００８６】
使用率の最大値と最小値の差が１０％以上の場合（ステップＳ１７０３ａ）、ネームノード５１０は、使用率が最大のＨＤＤを選択する（ステップＳ１７０４ａ）。この選択したＨＤＤを以下の説明では、「ＨＤＤ１」とする。また、ネームノード５１０は、使用率が最小のＨＤＤ５３０を選択する（ステップＳ１７０５ａ）。この選択したＨＤＤを以下の説明では、「ＨＤＤ２」とする。
【００８７】
なお、ステップＳ１７０３ａでは、使用率の最大値と最小値の差が１０％か否かで判別しているが、これは一例であって、１０％に限定する趣旨ではない。
ＨＤＤ１およびＨＤＤ２の両方と接続したデータノード５２０がある場合（ステップＳ１７０６ａ  ＹＥＳ）、ネームノード５１０は、ＨＤＤ１およびＨＤＤ２の両方と接続したデータノード５２０を選択する（ステップＳ１７０７ａ）。この選択したデータノード５２０を以下の説明では「データノード１」とする。
【００８８】
また、ＨＤＤ１およびＨＤＤ２の両方と接続したデータノード５２０がない場合（ステップＳ１７０６ａ  ＮＯ）、ネームノード５１０は、ＨＤＤ１と接続しているデータノード５２０をＨＤＤ２と接続する（ステップＳ１７０８ａ）。そして、ネームノード５１０は、ＨＤＤ１およびＨＤＤ２の両方と接続することになったデータノード５２０を選択する（ステップＳ１７０９ａ）。この選択したデータノード５２０を以下の説明では「データノード２」とする。
【００８９】
そして、データノード５２０は、ステップＳ１７０６ａで選択したデータノード１、または、ステップＳ１７０８ａで選択したデータノード２に対して、一定量のデータのＨＤＤ１からＨＤＤ２への移動を指示する（ステップＳ１７１０ａ）。
【００９０】
一方、ネームノード５１０からデータの移動の指示を受けると、データノード５２０は、ＨＤＤ１からＨＤＤ２に一定量のデータを移動する（ステップＳ１７０１ｂ）。このデータの移動は、ＤＡＳネットワーク５４０を介して行なわれる。データの移動が完了すると、データノード５２０は、その旨をネームノード５１０に通知する。
【００９１】
データの移動が完了すると、ネームノード５１０は、処理をステップＳ１７０２ａに移行する。そして、ステップＳ１７０２ａ〜Ｓ１７１０ａの処理を繰り返す。そして、ステップＳ１７０２ａで算出するＨＤＤの使用率の最大値と最小値との差が１０％未満になると（ステップＳ１７０３ａ  ＮＯ）、ネームノード５１０は、リバランシング処理を終了する（ステップＳ１７１１ａ、Ｓ１７０２ｂ）。
【００９２】
≪その他の実施例≫
図１８は、その他の実施例に係る分散ファイルシステム１８００の構成例を示す図である。
【００９３】
分散ファイルシステム１８００は、ネームノード１８００と、複数のデータノード１８１０−０、１８１０−１、・・・、および１８１０−ｎと、ＤＡＳネットワーク５４０と、複数のＨＤＤ５３０−０、５３０−１、・・・、および５３０−ｍと、を備える。以下では、データノード１８１０−０、１８１０−１、・・・、および１８１０−ｎのうち１または２以上の任意のデータノードを「データノード１８１０」という。
【００９４】
ネームノード１８００と、複数のデータノード１８１０−０、１８１０−１、・・・、および１８１０−ｎと、は、ネットワーク５６０を介して通信可能に接続されている。また、複数のデータノード１８１０−０、１８１０−１、・・・、および１８１０−ｎと、複数のＨＤＤ５３０−０、５３０−１、・・・、および５３０−ｍと、は、ＤＡＳネットワーク５４０を介して通信可能に接続されている。
【００９５】
ネームノード１８００は、データブロック毎に、データブロックと、データブロックを記憶するデータノード１８１０と、の対応関係を管理する。この管理には、例えば、図２０に示すデータブロック管理情報２０００を使用することができる。このデータブロック管理情報２０００には、データブロックを識別するブロックＩＤと、データノードを識別するデータノードＩＤと、を含むことができる。
【００９６】
なお、本実施例において、ネームノード１８００がデータブロック毎に管理する「データブロックを記憶するデータノード１８１０」とは、データブロックを記憶する主管理ＨＤＤと接続しているデータノード１８１０のことをいう。主管理ＨＤＤについては後述する。
【００９７】
ネームノード１８００は、クライアントノード５５０からの問合せに応じて、データブロック管理情報２０００から、データブロックを書き込むデータノード１８１０を複数選択する。そして、ネームノード１８００は、選択したネームノード１８００をクライアントノード５５０に通知する。
【００９８】
ネームノード１８００は、クライアントノード５５０からの問合せに応じて、データブロック管理情報２０００から、データブロックが記憶されているネームノード１８００をクライアントノード５５０に通知する。
【００９９】
ネームノード１８００は、利用者の所定の操作に応じて、リバランシング処理を行なう。この場合、ネームノード１８００は、データノード１８１０の使用率の最大値と最小値の差が一定の割合以下になるまで、使用率が最大のデータノードから使用率が最小のデータノードにデータブロックを移動させる処理を繰り返す。
【０１００】
ネームノード１８００は、利用者の所定の操作に応じて、データノード１８１０の脱退処理を行なう。この脱退処理で、例えば、ネームノード１８００は、脱退したデータノード１８１０に記憶されていたデータブロックのレプリカを、他のデータノード１８１０に作成する。
【０１０１】
データノード１８１０−０、１８１０−２、・・・、および１８１０−ｎは、それぞれ、ＤＡＳネットワーク５４０を介して、ＨＤ５３０−０、５３０−１、・・・、５３０−ｍのいずれか１つまたは２以上のＨＤＤと接続する。
【０１０２】
データノード１８１０は、自装置と接続しているＨＤＤ５３０に記憶しているデータブロックを管理する。この管理には、例えば、図２１に示すデータブロック管理情報２１００を使用することができる。このデータブロック管理情報２１００には、データブロックを識別する識別情報であるブロックＩＤと、ブロックＩＤが示すデータブロックが記憶されているＨＤＤ５３０を識別する識別情報であるＨＤＤ  ＩＤと、を含むことができる。
【０１０３】
データノード１８１０は、自ノードと接続するＨＤＤ５３０を、自ノードがネームノード１８００に対するインタフェースとして機能するＨＤＤ５３０と、他のノードがネームノード１８００に対するインタフェースとして機能するＨＤＤ５３０と、を分けて管理する。以下では、自ノードと接続するＨＤＤ５３０のうち、自ノードがネームノード１８００に対するインタフェースとして機能するＨＤＤ５３０を「主管理ＨＤＤ」という。データノード１８１０の使用率には、データノード１８１０の主管理ＨＤＤの使用率を使用する。また、自ノードと接続するＨＤＤ５３０のうち、他のノードがネームノード１８００に対するインタフェースとして機能するＨＤＤ５３０を「副管理ＨＤＤ」という。
【０１０４】
主管理ＨＤＤと副管理ＨＤＤの管理には、例えば、図２２に示すＨＤＤ接続管理情報２２００を使用することができる。このＨＤＤ接続管理情報２２００には、データノード１８１０毎に、主管理ＨＤＤを識別するＨＤＤ  ＩＤと、副管理ＨＤを識別するＨＤＤ  ＩＤと、を含むことができる。
【０１０５】
データノード１８１０は、ネームノード１８００からの指示にしたがって、ＤＡＳネットワーク５４０を介して、または、ネットワーク５６０を介して、接続するＨＤＤ５３０間でのデータブロックの書き込みやデータブロックの移動を行なう。
【０１０６】
例えば、ＤＡＳネットワーク５４０を介してデータノード１８１０と接続しているＨＤＤ５３０間でデータブロックの書き込みを行なう場合、データノード１８１０は、ＤＡＳネットワーク５４０を使用してデータブロックの書き込みを行なうことができる。このＨＤＤ５３０間のデータブロックの書き込みには、ネットワーク５６０は使用されない。
【０１０７】
図１９は、主管理ＨＤＤと副管理ＨＤＤとの接続関係を説明する図である。図１９では、理解を容易にするために、データノード１８１０が４台、ＨＤＤが４台の構成例を示しているが、分散ファイルシステム１８００を図１９に示す構成に限定する趣旨ではない。
【０１０８】
データノード＃００は、データノード＃００が管理する主管理ＨＤＤのＨＤ＃００と接続している。データノード＃００は、主管理ＨＤＤ＃００におけるデータブロックの記憶状態などを管理する。一定期間毎に、データノード＃００は、主管理ＨＤＤ＃００におけるデータブロックの記憶状態などをブロックレポートとしてネームノード１８００に送信する。なお、主管理ＨＤＤは、分散ファイルシステム１８００に備わるＨＤＤ５３０のうちあらかじめ決められたＨＤＤ５３０である。同様に、データノード＃０１−＃０３は、それぞれ、主管理ＨＤＤのＨＤＤ＃０１、＃０２および＃０３と接続している。
【０１０９】
また、データノード＃００は、データノード＃００以外のデータノード１８１０が管理する副管理ＨＤＤのＨＤＤ＃０１、＃０２および＃０３と接続している。同様に、データノード＃０１−＃３は、それぞれ、副管理ＨＤＤのＨＤＤ＃００、＃０２および＃０３、ＨＤＤ＃００、＃０１および＃０３、ＨＤＤ＃００、＃０１および＃０２、と接続している。
【０１１０】
なお、図１９では、各データノード１８１０に１つの主管理ＨＤＤが割り当てられた例を示したが、１つのデータノード１８１０に複数の主管理ＨＤＤを割り当てることもできる。
【０１１１】
図２２は、ＨＤＤ接続管理情報２２００の一例を示す図である。
ＨＤＤ接続管理情報２２００は、データノード１８１０毎に、データノード１８１０と接続する主管理ＨＤＤのＨＤＤ  ＩＤと、データノード１８１０と接続する副管理ＨＤＤのＨＤＤ  ＩＤと、を含むことができる。図２２は、図１９に示した主管理ＨＤＤと副管理ＨＤＤとの接続関係を示すＨＤＤ接続管理情報２２００の例である。
【０１１２】
図２３は、データブロック書き込み時の分散ファイルシステム１８００の動作を示すフローチャートである。
クライアントノード５５０は、書き込み対象のファイルを所定のサイズのデータブロックに分割する。そして、クライアントノード５５０は、分散ファイルシステム５００への書き込み処理を開始する（ステップＳ２３００ａ）。なお、図２３では、分散ファイルシステム５００にデータブロック０を書き込む場合の処理について説明する。ただし、図２３に示す処理をデータブロック０に対する処理に限定する趣旨ではない。
【０１１３】
クライアントノード５５０は、データブロック０の所在をネームノード１８００に問い合わせる（ステップＳ２３０１ａ）。
一方、ネームノード１８００は、クライアントノード５５０からの問合せを受けると、データブロック管理情報２０００を参照する（ステップＳ２３０１ｂ）。そして、ネームノード１８００は、データブロック管理情報２０００から、データブロック０が記憶されている全てのデータノード１８１０を選択する（ステップＳ２３０２ｂ）。なお、クライアントノード５５０から問合せのあったデータブロック０が、データブロック管理情報２０００に登録されていない場合、ネームノード１８００は、あらかじめ設定されたレプリカの数だけデータノード１８１０を選択する。そして、ネームノード１８００は、選択したデータノード１８１０をデータブロック０と対応付けてデータブロック管理情報２０００に記憶する。
【０１１４】
以上の処理が終了すると、ネームノード１８００は、クライアントノード５５０に対して、問合せのあったデータブロック０の所在を通知する（ステップＳ２３０３ｂ）。この所在には、ステップＳ２３０２ｂで選択したデータノード１８１０のデータノードＩＤが含まれる。
【０１１５】
一方、ネームノード１８００からデータブロック０の所在の通知を受けると、クライアントノード５５０は、データブロック０の所在の通知に含まれるデータノード１８１０から１つデータノード１８１０を選択する。そして、ネームノード１８００は、選択したデータノード１８１０に対してデータブロック０の書き込みを要求する（ステップＳ２３０２ａ）。このとき、選択したデータノード１８１０を、以下では「選択データノード」という。クライアントノード５５０は、データブロック０の書き込みの要求とともに、データブロック０の書き込み先として、データブロックの所在の通知に含まれるデータノード１８１０のリストを送信する。以下では、このリストを「書き込み先データノードリスト」という。
【０１１６】
書き込みの要求を受けると、選択データノードは、クライアントノード５５０から送られた書き込み先データノードリストを確認する。書き込み先データノードリストが空の場合（ステップＳ２３０１ｃ  ＹＥＳ）、選択データノードは、データブロック０の書き込み結果をクライアントノード５５０に通知する（ステップＳ２３０９ｃ）。
【０１１７】
書き込み先データノードリストが空でない場合（ステップＳ２３０１ｃ  ＮＯ）、選択データノードは、書き込み先データノードリストからデータノード１８１０を１つ取得する（ステップＳ２３０２ｃ）。この取得したデータノード１８１０を以下では「書き込み先データノード」という。
【０１１８】
選択データノードは、ＨＤＤ接続管理情報２２００を参照し、書き込み先データノード１８１０の主管理ＨＤＤが、選択データノードと接続しているか否かを確認する。
書き込み先データノードの主管理ＨＤＤが、選択データノードと接続している場合（ステップＳ２３０３ｃ  ＹＥＳ）、選択データノードは、データブロックを書き込み先データノードの主管理ＨＤＤに書き込む（ステップＳ２３０４ｃ）。
【０１１９】
書き込み先データノードが選択データノードの場合（ステップＳ２３０５ｃ  ＹＥＳ）、選択データノードは、選択データノードのデータブロック管理情報２１００を更新する（ステップＳ２３０６ｃ）。そして、選択データノードは、処理をステップＳ２３０１ｃに移行する。
【０１２０】
また、ステップＳ２３０３ｃにおいて、書き込み先データノードの主管理ＨＤＤが、選択データノードと接続していない場合（ステップＳ２３０３ｃ  ＮＯ）、選択データノードは、書き込み先データノードに対して、データブロックの書き込みを要求する（ステップＳ２３０７ｃ）。書き込み先データノードからデータブロック０の書き込み完了の通知を受けると、選択データノードは、処理をステップＳ２３０１ｃに移行する。
【０１２１】
また、書き込み先データノードが選択データノードでない場合（ステップＳ２３０５ｃ  ＮＯ）、選択データノードは、書き込み先データノードに対してデータブロック管理情報２１００の更新を要求する（ステップＳ２３０８ｃ）。書き込み先データノードから、データブロック管理情報２１００の更新完了の通知を受けると、選択データノードは、処理をステップＳ２３０１ｃに移行する。
【０１２２】
ステップＳ２３０１ｃ−Ｓ２３０８ｃの処理が終了すると、選択データノードは、書き込み結果をクライアントノード５５０に通知する（ステップＳ２３０９ｃ）。
以上の処理が完了すると、分散ファイルシステム１８００は、書き込み処理を終了する（ステップＳ２３０３ａ、Ｓ２３０４ｂ、Ｓ２３１０ｃ）。
【０１２３】
図２４は、データブロック読み出し時の分散ファイルシステム１８００の動作を示すフローチャートである。図２４では、分散ファイルシステム１８００からデータブロック０を読出す場合について説明する。ただし、図２４に示す処理をデータブロック０に対する処理に限定する趣旨ではない。
【０１２４】
クライアントノード５５０は、データブロック０の所在をネームノード１８００に問い合わせる（ステップＳ２４０１ａ）。
一方、ネームノード１８００は、クライアントノード５５０からの問合せを受けると、データブロック管理情報２０００を参照する（ステップＳ２４０１ｂ）。そして、ネームノード１８００は、データブロック管理情報２０００から、データブロック０が記憶されているデータノード１８１０のうち任意の１つを選択する（ステップＳ２４０２ｂ）。なお、ネームノード１８００は、選択するデータノード１８１０を、例えば、ラウンドロビン方式などを用いて決定することができる。
【０１２５】
そして、ネームノード１８００は、クライアントノード５５０に対して、問合せのあったデータブロック０の所在を通知する（ステップＳ２４０３ｂ）。この所在の通知には、ステップＳ２４０２ｂで選択したデータノード１８１０のデータノードＩＤが含まれる。
【０１２６】
一方、ネームノード１８００からデータブロック０の所在の通知を受けると、クライアントノード５５０は、データブロック０の所在の通知に含まれるデータノード１８１０に対して、データブロック０の読み出しを要求する（ステップＳ２４０２ａ）。
【０１２７】
読み出しの要求を受けると、データノード１８１０は、データノード１８１０自身に接続している主管理ＨＤＤからデータブロック０を読出す（ステップＳ２４０１ｃ）。そして、データノード１８１０は、読出したデータブロック０を、クライアントノード５５０に送信する（ステップＳ２４０２ｃ）。
【０１２８】
以上の処理が完了すると、分散ファイルシステム１８００は、読み出し処理を終了する（ステップＳ２４０３ａ、Ｓ２４０４ｂ、Ｓ２４０３ｃ）。
図２５は、分散ファイルシステム１８００の脱退処理を示すフローチャートである。以下の説明では、一例としてデータノード＃００を脱退するときのフェイルオーバー処理について説明する。ただし、図２５に示す処理をデータノード＃００に対する処理に限定する趣旨ではない。
【０１２９】
利用者の処理の操作によりデータノード＃００の脱退指示を受信すると、ネームノード１８００は、データノード＃００の脱退処理を開始する（ステップＳ２５００ａ）。以下では、データノード＃００の脱退指示を受信した場合を例に説明する。ただし、図２５に示す処理をデータノード＃００に対する処理に限定する趣旨ではない。
【０１３０】
データノード＃００の脱退指示を受信すると、ネームノード１８００は、データブロック管理情報２０００を参照し（ステップＳ２５０１ａ）、データノード＃００と接続していたＨＤＤ５３０が記憶していたデータブロックを１つ選択する（ステップＳ２５０２ａ）。
【０１３１】
さらに、ネームノード１８００は、ステップＳ２５０２ａで選択したデータブロックのレプリカを記憶しているデータノード１８１０の中から、任意のデータノード１８１０を、データブロックの複製元として選択する（ステップＳ２５０３ａ）。このとき選択したデータノード１８１０を以下ではデータノード＃０１とする。
【０１３２】
また、ネームノード１８００は、ステップＳ２５０２ａで選択したデータブロックの複製先として、任意のデータノード１８１０を１つ選択する（ステップＳ２５０４ａ）。このとき選択したデータノード１８１０を以下ではデータノード＃０２とする。ただし、このデータノード＃０２は、ステップＳ２５０３ａで選択したデータノード＃０１以外のデータノード１８１０である。また、データノード＃０２は、ステップＳ２５０３ａで選択したデータノード＃０１とＨＤＤ５３０が接続していることが望ましい。
【０１３３】
データノード＃０１および＃０２を選択すると、ネームノード１８００は、データノード＃０１に対してレプリカ作成を要求する（ステップＳ２５０５ａ）。
一方、ネームノード１８００からレプリカ作成の要求を受信すると、データノード＃０１は、データノード＃０１のＨＤＤ接続管理情報２２００を参照する（ステップＳ２５０１ｂ）。そして、データノード＃０１が、データノード＃０２の主管理ＨＤＤと接続しているか否かを確認する。
【０１３４】
データノード＃０１がデータノード＃０２の主管理ＨＤＤと接続している場合（ステップＳ２５０２ｂ  ＹＥＳ）、データノード＃０１は、データノード＃０２の主管理ＨＤＤにデータブロックを書き込む（ステップＳ２５０３ｂ）。このデータノード＃０２の主管理ＨＤＤへのデータブロックの書き込みは、ネットワーク５６０を使用せずに、ＤＡＳネットワーク５４０を介して行なうことができる。
【０１３５】
また、データノード＃０１がデータノード＃０２の主管理ＨＤＤと接続していない場合（ステップＳ２５０２ｂ  ＮＯ）、データノード＃０１は、データブロックの書き込みをデータノード＃０２に要求する（ステップＳ２５０４ｂ）。データノード＃０１からデータブロックの書き込み要求を受信すると、データノード＃０２は、データノード＃０２の主管理ＨＤＤにデータブロックを書き込む（ステップＳ２５０１ｃ）。そして、データノード＃０２は、データブロックの書き込み完了をデータノード＃０１に通知する。
【０１３６】
ステップＳ２５０３ｂまたはＳ２５０４ｂの処理によりデータブロックのレプリカの作成が完了すると、データノード＃０１は、データノード＃０２に対して、データノード＃０２のデータブロック管理情報２１００の更新を要求する（ステップＳ２５０５ｂ）。データブロック管理情報２１００の更新の要求を受けたデータノード＃０２は、データノード＃０２のデータブロック管理情報２１００を更新する（ステップＳ２５０２ｃ）。そして、データノード＃０２は、データブロック管理情報２１００の更新完了をデータノード＃０１に通知する。
【０１３７】
ステップＳ２５０１ｂ−Ｓ２５０５ｂの処理が完了すると、データノード＃０１は、データブロックのレプリカ作成の完了を、ネームノード１８００に通知する（ステップＳ２５０６ｂ）。
【０１３８】
データノード＃０１からデータブロックのレプリカの作成完了の通知を受けると、ネームノード１８００は、データノード＃００に記憶していたデータブロックを全て選択したか否か確認する。
【０１３９】
データノード＃００に記憶していたデータブロックに未選択のデータブロックがある場合（ステップＳ２５０６ａ  ＮＯ）、ネームノード１８００は、処理をステップＳ２５０１ａに移行する。そして、ネームノード１８００は、ステップＳ２５０１ａ−Ｓ２５０６ａの処理を繰り返す。また、データノード＃００に記憶していたデータブロックに未選択のデータブロックがない場合（ステップＳ２５０６ａ  ＹＥＳ）、ネームノード１８００は、処理をステップＳ２５０７ａに移行する。
【０１４０】
以上の処理が完了すると、分散ファイルシステム１８００は、脱退処理を終了する（ステップＳ２５０７ａ、Ｓ２５０７ｂ、Ｓ２５０３ｃ）。
図２６は、分散ファイルシステム１８００のリバランシング処理を示すフローチャートである。
【０１４１】
使用者の所定の操作によりリバランシング処理の指示を受信すると（ステップＳ２６００ａ）、ネームノード１８００は、データブロック管理情報２０００を参照する（ステップＳ２６０１ａ）。そして、ネームノード１８００は、各データノードの使用率、すなわち、各データノード１８１０に接続する主管理ＨＤＤの使用率を算出する（ステップＳ２６０２ａ）。なお、本実施例では、主管理ＨＤＤの使用率を使用しているが、主管理ＨＤＤの空き容量やアクセス頻度など主管理ＨＤＤにかかる負荷を示す様々な情報を使用することができる。
【０１４２】
ステップＳ２６０２ａで算出した使用率の最大値と最小値との差が１０％以上の場合（ステップＳ２６０３ａ  ＹＥＳ）、ネームノード１８００は、データブロックの移動元として、使用率が最大のデータノードを選択する（ステップＳ２６０４ａ）。この選択したデータノードを以下ではデータノード＃０１とする。
【０１４３】
また、ネームノード１８００は、データブロックの移動先として、使用率が最小のデータノードを選択する（ステップＳ２６０５ａ）。この選択したデータノードを以下ではデータノード＃０２とする。
【０１４４】
データブロックの移動元と移動先を選択すると、ネームノード１８００は、移動元であるデータノード＃０１に対して、データノード＃０２を移動先に指定して、一定量のデータブロックの移動を指示する（ステップＳ２６０６ａ）。
【０１４５】
一方、ネームノード１８００からデータブロックの移動の指示を受けると、データノード＃０１は、ＨＤＤ接続管理情報２２００を参照する（ステップＳ２６０１ｂ）。そして、データノード＃０１は、データノード＃０１と、データブロックの移動先であるデータノード＃０２の主管理ＨＤＤと、が接続しているか否かを確認する。
【０１４６】
データノード＃０１と、データノード＃０２の主管理ＨＤＤと、が接続している場合（ステップＳ２６０２ｂ  ＹＥＳ）、データノード＃０１は、処理をステップＳ２６０３ｂに移行する。この場合、データノード＃０１は、データノード＃０１の主管理ＨＤＤから、データノード＃０２の主管理ＨＤＤに、一定量のデータブロックを移動する（ステップＳ２６０３ｂ）。このときのデータブロックの移動は、ネットワーク５６０を使用せず、ＤＡＳネットワーク５４０を介して行なうことができる。
【０１４７】
データノード＃０１と、データノード＃０２の主管理ＨＤＤと、が接続していない場合（ステップＳ２６０２ｂ  ＮＯ）、データノード＃０１は、データブロックの書き込みをデータノード＃０２に要求する（ステップＳ２６０４ｂ）。このとき、データノード＃０１は、データノード＃０１の主管理ＨＤＤから一定量のデータブロックを読出してデータノード＃０２に送信する。データノード＃０１からデータブロックの書き込み要求を受信すると、データノード＃０２は、データノード＃０２の主管理ＨＤＤに、受信したデータブロックを書き込む（ステップＳ２６０１ｃ）。そして、データノード＃０２は、データブロックの書き込み完了をデータノード＃０１に通知する。
【０１４８】
ステップＳ２６０３ｂまたはＳ２６０４ｂの処理によりデータブロックの移動が完了すると、データノード＃０１は、データノード＃０１のデータブロック管理情報２１００を更新する（ステップＳ２６０５ｂ）。また、データノード＃０１は、データブロックの移動先であるデータノード＃０２に対して、データノード＃０２のデータブロック管理情報２１００の更新を要求する（ステップＳ２６０６ｂ）。データブロック管理情報２１００の更新の要求を受けたデータノード＃０２は、データノード＃０２のデータブロック管理情報２１００を更新する（ステップＳ２６０２ｃ）。そして、データノード＃０２は、データブロック管理情報２１００の更新完了をデータノード＃０１に通知する。
【０１４９】
ステップＳ２６０１ｂ−Ｓ２６０６ｂの処理が完了すると、データノード＃０１は、データブロックの移動完了をネームノード１８００に通知する（ステップＳ２６０７ｂ）。
【０１５０】
データノード＃０１からデータブロックの移動完了の通知を受けると、ネームノード１８００は、処理をステップＳ２６０１ａに移行する。そして、ネームノード１８００は、ステップＳ２６０１ａ−Ｓ２６０６ａの処理を繰り返す。
以上の処理が完了すると、分散ファイルシステム１８００は、リバランシング処理を終了する（ステップＳ２６０７ａ、Ｓ２６０８ｂ、Ｓ２６０３ｃ）。
【０１５１】
図２７は、ネームノード５１０の具体的な構成例を示す図である。
図２７に示すネームノード５１０は、ＣＰＵ２７０１と、メモリ２７０２と、入力装置２７０３と、出力装置２７０４と、外部記憶装置２７０５と、媒体駆動装置２７０６と、ネットワーク接続装置２７０８と、を備える。そして、これらの装置がバスに接続されて相互にデータの受け渡しが行える構成となっている。
【０１５２】
ＣＰＵ２７０１は、周辺機器や各種ソフトウェアを実行する他に本実施例に係る分散ファイルシステム５００を実現するプログラムを実行する演算装置である。
メモリ２７０２は、プログラムを実行するために使用される揮発性の記憶装置である。メモリ２７０２には、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを使用することができる。
【０１５３】
入力装置２７０３は、外部からのデータ入力手段である。入力装置２７０３には、例えば、キーボードやマウスなどを使用することができる。出力装置２７０４は、データ等を表示装置等に出力する装置である。なお、出力装置２７０４には、表示装置を含むこともできる。
【０１５４】
外部記憶装置２７０５は、ネームノード５１０が動作するために必要なプログラムやデータの他に本実施例に係る分散ファイルシステム５００を実現するプログラムを記憶する不揮発性の記憶装置である。外部記憶装置２７０５には、例えば、磁気ディスク記憶装置などを使用することができる。
【０１５５】
媒体駆動装置２７０６は、メモリ２７０２や外部記憶装置２７０５のデータを可搬記憶媒体２７０７、例えば、フロッピイディスクやＭＯディスク、ＣＤ−ＲやＤＶＤ−Ｒなどに出力し、または可搬記憶媒体２７０７からプログラムやデータ等を読み出す装置である。
【０１５６】
ネットワーク接続装置２７０８は、ネットワーク５６０と接続するインタフェースである。ＤＡＳネットワーク接続装置２７０９は、ＤＡＳネットワーク５４０、例えば、ＳＡＳエキスパンダ６００と接続するインタフェースである。
【０１５７】
なお、メモリ２７０２、外部記憶装置２７０５および可搬記憶媒体２７０７などの情報処理装置に読取り可能な記憶媒体には、非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）な媒体を使用することができる。また、図２７は、ネームノード５１０の構成の一例である。すなわち、ネームノード５１０の構成を図２７に示す構成に限定する趣旨ではない。ネームノード５１０の構成は、必要に応じて、図２７に示した構成要素の一部を省略し、また、図２７に示していない構成要素を追加してもよい。
【０１５８】
図２７では、実施例で示したネームノード５１０の構成例について説明したが、データノード５２０、ネームノード１８００およびデータノード１８１０についても、図２７と同様の構成を含むことができる。ただし、データノード５２０、ネームノード１８００およびデータノード１８１０は、図２７に示した構成に限定されないのは当然である。
【０１５９】
以上の説明において、ＨＤＤ５３０は、記憶装置の一例として挙げられる。クライアントノード５５０は、第１のノードの一例として挙げられる。データノード５２０またはデータノード１８１０は、第２のノードの一例として挙げられる。ＤＡＳネットワーク５４０は、中継網の一例として挙げられる。ネームノード５１０またはネームノード１８００は、第３のノードの一例として挙げられる。
【０１６０】
以上に説明したように、データノード５２０は、ＤＡＳネットワーク５４０を介してＨＤＤ５３０と接続している。分散ファイルシステム５００へのデータブロックの書き込み処理では、データノード５２０は、クライアントノード５５０から受信した書き込み先ＨＤＤリストに含まれる全てのＨＤＤ５３０に対して、データブロックの書き込みを行なう。このデータブロックのＨＤＤ５３０への書き込みは、ネットワーク５４０を使用せず、ＤＡＳネットワーク５４０を介して行なわれる。そのため、分散ファイルシステム５００へのデータブロックの書き込み時におけるネットワーク５４０のトラフィックを低く抑えることができる。その結果、クライアントノード５５０から分散ファイルシステム５００への書き込み速度を向上させることができる。
【０１６１】
また、データノード１８１０も、ＤＡＳネットワーク５４０を介してＨＤＤ５３０と接続している。分散ファイルシステム１８００へのデータブロックの書き込み処理では、選択データノードは、書き込み先データノードの主管理ＨＤＤが選択データノードと接続している場合、書き込み先データノードの主管理ＨＤＤにデータブロックを書き込む。このデータブロックの主管理ＨＤＤへの書き込みは、ネットワーク５４０を使用せず、ＤＡＳネットワーク５４０を介して行なわれる。そのため、分散ファイルシステム１８００へのデータブロックの書き込み時におけるネットワーク５４０のトラフィックを低く抑えることができる。その結果、クライアントノード５５０から分散ファイルシステム１８００への書き込み速度を向上させることができる。
【０１６２】
また、分散ファイルシステム５００および１８００は、データブロックのＨＤＤ５３０への書き込みを、ＤＡＳネットワーク５４０を介して行なう。したがって、例えば、ネットワーク５４０で発生するトラフィックを抑えるために、データブロックのＨＤＤ５３０への書き込み時に行なわれるレプリカの作成処理の優先度を下げる必要はない。
【０１６３】
分散ファイルシステム５００の脱退処理では、ネームノード５１０は、脱退対象のデータノード＃００と接続するＨＤＤ５３０と接続する、データノード＃００以外のデータノード５２０と、脱退対象のデータノード＃００と接続するＨＤＤ５３０と、を接続させる。これにより、脱退対象のデータノード＃００と接続するＨＤＤ５３０に記憶されたデータブロックのレプリカを他のデータノードに複製しなくても、レプリカの復元や再配置を高速に行なうことができる。レプリカを他のデータノードに複製する必要がないので、ネットワーク５４０には脱退処理によるトラフィックが発生しない。その結果、脱退処理時の分散ファイルシステム５００へのアクセス速度を向上させることができる。
【０１６４】
また、分散ファイルシステム１８００の脱退処理では、データブロックの複製元のデータノード＃０１が、データブロックの複製先のデータノード＃０２の主管理ＨＤＤと接続している場合、データノード＃０１は、データノード＃０２の主管理ＨＤＤにデータブロックを書き込む。このデータブロックの書き込みは、ネットワーク５４０を使用せず、ＤＡＳネットワーク５４０を介して行なわれる。そのため、分散ファイルシステム１８００の脱退処理時に、ネットワーク５４０に大量のネットワーク通信が発生することを抑えることができる。その結果、脱退処理時の分散ファイルシステム１８００へのアクセス速度を向上させることができる。また、脱退処理も高速に行なうことができる。
【０１６５】
また、分散ファイルシステム５００では、データノード５２０故障時にもレプリカの復元や再配置を高速に行なうことができるので、データノード５２０故障時の分散ファイルシステム５００の冗長性を保持するために、レプリカ数を増加させる必要がなくなる。また、レプリカ数を増加させる必要がないので、レプリカ数の増加にともなうＨＤＤ５３０のデータ記憶容量の低下もない。分散ファイルシステム１８００についても、分散ファイルシステム５００と同様のことがいえる。
【０１６６】
分散ファイルシステム５００のリバランシング処理では、ネームノード５１０は、使用率が最大のＨＤＤ１および使用率が最小のＨＤＤ２の両方とＤＡＳネットワーク５４０を介して接続したデータノード５２０に対してデータの移動を指示する。このデータの移動は、ネットワーク５４０を使用せず、ＤＡＳネットワーク５４０を介して行なわれる。そのため、分散ファイルシステム５００のリバランシング処理時に、ネットワーク５４０に大量のネットワーク通信が発生することを抑えることができる。その結果、リバランシング処理時の分散ファイルシステム５００へのアクセス速度を向上させることができる。また、リバランシング処理も高速に行なうことができる。
【０１６７】
また、分散ファイルシステム１８００のリバランシング処理では、データノード＃０１と、データノード＃０２の主管理ＨＤＤと、が接続している場合、データノード＃０１は、データノード＃０１の主管理ＨＤＤからデータノード＃０２の主管理ＨＤＤにデータブロックを移動する。ただし、データノード＃０１はデータブロックの移動元である。また、データノード＃０２はデータブロックの移動先である。このデータブロックの移動は、ネットワーク５４０を使用せず、ＤＡＳネットワーク５４０を介して行なわれる。そのため、分散ファイルシステム１８００のリバランシング処理時に、ネットワーク５４０に大量のネットワーク通信が発生することを抑えることができる。その結果、リバランシング処理時の分散ファイルシステム１８００へのアクセス速度を向上させることができる。また、リバランシング処理も高速に行なうことができる。
【０１６８】
データノード５２０は、ＤＡＳネットワーク５４０を介してＨＤＤ５３０と接続するので、ＨＤＤ５３０と接続するデータノード５２０を簡単に増やすことができる。そのため、ＨＤＤ５３０に記憶されたデータブロックにアクセスできるデータノード５２０をレプリカの数以上にすることができる。その結果、分散ファイルシステム５００は、クライアントノード５５０からデータノード５２０へのアクセスを分散させることができる。分散ファイルシステム１８００についても、同様の理由から、クライアントノード５５０からデータノード１８１０へのアクセスを分散させることができる。
【０１６９】
また、分散ファイルシステム５００は、クライアントノード５５０からデータノード５２０へのアクセスを分散させることができるので、データノード５２０へのアクセスを分散させるために、データブロックのサイズを小さくしてデータブロックの数を増加させる必要がない。また、データブロックのサイズを小さくしてデータブロックの数を増加させる必要がないので、データブロックの所在を管理するネームノード５１０の処理にかかる負荷が上がることもない。分散ファイルシステム１８００についても、分散ファイルシステム５００と同様のことがいえる。
【０１７０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
データを記憶する複数の記憶装置と、
ネットワークを介して接続する任意の第１のノードの指示に応じて、所定の数の前記記憶装置に対して同一のデータの書き込みを行なう複数の第２のノードと、
前記第２のノード毎に、該第２のノードと１または２以上の前記記憶装置とを接続する中継網と、
データの所在を管理し、前記第１のノードの問合せに応じて、前記第１のノードの所望のデータの所在を前記第１のノードに通知する第３のノードと、
備え、
前記第２のノードは、前記中継網を介して、前記所定の数の前記記憶装置に対して同一のデータの書き込みを行なう、
ことを特徴とするファイルシステム。
（付記２）
前記第３のノードは、
前記記憶装置に記憶するデータ毎に、該データを記憶した前記記憶装置と、該前記記憶装置と接続する前記第２のノードと、を対応付けた管理情報に基づいて、前記データの所在を管理し、
前記第１のノードが所望するデータの書き込み先として、前記所定の数の前記記憶装置と、該所定の数の前記記憶装置全てと接続している前記第２のノードと、を選択して前記第１のノードに通知する、
ことを特徴とする付記１に記載のファイルシステム。
（付記３）
前記第３のノードは、
前記記憶装置に記憶するデータ毎に、該データを記憶した前記記憶装置と、該前記記憶装置と接続する前記第２のノードと、を対応付けた管理情報に基づいて、前記データの所在を管理し、
脱退対象の第２のノードと接続している前記記憶装置を、前記脱退対象の第２のノード以外の他の第２のノードと前記中継網を介して接続させる、
ことを特徴とする付記１に記載のファイルシステム。
（付記４）
前記第３のノードは、
前記記憶装置に記憶するデータ毎に、該データを記憶した前記記憶装置と、該前記記憶装置と接続する前記第２のノードと、を対応付けた管理情報に基づいて、前記データの所在を管理し、
前記記憶装置のうち使用率が最大の第１の記憶装置と前記使用率が最小の第２の記憶装置とに前記中継網を介して接続する前記第２のノードに対して、前記第１の記憶装置から前記第２の記憶装置に一定量のデータの移動を指示する、
ことを特徴とする付記１に記載のファイルシステム。
（付記５）
前記第１の記憶装置と前記第２の記憶装置とに前記中継網を介して接続する第２のノードがない場合、前記第１の記憶装置と前記第２の記憶装置とを前記中継網を介して第２のノードと接続し、該接続した第２のノードに対して、前記第１の記憶装置から前記第２の記憶装置に一定量のデータの移動を指示する、
ことを特徴とする付記４に記載のファイルシステム。
（付記６）
前記第３のノードは、
前記使用率の最大値と最小値との差が一定の範囲内になるまで、前記第２のノードにデータの移動を指示する、
ことを特徴とする付記５に記載のファイルシステム。
（付記７）
前記第３のノードは、
前記記憶装置に記憶するデータ毎に、該データを記憶した前記記憶装置と、該前記記憶装置と接続する前記第２のノードと、を対応付けた管理情報に基づいて、前記データの所在を管理し、
前記第１のノードが所望するデータの読み出し先として、前記所望のデータが記憶されている前記記憶装置と接続している前記第２のノードを選択して前記第１のノードに通知する、
ことを特徴とする付記１に記載のファイルシステム。
（付記８）
前記第２のノードと前記中継網を介して接続する記憶装置は、前記第２のノード自身が前記第３のノードに対するインタフェースとして機能する第１の記憶装置と、他の前記第２のノードが前記第３のノードに対するインタフェースとして機能する第２の記憶装置と、を含み、
前記第３のノードからデータの書き込みの指示を受けると、自ノードと接続する第１の記憶装置に書き込み対象のデータを書き込むとともに、自ノードと接続する第２の記憶装置であって、前記第３のノードが書き込み先として指定した他の第２のノードと接続する第１の記憶装置、に対して前記中継網を介して前記書き込み対象のデータを書き込む、
ことを特徴とする付記１に記載のファイルシステム。
（付記９）
前記第２のノードと前記中継網を介して接続する記憶装置は、前記第２のノード自身が前記第３のノードに対するインタフェースとして機能する第１の記憶装置と、他の前記第２のノードが前記第３のノードに対するインタフェースとして機能する第２の記憶装置と、を含み、
前記第２のノードは、前記第３のノードからデータの複製の指示を受けると、自ノードと接続する第１の記憶装置に記憶されている複製対象のデータを、自ノードと接続する第２の記憶装置であって、前記第３のノードが複製先として指定した他の第２のノードと接続する第１の記憶装置、に対して前記中継網を介して書き込む、
ことを特徴とする付記１に記載のファイルシステム。
（付記１０）
前記第２のノードと前記中継網を介して接続する記憶装置は、前記第２のノード自身が前記第３のノードに対するインタフェースとして機能する第１の記憶装置と、他の前記第２のノードが前記第３のノードに対するインタフェースとして機能する第２の記憶装置と、を含み、
前記第２のノードは、前記第３のノードからデータの移動の指示を受けると、自ノードと接続する第１の記憶装置に記憶されている移動対象のデータを、自ノードと接続する第２の記憶装置であって、前記第３のノードが移動先として指定した他の第２のノードと接続する第１の記憶装置、に前記中継網を介して移動する、
ことを特徴とする付記１に記載のファイルシステム。
（付記１１）
データを記憶する記憶装置と、前記記憶装置に対してデータの書き込みを行なう第２のノードと、データの所在を管理する第３のノードと、を含むファイルシステムを制御する方法において、
前記第３のノードが、ネットワークを介して接続する任意の第１のノードの問合せに応じて、前記第１のノードの所望のデータの所在を前記第１のノードに通知し、
前記第２のノードが、前記第１のノードの指示に応じて、前記第２のノードと１または２以上の前記記憶装置とを接続する中継網を介して、該中継網と接続する所定の数の記憶装置に対して同一のデータを書き込む、
処理を行なう方法。
【符号の説明】
【０１７１】
４００      ファイルシステム
４１０      記憶装置
４２０      第２のノード
４３０      中継網
４４０      第３のノード
４５０      ネットワーク
４６０      第１のノード
【図１】
0005910117.tif 000002
【図２】
0005910117.tif 000003
【図３】
0005910117.tif 000004
【図４】
0005910117.tif 000005
【図５】
0005910117.tif 000006
【図６】
0005910117.tif 000007
【図７】
0005910117.tif 000008
【図８】
0005910117.tif 000009
【図９】
0005910117.tif 000010
【図１０】
0005910117.tif 000011
【図１１】
0005910117.tif 000012
【図１２】
0005910117.tif 000013
【図１３】
0005910117.tif 000014
【図１４】
0005910117.tif 000015
【図１５】
0005910117.tif 000016
【図１６】
0005910117.tif 000017
【図１７】
0005910117.tif 000018
【図１８】
0005910117.tif 000019
【図１９】
0005910117.tif 000020
【図２０】
0005910117.tif 000021
【図２１】
0005910117.tif 000022
【図２２】
0005910117.tif 000023
【図２３】
0005910117.tif 000024
【図２４】
0005910117.tif 000025
【図２５】
0005910117.tif 000026
【図２６】
0005910117.tif 000027
【図２７】
0005910117.tif 000028