(57)【要約】【課題】  フェイルオーバを行う場合に、利用度の高い業務サービスを優先的に再開できるようにする。【解決手段】  ノード１とノード２とは互いにフェイルオーバの関係に立ち、共有ＬＵを介して、フェイルオーバに使用する情報を共有する。ノード１にマウントされているファイルシステムＦＳ１Ａ，ＦＳ１Ｂのうち、ＦＳ１Ａにはレベル１の動作が割り当てられており、ＦＳ１Ｂにはレベル２の動作が割り当てられている。レベル１のファイルシステムＦＳ１Ａは、フェイルオーバの開始と同時に、ノード２に引き継がれる。レベル２のファイルシステムＦＳ１Ｂは、フェイルオーバ開始後において、ＦＳ１Ｂへのアクセス要求が発生した場合に、ノード２に引き継がれる。これにより、利用度の高い業務サービスを早期に再開することができる。【選択図】        図１
2005258847.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータを接続し、所定の場合に、フェイルオーバ元コンピュータのフェイルオーバ対象リソースをフェイルオーバ先コンピュータに引き継がせるフェイルオーバクラスタシステムであって、
前記フェイルオーバ対象リソースを段階的に引継ぎ可能な制御部を備えたフェイルオーバクラスタシステム。
【請求項２】
前記制御部は、前記フェイルオーバ対象リソースに設定される優先順位に基づいて、前記フェイルオーバ対象リソースを段階的に引継ぎ可能である請求項１に記載のフェイルオーバクラスタシステム。
【請求項３】
前記制御部は、前記フェイルオーバ対象リソースの使用状況に基づいて、前記フェイルオーバ対象リソースに予め前記優先順位を設定する請求項２に記載のフェイルオーバクラスタシステム。
【請求項４】
前記各コンピュータは、共有記憶装置を介して、前記フェイルオーバ対象リソースの引継ぎに関する引継情報を共有しており、
前記制御部は、前記共有記憶装置の引継情報を参照することにより、前記優先順位に基づいて、前記フェイルオーバ対象リソースを段階的に引継ぎ可能である請求項３に記載のフェイルオーバクラスタシステム。
【請求項５】
前記引継情報は、前記フェイルオーバ対象リソースを特定するための情報と、前記優先順位に従って前記フェイルオーバ対象リソースに設定される引継処理動作とを関連付けて構成されている請求項４に記載のフェイルオーバクラスタシステム。
【請求項６】
前記優先順位には、直ちに引継処理を実行させる第１順位と、前記フェイルオーバ対象リソースへのアクセス要求が発生した場合に引継処理を実行させる第２順位とが含まれている請求項５に記載のフェイルオーバクラスタシステム。
【請求項７】
前記優先順位には、さらに、前記フェイルオーバ先コンピュータが所定の低負荷状態である場合に、前記フェイルオーバ対象リソースの引継処理を実行させる第３順位が含まれている請求項６に記載のフェイルオーバクラスタシステム。
【請求項８】
前記優先順位には、さらに、引継処理を実行しない第４順位が含まれている請求項６に記載のフェイルオーバクラスタシステム。
【請求項９】
前記フェイルオーバ対象リソースは、ファイルシステムであり、各ファイルシステム毎に前記優先順位がそれぞれ予め設定される請求項６に記載のフェイルオーバクラスタシステム。
【請求項１０】
互いにフェイルオーバ関係に立つ複数のコンピュータを接続して構成されるフェイルオーバクラスタシステムのフェイルオーバ方法であって、
フェイルオーバ対象リソースの使用状況を監視するステップと、
前記使用状況に基づいて、前記フェイルオーバ対象リソースの優先順位を設定するステップと、
前記フェイルオーバ対象リソースを特定するための情報と、前記優先順位に従って前記フェイルオーバ対象リソースに設定される引継処理動作とを関連付けて構成される引継情報を、前記各コンピュータにより共有される共有ディスクに記憶させるステップと、
フェイルオーバ実行条件が成立したか否かを判定するステップと、
前記フェイルオーバ実行条件が成立したと判定された場合は、前記共有ディスクに記憶された前記引継情報を参照し、前記優先順位に基づいて、フェイルオーバ元コンピュータの前記フェイルオーバ対象リソースをフェイルオーバ先コンピュータに段階的に引き継がせるステップと、
を含むフェイルオーバ方法。
【請求項１１】
フェイルオーバ元コンピュータと、
このフェイルオーバ元コンピュータに接続されるフェイルオーバ先コンピュータと、
前記フェイルオーバ元コンピュータと前記フェイルオーバ先コンピュータとに共有される共有ディスクと、を備え、
前記フェイルオーバ元コンピュータには、
フェイルオーバ対象となっている各ファイルシステムの使用状況に基づいて、各ファイルシステムを第１カテゴリ、第２カテゴリ、または第３カテゴリのいずれかに区分し、この前記各ファイルシステムと前記各カテゴリとの対応関係を前記共有ディスクに記憶させる優先順位決定処理部を設け、
前記フェイルオーバ先コンピュータには、
前記第１カテゴリに属するファイルシステムについては、即時マウントを実行するフェイルオーバ処理部と、
前記第２カテゴリに属するファイルシステムについてアクセス要求が発生した場合に、前記第２カテゴリに属するファイルシステムのマウントを実行し、前記第３カテゴリに属するファイルシステムについては、アクセス要求の有無を問わずにマウントしない、アクセス要求受付処理部とを設けたフェイルオーバクラスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フェイルオーバクラスタシステム及びフェイルオーバ方法に関する。
【背景技術】
【０００２】
クラスタシステムとは、複数のコンピュータ（ノードとも呼ぶ）を疎結合させて１つのまとまりを構成したものである。クラスタシステムとしては、例えば、負荷分散型やフェイルオーバ型等が知られている。フェイルオーバクラスタシステムとは、複数のコンピュータによってシステムを冗長化したものである。フェイルオーバシステムでは、一方のコンピュータが停止した場合に、他方のコンピュータが業務を引き継ぎ、クライアントコンピュータに対する業務アプリケーションサービスの継続性を保証している。一方のコンピュータと他方のコンピュータとは、ＬＡＮ等の通信回線（インターコネクト）を介して接続されており、互いの間でハートビート通信を行うことにより、相手方コンピュータの停止を監視する。
【０００３】
ハートビート通信とは、複数のコンピュータ間で所定の信号を所定間隔で通信することにより、互いの機能停止を監視する技術である。ハートビート通信が行われている間は、相手方コンピュータが正常に稼働しているものと判断され、フェイルオーバ（業務の引継ぎ）は行われない。逆に、ハートビート通信が途切れた場合は、相手方コンピュータがシステムダウンしたものと判断され、相手方コンピュータで提供されていた業務アプリケーションサービスをフェイルオーバ先コンピュータで引継ぐようになっている。
【０００４】
業務アプリケーションサービスを利用するクライアントコンピュータからは、フェイルオーバクラスタ全体が１つのコンピュータのように見える。従って、現用系コンピュータから待機系コンピュータに処理が切り替わった場合でも、クライアントコンピュータは、どのコンピュータから業務アプリケーションサービスが提供されているかを意識することはない。
【０００５】
ここで、フェイルオーバ先コンピュータの稼働状況を何ら考慮せずにフェイルオーバを実行した場合は、業務アプリケーションサービスを肩代わりするコンピュータ自体が過負荷になり、応答性等が低下する可能性がある。そこで、フェイルオーバ先コンピュータの稼働状況に応じて、業務アプリケーションサービスの優先度を変更できるようにした技術も知られている（特許文献１）。
【特許文献１】特開平１１−３５３２９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記文献に記載の技術では、フェイルオーバ対象の資源の全体を一度に一括して、フェイルオーバ元からフェイルオーバ先に移行させるようになっている。従って、フェイルオーバ対象の資源が多くなればなるほど、フェイルオーバ先コンピュータで業務アプリケーションサービスを再開するまでに時間がかかる。
【０００７】
例えば、ファイルシステムの引継の場合は、フェイルオーバ元でのファイルシステムのアンマウントと、フェイルオーバ先でのファイルシステムのマウントとが必要となる。アンマウントやマウントを行う場合は、キャッシュ上のデータをディスクに反映させたり、更新履歴ファイル等に基づいてデータの記憶状態を再現等することにより、データ群の整合性を保つ必要がある。従って、フェイルオーバ元からフェイルオーバ先に移行させるファイルシステムの数が増大するほど、業務アプリケーションサービス再開までの時間が長くなる。
【０００８】
本発明は、上記の問題点に鑑みてなされたもので、その目的の一つは、業務再開までの時間を短縮できるようにしたフェイルオーバクラスタシステム及びフェイルオーバ方法を提供することにある。本発明の目的の一つは、使用頻度の高いリソースを先に移行させ、使用頻度の低いリソースは後から移行させることにより、利便性を低下させずに業務再開時間を短縮できるようにしたフェイルオーバクラスタシステム及びフェイルオーバ方法を提供することにある。本発明の目的の一つは、リソースの使用状況に応じて、引継処理の順序を動的に変更することにより、より効率的なフェイルオーバを行うことができるフェイルオーバクラスタシステム及びフェイルオーバ方法を提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００９】
上記課題を解決すべく、本発明に従うフェイルオーバクラスタシステムは、複数のコンピュータを接続し、所定の場合に、フェイルオーバ元コンピュータのフェイルオーバ対象リソースをフェイルオーバ先コンピュータに引き継がせるものであって、フェイルオーバ対象リソースを段階的に引継ぎ可能な制御部を備えている。
【００１０】
フェイルオーバ対象リソースとしては、例えば、ファイルシステム等を挙げることができる。制御部は、フェイルオーバ対象リソースに設定される優先順位に基づいて、フェイルオーバ対象リソースを段階的に引継ぐことができる。リソースを段階的に引継ぐとは、例えば、あるファイルシステムを先に移行させ、他のファイルシステムを後から移行させる場合等のように、各リソース単位で引継処理を行うことを意味する。
【００１１】
制御部は、フェイルオーバ対象リソースの使用状況に基づいて、フェイルオーバ対象リソースに予め優先順位を設定することができる。
【００１２】
また、各コンピュータは、共有記憶装置を介して、フェイルオーバ対象リソースの引継ぎに関する引継情報を共有することができる。そして、制御部は、共有記憶装置の引継情報を参照することにより、優先順位に基づいて、フェイルオーバ対象リソースを段階的に引継ぐことができる。
【００１３】
引継情報は、フェイルオーバ対象リソースを特定するための情報と、優先順位に従ってフェイルオーバ対象リソースに設定される引継処理動作とを関連付けて構成することができる。
【００１４】
また、優先順位には、直ちに引継処理を実行させる第１順位と、フェイルオーバ対象リソースへのアクセス要求が発生した場合に引継処理を実行させる第２順位とを含めることができる。
さらに、フェイルオーバ先コンピュータが所定の低負荷状態である場合に、フェイルオーバ対象リソースの引継処理を実行させる第３順位を含めてもよい。
さらに、引継処理を実行しない第４順位を含めることもできる。
【発明を実施するための最良の形態】
【００１５】
以下、図１〜図１６に基づいて、本発明の実施形態を説明する。
本発明に従うフェイルオーバクラスタシステムは、例えば、図１（ａ）の発明概念図に示すように、各ノード１，２は互いにフェイルオーバ対象となっており、ハートビート通信を行うことで相互に監視している。各ノード１，２は、共有ＬＵ（Logical Unit）を介して、フェイルオーバに使用する各種の情報を共有している。各ノード１，２は、それぞれファイルシステムを利用可能であり、それぞれの業務アプリケーションサービスを提供することができる。しかし、図１では、説明の便宜上、ノード１のファイルシステムＦＳ１Ａ，ＦＳ１Ｂのみを示す。
【００１６】
図１（ｂ）に示すように、ある時点において何らかの障害が発生し、ノード１がシステムダウンした場合は、ノード１、２間のハートビート通信が途絶える。ノード２は、ハートビート通信の断絶に基づいて、ノード１のシステムダウンを検出し、フェイルオーバを実行する。ノード１には、複数のファイルシステムＦＳ１Ａ，ＦＳ１Ｂがマウントされている。これら複数のファイルシステムＦＳ１Ａ，ＦＳ１Ｂは、フェイルオーバ対象になっているものとする。本実施例では、全てのフェイルシステムＦＳ１Ａ，ＦＳ１Ｂを一度に一括して、フェイルオーバ先のノード２に移すのではなく、ファイルシステムの使用状況に基づいて、段階的に移行可能となっている。即ち、まず最初に、フェイルオーバの開始と共に、優先順位が高く設定されているＦＳ１Ａを直ちにノード１にマウントする。そして、図１（ｃ）に示すように、優先順位が低く設定されているＦＳ１Ｂについては、ＦＳ１Ｂへのアクセス要求が発生するのを待ってから、ノード２にマウントする。
【００１７】
このように、本実施形態では、フェイルオーバ対象となっているファイルシステムＦＳ１Ａ，ＦＳ１Ｂを、ファイルシステムの使用状況に応じて、フェイルオーバ元のノード１からフェイルオーバ先のノード２に段階的に移行させる。ファイルシステムの使用状況は種々変化するため、移行順序を規定する優先度も動的に変更される。本実施形態では、優先度の高いリソースＦＳ１Ａは直ちに移行させ、優先度の低いリソースＦＳ１Ｂは必要に応じて移行させる。従って、使用頻度の高いＦＳ１Ａを用いた業務アプリケーションサービスをより早く再開することができ、ユーザの利便性が向上する。詳細は後述するが、リソースの分類方法と引継動作の内容等には種々の変形例が存在する。
【００１８】
本実施形態では、互いにフェイルオーバ関係に立つ複数のコンピュータを接続して構成されるフェイルオーバクラスタシステムのフェイルオーバ方法が開示されている。この方法には、フェイルオーバ対象リソースの使用状況を監視するステップと、使用状況に基づいて、フェイルオーバ対象リソースの優先順位を設定するステップと、フェイルオーバ対象リソースを特定するための情報と、優先順位に従ってフェイルオーバ対象リソースに設定される引継処理動作とを関連付けて構成される引継情報を、各コンピュータにより共有される共有ディスクに記憶させるステップと、フェイルオーバ実行条件が成立したか否かを判定するステップと、フェイルオーバ実行条件が成立したと判定された場合は、共有ディスクに記憶された引継情報を参照し、優先順位に基づいて、フェイルオーバ元コンピュータのフェイルオーバ対象リソースをフェイルオーバ先コンピュータに段階的に引き継がせるステップと、を含んでいる。
【００１９】
詳細はさらに後述するが、本実施形態のフェイルオーバクラスタシステムは、フェイルオーバ元コンピュータと、このフェイルオーバ元コンピュータに接続されるフェイルオーバ先コンピュータと、フェイルオーバ元コンピュータとフェイルオーバ先コンピュータとに共有される共有ディスクと、を備えている。そして、フェイルオーバ元コンピュータには、フェイルオーバ対象となっている各ファイルシステムの使用状況に基づいて、各ファイルシステムを第１カテゴリ、第２カテゴリ、または第３カテゴリのいずれかに区分し、この各ファイルシステムと各カテゴリとの対応関係を共有ディスクに記憶させる優先順位決定処理部を設け、フェイルオーバ先コンピュータには、第１カテゴリに属するファイルシステムについては、即時マウントを実行するフェイルオーバ処理部と、第２カテゴリに属するファイルシステムについてアクセス要求が発生した場合に、第２カテゴリに属するファイルシステムのマウントを実行し、第３カテゴリに属するファイルシステムについては、アクセス要求の有無を問わずにマウントしない、アクセス要求受付処理部とを設けている。
【実施例１】
【００２０】
図１は、本実施例によるフェイルオーバクラスタシステムの全体概要を示す機能ブロック図である。このクラスタシステムは、それぞれ後述するように、互いにフェイルオーバ対象となっている複数のノード１，２と、各ノード１，２により共有される共有ディスク４とを備えている。
【００２１】
ノード１，２は、それぞれ例えば、CPU、メモリ、インターフェース回路等のコンピュータ資源を備えたコンピュータシステム（サーバマシン）として構成されている。ノード１，２は、例えば、ファイル共有サービスに特化したNAS（Network Attached Storage）として構成できる。あるいは、各ノード１，２を、汎用のＯＳ（Operating System）上にファイル共有プログラムを実装したファイルサーバとして構成してもよい。
【００２２】
ノード１とノード２とは、それぞれサービス提供の通信ネットワークＣＮ１を介して、１つまたは複数のホスト装置５に接続されている。また、ノード１とノード２とは、別の通信ネットワークＣＮ２を介して相互に接続されている。さらに、ノード１とノード２とは、通信ネットワークＣＮ３を介して共有ＬＵ４にそれぞれ接続されている。ここで、通信ネットワークＣＮ１，ＣＮ２は、例えば、LAN（Local Area Network）等として構成することができる。通信ネットワークＣＮ３は、例えば、SAN（Storage Area Network）等として構成することができる。通信ネットワークやプロトコルは、上記の例に限らず、種々のものを適宜採用可能である。
【００２３】
ノード１は、ファイル共有機能１１と、フェイルオーバ機能１２とを備えている。また、ノード１は、複数のファイルシステムＦＳ１Ａ〜ＦＳ１Ｃを利用可能となっている。ノード１は、これらのファイルシステムＦＳ１Ａ〜ＦＳ１Ｃを用いて、各種の業務アプリケーションサービス（以下、業務サービス）を提供するようになっている。後述のように、各ファイルシステムＦＳ１Ａ〜ＦＳ１Ｃは、フェイルオーバ対象のリソースとなっており、その優先順位はそれぞれ相違する可能性がある。
【００２４】
ファイル共有機能１１は、アクセス要求受付処理１１１と、優先順位決定処理１１２とを備える。詳細は後述するが、アクセス要求受付処理１１１では、各ホスト装置５からのアクセス要求の処理やアクセスログの管理等を行う。優先順位決定処理１１２では、各ホスト装置５からのアクセス状況等に基づいて、各ファイルシステムＦＳ１Ａ〜ＦＳ１Ｃの属するカテゴリを決定し、フェイルオーバ時の優先順位を設定する。
【００２５】
フェイルオーバ機能１２は、フェイルオーバ処理１２１と、ハートビート監視処理１２２とを備える。詳細は後述するが、フェイルオーバ処理１２１では、ハートビート監視処理１２２からの通知に基づいて起動し、フェイルオーバ元のノードからファイルシステムを引き継いで業務サービスを再開する。ハートビート監視処理１２２では、ノード間のハートビート通信が周期的に実行されているか否かを監視している。例えば、ハートビート通信が所定時間以上途絶えた場合、ハートビート監視処理１２２は、相手方のノード２がシステムダウンしたものと判定し、フェイルオーバ処理１２１を起動させる。
【００２６】
ノード２も、ノード１と同様に、ファイル共有機能２１と、フェイルオーバ機能２２とを備えている。ファイル共有機能２１は、アクセス要求受付処理２１１と、優先順位決定処理２１２とを備えている。フェイルオーバ機能２２は、フェイルオーバ処理２２１と、ハートビート監視処理２２２とを備えている。ノード２とノード１とは、それぞれ同一の機能を実現する。そして、ノード２は、複数のファイルシステムＦＳ２Ａ〜ＦＳ２Ｃを利用可能である。ノード２は、ファイルシステムＦＳ２Ａ〜ＦＳ２Ｃを用いて、ホスト装置５に対し業務サービスを提供する。
【００２７】
本実施例では、ノード１とノード２とは互いに対等の関係に立ち、それぞれが独自の業務サービスを提供可能となっている。そして、ノード１がシステムダウンや計画停止した場合には、ノード１で提供されていた業務サービスは、ノード２で引き継がれる。逆に、ノード２がシステムダウンや計画停止した場合には、ノード２で提供されていた業務サービスは、ノード１に引き継がれる。なお、これに限らず、例えば、ノード１を現用系サーバとして使用し、ノード２を待機系サーバとして使用する構成でもよい。
【００２８】
各ノード１，２で使用されるファイルシステムＦＳ１Ａ〜ＦＳ１Ｃ，ＦＳ２Ａ〜ＦＳ２Ｃは、ホスト装置５のＯＳ種類毎にそれぞれ用意される。また、同一のＯＳで使用されるファイルシステムであっても、別のユーザにより使用される場合は、異なるファイルシステムとなる。各ファイルシステムは、例えば、論理ボリューム（ＬＵ）に設けられる。論理ボリュームは、例えば、ハードディスクドライブや半導体メモリ装置等の物理的な記憶領域上に構築される。ファイルシステムが設けられる論理ボリュームは、例えば、ディスクアレイサブシステムのような大容量ストレージシステムにより提供される。
【００２９】
共有ＬＵ４は、ノード１とノード２とに共有されるもので、ノード１引継情報とノード２引継情報とを記憶している。ノード１引継情報とは、ノード１の業務サービスをノード２が引継ぐために必要となる情報である。ノード２引継情報とは、ノード２の業務サービスをノード１で引継ぐために必要となる情報である。引継情報の詳細は、図３と共にさらに後述する。
【００３０】
図３は、フェイルオーバ時に使用される引継情報の詳細を示す説明図である。本実施例では、フェイルオーバに際して全ファイルシステムを平等に扱うのではなく、使用状況等に応じて、複数のカテゴリに区分している。
【００３１】
図３（ａ）は、各ファイルシステムを分類するために使用されるカテゴリ決定テーブルＴ１を示す。図３（ａ）に示すカテゴリ決定テーブルＴ１は、各ファイルシステムの帰属先カテゴリの決定方法を示すためのもので、コンピュータにより利用可能なテーブルとして存在する必要はない。
【００３２】
本実施例では、２つの指標に着目して、各ファイルシステムを合計６種類のカテゴリに区分けしている。１つの指標は、そのファイルシステムを共有するホスト装置５の数Ｈである。他の１つの指標は、そのファイルシステムへのアクセス頻度Ｌである。
【００３３】
共有ホスト数Ｈは、例えば、３段階に区分可能である。１つ目の段階は、そのファイルシステムがｎ以上のホスト装置５により利用されている場合である。２つ目の段階は、そのファイルシステムが２以上ｎ未満のホスト装置５により利用されている場合である（２≦Ｈ＜ｎ）。３つ目の段階は、そのファイルシステムが単一のホスト装置５によって利用されている場合である（Ｈ＝１）。ここで、ｎは、共有ホスト数Ｈに基づいて区分するための閾値である。
【００３４】
アクセス頻度Ｌは、例えば、２段階に区分可能である。１つ目の段階は、そのファイルシステムへのアクセス頻度Ｌがｍより多い場合である（ｍ＜Ｌ）。２つ目の段階は、そのファイルシステムへのアクセス頻度Ｌがｍ以下である場合である（Ｌ≦ｍ）。ここで、ｍは、アクセス頻度Ｌに基づいて区分するための閾値である。
【００３５】
共有ホスト数Ｈの区分に使用される第１の閾値ｎとアクセス頻度Ｌの区分に使用される第２の閾値ｍとは、システム管理者等により手動で設定することもできるし、あるいは、自動的に算出して設定することもできる。
【００３６】
図３（ａ）に示す各カテゴリには、共有ホスト数Ｈの各段階を示す数字と、アクセス頻度Ｌの各段階を示す数字とが添えられている。例えば、共有ホスト数Ｈが１であって（Ｈ＝１）、アクセス頻度Ｌがｍ以下の場合（Ｌ≦ｍ）は、共有ホスト数の区分が第３段階で、アクセス頻度の区分が第２段階なので、「カテゴリ３２」として表現される。また、例えば、共有ホスト数Ｈがｎ以上であって（ｎ≦Ｈ）、アクセス頻度Ｌがｍよりも大きい場合（ｍ＜Ｌ）は、共有ホスト数の区分が第１段階であり、アクセス頻度の区分も第１段階であるので、「カテゴリ１１」と表現される。
【００３７】
図３（ａ）の左上から右下に向かうに従って、そのファイルシステムを利用するホスト装置５の数、及びそのファイルシステムへのアクセス頻度が増加する傾向にある。「カテゴリ３２」に属するファイルシステムは、使用状況が最も不活発なファイルシステムであり、「カテゴリ１１」に属するファイルシステムは、使用状況が最も活発なファイルシステムである。その他の「カテゴリ１２」、「カテゴリ２２」、「カテゴリ２１」及び「カテゴリ３１」に属するファイルシステムは、共有ホスト数Ｈまたはアクセス頻度Ｌのいずれかの指標によれば、中程度の使用状況に置かれているファイルシステムである。
【００３８】
そこで、本実施例では、以下に述べるように、６つのカテゴリを３つのグループにまとめ、各グループ毎に、それぞれ異なる引継処理動作（レベル）を設定している。そして、各ファイルシステムが所属するカテゴリは、最新の使用状況に応じて動的に変化するようになっており、最新の使用状況に応じた引継処理動作が行われるようにしている。なお、ファイルシステムのカテゴリ分けは、上記の例に限定されない。例えば、アクセス頻度Ｌのみ、あるいは、共有ホスト数Ｈのみのいずれか一方の指標に基づいて、カテゴリを分けてもよい。また、１つの閾値を用いるのではなく、複数の閾値を採用し、より細かくカテゴリを分けることもできる。さらに、各カテゴリのグループ化も、上記の例に限らず、例えば、２グループまたは４グループ以上にまとめることもできる。
【００３９】
図３（ｂ）は、フェイルオーバ動作定義テーブルＴ２の一例を示す説明図である。本実施例では、フェイルオーバ時の引継処理動作として、以下の３つのレベルを用意する。第１のレベルは、フェイルオーバの開始と共に、ファイルシステムをフェイルオーバ先ノードにマウントさせるものである。第２のレベルは、フェイルオーバの開始時にはマウントせず、そのファイルシステムへのアクセス要求が発生した場合に、フェイルオーバ先のノードにマウントさせるものである。第３のレベルは、フェイルオーバが開始されても、そのファイルシステムをフェイルオーバ先のノードにマウントさせないものである。
【００４０】
「カテゴリ１１」に属するファイルシステムは、最も活発に使用されているので、レベル１が与えられる。「カテゴリ３２」に属するファイルシステムの使用状況は、最も不活発であるため、この「カテゴリ３２」に属するファイルシステムには、レベル３が与えられる。その他のカテゴリに属するファイルシステムは、中程度の使用状況であるから、レベル２が与えられる。
【００４１】
レベル１は、フェイルオーバの開始と同時に、フェイルオーバ元ノードからファイルシステムをアンマウントし、フェイルオーバ先ノードへマウントし直すモードであり、例えば、即時マウントモードと呼ぶことができる。但し、フェイルオーバの開始と同時にファイルシステムをマウントし直すとは、フェイルオーバの開始によってフェイルオーバ先ノードへのマウントを直ちに試みるという程度の意味である。ファイルシステムのアンマウントやマウントには、データの整合性等を保つために所定の処理が必要であり、この所定の処理の分だけ時間を要する。
【００４２】
レベル２は、そのファイルシステムへのアクセス要求が発生したときに、フェイルオーバ先ノードへマウントするモードであり、例えば、オンデマンドマウントモードと呼ぶこともできる。基本的に、レベル２に属するファイルシステムは、アクセス要求の発生によってフェイルオーバ元からフェイルオーバ先へと移動する。しかし、後述のように、アクセス要求が発生しない場合でも、フェイルオーバ先ノードが所定の低負荷状態にある場合は、ファイルシステムがフェイルオーバ先ノードに移される。このモードは、フェイルオーバ先ノードが低負荷状態になるのを待ってから実行されるため、例えば、遅延マウントモードと呼ぶことができる。
【００４３】
レベル３は、フェイルオーバが開始された場合でも、フェイルオーバ元ノードからフェイルオーバ先ノードに移動することはなく、そのファイルシステムへのアクセス要求が発生した場合でも、フェイルオーバ先ノードにマウントされないモードである。レベル３では、フェイルオーバ時のマウントは行わず、フェイルオーバ元ノードが復旧してフェイルバック要求が出された場合に、フェイルオーバ元ノードに再マウントされるモードであり、例えば、非マウントモードと呼ぶことができる。
【００４４】
なお、図３（ｂ）に示すフェイルオーバ動作定義テーブルＴ２は、共有ＬＵ４に記憶させてもよいし、記憶させなくてもよい。
【００４５】
図３（ｃ）は、ファイルシステム動作割当リストＴ３の一例を示す説明図である。ファイル動作割当リスト（以下、動作割当リストと略記）Ｔ３には、各ファイルシステム毎に、フェイルオーバ時の引継処理動作が規定されている。
【００４６】
例えば、図示の例では、ファイルシステムＦＳ１Ａには、レベル１の動作が割り当てられており、ファイルシステムＦＳ１Ｂには、レベル２の動作が割り当てられている。そして、ファイルシステムＦＳ１Ｃには、レベル３の動作が割り当てられている。
【００４７】
ノード１に障害が発生してフェイルオーバが開始された場合、レベル１の動作が割り当てられているファイルシステムＦＳ１Ａは、直ちにノード１からノード２に移される。フェイルオーバ開始直後に、ノード１からノード２に移されるファイルシステムはＦＳ１Ａのみである。従って、ノード２は、ファイルシステムＦＳ１Ａのみをマウントするだけで、ＦＳ１Ａを利用する業務サービスを直ちに提供することができる。
【００４８】
ノード１に残されたままのファイルシステムＦＳ１Ｂ，ＦＳ１Ｃのうち、レベル２の動作が割り当てられているファイルシステムＦＳ１Ｂは、ホスト装置５からのアクセス要求が発生した場合に、ノード１からノード２に移される。フェイルオーバの開始時点からファイルシステムＦＳ１Ｂへのアクセス要求が発生するまでの時間だけ、ファイルシステムＦＳ１Ｂの移動開始は遅延する。しかし、ファイルシステムＦＳ１Ａ〜ＦＳ１Ｃの全体をノード２に移動させた後で全ての業務サービスを再開する場合に比べて、ファイルシステムＦＳ１Ｂのみを移動させてから必要とされる業務サービスを部分的に再開する方が、クラスタシステム全体としての応答性は向上する。
【００４９】
レベル３の動作が割り当てられているファイルシステムＦＳ１Ｃは、フェイルオーバが開始された場合でも、ノード１からノード２に移動されない。もしも、ホスト装置５がファイルシステムＦＳ１Ｃへのアクセスを要求した場合は、そのホスト装置５に対してエラーが返される。ノード１が復旧し、ノード１からノード２にフェイルバック要求が出された場合に、フェイルシステムＦＳ１Ｃはノード１に再マウントされる。本実施例では、最も使用状況が不活発で、フェイルバック先への移動の必要性に乏しいファイルシステムＦＳ１Ｃを、フェイルオーバ時に移動させずにそのまま放置する。従って、ノード２は、無駄なマウントを省略することができ、その分だけ他のファイルシステムＦＳ１Ａ，ＦＳ１Ｂを利用する業務サービスを早期に再開することができる。また、フェイルバック時には、ファイルシステムＦＳ１Ｃのアンマウント処理を行う必要がなく、その分だけフェイルバックを速やかに完了させることができる。
【００５０】
図４は、アクセス要求受付処理１１１，２１１により実行される処理の概要を示すフローチャートである。以下の説明では、ノード１をフェイルオーバ元、ノード２をフェイルオーバ先とした場合を例に挙げる。ノード１がフェイルオーバ先、ノード２がフェイルオーバ元の場合は、処理の内容に差はないため説明を省略する。
【００５１】
ノード２は、ホスト装置５からアクセス要求が発生したか否かを監視する（Ｓ１）。ホスト装置５からのアクセス要求が検出された場合（S1：YES）、ノード２は、フェイルオーバの発生前であるか否かを判定する（Ｓ２）。フェイルオーバ発生前のアクセス要求である場合（S2：YES）、即ち、通常状態におけるアクセス要求である場合は、そのアクセス要求に関する情報をアクセスログに記憶させる（Ｓ３）。アクセスログは、ノード２のローカルＬＵやローカルメモリ等に保存してもよいし、共有ＬＵ４に保存してもよい。アクセスログの一例を、図７（ｃ）に示す。このアクセスログＴ６には、アクセス日時（年月日時分秒）と、アクセスされたファイルシステム名称とが対応付けられて記録される。そして、ノード２は、ホスト装置５からのアクセス要求に応じた処理を行う（Ｓ４）。
【００５２】
例えば、ホスト装置５からファイルの更新を要求された場合は、新たなファイルをホスト装置５から受信して、所定のファイルシステムに書き込む。また、例えば、ホスト装置５からファイルの読み出しを要求された場合、ノード２は、要求されたファイルを所定のファイルシステムから読み出して、ホスト装置５に送信する。
【００５３】
フェイルオーバ発生前において、各ノード１，２のアクセス要求受付処理１１１，２１１は、それぞれＳ１〜Ｓ４の処理を繰り返し、ファイルシステムＦＳ１Ａ〜ＦＳ１Ｃ，ＦＳ２Ａ〜ＦＳ２Ｃへのアクセスログをそれぞれ更新する。このアクセスログに基づいて、各ファイルシステム毎のアクセス頻度をそれぞれ求めることができる。
【００５４】
一方、ノード１からノード２へのフェイルオーバ発生後において、ホスト装置５からアクセス要求があった場合（S2：NO）、ノード２は、アクセス対象のファイルシステムを特定し、動作割当リストを参照する。これにより、ノード２は、アクセス対象のファイルシステムに割り当てられている引継処理動作のレベルを把握する（Ｓ５）。
【００５５】
次に、ノード２は、アクセス対象のファイルシステムについて、レベル２の動作が割り当てられているか否かを判定する（Ｓ６）。そのファイルシステムについてレベル２の動作が割り当てられている場合（S6：YES）、ノード２は、マウント済フラグがオフ状態か否かを判定する（Ｓ７）。マウント済フラグとは、ファイルシステムが既にマウントされている状態を示す情報である。ファイルシステムがマウントされている場合、マウント済フラグはオン状態となり、ファイルシステムが未だマウントされていない場合、マウント済フラグはオフ状態となる。
【００５６】
レベル２の動作が割り当てられているファイルシステムが未だマウントされていない場合（S7：YES）、ノード２は、目的のファイルシステムをノード１からアンマウントし、自身にマウントさせる（Ｓ８）。そして、ノード２は、マウント済フラグをオン状態にセットする（Ｓ９）。
【００５７】
ホスト装置５からアクセスを要求されたファイルシステムにレベル２の動作が割り当てられていない場合（S6：NO）、ノード２は、そのファイルシステムに割り当てられている動作がレベル３であるか否かを判定する（Ｓ１０）。レベル３の動作が設定されたファイルシステムは、フェイルオーバ先のノード２にマウントされず、フェイルオーバ元のノード１が復旧した場合に、ノード１に再マウントされる。従って、アクセス対象のファイルシステムにレベル３の動作が設定されている場合（S10：YES）、ノード２は、エラー処理を行う（Ｓ１１）。ノード２からエラーを返されたホスト装置５は、例えば、時間をおいてから再度アクセスを試みる。その時点で、ノード１の復旧が完了している場合、ノード１を介してサービスが提供される。
【００５８】
ホスト装置５からアクセスを要求されたファイルシステムに、レベル２またはレベル３のいずれの動作も割り当てられていない場合（S10：NO）、そのファイルシステムには、レベル１の動作が設定されている。レベル１のファイルシステムは、フェイルオーバの開始と略同時にノード２にマウントされているため、直ちに使用可能である。そこで、ノード２は、アクセス情報をアクセスログに記憶し（Ｓ１２）、ホスト装置５からのアクセス要求を処理する（Ｓ１３）。
【００５９】
同様に、レベル２のファイルシステムであっても、既にノード２にマウント済である場合（S7：NO）、ノード２は、そのファイルシステムを直ちに利用可能である。そこで、アクセスログを更新し（Ｓ１２）、アクセス要求を処理する（Ｓ１３）。
【００６０】
上述したアクセス要求受付処理の動作概要をまとめると、以下の通りとなる。
（１）フェイルオーバ発生前の通常状態
アクセスログを更新してファイルシステムの利用頻度を記憶し、また、アクセス要求を処理する。
（２）フェイルオーバ発生後、レベル１のファイルシステムにアクセスされた場合
レベル１のファイルシステムは、他のファイルシステムに優先してマウントされるため、通常状態（１）と同様の処理が行われる。
（３）フェイルオーバ発生後、レベル２のファイルシステムにアクセスされた場合
そのファイルシステムがマウントされていなければマウントし、マウント済であれば、通常状態（１）と同様に処理する。
（４）フェイルオーバ発生後、レベル３のファイルシステムにアクセスされた場合
そのファイルシステムは、いずれのノードからも利用できないので、ホスト装置５にエラーを返す。
【００６１】
次に、図５は、優先順位決定処理１１２，２１２による処理の概略を示すフローチャートである。この処理は、フェイルオーバの有無を問わずに、各ノード１，２において、定期的に実行されるバッチプロセスである。
【００６２】
ノード１，２は、それぞれ所定時間が経過したか否かを判定する（Ｓ２１）。所定時間が経過した場合（S21：YES）、ノード１，２は、それぞれのアクセスログＴ６を読み出して取得する（Ｓ２２）。各ノード１，２は同期して本処理を実行してもよいし、各ノード１，２が独自のサイクルでそれぞれ本処理を実行してもよい。
【００６３】
各ノード１，２は、アクセスログＴ６に基づいて、各ファイルシステムのアクセス頻度Ｌを算出する（Ｓ２３）。また、各ノード１，２は、自身の環境情報等に基づいて、各ファイルシステムを共有しているホスト装置５の数Ｈを算出する（Ｓ２４）。各ファイルシステムへのアクセス頻度Ｌ及び共有ホスト数Ｈを算出した後、各ノード１，２は、動作割当リスト更新処理を呼び出す（Ｓ２５）。なお、これらの共有ホスト数Ｈ，アクセス頻度Ｌは、例えば、所定期間における平均値としてそれぞれ算出される。
【００６４】
図６は、優先順位決定処理１１２，２１２によりそれぞれ実行される動作割当リストの更新処理を示すフローチャートである。本処理は、図５中のＳ２５で呼び出されることにより開始される。
【００６５】
まず、各ノード１，２は、ユーザ（システム管理者等）から入力されるアクセス頻度閾値ｍと、共有ホスト数閾値ｎとをそれぞれ取得する（Ｓ３１）。各ノード１，２は、前記Ｓ２４で算出した共有ホスト数Ｈをそれぞれ読み出し、ファイルシステム毎の共有ホスト数Ｈを管理するファイルシステム−共有ホスト数情報（以下、ＦＳ−Ｈ情報）を生成する（Ｓ３２）。ＦＳ−Ｈ情報Ｔ４の概略を図７（ａ）に示す。ＦＳ−Ｈ情報Ｔ４では、各ファイルシステムをそれぞれ共有しているホスト装置５の数Ｈが、各ファイルシステム毎にまとめられている。
【００６６】
次に、各ノード１，２は、前記Ｓ２３で算出したアクセス頻度Ｌをそれぞれ読み出し、ファイルシステム毎のアクセス頻度Ｌを管理するファイルシステム−アクセス頻度情報（以下、ＦＳ−Ｌ情報）を生成する（Ｓ３３）。図７（ｂ）に示すように、ＦＳ−Ｌ情報Ｔ５は、各ファイルシステムに対するアクセス頻度Ｌが、各ファイルシステム毎にまとめられている。ＦＳ−Ｌ情報Ｔ５の生成方法については、さらに後述する。
【００６７】
各ノード１，２は、ユーザから入力された各閾値ｍ，ｎと、ＦＳ−Ｈ情報Ｔ４及びＦＳ−Ｌ情報Ｔ５とに基づいて、各ファイルシステムが属すべきカテゴリをそれぞれ決定する（Ｓ３４）。カテゴリ決定処理の詳細は、さらに後述する。
【００６８】
次に、各ノード１，２は、フェイルオーバ動作定義テーブルＴ２を参照し（Ｓ３５）、各ファイルシステムの属するカテゴリと各カテゴリに設定されたフェイルオーバ時の動作とに基づいて、動作割当リストＴ３を生成または更新する（Ｓ３６）。この動作割当リストＴ３は、共有ＬＵ４の所定位置に格納され、クラスタを構成する全てのノード１，２により共有される。
【００６９】
図８は、優先順位決定処理１１２，２１２により実行されるＦＳ−Ｌ情報生成処理を示すフローチャートである。
【００７０】
まず、各ノード１，２は、それぞれのアクセスログＴ６から１レコード分の情報をそれぞれ読み込み（Ｓ４１）、アクセスログＴ６を最後尾（EOF）まで読み出したか否かを判定する（Ｓ４２）。
【００７１】
アクセスログＴ６の最後尾に到達していない場合（S42：NO）、各ノード１，２は、１レコード分の情報からファイルシステム名を検出し、各ファイルシステム毎のアクセス回数をカウントする（Ｓ４３）。例えば、読み出したレコードがＦＳ１Ａへのアクセスを示している場合、ＦＳ１Ａのアクセス頻度を数えるためのカウンタ変数が、１つだけインクリメントされる。
【００７２】
各ノード１，２は、読み出したレコードからアクセス日時を検出し、各ファイルシステム毎の最古アクセス日時を更新する（Ｓ４４）。また、各ノード１，２は、アクセス日時に基づいて、各ファイルシステム毎の最新日時を更新する（Ｓ４５）。即ち、読み出したレコードのアクセス日時が、最古アクセス日時よりも前の日時を示している場合は、最古アクセス日時を更新する。同様に、読み出したレコードのアクセス日時が、最新アクセス日時よりも後の日時を示している場合は、最新アクセス日時を更新する。この作業をアクセスログＴ６の全体について繰り返すことにより、そのアクセスログＴ６に記録されている最古のアクセス日時と最新のアクセス日時とをそれぞれ検出することができる。即ち、アクセスログＴ６の記録期間を求めることができる。
【００７３】
アクセスログＴ６の全てのレコードについてＳ４３〜Ｓ４５の処理を行った場合（S42：YES）、各ノード１，２は、ファイルシステム毎のアクセス頻度Ｌを算出し、ＦＳ−Ｌ情報Ｔ５に１レコード分出力する（Ｓ４６）。全てのファイルシステムについてＦＳ−Ｌ情報Ｔ５への出力を完了するまで、Ｓ４６を繰り返す（Ｓ４７）。ここで、アクセス頻度Ｌは、例えば、そのファイルシステムへのアクセス総数ΣＬを最古アクセス日時Ｔoldから最新アクセス日時Ｔnewまでの時間で除算することにより求めることができる（Ｌ＝ΣＬ／（Ｔnew−Ｔold）。
【００７４】
図９は、各ノード１，２の優先順位決定処理１１２，２１２により実行される各ファイルシステムのカテゴリ決定処理を示す。本処理は、図６中のＳ３４に対応する。
【００７５】
各ノード１，２は、ＦＳ−Ｌ情報Ｔ５から１レコード分の情報を読込み（Ｓ５１）、ＦＳ−Ｌ情報Ｔ５の最後尾に到達したか否かを判定する（Ｓ５２）。ＦＳ−Ｌ情報Ｔ５に記憶されている全てのファイルシステムについて、帰属先カテゴリが決定されるまで、以下の処理が繰り返される。
【００７６】
各ノード１，２は、ＦＳ−Ｈ情報Ｔ４から１レコード分の情報を読込む（Ｓ５３）。ここで、ＦＳ−Ｈ情報Ｔ４及びＦＳ−Ｌ情報Ｔ５は、それぞれファイルシステム名でソートされており、両者のレコード数は一致しているものとする。従って、ＦＳ−Ｌ情報Ｔ５から読み込んだレコードと、ＦＳ−Ｈ情報Ｔ４から読み込んだレコードとは、ともに同一のファイルシステムに関する属性（アクセス頻度Ｌ，共有ホスト数Ｈ）を示す。
【００７７】
以下、カテゴリ決定テーブルＴ１と共に上述したように、共有ホスト数Ｈ及びアクセス頻度Ｌの２つの指標に基づいて、各ファイルシステムを６つのカテゴリのうちいずれか１つのカテゴリに分類する。
【００７８】
ファイルシステムに関する共有ホスト数Ｈが閾値ｎ以上で（Ｈ≧ｎ）、かつ、アクセス頻度Ｌがｍよりも大きい場合（Ｌ＞ｍ）、そのファイルシステムは、カテゴリ１１に決定される（S54：YES、S55）。
【００７９】
ファイルシステムの共有ホスト数Ｈが閾値ｎ以上で（Ｈ≧ｎ）、かつ、アクセス頻度Ｌがｍ≧の場合（Ｌ≦ｍ）、そのファイルシステムは、カテゴリ１２に決定される（S56：YES、S57）。
【００８０】
ファイルシステムの共有ホスト数Ｈが２以上ｎ未満で（２≦Ｈ＜ｎ）、かつ、アクセス頻度Ｌがｍよりも大きい場合（Ｌ＞ｍ）、そのファイルシステムは、カテゴリ２１に決定される（S58：YES、S59）。
【００８１】
ファイルシステムの共有ホスト数Ｈが２以上ｎ未満で（２≦Ｈ＜ｎ）、かつ、アクセス頻度Ｌがｍ以下の場合（Ｌ≦ｍ）、そのファイルシステムは、カテゴリ２２に決定される（S60：YES、S61）。
【００８２】
ファイルシステムｙの共有ホスト数Ｈが１で（Ｈ＝１）、かつ、アクセス頻度Ｌがｍよりも大きい場合（Ｌ＞ｍ）、そのファイルシステムは、カテゴリ３１に決定される（S62：YES、S63）。
【００８３】
ファイルシステムｙの共有ホスト数Ｈが１で（Ｈ＝１）、かつ、アクセス頻度Ｌがｍ以下の場合（Ｌ≦ｍ）、そのファイルシステムは、カテゴリ３２に決定される（S64：YES、S65）。
【００８４】
以上の通り、優先順位決定処理１１２，２１２では、各ファイルシステムの使用状況（アクセス頻度Ｌ及び共有ホスト数Ｈ）をそれぞれ検出し、各ファイルシステムの使用状況に基づいて、各ファイルシステムを複数用意されたカテゴリのうちいずれか１つのカテゴリに分類する。そして、優先順位決定処理１１２，２１２は、各ファイルシステムのカテゴリに応じて、各ファイルシステムのフェイルオーバ時の動作を規定するレベルをそれぞれ付与する。これらの処理は、各ノード１，２においてそれぞれ実行され、各ノード１，２でそれぞれ生成された動作割当リストＴ３は、共有ＬＵ４に格納される。
【００８５】
図１０は、フェイルオーバ処理１２１，２２１により実行される処理を示すフローチャートである。フェイルオーバ先をノード２にした場合を例に挙げて説明するが、ノード１がフェイルオーバ先でも同様である。
【００８６】
ノード２のフェイルオーバ処理２２１は、ハートビート監視処理２２２による通知に基づいて実行される。例えば、回線切断やシステムダウン等の障害がノード１に発生すると、ハートビート通信が断絶し、このハートビート通信の停止は、ハートビート監視処理２２２によって検出される。所定時間以上ハートビート通信が停止したような場合、ハートビート監視処理２２２は、ノード１が停止したものと判断し、フェイルオーバ処理２２１を起動させる。
【００８７】
フェイルオーバ先であるノード２は、まずＩＰアドレスの継承を行う（Ｓ７１）。これにより、ホスト装置５は、今まで通りのＩＰアドレスに接続するだけで、業務サービスを利用することができる。ホスト装置５からは、クラスタ全体が１つのサーバとして見えている。ホスト装置５は、クラスタ内でフェイルオーバが発動され、現用系サーバが変更されたことまで認識しない。
【００８８】
ＩＰアドレスの継承を終えた後、ノード２は、共有ＬＵ４にアクセスして、ノード１で生成された動作割当リストＴ３を参照し、１レコード分の情報を読込む（Ｓ７２）。動作割当リストＴ３の最後尾に達するまで（S73：NO）、以下の処理が繰り返される。即ち、ノード２は、動作割当リストＴ３に登録されているファイルシステムに対し、レベル１の動作が対応付けられているか否かを判定する（Ｓ７４）。レベル１が設定されたファイルシステムの場合（S74：YES）、ノード２は、そのファイルシステムのマウントを直ちに開始する（Ｓ７５）。
【００８９】
動作割当リストＴ３から読み出されたファイルシステムに対し、レベル１以外の他のレベル（レベル２またはレベル３）が設定されている場合（S74：NO）、何もせずに次のレコードを読み込む（Ｓ７２）。
【００９０】
そして、動作割当リストＴ３に登録されている全てのファイルシステムを検査した後（S73：YES）、低負荷状態マウントの監視プロセスを起動させる（Ｓ７６）。この監視プロセスについては、さらに後述する。
【００９１】
以上の通り、フェイルオーバ処理では、予めレベル１の動作、即ち、即時マウントが指定されているファイルシステムのみをフェイルオーバの実行と共にマウントし、それ以外のレベルが付与されたファイルシステムについては、フェイルオーバ開始時にはマウント処理を行わない。従って、フェイルオーバ開始時では、レベル１が設定されたファイルシステムのみをノード１からアンマウントして、ノード２にマウント等すればよく、レベル１のファイルシステムを利用する業務サービスを早期に再開することができる。
【００９２】
図１１は、フェイルオーバ先が低負荷状態の場合にマウントするための処理を示すフローチャートである。この処理は、図１０中のＳ７６に対応する。本処理は、以下に述べるように、２つの部分から構成される。一つは、まだマウントされていないレベル２のファイルシステムを検出して待ち行列に登録する処理（Ｓ８１〜Ｓ８５）であり、マウント待ちリソース検出処理と呼ぶことができる。他の一つは、フェイルオーバ先のノードが所定の低負荷状態に達した場合に、待ち行列に登録されたファイルシステムをフェイルオーバ先ノードにマウントさせる処理（Ｓ８６〜Ｓ９３）であり、低負荷時移行処理と呼ぶこともできる。
【００９３】
フェイルオーバ先であるノード２は、動作割当リストＴ３から１レコード分の情報を読込む（Ｓ８１）。ノード２は、読み込んだレコードに記述されているファイルシステムについて、レベル２の動作が設定されているか否かを判定する（Ｓ８２）。レベル２のファイルシステムである場合（S82：YES）、ノード２は、マウント済フラグがオフ状態であるか否かを判定する（Ｓ８３）。レベル２が与えられているファイルシステムが未だノード２にマウントされていない場合（S83：YES）、ノード２は、そのファイルシステムをマウント待ちリストに登録する（Ｓ８４）。
【００９４】
ノード２は、動作割当リストＴ３に登録された全てのファイルシステムについて検査を終えるまで、Ｓ８１〜Ｓ８４の処理を繰り返す（Ｓ８５）。これにより、フェイルオーバ開始後であって、まだアクセス要求が発生していないレベル２のファイルシステムが全て検出され、マウント待ちリストに追加される。
【００９５】
まだマウントされていないレベル２のファイルシステムを全て検出した後、ノード２は、例えば、数分〜十数分程度の所定時間待機する（Ｓ８６）。所定時間が経過すると（S86：YES）、ノード２は、現在のCPU利用率を取得する（Ｓ８７）。ノード２は、現在のCPU利用率が予め設定されている所定値よりも小さいか否かを判定する（Ｓ８８）。この所定値は、システム管理者が手動で設定することもできるし、他の環境情報等に基づいて自動的に設定することもできる。
【００９６】
CPU利用率が所定値以上の場合（S88：NO）、再びＳ８６に戻って所定時間待機する。一方、CPU利用率が所定値より低い場合は（S88：YES）、ノード２が低負荷状態にあり、アンマウント処理やマウント処理等のファイルシステム移行に伴う処理を実行しても、既存の業務サービスの応答性等に影響を与えないと考えられる状態である。
【００９７】
そこで、ノード２は、マウント待ちリストに登録されているファイルシステムの名称を取得し（Ｓ８９）、このファイルシステムを自身にマウントさせる（Ｓ９０）。ノード２は、このマウントしたファイルシステムについて、マウント済フラグをオン状態にセットする（Ｓ９１）。また、ノード２は、このマウントしたファイルシステムの名称を、マウント待ちリストから削除する（Ｓ９２）。ノード２は、マウント待ちリストが空になるまで、Ｓ８６〜Ｓ９２の処理を繰り返す（Ｓ９３）。なお、マウント待ちリストが空になる前に、ノード１が復旧してフェイルバック要求が出された場合は、マウント待ちリストは消去される。
【００９８】
このように、本処理では、レベル２が割り当てられているファイルシステムは、アクセス要求が生じる前であっても、フェイルバック先ノードが低負荷状態にある場合に、フェイルバック先に移行させる。従って、レベル２のファイルシステムは、２つの場合に、ノード１からノード２に引き継がれることになる。一つは、レベル２のファイルシステムに対してアクセス要求が発生した場合（オンデマンドマウント）であり、他の一つは、フェイルオーバ先ノードが所定の低負荷状態の場合（低負荷時マウント）である。
【００９９】
本実施例では、オンデマンドマウントと低負荷時マウントとはそれぞれ独立して実行可能である。レベル２のファイルシステムへのアクセス要求が発生した場合は、フェイルオーバ先ノードが低負荷状態でなくても、引継処理が開始される。このように、複数の方法でレベル２のファイルシステムを引継可能としたので、レベル２のファイルシステムに対するアクセス要求を、早期に処理できる可能性が高まる。
【０１００】
なお、負荷状態を検出するための指標としては、CPU利用率に限定されない。例えば、単位時間あたりの入出力要求数（IOPS）やキャッシュメモリの使用量を用いることもできるし、複数の指標を組み合わせて判断することもできる。
【０１０１】
図１２及び図１３は、本実施例によりフェイルオーバが段階的に実行されている様子を模式的に示す説明図である。図１２，図１３では、説明の便宜上、ノード１のファイルシステムのみを示す。
【０１０２】
図１２を参照する。ノード１は、３個のファイルシステムＦＳ１Ａ〜ＦＳ１Ｃを備えている。図１２において、ファイルシステムＦＳ１Ａにはレベル１が、ファイルシステムＦＳ１Ｂ，ＦＳ１Ｃにはレベル２が、それぞれ設定されているものとする。
【０１０３】
時刻Ｔ１でノード１に障害が発生し、フェイルオーバが開始されると、レベル１のファイルシステムＦＳ１Ａについて、ノード１からノード２への引継処理が開始される。その他のファイルシステムＦＳ１Ｂ，ＦＳ１Ｃについては、ノード１からノード２への引継処理は行われない。ノード２は、レベル１のファイルシステムＦＳ１Ａのみを自身にマウントし、ファイルシステムＦＳ１Ａを利用する業務サービスを再開する。
【０１０４】
時刻Ｔ２において、ファイルシステムＦＳ１Ｂへのアクセス要求が発生した場合、ノード２は、ファイルシステムＦＳ１Ｂをノード１からアンマウントさせ、自身にマウントさせる。
【０１０５】
時刻Ｔ３において、ノード２が低負荷状態になると、ノード２は、ノード１に残されていたファイルシステムＦＳ１Ｃの引継処理を開始する。従って、フェイルオーバ開始後に、ファイルシステムＦＳ１Ｃへのアクセス要求が発生していない場合でも、ノード２が所定の低負荷状態になったときには、レベル２のファイルシステムＦＳ１Ｃは、ノード１からノード２に引き継がれる。従って、時刻Ｔ３の後で、ファイルシステムＦＳ１Ｃへのアクセス要求が発生した場合は、既にマウント処理が完了しているため、速やかにアクセス要求を処理することができる。
【０１０６】
時刻Ｔ４において、ノード１が障害から復旧した場合、ノード１は、ノード２に対してフェイルバックを要求する。ノード２は、フェイルバック要求を受信すると、ノード１から引き継いだ各ファイルシステムＦＳ１Ａ〜ＦＳ１Ｃをアンマウントし、ノード１に戻すようになっている。フェイルバックを行う場合、ノード１から引き継いだ全てのファイルシステムＦＳ１Ａ〜ＦＳ１Ｃを一斉にノード１に戻してもよいし、フェイルオーバ時と略同様に、優先順に段階的に戻してもよい。即ち、優先順位の高いファイルシステムＦＳ１Ａを先行してノード１に戻し、残りのファイルシステムＦＳ１Ｂ，ＦＳ１Ｃについては、アクセス要求が発生した場合やノード１が所定の低負荷状態になった場合、あるいは所定時間が経過した場合等に、段階的に戻すように構成してもよい。
【０１０７】
図１３は、他の場合におけるファイルオーバ時の動作を示す模式図である。図１３において、ファイルシステムＦＳ１Ａにはレベル１が、ファイルシステムＦＳ１Ｂにはレベル２が、ファイルシステムＦＳ１Ｃには、レベル３がそれぞれ設定されている。即ち、図１２と図１３とでは、ファイルシステムＦＳ１Ｃに設定されているレベルが異なる。
【０１０８】
時刻Ｔ１において、ノード１に障害が発生し、フェイルオーバが開始されると、レベル１のファイルシステムＦＳ１Ａは、ノード１からノード２に引き継がれる。時刻Ｔ２において、レベル２のファイルシステムＦＳ１Ｂに対し、アクセス要求が発生すると、ファイルシステムＦＳ１Ｂはノード１からノード２に引き継がれる。
【０１０９】
ファイルシステムＦＳ１Ｃには、レベル３の動作が設定されている。従って、ファイルシステムＦＳ１Ｃは、ノード２への引継処理は行われない。もしもフェイルオーバ期間中に、ホスト装置５からファイルシステムＦＳ１Ｃにアクセスが要求された場合、ホスト装置５にはエラーが返される。
【０１１０】
時刻Ｔ４において、ノード１が復旧し、フェイルバック要求が出されると、ノード２は、ノード１から引き継いだファイルシステムＦＳ１Ａ，ＦＳ１Ｂをノード１に戻す。ファイルシステムＦＳ１Ｃは、ノード１に再マウントされる。レベル３のファイルシステムＦＳ１Ｃについては、フェイルオーバ中に引継処理が行われず、フェイルバック時に再マウントされる。従って、フェイルオーバ時には、ファイルシステムＦＳ１Ｃの引継処理を行う必要がない。また、フェイルバック時には、ファイルシステムＦＳ１Ｃをノード２からアンマウントする処理を行う必要がない。
【０１１１】
本実施例は上述のように構成されるので、以下の効果を奏する。本実施例では、フェイルオーバを行う場合に、フェイルオーバ対象のフェイルシステムを全て一括して、フェイルオーバ先ノードに引き継がせるのではなく、段階的に引継ぐことができるように構成した。部分的に段階的に引継処理を行うことにより、業務サービス再開に要する時間を短縮することができる。従って、フェイルオーバ元で提供されていた業務サービスを部分的に段階的に再開することができ、使い勝手が向上する。
【０１１２】
本実施例では、フェイルオーバ対象のファイルシステムに設定される優先順位に基づいて、ファイルシステムを段階的に引継ぎ可能に構成した。従って、優先度の高いファイルシステムから先にフェイルオーバ先ノードに引き継がせることができる。これにより、重要度の高い業務サービスから優先的に再開し、重要度の低い業務サービスの再開を後回しにすることができる。この結果、優先度の高い業務サービスの再開に要する時間を短縮することができる。
【０１１３】
本実施例では、ファイルシステムの使用状況に基づいて優先順位を設定し、優先順位に従って段階的に移行させる構成とした。従って、例えば、アクセス頻度が高く、多くのホスト装置５によって利用されているファイルシステムから先に引継処理を行うことができ、優先度の高い業務サービスを早期に再開することができる。
【０１１４】
本実施例では、動作割当リスト等の引継情報を共有ＬＵ４に記憶し、各ノード１，２によって共有する構成とした。従って、各ノード１，２は、共有ＬＵ４にアクセスするだけで、段階的なフェイルオーバを実行することができる。引継情報は共有ＬＵ４に集約されて記憶されるため、構成を簡素化することもできる。例えば、共有ＬＵ４に代えて、引継情報を各ノード間でコピーする方法も考えられる。ノード１の引継情報をノード２にコピーし、ノード２の引継情報をノード１にコピーさせる場合は、構成が複雑化し、引継情報の同期を取るのが難しい。なお、引継情報を各ノード間でコピーする構成も、本発明の範囲に含まれる。
【０１１５】
本実施例では、フェイルオーバ開始時に直ちに引継処理を実行させるレベル１と、フェイルオーバ開始時には引継処理を行わず、アクセス要求が発生した場合に引継処理を実行させるレベル２との複数種類の引継動作を用意する構成とした。従って、例えば、使用状況が活発なファイルシステムにレベル１の動作を割り当て、相対的に使用状況が活発ではないファイルシステムにレベル２の動作を割り当てることにより、より優先度の高いファイルシステムの引継処理を先行して実行することができる。また、優先度が相対的に低いファイルシステムは、必要に応じて引継処理を行うことができる。この結果、フェイルオーバクラスタシステム全体としての応答性を改善することができる。
【０１１６】
本実施例では、フェイルオーバ先ノードが所定の低負荷状態になった場合に、ファイルシステムを引き継がせる低負荷時マウントモードを用意する構成とした。従って、フェイルオーバ先ノードの負荷状態を問わずに引継処理を実行する場合に比較して、より早期に引継処理を完了させることができ、応答性が向上する。
【０１１７】
また、本実施例では、アクセス要求の発生をトリガとして引継処理を開始するレベル２のファイルシステムにおいて、アクセス要求が発生していない場合でも、フェイルオーバ先ノードが所定の低負荷状態になった場合は、引継処理を実行する構成とした。従って、レベル２のファイルシステムをより早期にフェイルオーバ先ノードに移行させることができ、レベル２のファイルシステムに対するアクセス要求が発生した場合には、このアクセス要求を速やかに処理することができる。
【０１１８】
本実施例では、フェイルオーバを開始した場合でも、引継処理を実行しないレベル３の引継動作を用意する構成とした。従って、利用度の低いファイルシステムにレベル３の動作を割り当てることにより、アンマウント処理やマウント処理等のようなフェイルオーバに伴う各処理を行う必要がなく、より利用度の高いファイルシステムの引継処理を早期に完了させることができる。また、フェイルバック時には、フェイルバック先ノードにおけるアンマウント処理が不要であり、フェイルバックを早期に完了できる。
【実施例２】
【０１１９】
図１４〜図１６に基づいて、本発明の第２実施例を説明する。本実施例は、第１実施例の変形例に該当する。本実施例の特徴は、３個以上のサーバからクラスタを構成した場合に本発明を適用させる点にある。
【０１２０】
図１４は、本実施例の概略を示す説明図である。図１４（ａ）に示すように、このフェイルオーバクラスタシステムは、ノード１，ノード２，ノード３の合計３個のノードを含んで構成されている。各ノード１〜３は、共有ＬＵ４Ａを介して、フェイルオーバに使用する情報等を共有している。
【０１２１】
ノード１はノード２を、ノード２はノード３を、ノード３はノード１を、それぞれ監視している。フェイルオーバ管理テーブルＴ７には、各サーバ毎に、監視先のサーバ名及び自身の状態が対応付けられている。この管理テーブルＴ７は、共有ＬＵ４Ａに記憶され、各ノード１〜３により共有されている。また、各ノード１〜３は、それぞれのファイルシステムの使用状況をそれぞれ監視しており、使用状況に基づいて各ファイルシステムにレベル１〜３のいずれかの動作を割り当てている。各ノード１〜３で生成される動作割当リストは、共有ＬＵ４に格納されている。
【０１２２】
図１４（ｂ）に示すように、ノード１に障害が発生してシステムダウンすると、ノード３は、ノード１で提供されていた業務サービスを引継ぐ。ノード３の状態は、「稼働中」から「引継中」に変更される。ノード１の状態は、「稼働中」から「ダウン」に変更される。また、ノード１のシステムダウンに伴い、ノード２，ノード３の監視先がそれぞれ変更される。ノード２とノード３は、互いに相手方を監視することになる。
【０１２３】
図１４（ｃ）に示すように、ノード１が復旧する前にノード２もシステムダウンした場合は、ノード３は、ノード２で提供されていた業務サービスも引継ぐ。従って、ノード３は、ノード１とノード２の両方でそれぞれ提供されていた業務サービスを全て引継ぐことになる。
【０１２４】
３個以上のノードでフェイルオーバクラスタを構成する場合は、図１４に示したように、複数のノードでそれぞれ障害が発生する可能性まで考慮する必要がある。そこで、本実施例のフェイルオーバ処理を図１５に示す。
【０１２５】
フェイルオーバ先ノードは、ハートビート通信の途絶に基づくシステムダウンの検出により、フェイルオーバ処理を開始する。フェイルオーバ先ノードは、フェイルオーバ元ノードのＩＰアドレスを引継ぎ（Ｓ１０１）、フェイルオーバ管理テーブルＴ７の状態を更新させる（Ｓ１０２）。
【０１２６】
次に、ノードは、動作割当リストから１レコードの情報を読込み（Ｓ１０３）、動作割当リストの最後尾に到達したか否かを判定する（Ｓ１０４）。動作割当リストに記載された全てのファイルシステムについて、レベル１の動作が設定されているか否かを判定する（Ｓ１０５）。レベル１の動作が設定されている場合（S105：YES）、ノードは、そのファイルシステムの引継処理を行う（Ｓ１０６）。
【０１２７】
レベル１の動作が割り当てられている全てのファイルシステムについて引継処理を完了した場合（S104：YES）、ノードは、監視先ノードの状態が「引継中」であるか、または、監視先ノードが監視しているノードと自身との間のハートビート通信が断絶しているかを判定する。
【０１２８】
例えば、このフェイルオーバ処理をノード３が実行している場合、監視先ノードはノード１であり、監視先ノードの監視先はノード２である。Ｓ１０７において、ノード３は、監視先であるノード１の状態が「引継中」であるか否かを判定する。監視先ノードの状態が「引継中」の場合は、ノード１がノード２の業務サービスを引き継いでいる最中に、ノード１がシステムダウンした場合である。従って、この場合、ノード３は、ノード１で提供されていた業務サービス以外に、ノード２で提供されていた業務サービスまで引継ぐ必要がある。
【０１２９】
また、上記の例において、ノード３は、監視先ノードであるノード１の監視先（ノード２）と自身との間のハートビート通信が断絶しているか否かも判定する。ノード２とノード１とが略同時にシステムダウンする場合を考慮したものである。この場合も、ノード３は、ノード１で提供されていた業務サービスに加えて、ノード２で提供されていた業務サービスまで引継ぐ必要がある。
【０１３０】
そこで、監視先ノードが引継処理中にシステムダウンした場合、または監視先ノードと監視先ノードが監視していたノードとの両方が略同時にシステムダウンした場合は（S107：YES）、管理テーブルＴ７を参照することにより、システムダウンした監視先ノードがどのノードを監視していたかを取得する（Ｓ１０８）。上記の例では、ノード３は、ノード１の監視先がノード２であったことを把握する。
【０１３１】
そして、フェイルバック先のノードは（上記例では、ノード３）、監視先ノードの監視先に関する動作割当リストＴ３を共有ＬＵ４Ａから取得する（Ｓ１０９）。フェイルバック先ノードは、この動作割当リストＴ３に登録されているファイルシステムを、そのレベルに応じて自身にマウントする（Ｓ１１０）。
【０１３２】
上記の例では、３個のノードのうち唯一稼働しているノード３は、監視先ノードの監視先であるノード２の動作割当リストＴ３を取得し、この動作割当リストＴ３に登録されているファイルサーバの引継を行う。ここで、ノード３は、ノード２のファイルシステムを全て一度に引継ぐのではなく、第１実施例で述べたように、レベル１の動作が設定されているファイルシステムのみを優先して引継ぐようになっている。
【０１３３】
レベル１のファイルシステムを引き継いだノードは、フェイルオーバ管理テーブルＴ７の監視先を更新し（Ｓ１１１）、低負荷状態でマウントさせるための監視プロセスを起動させる（Ｓ１１２）。なお、クラスタ内のノードが同時に複数システムダウンしていない場合（S107：NO）、Ｓ１０８〜Ｓ１１１の処理はスキップされ、Ｓ１１２に移る。
【０１３４】
図１６は、本実施例によるフェイルオーバ処理の様子を模式的に示す説明図である。説明の便宜上、図１６（ａ）に示すように、ノード１は、ＦＳ１Ａ〜ＦＳ１Ｃの３個のファイルシステムを備えており、ノード２は、１個のファイルシステムＦＳ２Ａを備えているものとする。ファイルシステムＦＳ１Ａ，ＦＳ２Ａには、それぞれレベル１の動作が設定されているものとする。また、図１４に示す例とは逆回りに、図１６では、ノード３の監視先はノード２、ノード２の監視先はノード１、ノード１の監視先はノード３に設定されているものとする。
【０１３５】
図１６（ｂ）に示すように、ノード１に障害が発生してシステムがダウンした場合、ノード１のフェイルオーバ先であるノード２は、レベル１のファイルシステムＦＳ１Ａをノード１から引継ぐ。
【０１３６】
図１６（ｃ）に示すように、ノード１が復旧する前に、ノード２にも障害が発生してシステムがダウンした場合、ノード２の監視先であるノード３は、レベル１の動作が設定されているファイルシステムＦＳ１Ａ，ＦＳ２Ａの両方を、ノード２から引継ぐ。もしもノード２がノード１からの引継処理中にシステムダウンした場合、ノード３は、ノード２からファイルシステムＦＳ２Ａを引継ぐと共に、ノード１からファイルシステムＦＳ１Ａを引継ぐ。
【０１３７】
以上のように、本発明は、３個以上のノードから構成される場合にも有効に適用することができ、第１実施例で述べたと同様の効果が得られる。
【０１３８】
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、レベル１〜３の全てを採用する必要はなく、例えば、レベル１とレベル２のみ、レベル１とレベル３のみ、レベル２とレベル３のみのように、いずれか複数のレベルを使用する構成でもよい。
【０１３９】
また、低負荷状態でのみ引継処理を実行するモードを、レベル２のファイルシステムに関連付けて使用する場合を説明したが、この低負荷状態で引継処理を実行するレベルをレベル２とは別のレベルとして独立させる構成でもよい。この場合、例えば、低負荷状態時に引継処理を実行するレベルが設定されたファイルシステムは、ホスト装置からのアクセス要求の有無を問わず、フェイルオーバ先ノードが所定の低負荷状態になった場合に、引継処理が行われる。
【０１４０】
また、フェイルオーバ対象リソースとして、ファイルシステムを例示したが、本発明はこれに限らず、例えば、ファイルシステムを利用するアプリケーションプログラム等のような他のリソースにも適用可能である。
【図面の簡単な説明】
【０１４１】
【図１】本発明の概略を示す説明図である。
【図２】本発明の実施形態に係るファイルオーバクラスタシステムの全体構成を示す機能ブロック図である。
【図３】各種テーブルの構成を示し、（ａ）はカテゴリ決定テーブルを、（ｂ）はファイルオーバ動作定義テーブルを、（ｃ）はファイルシステム動作割当リストを、それぞれ示す。
【図４】アクセス要求受付処理のフローチャートである。
【図５】優先順位決定処理の一部を示すフローチャートである。
【図６】優先順位決定処理の他の一部を示すフローチャートである。
【図７】各種情報の構成を示し、（ａ）はファイルシステム毎に共有ホスト数を対応付けた情報を、（ｂ）はファイルシステム毎にアクセス頻度を対応付けた情報を、（ｃ）はアクセスログを、それぞれ示す。
【図８】ファイルシステム−アクセス頻度情報の生成処理を示すフローチャートである。
【図９】カテゴリ決定処理を示すフローチャートである。
【図１０】フェイルオーバ処理を示すフローチャートである。
【図１１】フェイルバック先が低負荷状態のときに引継処理を行うフローチャートである。
【図１２】フェイルバックの一例を模式的に示す説明図である。
【図１３】フェイルバックの他の一例を模式的に示す説明図である。
【図１４】本発明の第２実施例に係り、３個以上のノードでクラスタを構成する場合の概略を示す説明図である。
【図１５】フェイルオーバ処理のフローチャートである。
【図１６】３個以上のノードで構成されるクラスタにおいて、複数のノードが同時にダウンした場合のフェイルバックの様子を示す説明図である。
【符号の説明】
【０１４２】
１〜３…ノード、４…共有ＬＵ、５…ホスト装置、１１…ファイル共有機能、１２…フェイルオーバ機能、２１…ファイル共有機能、２２…フェイルオーバ機能、１１１…アクセス要求受付処理、１１２…優先順位決定処理、１２１…フェイルオーバ処理、１２２…ハートビート監視処理、２１１…アクセス要求受付処理、２１２…優先順位決定処理、２２１…フェイルオーバ処理、２２２…ハートビート監視処理、ＣＮ１〜ＣＮ３…通信ネットワーク、ＦＳ１Ａ〜ＦＳ１Ｃ，ＦＳ２Ａ〜ＦＳ２Ｃ…ファイルシステム、Ｔ１…カテゴリ決定テーブル、Ｔ２…フェイルオーバ動作定義テーブル、Ｔ３…ファイルシステム動作割当リスト、Ｔ４…ファイルシステム−共有ホスト数情報、Ｔ５…ファイルシステム−アクセス頻度情報、Ｔ６…アクセスログ、Ｔ７…フェイルオーバ管理テーブル、ｍ…アクセス頻度閾値、ｎ…共有ホスト数閾値
【図１】
2005258847.tif 000003
【図２】
2005258847.tif 000004
【図３】
2005258847.tif 000005
【図４】
2005258847.tif 000006
【図５】
2005258847.tif 000007
【図６】
2005258847.tif 000008
【図７】
2005258847.tif 000009
【図８】
2005258847.tif 000010
【図９】
2005258847.tif 000011
【図１０】
2005258847.tif 000012
【図１１】
2005258847.tif 000013
【図１２】
2005258847.tif 000014
【図１３】
2005258847.tif 000015
【図１４】
2005258847.tif 000016
【図１５】
2005258847.tif 000017
【図１６】
2005258847.tif 000018