(57)【要約】【課題】全てのファイルや制御情報をメモリ上におき、２台以上のコンピュータで高速に共用ファイルをアクセスする方法、その装置及びシステムを提供することにある。【解決手段】ファイルを共用したい各サーバ装置１０１、１０２上に、ハードディスクを使わないメモリ１００７を使った仮想的なファイルシステムを作る。各サーバ装置のメモリ１００７上のファイル１０１０等を同期することで、各サーバとも同じ内容として参照が可能となる。【選択図】図１
2009157880.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有するサーバ装置であって、
前記メモリには該サーバ装置外に同一のデータが複製されるファイルが格納され、
前記第１ネットワーク経由で送信される前記ファイルへの更新要求を該サーバ装置上で動作するユーザプログラムが受信し、
前記ユーザプログラムが前記ファイルの更新を該サーバ装置上で動作するデーモンに要求し、
前記デーモンが該サーバ装置内の前記ファイルの更新を実行し、かつ、前記第２ネットワーク経由で該サーバ装置外の複製された前記ファイルの更新を要求することを特徴とするサーバ装置。
【請求項２】
メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有するサーバ装置であって、
前記メモリには該サーバ装置外に同一のデータが複製されるファイルが格納され、
前記第1ネットワーク経由で送信される前記メモリ上の前記ファイルへの更新要求を該サーバ装置上で動作するユーザプログラムが受信し、
前記ユーザプログラムが前記ファイルの更新を該サーバ装置上で動作するデーモンに要求し、
前記デーモンは該サーバ装置内の前記ファイルの排他・アクセス権情報を確認し、かつ、該サーバ装置外の複製された前記ファイルの排他・アクセス権情報を前記第２ネットワーク経由で確認し、
該サーバ装置内の前記ファイルの排他・アクセス権情報、及び、該サーバ装置外の前記ファイルの排他・アクセス権情報が更新要件をいずれも具備している場合に、前記デーモンが該サーバ装置内のメモリ上の前記ファイルの更新を実行し、かつ、前記第２ネットワーク経由で該サーバ装置外の複製された前記ファイルの更新を要求することを特徴とするサーバ装置。
【請求項３】
請求項１または２に記載のサーバ装置において、
前記第1ネットワーク経由で送信される前記メモリ上のファイルの参照要求を該サーバ装置上で動作する前記ユーザプログラムが受信し、
前記ユーザプログラムが前記ファイルの参照を該サーバ装置上で動作するデーモンに要求し、
前記デーモンが該サーバ装置内の前記ファイルを参照することを特徴とするサーバ装置。
【請求項４】
メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有するサーバ装置であって、
前記メモリには該サーバ装置外に同一のデータが複製されるファイルが格納され、
前記第1ネットワーク経由で送信される前記メモリ上の前記ファイルへの更新要求を該サーバ装置上で動作するユーザプログラムが受信し、
前記ユーザプログラムが前記ファイルの更新を該サーバ装置上で動作するデーモンに要求し、
前記デーモンは該サーバ装置内の前記ファイルの排他・アクセス権情報、及び、該サーバ装置外の複製された前記ファイルの排他・アクセス権情報を前記第２ネットワーク経由で確認し、
該サーバ装置内の前記ファイルの排他・アクセス権情報、及び、該サーバ装置外の複製された前記ファイルの排他・アクセス権情報が更新条件をいずれも具備している場合に、前記デーモンが該サーバ装置内の前記ファイルの更新を実行し、かつ、前記第２ネットワーク経由で該サーバ装置外の複製された前記ファイルの更新を要求することを特徴とするサーバ装置。
【請求項５】
請求項４に記載のサーバ装置において、前記ファイルの前記排他・アクセス権情報はファイル単位での管理及び前記ファイルの所定の容量単位での管理を可能にすることを特徴とするサーバ装置。
【請求項６】
請求項５に記載のサーバ装置において、
前記第２ネットワーク経由での所定のファイルの排他・アクセス権情報の確認要求に応じて、要求に関する前記排他・アクセス権情報を前記デーモンが確認し、確認結果を前記第２ネットワーク経由で送出することを特徴とするサーバ装置。
【請求項７】
メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有する第１のサーバ装置、及びメモリと、第１ネットワークとのインターフェイスと、第２ネットワークのインターフェイスを有する第２のサーバ装置を含むファイルシステムであって、
前記第２のサーバ装置の前記メモリに同一のデータが複製されるファイルが前記第１のサーバ装置の前記メモリに格納され、
前記第1ネットワーク経由で送信される前記ファイルへの更新要求を前記第１のサーバ装置上で動作するユーザプログラムが受信し、
前記ユーザプログラムが前記ファイルの更新を前記第１のサーバ装置上で動作するデーモンに要求し、
前記デーモンは前記第１のサーバ装置内の前記ファイルの排他・アクセス権情報を確認し、あわせて、前記第２のサーバ装置の複製された前記ファイルの排他・アクセス権情報を前記第２ネットワーク経由で前記第２のサーバ装置内で動作するデーモンに確認し、
前記第１のサーバ装置内の前記ファイルの排他・アクセス権情報、及び、前記第２のサーバ装置内の複製された前記ファイルの排他・アクセス権情報が更新条件をいずれも具備している場合に、前記第１のサーバ装置内の前記デーモンが前記第１のサーバ装置内の前記ファイルの更新を実行し、かつ、前記第２ネットワーク経由で前記第２のサーバ装置上の複製された前記ファイルの更新を要求することを特徴とするファイルシステム。
【請求項８】
請求項７記載のファイルシステムにおいて、前記第２のサーバ装置上でも前記ユーザプログラム及び前記デーモンが動作し、前記第１のサーバ装置で障害が発生した際に、前記第２のユーザプログラムが前記第1ネットワークを経由して処理を引き継ぐことを特徴とするファイルシステム。
【請求項９】
請求項８記載のファイルシステムにおいて、前記第１のサーバ装置の障害が復旧した際に前記第１のサーバ装置上で動作する前記デーモンが前記第２のサーバ装置上で動作する前記デーモンに前記第１のサーバ装置のメモリ上のファイルと前記第２のサーバ装置のメモリ上のファイルの同期を前記第２ネットワークを経由して確認することを特徴とするファイルシステム。
【請求項１０】
メモリと、第１ネットワークとのインターフェイスと、第２ネットワークのインターフェイスを有する第１のサーバ装置と、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有する第２のサーバ装置、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有する第３のサーバ装置と、を含むファイルシステムであって、
前記第２のサーバ装置の前記メモリに同一のデータが複製されるファイルが前記第１のサーバ装置の前記メモリに格納され、かつ、前記第３のサーバ装置の前記メモリに同一のデータが複製されるファイルが前記第２のサーバ装置の前記メモリに格納され、
前記第1ネットワーク経由で送信される前記ファイルへの更新要求を前記第１のサーバ装置上で動作するユーザプログラムが受信し、
前記第１のサーバ装置上の前記ユーザプログラムが前記ファイルの更新を前記第１のサーバ装置上で動作するデーモンに要求し、
前記第１のサーバ装置上で動作するデーモンは前記第１のサーバ装置内の前記ファイルの排他・アクセス権情報を確認し、あわせて、前記第２のサーバ装置の複製された前記ファイルの排他・アクセス権情報を前記第２ネットワーク経由で前記第２のサーバ装置内で動作するデーモンに確認し、
前記第１のサーバ装置内の前記ファイルの排他・アクセス権情報、及び、前記第２のサーバ装置内の複製された前記ファイルの排他・アクセス権情報が更新条件をいずれも具備している場合に、前記第１のサーバ装置上で動作するデーモンが前記第１のサーバ装置内の前記ファイルの更新を実行し、かつ、前記第２ネットワーク経由で前記第２のサーバ装置上の複製された前記ファイルの更新を要求し、
前記第1ネットワーク経由で送信される前記ファイルへの更新要求を前記第２のサーバ装置上で動作するユーザプログラムが受信し、
前記第２のサーバ装置上の前記ユーザプログラムが前記ファイルの更新を前記第２のサーバ装置上で動作するデーモンに要求し、
前記第２のサーバ装置上で動作するデーモンは前記第２のサーバ装置内の前記ファイルの排他・アクセス権情報を確認し、あわせて、前記第３のサーバ装置の複製された前記ファイルの排他・アクセス権情報を前記第２ネットワーク経由で前記第３のサーバ装置内で動作するデーモンに確認し、
前記第２のサーバ装置内の前記ファイルの排他・アクセス権情報、及び、前記第３のサーバ装置内の複製された前記ファイルの排他・アクセス権情報が更新条件をいずれも具備している場合に、前記第２のサーバ装置上で動作するデーモンが前記第２のサーバ装置内の前記ファイルの更新を実行し、かつ、前記第２ネットワーク経由で前記第３のサーバ装置上の複製された前記ファイルの更新を要求することを特徴とするファイルシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバ（コンピュータ）において、同一のファイルを２台以上のサーバのメモリを用いて共用することを可能とする、サーバ間ファイル共用に関する。
【背景技術】
【０００２】
ファイルを共用するシステムにおいて、それぞれのサーバにディスクを置き、それぞれのサーバに二重書きするという手段がある。
【０００３】
記憶制御装置間で遠隔二重書きを行うと共に、それぞれの上位装置からのファイル共用に際して、ファイル単位の排他制御を可能とするシステム等が特開２００３−８４９１７号公報（特許文献１）に記載されている。すなわち、ファイル管理情報は第1ネットワーク経由で共用する一方、第２ネットワーク（ＳＡＮ）を通じて２台のファイルサーバの遠隔二重書き装置間でデータを複製することでデータ転送負荷を軽減し、二重書きのためのデータ転送を妨げないというものである。
【特許文献１】特開２００３−８４９１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述の通り、特許文献１記載の発明では、遠隔のディスク及び遠隔のコンピュータに対して、第1ネットワークで排他制御し、データは第２ネットワークで二重書きするという方法で、複数の記録装置に同じ内容のファイルを共有する方法を取っている。しかし、第1ネットワークで制御情報のやり取りをし、第２ネットワークを使ってデータのやり取りを行っているため、排他の間隔が長いという問題がある。また、この方法では、排他の制御もファイル単位でしか行うことができない。
【０００５】
本発明の目的は、全てのファイルや制御情報をメモリ上におき、２台以上のコンピュータで高速に共用ファイルをアクセスするサーバ装置及びファイルシステムを提供することにある。
【０００６】
また、本発明の別の目的はサーバダウン時に記録情報がなくなってしまった場合にそれを復旧させるためのシステムを提供することにある。
【０００７】
更に、本発明の別の目的としては、ファイルの部分的な排他を可能ならしめる方法を提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次の通りである。
【００１０】
本発明の代表的な実施の形態に関わるサーバ装置は、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有し、メモリには該サーバ装置外に同一のデータが複製されるファイルが格納されており、第1ネットワーク経由で送信される前記ファイルへの更新要求を該サーバ装置上で動作するユーザプログラムが受信し、ユーザプログラムが前記ファイルの更新を該サーバ装置上で動作するデーモンに要求し、このデーモンが該サーバ装置内の前記ファイルの更新を実行し、かつ、前記第２ネットワーク経由で該サーバ装置外の複製された前記ファイルの更新を要求することを特徴とする。
【００１１】
本発明の代表的な実施の形態に関わる別のサーバ装置は、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有し、メモリには該サーバ装置外に同一のデータが複製されるファイルが格納されており、第1ネットワーク経由で送信されるメモリ上のファイルへの更新要求を該サーバ装置上で動作するユーザプログラムが受信し、このユーザプログラムがファイルの更新を該サーバ装置上で動作するデーモンに要求し、このデーモンは該サーバ装置内のファイルの排他・アクセス権情報、及び、第２ネットワーク経由で該サーバ装置外の複製されたファイルの排他・アクセス権情報を確認し、該サーバ装置内の前記ファイルの排他・アクセス権情報、及び、該サーバ装置外の前記ファイルの排他・アクセス権情報の更新要件をいずれも具備している場合に、デーモンが該サーバ装置内のメモリ上の前記ファイルの更新を実行し、かつ、第２ネットワーク経由で該サーバ装置外の複製されたファイルの更新を要求することを特徴とする。
【００１２】
このサーバ装置は、第1ネットワーク経由で送信されるメモリ上のファイルの参照要求を該サーバ装置上で動作するユーザプログラムが受信し、ユーザプログラムがファイルの参照を該サーバ装置上で動作するデーモンに要求し、このデーモンが該サーバ装置内のファイルを参照することを特徴としても良い。
【００１３】
本発明の代表的な実施の形態に関わる別のサーバ装置は、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有し、メモリには該サーバ装置外に同一のデータが複製されるファイルが格納されており、第1ネットワーク経由で送信されるメモリ上のファイルへの更新要求を該サーバ装置上で動作するユーザプログラムが受信し、ユーザプログラムがファイルの更新を該サーバ装置上で動作するデーモンに要求し、デーモンは該サーバ装置内のファイルの排他・アクセス権情報、及び、該サーバ装置外の複製されたファイルの排他・アクセス権情報を第２ネットワーク経由で確認し、該サーバ装置内のファイルの排他・アクセス権情報、及び、該サーバ装置外の複製されたファイルの排他・アクセス権情報の更新条件のいずれも具備している場合に、デーモンが該サーバ装置内のファイルの更新を実行し、かつ、第２ネットワーク経由で該サーバ装置外の複製されたファイルの更新を要求することを特徴とする。
【００１４】
このサーバ装置は、ファイルの排他・アクセス権情報はファイル単位での管理及びファイルの所定の容量単位での管理を可能にすることを特徴としても良い。
【００１５】
また、このサーバ装置は、第２ネットワーク経由での所定のファイルの排他・アクセス権情報の確認要求に応じて、要求に関する排他・アクセス権情報をデーモンが確認し、確認結果を第２ネットワーク経由で送出することを特徴としても良い。
【００１６】
本発明の代表的な実施の形態に関わるファイルシステムは、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有する第１のサーバ装置、及びメモリと、第１ネットワークとのインターフェイスと、第２ネットワークのインターフェイスを有する第２のサーバ装置を含み、第２のサーバの前記メモリに同一のデータが複製されるファイルが第１のサーバのメモリに格納されており、第1ネットワーク経由で送信されるファイルへの更新要求を第１のサーバ装置上で動作するユーザプログラムが受信し、ユーザプログラムがファイルの更新を第１のサーバ装置上で動作するデーモンに要求し、このデーモンは第１のサーバ装置内のファイルの排他・アクセス権情報を確認し、あわせて、第２のサーバ装置の複製されたファイルの排他・アクセス権情報を第２ネットワーク経由で前記第２のサーバ装置内で動作するデーモンに確認し、第１のサーバ装置内のファイルの排他・アクセス権情報、及び、第２のサーバ装置内の複製されたファイルの排他・アクセス権情報の更新条件をいずれも具備している場合に、デーモンが第１のサーバ装置内のファイルの更新を実行し、かつ、第２ネットワーク経由で第２のサーバ装置上の複製されたファイルの更新を要求することを特徴とする。
【００１７】
このファイルシステムは、第２のサーバ装置上でもユーザプログラム及びデーモンが動作し、第１のサーバ装置で障害が発生した際に、第２のユーザプログラムが第1ネットワークを経由して処理を引き継ぐことを特徴としても良い。
【００１８】
このファイルシステムは、第１のサーバ装置の障害が復旧した際に第１のサーバ装置上で動作するデーモンが第２のサーバ装置上で動作するデーモンに第１のサーバ装置のメモリ上のファイルと第２のサーバ装置のメモリ上のファイルの同期状態を第２ネットワークを経由して確認することを特徴としても良い。
【００１９】
本発明の代表的な実施の形態に関わる別のファイルシステムは、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有する第１のサーバ装置と、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有する第２のサーバ装置、メモリと、第１ネットワークとのインターフェイスと、第２ネットワークとのインターフェイスを有する第３のサーバ装置と、を含み、第２のサーバ装置のメモリに同一のデータが複製されるファイルが第１のサーバ装置のメモリに格納され、かつ、第３のサーバ装置のメモリに同一のデータが複製されるファイルが第２のサーバ装置のメモリに格納され、第1ネットワーク経由で送信されるファイルへの更新要求を前記第１のサーバ装置上で動作するユーザプログラムが受信し、ユーザプログラムがファイルの更新を第１のサーバ装置上で動作するデーモンに要求し、第１のサーバ装置上で動作するデーモンは第１のサーバ装置内のファイルの排他・アクセス権情報を確認し、あわせて、第２のサーバ装置の複製されたファイルの排他・アクセス権情報を第２ネットワーク経由で第２のサーバ装置内で動作するデーモンに確認し、第１のサーバ装置内のファイルの排他・アクセス権情報、及び、第２のサーバ装置内の複製されたファイルの排他・アクセス権情報が更新条件をいずれも具備している場合に、第１のサーバ装置上で動作するデーモンが第１のサーバ装置内のファイルの更新を実行し、かつ、第２ネットワーク経由で第２のサーバ装置上の複製されたファイルの更新を要求し、第1ネットワーク経由で送信されるファイルへの更新要求を第２のサーバ装置上で動作するユーザプログラムが受信し、ユーザプログラムがファイルの更新を第２のサーバ装置上で動作するデーモンに要求し、第２のサーバ装置上で動作するデーモンは第２のサーバ装置内のファイルの排他・アクセス権情報を確認し、あわせて、第３のサーバ装置の複製されたファイルの排他・アクセス権情報を前記第２ネットワーク経由で前記第３のサーバ装置内で動作するデーモンに確認し、第２のサーバ装置内のファイルの排他・アクセス権情報、及び、第３のサーバ装置内の複製されたファイルの排他・アクセス権情報が更新条件をいずれも具備している場合に、第２のサーバ装置上で動作するデーモンが第２のサーバ装置内のファイルの更新を実行し、かつ、第２ネットワーク経由で第３のサーバ装置上の複製されたファイルの更新を要求することを特徴とする。
【発明の効果】
【００２０】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
【００２１】
本発明の代表的な実施の形態に関わるファイルシステムにおいては、各サーバのメモリファイルを同期することで、各サーバとも同じ内容として参照可能になる。
【００２２】
また、本発明の代表的な実施の形態に関わるファイルシステムにおいては、他のサーバにファイル内容を同期しているため、障害などで他のサーバに引き継ぐ際のデータの回復を高速に行うことが可能になる。
【００２３】
更に、本発明の代表的な実施の形態に関わるファイルシステムにおいては、障害となっていないサーバのメモリ内容を再同期することによって、ファイルの状況を維持することができる。
【発明を実施するための最良の形態】
【００２４】
以下、この発明を実施するための最良の形態を図面に基づいて詳細に説明する。
【００２５】
（第１の実施の形態）
（本実施の形態の通常時の処理）
図１は、本発明の第１の実施の形態であるサーバ間メモリ共用ファイルシステムの構成を示す構成図である。このサーバ間メモリ共用ファイルシステムは第１サーバ１０１と第２サーバ１０２、及びこれらにデータの参照や更新を要求する上位装置１２１、１２２、１２３、１２４より構成される。なお、図面上では３台のサーバ（上述の２つに加えて第ｎサーバ）しか表していないが、４台以上のサーバがあっても良い。
【００２６】
第１サーバ１０１と第２サーバ１０２は第１ネットワーク（ＬＡＮ）１と第２ネットワーク２によって接続されている。また第１ネットワーク１を経由して上位装置１２１、１２２、１２３、１２４と接続されている。
【００２７】
なお、第２ネットワーク２としてはＳＡＮ（Ｓｔｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の使用が考えられるが、必ずしもこれにはこだわらない。また、図面上ではネットワーク・トポロジーをバス型として表現しているが、環状接続のリング型であっても良い。
【００２８】
本実施の形態においては第１サーバ１０１と第２サーバ１０２は、それぞれ内部にユーザプログラム１００２と、デーモン（Ｄａｅｍｏｎ）１００３が動作する図示しない処理装置（ＣＰＵやＤＳＰ）及びメモリ１００７を含む。
【００２９】
ユーザプログラム１００２は、上位装置からのアクセスや起動指示、または図示しないタイマによる割り込み等で起動する。デーモン１００３を経由して、ユーザプログラム１００２は排他処理、書き込み処理、読み込み処理、アクセス権限の変更を実行する。
【００３０】
一般的に「デーモン」とは、マルチタスク環境下においてバックグラウンドで特定の処理をするプログラムのことである。本実施の形態のデーモン１００３はユーザプログラム１００２からの命令を受け、メモリ１００７へのアクセスや第２ネットワーク２経由のコマンドの送信、戻り値の受信等を行う。なお、第１サーバ１０１のデーモン１００３と第２サーバ１０２のデーモン１００３との間には正副の区別は無い。第１サーバ１０１のデーモン１００３と第２サーバ１０２のそれは同じ動作が可能である。
【００３１】
メモリ１００７には処理装置の動作領域である作業エリア１００８、排他、アクセス権限に関する情報を格納する制御データ１００９、参照・更新の対象となるファイル１０１０が含まれる。
【００３２】
メモリ１００７にアクセスするために、デーモン１００３中にはサーバ受付処理モジュール１００４、更新準備／更新確定モジュール１００５、参照モジュール１００６がプログラムとして含まれる。
【００３３】
サーバ受付処理モジュール１００４は、ユーザプログラム１００２から受け取ったコマンドが更新系処理か参照系処理かを判断する。
【００３４】
ユーザプログラム１００２からのコマンドが更新系処理であれば、更新準備／更新確定モジュール１００５への更新準備指示を行う。また併せて、第２ネットワーク２を経由してファイル同期の対象である他のサーバのデーモン１００３内の更新準備／更新確定モジュール１００５への更新準備指示を行う。
【００３５】
サーバ受付処理モジュール１００４が更新系の処理を受け取り、更新準備／更新確定モジュール１００５に更新要求を送出すると、更新準備／更新確定モジュール１００５は排他状況やアクセス権を確認し、メモリ１００７中のファイル１０１０を更新するためのデータを、メモリ１００７中の作業エリア１００８に格納する。同様に、第２ネットワーク２を経由で送られてきた他のサーバからの更新要求に際しても、更新準備／更新確定モジュール１００５は排他状況やアクセス権を確認し、メモリ１００７中のファイル１０１０を更新するためのデータを、メモリ１００７中の作業エリア１００８に格納する。
【００３６】
すでに他のモジュールによって希望するファイルに対して排他処理が行われている状況にある場合には、更新準備／更新確定モジュール１００５はサーバ受付処理モジュール１００４にエラーを返す。また、更新用のデータが作業エリア１００８に格納できたときには、自サーバもしくは他のサーバの要求元のサーバ受付処理１００４に対してエラーが無く正常に作業エリアへの書き込みが終了した旨通知する。
【００３７】
全ての要求先が更新用のデータを作業エリア１００８に書き込めたことが確認できた後に、サーバ受付処理モジュール１００４は各更新準備／更新確定モジュール１００５に対して更新データの確定を指示する。
【００３８】
一方、更新の要求先の一つから作業エリアへの書き込みでエラーが発生した旨返ってきた場合、サーバ受付処理モジュール１００４は更新準備／更新確定モジュール１００５に対して更新の取り消しを指示すると共に、要求元のユーザプログラム１００２に対して、エラーを返す。
【００３９】
ユーザプログラム１００２からのコマンドが参照系処理であれば、サーバ受付処理モジュール１００４は自サーバの参照モジュール１００６に対してのみ参照指示を行う。自サーバの更新準備／更新確定モジュール１００５に対して排他状況やアクセス権を確認し、その後、自サーバのメモリ１００７中のファイルの内容を参照モジュール１００６経由で参照し、要求元のユーザプログラム１００２に応答を返す。
【００４０】
図２は第１サーバ１０１のユーザプログラム１００２がデーモン１００３を経由してメモリ１００７上のファイル１０１０を更新・参照するまでの処理を表すフローチャートである。
【００４１】
この図において破線で囲ったステップＳ２０３、ステップＳ２０４、ステップＳ２０７は図１のサーバの数が増えると、処理の主体が増えるステップを指す。
【００４２】
以下、この処理について説明する。
【００４３】
各上位装置からのファイル１０１０の操作に関する要求、または、タイマによる割り込み処理によって第１サーバ１０１のユーザプログラム１００２が起動する（ステップＳ２００）。
【００４４】
続いて第１サーバ１０１のユーザプログラム１００２からデーモン１００３のサーバ受付処理モジュール１００４に対してコマンド及び必要なパラメータを発行する（ステップＳ２０１）。図３は、ユーザプログラム１００２からサーバ受付処理モジュール１００４に対して送信されるデーモンを制御するためのパラメータ（データ）の構造を示す概念図である。
【００４５】
ここで必要なパラメータとは、デーモン１００３を制御するための制御フラグ８０２、ファイル名８０３、制御データの更新内容８０４、ファイルへの書き込みデータ８０５等である。
【００４６】
制御フラグ８０２は、制御内容を示すパラメータである。ここでは、「書き込み」の時は１、「読み込み」の時は２、「排他制御」の時は３のパラメータが設定される。
【００４７】
ファイル名８０３はアクセス対象となるファイルのファイル名である。
【００４８】
制御データの更新内容８０４は制御データ１００９を更新する際に用いる内容を示すパラメータである。
【００４９】
ファイルへの書き込みデータ８０５は、制御フラグ８０２が「１」の際に該ファイルに書き込む内容を示す。
【００５０】
これらのパラメータにより、ユーザプログラム１００２とのインターフェイスが確立される。
【００５１】
このコマンドを受けてサーバ受付処理モジュール１００４がサーバ受付処理モジュール１００４からのコマンドがファイルの更新処理に関わるものか、参照処理に関わるものか、制御データの更新に関わるものか、を解釈し、処理を要求するモジュールを決定する（ステップＳ２０２）。上述の例では、制御フラグが２であれば参照モジュール１００６に対する処理要求であり、他のものであれば、更新準備／更新確定モジュール１００５に対するものである、とサーバ受付処理モジュール１００４は判断する。
【００５２】
ファイルの参照処理の場合（制御フラグ８０２が２のとき）、サーバ受付処理モジュール１００４は参照モジュール１００６に対して、ファイル名８０３を用いて該ファイルの排他情報、アクセス権限、メモリ１００７中のアドレスの特定などを要求する（ステップＳ２１１）。
【００５３】
ここでアクセス権限を確認する際に用いる各サーバのメモリ１００７中の制御データ１００９を表すのが図４である。制御データ１００９は、ファイル全体の制御データ７０とファイルの部分的な制御データ７１に分けることができる。このうちファイル全体の制御データ７０は必ず存在するが、ファイルの部分的な制御データ７１は部分的な排他制御を行わないときには存在しなくとも良い。また、同一ファイルの部分的な制御を複数の箇所で行う場合にはファイルの部分的な制御データ７１は複数存在することも可能である。
【００５４】
まずファイル全体の制御データ７０について説明する。
【００５５】
ファイル名７０２は当該制御データが管理する対象のファイル名を表すデータフィールドである。
【００５６】
サイズ７０３は当該制御データが管理する対象のファイルのデータ量を表すデータフィールドである。
【００５７】
ファイル作成者７０４は当該制御データが管理する対象のファイルの作成者を示す情報を格納するデータフィールドである。
【００５８】
アクセス権限７０５は当該制御データが管理するファイル全体のアクセス権限を規定するデータフィールドである。
【００５９】
作成、更新、参照日時７０６は該ファイルの作成等された日時を現すデータフィールドである。
【００６０】
メモリ先頭アドレス７０７は当該制御データが管理する対象のファイルの先頭がメモリ中のどこの番地から記憶されているかを現すデータフィールドである。
【００６１】
ファイル全体の排他フラグ７０８は該ファイルの排他制御をどのように行うかを規定するデータフィールドである。このデータフィールド中には、ファイル作成者からのアクセスの排他制御、ファイル作成者以外からの排他制御、２ユーザ以上が同時にアクセスした際の排他制御をビットで表している。本図では各２ビットずつ、計６ビット構成としているが、これ以上のパラメータを盛り込むことも可能である。
【００６２】
ファイル全体の排他フラグ７０８はファイルの操作状況に応じて、静的な、または動的に変化するフラグである。具体的には、作成者以外は参照のみを許可する設定（静的の例）や、同時に更新されるとアトミック性等の問題が生じる場合に６ビット目（１０進表記で３２）を「１」（セット状態）にし、排他状態であることを表示する（動的の例）等が考えられる。
【００６３】
ファイル全体の排他フラグ７０８のいずれかのフラグが「１」（セット状態）の場合には、該当する処理の実行は行えない。たとえば３ビット目（１０進表記で４）が１の場合には、ファイル作成者以外の者は当該ファイルの参照はできない。排他フラグ７０８のいずれのフラグも「０」（非セット状態）の場合には、他のユーザプログラムがファイルにアクセスしていない、または該ユーザプログラムのアクセスが許可されている状態であるため、参照モジュール１００６または更新準備／更新確定モジュール１００５は参照・書込処理を行う。この際、ファイル全体の排他フラグ７０８の動的に変化するフラグを「１」にセットすること、参照・書き込み処理終了時に動的に変化するフラグを「０」にセットする(同時アクセス制限の解除する)ことなども考慮されるべきである。
【００６４】
このファイル全体の排他フラグ７０８とアクセス権限７０５が排他・アクセス権情報の中核となる。
【００６５】
部分排他制御先頭アドレス７０９はファイルの部分的な制御データ７１がある際に、その格納されているメモリのアドレスを指標するデータフィールドである。ファイルの部分的な制御データ７１が存在しない場合にはＮＵＬＬが入力されることで部分的な制御データ７１が存在しないことを表現しても良い。
【００６６】
続いて、ファイルの部分的な制御データ７１について説明する。
【００６７】
部分排他アドレス７１０は部分排他を行うメモリ領域の先頭アドレスを指標するデータフィールドであり、また、部分排他サイズ７１１は該部分排他の対象となるデータ量を表すデータフィールドである。
【００６８】
ファイルの部分的な排他フラグ７１２は該部分排他の対象の排他制御をどのように行うかを規定するデータフィールドである。本図では、このフィールドのビット構成はファイル全体の排他フラグ７０８と対応させているが、必ずしもファイルの部分的な排他フラグ７１２とファイル全体の排他フラグ７０８とのビット配置を対応させる必要は無い。
【００６９】
ファイルの部分的な制御データ７１が存在する場合には、参照モジュール１００６または更新準備／更新確定モジュール１００５は、このファイルの部分的な排他フラグ７１２をも排他・アクセス権情報の一つとして参照する。なお、この項目の確認はファイル全体の排他フラグ７０８同様に行えばよいのでここでは省略する。
【００７０】
部分排他制御先頭アドレス７１３は異なるファイルの部分的な制御データ７１がある際に、その格納されているメモリのアドレスを指標するデータフィールドである。ファイルの部分的な制御データ７１が存在しない場合にはＮＵＬＬが入力される。
【００７１】
このように異なるファイルの部分的な制御データ７１を数珠繋ぎに記憶し管理することで排他制御をきめ細かく行うことを可能にする。
【００７２】
図２の説明に戻る。
【００７３】
ファイルの参照処理に際しては、各サーバの参照モジュール１００６は、自サーバのメモリ１００７中の制御データ１００９からアクセス権限７０５、ファイル全体の排他フラグ７０８、ファイルの部分的な排他フラグ７１２を主に参照して、アクセス権限の有無の確認を行う。
【００７４】
この際、排他情報等から該ユーザプログラム１００２から該ファイルへのアクセスが認められるようであれば（ステップＳ２１２：Ｙｅｓ）、サーバ受付処理モジュール１００４がＩ／Ｏ（インプット／アウトプット）完了をユーザプログラム１００２に返す（ステップＳ２１３）。逆に、該ファイルへのアクセスが認められない場合には（ステップＳ２１２：Ｎｏ）、サーバ受付処理モジュール１００４がＩ／Ｏエラーをユーザプログラム１００２に返す（ステップＳ２０６）。
【００７５】
ファイルの更新処理の場合（制御フラグ８０２が１のとき）、サーバ受付処理モジュール１００４は自身の更新準備／更新確定モジュール１００５に更新コマンド及び図３のファイルへの書き込みデータ８０５相当のデータを出力すると共に、第２ネットワーク２を経由して第２サーバ１０２の更新準備／更新確定モジュール１００５に更新コマンド及びデータを出力する。各サーバの更新準備／更新確定モジュール１００５は要求元（ここでは第１サーバ１０１のサーバ受付処理モジュール１００４）がアクセス権を有しているか、あるいは、アクセス対象のファイルが排他処理下に置かれているかを確認する。要求元のアクセスが認められなければこの時点でその旨を第１サーバ１０１のサーバ受付処理モジュール１００４に返す（ステップＳ２０３）。なお、ここでは第２サーバ１０２に送ることとしているが、更に多くのサーバがある際にはそれらの全てに、あるいは一部に更新コマンド及びデータを出力しても良い。
【００７６】
その後、受け取ったデータをメモリ１００７の作業エリア１００８に書き込む処理を各サーバの更新準備／更新確定モジュール１００５が実行する（ステップＳ２０４）。メモリ容量の不足等により作業エリア１００８に書き込めなかったときにはエラーが生じた旨を、問題なく書き込めたときにも問題なく書き込めた旨を要求元のサーバ受付処理モジュール１００４に返す。
【００７７】
要求元である第１サーバ１０１のサーバ受付処理モジュール１００４は各サーバから寄せられるステップＳ２０３またはステップＳ２０４の戻り値を検証する（ステップＳ２０５）。戻り値に一つでも問題（アクセス権限がない、又は更新ファイルが作業エリア１００８に書き込めないなど）があった場合には（ステップＳ２０５：Ｎｏ）、エラーの内容に応じて、サーバ受付処理モジュール１００４がユーザプログラム１００２にＩ／Ｏエラーを返し処理を終了する（ステップＳ２０６）。
【００７８】
全ての戻り値が適正であった場合には（ステップＳ２０５：Ｙｅｓ）、全サーバにおいてアクセス権限があることとなる。サーバ受付処理モジュール１００４は各サーバの更新準備／更新確定モジュール１００５に対して、作業エリア１００８からファイル１０１０への更新を行う（ステップＳ２０７）。具体的には、作業エリア１００８から該データの複製を行ったり、また、制御データ１００９中のメモリ先頭アドレス７０７を書き換えたりなどが考えられるが、具体的な更新方法は設計事項である。
【００７９】
更新の成否は戻り値として、各サーバの更新準備／更新確定モジュール１００５から要求元である第１サーバのサーバ受付処理モジュール１００４に戻される。これらを参照して第１サーバのサーバ受付処理モジュール１００４は全サーバのデータの更新が適正であったか確認する（ステップＳ２０８）。全サーバで更新が適式に行われていれば（ステップＳ２０８：Ｙｅｓ）、第１サーバのサーバ受付処理モジュール１００４はユーザプログラム１００２にＩ／Ｏ完了を通知する（ステップＳ２０９）。また、一つのサーバでもエラーが発生していれば（ステップＳ２０８：Ｎｏ）、第１サーバのサーバ受付処理モジュール１００４はユーザプログラム１００２にＩ／Ｏエラーを通知する（ステップＳ２１０）。
【００８０】
図３の制御フラグ８０２が「３」であったときは、図４の部分排他等の制御データ１００９の更新を行う。具体的処理は制御フラグ８０２が「１」のときと同じであるが、処理の対象がファイル１０１０ではなく制御データ１００９に変わる。また、更新データはファイルへの書き込みデータ８０５ではなく、制御データの更新内容８０４になる。
【００８１】
このように、ユーザプログラム１００２で意識することなく同一のファイルについて異なるサーバのメモリ上に複製を取ることが可能になる。この利点については以下で説明する。
【００８２】
（本実施の形態の障害発生時の処理）
図５は本実施の形態の障害発生時の動作を表す概念図である。
【００８３】
この図においては、第１サーバ１０１に障害が発生し、第２サーバ１０２に処理を引き継ぐことを想定している。また、第１サーバ１０１と第２サーバ１０２との間には正副の区別は無く、また、便宜的にサーバが２台の構成で説明しているが、３台以上のサーバについても同じ操作が可能となっている。
【００８４】
本図の最初の状況は、第１サーバ１０１及び第１サーバ１０１のユーザプログラム１００２が正常に稼動している。また、第２サーバ１０２及び第２サーバのユーザプログラム１００２が稼動している。
【００８５】
第１サーバ１０１内のメモリ１００７には、編集中のファイル２００１やファイル更新履歴（ジャーナル）２００２が記録され、上述のように、これらについても第２サーバ１０２のメモリ１００７に同期を取って記録されているものとする。
【００８６】
サーバ受付処理モジュール１００４からの戻り値が返ってこない、または、戻り値が常にエラーを示すなど、第１サーバ１０１に障害が発生したとき、第１サーバ１０１のユーザプログラム１００２は有効なファイル処理が補償できなくなる。
【００８７】
第１サーバ１０１のユーザプログラム１００２は第２サーバ１０２で待機中のユーザプログラム１００２にサービスを引き継ぐ。この際、第２サーバ１０２のメモリ１００７中には、第１サーバ１０１で障害が発生する直前までの編集中のファイル２００１やファイル更新履歴（ジャーナル）２００２が記録されている。これにより、第２サーバ１０２で待機中のユーザプログラム１００２は、ファイルの引継ぎを行うことなく、引き継いだ処理を開始すればよいこととなり、高速な障害回復が可能となる。
【００８８】
なお、引継ぎ後、障害の発生元である第１サーバ１０１に対して、第２サーバ１０２のユーザプログラム１００２が更新処理を試みるか否かは設計事項である。また、何を持って障害とするか（たとえば上述のメモリ容量の不足を引き継ぎ対象の障害とみなすか）は設計者に委ねられるものであり、ここでは考慮しない。
【００８９】
（本実施の形態の障害回復時の処理）
図６は第１サーバ１０１が障害から回復し、第２サーバ１０２のメモリ１００７の情報からファイルの複写を行う動作を表す概念図である。
【００９０】
障害回復のために各サーバのデーモン１００３中にはメモリ回復処理モジュール１０１１が含まれる。障害が発生していた第１サーバ１０１のユーザプログラム１００２が再起動する過程において、デーモン１００３が起動する。ただし、この段階ではメモリの内容、制御データやファイルなど、が適当なものであるかが不確定である。
【００９１】
再起動中の第１サーバ１０１のメモリ回復処理モジュール１０１１は、他の同期対象である第２サーバ１０２上のメモリ回復処理モジュール１０１１を介して、第２ネットワーク経由で第２サーバ１０２のメモリ１００７中の制御データ１００９やファイル１０１０を自身のメモリ１００７上に複製する。複製完了後に、デーモンはサービスを再開し、上位のユーザプログラム１００２からの応答に反応する。以降、問題が解消されていれば、ユーザプログラム１００２のコマンドに対するサーバ受付処理モジュール１００４からの戻り値が正常になり、特に意識することなく障害回復処理が可能となる。
【００９２】
このように、デーモン側で複製を行うようにすれば、ユーザプログラムで対応を取ることなく障害回復処理を行うことが可能となる。
【００９３】
（本実施の形態の読み出し時のシステム全体の処理）
図７は本実施の形態における複数の上位装置からサーバに対するファイル読み出しを説明する概念図である。
【００９４】
図２でも述べたとおり、書き込みについては全サーバの同期を補償している。一方で、読み出しについては、参照モジュール１００６は各サーバ自身のメモリ１００７からのみ読み出しを行う。
【００９５】
これを利用し、上位装置から読み出しを行うサーバを決めておく。図７では上位装置１２１は第１サーバ１０１のユーザプログラム１００２に、上位装置１２２と上位装置１２３は第２サーバ１０２のユーザプログラム１００２に、上位装置１２４は第３サーバ１０３のユーザプログラム１００２に読み出しを行うよう設定されている。
【００９６】
このようにすることでどの上位装置から書き込んだ内容も、どの上位装置からも読み込むことができる。あわせて、読み出し要求の分散による負荷集中が回避される。
【００９７】
以上のように、１つのサーバに対して更新処理を要求することで連携して動く全てのサーバのデータが同期して更新可能となる。また、複数の上位端末から別個のサーバに存在する同一の同期したファイルにアクセスを行っていても、同期を妨げるようなアクセスに対しては更新を防ぐことができるため、同期の維持を容易に達成することができる。更には制御データ中にファイルの部分的な制御データ７１を設けることで、ファイルの部分的なアクセス制御を行うことが可能となる。また、障害発生及び復旧時にユーザプログラムではなくデーモンで障害への対応を行うことで、上位のユーザプログラムに障害への対応を意識させること無くシステムの復旧を行うことが可能となる。
【００９８】
（第２の実施の形態）
次に本発明の第２の実施の形態について説明する。
【００９９】
図８は本発明の第２の実施の形態におけるファイル複製の制御方法についての概念図である。
【０１００】
本実施の形態では、第１の実施の形態と異なり、全てのサーバに全てのメモリファイルを有さないことを目的している。
【０１０１】
本実施の形態におけるハードウェア及びソフトウェアの構成と制御方式は、図１及び図２を使用する。ただし、サーバに格納するファイルを分散させることでメモリの効率的な利用を実現できる。
【０１０２】
本実施の形態の制御方法の例について図８を用いて説明する。この例では、サーバは第１サーバ５０１、第２サーバ５０２、第３サーバ５０３の３台より構成されているものとする。
【０１０３】
第１サーバ５０１のデーモン１００３に対してユーザプログラム１００２が＃１ファイルの書き込みを行うとき、該デーモン１００３のサーバ受付処理モジュール１００４は自身のメモリ１００７と第２サーバ５０２のメモリ１００７に対してファイルの更新を行う。一方、第１サーバ５０１のサーバ受付処理モジュール１００４は第３サーバ５０３に対してはファイルの複製・同期・更新は行わない。
【０１０４】
第２サーバ５０２のデーモン１００３に対してユーザプログラム１００２が＃２ファイルの書き込みを行うとき、該デーモン１００３のサーバ受付処理モジュール１００４は自身のメモリ１００７と第３サーバ５０３のメモリ１００７に対してファイルの更新を行う。一方、第１サーバ５０１に対してはファイルの複製・同期・更新は行わない。
【０１０５】
第３サーバ５０３のデーモン１００３に対してユーザプログラム１００２が＃３ファイルの書き込みを行うとき、該デーモン１００３のサーバ受付処理モジュール１００４は自身のメモリ１００７と第１サーバ５０１のメモリ１００７に対してファイルの更新を行う。第２サーバ５０２に対してはファイルの複製・同期・更新は行わない。
【０１０６】
以上のように制御することで、バックアップ用のファイルの量を減らすことができ効率良く各サーバ内のメモリを利用することが可能になる。
【０１０７】
なお、上記はあくまでもファイルの複製量を減らす一例であり、他にも各サーバのメモリの空き容量の多いものに複製を行うような制御でも良い。
【０１０８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能であることは言うまでもない。
【産業上の利用可能性】
【０１０９】
本発明は安価大容量化がなされたメモリをディスク装置に代えて用いるサーバ、及び該サーバ複数台から構成され、複数のサーバで処理を分散するシステム（たとえばＷａｖｅ  Ｓｅｒｖｅｒを用いたコンテンツの利用、買い物、株取引などのシステム）下での高速なファイルの共用に用いることができる。
【０１１０】
また、かかるシステムで構成され、かつ、サービスの中断が認められない場合に、本発明を適用すれば待機サーバで、メモリから復旧データを読み込むため、高速なシステム復旧が可能となる。
【図面の簡単な説明】
【０１１１】
【図１】本発明の第１の実施の形態であるサーバ間メモリ共用ファイルシステムの構成を示す構成図である。
【図２】本発明のユーザプログラムがデーモンを経由してメモリを更新・参照するまでの処理を表すフローチャートである。
【図３】ユーザプログラムからサーバ受付処理モジュールに対して送信されるデーモンを制御するためのパラメータ（データ）の構造を示す概念図である。
【図４】アクセス権限を確認する際に用いる各サーバのメモリ中の制御データを表す図である。
【図５】本発明の第１の実施の形態における障害発生時の動作を表す概念図である。
【図６】本発明の第１の実施の形態において第１サーバが障害から回復し、第２サーバのメモリの情報からファイルの複写を行う動作を表す概念図である。
【図７】本発明の第１の実施の形態における複数の上位装置からサーバに対するファイル読み出しを説明する概念図である。
【図８】本発明の第２の実施の形態におけるファイル複製の制御方法についての概念図である。
【符号の説明】
【０１１２】
１…第1ネットワーク（ＬＡＮ）、２…第２ネットワーク（ＳＡＮ）、
７０…ファイル全体の制御データ、７１…ファイルの部分的な制御データ、
１０１…第１サーバ、１０２…第２サーバ、１０３…第３サーバ、
１２１、１２２、１２３、１２４…上位装置、
５０１…第１サーバ、５０２…第２サーバ、５０３…第３サーバ、
１００２…ユーザプログラム、１００３…デーモン、
１００４…サーバ受付処理モジュール、１００５…更新準備／更新確定モジュール、
１００６…参照モジュール、１００７…メモリ、１００８…作業エリア、
１００９…制御データ、１０１０…ファイル、
１０１１…メモリ回復処理モジュール、
２００１…編集中ファイル、２００２…ファイル更新履歴（ジャーナル）、
３００１…＃１ファイル、３００２…＃２ファイル、３００３…＃３ファイル。
【図１】
2009157880.tif 000003
【図２】
2009157880.tif 000004
【図３】
2009157880.tif 000005
【図４】
2009157880.tif 000006
【図５】
2009157880.tif 000007
【図６】
2009157880.tif 000008
【図７】
2009157880.tif 000009
【図８】
2009157880.tif 000010