JP2009289054A - Server computer for cluster system, and application clustering possibility determination support program - Google Patents
Server computer for cluster system, and application clustering possibility determination support program Download PDFInfo
- Publication number
- JP2009289054A JP2009289054A JP2008141263A JP2008141263A JP2009289054A JP 2009289054 A JP2009289054 A JP 2009289054A JP 2008141263 A JP2008141263 A JP 2008141263A JP 2008141263 A JP2008141263 A JP 2008141263A JP 2009289054 A JP2009289054 A JP 2009289054A
- Authority
- JP
- Japan
- Prior art keywords
- application
- server
- hook
- application program
- program interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
Description
本発明は、クラスタシステムに用いられるサーバ計算機に係り、特にアプリケーションのクラスタ化の可能性の判定を支援するのに好適なクラスタシステム向けサーバ計算機及びアプリケーションクラスタ化可能性判定支援プログラムに関する。 The present invention relates to a server computer used in a cluster system, and more particularly to a server computer for a cluster system and an application clusterability determination support program suitable for supporting determination of the possibility of application clustering.
従来から、複数のサーバ計算機(サーバ)から構成されるクラスタシステムが知られている。このクラスタシステムの特徴は、アプリケーション(特定アプリケーション)の実行によってユーザに提供されるサービスを、当該アプリケーションの障害、或いは当該アプリケーションを実行するサーバの障害が発生しても、当該ユーザに提供し続けることができる点にある。 Conventionally, a cluster system including a plurality of server computers (servers) is known. A feature of this cluster system is that services provided to a user by executing an application (specific application) continue to be provided to the user even if the application or a server that executes the application fails. There is in point that can.
クラスタシステムでは、当該システムを構成する複数のサーバのうちのあるサーバが稼動系サーバとなってアプリケーションを実行する。クラスタシステムにおいて、アプリケーション自体、或いは当該アプリケーションを実行するサーバに障害が発生した場合、当該システムを構成する他のサーバで同一のアプリケーションを実行し直すことにより、ユーザへ提供するサービスの継続が実現される。以下の説明では、障害が発生したサーバだけでなく、障害が発生したアプリケーションを実行するサーバも、障害発生サーバと呼ぶ。一方、アプリケーションを実行し直すサーバ、つまりアプリケーションの実行(サービス)を引き継ぐサーバを引き継ぎ先サーバと呼ぶ。 In a cluster system, a server among a plurality of servers constituting the system serves as an active server and executes an application. In the cluster system, when a failure occurs in the application itself or the server that executes the application, the same application is re-executed on another server that constitutes the system, so that the service provided to the user can be continued. The In the following description, not only a server in which a failure has occurred but also a server that executes an application in which a failure has occurred is referred to as a failure server. On the other hand, a server that re-executes an application, that is, a server that takes over execution (service) of an application is called a takeover destination server.
クラスタシステムには、サービスの提供を受けるユーザに対して、障害によってアプリケーションを実行するサーバが変わったことを意識させないための仕組みが用意される。この仕組みによれば、上述のようなサービスの継続のために、つまりサービスの連続性を保つために、当該システムを構成するサーバの間で、アプリケーションの利用するデータが共有される。また、障害発生サーバと引き継ぎ先サーバができる限り同じ条件で動作するように、環境(を示す環境情報)の引き継ぎも行われる。 The cluster system is provided with a mechanism for preventing the user who receives the service from being aware that the server that executes the application has changed due to a failure. According to this mechanism, in order to continue the service as described above, that is, in order to maintain the continuity of the service, the data used by the application is shared between the servers constituting the system. In addition, the environment (indicating environment information) is also taken over so that the failed server and the takeover destination server operate under the same conditions as much as possible.
このようなクラスタシステムでアプリケーションが利用可能なためには、つまりアプリケーションのクラスタ化(クラスタ構成化)が可能であるためには、幾つかの条件を必要とする。例えば、サービスの継続のためにアプリケーションを実行するサーバが変わると、当該アプリケーションがハードウェア(HW)やサーバに固有の情報、例えばホストID(HostID)、MAC(Media Access Control)アドレス(物理アドレス)、サーバシリアル番号のようなサーバ固有情報に依存した動作をするものである場合、当該アプリケーションはクラスタ化できない可能性がある。つまり、アプリケーション内部で発生するサーバ固有情報へのアクセスは、当該アプリケーションのクラスタ化を阻害する可能性がある。このため従来は、アプリケーションのクラスタ化の可能性を判断するのに必要な確認ポイントをまとめたチェックシートなどを用いて、当該アプリケーションを利用するユーザがクラスタ化の可能性を判定するのが一般的であった。 In order to be able to use an application in such a cluster system, that is, to be able to cluster an application (cluster configuration), several conditions are required. For example, when the server that executes an application changes for service continuation, the application has information specific to the hardware (HW) or server, for example, a host ID (Host ID), a MAC (Media Access Control) address (physical address) If the operation depends on server-specific information such as a server serial number, the application may not be clustered. That is, access to server-specific information that occurs inside an application may hinder the clustering of the application. For this reason, it has been common for users using the application to determine the possibility of clustering using a check sheet that summarizes the confirmation points necessary to determine the possibility of application clustering. Met.
ところでアプリケーションは、目的の処理を実行するために関数(アプリケーションプログラムインタフェース:API)を呼び出す(コールする)のが一般的である。もし、アプリケーションが呼び出す関数(API)の関数名(API名)を、他の名前に置き換えて、この置き換えられた関数名と同じ名を持つ関数を実行するならば、関数の変更なしに機能を拡張することができる(例えば特許文献1参照)。
アプリケーションのクラスタ化が可能であるための判定に用いられる情報として、上述のホストID、MACアドレス、サーバシリアル番号のようなサーバ固有情報が挙げられる。このようなサーバ固有情報は、クラスタシステムを構成する複数のサーバで共有されるデータ(共有データ)に含まれているのが一般的である。 Server-specific information such as the host ID, the MAC address, and the server serial number described above can be used as information used for determination that application clustering is possible. Such server-specific information is generally included in data (shared data) shared by a plurality of servers constituting the cluster system.
しかし、サーバ固有情報には、アプリケーションの外部仕様や機能からユーザが独自に判断できるものと、仕様が公開されておらず、アプリケーションの開発者でないと分からない内部情報的なものとがある。内部情報的なサーバ固有情報、つまり外部から隠蔽されるサーバ固有情報へのアクセスについては、ユーザ(エンドユーザ)側で完全にチェックすることは困難である。また、外部から隠蔽されるサーバ固有情報についての事前の検証で、アプリケーションのクラスタ化が可能であると判定されても、運用時に、当該アプリケーションの特定の使用方法で問題になる場合がある。同様に、OSやアプリケーションのアップデート後の仕様変更で問題になる場合もある。このため、サーバ固有情報についての事前の検証のみでは、アプリケーションのクラスタ化が可能であるかを、全ての可能性を考慮して確認することは難しい。 However, server-specific information includes information that can be independently determined by the user from the external specifications and functions of the application, and internal information that is not disclosed to the user and cannot be understood by an application developer. It is difficult for a user (end user) to completely check access to internal server-specific information, that is, server-specific information hidden from the outside. Even if it is determined that application clustering is possible by prior verification of server-specific information hidden from the outside, there may be a problem in a specific usage method of the application during operation. Similarly, there may be a problem when the specification changes after updating the OS or application. For this reason, it is difficult to confirm whether or not application clustering is possible by considering only the server verification information in advance, considering all possibilities.
本発明は上記事情を考慮してなされたものでその目的は、アプリケーションのクラスタ化を阻害する可能性がある、当該アプリケーションの内部で隠れて利用されるサーバ固有情報へのアクセスの状況を示す情報をユーザに提供できる、クラスタシステム向けサーバ計算機及びアプリケーションのクラスタ化可能性判定支援プログラムを提供することにある。 The present invention has been made in consideration of the above circumstances, and its purpose is information indicating the status of access to server-specific information that is hidden inside the application and may hinder application clustering. Is to provide a cluster system server computer and an application clusterability possibility determination support program.
本発明の1つの観点によれば、ユーザに対してサービスを提供するための特定アプリケーションの実行が可能なクラスタシステム向けサーバ計算機が提供される。このクラスタシステム向けサーバ計算機は、前記サーバ計算機に固有のサーバ固有情報を取得するための第1のアプリケーションプログラムインタフェースの集合を含むシステムライブラリを予め格納したシステムライブラリ記憶手段と、前記第1のアプリケーションプログラムインタフェースの呼び出しを受けて、当該第1のアプリケーションプログラムインタフェースを呼び出し元に提供するアプリケーションプログラムインタフェース提供手段と、前記第1のアプリケーションプログラムインタフェースに対応付けられ、当該第1のアプリケーションプログラムインタフェースがフックされた際の動作を定義した第2のアプリケーションプログラムインタフェースの集合を含むフックライブラリを予め格納したフックライブラリ記憶手段と、前記フックライブラリ記憶手段に格納されている前記フックライブラリに基づき、前記特定アプリケーションからの前記第1のアプリケーションプログラムインタフェースの呼び出しをフックするフック手段であって、前記フックライブラリにおいて当該フックされた第1のアプリケーションプログラムインタフェースに対応付けられている前記第2のアプリケーションプログラムインタフェースに従い、当該フックされた第1のアプリケーションプログラムインタフェースを呼び出すフック手段と、前記特定アプリケーションからの前記第1のアプリケーションプログラムインタフェースの呼び出しに基づく前記サーバ固有情報へのアクセスを記録するのに用いられるアクセス管理テーブルと、前記フック手段によって前記第1のアプリケーションプログラムインタフェースの呼び出しがフックされた場合に、当該第1のアプリケーションプログラムインタフェースの呼び出しに基づく前記サーバ固有情報へのアクセスを前記アクセス管理テーブルに記録するアクセス管理手段と、前記アクセス管理テーブルによって示される、前記特定アプリケーションからの前記サーバ固有情報へのアクセスの状況を示す情報をユーザに通知するための状態通知手段とを具備する。 According to one aspect of the present invention, a server computer for a cluster system capable of executing a specific application for providing a service to a user is provided. The server computer for a cluster system includes a system library storage unit that stores in advance a system library including a set of first application program interfaces for acquiring server-specific information unique to the server computer, and the first application program In response to the interface call, the application program interface providing means for providing the first application program interface to the caller and the first application program interface are associated with the first application program interface, and the first application program interface is hooked Hook library memory that pre-stores a hook library that includes a second set of application program interfaces that define the operation at the time And hook means for hooking a call to the first application program interface from the specific application based on the hook library stored in the hook library storage means, the hook library being hooked in the hook library Hook means for calling the hooked first application program interface in accordance with the second application program interface associated with one application program interface, and calling the first application program interface from the specific application And an access management table used to record access to the server specific information based on the first means by the hook means. An access management means for recording, in the access management table, access to the server-specific information based on the call to the first application program interface when the application program interface call is hooked; and the access management table And status notification means for notifying the user of information indicating the status of access to the server specific information from the specific application.
本発明によれば、特定アプリケーションの運用状態で、当該特定アプリケーションの内部で隠れて利用されるサーバ固有情報へのアクセス(つまり、当該特定アプリケーションのクラスタ化を阻害する可能性があるサーバ固有情報へのアクセス)のための、当該特定アプリケーションからの呼び出し(第1のアプリケーションプログラムインタフェースの呼び出し)をフックすることにより、ユーザが当該特定アプリケーションのクラスタ化の可能性を判定するのに利用可能な、サーバ固有情報へのアクセスの状況を示す情報を提供することができる。 According to the present invention, in the operating state of a specific application, access to server-specific information that is used hidden inside the specific application (that is, to server-specific information that may hinder the clustering of the specific application) The server can be used by the user to determine the possibility of clustering of the specific application by hooking the call from the specific application (call of the first application program interface) for Information indicating the status of access to the unique information can be provided.
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るクラスタシステム向けサーバ計算機のハードウェア構成を示すブロック図である。
Embodiments of the present invention will be described below with reference to the drawings.
FIG. 1 is a block diagram showing a hardware configuration of a server computer for a cluster system according to an embodiment of the present invention.
図1において、サーバ計算機(以下、サーバと称する)10は、それぞれ、CPU11と、主メモリ12とを含む。サーバ10は、例えば磁気ディスク装置のような外部記憶装置13と接続されている。外部記憶装置13は、サーバ10の筐体(図示せず)内に配置されている。つまりサーバ10は、CPU11及び主メモリ12に加えて、外部記憶装置13を有している。
In FIG. 1, a server computer (hereinafter referred to as a server) 10 includes a
外部記憶装置13には、アプリケーション130が格納されている。アプリケーション130は、クラスタシステムを利用するクライアント端末(のユーザ)に、サービスを提供するのに用いられる特定のアプリケーションプログラム(特定アプリケーション)である。アプリケーション130は、サーバ10の主メモリ12にロードされて(読み込まれて)実行される。
An
外部記憶装置13にはまた、アプリケーション130のクラスタ化の可能性の判定を支援するのに用いられるアプリケーションクラスタ化可能性判定支援プログラム131も格納されている。プログラム131は、サーバ10の主メモリ12にロードされて実行される。
The
図2は、図1に示されるサーバ10の主として機能構成を示すブロック図である。
サーバ10は、図2に示されるように、システムライブラリ機構21及びフックライブラリ機構22を含む。
FIG. 2 is a block diagram mainly showing a functional configuration of the
The
システムライブラリ機構21は、システムライブラリ記憶部211及びアプリケーションプログラムインタフェース提供機構(API提供機構)212から構成される。システムライブラリ機構21は、サーバ10の例えば図示せぬオペレーティングシステム(OS)に設けられる。
The
システムライブラリ記憶部211は、システムコールのような標準的な呼び出し(関数呼び出し)に応じて呼び出し元に関数(アプリケーションプログラムインタフェース:API)を提供するのに用いられるシステムライブラリを格納する。システムライブラリは、上記呼び出しによって外部から参照可能な各種の関数(システム関数またはシステムライフライブラリ関数)の集合である。システムライブラリ記憶部211は、例えば図1に示される外部記憶装置13の記憶領域の一部を用いて実現される。
The system
API提供機構212は、アプリケーション130または後述するフック機構23からの関数(API)呼び出しに応じて、システムライブラリ記憶部211に格納されているシステムライブラリの中から指定された関数(API)を呼び出す。API提供機構212は、呼び出された関数(API)を呼び出し元に提供する。
The
フックライブラリ機構22は、フックライブラリ記憶部221、フック機構222、アクセス管理テーブル223、アクセス管理機構224、状態判定機構225及び状態通知機構226から構成される。
The
フックライブラリ記憶部221は、フックライブラリを格納する。フックライブラリは、システムライブラリを構成するシステム関数の集合のうち、例えばサーバ10に固有の情報(サーバ固有情報)毎に用意される、当該サーバ固有情報へのアクセスに用いられるシステム関数(API)の集合に対応させて予め用意されるフック関数の集合である。フックライブラリに含まれる各フック関数(第2の関数)は、当該フック関数に対応するシステム関数(第1の関数)の関数名と対応付けて、フックライブラリ記憶部221に格納されている。フックライブラリ記憶部221は、例えば図1に示される外部記憶装置13の記憶領域の一部を用いて実現される。なお、ライブラリ参照の高速化のために、外部記憶装置13(システムライブラリ記憶部211及びフックライブラリ記憶部221)に格納されているシステムライブラリ及びフックライブラリが、サーバ10の起動時に当該外部記憶装置13から主メモリ12の所定領域にロードされる構成であっても構わない。
The hook
フック機構222は、アプリケーション130からの関数(第1の関数)の呼び出し(コール)をフック(横取り)する。フック機構222は、自身がフックした関数呼び出しで指定される関数名のシステム関数と対応付けられているフック関数を呼び出して、アクセス管理機構224、状態判定機構225及び状態通知機構226と共に、当該フック関数に固有の処理を行う。
The
フック関数に固有の処理は、第1乃至第5の処理に大別される。第1の処理は、フック機構222がフックした関数呼び出しで指定されるシステム関数をシステムライブラリ機構21から呼び出すための処理である。第2の処理は、呼び出されたシステム関数の処理結果(返り値)をアプリケーション130に返すための処理である。フック機構222は、この第1及び第2の処理を実行する。
Processing unique to the hook function is roughly divided into first to fifth processing. The first process is a process for calling the system function designated by the function call hooked by the
アクセス管理テーブル223は、予め定められたサーバ固有情報毎に、当該固有情報へのアプリケーション130からのアクセス(参照)を管理するのに用いられる。ここでは、ホストID(HostID)、MACアドレス、サーバシリアル番号のような、サーバ10が持つ(サーバ10に割り当てられる)、当該サーバ10に固有のサーバ固有情報が、アクセス管理テーブル223によって管理される。アクセス管理テーブル223は、例えば、図1に示される主メモリ12の記憶領域の一部を用いて実現される。各サーバ固有情報にアクセスするためのシステム関数(API)は予め定められている。
The access management table 223 is used to manage access (reference) from the
図3は、図2に示されるアクセス管理テーブル223のデータ構造例を示す。
アクセス管理テーブル223は、予め定められたサーバ固有情報毎に当該固有情報へのアクセス回数を保持するためのエントリの群から構成される。アクセス管理テーブル223の各エントリは、サーバ固有情報及びアクセス回数(当該固有情報へのアクセス回数)を保持するための欄(サーバ固有情報欄及びアクセス回数欄)を含む。つまり、アクセス管理テーブル223は、予め定められたサーバ固有情報の各々に対応付けて、当該固有情報へのアクセス回数を保持する。
FIG. 3 shows an example of the data structure of the access management table 223 shown in FIG.
The access management table 223 includes a group of entries for holding the number of accesses to the specific information for each predetermined server specific information. Each entry of the access management table 223 includes columns (server specific information column and access count column) for holding server specific information and the number of accesses (the number of accesses to the specific information). That is, the access management table 223 holds the number of accesses to the specific information in association with each predetermined server specific information.
再び図2を参照すると、アクセス管理機構224は、フック機構222によってフックされた関数呼び出しに応じて関数(API)が呼び出されて、呼び出された関数(API)の実行によってサーバ10の固有情報(サーバ固有情報)23がアクセス(参照)される際に第3の処理を実行する。第3の処理は、アクセス管理テーブル223内で当該固有情報23に対応付けられているアクセス回数(参照回数)を1インクリメントするための処理である。ここで、サーバ固有情報23は外部記憶装置13に格納されているものとする。
Referring again to FIG. 2, the
状態判定機構225は、アクセス管理テーブル223に保持されているサーバ固有情報毎のアクセス回数を監視することによって、当該アクセス回数が閾値を超えたかを判定するための処理(第4の処理)を実行する。状態通知機構226は、アプリケーション130からのサーバ固有情報へのアクセスの状況を示す情報(アクセス状況情報)を生成して、当該生成された情報をユーザに通知するための処理(第5の処理)を実行する。本実施形態では状態通知機構226は、アクセス状況情報として、状態判定機構225によって閾値を超えたと判定されたアクセス回数と対応付けられているサーバ固有情報が、ユーザ(例えばシステム管理者)に通知される。
The
次に、本実施形態の動作について、サーバ10上で動作しているアプリケーション130からシステム関数fun1()の呼び出し(コール)が行われた場合を例に、図4のフローチャートを参照して説明する。
Next, the operation of the present embodiment will be described with reference to the flowchart of FIG. 4, taking as an example a case where the system function fun1 () is called from the
サーバ10上で動作するアプリケーション130は、従来であれば、システムライブラリ機構21(のシステムライブラリ記憶部211に格納されているシステムライブラリ)を当該アプリケーション130自身にリンクすることにより、システムコールを実行する。これに対して本実施形態では、アプリケーション130とシステムライブラリ機構21との間に、フックライブラリ機構22が論理的に配置される。
Conventionally, the
今、アプリケーション130からシステム関数(API)fun1()の呼び出しが行われたものとする(ステップS1)。するとフックライブラリ機構22のフック機構222は、以下に述べるように、フックライブラリ記憶部221に格納されているフックライブラリに基づき、当該fun1()の呼び出しをフックする(ステップS2)。
It is assumed that the system function (API) fun1 () is called from the application 130 (step S1). Then, the
システム関数fun1()は、サーバ10に固有の情報(サーバ固有情報)23にアクセスするためのAPI(アプリケーションプログラムインタフェース)であるものとする。このサーバ固有情報23が例えばホストIDの場合、システム関数fun1()は、gethostid()というAPIである。
The system function fun1 () is assumed to be an API (application program interface) for accessing information (server specific information) 23 unique to the
システム関数fun1()の呼び出しは、当該fun1()の関数名と引数とを含む。フックライブラリ記憶部221に格納されているフックライブラリには、このfun1()の関数名に対応付けて、フック関数FUN1()が設定されているものとする。この場合、フック機構222は、アプリケーション130からのfun1()の呼び出しをフックする。これによりフックライブラリ機構22は、アプリケーション130がシステムライブラリ機構21を当該アプリケーション130自身にリンクするのを抑止する。このような関数呼び出しをフックする動作は、前記特許文献1に記載されているようなライブラリフック技術を用いて実現される。
The call of the system function fun1 () includes the function name of the fun1 () and an argument. It is assumed that the hook function FUN1 () is set in the hook library stored in the hook
なお、フックライブラリに、fun1()の関数名に対応付けてフック関数が格納されていないならば、フック機構222は、当該fun1()の呼び出しをフックしない。この場合、fun1()の呼び出しは、システムライブラリ機構21のAPI提供機構212に入力される。
If the hook function is not stored in the hook library in association with the function name of fun1 (), the
フック機構222は、システム関数fun1()の呼び出しをフックすると(ステップS2)、フックされたfun1()の関数名に対応付けてフックライブラリに設定されているフック関数FUN1()を呼び出す(ステップS3)。つまり、アプリケーション130からのfun1()の呼び出しに対して、システムライブラリ記憶部211に格納されているシステムライブラリからシステム関数fun1()が呼び出される代わりに、フックライブラリ記憶部221に格納されているフックライブラリからフック関数FUN1()が呼び出される。
When hooking the call to the system function fun1 () (step S2), the
fun1()が、gethostid()というAPI(システム関数)の場合、フックライブラリに用意されるフック関数(フックライブラリ関数)FUN1()には、例えばGETHOSTID()が用いられる。 When fun1 () is an API (system function) called getostid (), for example, GETHOSTID () is used as the hook function (hook library function) FUN1 () prepared in the hook library.
フック機構222によってフック関数FUN1()(例えばGETHOSTID())が呼び出されると、フックライブラリ機構22では、当該フック関数FUN1()に従い、当該フック関数FUN1()に固有の処理が、フック機構222、アクセス管理機構224、状態判定機構225及び状態通知機構226によって次のように実行される。
When the hook function FUN1 () (for example, GETHOSTID ()) is called by the
まずフック機構222は、自身がフックした関数呼び出しで指定される関数名のシステム関数fun1()の実行によってアクセスされるべきサーバ固有情報23をアクセス管理機構224に通知する。ここで、システム関数fun1()の実行によってアクセスされるべきサーバ固有情報23は予め定められていることに注意する。そこで、フックライブラリに、fun1()の関数名に対応付けて、フック関数FUN1()だけでなくサーバ固有情報23も設定される構成としてもよい。
First, the
アクセス管理機構224は、通知されたサーバ固有情報23に基づき、当該固有情報23に対応付けてアクセス管理テーブル223に保持されているアクセス回数を1だけカウントアップ(インクリメント)する(ステップS4)。したがって、fun1()が上記getohotid()であるならば、アクセス管理テーブル223において、ホストIDに対応付けて保持されているアクセス回数が1カウントアップされる。
Based on the notified server
このように本実施形態においては、サーバ固有情報へのアクセスはユーザの関与しないアプリケーション130で行われるにも拘わらずに、つまり隠れたサーバ固有情報へのアクセスであるにも拘わらずに、当該隠れたサーバ固有情報へのアクセスをアクセス管理テーブル223に記録することができる。
As described above, in this embodiment, although the server-specific information is accessed by the
状態判定機構225は、アクセス管理機構224によってカウントアップされたアクセス回数(カウント値)が、予め定められた閾値を超えているかを判定する(ステップS5)。
The
もし、カウントアップ後のアクセス回数が閾値を超えていないならば(ステップS5がNO)、直ちにフック機構222に制御が戻される。するとフック機構222は、自身がフックしたfun1()の呼び出しを、アプリケーション130に代わって行う(ステップS6)。このフック機構222からのfun1()の呼び出しに応じて、システムライブラリ機構21のAPI提供機構212は、システムライブラリ記憶部211に格納されているシステムライブラリから、当該fun1()を呼び出して実行する(ステップS7)。このように、フック機構222がフックしたfun1()の呼び出しが当該フック機構222によって行われることで、従来におけるアプリケーション130からのfun1()の呼び出し時と同様に、当該fun1()がシステムライブラリ機構21のAPI提供機構212によって実行される。これにより、サーバ固有情報23へのアクセス(サーバ固有情報23の参照)が行われる(ステップS8)。
If the number of accesses after counting up does not exceed the threshold (step S5 is NO), the control is immediately returned to the
API提供機構212は、フック機構222によって呼び出されたfun1()の実行結果、つまりサーバ固有情報23へのアクセスの結果を、返り値として呼び出し元のフック機構222に返す。フック機構222は、API提供機構212から返された返り値(サーバ固有情報23)を、アプリケーション130に返す。このように本実施形態では、アプリケーション130からのfun1()の呼び出しに応じて当該fun1()が実行された結果が、fun1()の呼び出しに対する返り値(サーバ固有情報23)として、フックライブラリ機構22(のフックライブラリ機構22)を介してアプリケーション130に返される(ステップS9)。
The
アプリケーション130は、システムライブラリ機構21(内のAPI提供機構212)からフックライブラリ機構22(内のフック機構222)を介して返される返り値(サーバ固有情報23)を、当該アプリケーション130自身が行ったfun1()の呼び出しに対する返り値(サーバ固有情報23)として受け取る。これによりアプリケーション130は、フックライブラリ機構22(内のフック機構222)の動作に影響されずに、受け取った返り値(サーバ固有情報23)を利用した処理を行うことができる。つまり本実施形態においては、フックライブラリ機構22の動作がアプリケーション130の動作に何ら影響を及ぼすことはない。
The
以上の動作は、アプリケーション130によりシステム関数の呼び出しが行われる都度実行される。やがて、アプリケーション130からのfun1()の呼び出しが何回か行われた結果、サーバ固有情報23に対応付けてアクセス管理テーブル223に保持されているアクセス回数が閾値を超えたものとする。この場合、状態判定機構225はステップS5においてYESを判定して、状態通知機構226に制御を渡す。
The above operations are executed each time a system function is called by the
すると状態通知機構226は、サーバ固有情報23へのアクセス回数が閾値を超えたことを示す情報を生成し、当該生成された情報をアプリケーション130からのサーバ固有情報へのアクセスの状況を示す情報として、例えば電子メールによりユーザ(システム管理者)に通知する(ステップS10)。ユーザは、この通知から、現在実行中のアプリケーション130はクラスタ化への影響の可能性が大きい、つまりアプリケーション130の障害または当該アプリケーション130を実行しているサーバ10の障害が発生した場合に、当該アプリケーション130の実行によってユーザに提供されるサービスを継続することは難しいと判断できる。
Then, the
状態通知機構226は上記の通知を行うと、フック機構222に制御を戻す。これにより、カウントアップ後のアクセス回数が閾値を超えていない場合と同様に、上記ステップS6乃至S9が行われる。
When the
なお、サーバ固有情報23へのアクセス回数が閾値を超えたことを、状態通知機構226からユーザに通知するのに、電子メール以外の通知手段を用いることも可能である。例えば、ユーザがクライアント端末を通して参照可能な特定のファイルに、サーバ固有情報23へのアクセス回数が閾値を超えたことを示す情報を状態通知機構226が書き込むようにしても構わない。
Note that notification means other than e-mail can be used to notify the user that the number of accesses to the server-
また、状態判定機構225は必ずしも必要でない。ここで、フックライブラリ機構22のアクセス管理機構224は、例えば、アプリケーション130の実行期間に亘って、或いは当該アプリケーション130の例えば起動時から一定期間、当該アプリケーション130によるサーバ固有情報アクセスの回数をアクセス管理テーブル223に記録するものとする。この場合、状態通知機構226は上記の期間後に、アクセス管理テーブル223の内容を、アプリケーション130からのサーバ固有情報へのアクセスの状況を示す情報として、ユーザ(システム管理者)に通知すればよい。また上記の期間後に、状態通知機構226が状態判定機構225と連携することにより、アクセス回数が1以上のエントリ情報をアクセス管理テーブル223から選択してユーザに通知してもよい。ユーザは、状態通知機構226からの通知に基づき、現在実行中のアプリケーション130が、クラスタ化に影響する可能性のあるサーバ固有情報への隠れたアクセスを行うかを判断する。当然、アクセス回数が多いほど、アプリケーション130のクラスタ化への影響の可能性が大きくなる。
Further, the
また、アクセス管理テーブル223の各エントリに、サーバ固有情報へアクセスするためのシステム関数の関数名を保持するのに用いられる関数名欄を追加してもよい。つまりアクセス管理テーブル223が、予め定められたサーバ固有情報及び当該固有情報へアクセスするためのシステム関数の関数名の対にそれぞれ対応付けて、当該固有情報へのアクセス回数を保持するものであっても構わない。この場合、フック機構222は、自身がフックした関数呼び出しで指定される関数名をアクセス管理機構224に通知すればよい。アクセス管理機構224は、通知された関数名に基づき、当該関数名に対応付けてアクセス管理テーブル223に保持されているアクセス回数をカウントアップすることができる。
Further, a function name column used to hold a function name of a system function for accessing server-specific information may be added to each entry of the access management table 223. In other words, the access management table 223 holds the number of accesses to the specific information in association with each pair of predetermined server specific information and a function name of a system function for accessing the specific information. It doesn't matter. In this case, the
[第1の変形例]
次に、上記実施形態の第1の変形例について、図1を援用して説明する。
[First Modification]
Next, a first modification of the above embodiment will be described with reference to FIG.
まず、上記実施形態の特徴は、サーバ固有情報へのアクセス回数が多いほど、アプリケーション130のクラスタ化への影響の可能性が大きくなることに着目して、そのような状態を状態通知機構226によってユーザに通知することにある。これに対し、第1の変形例の特徴は、アプリケーション130を実行するサーバの切り替え時(つまりフェイルオーバ時)に、サーバ固有情報も変更されることに着目して、当該固有情報の変更がアプリケーション130に影響を与えるかを、サーバの切り替えを行うことなく、サーバ10単体で検証するようにしたことにある。つまり第1の変形例の特徴は、フェイルオーバ時のシミュレーションを稼動系のサーバ10単体で行うようにしたことにある。
First, the feature of the above-described embodiment is that, as the number of accesses to the server-specific information increases, the possibility of the
図5は、第1の変形例で適用されるサーバ10の主として機能構成を示すブロック図である。図5において、図2と等価な要素には同一参照符号を付してある。
FIG. 5 is a block diagram mainly showing a functional configuration of the
図5に示すサーバ10では、上記実施形態と異なり、フックライブラリ機構22に代えてフックライブラリ機構22aが用いられる。フックライブラリ機構22aは、フックライブラリ記憶部221、フック機構222、アクセス管理テーブル223a、アクセス管理機構224、状態判定機構225、状態通知機構226及び固有情報置換機構227から構成される。つまりフックライブラリ機構22aは、図2に示されるフックライブラリ機構22に固有情報置換機構227を追加すると共に、図2に示されるアクセス管理テーブル223に代えてアクセス管理テーブル223aを用いたものである。なお、状態判定機構225及び状態通知機構226の機能は、後述するように上記実施形態と異なる。
In the
固有情報置換機構227は、アプリケーション130からのサーバ固有情報アクセスのためのシステム関数fun1()の呼び出しに応じて当該アプリケーション130に返されるべき返り値(サーバ固有情報23)を、予め定められたダミーの固有情報(ダミー情報)に置き換える。
The unique
図6は、アクセス管理テーブル223aのデータ構造例を示す。アクセス管理テーブル223aの各エントリは、サーバ固有情報欄及びアクセス回数欄に加えて、アプリケーション130の状態を保持するための第1及び第2の状態欄を含む。第1の状態欄は、サーバ固有情報23がダミー情報に置き換えられずにアプリケーション130に返された場合の当該アプリケーション130の状態を保持するのに用いられる。第2の状態欄は、サーバ固有情報23に代えてダミー情報がアプリケーション130に返された場合の当該アプリケーション130の状態を保持するのに用いられる。
FIG. 6 shows an example of the data structure of the access management table 223a. Each entry of the access management table 223a includes a first status column and a second status column for holding the status of the
クラスタシステムにおいてフェイルオーバが発生した場合、上述のようにサーバ固有情報も変更される。このサーバ固有情報の変更がアプリケーション130に影響を与えるかは、実際にフェイルオーバを発生することにより確認できる。しかし、そのためには、実際に複数のサーバを用いてクラスタシステムを構築する必要がある。
When failover occurs in the cluster system, the server-specific information is also changed as described above. Whether the change of the server specific information affects the
そこで、フェイルオーバの発生を想定して、アプリケーション130を単一のサーバ10で再起動すると共に、当該アプリケーション130がアクセスするサーバ固有情報(サーバ10に固有の情報)を変更することによって、当該アプリケーション130の動作を確認する手法を適用することが考えられる。しかし、アプリケーション130がアクセスするサーバ固有情報自体を変更した場合、当該アプリケーション130(つまり動作確認の対象となるアプリケーション130)以外にも影響を与える可能性がある。このため、上記の手法を安易に実施できない。
Therefore, assuming that a failover has occurred, the
一方、上記実施形態では、アプリケーション130の動作時に、当該アプリケーション130からのシステム関数fun1()の呼び出しが、フックライブラリ機構22のフック機構222によってフックされる。このフックされた呼び出しに基づいて、システムライブラリからシステム関数fun1()が実際に呼び出されて当該システム関数fun1()が実行されることにより、サーバ10に固有の情報(サーバ固有情報23)がアクセスされる。このアクセスされるサーバ固有情報23は予め定められている。したがって上記実施形態においては、アプリケーション130からのシステム関数fun1()の呼び出しが、フックライブラリ機構22のフック機構222によってフックされることにより、その時点で、アプリケーション130がアクセスしようとするサーバ固有情報23を認識(特定)することが可能である。またサーバ固有情報23の値自体はOSの機能によりアプリケーション130とは独立に確認できる。
On the other hand, in the above embodiment, when the
そこで第1の変形例では、この特徴を利用することにより、サーバ固有情報の変更がアプリケーション130に影響を与えるかを、サーバ10単体で検証する仕組みを実現している。具体的には、フックライブラリとリンクするアプリケーション130が、サーバ固有情報へアクセスするためのシステム関数の呼び出しによって当該固有情報を参照するときだけ、当該固有情報をダミー情報(ダミーの固有情報)で置き換えることにより、上記の仕組みを実現している。この仕組みによれば、例えばサーバ固有情報をダミー情報で置き換えた場合のサーバ10の状態から、当該サーバ10を含む複数のサーバを用いてクラスタシステムを構築することなく、また当該サーバ10上の他のアプリケーションに影響を与えることなく、アプリケーション(特定のアプリケーション)130がサーバ固有情報に大きく依存するか、つまりアプリケーション130のクラスタ化への影響の可能性が大きいかを確認することができる。
Therefore, in the first modified example, by utilizing this feature, a mechanism for verifying whether the change of the server specific information affects the
サーバ固有情報の変更がアプリケーションに影響を与える場合の当該アプリケーションの挙動は、アプリケーション毎に異なる。例えば、サーバ固有情報の変更により、アプリケーション130の起動自体が行えない状態、或いはアプリケーション130におけるサーバ固有情報アクセスのエラー、或いはアプリケーション130自身の動作エラーが発生する可能性がある。このようなアプリケーション130では、サーバ固有情報の変更前の当該アプリケーション130の状態をサーバ固有情報の変更後の当該アプリケーション130の状態と比較することにより、サーバ固有情報の変更が当該アプリケーション130に与える影響度を判断することが可能である。
The behavior of the application when the change of the server specific information affects the application is different for each application. For example, a change in the server specific information may cause a state where the
以下、第1の変形例の動作について、図7のフローチャートを参照して説明する。なお、図7において、図3のフローチャートと等価な処理ステップには同一参照符号を付してある。 Hereinafter, the operation of the first modification will be described with reference to the flowchart of FIG. In FIG. 7, the same reference numerals are assigned to the processing steps equivalent to those in the flowchart of FIG.
まず、アプリケーション130からシステム関数fun1()の呼び出しが行われたものとする(ステップS1)。この場合、フックライブラリ機構22のフック機構222は、上記実施形態と同様に、フックライブラリに基づき、当該fun1()の呼び出しをフックする(ステップS2)。次にフックライブラリ機構22は、フックされたfun1()の関数名に対応付けてフックライブラリに設定されているフック関数FUN1()を呼び出す(ステップS3)。するとアクセス管理機構224は、システム関数fun1()の実行によってアクセスされるべきサーバ固有情報23に対応付けてアクセス管理テーブル223に保持されているアクセス回数を1だけカウントアップする(ステップS4)。
First, it is assumed that the system function fun1 () is called from the application 130 (step S1). In this case, the
次に状態判定機構225が起動される。状態判定機構225は、フック機構222によってフックされたfun1()の呼び出しに基づいて、当該fun1()が実行されることによってアクセスされるべきサーバ固有情報23を、ダミーの固有情報(ダミー情報)で置き換えるかを判定する(ステップS11)。この判定は、例えば、アクセス管理機構224によってカウントアップされたアクセス回数(カウント値)が1を超えているかに基づいて行われる。
Next, the
もし、アクセス回数が1であるならば、つまり1を超えていないならば、状態判定機構225は、ダミー情報への置き換え(ダミー情報での応答)は不要であると判定する(ステップS11がNO)。この場合、フック機構222は、自身がフックしたfun1()の呼び出しを行う(ステップS6)。以降の動作は上記実施形態と同様であり、システムライブラリからfun1()が呼び出されて、当該fun1()の実行によりサーバ固有情報23がアクセスされる(ステップS6乃至S8)。そして、アクセスされたサーバ固有情報23が、fun1()の呼び出しに対する返り値として、フックライブラリ機構22(のフックライブラリ機構22)を介してアプリケーション130に返される(ステップS9)。すると状態判定機構225は、サーバ固有情報23が返されたアプリケーション130の状態を採取して、採取された状態を示す情報(第1の状態情報)を、当該固有情報23が保持されているアクセス管理テーブル223aのエントリの第1の状態欄に設定する(ステップS12,S13)。なお、アプリケーション130の状態を採取する手法自体は従来から知られているため説明を省略する。
If the number of accesses is 1, that is, if it does not exceed 1, the
これに対してアクセス回数が1を超えているならば、状態判定機構225は、ダミー情報への置き換えが必要であると判定する(ステップS11がYES)。この場合、状態判定機構225は固有情報置換機構227を起動する。
On the other hand, if the number of accesses exceeds 1, the
すると固有情報置換機構227は、予め定められたダミー情報(ダミーの固有情報)をfun1()の呼び出しに対する返り値としてフック機構222に渡す(ステップS14)。このことは、アプリケーション130からのfun1()の呼び出しに応じて、当該fun1()が実際に実行されることによってアクセスされてアプリケーション130に返されるサーバ固有情報23を、ダミー情報に置き換える(変更する)のと等価である。
Then, the unique
フック機構222は、固有情報置換機構227から渡されたダミー情報を、アプリケーション130からのfun1()の呼び出しに対応する返り値として、当該アプリケーション130に渡す。すると状態判定機構225は、ダミー情報が返されたアプリケーション130の状態を採取して、採取された状態を示す情報(第2の状態情報)を、当該サーバ固有情報23が保持されているアクセス管理テーブル223aのエントリの第2の状態欄に設定する(ステップS15,S16)。
The
次に状態判定機構225は、第2の状態欄に設定された第2の状態情報を、当該第2の状態欄を含むアクセス管理テーブル223aのエントリの第1の状態欄に設定されている第1の状態情報と比較することにより、ダミー情報(つまりサーバ固有情報の変更)がアプリケーション130の挙動に影響を及ぼしたかを判断する(ステップS17,S18)。状態通知機構226は、この状態判定機構225の判断結果を、上記実施形態と同様の手法によりユーザに通知する(ステップS19)。
Next, the
なお、フェイルオーバを想定したダミー情報への変更によりアプリケーション130の起動自体が行えない場合を確認可能とするために、当該アプリケーション130を一旦起動した後に、当該アプリケーション130を再起動してもよい。ここでは、アプリケーション130の最初の起動時には、ダミー情報への変更を行わず、当該アプリケーション130が停止された後に当該アプリケーション130が再度起動された際に、つまり当該アプリケーション130の再起動時に、1回目のアクセスでダミー情報への変更を行えばよい。これにより、ダミー情報への変更がアプリケーション130の起動に与える影響、つまりフェイルオーバの発生により当該アプリケーション130を実行するサーバが切り替えられる場合に当該アプリケーション130の起動に与える影響を調べることが可能である。
In addition, in order to be able to confirm the case where the
上記第1の変形例では、隠れたサーバ固有情報使用に対するアプリケーション130のクラスタ化への影響を確認するために、当該アプリケーション130からのサーバ固有情報アクセスためのシステム関数呼び出しをフックライブラリ機構22aでフックし、当該アプリケーション130が参照すべきサーバ固有情報をダミー情報(ダミーの固有情報)で置き換えるようにしている。もし、予め影響のあるサーバ固有情報の利用が確認できている場合、上述の固有情報置き換えの仕組みを利用して常にダミー情報を使うことにすれば、サーバ変更によるサーバ固有情報の変化を隠蔽してアプリケーション130の運用が可能となる。この理由は次の通りである。
In the first modified example, in order to confirm the influence on the clustering of the
まず、複数のサーバ、例えば2台のサーバ#1及び#2から構成されるクラスタシステムを想定する。サーバ#1及び#2の各々の構成は、上記第1の変形例におけるサーバ10のそれと同様である。サーバ#1及び#2の固有のサーバ固有情報がそれぞれAびBであるとし、ダミー情報がCであるものとする。
First, a cluster system composed of a plurality of servers, for example, two
この場合、上述のアプリケーション130がサーバ#1または#2で動作してサーバ固有情報を参照する際に、フックライブラリ機構22によって当該アプリケーション130にダミー情報Cが返される。これによりアプリケーション130は、サーバ#1または#2のいずれで動作する場合にも、ダミー情報Cを用いて動作することになる。よって、サーバ変更によるサーバ固有情報の変化が隠蔽される。
In this case, when the above-described
[第2の変形例]
次に、上記実施形態の第2の変形例について、図1及び図5を援用して説明する。
第2の変形例の特徴は、アプリケーション130からのサーバ固有情報アクセスを含む特定のアクセスパターンをフックライブラリ機構22aにおいて検出する点にある。
[Second Modification]
Next, a second modification of the above embodiment will be described with reference to FIGS.
The feature of the second modification is that a specific access pattern including server-specific information access from the
まず、アプリケーション130の起動時の一般的なチェック動作として、当該アプリケーション130が動作するサーバ10に固有のホストIDを参照することによって、当該サーバ10を識別することが挙げられる。このアプリケーション130の起動時の動作は、通常、次のような手順で行われる。
First, as a general check operation when the
(1) アプリケーション130を起動する。
(2) システム関数gethostid()を呼び出すことにより、アプリケーション130に固有の情報であるホストIDを読み出す。
(1) Start the
(2) The host ID, which is information unique to the
(3) read関数read(fd,data)を呼び出すことにより、アプリケーション130の設定データ(設定ファイルのデータ)の中から記録済みのホストIDを読み出す。ここで上記read関数におけるfd及びdataは引数であり、それぞれ、読み出されるべきデータ(ホストID)の位置(つまり読み出し先)、読み出されたデータが格納されるべき位置(つまり読み出しデータの格納先)を示す。この場合、“fd”に記録されているデータ(ホストID)が読み出されて“data”に格納される。
(3) The recorded host ID is read from the setting data (setting file data) of the
(4) gethostid()の呼び出しによって読み出されたホストIDをread(fd,data)の呼び出しによって読み出されたデータと比較する。
(5) 上記の比較の結果、両データが一致しているならば、アプリケーション130は正常なサーバで起動されたと(つまりアプリケーション130の正常起動が)判定される。これに対し、両データが一致していないならば、アプリケーション130は不正なサーバで起動されたと判定されて、アプリケーション130の起動失敗となる。
(4) The host ID read by calling getostid () is compared with the data read by calling read (fd, data).
(5) As a result of the comparison, if both data match, it is determined that the
さて、第2の変形例では、read関数read(fd,data)、システム関数gethostid()、及びwrite関数write(fd,data)の各々の呼び出しを、フックライブラリ機構22aのフック機構222によるフック対象とするためのフックライブラリが、フックライブラリ機構22aのフックライブラリ記憶部221に予め格納されている。write関数におけるfdは引数であり、データが書き込まれる(記録される)べき、例えば上記設定ファイル内の位置(つまり、データの書き出し先)を示し、dataは当該データが格納されている位置(つまりデータの格納元)を示す。
In the second modification, each call of the read function read (fd, data), the system function gestostid (), and the write function write (fd, data) is called by the
フックライブラリ記憶部221の状態判定機構225は、フック機構222によってread(fd,data)がフックされた場合、dataで指定される格納先に、gethostid()の呼び出しによってシステムライブラリ機構21のAPI提供機構212から返される返り値(ホストID)に一致するホストIDがあるかを判定する。状態判定機構225はまた、フック機構222によってwrite(fd,data)がフックされた場合には、fdで指定される書き出し先に、gethostid()の呼び出しによってAPI提供機構212から返される返り値(ホストID)に一致するホストIDがあるかを判定する。
When the read (fd, data) is hooked by the
状態判定機構225は、これらの判定結果から、特定条件が成立するかを判定する。特定条件とは、gethostid()及びreadがそれぞれ呼び出されて当該両関数の実行により同一のホストIDが読み出され、加えてgethostid()とreadとの間でwriteが呼び出され、且つ当該writeの示す、readの場合と同一の書き出し先(fd)にホストIDが含まれていない特定のアクセスパターンのことである。
The
固有情報置換機構227は、状態判定機構225によって上記特定条件の成立が判定され、且つ、アプリケーション130が再起動されて当該アプリケーション130からのgethostid()の呼び出しがフック機構222によってフックされた場合、ダミー情報をフック機構222に渡す。即ち前記固有情報置換機構227は、gethostid()の呼び出しに対する返り値として、ダミー情報(例えば、予めアプリケーション130が認識しているホストIDとは異なるホストID)をフック機構222に渡す。フック機構222は、固有情報置換機構227から渡されたダミー情報を、gethostid()の呼び出しに対する返り値としてアプリケーション130に返す。状態判定機構225は、上記第1の変形例と同様にして、ダミー情報がアプリケーション130の挙動に影響を及ぼしたかを、当該アプリケーション130の起動に失敗したかによって判断する。
The unique
明らかなように、アプリケーション130からのアクセスのパターンが上記アプリケーション130の起動時のチェック動作のそれに一致する場合、上記特定条件は不成立となる。この場合、固有情報置換機構227によるダミー情報への置き換えは行われない。その理由は、もし、ダミー情報への置き換えを行っても、write関数によってfdにダミー情報が書き込まれ、そのfdに書き込まれたダミー情報がread関数によって読み出される可能性があるためである。つまり、ダミー情報への置き換えが、フェイルオーバの発生を想定した単一サーバ10でのシミュレーションとならないためである。
Obviously, when the access pattern from the
なお、アプリケーション130によっては、上記 (2) 及び (3) の順番、つまりgethostid及びreadの順番が逆である可能性もある。もし、上述の例のようにgethostidが先の場合、gethostidの実行時に読み出しデータを監視対象として、フックライブラリ機構22の例えば状態判定機構225内に記録するとよい。一方、readが先の場合、ホストIDを予め監視(確認)対象として例えば状態判定機構225内に登録しておくとよい。
Depending on the
[第3の変形例]
次に、上記実施形態の第3の変形例について、図1及び図5を援用して説明する。
第3の変形例は、前述のようなアプリケーション130の起動時の一般的なチェック動作 (1) 〜 (5) の後にホストIDが参照される場合を想定する。更に詳細に述べるならば、第3の変形例は、アプリケーション130の扱うデータを暗号化して外部記憶装置13に記録する場合において、暗号化のキーにサーバ10に固有な情報、例えばサーバ10のホストIDを利用するものとする。
[Third Modification]
Next, a third modification of the above embodiment will be described with reference to FIGS.
In the third modification, it is assumed that the host ID is referred to after the general check operations (1) to (5) when the
この場合アプリケーション130では、前述のチェック動作 (1) 〜 (5) に続いて、以下の処理が実行されるのが一般的である。
(6) ホストIDの読み出し
(7) 読み出されたホストIDをキーとして、任意のデータを暗号化
(8) 暗号化されたデータの外部記憶装置13への書き込み(記録)
データの書き込みが続く場合、上記 (6) 〜 (7) の処理が繰り返される。
In this case, the
(6) Reading host ID
(7) Encrypt any data using the read host ID as a key
(8) Writing (recording) the encrypted data to the
When data writing continues, the above processes (6) to (7) are repeated.
一方、外部記憶装置13に記録されたデータを読み出す場合、アプリケーション130では以下の処理が実行される。
(9) 外部記憶装置13からのデータ(暗号化されたデータ)の読み出し
(10) ホストIDの読み出し
(11) 読み出されたホストIDをキーとして、読み出されたデータの復号化
データの読み出しが続く場合、上記 (9) 〜 (11) の処理が繰り返される。
On the other hand, when reading data recorded in the
(9) Reading data (encrypted data) from the
(10) Reading host ID
(11) Decoding of the read data using the read host ID as a key When the reading of data continues, the above processes (9) to (11) are repeated.
このように、上記 (6) 〜 (8) 及び(9) 〜 (11) の処理は、それぞれアプリケーション130の挙動によって繰り返される。ここでは、これらの処理が繰り返されて、その都度ホストIDが読み出されることを想定する。そこでアクセス管理機構224は、gethostidによるホストIDの読み出しのアクセス回数、readによるデータの読み出し回数及びwriteによるデータの書き込み回数をアクセス管理テーブル223aに記録するのに加えて、アクセス順序を図示せぬログテーブルに記録する。なお、アクセス管理テーブル223aのデータ構造は図6と異なっており、アクセス管理テーブル223aの各エントリはサーバ固有情報欄に代えて関数名欄を含むものとする。具体的には、アクセス管理テーブル223aは、関数名欄にgethostid、read及びwriteの関数名がそれぞれ設定されたエントリを含むものとする。
As described above, the processes (6) to (8) and (9) to (11) are repeated according to the behavior of the
状態判定機構225は、アクセス管理テーブル223a及びログテーブルから、gethostid及びread、或いはgethostid及びwriteの呼び出しによるアクセスが、時間的に近接した状態で繰り返されるかを判定する。この判定には、時間的に近接しているかを判定するための、近接度合いを示す閾値(第1の閾値)と、繰り返されたと判定するための繰り返し数の閾値(第2の閾値)とが用いられる。
The
ここで、1000文字のデータをホストIDで暗号化して、その暗号化されたデータを外部記憶装置13へ書き込む動作、または外部記憶装置13に書き込まれた暗号化されたデータを読み出してホストIDで復号化する動作が行われるものとする。更に、データの書き込みまたは読み出し(書き込み/読み出し)の動作が、1000文字のデータを対象に1回で実行されず、例えば100文字単位で10回に分けて実行されるものとする。この場合、最初は、ホストIDの読み出し及び100文字のデータの書き込み、またはホストIDの読み出し及び100文字のデータ読み出しが続けて行われる。このことを前提として、状態判定機構225による上述の判定が行われる。
Here, the operation of encrypting 1000-character data with the host ID and writing the encrypted data to the
まず、ホストIDの読み出しと最初のデータ書き込み/読み出しとが近接している(続いている)かが判定される。その後データ書き込み/読み出しが実行されると、当該データ書き込み/読み出しが同一の“fd”を対象として繰り返されること、つまり連続(近接)するデータ書き込み/読み出しが観測される。この場合、状態判定機構225は、これらのデータ書き込み/読み出しが最初に読み出されたホストIDの影響を受けていると判定する。
First, it is determined whether the reading of the host ID and the first data writing / reading are close (continuing). Thereafter, when data writing / reading is executed, the data writing / reading is repeated for the same “fd”, that is, continuous (adjacent) data writing / reading is observed. In this case, the
状態判定機構225は、gethostid及びreadの呼び出しによるアクセス、或いはgethostid及びwriteの呼び出しによるアクセスが時間的に近接した状態で繰り返されると判定できた場合、これらのアクセスに依存性があると推測する。そこでフック機構222は、gethostid及びwriteの呼び出しによるアクセスが時間的に近接して繰り返される間、予め測定されるアクセスのタイミング、順序に従い、アプリケーション130に返されるべきgethostidに対する返り値として、真のホストIDを用いる。一方、gethostid及びreadの呼び出しによるアクセスが時間的に近接して繰り返される間は、フック機構222は予め測定されるアクセスのタイミング、順序に従い、アプリケーション130に返されるべきgethostidに対する返り値として、ダミー情報を用いる。
If the
すると、gethostid及びreadの呼び出しによるアクセスの繰り返しにおいて、アプリケーション130では読み出しデータの復号化に失敗する。この場合、アプリケーション130は読み出しエラーを当該アプリケーション130の実行履歴を表すログファイルに出力する。状態判定機構225は、このログファイルを参照することにより、アプリケーション130のクラスタ化が不可であると判断できる。なお、このログファイルを状態通知機構226がユーザに通知して、当該ユーザにアプリケーション130のクラスタ化が不可であることを判断させても構わない。
Then, the
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。 In addition, this invention is not limited to the said embodiment or its modification example as it is, A component can be deform | transformed and embodied in the range which does not deviate from the summary in an implementation stage. In addition, various inventions can be formed by appropriately combining a plurality of constituent elements disclosed in the embodiment or its modification. For example, you may delete a some component from all the components shown by embodiment or its modification.
10…サーバ(クラスタシステム向けサーバ計算機)、11…CPU、12…主メモリ、13…外部記憶装置、21…システムライブラリ機構、22…フックライブラリ機構、23…サーバ固有情報、130…アプリケーション(特定アプリケーション)、131…アプリケーションクラスタ化可能性判定支援プログラム、211…システムライブラリ記憶部、212…API(アプリケーションプログラムインタフェース)提供機構、221…フックライブラリ記憶部、222…フック機構、223,223a…アクセス管理テーブル、224…アクセス管理機構、225…状態判定機構、226…状態通知機構、227…固有情報置換機構。
DESCRIPTION OF
Claims (5)
前記サーバ計算機に固有のサーバ固有情報を取得するための第1のアプリケーションプログラムインタフェースの集合を含むシステムライブラリを予め格納したシステムライブラリ記憶手段と、
前記第1のアプリケーションプログラムインタフェースの呼び出しを受けて、当該第1のアプリケーションプログラムインタフェースを呼び出し元に提供するアプリケーションプログラムインタフェース提供手段と、
前記第1のアプリケーションプログラムインタフェースに対応付けられ、当該第1のアプリケーションプログラムインタフェースがフックされた際の動作を定義した第2のアプリケーションプログラムインタフェースの集合を含むフックライブラリを予め格納したフックライブラリ記憶手段と、
前記フックライブラリ記憶手段に格納されている前記フックライブラリに基づき、前記特定アプリケーションからの前記第1のアプリケーションプログラムインタフェースの呼び出しをフックするフック手段であって、前記フックライブラリにおいて当該フックされた第1のアプリケーションプログラムインタフェースに対応付けられている前記第2のアプリケーションプログラムインタフェースに従い、当該フックされた第1のアプリケーションプログラムインタフェースを呼び出すフック手段と、
前記特定アプリケーションからの前記第1のアプリケーションプログラムインタフェースの呼び出しに基づく前記サーバ固有情報へのアクセスを記録するのに用いられるアクセス管理テーブルと、
前記フック手段によって前記第1のアプリケーションプログラムインタフェースの呼び出しがフックされた場合に、当該第1のアプリケーションプログラムインタフェースの呼び出しに基づく前記サーバ固有情報へのアクセスを前記アクセス管理テーブルに記録するアクセス管理手段と、
前記アクセス管理テーブルによって示される、前記特定アプリケーションからの前記サーバ固有情報へのアクセスの状況を示す情報をユーザに通知するための状態通知手段と
を具備することを特徴とするクラスタシステム向けサーバ計算機。 In a server computer for a cluster system that can execute a specific application to provide services to users,
System library storage means for storing in advance a system library including a set of first application program interfaces for acquiring server-specific information specific to the server computer;
Application program interface providing means for receiving a call to the first application program interface and providing the first application program interface to a caller;
Hook library storage means pre-stored with a hook library including a set of second application program interfaces associated with the first application program interface and defining an operation when the first application program interface is hooked; ,
Hook means for hooking a call to the first application program interface from the specific application based on the hook library stored in the hook library storage means, wherein the first hooked in the hook library Hook means for invoking the hooked first application program interface according to the second application program interface associated with the application program interface;
An access management table used to record access to the server specific information based on a call of the first application program interface from the specific application;
An access management means for recording access to the server specific information based on the call of the first application program interface in the access management table when the call of the first application program interface is hooked by the hook means; ,
A server computer for a cluster system, comprising: status notification means for notifying a user of information indicating a status of access to the server-specific information from the specific application indicated by the access management table.
前記アクセス管理手段は、前記フック手段によって前記第1のアプリケーションプログラムインタフェースの呼び出しがフックされた場合に、当該フックされた第1のアプリケーションプログラムインタフェースの呼び出しに基づいてアクセスされるサーバ固有情報に対応する前記アクセス管理テーブルのエントリに記録されているアクセス回数をインクリメントする
ことを特徴とする請求項1記載のクラスタシステム向けサーバ計算機。 The access management table has an entry for recording the number of accesses to the server specific information, prepared for each server specific information,
The access management means corresponds to server-specific information that is accessed based on the hooked first application program interface call when the hook application hooks the first application program interface call. The server computer for a cluster system according to claim 1, wherein the number of accesses recorded in the entry of the access management table is incremented.
前記状態通知手段は、前記状態判定手段の判定結果を、前記特定アプリケーションからの前記サーバ固有情報へのアクセスの状況を示す情報としてユーザに通知する
ことを特徴とする請求項2記載のクラスタシステム向けサーバ計算機。 Further comprising state determination means for determining whether the number of accesses after being incremented by the access management means exceeds a predetermined threshold,
The cluster system according to claim 2, wherein the state notification unit notifies the user of the determination result of the state determination unit as information indicating a status of access to the server specific information from the specific application. Server computer.
前記状態判定手段は、前記ダミーの固有情報が返された前記特定アプリケーションの動作状態を監視し、異常発生の有無に基づいて前記特定アプリケーションのクラスタ構成時の悪影響の有無を判定する
ことを特徴とする請求項1乃至3のいずれかに記載のクラスタシステム向けサーバ計算機。 When the call of the first application program interface is hooked by the hook means, instead of the server specific information to be accessed based on the call of the first application program interface, the server specific information is A unique information replacement means for returning the specific information of the different dummy to the specific application by the hook means as a return value for calling the first application program interface;
The state determination means monitors the operating state of the specific application to which the dummy unique information is returned, and determines whether there is an adverse effect during cluster configuration of the specific application based on whether or not an abnormality has occurred. The server computer for a cluster system according to any one of claims 1 to 3.
前記フックライブラリ記憶手段に格納されている前記フックライブラリに基づき、前記特定アプリケーションからの前記第1のアプリケーションプログラムインタフェースの呼び出しをフックするステップと、
前記フックされた第1のアプリケーションプログラムインタフェースを呼び出すステップと、
前記フックされた第1のアプリケーションプログラムインタフェースの呼び出しに基づく前記サーバ固有情報へのアクセスを前記アクセス管理テーブルに記録するステップと、
前記アクセス管理テーブルによって示される、前記特定アプリケーションからの前記サーバ固有情報へのアクセスの状況を示す情報をユーザに通知するステップと
を実行させるためのアプリケーションクラスタ化可能性判定支援プログラム。 A server computer for a cluster system capable of executing a specific application for providing a service to a user, including a set of first application program interfaces for acquiring server-specific information specific to the server computer A system library storing means for storing a system library in advance; an application program interface providing means for receiving a call to the first application program interface and providing the first application program interface to a caller; and the first application A second application program interface which is associated with the program interface and defines an operation when the first application program interface is hooked Hook library storage means for storing a hook library in advance, including a set of face, the cluster system for a server computer including an access management table,
Hooking a call to the first application program interface from the specific application based on the hook library stored in the hook library storage means;
Invoking the hooked first application program interface;
Recording the access to the server specific information based on the hooked first application program interface call in the access management table;
An application clusterability determination support program for executing a step of notifying a user of information indicating a status of access to the server-specific information from the specific application indicated by the access management table.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008141263A JP2009289054A (en) | 2008-05-29 | 2008-05-29 | Server computer for cluster system, and application clustering possibility determination support program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008141263A JP2009289054A (en) | 2008-05-29 | 2008-05-29 | Server computer for cluster system, and application clustering possibility determination support program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009289054A true JP2009289054A (en) | 2009-12-10 |
Family
ID=41458209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008141263A Pending JP2009289054A (en) | 2008-05-29 | 2008-05-29 | Server computer for cluster system, and application clustering possibility determination support program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009289054A (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012073682A (en) * | 2010-09-27 | 2012-04-12 | Nec Corp | Migration test program creation device, migration test program creation method, and migration test program creation program |
JP2014182561A (en) * | 2013-03-19 | 2014-09-29 | Hitachi Ltd | Computer system, process and method for monitoring thread |
JP2021033452A (en) * | 2019-08-20 | 2021-03-01 | 株式会社リコー | Information processing apparatus, information processing method, and program |
-
2008
- 2008-05-29 JP JP2008141263A patent/JP2009289054A/en active Pending
Non-Patent Citations (2)
Title |
---|
CSND200000140008, 稲村大介, "テーマ別用語事典:はやわかりJava Glossary", JAVA PRESS, 19991125, 第3巻, pp.75−85, JP, 株式会社技術評論社 * |
JPN6010027279, 稲村大介, "テーマ別用語事典:はやわかりJava Glossary", JAVA PRESS, 19991125, 第3巻, pp.75−85, JP, 株式会社技術評論社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012073682A (en) * | 2010-09-27 | 2012-04-12 | Nec Corp | Migration test program creation device, migration test program creation method, and migration test program creation program |
JP2014182561A (en) * | 2013-03-19 | 2014-09-29 | Hitachi Ltd | Computer system, process and method for monitoring thread |
JP2021033452A (en) * | 2019-08-20 | 2021-03-01 | 株式会社リコー | Information processing apparatus, information processing method, and program |
JP7293975B2 (en) | 2019-08-20 | 2023-06-20 | 株式会社リコー | Information processing device, information processing method, and program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884837B2 (en) | Predicting, diagnosing, and recovering from application failures based on resource access patterns | |
JP7177576B2 (en) | Runtime self-modification for blockchain ledgers | |
JP5598235B2 (en) | Composite event processing apparatus and composite event processing method | |
US8621282B1 (en) | Crash data handling | |
JP4941556B2 (en) | ENCRYPTION DEVICE, ENCRYPTION METHOD, AND ENCRYPTION PROGRAM | |
JP2004334869A (en) | Diagnosis and solution of computer problem by program, and automatic report and updating thereof | |
US20080091895A1 (en) | Cache data backup method and system for computer clustering systems | |
WO2011111172A1 (en) | Information processing device, information processing method, and program | |
WO2006082657A1 (en) | Multi cpu computer and system restart method | |
JP6288275B2 (en) | Virtualization infrastructure management apparatus, virtualization infrastructure management system, virtualization infrastructure management method, and virtualization infrastructure management program | |
US20070083792A1 (en) | System and method for error detection and reporting | |
JP2013073405A (en) | Monitoring device, control method and control program | |
WO2023226380A1 (en) | Disk processing method and system, and electronic device | |
CN101968835A (en) | Method and system for safely deleting information from a computer | |
CN111026333A (en) | Access request processing method, processing device, electronic equipment and storage medium | |
JP2009289054A (en) | Server computer for cluster system, and application clustering possibility determination support program | |
CN109445909A (en) | Backup method, system, terminal and the storage medium of virtual-machine data | |
JP5392263B2 (en) | Information processing apparatus and memory protection method thereof | |
US8868979B1 (en) | Host disaster recovery system | |
US7600151B2 (en) | RAID capacity expansion interruption recovery handling method and system | |
US20200250107A1 (en) | Systems and methods for safely detecting indeterminate states of ranges in a self-encrypting storage resource | |
JP4807289B2 (en) | Information processing apparatus, file processing method, and program | |
JP5310075B2 (en) | Log collection system, information processing apparatus, log collection method, and program | |
US10592329B2 (en) | Method and electronic device for continuing executing procedure being aborted from physical address where error occurs | |
CN111949479A (en) | Interactive system and method and equipment for determining index creation condition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100409 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100518 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101005 |