(57)【要約】【課題】ファイルの名前を分散して管理する分散ファイルシステムでファイルのメタ情報の同期に必要な時間を短縮する。【解決手段】マスターネームノードは、ファイルを作成した際に、スレーブネームノードだけとメタ情報の同期処理を行い、ダミーネームノードとはメタ情報の同期を行わない。マスターネームノードは、ファイルの作成とは非同期でダミーネームノードとメタ情報の同期を行う。また、スレーブネームノードにマスターネームノードと同じメタ情報を記憶し、スレーブネームノードと同一ノードにあるデータノード及びマスターネームノードと同一ノードにあるデータノードにファイルを記憶する。【選択図】図２
2015035020.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置と管理装置とを有するノードが複数個ネットワークで接続されたストレージシステムにおいて、
複数の管理装置のうち、データが作成された際に該データをノード内の記憶装置に記憶するとともに、該データの識別子と該データの記憶装置における記憶位置とを対応付けて管理する第１の管理装置と、
前記データが第１の管理装置の管理下にあることを示す情報を該データの識別子と対応付ける指示を第１の管理装置から該データの作成時期とは非同期に受信し、該情報と識別子とを対応付けて管理する第２の管理装置と、
を有することを特徴とするストレージシステム。
【請求項２】
複数の管理装置のうち、前記データが作成された際に第１の管理装置の指示に基づいて該データをノード内の記憶装置に記憶するとともに、該データの識別子と該データの記憶装置における記憶位置とを対応付けて管理する第３の管理装置
をさらに有することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
第２の管理装置は、第１の管理装置から前記データのマイグレーション指示を受信し、該データをノード内の記憶装置に記憶するとともに、該データの識別子と該データの記憶装置における記憶位置とを対応付けて管理し、
第３の管理装置は、第１の管理装置から前記マイグレーション指示を受信し、前記データが第２の管理装置の管理下にあることを示す情報を該データの識別子と対応付けて管理することを特徴とする請求項２に記載のストレージシステム。
【請求項４】
第１の管理装置は、第２の管理装置からマイグレーション指示を受信すると、ノード内の記憶装置に記憶するデータが利用できるか否かを判定し、利用できない場合にだけ、第２の管理装置から該データを受信することを特徴とする請求項３に記載のストレージシステム。
【請求項５】
第２の管理装置は、前記データのアクセス数を記録し、該アクセス数が所定の閾値を越えると、第１の管理装置に該データのマイグレーションを要求することを特徴とする請求項１又は２に記載のストレージシステム。
【請求項６】
ノードが複数個ネットワークで接続されたストレージシステムで記憶装置とともに該ノードを構築するストレージ制御装置において、
データが他のストレージ制御装置の管理下にあることを示す情報を該データの識別子と対応付ける指示を該他のストレージ制御装置から該データの作成時期とは非同期に受信する受信部と、
前記指示に基づいて前記情報と識別子とを対応付けたデータ管理情報を記憶部に記憶させ、前記他のストレージ制御装置との間で前記データの識別子に関係するデータ管理情報を同期させる同期部と
を有することを特徴とするストレージ制御装置。
【請求項７】
ノードが複数個ネットワークで接続されたストレージシステムで記憶装置とともに該ノードを構築する管理装置に内蔵されたコンピュータで実行される制御プログラムにおいて、
データが他の管理装置の管理下にあることを示す情報を該データの識別子と対応付ける指示を該他の管理装置から該データの作成時期とは非同期に受信し、
前記指示に基づいて前記情報と識別子とを対応付けたデータ管理情報を記憶部に記憶させる
処理を前記コンピュータに実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、ストレージ制御装置及び制御プログラムに関する。
【背景技術】
【０００２】
近年、複数のファイルサーバを１台のファイルサーバと同じように運用し、複数のコンピュータネットワークを経由しつつファイルにアクセスすることを可能にする分散ファイルシステムの利用が進んでいる。分散ファイルシステムにより、複数のマシン上で複数のユーザーがファイルやストレージ資源を共用することができる。分散ファイルシステムを利用する形態として、これまでは、同一ビル内または同一サイト内で複数のファイルサーバを統合して、仮想的に１つのファイルサーバとする形態であったが、ファイルサーバを地球規模で広域配置する形態が広がりつつある。
【０００３】
分散ファイルシステムは、グローバルネームスペースとファイルシステムから構築される。グローバルネームスペースは、ファイルサーバ毎に個別に管理されたファイル名前空間を１つに統合し、仮想的なファイル名前空間を実現するものであり、分散ファイルシステムの中核技術である。分散ファイルシステムは、グローバルネームスペースによって作成された仮想名前空間をクライアントへ提供するシステムである。
【０００４】
図２０は、従来の分散ファイルシステムを示す図である。図２０に示すように、従来の分散ファイルシステムは、グローバルネームスペースを実現するネームノード（NameNode）９２と実際のデータを管理する複数のデータノード９３ａ〜９３ｄ（DataNode）で構成される。
【０００５】
ＰＣ（Personal  Computer）などのクライアント９１ａ〜９１ｄの内、クライアント９１ｄから特定のファイルにアクセスする場合、クライアント９１ｄは、ネームノード９２に対して要求を発行する（１）。ここで、複数のデータノード９３ａ〜９３ｄの内、例えば３台のデータノード９３ａ、９３ｃ及び９３ｄにファイル９４ａ、９４ｃ及び９４ｄが３重化されているとする。
【０００６】
ネームノード９２は、クライアント９１ａ〜９１ｄの位置、データノード９３ａ〜９３ｄの位置、ファイル情報などの情報を含むメタ情報を記憶するメタ情報記憶部９２ａを有する。そして、ネームノード９２は、メタ情報に基づいて、要求を発行したクライアント９１ｄに最も近いデータノード９３ｄにファイルの転送を指示する（２）。データノード９３ｄは、ネームノード９２の指示に基づいて、直接クライアント９１ｄにファイル転送を行う（３）。
【０００７】
しかし、図２０に示す分散ファイルシステムの場合、アクセスが発生したクライアント９１ｄとネームノード９２との距離が遠いと、上記（１）の処理に時間を要する。そこで、ネームノード９２の機能を複数のノードに分散する技術が開発されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００７−５３８３２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ネームノード９２の機能を複数のノードに分散すると、グローバルネームスペースの整合性維持のためにネームノード間で行われるメタ情報の同期にかかる時間の短縮が課題となる。ここで、グローバルネームスペースの整合性維持とは、複数のネームノード間でのメタ情報の整合がとれていることである。
【００１０】
本発明は、１つの側面では、ネームノード間で行われるメタ情報の同期にかかる時間を短縮することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示するストレージシステムは、１つの態様において、記憶装置と管理装置とを有するノードが複数個ネットワークで接続されたストレージシステムである。ストレージシステムは、複数の管理装置のうち、データが作成された際に該データをノード内の記憶装置に記憶するとともに、該データの識別子と該データの記憶装置における記憶位置とを対応付けて管理する第１の管理装置を有する。また、ストレージシステムは、前記データが第１の管理装置の管理下にあることを示す情報を該データの識別子と対応付ける指示を第１の管理装置から該データの作成時期とは非同期に受信し、該情報と識別子とを対応付けて管理する第２の管理装置を有する。
【発明の効果】
【００１２】
１実施態様によれば、ネームノード間で行われるメタ情報の同期にかかる時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例に係る分散ファイルシステムの構成を示す図である。
【図２】図２は、ネームノード間でのメタ情報の同期を説明するための図である。
【図３】図３は、実施例に係るネームノードの機能構成を示すブロック図である。
【図４Ａ】図４Ａは、メタ情報記憶部が記憶するメタ情報のデータ構造を示す図である。
【図４Ｂ】図４Ｂは、メタデータのメンバを説明するための図である。
【図５】図５は、ファイル作成部によるファイル作成を説明するための図である。
【図６】図６は、ネームノード間の再同期を説明するための図である。
【図７】図７は、ダミーネームノードへのファイル読み出し要求に対する分散ファイルシステムの処理を説明するための図である。
【図８】図８は、マイグレーションポリシーの例を示す図である。
【図９】図９は、マイグレーション処理を説明するための図である。
【図１０】図１０は、マイグレーション後のダミーネームノードへのファイル読み出しに対する処理を説明するための図である。
【図１１】図１１は、ハッシュ値を用いたファイルコピーのスキップを説明するための図である。
【図１２】図１２は、ファイル作成処理のフローを示すフローチャートである。
【図１３】図１３は、再同期処理のフローを示すフローチャートである。
【図１４】図１４は、ファイル読み出し処理のフローを示すフローチャートである。
【図１５】図１５は、マイグレーション処理のフローを示すフローチャートである。
【図１６】図１６は、マイグレーション後のファイル読み出し処理のフローを示すフローチャートである。
【図１７】図１７は、ハッシュ値を用いたマスター移行処理のフローを示すフローチャートである。
【図１８】図１８は、アクセス頻度による自動マイグレーション処理のフローを示すフローチャートである。
【図１９】図１９は、実施例に係るネーム管理プログラムを実行するコンピュータのハードウェア構成を示す図である。
【図２０】図２０は、従来の分散ファイルシステムを示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するストレージシステム、ストレージ制御装置及び制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１５】
まず、実施例に係る分散ファイルシステムの構成について説明する。図１は、実施例に係る分散ファイルシステムの構成を示す図である。図１に示すように、分散ファイルシステム１０１は、３つのエリア５１〜５３にそれぞれ配置されたネームノード１〜３を有する。例えば、エリア５１は東京であり、エリア５２はロンドンであり、エリア５３はニューヨークである。なお、図１において、ネームノード１〜３は、それぞれネートワークで接続されている。
【００１６】
ネームノード１〜３は、それぞれメタ情報を有し、分散ファイルシステム１０１全体のファイル名を管理する。また、各エリアには、ファイルが格納されるデータノードが配置される。具体的には、エリア５１にはデータノード６１〜６３が配置され、エリア５２にはデータノード７１〜７３が配置され、エリア５３にはデータノード８１〜８３が配置される。
【００１７】
なお、各エリアに配置されたネームノードとデータノードを合わせて、ここではノードと呼ぶ。例えば、ネームノード１とデータノード６１〜６３は、エリア５１に配置されたノードを形成する。
【００１８】
各エリアのクライアントは、各エリアのネームノードにファイルのアクセスを要求する。すなわち、エリア５１のクライアント５１ａ〜５１ｃはネームノード１にファイルアクセスを要求し、エリア５２のクライアント５２ａ〜５２ｃはネームノード２にファイルアクセスを要求し、エリア５３のクライアント５３ａ〜５３ｃはネームノード３にファイルアクセスを要求する。
【００１９】
ネームノード間では、メタ情報の同期が行われる。図２は、ネームノード間でのメタ情報の同期を説明するための図である。図２において、データノード６は、データノード６１〜６３を仮想的に１台に統合したノードであり、データノード７は、データノード７１〜７３を仮想的に１台に統合したノードであり、データノード８は、データノード８１〜８３を仮想的に１台に統合したノードである。
【００２０】
図２は、ネームノード１がファイルの作成要求をクライアントから受けた場合を示す。ネームノード１は、クライアントからファイルの作成要求を受けると、作成要求を受けたファイルについてマスターネームノードとなる。ここで、ファイルのマスターネームノードとは、そのファイルをマスターとして管理するネームノードである。そして、ネームノード１は、データノード６にファイルの作成を指示し、データノード６は、ファイル６ａを作成する。また、ネームノード１は、ファイル６ａのメタ情報をメタ情報記憶部１ａに記憶する。
【００２１】
そして、ネームノード１は、最も近いネームノード２にファイル６ａのコピーの作成を指示し、ネームノード２は、スレーブネームノードとしてデータノード７にファイル６ａを作成し、ファイル６ａのメタ情報をメタ情報記憶部２ａに記憶する。ここで、ファイルのスレーブネームノードとは、そのファイルをマスターに従属するスレーブとして管理するネームノードである。
【００２２】
このように、実施例に係る分散ファイルシステム１０１では、マスターネームノードとスレーブネームノードとの間で、ファイル及びメタ情報についてリアルタイムで同期が行われる。すなわち、実施例に係る分散ファイルシステム１０１では、マスターネームノードでファイルが作成された際に、マスターネームノードとスレーブネームノードとの間で、ファイル及びメタ情報の同期が行われる。
【００２３】
一方、ネームノード３は、ネームノード１でファイルが作成された際に、そのファイルをデータノード８に作成しない。ネームノード３のように、マスターネームノードでファイルが作成された際に自ノードのデータノードにデータを作成しないネームノードを、ここではファイルに対してダミーとして動作するダミーネームノードと呼ぶ。ダミーネームノードとマスターネームノードとの間では、メタ情報のリアルタイム同期は行われず、メタ情報の同期は、ファイルの作成とは非同期に行われる。また、ファイルの作成とは非同期に行われるメタ情報の同期では、ダミーネームノードは、メタ情報の一部だけをマスターネームノードから取得する。
【００２４】
なお、図１及び図２では、分散ファイルシステム１０１は、説明の便宜上ダミーネームノードを１台だけ有するが、分散ファイルシステム１０１は、多数のダミーネームノードを有することができる。したがって、分散ファイルシステム１０１は、ダミーネームノードとマスターネームノードとの間でメタ情報のリアルタイム同期を行わないことにより、メタ情報のリアルタイム同期を行うネームノードを減らすことができる。このため、分散ファイルシステム１０１は、メタ情報の同期に必要な時間を短縮することができる。
【００２５】
また、図１及び図２では、スレーブネームノードが１台の場合を示したが、データの多重度を増やすために、分散ファイルシステム１０１は、２台以上のスレーブネームノードを有することもできる。
【００２６】
次に、実施例に係るネームノードの機能構成について説明する。なお、ネームノード１〜３はいずれも同様の機能構成を有するので、ここではネームノード１を例にとって説明する。図３は、実施例に係るネームノードの機能構成を示すブロック図である。
【００２７】
図３に示すように、ネームノード１は、メタ情報記憶部１０と、ファイル作成部１１と、再同期部１２と、ファイルオープン部１３と、ファイル読出部１４と、ファイル書込部１５と、ファイルクローズ部１６と、ファイル削除部１７とを有する。また、ネームノード１は、統計処理部１８と、マイグレーション部１９と、通信部２０とを有する。
【００２８】
メタ情報記憶部１０は、ファイルのメタ情報やノードの位置情報などネームノード１が管理する情報を記憶する。図４Ａは、メタ情報記憶部が記憶するメタ情報のデータ構造を示す図である。図４Ａに示すように、メタ情報には、ディレクトリとメタデータが含まれる。ディレクトリは、ファイル名とｉノード番号をファイル毎に対応させて記憶する。ここで、ｉノード番号は、ファイルに関するメタデータを記憶するｉノードの番号である。
【００２９】
メタデータには、ｉノード番号、Type、Master、Slave、Create、Time、Path、Hashvalueがメンバとして含まれる。図４Ｂは、メタデータのメンバを説明するための図である。図４Ｂに示すように、Typeは、ファイルに対して自ネームノードがマスター（master）であるかスレーブ（slave）であるかダミー（dummy）であるかを示す。Masterは、ファイルのマスターネームノードを示す。Slaveは、ファイルのスレーブネームノードを示す。Createは、ファイルが作成されたネームノードを示す。Timeは、ファイルが作成された時間を示す。Pathは、ファイルが格納されているデータノードのパスを示す。Hashvalueは、ファイルの内容から算出されたハッシュ値を示す。
【００３０】
また、メタ情報記憶部１０は、ファイルのログ情報を記憶する。ログ情報には、クライアントからのファイルへのアクセス回数が含まれる。
【００３１】
図３に戻って、ファイル作成部１１は、クライアントからのファイル作成要求に基づいてファイルのメタ情報を作成するとともに、自ノードのデータノードにファイルを作成する。図５は、ファイル作成部１１によるファイル作成を説明するための図である。図５において、create("/aaa")は、クライアントからのファイル"aaa"の作成要求を示す。また、ネームノード１〜３は、それぞれネットワークで接続されている。
【００３２】
図５に示すように、クライアントからファイルの作成要求を受けると、ネームノード１のファイル作成部１１は、データノード６に実ファイルを作成するとともに、ネームノード２にスレーブファイルの作成を指示する。ここで、実ファイルを作成するとは、ディスク装置に実際にファイル６ａを作成することである。また、スレーブファイルとは、スレーブネームノードに作成されるファイル６ａのコピーである。
【００３３】
そして、ネームノード１のファイル作成部１１は、ファイル名"aaa"をinode#xと対応させてディレクトリに登録する。そして、ファイル作成部１１は、ｉノード番号がinode#x、自ノードがマスター、マスターがネームノード１、スレーブがネームノード２、ファイルを作成したネームノードはネームノード１、パスが/mnt1/Aであることを示すｉノードを作成する。
【００３４】
また、ネームノード２のファイル作成部は、実ファイルをデータノード２に作成するとともに、ファイル名"aaa"をinode#yと対応させてディレクトリに登録する。そして、ネームノード２のファイル作成部は、ｉノード番号がinode#y、自ノードがスレーブ、マスターがネームノード１、スレーブがネームノード２、ファイルを作成したネームノードはネームノード１、パスが/mnt1/Bであることを示すｉノードを作成する。
【００３５】
なお、この時点では、ダミーネームノードであるネームノード３はファイル名が"aaa"であるファイルのメタ情報は作成しない。ネームノード３は、再同期指示を受けたときにファイル名が"aaa"であるファイルのメタ情報を作成する。ここで、「再同期」とは、ファイル作成時にマスターとスレーブとの間で同期が行われることに対してマスターとダミーとの間では同期が行われないため、マスターとダミーとの間で行われる同期を意味する。
【００３６】
また、ネームノード１であるファイルが作成され、そのファイルについてのメタ情報が他のネームノードに反映されていない間に、別のネームノードで同じファイル名のファイル作成を可能とするため、ファイルはファイル名＋Createの情報で識別される。
【００３７】
再同期部１２は、定期的又はシステム管理者からの指示に基づいてネームノード間でメタ情報の再同期を行う。再同期部１２は、自身がマスターであるファイルについては、ダミーネームノードに対してダミーの作成を指示し、自身がダミーであるファイルについては、ダミーを作成する。ここで、ダミーの作成とは、ダミーネームノード内にファイルのメタ情報を作成することである。
【００３８】
図６は、ネームノード間の再同期を説明するための図である。図６では、図５に示したファイル"aaa"についての再同期を示す。図６に示すように、ファイル"aaa"についてマスターネームノードであるネームノード１の再同期部１２は、ダミーネームノードであるネームノード３に再同期を指示する。
【００３９】
すると、ネームノード３の再同期部は、ファイル名"aaa"をinode#ｚと対応させてディレクトリに登録する。そして、ネームノード３の再同期部は、ｉノード番号がinode#ｚ、自ノードがダミー、マスターがネームノード１、スレーブがネームノード２、ファイルを作成したネームノードはネームノード１、パスがnullであることを示すｉノードを作成する。ここで、「null」は、ファイルへのパスがないことを示す。すなわち、ダミーネームノードは、メタ情報だけを有し、自身のエリアにファイルを有しない。
【００４０】
このように、再同期部１２がネームノード間の再同期を行うことによって、ダミーネームノードは、自身がダミーであるファイルに対してアクセス要求があった際に、アクセス要求の転送先を知ることができる。
【００４１】
ファイルオープン部１３は、ファイルオープン要求に対してファイルが存在するかのチェックなどのオープン処理を行う。ファイルオープンを要求されたファイルについて自ノードがマスターであるファイルオープン部１３は、自ノードのデータノードのファイルに対してオープン処理を行い、スレーブネームノードにファイルのオープンを指示する。一方、ファイルオープンを要求されたファイルについて自ノードがマスターでないファイルオープン部１３は、マスターネームノードにファイルオープン要求を転送し、マスターネームノードからの応答に基づいて要求元に応答する。
【００４２】
ファイル読出部１４は、オープンされたファイルからデータの読み出しを行い、クライアントに送信する。読み出しを要求されたファイルについて自ノードがマスター又はスレーブであるファイル読出部１４は、自ノードのデータノードからファイルを読み出してクライアントに送信する。一方、読み出しを要求されたファイルについて自ノードがダミーであるファイル読出部１４は、マスターとスレーブのうち自ノードから近いネームノードにファイルの転送を要求し、転送されたファイルをクライアントに送信する。
【００４３】
図７は、ダミーネームノードへのファイル読み出し要求に対する分散ファイルシステム１０１の処理を説明するための図である。図７は、ファイルの読み出し要求はダミーネームノードであるネームノード４が受信し、読み出し要求があったファイルについて、ネームノード２がマスターであり、ネームノード１がスレーブである場合を示す。また、ネームノード１〜４は、それぞれネットワークで接続されている。
【００４４】
図７に示すように、ファイル読み出し要求を受信したネームノード４は、自分がダミーネームノードであるので、マスターネームノードであるネームノード２にファイルの転送を要求する。そして、ネームノード４は、ネームノード２から転送されたファイルをクライアントに送信する。なお、ここでは、マスターネームノードはダミーネームノードにファイルを転送し、ダミーネームノードがファイルをクライアントに転送するが、マスターネームノードは、ダミーネームノードにファイルを転送することなく、直接クライアントにファイルを送信することもできる。
【００４５】
ファイル書込部１５は、クライアントからのファイル書き込み要求で指定されたデータを指定されたファイルに書き込む。書き込みを要求されたファイルについて自ノードがマスターであるファイル書込部１５は、自ノードのデータノードにファイルを書き込み、スレーブネームノードにファイルの書き込みを指示する。一方、書き込みを要求されたファイルについて自ノードがマスターでないファイル書込部１５は、マスターネームノードに要求を転送し、マスターネームノードからの応答に基づいて要求元に応答する。
【００４６】
ファイルクローズ部１６は、ファイルクローズ要求で指定されたファイルについて、入出力の完了処理を行う。ファイルクローズを要求されたファイルについて自ノードがマスターであるファイルクローズ部１６は、自ノードのデータノードのファイルに対して完了処理を行い、スレーブネームノードにファイルのクローズを指示する。一方、ファイルクローズを要求されたファイルについて自ノードがマスターでないファイルクローズ部１６は、マスターネームノードにファイルクローズ要求を転送し、マスターネームノードからの応答に基づいて要求元に応答する。
【００４７】
ファイル削除部１７は、ファイル削除要求で指定されたファイルについて、ファイルの削除処理を行う。ファイル削除を要求されたファイルについて自ノードがマスターであるファイル削除部１７は、自ノードのファイルの削除処理を行い、スレーブネームノードにファイルの削除を指示する。一方、ファイル削除を要求されたファイルについて自ノードがマスターでないファイル削除部１７は、マスターネームノードにファイル削除要求を転送し、マスターネームノードからの応答に基づいて要求元に応答する。
【００４８】
統計処理部１８は、クライアントからのファイルのアクセス数を含むログ情報をメタ情報記憶部１０に記録する。
【００４９】
マイグレーション部１９は、マイグレーションポリシーに基づいてファイルのマイグレーションを行う。図８は、マイグレーションポリシーの例を示す図である。図８に示すように、マイグレーションポリシーの種類には、「スケジュール」、「マニュアル」、「自動」、「固定」が含まれる。
【００５０】
「スケジュール」は、スケジュールに基づいてマイグレーションを行うことを示し、マイグレーション部１９は、指定された時間になると、指定されたネームノードへ指定されたファイル又は指定されたディレクトリを移動する。例えば、東京で書き込まれたファイルがロンドンで参照又は更新され、さらにニューヨークで参照又は更新される場合、ファイルを時差に合わせて定期的に移動することで、分散フィアルシステム１０１は、ファイルアクセスを高速化することができる。
【００５１】
なお、マイグレーションスケジュールは全ネームノードで共有され、マイグレーションは各ファイルについてマスター主導で実施される。ファイルについてマスターでないネームノードは、そのファイルについてのマイグレーションスケジュールを無視する。
【００５２】
「マニュアル」は、システムの管理者の指示に基づいてマイグレーションを行うことを示し、マイグレーション部１９は、指定されたファイル又はディレクトリを、指定されたノードに移動する。
【００５３】
「自動」は、アクセス頻度に基づいてマイグレーションを行うことを示し、マイグレーション部１９は、アクセス頻度が最も高かったノードへファイルを移動する。例えば、東京で作成されたファイルが一定期間東京で参照又は更新された後、ニューヨークで長期間参照されるような場合、ファイルをアクセス頻度に基づいて移動することで、分散フィアルシステム１０１は、ファイルアクセスを高速化することができる。
【００５４】
「固定」は、マイグレーションを行わないことを示す。例えば、東京で作成された後、東京だけで利用されるようなファイルについては、マイグレーションは必要ない。
【００５５】
マイグレーション部１９は、マイグレーション処理として、移動元から移動先へのファイルのコピーとメタ情報の更新を行う。図９は、マイグレーション処理を説明するための図である。図９は、マスターネームノードがネームノード２であり、スレーブネームノードがネームノード３であり、ネームノード１及び４がダミーネームノードの状態で、ネームノード２からネームノード１へファイルをマイグレーションする場合を示す。
【００５６】
この場合、マイグレーション処理として、ネームノード１のマイグレーション部１９は、ファイル６ａをネームノード２からネームノード１へコピーする。そして、ネームノード１〜３のマイグレーション部は、ファイル６ａのメタ情報を更新する。
【００５７】
具体的には、ネームノード１のマイグレーション部１９は、自ノードをdummy（Ｄ）からmaster（Ｍ）へ更新し、マスターネームノードをネームノード２からネームノード１に更新し、スレーブネームノードをネームノード３からネームノード２へ更新する。また、ネームノード２のマイグレーション部は、自ノードをmaster（Ｍ）からslave（Ｓ）へ更新し、マスターネームノードをネームノード２からネームノード１に更新し、スレーブネームノードをネームノード３からネームノード２へ更新する。また、ネームノード３のマイグレーション部は、自ノードをslave（Ｓ）からdummy（Ｄ）へ更新し、マスターネームノードをネームノード２からネームノード１に更新し、スレーブネームノードをネームノード３からネームノード２へ更新する。
【００５８】
なお、マイグレーション前後ともダミーノードであるネームノード４については、マイグレーションに関するトラフィックが発生しない。したがって、分散ファイルシステム１０１は、マイグレーション時のネームノード間のトラフィックを削減することができる。
【００５９】
図１０は、マイグレーション後のダミーネームノードへのファイル読み出しに対する処理を説明するための図である。図１０は、図９で示したマイグレーション後で再同期前にネームノード４へクライアントからファイルの読み出し要求があった場合を示す。
【００６０】
ネームノード４のファイル読出部は、ファイルの読み出し要求を受信すると、自ノードがマスターでないので、メタ情報からマスターであるネームノード２へ読み出し要求を転送する。なお、この時点でのマスターネームノードはネームノード１であるが、ネームノード４のメタ情報は未更新のため、ネームノード４のファイル読出部は、マスターはネームノード２であると判断する。
【００６１】
ファイルの読み出し要求を受信したネームノード２のファイル読出部は、自ノードがマスターでないので、メタ情報からマスターであるネームノード１へ読み出し要求を転送する。そして、ネームノード１のファイル読出部１４は、データノード６からファイル６ａを読み出してネームノード４にメタ情報とともに転送する。そして。ネームノード４のファイル読出部は、クライアントにファイル６ａを送信するとともに、メタ情報を更新する。すなわち、ネームノード４のファイル読出部は、クライアントに送信したファイル６ａのマスターネームノードをネームノード１とし、スレーブネームノードをネームノード２とする。
【００６２】
なお、図９及び図１０において、ネームノード３はマイグレーションの結果、スレーブネームノードからダミーネームノードに変更されているが、データノード８の実ファイル６ｂは削除されない。実ファイル６ｂの削除は、データノード８のディスク使用率が閾値よりも高くなった場合に行われる。ネームノード３は、ｉノードに実ファイルのハッシュ値を保持し、再度ダミーからマスターやスレーブになる際、ハッシュ値が同じならファイルのコピーをスキップする。
【００６３】
図１１は、ハッシュ値を用いたファイルコピーのスキップを説明するための図である。図１１は、図９と同様にネームノード２からネームノード１にマスターが遷移する場合を示すが、ネームノード１には、既にデータノード６にファイル６ａがある場合を示す。図１１において、データノード７のファイル６ａのハッシュ値とデータノード６のファイル６ａのハッシュ値はＸＸＸで同じである。したがって、マイグレーションの際、データノード７のファイル６ａはコピーされることなく、データノード６のファイル６ａが実ファイルとして使用される。
【００６４】
図３に戻って、通信部２０は、他のネームノードやクライアントと通信を行う。例えば、ファイル作成部１１は、通信部２０を介してファイル作成要求をクライアントから受信し、通信部２０を介してスレーブファイルの作成指示を行う。また、再同期部１２は、通信部２０を介してメタ情報の送受信を行う。
【００６５】
次に、ファイル作成処理のフローについて説明する。図１２は、ファイル作成処理のフローを示すフローチャートである。なお、ここでは、図５に示したようにネームノード１がクライアントからファイル作成要求を受信した場合を例として説明する。
【００６６】
図１２に示すように、ネームノード１のファイル作成部１１は、クライアントからファイル作成要求を受信し（ステップＳ１）、データノード６に実ファイルを作成する（ステップＳ２）。そして、ファイル作成部１１は、Type=masterであるｉノードを作成し（ステップＳ３）、ディレクトリにファイル名と対応付けて登録する。
【００６７】
そして、ファイル作成部１１は、ネームノード２にスレーブファイルの作成要求を送信し、ネームノード２がスレーブファイルの作成要求を受信する（ステップＳ４）。そして、ネームノード２のファイル作成部が、実ファイルを作成し（ステップＳ５）、Type=slaveであるｉノードを作成する（ステップＳ６）。
【００６８】
そして、ネームノード２のファイル作成部は、ネームノード１にスレーブファイルの作成完了を応答し、ネームノード１のファイル作成部１１がクライアントにファイル作成完了を返信する（ステップＳ７）。
【００６９】
このように、ファイルを作成する際、マスターネームノードはスレーブネームノードとだけ同期処理を行い、他のネームノードをダミーネームノードとして同期処理を行わないことによって、分散ファイルシステム１０１は、同期処理時間を短縮することができる。
【００７０】
次に、再同期処理のフローについて説明する。図１３は、再同期処理のフローを示すフローチャートである。なお、ここでは、ネームノード１がマスターで、ネームノード３及びネームノードｘがダミーである場合を例として説明する。
【００７１】
図１３に示すように、マスターネームノードであるネームノード１の再同期部１２は、ダミーネームノードにダミー作成要求を送信する（ステップＳ１１）。すると、ダミーネームノードであるネームノード３及びネームノードｘの再同期部が、それぞれダミー作成を行う（ステップＳ１２及びステップＳ１３）。
【００７２】
そして、ネームノード１の再同期部１２は、ダミーネームノードからのダミー作成応答を待合せて（ステップＳ１４）、全てのダミーネームノードからダミー作成応答を受信すると、処理を終了する。
【００７３】
このように、再同期部がファイル作成とは非同期にダミーの作成を行うことによって、分散ファイルシステム１０１は複数のネームノード間でメタ情報の整合性を維持することができる。
【００７４】
次に、ファイル読み出し処理のフローについて説明する。図１４は、ファイル読み出し処理のフローを示すフローチャートである。なお、ここでは、ネームノード４がクライアントからファイル読み出し要求を受信した場合を例として説明する。
【００７５】
図１４に示すように、ネームノード４のファイル読出部は、ファイル読み出し要求を受信し（ステップＳ２１）、対象ファイルのｉノードから自ノードがマスターであるか否かを判定する（ステップＳ２２）。その結果、自ノードがマスターである場合には、ファイル読出部は、データノードからファイルを読み出し、クライアントへファイルを送信する（ステップＳ２５）。
【００７６】
一方、自ノードがマスターでない場合には、ファイル読出部は、マスターネームノードへ読み出し要求を転送する（ステップＳ２３）。そして、マスターネームノードのファイル読出部がデータノードからファイルを読み出し、ダミーネームノードすなわちネームノード４にファイルを送信する（ステップＳ２４）。そして、ネームノード４のファイル読出部は、クライアントへファイルを送信する（ステップＳ２５）。
【００７７】
このように、ダミーネームノードは、ファイル読み出し要求をマスターネームノードに転送することによって、データノードにないファイルの読み出し要求に応答することができる。なお、ここでは、ダミーネームノードはマスターネームノードにファイル読み出し要求を転送したが、ダミーネームノードは、マスターネームノードとスレーブネームノードのうち近い方にファイル読み出し要求を転送することもできる。
【００７８】
次に、マイグレーション処理のフローについて説明する。図１５は、マイグレーション処理のフローを示すフローチャートである。なお、ここでは、図９に示したようにネームノード２からネームノード１にマスターを移行する場合を例として説明する。
【００７９】
図１５に示すように、マイグレーション前のマスターネームノードであるネームノード２のマイグレーション部は、マイグレーション先及びスレーブネームノードへマイグレーション要求を送信する（ステップＳ３１）。
【００８０】
すると、マイグレーション後のマスターネームノードであるネームノード１のマイグレーション部１９は、要求元ネームノードからファイルをコピーし（ステップＳ３２）、ｉノード情報を更新する（ステップＳ３３）。ｉノード情報の更新として、具体的には、マイグレーション部１９は、自ノードをダミー（Ｄ）からマスター（Ｍ）へ変更し、マスターネームノードをネームノード２からネームノード１に変更し、スレーブノードをネームノード３からネームノード２に変更する。
【００８１】
また、マイグレーション前のスレーブネームノードであるネームノード３のマイグレーション部は、ｉノード情報を更新し（ステップＳ３４）、ファイルを削除可能対象とする（ステップＳ３５）。ｉノード情報の更新として、具体的には、マイグレーション部は、自ノードをスレーブ（Ｓ）からダミーへ変更し、マスターネームノードをネームノード２からネームノード１に変更し、スレーブノードをネームノード３からネームノード２に変更する。
【００８２】
そして、ネームノード２のマイグレーション部は、ネームノード１及びネームノード３と待合せて（ステップＳ３６）、ネームノード１及びネームノード３から応答を受信すると、ｉノード情報を更新する（ステップＳ３７）。具体的には、ネームノード２のマイグレーション部は、自ノードをマスターからスレーブへ変更し、マスターネームノードをネームノード２からネームノード１に変更し、スレーブノードをネームノード３からネームノード２に変更する。
【００８３】
このように、マイグレーション部が、新マスターネームノード及びスレーブノード以外にはマイグレーション要求を送信しないことによって、分散ファイルシステム１０１は、同期処理時間を短縮することができる。
【００８４】
次に、マイグレーション後のファイル読み出し処理のフローについて説明する。図１６は、マイグレーション後のファイル読み出し処理のフローを示すフローチャートである。なお、ここでは、ネームノード４がクライアントからファイル読み出し要求を受信した場合を例として説明する。
【００８５】
図１６に示すように、ネームノード４のファイル読出部は、ファイル読み出し要求を受信すると、自ノードが読み出し対象ファイルのマスターであるか否かを判定する（ステップＳ４１）。その結果、自ノードがマスターである場合には、ファイル読出部は、データノードからファイルを読み出し、ステップＳ４７へ進む。
【００８６】
一方、自ノードがマスターでない場合には、ファイル読出部は、ｉノード情報に従ってファイル読み出し要求をマスターネームノードであるネームノード２へ転送する（ステップＳ４２）。そして、ネームノード２のファイル読出部が、ファイル読み出し要求を受信して、自ノードが読み出し対象ファイルのマスターであるか否かを判定する（ステップＳ４３）。その結果、自ノードがマスターである場合には、ネームノード２のファイル読出部は、データノードからファイルを読み出して、ファイルをネームノード４へ転送する（ステップＳ４６）。そして、制御がステップＳ４７へ移動する。
【００８７】
一方、自ノードがマスターでない場合には、ネームノード２のファイル読出部は、ファイル読み出し要求をマスターネームノード（ここでは、ネームノード１とする）へ転送する（ステップＳ４４）。ここで、自ノードがマスターでない場合とは、マスターネームノードがネームノード２からネームノード１へ移行した後で再同期前にネームノード４がクライアントからファイル読み出し要求を受信した場合である。
【００８８】
そして、ネームノード１のファイル読出部１４が、ファイル読み出し要求を受信して、データノードからファイルを読み出して、ファイルをネームノード４へ転送する（ステップＳ４５）。そして、制御がステップＳ４７へ移動する。
【００８９】
そして、ネームノード４のファイル読出部は、クライアントへファイルを送信し（ステップＳ４７）、ｉノード情報を更新する（ステップＳ４８）。具体的には、ネームノード４のファイル読出部は、マスターネームノードをネームノード２からネームノード１に変更し、スレーブノードをネームノード３からネームノード２に変更する。
【００９０】
このように、ダミーネームノードが、マイグレーション前の古いｉノード情報に基づいてファイル読み出し要求を古いマスターネームノードに転送した場合には、古いマスターネームノードが新しいマスターネームノードにファイル読み出し要求を転送する。したがって、ダミーネームノードはマスターネームノードからファイルを転送してもらうことができる。
【００９１】
次に、ハッシュ値を用いたマスター移行処理のフローについて説明する。図１７は、ハッシュ値を用いたマスター移行処理のフローを示すフローチャートである。なお、ここでは、図１１に示したようにマスターの移行先のネームノード１にファイルがある場合を例として説明する。
【００９２】
図１７に示すように、マイグレーション前のマスターネームノードであるネームノード２のマイグレーション部は、マイグレーション先へマイグレーション要求を送信する（ステップＳ５１）。この時、ネームノード２のマイグレーション部は、対象ファイルのハッシュ値も送信する。なお、ここでは、スレーブノードへのマイグレーション要求の送信については、説明を省略する。
【００９３】
マイグレーション後のマスターネームノードであるネームノード１のマイグレーション部１９は、マイグレーションの対象ファイルの実体を保持し、かつ、ハッシュ値が一致するか否かを判定する（ステップＳ５２）。その結果、対象ファイルの実体を保持し、かつ、ハッシュ値が一致する場合には、マイグレーション部１９は、ファイルのコピーをスキップしてステップＳ５４に進む。一方、対象ファイルの実体を保持しないか、又は、ハッシュ値が一致しない場合には、マイグレーション部１９は、旧マスターネームノードからファイルをコピーする（ステップＳ５３）。
【００９４】
そして、マイグレーション部１９は、ｉノード情報を更新する（ステップＳ５４）。ｉノード情報の更新として、具体的には、マイグレーション部１９は、自ノードをダミーからマスターへ変更し、マスターネームノードをネームノード２からネームノード１に変更し、スレーブノードをネームノード３からネームノード２に変更する。
【００９５】
そして、ネームノード２のマイグレーション部は、ネームノード１から応答を受信すると、ｉノード情報を更新する（ステップＳ５５）。具体的には、ネームノード２のマイグレーション部は、自ノードをマスターからスレーブへ変更し、マスターネームノードをネームノード２からネームノード１に変更し、スレーブノードをネームノード３からネームノード２に変更する。
【００９６】
このように、マイグレーション部１９は、対象ファイルの実体を保持し、かつ、ハッシュ値が一致する場合には、対象ファイルのコピーをスキップすることで、マスター移行処理の負荷を低減することができる。
【００９７】
次に、アクセス頻度による自動マイグレーション処理のフローについて説明する。図１８は、アクセス頻度による自動マイグレーション処理のフローを示すフローチャートである。
【００９８】
図１８に示すように、ダミーネームノードのマイグレーション部は、ネームノードのスケジュール機能により設定された時刻に起動される（ステップＳ６１）。起動されたマイグレーション部は、自動マイグレーションの対象のファイルのアクセス数がしきい値を超えているか否かを判定する（ステップＳ６２）。その結果、対象ファイルのアクセス数がしきい値を超えていない場合には、制御が、ステップＳ６６へ移動する。
【００９９】
一方、対象ファイルのアクセス数がしきい値を超えている場合には、マイグレーション部は、マスターへマイグレーションを要求する（ステップＳ６３）。すると、マスターネームノードのマイグレーション部は、自ノードのアクセス数より、要求したダミーのアクセス数が多いか否かを判定し（ステップＳ６４）、多い場合には、図１５に示したマイグレーション処理を行う（ステップＳ６５）。
【０１００】
そして、ダミーネームノードのマイグレーション部は、自動マイグレーション要否を未確認のダミーファイルが存在するか否かを判定し（ステップＳ６６）、存在する場合には、ステップＳ６２に戻り、存在しない場合には、処理を終了する。
【０１０１】
このように、マイグレーション部が自動マイグレーション処理を行うことによって、アクセス頻度の高いエリアにファイルを移動することができ、分散ファイルシステム１０１はファイルへのアクセスを高速化することができる。
【０１０２】
上述してきたように、実施例では、マスターネームノードは、ファイルを作成した際に、スレーブネームノードだけとメタ情報の同期処理を行い、ダミーネームノードとはメタ情報の同期を行わない。マスターネームノードは、ファイルの作成とは非同期でダミーネームノードとメタ情報の同期を行う。したがって、分散ファイルシステム１０１は、ネームノード間で行われるメタ情報の同期にかかる時間を短縮することができる。
【０１０３】
また、実施例では、スレーブネームノードにマスターネームノードと同じメタ情報を記憶し、スレーブネームノードと同一ノードにあるデータノード及びマスターネームノードと同一ノードにあるデータノードにファイルを記憶する。したがって、分散ファイルシステム１０１は、信頼性の高いファイルシステムを提供することができる。
【０１０４】
また、実施例では、マスターネームノードのマイグレーション部がマイグレーション先のダミーネームノードにマイグレーション要求を送信し、マイグレーション要求を受信したダミーネームノードは対象ファイルについてマスターネームノードとなる。したがって、時差のある複数のエリアで同一のファイルをアクセスする場合に、時差に合わせてファイルを記憶するエリアを移動することによって、分散ファイルシステム１０１は、ファイルへのアクセスを高速化することができる。
【０１０５】
また、実施例では、マイグレーション先のマイグレーション部は、対象ファイルの有無を判定し、対象ファイルがある場合には、マイグレーション元からの対象ファイルのコピーを行わない。したがって、分散ファイルシステム１０１は、マイグレーション処理に必要な時間を短縮することができる。
【０１０６】
また、実施例では、ダミーネームノードのマイグレーション部は、スケジュールされた時刻に自動マイグレーション対象のファイルについてアクセス数が所定の閾値を超えたか否かを判定し、超えた場合には、マスターネームノードにマイグレーション要求を送る。したがって、分散ファイルシステム１０１は、ファイルをアクセス頻度の高いノードに配置することができ、ファイルへのアクセスを高速化することができる。
【０１０７】
なお、実施例では、ネームノードについて説明したが、ネームノードが有する構成をソフトウェアによって実現することで、同様の機能を有するネーム管理プログラムを得ることができる。そこで、ネーム管理プログラムを実行するコンピュータについて説明する。
【０１０８】
図１９は、実施例に係るネーム管理プログラムを実行するコンピュータのハードウェア構成を示す図である。図１９に示すように、コンピュータ１００は、メインメモリ１１０と、ＣＰＵ（Central  Processing  Unit）１２０と、ＬＡＮ（Local  Area  Network）インタフェース１３０と、ＨＤＤ（Hard  Disk  Drive）１４０とを有する。また、コンピュータ１００は、スーパーＩＯ（Input  Output）１５０と、ＤＶＩ（Digital  Visual  Interface）１６０と、ＯＤＤ（Optical  Disk  Drive）１７０とを有する。
【０１０９】
メインメモリ１１０は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ１２０は、メインメモリ１１０からプログラムを読み出して実行する中央処理装置である。ＣＰＵ１２０は、メモリコントローラを有するチップセットを含む。
【０１１０】
ＬＡＮインタフェース１３０は、コンピュータ１００をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ１４０は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ１５０は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ１６０は、液晶表示装置を接続するインタフェースであり、ＯＤＤ１７０は、ＤＶＤの読み書きを行う装置である。
【０１１１】
ＬＡＮインタフェース１３０は、ＰＣＩエクスプレスによりＣＰＵ１２０に接続され、ＨＤＤ１４０及びＯＤＤ１７０は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ１２０に接続される。スーパーＩＯ１５０は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ１２０に接続される。
【０１１２】
そして、コンピュータ１００において実行されるネーム管理プログラムは、ＤＶＤに記憶され、ＯＤＤ１７０によってＤＶＤから読み出されてコンピュータ１００にインストールされる。あるいは、ネーム管理プログラムは、ＬＡＮインタフェース１３０を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ１００にインストールされる。そして、インストールされたネーム管理プログラムは、ＨＤＤ１４０に記憶され、メインメモリ１１０に読み出されてＣＰＵ１２０によって実行される。
【０１１３】
また、実施例では、データノードがファイルを記憶する場合について説明したが、本発明はこれに限定されるものではなく、データノードが他の形態のデータを記憶する場合にも同様に適用することができる。
【符号の説明】
【０１１４】
１〜４，９２    ネームノード
１ａ〜３ａ，９２ａ    メタ情報記憶部
６〜９，６１〜６３，７１〜７３，８１〜８３，９３ａ〜９３ｄ    データノード
６ａ，６ｂ，９４ａ，９４ｃ，９４ｄ    ファイル
１０    メタ情報記憶部
１１    ファイル作成部
１２    再同期部
１３    ファイルオープン部
１４    ファイル読出部
１５    ファイル書込部
１６    ファイルクローズ部
１７    ファイル削除部
１８    統計処理部
１９    マイグレーション部
２０    通信部
５１〜５３    エリア
５１ａ〜５１ｃ，５２ａ〜５２ｃ，５３ａ〜５３ｃ，９１ａ〜９１ｄ    クライアント
１００    コンピュータ
１１０    メインメモリ
１２０    ＣＰＵ
１３０    ＬＡＮインタフェース
１４０    ＨＤＤ
１５０    スーパーＩＯ
１６０    ＤＶＩ
１７０    ＯＤＤ
【図１】
2015035020.tif 000003
【図２】
2015035020.tif 000004
【図３】
2015035020.tif 000005
【図４Ａ】
2015035020.tif 000006
【図４Ｂ】
2015035020.tif 000007
【図５】
2015035020.tif 000008
【図６】
2015035020.tif 000009
【図７】
2015035020.tif 000010
【図８】
2015035020.tif 000011
【図９】
2015035020.tif 000012
【図１０】
2015035020.tif 000013
【図１１】
2015035020.tif 000014
【図１２】
2015035020.tif 000015
【図１３】
2015035020.tif 000016
【図１４】
2015035020.tif 000017
【図１５】
2015035020.tif 000018
【図１６】
2015035020.tif 000019
【図１７】
2015035020.tif 000020
【図１８】
2015035020.tif 000021
【図１９】
2015035020.tif 000022
【図２０】
2015035020.tif 000023