(57)【要約】  本発明のリモートファイルシステム（ＲＦＳ）において、クライアント１（Ｃ1）の管理部（１４）は、アプリケーション実行部ａ（１０ａ）、・・・、アプリケーション実行部ｘ（１０ｘ）からのデータ書き込み要求を未処理リスト（１５ａ）に記録する。また、サーバ１（Ｓ1）、・・・、サーバｎ（Ｓn）のうちマスタのデータ書き込みサーバであるサーバ１（Ｓ1）の書き戻し部（１０３）からのデータ書き込み完了通知を受け取ると、管理テーブルにおいて記憶装置（Ｄ）の記憶媒体への書き込みが完了したデータの更新フラグをオンにする。また、マスタのデータ書き込みサーバが障害により稼動停止した場合に、定義ファイルに記述される定義に従って、次に優先度の高いサーバをマスタのデータ書き込みサーバとしてこのサーバにデータ書き込み要求を送信する。
2008139521.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して端末装置とサーバ装置とが通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むリモートファイルシステムであって、
前記端末装置は、前記アプリケーションから受け渡されたデータを該端末装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、
前記サーバ装置は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記管理手段に通知する書き込み完了通知手段を有し、
前記管理手段は、前記書き込み完了通知手段から前記データの書き込みが完了したことが通知されると、前記更新フラグをオンにすることを特徴とするリモートファイルシステム。
【請求項２】
前記管理手段は、前記アプリケーションから受け渡された前記データに対応するシステムコールを前記端末装置側キャッシュ領域に格納される未処理リストに順次記録し、前記書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを前記未処理リストから削除することを特徴とする請求項１に記載のリモートファイルシステム。
【請求項３】
前記端末装置が複数の前記サーバ装置のうちの第１のサーバ装置または第２のサーバ装置の何れかを介して前記データを前記記憶装置に書き込み可能に、該記憶装置が該第１のサーバ装置および該第２のサーバ装置に接続されており、
前記端末装置および前記サーバ装置は、
自装置の生存通知を他の装置へ送信し、前記データを前記記憶装置に書き込むための書き込みサーバ装置として優先されている前記第１のサーバ装置からの生存通知が受信されない場合に該第１のサーバ装置に障害が発生したと認識する生存監視手段と、
前記生存監視手段により前記第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って前記第１のサーバ装置から前記第２のサーバ装置へ前記書き込みサーバ装置を変更する書き込みサーバ装置変更手段と
をさらに有することを特徴とする請求項２に記載のリモートファイルシステム。
【請求項４】
前記端末装置は、前記書き込みサーバ装置変更手段により前記書き込みサーバ装置が前記第１のサーバ装置から前記第２のサーバ装置へ変更された場合に、前記未処理リストに記録される前記システムコールに従って該システムコールに対応して前記端末キャッシュ領域に記憶されている前記データを該第２のサーバ装置へ順次再送する再送手段をさらに有することを特徴とする請求項３に記載のリモートファイルシステム。
【請求項５】
前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイルシステムのｎ個（ｎは自然数）の論理ブロックサイズごとに受信して前記記憶装置に該論理ブロックサイズごとに書き込みが完了したことを前記管理手段に通知し、
前記管理手段は、前記書き込み完了通知手段から前記論理ブロックサイズごとに書き込みが完了したことが通知されると、該書き込みが完了した論理ブロックサイズごとに前記端末装置側キャッシュ領域から前記データを削除し、前記未処理リストに記録される該データのすべての論理ブロックサイズの書き込み完了が通知されると、該データに対応するシステムコールを該未処理リストから削除することを特徴とする請求項４に記載のリモートファイルシステム。
【請求項６】
前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイル単位ごと受信して前記記憶装置に該ファイル単位ごとに書き込みが完了したことを前記管理手段に通知し、
前記管理手段は、前記書き込み完了通知手段から前記ファイル単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したファイル単位ごとに前記端末装置側キャッシュ領域から前記データを削除するとともに、該データに対応するシステムコールをすべて前記未処理リストから削除することを特徴とする請求項４に記載のリモートファイルシステム。
【請求項７】
前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを前記システムコール単位に対応するデータ単位ごとに受信して前記記憶装置に該データ単位ごとに書き込みが完了したことを前記管理手段に通知し、
前記管理手段は、前記書き込み完了通知手段から前記データ単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したデータ単位ごとに前記端末装置側キャッシュ領域から削除するとともに、該データ単位に対応するシステムコールを前記未処理リストから削除することを特徴とする請求項４に記載のリモートファイルシステム。
【請求項８】
ネットワークを介してサーバ装置と通信可能に接続され、自装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むために該サーバ装置へ送信する端末装置であって、
前記アプリケーションから受け渡されたデータを自装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、
前記管理手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記サーバ装置から通知されると、前記更新フラグをオンにすることを特徴とする端末装置。
【請求項９】
前記管理手段は、前記アプリケーションから受け渡された前記データに対応するシステムコールを前記端末装置側キャッシュ領域に格納される未処理リストに順次記録し、前記書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを前記未処理リストから削除することを特徴とする請求項８に記載の端末装置。
【請求項１０】
複数の前記サーバ装置のうちの第１のサーバ装置または第２のサーバ装置の何れかを介して前記データを前記記憶装置に書き込み可能に、該記憶装置が該第１のサーバ装置および該第２のサーバ装置に接続されており、
自装置の生存通知を他の装置へ送信し、前記データを前記記憶装置に書き込むための書き込みサーバ装置として優先されている前記第１のサーバ装置からの生存通知が受信されない場合に該第１のサーバ装置に障害が発生したと認識する生存監視手段と、
前記生存監視手段により前記第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って前記第１のサーバ装置から前記第２のサーバ装置へ前記書き込みサーバ装置を変更する書き込みサーバ装置変更手段と
をさらに有することを特徴とする請求項９に記載の端末装置。
【請求項１１】
前記書き込みサーバ装置変更手段により前記書き込みサーバ装置が、前記第１のサーバ装置から前記第２のサーバ装置へ変更された場合に、前記未処理リストに記録される前記システムコールに従って該システムコールに対応して前記端末キャッシュ領域に記憶されている前記データを該第２のサーバ装置へ順次再送する再送手段をさらに有することを特徴とする請求項１０に記載の端末装置。
【請求項１２】
ネットワークを介して端末装置と通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを自装置に接続される記憶装置へ書き込むサーバ装置であって、
前記端末装置が有する前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを該端末装置に通知する書き込み完了通知手段を有することを特徴とするサーバ装置。
【請求項１３】
前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイルシステムのｎ個（ｎは自然数）の論理ブロックサイズごとに受信して前記記憶装置に該論理ブロックサイズごとに書き込みが完了したことを前記端末装置に通知することを特徴とする請求項１２に記載のサーバ装置。
【請求項１４】
前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイル単位ごと受信して前記記憶装置に該ファイル単位ごとに書き込みが完了したことを前記端末装置に通知することを特徴とする請求項１２に記載のサーバ装置。
【請求項１５】
前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを前記システムコール単位に対応するデータ単位ごとに受信して前記記憶装置に該データ単位ごとに書き込みが完了したことを前記端末装置に通知することを特徴とする請求項１２に記載のサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して端末装置とサーバ装置とが通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むリモートファイルシステムおよびこの端末装置、サーバ装置に関し、特に、サーバ装置に障害が発生したときの記憶装置への書き込みデータのデータロストを防止し、アプリケーションの実行継続性を向上させ、書き込みデータの信頼性向上を向上させるリモートファイルシステム、端末装置およびサーバ装置に関する。
【背景技術】
【０００２】
従来から、サーバ装置および端末装置で構成される一般的なファイルシステムでは、端末装置からのデータの書き込み要求を受け付けるたびにサーバ装置側で記憶装置にアクセスすると処理コストが高いため、サーバ装置および端末装置にキャッシュメモリを実装し、このキャッシュメモリ上でデータ操作をおこなった上で記憶装置へデータを書き込む処理をおこなっている。かかるファイルシステムにおいて、キャッシュメモリの利用効率性を高め、システム全体の性能向上を図る種々の技術が提案されている。例えば、特許文献１には、このサーバ装置および端末装置に実装されたキャッシュメモリ間でデータを常時更新しあってデータの一貫性を保つファイルシステムが開示されている。【０００３】
また、特許文献２には、複数の端末装置とデータベースとがデータベースキャッシュを介してデータ送受信可能に接続されたシステムにおいて、端末装置の状態とデータベースの状態との一貫性を維持するため、データキャッシュのデータを不変データベース部分に書き込み、所定時間間隔または所定条件が充足された場合に、データベース中のデータを不変データベースにコミットすることによって、１つのデータベースキャッシュを複数の端末装置で利用することが可能となるデータベース管理装置が開示されている。【０００４】
また、特許文献３および４には、端末装置とサーバ装置とが接続されたクライアント・サーバシステムにおける分散サーバ制御装置であって、ハートビート信号を一定時間検知しなければ接続対象のサーバ装置を他のサーバ装置へ切り替える分散サーバ制御装置が開示されている。特に、特許文献３には、端末装置側からサーバ装置での障害発生を認識して接続先サーバ装置を切り替える技術が開示されており、特許文献４には、サーバ装置同士でハートビート信号を使用して相互の生存監視をおこない、一方のサーバ装置に障害が発生した場合には、他のサーバ装置が処理を引き継ぐ技術が開示されている。【０００５】
【特許文献１】特許第２５０７２３５号公報
【特許文献２】特開平９−５０３９３号公報
【特許文献３】特開平７−５６８３８号公報
【特許文献４】特開２００６−１７２０５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１〜４に代表される従来技術では、サーバ装置に接続された記憶装置へ書き込むための書き込みデータをキャッシュするキャッシュメモリは揮発性記憶媒体であるため、書き込みデータを記憶装置へ書き込む以前にサーバ装置に障害が発生してその稼働が停止してしまうと、キャッシュメモリに記憶されている書き込みデータが消失してしまうこととなっていた。【０００７】
具体的には、端末装置で実行されるアプリケーションからサーバ装置に接続された記憶装置へ書き込むための書き込みデータがサーバ装置のキャッシュメモリに記憶された状態で、サーバ装置に障害が発生して該サーバ装置の稼働が停止してしまうと、キャッシュメモリ上で書き込みデータが消失してしまうため、記憶装置へのデータ書き込みが失敗したにもかかわらずアプリケーションはデータ書き込みが正常終了したと認識してしまうという不都合が発生していた。【０００８】
また、サーバ装置の稼働停止に備えて代替サーバ装置を用意していたとしても、サーバ装置でおこなわれていた処理は異常終了となることがあり、さらには代替サーバへの処理の引き継ぎが正常におこなわれず異常終了となることがあった。【０００９】
本発明は、上記問題点（課題）を解消するためになされたものであって、書き込みデータを記憶装置へ書き込む以前にサーバ装置に障害が発生してその稼働が停止してしまっても、サーバ装置のキャッシュメモリに記憶されている書き込みデータが消失することなく、書き込みデータのデータロストを防止し、アプリケーションの実行継続性を向上させ、書き込みデータの信頼性向上を向上させるリモートファイルシステム、端末装置およびサーバ装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した問題を解決し、目的を達成するため、本発明は、ネットワークを介して端末装置とサーバ装置とが通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むリモートファイルシステムであって、前記端末装置は、前記アプリケーションから受け渡されたデータを該端末装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、前記サーバ装置は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記管理手段に通知する書き込み完了通知手段を有し、前記管理手段は、前記書き込み完了通知手段から前記データの書き込みが完了したことが通知されると、前記更新フラグをオンにすることを特徴とする。【００１１】
また、本発明は、上記発明において、前記管理手段は、前記アプリケーションから受け渡された前記データに対応するシステムコールを前記端末装置側キャッシュ領域に格納される未処理リストに順次記録し、前記書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを前記未処理リストから削除することを特徴とする。【００１２】
また、本発明は、上記発明において、前記端末装置が複数の前記サーバ装置のうちの第１のサーバ装置または第２のサーバ装置の何れかを介して前記データを前記記憶装置に書き込み可能に、該記憶装置が該第１のサーバ装置および該第２のサーバ装置に接続されており、前記端末装置および前記サーバ装置は、自装置の生存通知を他の装置へ送信し、前記データを前記記憶装置に書き込むための書き込みサーバ装置として優先されている前記第１のサーバ装置からの生存通知が受信されない場合に該第１のサーバ装置に障害が発生したと認識する生存監視手段と、前記生存監視手段により前記第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って前記第１のサーバ装置から前記第２のサーバ装置へ前記書き込みサーバ装置を変更する書き込みサーバ装置変更手段とをさらに有することを特徴とする。【００１３】
また、本発明は、上記発明において、前記端末装置は、前記書き込みサーバ装置変更手段により前記書き込みサーバ装置が前記第１のサーバ装置から前記第２のサーバ装置へ変更された場合に、前記未処理リストに記録される前記システムコールに従って該システムコールに対応して前記端末キャッシュ領域に記憶されている前記データを該第２のサーバ装置へ順次再送する再送手段をさらに有することを特徴とする。【００１４】
また、本発明は、上記発明において、前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイルシステムのｎ個（ｎは自然数）の論理ブロックサイズごとに受信して前記記憶装置に該論理ブロックサイズごとに書き込みが完了したことを前記管理手段に通知し、前記管理手段は、前記書き込み完了通知手段から前記論理ブロックサイズごとに書き込みが完了したことが通知されると、該書き込みが完了した論理ブロックサイズごとに前記端末装置側キャッシュ領域から前記データを削除し、前記未処理リストに記録される該データのすべての論理ブロックサイズの書き込み完了が通知されると、該データに対応するシステムコールを該未処理リストから削除することを特徴とする。【００１５】
また、本発明は、上記発明において、前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイル単位ごと受信して前記記憶装置に該ファイル単位ごとに書き込みが完了したことを前記管理手段に通知し、前記管理手段は、前記書き込み完了通知手段から前記ファイル単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したファイル単位ごとに前記端末装置側キャッシュ領域から前記データを削除するとともに、該データに対応するシステムコールをすべて前記未処理リストから削除することを特徴とする。【００１６】
また、本発明は、上記発明において、前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを前記システムコール単位に対応するデータ単位ごとに受信して前記記憶装置に該データ単位ごとに書き込みが完了したことを前記管理手段に通知し、前記管理手段は、前記書き込み完了通知手段から前記データ単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したデータ単位ごとに前記端末装置側キャッシュ領域から削除するとともに、該データ単位に対応するシステムコールを前記未処理リストから削除することを特徴とする。【００１７】
また、本発明は、ネットワークを介してサーバ装置と通信可能に接続され、自装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むために該サーバ装置へ送信する端末装置であって、前記アプリケーションから受け渡されたデータを自装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、前記管理手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記サーバ装置から通知されると、前記更新フラグをオンにすることを特徴とする。【００１８】
また、本発明は、上記発明において、前記管理手段は、前記アプリケーションから受け渡された前記データに対応するシステムコールを前記端末装置側キャッシュ領域に格納される未処理リストに順次記録し、前記書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを前記未処理リストから削除することを特徴とする。【００１９】
また、本発明は、上記発明において、複数の前記サーバ装置のうちの第１のサーバ装置または第２のサーバ装置の何れかを介して前記データを前記記憶装置に書き込み可能に、該記憶装置が該第１のサーバ装置および該第２のサーバ装置に接続されており、自装置の生存通知を他の装置へ送信し、前記データを前記記憶装置に書き込むための書き込みサーバ装置として優先されている前記第１のサーバ装置からの生存通知が受信されない場合に該第１のサーバ装置に障害が発生したと認識する生存監視手段と、前記生存監視手段により前記第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って前記第１のサーバ装置から前記第２のサーバ装置へ前記書き込みサーバ装置を変更する書き込みサーバ装置変更手段とをさらに有することを特徴とする。【００２０】
また、本発明は、上記発明において、前記書き込みサーバ装置変更手段により前記書き込みサーバ装置が、前記第１のサーバ装置から前記第２のサーバ装置へ変更された場合に、前記未処理リストに記録される前記システムコールに従って該システムコールに対応して前記端末キャッシュ領域に記憶されている前記データを該第２のサーバ装置へ順次再送する再送手段をさらに有することを特徴とする。【００２１】
また、本発明は、ネットワークを介して端末装置と通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを自装置に接続される記憶装置へ書き込むサーバ装置であって、前記端末装置が有する前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを該端末装置に通知する書き込み完了通知手段を有することを特徴とする。【００２２】
また、本発明は、上記発明において、前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイルシステムの論理ブロックサイズごとに受信して前記記憶装置に該論理ブロックサイズごとに書き込みが完了したことを前記端末装置に通知することを特徴とする。【００２３】
また、本発明は、上記発明において、前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイル単位ごと受信して前記記憶装置に該ファイル単位ごとに書き込みが完了したことを前記端末装置に通知することを特徴とする。【００２４】
また、本発明は、上記発明において、前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを前記システムコール単位に対応するデータ単位ごとに受信して前記記憶装置に該データ単位ごとに書き込みが完了したことを前記端末装置に通知することを特徴とする。
【発明の効果】
【００２５】
本発明によれば、管理手段は、書き込み完了通知手段からデータの書き込みが完了したことが通知されると、更新フラグをオンにするので、端末装置側で記憶装置へのデータの書き込みが正常終了したことを認識することが可能になるとともに、更新フラグがオフである限り端末装置側キャッシュ領域にデータを保持しておくことが可能となるので、サーバ装置の停止という障害発生に対してリモートファイルシステムの運用継続性を高めうるという効果を奏する。また、サーバ装置の停止という障害発生に際して端末装置側キャッシュ領域に保持されるデータを他のサーバ装置を介して記憶装置へ書き込むことが可能となるので、アプリケーションのジョブの継続性を高め、データの一貫性の保証性を高めるという効果を奏する。【００２６】
また、本発明によれば、書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを未処理リストから削除するので、データの書き込みが完了していないデータに対応するシステムコールのみを未処理リストにて認識可能に管理するとともに、端末装置側キャッシュ領域の資源が未処理リストによって圧迫されることを防止するという効果を奏する。【００２７】
また、本発明によれば、生存監視手段により第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って第１のサーバ装置から第２のサーバ装置へ書き込みサーバ装置を変更するので、第１のサーバが障害により稼働停止した場合に、書き込みサーバを第２のサーバ装置へ自動的に変更することが可能となり、運用継続性を高めうるという効果を奏する。【００２８】
また、本発明によれば、書き込みサーバ装置変更手段により書き込みサーバ装置が第１のサーバ装置から第２のサーバ装置へ変更された場合に、未処理リストに記録されるシステムコールに従って該システムコールに対応して端末キャッシュ領域に記憶されているデータを該第２のサーバ装置へ順次再送するので、第１のサーバが障害により稼働停止した場合に、端末キャッシュ領域に記憶されているデータを利用して速やかに第２のサーバ装置へデータを再送することができ、運用継続性を高めうるという効果を奏する。【００２９】
また、本発明によれば、管理手段は、書き込み完了通知手段からファイルシステムの論理ブロックサイズごとに書き込みが完了したことが通知されると、該書き込みが完了した論理ブロックサイズごとに端末装置側キャッシュ領域から削除し、未処理リストに記録される該データのすべての論理ブロックサイズの書き込み完了が通知されると、該データに対応するシステムコールを該未処理リストから削除するので、データを端末装置側キャッシュ領域からこまめに削除して該データが該端末装置側キャッシュ領域の資源を圧迫することを防止するという効果を奏する。【００３０】
また、本発明によれば、管理手段は、書き込み完了通知手段からファイル単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したファイル単位ごとに端末装置側キャッシュ領域からデータを削除するとともに、該データに対応するシステムコールをすべて未処理リストから削除するので、端末装置とサーバ装置との通信トラフィックを削減するという効果を奏する。【００３１】
また、本発明によれば、管理手段は、書き込み完了通知手段からデータ単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したデータ単位ごとに端末装置側キャッシュ領域から削除するとともに、該データ単位に対応するシステムコールを未処理リストから削除するので、端末装置とサーバ装置との通信トラフィックを抑制しつつ、データが端末装置側キャッシュ領域の資源を圧迫することを防止するという効果を奏する。
【図面の簡単な説明】
【００３２】
【図１】図１は、実施例にかかるリモートファイルシステムのネットワーク構成と、該リモートファイルシステムに接続されるクライアントおよびサーバの機能ブロックの構成とを示す図である。
【図２】図２は、実施例にかかるリモートファイルシステムにおいて、キャッシュデータの記憶装置へのデータ書き込み状態をクライアントで管理する処理概要を示す図である。
【図３】図３は、実施例にかかるクライアントのキャッシュメモリ領域を管理するための管理テーブルの例を示す図である。
【図４】図４は、実施例にかかるクライアントのキャッシュメモリ領域におけるデータの記憶状況の例を示す図である。
【図５】図５は、実施例にかかるクライアントにおけるサーバへのデータ送信のための送信キューの例を示す図である。
【図６】図６は、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してデータ書き込み要求を再送する処理概要を示す図である。
【図７】図７は、実施例におけるサーバ装置の優先順位を定義する定義ファイルの例を示す図である。
【図８】図８は、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してシステムコールを再送する処理概要を示す図である。
【図９】図９は、実施例にかかるクライアントのキャッシュメモリ領域に格納される未処理リストの例を示す図である。
【図１０】図１０は、実施例にかかるリモートファイルシステムにおいて、サーバから論理ブロックサイズごとに記憶装置へのデータ書き込み完了の通知を受け、該論理ブロックサイズごとにキャッシュ領域からデータを削除する処理概要を示す図である。
【図１１】図１１は、実施例にかかるリモートファイルシステムにおいて、サーバからファイル単位で記憶装置へのデータ書き込み完了の通知を受け、該ファイル単位でキャッシュ領域からデータを削除する処理概要を示す図である。
【図１２】図１２は、実施例にかかるリモートファイルシステムにおいて、サーバからシステムコールに対応するデータ単位で記憶装置へのデータ書き込み完了の通知を受け、該データ単位でキャッシュ領域からデータを削除する処理概要を示す図である。
【図１３】図１３は、実施例にかかるクライアントにおいて実行されるデータ管理処理手順を示すフローチャートである。
【図１４】図１４は、実施例にかかるリモートファイルシステムにおいて実行されるデータ送受信処理手順を示すフローチャートである。
【図１５】図１５は、実施例にかかるサーバにおいて実行される記憶装置へのデータ書き込み処理手順を示すフローチャートである。
【符号の説明】
【００３３】
Ｎ    ネットワーク
Ｄ    記憶装置
ＲＦＳ    リモートファイルシステム
Ｃ    クライアント
Ｃ1    クライアント１
Ｃ2    クライアント２
Ｃm    クライアントｍ
Ｓ    サーバ
Ｓ1    サーバ１
Ｓ2    サーバ２
Ｓn    サーバｎ
１０    アプリケーション実行部
１０a    アプリケーション実行部ａ
１０x    アプリケーション実行部ｘ
１１    ファイルシステム部
１２    アクセス排他制御部
１３    データ送受信部
１４    管理部
１５    キャッシュメモリ領域部
１５ａ    未処理リスト
１５ｂ    管理テーブル
１６    ＶＦＳ部
１７    ホスト生存監視部
１００    ファイルシステム部
１０１    アクセス排他制御部
１０２    データ送受信部
１０３    書き戻し部
１０４    キャッシュメモリ領域部
１０５    ホスト生存監視部
【発明を実施するための最良の形態】
【００３４】
以下に添付図面を参照し、本発明のリモートファイルシステム、端末装置およびサーバ装置に係る実施例を詳細に説明する。なお、以下の実施例では、複数の端末装置（以下、クライアントと呼ぶ）と複数のサーバ装置（以下、サーバと呼ぶ）とが、Infiniband（登録商標）のような高速インターコネクト、もしくは一般的なEthernet（登録商標）を使用して構築されるネットワークを介して接続されているサーバクライアントモデルを前提とする。【００３５】
例えば、サーバクライアントモデルとしては、ＳＡＮ（Storage  Area  Network）が好適である。この複数のサーバに、磁気ディスク装置、光ディスク装置、光磁気ディスク装置などの記憶装置が共有接続されている。【００３６】
以下の実施例が前提とするリモートファイルシステムは、クライアントで実行されるアプリケーションから発行されるデータ書き込み要求に応じて、該クライアントのキャッシュメモリ領域に一時記憶されたデータをサーバのキャッシュメモリ領域に複写し、この複写されたデータを記憶装置へ書き込む処理をおこなう。
【実施例】
【００３７】
先ず、実施例にかかるリモートファイルシステムのネットワーク構成と、該リモートファイルシステムに接続されるクライアントおよびサーバの機能ブロックの構成とを説明する。図１は、実施例にかかるリモートファイルシステムのネットワーク構成と、該リモートファイルシステムに接続されるクライアントおよびサーバの機能ブロックの構成とを示す図である。【００３８】
同図に示すように、実施例にかかるリモートファイルシステムＲＦＳは、複数のクライアント１Ｃ1、・・・、クライアントｍＣmと、複数のサーバ１Ｓ1、・・・、サーバｎＳnとが、ネットワークＮを介して相互通信可能に接続されている。サーバ１Ｓ1、・・・、サーバｎＳnには、１つの記憶装置Ｄが同時に接続されている。クライアント１Ｃ1、・・・、クライアントｍＣmから記憶装置Ｄの所定の記憶媒体へのデータ書き込みは、サーバ１Ｓ1、・・・、サーバｎＳnのうち、後述の定義ファイルに記述される定義に従って最も優先度が高いサーバをマスタのデータ書き込みサーバとしておこなわれることとなる。【００３９】
ここで、クライアントの機能構成をクライアント１Ｃ1に代表させて説明する。クライアント１Ｃ1は、アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xと、ファイルシステム部１１と、キャッシュメモリ領域部１５とを有する。アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xからアプリケーション実行にともなうデータがファイルシステム部１１へと受け渡され、このデータがさらにキャッシュメモリ領域部１５へと書き込まれる。【００４０】
ファイルシステム部１１は、アクセス排他制御部１２と、データ送受信部１３と、管理部１４とをさらに有する。アクセス排他制御部１２は、複数のアプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xからのキャッシュメモリ領域部１５上の同一ファイルへの書き込みを、排他制御などにより順序性保証をおこなうよう制御する。なお、以下では、アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xのうちの特定の１つのアプリケーション実行部をアプリケーション実行部１０と呼ぶ場合がある。【００４１】
データ送受信部１３は、キャッシュメモリ領域部１５にキャッシュされるデータを、送信キューに通信ヘッダがキューイングされている順序でマスタのデータ書き込みサーバへと送信する。データ送受信部１３は、サーバ常駐型プログラムにより機能が実現されるものである。【００４２】
管理部１４は、アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xからのデータ書き込み要求を後述の未処理リスト１５ａに記録する。また、後述のサーバ１Ｓ1、・・・、サーバｎＳnのうちマスタのデータ書き込みサーバである１Ｓ1の書き戻し部１０３からのデータ書き込み完了通知を受け取ると、後述の管理テーブルにおいて記憶装置Ｄの記憶媒体への書き込みが完了したデータの更新フラグをオンにする。また、マスタのデータ書き込みサーバが障害により稼動停止した場合に、定義ファイルに記述される定義に従って、次に優先度の高いサーバをマスタのデータ書き込みサーバとしてこのサーバにデータ書き込み要求を送信する。【００４３】
キャッシュメモリ領域部１５は、アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xから出力されたデータをキャッシュするとともに、これらアプリケーション実行部から発行されたシステムコールを記録する未処理リスト１５ａと、該データを管理する管理テーブル１５ｂとをさらに記憶する揮発性記憶手段である。【００４４】
続いて、サーバの機能構成をサーバ１Ｓ1に代表させて説明する。サーバ１Ｓ1は、ファイルシステム部１００と、キャッシュメモリ領域部１０４とを有する。ファイルシステム部１００は、アクセス排他制御部１０１と、データ送受信部１０２と、書き戻し部１０３とをさらに有する。【００４５】
アクセス排他制御部１０１は、複数のクライアントからのデータ書き込み要求の順序性を維持して同一ファイルへの書き込みを制御する。また、クライアントのキャッシュメモリ領域部１５で保持しているデータが最新であるか否かの情報を持つ。また、キャッシュメモリ領域部１０４に保持されるデータが他のクライアントによって更新される場合に、該データを最初に書き込んだクライアントに該更新を通知し、該クライアントのキャッシュメモリ領域部１５に保持される同データを破棄させる。【００４６】
データ送受信部１０２は、クライアント１Ｃ1、・・・、クライアントｍＣmから送信されてくるデータを受信する。また、キャッシュメモリ領域部１０４上のデータを記憶装置Ｄの記憶媒体へ書き込んでいる最中にクライアントからデータが送信されてくると、データ矛盾を引き起こす可能性があるため、記憶媒体にデータを書き込んでいる最中は、キャッシュメモリ領域部１０４において該データをブロック単位で排他制御する。データ送受信部１０２は、サーバ常駐型プログラムにより機能が実現されるものである。【００４７】
書き戻し部１０３は、キャッシュメモリ領域部１０４上のデータを記憶装置Ｄの記憶媒体へと書き込む。また、この書き込みが終了すると、クライアントの管理部１４へ該終了を通知する。なお、ここでのデータとは、ユーザデータのみならず、メタデータも含む。【００４８】
次に、実施例にかかるリモートファイルシステムにおいて、キャッシュデータの記憶装置へのデータ書き込み状態をクライアントで管理する処理概要を説明する。図２は、実施例にかかるリモートファイルシステムにおいて、キャッシュデータの記憶装置へのデータ書き込み状態をクライアントで管理する処理概要を示す図である。以下では、クライアント１Ｃ1、・・・、クライアントｍＣmをクライアントＣと総称し、サーバ１Ｓ1、・・・、サーバｎＳnのうち、記憶装置Ｄへのデータ書き込みサーバとして使用されるサーバをサーバＳとする。なお、図２を参照して説明する処理、動作は、すべて非同期でおこなわれる。【００４９】
同図に示すように、クライアントＣ上で動作するアプリケーション実行部１０によるアプリケーションから発行された、例えば“write”システムコールのデータは、ＶＦＳ（Virtual  File  System）部１６（ＶＦＳ層）を経由して管理部１４へと受け渡される。このとき、管理部１４は、システムコールに関するデータ（インターフェース）と、データとをキャッシュメモリ領域部１５に格納する。システムコールに関するデータ（インターフェース）は、更新フラグをオフにしてキャッシュメモリ領域部１５上の管理テーブル１５ｂに格納され、データはキャッシュメモリ領域部１５に格納される。【００５０】
クライアントのキャッシュメモリ領域部１５へのデータの格納が完了すると、当該“write”システムコールおよびデータの出力元であるアプリケーション実行部１０に対しては“write成功”が返される。よって、アプリケーション実行部１０は、キャッシュメモリ領域部１５へシステムコールおよびデータの格納が完了するのみで、記憶装置Ｄの記憶媒体へのデータ書き込みにかかる処理から開放され、続けて他の処理を実行することが可能となる。【００５１】
クライアントＣのデータ送受信部１３は、キャッシュメモリ領域部１５に格納されているデータを、サーバＳのデータ送受信部１０２へ送信する。サーバＳのデータ送受信部１０２は、クライアントＣのデータ送受信部１３から受信したデータを、サーバＳのキャッシュメモリ領域部１０４へと格納する。さらに、サーバＳの書き戻し部１０３は、キャッシュメモリ領域部１０４上のデータを、記憶装置Ｄの記憶媒体へと書き込み、この書き込みが完了すると、該完了をクライアントＣの管理部１４へ通知する。【００５２】
書き戻し部１０３からデータ書き込みの完了通知を受けた管理部１４は、クライアントＣのキャッシュメモリ領域部１５に格納される管理テーブルにおいて、当該データの更新フラグをオンにする。これによって、当該データは、何時でもキャッシュメモリ領域部１５から開放可能となる。なお、当該データは、クライアントＣ上で再利用される場合（例えば、サーバＳの障害による該サーバＳの代替サーバへのデータ再送など）に備えて、キャッシュメモリ領域部１５の資源に余裕がある限り開放を保留されることが好適である。【００５３】
次に、実施例にかかるクライアントのキャッシュメモリ領域を管理するための管理テーブルについて説明する。図３は、実施例にかかるクライアントのキャッシュメモリ領域を管理するための管理テーブルの例を示す図である。管理テーブル１５ｂは、クライアントＣのキャッシュメモリ領域部１５に格納されている。管理部１４は、管理テーブル１５ｂによって、キャッシュメモリ領域部１５の使用状況、ダーティであるか否か（記憶装置Ｄに書き込んだデータか否か）を管理することが可能となる。【００５４】
同図に示すように、管理テーブル１５ｂは、「更新フラグ」と、「ファイル識別子」と、「プロセスＩＤ」と、「使用ブロック」とのカラムを有する。「更新フラグ」は、アプリケーション実行部１０から出力されたデータがキャッシュメモリ領域部１５に格納された際に“０（オフ）”にされる。そして、サーバＳの書き戻し部１０３によって該データが最終的に記憶装置Ｄへと書き込まれ、管理部１４が書き込み完了通知を受けた場合に“１（オン）”にされる。【００５５】
「ファイル識別子」は、リモートファイルシステムＲＦＳ内でファイルを一意に特定するための識別子である。「プロセスＩＤ」は、クライアント１Ｃ1内で、当該データを出力したアプリケーションを一意に特定するためのＩＤである。なお、この「プロセスＩＤ」に基づいてユーザ情報にアクセスすることが可能である。【００５６】
「使用ブロック」は、キャッシュメモリ領域部１５において当該データが格納されているブロックを示す情報である。例えば、図４に示すように各ブロックに付与されているブロックを識別する番号が「使用ブロック」に記述されることとなる。【００５７】
なお、キャッシュメモリ領域部１５は、ページと呼ばれる単位で管理される。例えば、キャッシュページサイズが32KBである場合に、アプリケーション実行部１０から512KBのデータが出力されると、管理部１４は、512KB分のページサイズ、すなわち16ページのキャッシュメモリ領域部１５を確保することとなる。【００５８】
次に、実施例にかかるクライアントにおけるサーバへのデータ送信のための送信キューについて説明する。図５は、実施例にかかるクライアントにおけるサーバへのデータ送信のための送信キューの例を示す図である。【００５９】
アプリケーション実行部１０からシステムコールが発行され、その要求を受け取った管理部１４は、クライアント１Ｃ1上のキャッシュデータをコピーし、さらにサーバ１Ｓ1側のキャッシュメモリ領域部１０４にデータを転送するために、データ送受信部１３の送信キューに要求を接続する。通信ヘッダにはサーバ１Ｓ1とクライアント１Ｃ1とで通信するための情報、送信するためのファイルデータの情報、およびファイルデータへのアドレスが入っている。データ送受信部１３では、定期的に送信キューを調べ、送信キューに要求がつながれていたらその順序でサーバ１Ｓ1側のデータ送受信部１０２へ該当するデータを送信する。【００６０】
次に、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してデータ書き込み要求を再送する処理概要について説明する。図６は、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してデータ書き込み要求を再送する処理概要を示す図である。【００６１】
サーバ１Ｓ1における障害発生によるサーバダウンについては、各クライアントからの要求がタイムアウトして検出される場合と、各ホスト（サーバ、クライアント）上で動作するホスト生存監視部１７またはホスト生存監視部１０５で検出される場合がある。ホスト生存監視部１７またはホスト生存監視部１０５は、クライアントまたはサーバで動作する常駐プログラムによるサービスである。【００６２】
ホスト生存監視部１７またはホスト生存監視部１０５は、クライアントが要求を依頼したサーバに対して、一定間隔でハートビートを送信することで生存検出を行う。リモートファイルシステムＲＦＳ全体の中で、１つのホスト生存監視部１７またはホスト生存監視部１０５がマスタとなり、全システムのホスト上で動作するホスト生存監視部１７またはホスト生存監視部１０５からの異常通知を受け、他のホスト上で動作するホスト生存監視部１７またはホスト生存監視部１０５に通知することで、それぞれのホスト生存監視部１７またはホスト生存監視部１０５は全システムのホストの生存状況を把握する。【００６３】
また、ハートビートはマスタであるホスト生存監視部１７またはホスト生存監視部１０５から、他のホスト生存監視部１７またはホスト生存監視部１０５に対して定期的に発行される。スレーブであるホスト生存監視部１７またはホスト生存監視部１０５では、マスタからの問い合わせがない場合は、マスタがダウンしたと認識し、以降はマスタとして動作する。【００６４】
データ送受信部１３でタイムアウトを検出した場合は、ホスト生存監視部１７に通知し、全システムでホストの生存状況認識が一致してからサーバ切り替えを行う。なお、マスタ、スレーブは図７に示す定義ファイルに事前に設定されるものである。【００６５】
図６において、サーバ１Ｓ1がダウンしたことをクライアント１Ｃ1が検出した場合、記憶装置Ｄへの書込みが完了していなデータから順番に代替サーバであるサーバ２Ｓ2に要求を再送する。通知を受けたデータ送受信部１３は、生存している別サーバに要求を再送する。なお、要求を出してない状態ならば単なる切り替えであり、要求を出している途中であれば別サーバへのデータ再送となる。【００６６】
次に、実施例におけるサーバ装置の優先順位を定義する定義ファイルについて説明する。図７は、実施例におけるサーバ装置の優先順位を定義する定義ファイルの例を示す図である。同図に示すように、最初にサーバを定義し、次にクライアントを並べて記述する。
サーバの記述は、左に記述したものほど優先度が高くなり、一番左がマスタ、左から２番目がスレーブとなる。スレーブが複数存在する場合も同様で、左に書かれたサーバの優先度が高い。【００６７】
次に、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してシステムコールを再送する処理概要について説明する。図８は、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してシステムコールを再送する処理概要を示す図である。【００６８】
サーバで使われているメモリは揮発性記憶媒体であるため、記憶装置Ｄの記憶媒体への書き込みが正常に終了しなかったデータは、サーバ１Ｓ1のサーバダウンと共に消失してしまう。このため、クライアントでシステムコールを最初からやり直す機能を追加することで、ファイルの書込み保証そしてジョブの継続性を向上させることが可能となる。【００６９】
具体的には、クライアントＣにおいて、アプリケーション実行部１０から発行されたシステムコールのインタフェースをクライアント側のメモリ上あるいはディスク上に記録しておく。この記録はクライアントでアプリケーションが要求を受けた順番で記録する。すなわち、未処理リスト１５ａを作成する。ただし、すべてのシステムコールが記録を要するわけではない。【００７０】
この記録は、記憶装置Ｄの記憶媒体まで書き込まれた時点でサーバ側（サーバ１Ｓ1）の書き戻しデーモンから通知され、破棄される。それまではクライアントＣ側で保持される。クライアントＣがサーバ１Ｓ1のサーバダウンを検出した場合、上記の記録を元にシステムコール処理を別サーバ（サーバ２Ｓ2）に対して再実行することで、ジョブ継続性、運用継続性を保証することが可能となる。【００７１】
次に、実施例にかかるクライアントのキャッシュメモリ領域に格納される未処理リストについて説明する。図９は、実施例にかかるクライアントのキャッシュメモリ領域に格納される未処理リストの例を示す図である。【００７２】
未処理リスト１５ａは、「番号」、「プロセス情報」、「ファイル情報」、「システムコール種別」、「ファイルデータへのポインタ」のカラムを有する。「番号」は、未処理リスト１５ａのエントリを識別するための一意な数値である。「プロセス情報」は、１つのクライアント内で一意であるプロセスＩＤであり、この情報からユーザ情報にアクセス可能である。【００７３】
「ファイル情報」は、リモートファイルシステムＲＦＳが取り扱っているファイルを識別するための識別子であり、該リモートファイルシステムＲＦＳ内で一意な数値である。「システムコール種別」は、システムコール種別を特定できる識別子と、システムコールに指定された引数とを記録するものである。識別子は次のように一意の数値である。すなわち、“openシステムコール”＝“1”、“writeシステムコール”＝“2”、“lseekシステムコール”＝“3”である。【００７４】
「ファイルデータへのポインタ」は、システムコールで指定されたデータのキャッシュメモリ領域部１５における格納場所を示す情報である。例えば、“writeシステムコール”で受け渡されたデータは、該システムコール終了と共に解放されてしまうため、別のアドレスにコピーして保存しておく必要があるが、このコピーされたアドレスを示す。【００７５】
次に、実施例にかかるリモートファイルシステムにおいて、サーバからファイルシステムの論理ブロックサイズごとに記憶装置へのデータ書き込み完了の通知を受け、該論理ブロックサイズでキャッシュ領域からデータを削除する処理概要について説明する。図１０は、実施例にかかるリモートファイルシステムにおいて、サーバから論理ブロックサイズで記憶装置へのデータ書き込み完了の通知を受け、該論理ブロックサイズでキャッシュ領域からデータを削除する処理概要を示す図である。【００７６】
データ書き込みサーバを変更して書き込み再送するためには、記憶装置Ｄの記憶媒体に書き込まれていないアプリケーション実行部１０からの要求およびデータをクライアントのキャッシュメモリ領域部１５上で保持しておく必要がある。ただし、クライアントのメモリ実装量によって保持できるデータの上限がある。【００７７】
再送のためのデータを保存する資源がキャッシュメモリ領域部１５において確保できない場合は、アプリケーション実行部１０によるアプリケーションの実行は抑止される。このため、クライアント上の資源が枯渇してきた場合、未処理リストを迅速に消去する必要がある。キャッシュ領域からデータを削除する単位を、ネットワークＮの負荷、リモートファイルシステムＲＦＳ全体の処理能力、クライアントＣの処理能力、クライアントＣのキャッシュメモリ領域部１５の資源の空き、サーバＳの処理能力に基づいて、適切に定めることが必要となる。【００７８】
その例として、図１０に示すように、キャッシュ領域からデータを削除する単位をファイルシステムの論理ブロックサイズとする。論理ブロックサイズは、ファイルシステムにおいてｎ個（ｎは自然数）ある。未処理リスト１５ａは管理情報であるため、データ量は多くない。その一方で、ファイルデータのデータ量が大量である。このため、ファイルシステムがファイルを管理している単位である論理ブロックサイズでクライアントＣおよびサーバＳ間でデータ書き込み完了通知の通信をおこなう。すなわち、論理ブロックサイズで記憶装置Ｄへのデータ書き込みが完了するごとにこれを通知してファイルデータを解放することで、キャッシュメモリ領域部１５の空き領域を早期に確保して再利用することが可能となる。なお、何個の論理ブロックサイズを単位として通信するかは、設定変更可能なパラメータで設定されることとする。【００７９】
なお、キャッシュ領域からデータを削除する単位は、ファイル単位としてもよい。すなわち、図１１に示すように、一連のシステムコールの“open”から“close”までの未処理リスト１５ａをクライアントＣで保持する。このようにすると、データ書き込み完了通知の通信回数が少なくなるため、システム負荷を抑えることができる。なお、クライアント１Ｃ1での未処理リストをまとめて消去することから消去のタイミングが遅くなる傾向にあるため、Ｉ／Ｏ量が少ない運用に好適である。【００８０】
また、キャッシュ領域からデータを削除する単位は、システムコール単位としてもよい。すなわち、図１２に示すように、未処理リストの１つのエントリごとにデータ書き込み完了通知の通信をおこなう。例えば、図示するように、“write”コマンドに対応するwriteデータが記憶装置Ｄに書き込み完了すると、この“write”コマンドを未処理リストから削除するとともに、当該writeデータをキャッシュメモリ領域部１５から消去する。これによれば、通信回数の低減、システム負荷の低減、キャッシュ領域の空き確保の迅速性のバランスを図ることが可能となる。【００８１】
次に、実施例にかかるクライアントにおいて実行されるデータ管理処理について説明する。実施例にかかるクライアントにおいて実行されるデータ管理処理手順を示すフローチャートである。同図に示すように、先ず、クライアントＣのアプリケーション実行部１０がシステムコールを発行する（ステップＳ１０１）。続いて、アクセス排他制御部１２が、キャッシュメモリ領域部１５の同一ファイルの同一箇所への排他制御を実行する（ステップＳ１０２）。【００８２】
続いて、管理部１４は、キャッシュメモリ領域部１５へのデータコピーを実行し、送信データキューの作成、登録を実行する（ステップＳ１０３）。続いて、管理部１４は、サーバＳの書き戻し部１０３からのデータ書き込み完了通知の割り込みを受け付ける（ステップＳ１０４）。【００８３】
続いて、管理部１４は、ステップＳ１０４でデータ書き込み完了通知を受けたキャッシュデータはロックされているか否かを判定する（ステップＳ１０５）。キャッシュデータはロックされていると判定される場合に（ステップＳ１０５肯定）、ステップＳ１０５を繰り返し、キャッシュデータはロックされていると判定されない場合に（ステップＳ１０５否定）、管理部１４は、書き込み完了通知に基づき、該当するキャッシュデータの更新フラグをオンにする（ステップＳ１０６）。これによって、当該キャッシュデータは、いつでもキャッシュメモリ領域部１５から開放してもよいこととなる。【００８４】
次に、実施例にかかるリモートファイルシステムにおいて実行されるデータ送受信処理について説明する。図１４は、実施例にかかるリモートファイルシステムにおいて実行されるデータ送受信処理手順を示すフローチャートである。同図に示すように、先ず、クライアントＣにおいて、データ送受信部１３は、送信キューを定期的に参照する（ステップＳ１１１）。【００８５】
続いて、データ送受信部１３は、送信キューにおいて要求がキューイングされているか否かを判定する（ステップＳ１１２）。要求がキューイングされていると判定されるは場合に（ステップＳ１１２肯定）、ステップＳ１１３へ移り、要求がキューイングされていると判定されない場合に（ステップＳ１１２否定）、ステップＳ１１１へ移る。【００８６】
ステップＳ１１３では、データ送受信部１３は、サーバＳのデータ送受信部１０２との通信を確立する。このステップＳ１１３の処理は、後述するサーバＳ側でのステップＳ１２３と同期する。続いて、データ送受信部１３は、受信側のサーバＳにおいてキャッシュデータが排他制御されているか否かを判定する（ステップＳ１１４）。受信側のサーバ１Ｓ1においてキャッシュデータが排他制御されている場合に（ステップＳ１１４肯定）、ステップＳ１１３へ移り、受信側のサーバＳにおいてキャッシュデータが排他制御されていると判定されない場合に（ステップＳ１１４否定）、ステップＳ１１５へ移る。【００８７】
ステップＳ１１５では、アクセス排他制御部１２は、送信データをロックする。続いて、データ送受信部１３は、当該データをサーバＳへ送信する（ステップＳ１１６）。このステップＳ１１６の処理は、後述するサーバＳ側でのステップＳ１２４と同期する。続いて、データ送受信部１３は、送信データのロックを解除する（ステップＳ１１７）。【００８８】
他方、サーバＳにおいて、データ送受信部１０２は、当該キャッシュデータがキャッシュメモリ領域部１０４において既存のデータでありロックされているか否かを判定する（ステップＳ１２１）。当該キャッシュデータがキャッシュメモリ領域部１０４において既存のデータでありロックされていると判定される場合に（ステップＳ１２１肯定）、ステップＳ１２１を繰り返し、当該キャッシュデータがキャッシュメモリ領域部１０４において既存のデータでありロックされていると判定されない場合に（ステップＳ１２１否定）、ステップＳ１２２へ移る。【００８９】
ステップＳ１２２では、アクセス排他制御部１０１は、当該キャッシュデータのデータロックをおこない（ステップＳ１２２）、送信側のクライアントＣと通信を確立する（ステップＳ１２３）。続いて、データ送受信部１０２は、クライアントＣから送信されてきたデータを受信する（ステップＳ１２４）。続いて、ステップＳ１２２でおこなったデータロックを解除する（ステップＳ１２５）。【００９０】
次に、実施例にかかるサーバにおいて実行される記憶装置へのデータ書き込み処理について説明する。図１５は、実施例にかかるサーバにおいて実行される記憶装置へのデータ書き込み処理手順を示すフローチャートである。同図に示すように、先ず、書き戻し部１０３は、書き込むデータがデータロック中か否かを判定する（ステップＳ１３１）。書き込むデータがデータロック中であると判定される場合に（ステップＳ１３１肯定）、ステップＳ１３１を繰り返し、書き込むデータがデータロック中であると判定されない場合に（ステップＳ１３１否定）、ステップＳ１３２へ移る。【００９１】
ステップＳ１３２では、書き戻し部１０３は、記憶装置Ｄの記憶媒体にデータを書き込むために、当該サーバのファイルシステムにＩ／Ｏを発行する（ステップＳ１３２）。続いて、書き戻し部１０３は、記憶装置Ｄへのデータ書き込みをおこなう（ステップＳ１３３）。【００９２】
続いて、書き戻し部１０３は、記憶装置Ｄへのデータ書き込みが完了したか否かを判定する（ステップＳ１３４）。記憶装置Ｄへのデータ書き込みが完了したと判定される場合に（ステップＳ１３４肯定）、ステップＳ１３５へ移り、記憶装置Ｄへのデータ書き込みが完了したと判定されない場合に（ステップＳ１３４否定）、ステップＳ１３４を繰り返す。ステップＳ１３５では、書き戻し部１０３は、クライアントＣの管理部１４に対して書き込み完了通知をおこなう。【００９３】
以上、本発明の実施例を説明したが、本発明は、これに限られるものではなく、請求の範囲に記載した技術的思想の範囲内で、更に種々の異なる実施例で実施されてもよいものである。また、実施例に記載した効果は、これに限定されるものではない。【００９４】
また、上記実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記実施例で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。【００９５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。【００９６】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）（またはＭＰＵ（Micro  Processing  Unit）、ＭＣＵ（Micro  Controller  Unit）などのマイクロ・コンピュータ）および当該ＣＰＵ（またはＭＰＵ、ＭＣＵなどのマイクロ・コンピュータ）にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されてもよい。【００９７】
なお、各装置にて行なわれる各処理機能を実現するプログラムは、その実行コードが各種記憶媒体に記録されて配布可能であり、また、該実行コードが電気通信回線を介しても配布可能である。
【産業上の利用可能性】
【００９８】
本発明は、書き込みデータを記憶装置へ書き込む以前にサーバ装置に障害が発生してその稼働が停止してしまっても、サーバ装置のキャッシュメモリに記憶されている書き込みデータが消失することなく、書き込みデータのデータロストを防止し、アプリケーションの実行継続性を向上させ、書き込みデータの信頼性向上を向上させたい場合に有用である。
【図１】
2008139521.tif 000003
【図２】
2008139521.tif 000004
【図３】
2008139521.tif 000005
【図４】
2008139521.tif 000006
【図５】
2008139521.tif 000007
【図６】
2008139521.tif 000008
【図７】
2008139521.tif 000009
【図８】
2008139521.tif 000010
【図９】
2008139521.tif 000011
【図１０】
2008139521.tif 000012
【図１１】
2008139521.tif 000013
【図１２】
2008139521.tif 000014
【図１３】
2008139521.tif 000015
【図１４】
2008139521.tif 000016
【図１５】
2008139521.tif 000017
【手続補正書】
【提出日】平成21年9月10日(2009.9.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークを介して端末装置とサーバ装置とが通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むリモートファイルシステムであって、
前記端末装置は、前記アプリケーションから受け渡されたデータを該端末装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、
前記サーバ装置は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記管理手段に通知する書き込み完了通知手段を有し、
前記管理手段は、前記書き込み完了通知手段から前記データの書き込みが完了したことが通知されると、前記更新フラグをオンにすることを特徴とするリモートファイルシステム。
【請求項２】
前記管理手段は、前記アプリケーションから受け渡された前記データに対応するシステムコールを前記端末装置側キャッシュ領域に格納される未処理リストに順次記録し、前記書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを前記未処理リストから削除することを特徴とする請求項１に記載のリモートファイルシステム。
【請求項３】
前記端末装置が複数の前記サーバ装置のうちの第１のサーバ装置または第２のサーバ装置の何れかを介して前記データを前記記憶装置に書き込み可能に、該記憶装置が該第１のサーバ装置および該第２のサーバ装置に接続されており、
前記端末装置および前記サーバ装置は、
自装置の生存通知を他の装置へ送信し、前記データを前記記憶装置に書き込むための書き込みサーバ装置として優先されている前記第１のサーバ装置からの生存通知が受信されない場合に該第１のサーバ装置に障害が発生したと認識する生存監視手段と、
前記生存監視手段により前記第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って前記第１のサーバ装置から前記第２のサーバ装置へ前記書き込みサーバ装置を変更する書き込みサーバ装置変更手段と
をさらに有することを特徴とする請求項２に記載のリモートファイルシステム。
【請求項４】
前記端末装置は、前記書き込みサーバ装置変更手段により前記書き込みサーバ装置が前記第１のサーバ装置から前記第２のサーバ装置へ変更された場合に、前記未処理リストに記録される前記システムコールに従って該システムコールに対応して前記端末キャッシュ領域に記憶されている前記データを該第２のサーバ装置へ順次再送する再送手段をさらに有することを特徴とする請求項３に記載のリモートファイルシステム。
【請求項５】
前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイルシステムのｎ個（ｎは自然数）の論理ブロックサイズごとに受信して前記記憶装置に該論理ブロックサイズごとに書き込みが完了したことを前記管理手段に通知し、
前記管理手段は、前記書き込み完了通知手段から前記論理ブロックサイズごとに書き込みが完了したことが通知されると、該書き込みが完了した論理ブロックサイズごとに前記端末装置側キャッシュ領域から前記データを削除し、前記未処理リストに記録される該データのすべての論理ブロックサイズの書き込み完了が通知されると、該データに対応するシステムコールを該未処理リストから削除することを特徴とする請求項４に記載のリモートファイルシステム。
【請求項６】
前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを前記システムコール単位に対応するデータ単位ごとに受信して前記記憶装置に該データ単位ごとに書き込みが完了したことを前記管理手段に通知し、
前記管理手段は、前記書き込み完了通知手段から前記データ単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したデータ単位ごとに前記端末装置側キャッシュ領域から削除するとともに、該データ単位に対応するシステムコールを前記未処理リストから削除することを特徴とする請求項４に記載のリモートファイルシステム。
【請求項７】
ネットワークを介してサーバ装置と通信可能に接続され、自装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むために該サーバ装置へ送信する端末装置であって、
前記アプリケーションから受け渡されたデータを自装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、
前記管理手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記サーバ装置から通知されると、前記更新フラグをオンにすることを特徴とする端末装置。
【請求項８】
ネットワークを介して端末装置と通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを自装置に接続される記憶装置へ書き込むサーバ装置であって、
前記端末装置が有する前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを該端末装置に通知する書き込み完了通知手段を有することを特徴とするサーバ装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して端末装置とサーバ装置とが通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むリモートファイルシステムおよびこの端末装置、サーバ装置に関し、特に、サーバ装置に障害が発生したときの記憶装置への書き込みデータのデータロストを防止し、アプリケーションの実行継続性を向上させ、書き込みデータの信頼性向上を向上させるリモートファイルシステム、端末装置およびサーバ装置に関する。
【背景技術】
【０００２】
従来から、サーバ装置および端末装置で構成される一般的なファイルシステムでは、端末装置からのデータの書き込み要求を受け付けるたびにサーバ装置側で記憶装置にアクセスすると処理コストが高いため、サーバ装置および端末装置にキャッシュメモリを実装し、このキャッシュメモリ上でデータ操作をおこなった上で記憶装置へデータを書き込む処理をおこなっている。かかるファイルシステムにおいて、キャッシュメモリの利用効率性を高め、システム全体の性能向上を図る種々の技術が提案されている。例えば、特許文献１には、このサーバ装置および端末装置に実装されたキャッシュメモリ間でデータを常時更新しあってデータの一貫性を保つファイルシステムが開示されている。
【０００３】
また、特許文献２には、複数の端末装置とデータベースとがデータベースキャッシュを介してデータ送受信可能に接続されたシステムにおいて、端末装置の状態とデータベースの状態との一貫性を維持するため、データキャッシュのデータを不変データベース部分に書き込み、所定時間間隔または所定条件が充足された場合に、データベース中のデータを不変データベースにコミットすることによって、１つのデータベースキャッシュを複数の端末装置で利用することが可能となるデータベース管理装置が開示されている。
【０００４】
また、特許文献３および４には、端末装置とサーバ装置とが接続されたクライアント・サーバシステムにおける分散サーバ制御装置であって、ハートビート信号を一定時間検知しなければ接続対象のサーバ装置を他のサーバ装置へ切り替える分散サーバ制御装置が開示されている。特に、特許文献３には、端末装置側からサーバ装置での障害発生を認識して接続先サーバ装置を切り替える技術が開示されており、特許文献４には、サーバ装置同士でハートビート信号を使用して相互の生存監視をおこない、一方のサーバ装置に障害が発生した場合には、他のサーバ装置が処理を引き継ぐ技術が開示されている。
【０００５】
【特許文献１】特許第２５０７２３５号公報
【特許文献２】特開平９−５０３９３号公報
【特許文献３】特開平７−５６８３８号公報
【特許文献４】特開２００６−１７２０５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１〜４に代表される従来技術では、サーバ装置に接続された記憶装置へ書き込むための書き込みデータをキャッシュするキャッシュメモリは揮発性記憶媒体であるため、書き込みデータを記憶装置へ書き込む以前にサーバ装置に障害が発生してその稼働が停止してしまうと、キャッシュメモリに記憶されている書き込みデータが消失してしまうこととなっていた。
【０００７】
具体的には、端末装置で実行されるアプリケーションからサーバ装置に接続された記憶装置へ書き込むための書き込みデータがサーバ装置のキャッシュメモリに記憶された状態で、サーバ装置に障害が発生して該サーバ装置の稼働が停止してしまうと、キャッシュメモリ上で書き込みデータが消失してしまうため、記憶装置へのデータ書き込みが失敗したにもかかわらずアプリケーションはデータ書き込みが正常終了したと認識してしまうという不都合が発生していた。
【０００８】
また、サーバ装置の稼働停止に備えて代替サーバ装置を用意していたとしても、サーバ装置でおこなわれていた処理は異常終了となることがあり、さらには代替サーバへの処理の引き継ぎが正常におこなわれず異常終了となることがあった。
【０００９】
本発明は、上記問題点（課題）を解消するためになされたものであって、書き込みデータを記憶装置へ書き込む以前にサーバ装置に障害が発生してその稼働が停止してしまっても、サーバ装置のキャッシュメモリに記憶されている書き込みデータが消失することなく、書き込みデータのデータロストを防止し、アプリケーションの実行継続性を向上させ、書き込みデータの信頼性向上を向上させるリモートファイルシステム、端末装置およびサーバ装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した問題を解決し、目的を達成するため、本発明は、ネットワークを介して端末装置とサーバ装置とが通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むリモートファイルシステムであって、前記端末装置は、前記アプリケーションから受け渡されたデータを該端末装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、前記サーバ装置は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記管理手段に通知する書き込み完了通知手段を有し、前記管理手段は、前記書き込み完了通知手段から前記データの書き込みが完了したことが通知されると、前記更新フラグをオンにすることを特徴とする。
【００１１】
また、本発明は、上記発明において、前記管理手段は、前記アプリケーションから受け渡された前記データに対応するシステムコールを前記端末装置側キャッシュ領域に格納される未処理リストに順次記録し、前記書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを前記未処理リストから削除することを特徴とする。
【００１２】
また、本発明は、上記発明において、前記端末装置が複数の前記サーバ装置のうちの第１のサーバ装置または第２のサーバ装置の何れかを介して前記データを前記記憶装置に書き込み可能に、該記憶装置が該第１のサーバ装置および該第２のサーバ装置に接続されており、前記端末装置および前記サーバ装置は、自装置の生存通知を他の装置へ送信し、前記データを前記記憶装置に書き込むための書き込みサーバ装置として優先されている前記第１のサーバ装置からの生存通知が受信されない場合に該第１のサーバ装置に障害が発生したと認識する生存監視手段と、前記生存監視手段により前記第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って前記第１のサーバ装置から前記第２のサーバ装置へ前記書き込みサーバ装置を変更する書き込みサーバ装置変更手段とをさらに有することを特徴とする。
【００１３】
また、本発明は、上記発明において、前記端末装置は、前記書き込みサーバ装置変更手段により前記書き込みサーバ装置が前記第１のサーバ装置から前記第２のサーバ装置へ変更された場合に、前記未処理リストに記録される前記システムコールに従って該システムコールに対応して前記端末キャッシュ領域に記憶されている前記データを該第２のサーバ装置へ順次再送する再送手段をさらに有することを特徴とする。
【００１４】
また、本発明は、上記発明において、前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイルシステムのｎ個（ｎは自然数）の論理ブロックサイズごとに受信して前記記憶装置に該論理ブロックサイズごとに書き込みが完了したことを前記管理手段に通知し、前記管理手段は、前記書き込み完了通知手段から前記論理ブロックサイズごとに書き込みが完了したことが通知されると、該書き込みが完了した論理ブロックサイズごとに前記端末装置側キャッシュ領域から前記データを削除し、前記未処理リストに記録される該データのすべての論理ブロックサイズの書き込み完了が通知されると、該データに対応するシステムコールを該未処理リストから削除することを特徴とする。
【００１５】
また、本発明は、上記発明において、前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを前記システムコール単位に対応するデータ単位ごとに受信して前記記憶装置に該データ単位ごとに書き込みが完了したことを前記管理手段に通知し、前記管理手段は、前記書き込み完了通知手段から前記データ単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したデータ単位ごとに前記端末装置側キャッシュ領域から削除するとともに、該データ単位に対応するシステムコールを前記未処理リストから削除することを特徴とする。
【００１６】
また、本発明は、ネットワークを介してサーバ装置と通信可能に接続され、自装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むために該サーバ装置へ送信する端末装置であって、前記アプリケーションから受け渡されたデータを自装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、前記管理手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記サーバ装置から通知されると、前記更新フラグをオンにすることを特徴とする。
【００１７】
また、本発明は、ネットワークを介して端末装置と通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを自装置に接続される記憶装置へ書き込むサーバ装置であって、前記端末装置が有する前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを該端末装置に通知する書き込み完了通知手段を有することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、管理手段は、書き込み完了通知手段からデータの書き込みが完了したことが通知されると、更新フラグをオンにするので、端末装置側で記憶装置へのデータの書き込みが正常終了したことを認識することが可能になるとともに、更新フラグがオフである限り端末装置側キャッシュ領域にデータを保持しておくことが可能となるので、サーバ装置の停止という障害発生に対してリモートファイルシステムの運用継続性を高めうるという効果を奏する。また、サーバ装置の停止という障害発生に際して端末装置側キャッシュ領域に保持されるデータを他のサーバ装置を介して記憶装置へ書き込むことが可能となるので、アプリケーションのジョブの継続性を高め、データの一貫性の保証性を高めるという効果を奏する。
【００１９】
また、本発明によれば、書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを未処理リストから削除するので、データの書き込みが完了していないデータに対応するシステムコールのみを未処理リストにて認識可能に管理するとともに、端末装置側キャッシュ領域の資源が未処理リストによって圧迫されることを防止するという効果を奏する。
【００２０】
また、本発明によれば、生存監視手段により第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って第１のサーバ装置から第２のサーバ装置へ書き込みサーバ装置を変更するので、第１のサーバが障害により稼働停止した場合に、書き込みサーバを第２のサーバ装置へ自動的に変更することが可能となり、運用継続性を高めうるという効果を奏する。
【００２１】
また、本発明によれば、書き込みサーバ装置変更手段により書き込みサーバ装置が第１のサーバ装置から第２のサーバ装置へ変更された場合に、未処理リストに記録されるシステムコールに従って該システムコールに対応して端末キャッシュ領域に記憶されているデータを該第２のサーバ装置へ順次再送するので、第１のサーバが障害により稼働停止した場合に、端末キャッシュ領域に記憶されているデータを利用して速やかに第２のサーバ装置へデータを再送することができ、運用継続性を高めうるという効果を奏する。
【００２２】
また、本発明によれば、管理手段は、書き込み完了通知手段からファイルシステムの論理ブロックサイズごとに書き込みが完了したことが通知されると、該書き込みが完了した論理ブロックサイズごとに端末装置側キャッシュ領域から削除し、未処理リストに記録される該データのすべての論理ブロックサイズの書き込み完了が通知されると、該データに対応するシステムコールを該未処理リストから削除するので、データを端末装置側キャッシュ領域からこまめに削除して該データが該端末装置側キャッシュ領域の資源を圧迫することを防止するという効果を奏する。
【００２３】
また、本発明によれば、管理手段は、書き込み完了通知手段からデータ単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したデータ単位ごとに端末装置側キャッシュ領域から削除するとともに、該データ単位に対応するシステムコールを未処理リストから削除するので、端末装置とサーバ装置との通信トラフィックを抑制しつつ、データが端末装置側キャッシュ領域の資源を圧迫することを防止するという効果を奏する。
【発明を実施するための最良の形態】
【００２４】
以下に添付図面を参照し、本発明のリモートファイルシステム、端末装置およびサーバ装置に係る実施例を詳細に説明する。なお、以下の実施例では、複数の端末装置（以下、クライアントと呼ぶ）と複数のサーバ装置（以下、サーバと呼ぶ）とが、Infiniband（登録商標）のような高速インターコネクト、もしくは一般的なEthernet（登録商標）を使用して構築されるネットワークを介して接続されているサーバクライアントモデルを前提とする。
【００２５】
例えば、サーバクライアントモデルとしては、ＳＡＮ（Storage  Area  Network）が好適である。この複数のサーバに、磁気ディスク装置、光ディスク装置、光磁気ディスク装置などの記憶装置が共有接続されている。
【００２６】
以下の実施例が前提とするリモートファイルシステムは、クライアントで実行されるアプリケーションから発行されるデータ書き込み要求に応じて、該クライアントのキャッシュメモリ領域に一時記憶されたデータをサーバのキャッシュメモリ領域に複写し、この複写されたデータを記憶装置へ書き込む処理をおこなう。
【実施例】
【００２７】
先ず、実施例にかかるリモートファイルシステムのネットワーク構成と、該リモートファイルシステムに接続されるクライアントおよびサーバの機能ブロックの構成とを説明する。図１は、実施例にかかるリモートファイルシステムのネットワーク構成と、該リモートファイルシステムに接続されるクライアントおよびサーバの機能ブロックの構成とを示す図である。
【００２８】
同図に示すように、実施例にかかるリモートファイルシステムＲＦＳは、複数のクライアント１Ｃ1、・・・、クライアントｍＣmと、複数のサーバ１Ｓ1、・・・、サーバｎＳnとが、ネットワークＮを介して相互通信可能に接続されている。サーバ１Ｓ1、・・・、サーバｎＳnには、１つの記憶装置Ｄが同時に接続されている。クライアント１Ｃ1、・・・、クライアントｍＣmから記憶装置Ｄの所定の記憶媒体へのデータ書き込みは、サーバ１Ｓ1、・・・、サーバｎＳnのうち、後述の定義ファイルに記述される定義に従って最も優先度が高いサーバをマスタのデータ書き込みサーバとしておこなわれることとなる。
【００２９】
ここで、クライアントの機能構成をクライアント１Ｃ1に代表させて説明する。クライアント１Ｃ1は、アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xと、ファイルシステム部１１と、キャッシュメモリ領域部１５とを有する。アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xからアプリケーション実行にともなうデータがファイルシステム部１１へと受け渡され、このデータがさらにキャッシュメモリ領域部１５へと書き込まれる。
【００３０】
ファイルシステム部１１は、アクセス排他制御部１２と、データ送受信部１３と、管理部１４とをさらに有する。アクセス排他制御部１２は、複数のアプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xからのキャッシュメモリ領域部１５上の同一ファイルへの書き込みを、排他制御などにより順序性保証をおこなうよう制御する。なお、以下では、アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xのうちの特定の１つのアプリケーション実行部をアプリケーション実行部１０と呼ぶ場合がある。
【００３１】
データ送受信部１３は、キャッシュメモリ領域部１５にキャッシュされるデータを、送信キューに通信ヘッダがキューイングされている順序でマスタのデータ書き込みサーバへと送信する。データ送受信部１３は、サーバ常駐型プログラムにより機能が実現されるものである。
【００３２】
管理部１４は、アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xからのデータ書き込み要求を後述の未処理リスト１５ａに記録する。また、後述のサーバ１Ｓ1、・・・、サーバｎＳnのうちマスタのデータ書き込みサーバである１Ｓ1の書き戻し部１０３からのデータ書き込み完了通知を受け取ると、後述の管理テーブルにおいて記憶装置Ｄの記憶媒体への書き込みが完了したデータの更新フラグをオンにする。また、マスタのデータ書き込みサーバが障害により稼動停止した場合に、定義ファイルに記述される定義に従って、次に優先度の高いサーバをマスタのデータ書き込みサーバとしてこのサーバにデータ書き込み要求を送信する。
【００３３】
キャッシュメモリ領域部１５は、アプリケーション実行部ａ１０a、・・・、アプリケーション実行部ｘ１０xから出力されたデータをキャッシュするとともに、これらアプリケーション実行部から発行されたシステムコールを記録する未処理リスト１５ａと、該データを管理する管理テーブル１５ｂとをさらに記憶する揮発性記憶手段である。
【００３４】
続いて、サーバの機能構成をサーバ１Ｓ1に代表させて説明する。サーバ１Ｓ1は、ファイルシステム部１００と、キャッシュメモリ領域部１０４とを有する。ファイルシステム部１００は、アクセス排他制御部１０１と、データ送受信部１０２と、書き戻し部１０３とをさらに有する。
【００３５】
アクセス排他制御部１０１は、複数のクライアントからのデータ書き込み要求の順序性を維持して同一ファイルへの書き込みを制御する。また、クライアントのキャッシュメモリ領域部１５で保持しているデータが最新であるか否かの情報を持つ。また、キャッシュメモリ領域部１０４に保持されるデータが他のクライアントによって更新される場合に、該データを最初に書き込んだクライアントに該更新を通知し、該クライアントのキャッシュメモリ領域部１５に保持される同データを破棄させる。
【００３６】
データ送受信部１０２は、クライアント１Ｃ1、・・・、クライアントｍＣmから送信されてくるデータを受信する。また、キャッシュメモリ領域部１０４上のデータを記憶装置Ｄの記憶媒体へ書き込んでいる最中にクライアントからデータが送信されてくると、データ矛盾を引き起こす可能性があるため、記憶媒体にデータを書き込んでいる最中は、キャッシュメモリ領域部１０４において該データをブロック単位で排他制御する。データ送受信部１０２は、サーバ常駐型プログラムにより機能が実現されるものである。
【００３７】
書き戻し部１０３は、キャッシュメモリ領域部１０４上のデータを記憶装置Ｄの記憶媒体へと書き込む。また、この書き込みが終了すると、クライアントの管理部１４へ該終了を通知する。なお、ここでのデータとは、ユーザデータのみならず、メタデータも含む。
【００３８】
次に、実施例にかかるリモートファイルシステムにおいて、キャッシュデータの記憶装置へのデータ書き込み状態をクライアントで管理する処理概要を説明する。図２は、実施例にかかるリモートファイルシステムにおいて、キャッシュデータの記憶装置へのデータ書き込み状態をクライアントで管理する処理概要を示す図である。以下では、クライアント１Ｃ1、・・・、クライアントｍＣmをクライアントＣと総称し、サーバ１Ｓ1、・・・、サーバｎＳnのうち、記憶装置Ｄへのデータ書き込みサーバとして使用されるサーバをサーバＳとする。なお、図２を参照して説明する処理、動作は、すべて非同期でおこなわれる。
【００３９】
同図に示すように、クライアントＣ上で動作するアプリケーション実行部１０によるアプリケーションから発行された、例えば“write”システムコールのデータは、ＶＦＳ（Virtual  File  System）部１６（ＶＦＳ層）を経由して管理部１４へと受け渡される。このとき、管理部１４は、システムコールに関するデータ（インターフェース）と、データとをキャッシュメモリ領域部１５に格納する。システムコールに関するデータ（インターフェース）は、更新フラグをオフにしてキャッシュメモリ領域部１５上の管理テーブル１５ｂに格納され、データはキャッシュメモリ領域部１５に格納される。
【００４０】
クライアントのキャッシュメモリ領域部１５へのデータの格納が完了すると、当該“write”システムコールおよびデータの出力元であるアプリケーション実行部１０に対しては“write成功”が返される。よって、アプリケーション実行部１０は、キャッシュメモリ領域部１５へシステムコールおよびデータの格納が完了するのみで、記憶装置Ｄの記憶媒体へのデータ書き込みにかかる処理から開放され、続けて他の処理を実行することが可能となる。
【００４１】
クライアントＣのデータ送受信部１３は、キャッシュメモリ領域部１５に格納されているデータを、サーバＳのデータ送受信部１０２へ送信する。サーバＳのデータ送受信部１０２は、クライアントＣのデータ送受信部１３から受信したデータを、サーバＳのキャッシュメモリ領域部１０４へと格納する。さらに、サーバＳの書き戻し部１０３は、キャッシュメモリ領域部１０４上のデータを、記憶装置Ｄの記憶媒体へと書き込み、この書き込みが完了すると、該完了をクライアントＣの管理部１４へ通知する。
【００４２】
書き戻し部１０３からデータ書き込みの完了通知を受けた管理部１４は、クライアントＣのキャッシュメモリ領域部１５に格納される管理テーブルにおいて、当該データの更新フラグをオンにする。これによって、当該データは、何時でもキャッシュメモリ領域部１５から開放可能となる。なお、当該データは、クライアントＣ上で再利用される場合（例えば、サーバＳの障害による該サーバＳの代替サーバへのデータ再送など）に備えて、キャッシュメモリ領域部１５の資源に余裕がある限り開放を保留されることが好適である。
【００４３】
次に、実施例にかかるクライアントのキャッシュメモリ領域を管理するための管理テーブルについて説明する。図３は、実施例にかかるクライアントのキャッシュメモリ領域を管理するための管理テーブルの例を示す図である。管理テーブル１５ｂは、クライアントＣのキャッシュメモリ領域部１５に格納されている。管理部１４は、管理テーブル１５ｂによって、キャッシュメモリ領域部１５の使用状況、ダーティであるか否か（記憶装置Ｄに書き込んだデータか否か）を管理することが可能となる。
【００４４】
同図に示すように、管理テーブル１５ｂは、「更新フラグ」と、「ファイル識別子」と、「プロセスＩＤ」と、「使用ブロック」とのカラムを有する。「更新フラグ」は、アプリケーション実行部１０から出力されたデータがキャッシュメモリ領域部１５に格納された際に“０（オフ）”にされる。そして、サーバＳの書き戻し部１０３によって該データが最終的に記憶装置Ｄへと書き込まれ、管理部１４が書き込み完了通知を受けた場合に“１（オン）”にされる。
【００４５】
「ファイル識別子」は、リモートファイルシステムＲＦＳ内でファイルを一意に特定するための識別子である。「プロセスＩＤ」は、クライアント１Ｃ1内で、当該データを出力したアプリケーションを一意に特定するためのＩＤである。なお、この「プロセスＩＤ」に基づいてユーザ情報にアクセスすることが可能である。
【００４６】
「使用ブロック」は、キャッシュメモリ領域部１５において当該データが格納されているブロックを示す情報である。例えば、図４に示すように各ブロックに付与されているブロックを識別する番号が「使用ブロック」に記述されることとなる。
【００４７】
なお、キャッシュメモリ領域部１５は、ページと呼ばれる単位で管理される。例えば、キャッシュページサイズが32KBである場合に、アプリケーション実行部１０から512KBのデータが出力されると、管理部１４は、512KB分のページサイズ、すなわち16ページのキャッシュメモリ領域部１５を確保することとなる。
【００４８】
次に、実施例にかかるクライアントにおけるサーバへのデータ送信のための送信キューについて説明する。図５は、実施例にかかるクライアントにおけるサーバへのデータ送信のための送信キューの例を示す図である。
【００４９】
アプリケーション実行部１０からシステムコールが発行され、その要求を受け取った管理部１４は、クライアント１Ｃ1上のキャッシュデータをコピーし、さらにサーバ１Ｓ1側のキャッシュメモリ領域部１０４にデータを転送するために、データ送受信部１３の送信キューに要求を接続する。通信ヘッダにはサーバ１Ｓ1とクライアント１Ｃ1とで通信するための情報、送信するためのファイルデータの情報、およびファイルデータへのアドレスが入っている。データ送受信部１３では、定期的に送信キューを調べ、送信キューに要求がつながれていたらその順序でサーバ１Ｓ1側のデータ送受信部１０２へ該当するデータを送信する。
【００５０】
次に、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してデータ書き込み要求を再送する処理概要について説明する。図６は、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してデータ書き込み要求を再送する処理概要を示す図である。
【００５１】
サーバ１Ｓ1における障害発生によるサーバダウンについては、各クライアントからの要求がタイムアウトして検出される場合と、各ホスト（サーバ、クライアント）上で動作するホスト生存監視部１７またはホスト生存監視部１０５で検出される場合がある。ホスト生存監視部１７またはホスト生存監視部１０５は、クライアントまたはサーバで動作する常駐プログラムによるサービスである。
【００５２】
ホスト生存監視部１７またはホスト生存監視部１０５は、クライアントが要求を依頼したサーバに対して、一定間隔でハートビートを送信することで生存検出を行う。リモートファイルシステムＲＦＳ全体の中で、１つのホスト生存監視部１７またはホスト生存監視部１０５がマスタとなり、全システムのホスト上で動作するホスト生存監視部１７またはホスト生存監視部１０５からの異常通知を受け、他のホスト上で動作するホスト生存監視部１７またはホスト生存監視部１０５に通知することで、それぞれのホスト生存監視部１７またはホスト生存監視部１０５は全システムのホストの生存状況を把握する。
【００５３】
また、ハートビートはマスタであるホスト生存監視部１７またはホスト生存監視部１０５から、他のホスト生存監視部１７またはホスト生存監視部１０５に対して定期的に発行される。スレーブであるホスト生存監視部１７またはホスト生存監視部１０５では、マスタからの問い合わせがない場合は、マスタがダウンしたと認識し、以降はマスタとして動作する。
【００５４】
データ送受信部１３でタイムアウトを検出した場合は、ホスト生存監視部１７に通知し、全システムでホストの生存状況認識が一致してからサーバ切り替えを行う。なお、マスタ、スレーブは図７に示す定義ファイルに事前に設定されるものである。
【００５５】
図６において、サーバ１Ｓ1がダウンしたことをクライアント１Ｃ1が検出した場合、記憶装置Ｄへの書込みが完了していなデータから順番に代替サーバであるサーバ２Ｓ2に要求を再送する。通知を受けたデータ送受信部１３は、生存している別サーバに要求を再送する。なお、要求を出してない状態ならば単なる切り替えであり、要求を出している途中であれば別サーバへのデータ再送となる。
【００５６】
次に、実施例におけるサーバ装置の優先順位を定義する定義ファイルについて説明する。図７は、実施例におけるサーバ装置の優先順位を定義する定義ファイルの例を示す図である。同図に示すように、最初にサーバを定義し、次にクライアントを並べて記述する。
サーバの記述は、左に記述したものほど優先度が高くなり、一番左がマスタ、左から２番目がスレーブとなる。スレーブが複数存在する場合も同様で、左に書かれたサーバの優先度が高い。
【００５７】
次に、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してシステムコールを再送する処理概要について説明する。図８は、実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してシステムコールを再送する処理概要を示す図である。
【００５８】
サーバで使われているメモリは揮発性記憶媒体であるため、記憶装置Ｄの記憶媒体への書き込みが正常に終了しなかったデータは、サーバ１Ｓ1のサーバダウンと共に消失してしまう。このため、クライアントでシステムコールを最初からやり直す機能を追加することで、ファイルの書込み保証そしてジョブの継続性を向上させることが可能となる。
【００５９】
具体的には、クライアントＣにおいて、アプリケーション実行部１０から発行されたシステムコールのインタフェースをクライアント側のメモリ上あるいはディスク上に記録しておく。この記録はクライアントでアプリケーションが要求を受けた順番で記録する。すなわち、未処理リスト１５ａを作成する。ただし、すべてのシステムコールが記録を要するわけではない。
【００６０】
この記録は、記憶装置Ｄの記憶媒体まで書き込まれた時点でサーバ側（サーバ１Ｓ1）の書き戻しデーモンから通知され、破棄される。それまではクライアントＣ側で保持される。クライアントＣがサーバ１Ｓ1のサーバダウンを検出した場合、上記の記録を元にシステムコール処理を別サーバ（サーバ２Ｓ2）に対して再実行することで、ジョブ継続性、運用継続性を保証することが可能となる。
【００６１】
次に、実施例にかかるクライアントのキャッシュメモリ領域に格納される未処理リストについて説明する。図９は、実施例にかかるクライアントのキャッシュメモリ領域に格納される未処理リストの例を示す図である。
【００６２】
未処理リスト１５ａは、「番号」、「プロセス情報」、「ファイル情報」、「システムコール種別」、「ファイルデータへのポインタ」のカラムを有する。「番号」は、未処理リスト１５ａのエントリを識別するための一意な数値である。「プロセス情報」は、１つのクライアント内で一意であるプロセスＩＤであり、この情報からユーザ情報にアクセス可能である。
【００６３】
「ファイル情報」は、リモートファイルシステムＲＦＳが取り扱っているファイルを識別するための識別子であり、該リモートファイルシステムＲＦＳ内で一意な数値である。「システムコール種別」は、システムコール種別を特定できる識別子と、システムコールに指定された引数とを記録するものである。識別子は次のように一意の数値である。すなわち、“openシステムコール”＝“1”、“writeシステムコール”＝“2”、“lseekシステムコール”＝“3”である。
【００６４】
「ファイルデータへのポインタ」は、システムコールで指定されたデータのキャッシュメモリ領域部１５における格納場所を示す情報である。例えば、“writeシステムコール”で受け渡されたデータは、該システムコール終了と共に解放されてしまうため、別のアドレスにコピーして保存しておく必要があるが、このコピーされたアドレスを示す。
【００６５】
次に、実施例にかかるリモートファイルシステムにおいて、サーバからファイルシステムの論理ブロックサイズごとに記憶装置へのデータ書き込み完了の通知を受け、該論理ブロックサイズでキャッシュ領域からデータを削除する処理概要について説明する。図１０は、実施例にかかるリモートファイルシステムにおいて、サーバから論理ブロックサイズで記憶装置へのデータ書き込み完了の通知を受け、該論理ブロックサイズでキャッシュ領域からデータを削除する処理概要を示す図である。
【００６６】
データ書き込みサーバを変更して書き込み再送するためには、記憶装置Ｄの記憶媒体に書き込まれていないアプリケーション実行部１０からの要求およびデータをクライアントのキャッシュメモリ領域部１５上で保持しておく必要がある。ただし、クライアントのメモリ実装量によって保持できるデータの上限がある。
【００６７】
再送のためのデータを保存する資源がキャッシュメモリ領域部１５において確保できない場合は、アプリケーション実行部１０によるアプリケーションの実行は抑止される。このため、クライアント上の資源が枯渇してきた場合、未処理リストを迅速に消去する必要がある。キャッシュ領域からデータを削除する単位を、ネットワークＮの負荷、リモートファイルシステムＲＦＳ全体の処理能力、クライアントＣの処理能力、クライアントＣのキャッシュメモリ領域部１５の資源の空き、サーバＳの処理能力に基づいて、適切に定めることが必要となる。
【００６８】
その例として、図１０に示すように、キャッシュ領域からデータを削除する単位をファイルシステムの論理ブロックサイズとする。論理ブロックサイズは、ファイルシステムにおいてｎ個（ｎは自然数）ある。未処理リスト１５ａは管理情報であるため、データ量は多くない。その一方で、ファイルデータのデータ量が大量である。このため、ファイルシステムがファイルを管理している単位である論理ブロックサイズでクライアントＣおよびサーバＳ間でデータ書き込み完了通知の通信をおこなう。すなわち、論理ブロックサイズで記憶装置Ｄへのデータ書き込みが完了するごとにこれを通知してファイルデータを解放することで、キャッシュメモリ領域部１５の空き領域を早期に確保して再利用することが可能となる。なお、何個の論理ブロックサイズを単位として通信するかは、設定変更可能なパラメータで設定されることとする。
【００６９】
なお、キャッシュ領域からデータを削除する単位は、ファイル単位としてもよい。すなわち、図１１に示すように、一連のシステムコールの“open”から“close”までの未処理リスト１５ａをクライアントＣで保持する。このようにすると、データ書き込み完了通知の通信回数が少なくなるため、システム負荷を抑えることができる。なお、クライアント１Ｃ1での未処理リストをまとめて消去することから消去のタイミングが遅くなる傾向にあるため、Ｉ／Ｏ量が少ない運用に好適である。
【００７０】
また、キャッシュ領域からデータを削除する単位は、システムコール単位としてもよい。すなわち、図１２に示すように、未処理リストの１つのエントリごとにデータ書き込み完了通知の通信をおこなう。例えば、図示するように、“write”コマンドに対応するwriteデータが記憶装置Ｄに書き込み完了すると、この“write”コマンドを未処理リストから削除するとともに、当該writeデータをキャッシュメモリ領域部１５から消去する。これによれば、通信回数の低減、システム負荷の低減、キャッシュ領域の空き確保の迅速性のバランスを図ることが可能となる。
【００７１】
次に、実施例にかかるクライアントにおいて実行されるデータ管理処理について説明する。実施例にかかるクライアントにおいて実行されるデータ管理処理手順を示すフローチャートである。同図に示すように、先ず、クライアントＣのアプリケーション実行部１０がシステムコールを発行する（ステップＳ１０１）。続いて、アクセス排他制御部１２が、キャッシュメモリ領域部１５の同一ファイルの同一箇所への排他制御を実行する（ステップＳ１０２）。
【００７２】
続いて、管理部１４は、キャッシュメモリ領域部１５へのデータコピーを実行し、送信データキューの作成、登録を実行する（ステップＳ１０３）。続いて、管理部１４は、サーバＳの書き戻し部１０３からのデータ書き込み完了通知の割り込みを受け付ける（ステップＳ１０４）。
【００７３】
続いて、管理部１４は、ステップＳ１０４でデータ書き込み完了通知を受けたキャッシュデータはロックされているか否かを判定する（ステップＳ１０５）。キャッシュデータはロックされていると判定される場合に（ステップＳ１０５肯定）、ステップＳ１０５を繰り返し、キャッシュデータはロックされていると判定されない場合に（ステップＳ１０５否定）、管理部１４は、書き込み完了通知に基づき、該当するキャッシュデータの更新フラグをオンにする（ステップＳ１０６）。これによって、当該キャッシュデータは、いつでもキャッシュメモリ領域部１５から開放してもよいこととなる。
【００７４】
次に、実施例にかかるリモートファイルシステムにおいて実行されるデータ送受信処理について説明する。図１４は、実施例にかかるリモートファイルシステムにおいて実行されるデータ送受信処理手順を示すフローチャートである。同図に示すように、先ず、クライアントＣにおいて、データ送受信部１３は、送信キューを定期的に参照する（ステップＳ１１１）。
【００７５】
続いて、データ送受信部１３は、送信キューにおいて要求がキューイングされているか否かを判定する（ステップＳ１１２）。要求がキューイングされていると判定されるは場合に（ステップＳ１１２肯定）、ステップＳ１１３へ移り、要求がキューイングされていると判定されない場合に（ステップＳ１１２否定）、ステップＳ１１１へ移る。
【００７６】
ステップＳ１１３では、データ送受信部１３は、サーバＳのデータ送受信部１０２との通信を確立する。このステップＳ１１３の処理は、後述するサーバＳ側でのステップＳ１２３と同期する。続いて、データ送受信部１３は、受信側のサーバＳにおいてキャッシュデータが排他制御されているか否かを判定する（ステップＳ１１４）。受信側のサーバ１Ｓ1においてキャッシュデータが排他制御されている場合に（ステップＳ１１４肯定）、ステップＳ１１３へ移り、受信側のサーバＳにおいてキャッシュデータが排他制御されていると判定されない場合に（ステップＳ１１４否定）、ステップＳ１１５へ移る。
【００７７】
ステップＳ１１５では、アクセス排他制御部１２は、送信データをロックする。続いて、データ送受信部１３は、当該データをサーバＳへ送信する（ステップＳ１１６）。このステップＳ１１６の処理は、後述するサーバＳ側でのステップＳ１２４と同期する。続いて、データ送受信部１３は、送信データのロックを解除する（ステップＳ１１７）。
【００７８】
他方、サーバＳにおいて、データ送受信部１０２は、当該キャッシュデータがキャッシュメモリ領域部１０４において既存のデータでありロックされているか否かを判定する（ステップＳ１２１）。当該キャッシュデータがキャッシュメモリ領域部１０４において既存のデータでありロックされていると判定される場合に（ステップＳ１２１肯定）、ステップＳ１２１を繰り返し、当該キャッシュデータがキャッシュメモリ領域部１０４において既存のデータでありロックされていると判定されない場合に（ステップＳ１２１否定）、ステップＳ１２２へ移る。
【００７９】
ステップＳ１２２では、アクセス排他制御部１０１は、当該キャッシュデータのデータロックをおこない（ステップＳ１２２）、送信側のクライアントＣと通信を確立する（ステップＳ１２３）。続いて、データ送受信部１０２は、クライアントＣから送信されてきたデータを受信する（ステップＳ１２４）。続いて、ステップＳ１２２でおこなったデータロックを解除する（ステップＳ１２５）。
【００８０】
次に、実施例にかかるサーバにおいて実行される記憶装置へのデータ書き込み処理について説明する。図１５は、実施例にかかるサーバにおいて実行される記憶装置へのデータ書き込み処理手順を示すフローチャートである。同図に示すように、先ず、書き戻し部１０３は、書き込むデータがデータロック中か否かを判定する（ステップＳ１３１）。書き込むデータがデータロック中であると判定される場合に（ステップＳ１３１肯定）、ステップＳ１３１を繰り返し、書き込むデータがデータロック中であると判定されない場合に（ステップＳ１３１否定）、ステップＳ１３２へ移る。
【００８１】
ステップＳ１３２では、書き戻し部１０３は、記憶装置Ｄの記憶媒体にデータを書き込むために、当該サーバのファイルシステムにＩ／Ｏを発行する（ステップＳ１３２）。続いて、書き戻し部１０３は、記憶装置Ｄへのデータ書き込みをおこなう（ステップＳ１３３）。
【００８２】
続いて、書き戻し部１０３は、記憶装置Ｄへのデータ書き込みが完了したか否かを判定する（ステップＳ１３４）。記憶装置Ｄへのデータ書き込みが完了したと判定される場合に（ステップＳ１３４肯定）、ステップＳ１３５へ移り、記憶装置Ｄへのデータ書き込みが完了したと判定されない場合に（ステップＳ１３４否定）、ステップＳ１３４を繰り返す。ステップＳ１３５では、書き戻し部１０３は、クライアントＣの管理部１４に対して書き込み完了通知をおこなう。
【００８３】
以上、本発明の実施例を説明したが、本発明は、これに限られるものではなく、特許請求の範囲に記載した技術的思想の範囲内で、更に種々の異なる実施例で実施されてもよいものである。また、実施例に記載した効果は、これに限定されるものではない。
【００８４】
また、上記実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記実施例で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００８６】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）（またはＭＰＵ（Micro  Processing  Unit）、ＭＣＵ（Micro  Controller  Unit）などのマイクロ・コンピュータ）および当該ＣＰＵ（またはＭＰＵ、ＭＣＵなどのマイクロ・コンピュータ）にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されてもよい。
【００８７】
なお、各装置にて行なわれる各処理機能を実現するプログラムは、その実行コードが各種記憶媒体に記録されて配布可能であり、また、該実行コードが電気通信回線を介しても配布可能である。
【００８８】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８９】
（付記１）ネットワークを介して端末装置とサーバ装置とが通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むリモートファイルシステムであって、
前記端末装置は、前記アプリケーションから受け渡されたデータを該端末装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、
前記サーバ装置は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記管理手段に通知する書き込み完了通知手段を有し、
前記管理手段は、前記書き込み完了通知手段から前記データの書き込みが完了したことが通知されると、前記更新フラグをオンにすることを特徴とするリモートファイルシステム。
【００９０】
（付記２）前記管理手段は、前記アプリケーションから受け渡された前記データに対応するシステムコールを前記端末装置側キャッシュ領域に格納される未処理リストに順次記録し、前記書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを前記未処理リストから削除することを特徴とする付記１に記載のリモートファイルシステム。
【００９１】
（付記３）前記端末装置が複数の前記サーバ装置のうちの第１のサーバ装置または第２のサーバ装置の何れかを介して前記データを前記記憶装置に書き込み可能に、該記憶装置が該第１のサーバ装置および該第２のサーバ装置に接続されており、
前記端末装置および前記サーバ装置は、
自装置の生存通知を他の装置へ送信し、前記データを前記記憶装置に書き込むための書き込みサーバ装置として優先されている前記第１のサーバ装置からの生存通知が受信されない場合に該第１のサーバ装置に障害が発生したと認識する生存監視手段と、
前記生存監視手段により前記第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って前記第１のサーバ装置から前記第２のサーバ装置へ前記書き込みサーバ装置を変更する書き込みサーバ装置変更手段と
をさらに有することを特徴とする付記２に記載のリモートファイルシステム。
【００９２】
（付記４）前記端末装置は、前記書き込みサーバ装置変更手段により前記書き込みサーバ装置が前記第１のサーバ装置から前記第２のサーバ装置へ変更された場合に、前記未処理リストに記録される前記システムコールに従って該システムコールに対応して前記端末キャッシュ領域に記憶されている前記データを該第２のサーバ装置へ順次再送する再送手段をさらに有することを特徴とする付記３に記載のリモートファイルシステム。
【００９３】
（付記５）前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイルシステムのｎ個（ｎは自然数）の論理ブロックサイズごとに受信して前記記憶装置に該論理ブロックサイズごとに書き込みが完了したことを前記管理手段に通知し、
前記管理手段は、前記書き込み完了通知手段から前記論理ブロックサイズごとに書き込みが完了したことが通知されると、該書き込みが完了した論理ブロックサイズごとに前記端末装置側キャッシュ領域から前記データを削除し、前記未処理リストに記録される該データのすべての論理ブロックサイズの書き込み完了が通知されると、該データに対応するシステムコールを該未処理リストから削除することを特徴とする付記４に記載のリモートファイルシステム。
【００９４】
（付記６）前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイル単位ごと受信して前記記憶装置に該ファイル単位ごとに書き込みが完了したことを前記管理手段に通知し、
前記管理手段は、前記書き込み完了通知手段から前記ファイル単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したファイル単位ごとに前記端末装置側キャッシュ領域から前記データを削除するとともに、該データに対応するシステムコールをすべて前記未処理リストから削除することを特徴とする付記４に記載のリモートファイルシステム。
【００９５】
（付記７）前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを前記システムコール単位に対応するデータ単位ごとに受信して前記記憶装置に該データ単位ごとに書き込みが完了したことを前記管理手段に通知し、
前記管理手段は、前記書き込み完了通知手段から前記データ単位ごとに書き込みが完了したことが通知されると、該書き込みが完了したデータ単位ごとに前記端末装置側キャッシュ領域から削除するとともに、該データ単位に対応するシステムコールを前記未処理リストから削除することを特徴とする付記４に記載のリモートファイルシステム。
【００９６】
（付記８）ネットワークを介してサーバ装置と通信可能に接続され、自装置で実行されるアプリケーションから受け渡されたデータを該サーバ装置に接続される記憶装置へ書き込むために該サーバ装置へ送信する端末装置であって、
前記アプリケーションから受け渡されたデータを自装置が有する端末装置側キャッシュ領域へ記憶する際に、該データの前記記憶装置への書き込み完了を示す更新フラグをオフにして該データに対応付けて該データを管理する管理手段を有し、
前記管理手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを前記サーバ装置から通知されると、前記更新フラグをオンにすることを特徴とする端末装置。
【００９７】
（付記９）前記管理手段は、前記アプリケーションから受け渡された前記データに対応するシステムコールを前記端末装置側キャッシュ領域に格納される未処理リストに順次記録し、前記書き込み完了通知手段から該データの書き込みが完了したことが通知されると、該データに対応するシステムコールを前記未処理リストから削除することを特徴とする付記８に記載の端末装置。
【００９８】
（付記１０）複数の前記サーバ装置のうちの第１のサーバ装置または第２のサーバ装置の何れかを介して前記データを前記記憶装置に書き込み可能に、該記憶装置が該第１のサーバ装置および該第２のサーバ装置に接続されており、
自装置の生存通知を他の装置へ送信し、前記データを前記記憶装置に書き込むための書き込みサーバ装置として優先されている前記第１のサーバ装置からの生存通知が受信されない場合に該第１のサーバ装置に障害が発生したと認識する生存監視手段と、
前記生存監視手段により前記第１のサーバ装置に障害が発生したと認識された場合に、事前の設定に従って前記第１のサーバ装置から前記第２のサーバ装置へ前記書き込みサーバ装置を変更する書き込みサーバ装置変更手段と
をさらに有することを特徴とする付記９に記載の端末装置。
【００９９】
（付記１１）前記書き込みサーバ装置変更手段により前記書き込みサーバ装置が、前記第１のサーバ装置から前記第２のサーバ装置へ変更された場合に、前記未処理リストに記録される前記システムコールに従って該システムコールに対応して前記端末キャッシュ領域に記憶されている前記データを該第２のサーバ装置へ順次再送する再送手段をさらに有することを特徴とする付記１０に記載の端末装置。
【０１００】
（付記１２）ネットワークを介して端末装置と通信可能に接続され、該端末装置で実行されるアプリケーションから受け渡されたデータを自装置に接続される記憶装置へ書き込むサーバ装置であって、
前記端末装置が有する前記端末装置側キャッシュ領域へ書き込まれた前記データを受信して前記記憶装置に該データの書き込みが完了したことを該端末装置に通知する書き込み完了通知手段を有することを特徴とするサーバ装置。
【０１０１】
（付記１３）前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイルシステムのｎ個（ｎは自然数）の論理ブロックサイズごとに受信して前記記憶装置に該論理ブロックサイズごとに書き込みが完了したことを前記端末装置に通知することを特徴とする付記１２に記載のサーバ装置。
【０１０２】
（付記１４）前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データをファイル単位ごと受信して前記記憶装置に該ファイル単位ごとに書き込みが完了したことを前記端末装置に通知することを特徴とする付記１２に記載のサーバ装置。
【０１０３】
（付記１５）前記書き込み完了通知手段は、前記端末装置側キャッシュ領域へ書き込まれた前記データを前記システムコール単位に対応するデータ単位ごとに受信して前記記憶装置に該データ単位ごとに書き込みが完了したことを前記端末装置に通知することを特徴とする付記１２に記載のサーバ装置。
【産業上の利用可能性】
【０１０４】
本発明は、書き込みデータを記憶装置へ書き込む以前にサーバ装置に障害が発生してその稼働が停止してしまっても、サーバ装置のキャッシュメモリに記憶されている書き込みデータが消失することなく、書き込みデータのデータロストを防止し、アプリケーションの実行継続性を向上させ、書き込みデータの信頼性向上を向上させたい場合に有用である。
【図面の簡単な説明】
【０１０５】
【図１】実施例にかかるリモートファイルシステムのネットワーク構成と、該リモートファイルシステムに接続されるクライアントおよびサーバの機能ブロックの構成とを示す図である。
【図２】実施例にかかるリモートファイルシステムにおいて、キャッシュデータの記憶装置へのデータ書き込み状態をクライアントで管理する処理概要を示す図である。
【図３】実施例にかかるクライアントのキャッシュメモリ領域を管理するための管理テーブルの例を示す図である。
【図４】実施例にかかるクライアントのキャッシュメモリ領域におけるデータの記憶状況の例を示す図である。
【図５】実施例にかかるクライアントにおけるサーバへのデータ送信のための送信キューの例を示す図である。
【図６】実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してデータ書き込み要求を再送する処理概要を示す図である。
【図７】実施例におけるサーバ装置の優先順位を定義する定義ファイルの例を示す図である。
【図８】実施例にかかるリモートファイルシステムにおいて、クライアントから代替サーバに対してシステムコールを再送する処理概要を示す図である。
【図９】実施例にかかるクライアントのキャッシュメモリ領域に格納される未処理リストの例を示す図である。
【図１０】実施例にかかるリモートファイルシステムにおいて、サーバから論理ブロックサイズごとに記憶装置へのデータ書き込み完了の通知を受け、該論理ブロックサイズごとにキャッシュ領域からデータを削除する処理概要を示す図である。
【図１１】実施例にかかるリモートファイルシステムにおいて、サーバからファイル単位で記憶装置へのデータ書き込み完了の通知を受け、該ファイル単位でキャッシュ領域からデータを削除する処理概要を示す図である。
【図１２】実施例にかかるリモートファイルシステムにおいて、サーバからシステムコールに対応するデータ単位で記憶装置へのデータ書き込み完了の通知を受け、該データ単位でキャッシュ領域からデータを削除する処理概要を示す図である。
【図１３】実施例にかかるクライアントにおいて実行されるデータ管理処理手順を示すフローチャートである。
【図１４】実施例にかかるリモートファイルシステムにおいて実行されるデータ送受信処理手順を示すフローチャートである。
【図１５】実施例にかかるサーバにおいて実行される記憶装置へのデータ書き込み処理手順を示すフローチャートである。
【符号の説明】
【０１０６】
Ｎ  ネットワーク
Ｄ  記憶装置
ＲＦＳ  リモートファイルシステム
Ｃ  クライアント
Ｃ1  クライアント１
Ｃ2  クライアント２
Ｃm  クライアントｍ
Ｓ  サーバ
Ｓ1  サーバ１
Ｓ2  サーバ２
Ｓn  サーバｎ
１０  アプリケーション実行部
１０a  アプリケーション実行部ａ
１０x  アプリケーション実行部ｘ
１１  ファイルシステム部
１２  アクセス排他制御部
１３  データ送受信部
１４  管理部
１５  キャッシュメモリ領域部
１５ａ  未処理リスト
１５ｂ  管理テーブル
１６  ＶＦＳ部
１７  ホスト生存監視部
１００  ファイルシステム部
１０１  アクセス排他制御部
１０２  データ送受信部
１０３  書き戻し部
１０４  キャッシュメモリ領域部
１０５  ホスト生存監視部
【国際調査報告】
2008139521.tif 000018
2008139521.tif 000019
2008139521.tif 000020
2008139521.tif 000021