JP4995296B2 - 計算機システムおよびキャッシュ制御方法 - Google Patents

計算機システムおよびキャッシュ制御方法 Download PDF

Info

Publication number
JP4995296B2
JP4995296B2 JP2010054749A JP2010054749A JP4995296B2 JP 4995296 B2 JP4995296 B2 JP 4995296B2 JP 2010054749 A JP2010054749 A JP 2010054749A JP 2010054749 A JP2010054749 A JP 2010054749A JP 4995296 B2 JP4995296 B2 JP 4995296B2
Authority
JP
Japan
Prior art keywords
file
cache server
cache
server
management
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.)
Expired - Fee Related
Application number
JP2010054749A
Other languages
English (en)
Other versions
JP2011187026A (ja
Inventor
大輔 伊藤
雄次 對馬
仁 早川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2010054749A priority Critical patent/JP4995296B2/ja
Priority to EP10014568.9A priority patent/EP2365442B1/en
Priority to KR1020100113780A priority patent/KR101191589B1/ko
Priority to US12/947,248 priority patent/US20110225373A1/en
Priority to CN2010105511310A priority patent/CN102193959B/zh
Publication of JP2011187026A publication Critical patent/JP2011187026A/ja
Application granted granted Critical
Publication of JP4995296B2 publication Critical patent/JP4995296B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2885Hierarchically arranged intermediate devices, e.g. for hierarchical caching

Description

ファイルシステム、またはキーバリューストア等に代表されるオブジェクトストアのデータキャッシュの制御方法に関する。
広域網(WAN)を介してデータセンタと拠点との間でデータアクセスを行う場合、距離に応じて転送遅延、または、広域網の実効帯域が契約帯域と比べて大幅に小さく転送速度が遅いなどの問題が生じる。
前述した問題に対処するためにキャッシュが用いられる。キャッシュには、更新されないファイルまたは更新頻度が低いファイルの参照を高速化するためのリードキャッシュと、更新頻度の高いファイルの参照およびファイルの更新を速くするためのライトキャッシュとがある。複数のユーザが同一のデータに対して更新を行う環境では、実際のデータとキャッシュされたデータとの一貫性を制御する必要がある。
[通常のキャッシュ]
一貫性制御を実現する方法は、データを保持するサーバを用いて同期をとる方法である(例えば、非特許文献1参照)。以下、図30、図31および図32を用いてデータを保持するサーバとしてファイルサーバを用いる場合を例に説明する。
図30は、従来のファイルサーバを備えた計算機システムの構成例を示すブロック図である。
計算機システムは、中央拠点3000、拠点A3010および拠点B3020から構成され、広域網(WAN)3030を介して互いに接続される。
中央拠点3000には、ファイルサーバ3001が含まれる。ファイルサーバ3001は、各拠点から参照または更新されるファイル3005を格納する。
拠点A3010には、キャッシュサーバA3011および端末A3012−1が含まれる。キャッシュサーバA3010と端末A3012−1とは、直接、またはLAN(Local Area Network)等を介して接続される。端末A3012−1がキャッシュサーバA3011を介して中央拠点3000のファイルサーバ3001に格納されるファイル3005を参照および更新する。
拠点B3020には、キャッシュサーバB3021および端末B3012−2が含まれる。キャッシュサーバB3021と端末B3012−2とは、直接、またはLAN(Local Area Network)等を介して接続される。端末B3012−2がキャッシュサーバB3021を介して中央拠点3000のファイルサーバ3001に格納されるファイル3005を参照および更新する。
以下、キャッシュサーバA3011がファイルサーバ3001に格納されるファイル3005に対応するファイルのキャッシュ3015を格納する場合について説明する。なお、当該ファイルのキャッシュ3015は最新である。
図31は、従来のキャッシュサーバが実行するファイル参照処理を説明するフローチャートである。
キャッシュサーバは、端末からファイル名を含むファイル参照要求を受け取り、ファイル参照処理を開始する(S3101)。
まず、キャッシュサーバは、端末から受け取ったファイル名に対応するファイルのキャッシュを検索し(S3102)、当該ファイルのキャッシュが存在するか否かを判定する(S3103)。
キャッシュサーバA3011の場合、端末A3012−1から受け取ったファイル名に対応するファイルのキャッシュ3015が存在すると判定され、また、キャッシュサーバB3021の場合、端末A3012−1から受け取ったファイル名に対応するファイルのキャッシュ3015が存在しないと判定される。
端末から受け取ったファイル名に対応するファイルのキャッシュが存在すると判定された場合、キャッシュサーバは、ファイルサーバから、端末から受け取ったファイル名に対応するファイルを取得する(S3104)。
キャッシュサーバは、当該キャッシュサーバに格納されるファイルのキャッシュが最新であるか否かを判定する(S3105)。
具体的には、キャッシュサーバは、端末から受け取ったファイル名に対応するファイルのフィンガープリントをファイルサーバから取得し、取得されたフィンガープリントを参照し、当該キャッシュサーバに格納されるファイルのキャッシュが最新であるか否かを判定する。
ファイルのキャッシュが最新か否かの厳密な判定を行うためにはファイルサーバからファイルそのものを受信する必要があるが、この場合、キャッシュを用いても高速化が達成できないため、ファイルのフィンガープリントが用いられる。
ここで、ファイルのフィンガープリントとはファイル内容の特徴を表す短いデータを示す。ファイルのフィンガープリントは、ファイルの内容が少しでも異なれば大幅に変わるという性質を持つ。そのため、ファイルのフィンガープリントを用いて、キャッシュが最新か否かの判定ができ、また、フィンガープリントのデータ量はファイルそのものよりも少なくて済む。したがって、ファイルのフィンガープリントの取得時間も少なくてすむ。このような、フィンガープリントを計算する方法としてMD5などが知られている(例えば、非特許文献2参照)。MD5が用いられた場合、S3104において取得されるデータ量は128ビットとなる。
キャッシュサーバに格納されるファイルのキャッシュが最新であると判定された場合、キャッシュサーバは、当該ファイルのキャッシュからファイルのデータを取得し(S3106)、取得されたファイルのデータをユーザに送信して処理を終了する(S3107)。
S3103において端末から受け取ったファイル名に対応するファイルのキャッシュが存在しないと判定された場合、またはS3105においてキャッシュサーバに格納されるファイルのキャッシュが最新でないと判定された場合、キャッシュサーバは、ファイルサーバからファイルのデータを取得し(S3108)、取得されたファイルのデータをユーザに送信して処理を終了する(S3107)。
図32は、従来のキャッシュサーバが実行するファイル参照処理の流れを説明するシーケンス図である。
図32では、端末A3012−1がキャッシュサーバA3011を介してファイルサーバ3001にアクセスし、キャッシュヒットした場合、すなわち、キャッシュからファイルのデータが取得される場合の処理手順を示す図である。
端末A3012−1は、ファイル名を含むファイル参照要求をキャッシュサーバA3011に送信する(S3201)。
ファイル名を含むファイル参照要求を受信したキャッシュサーバA3011は、ファイル参照処理を開始し(S3202)、ファイル参照要求に含まれるファイル名に対応するファイルのキャッシュを検索する(S3203)。
ここで、キャッシュサーバA3011は、ファイル参照要求に含まれるファイル名に対応するファイルのキャッシュを格納するため、次に、当該ファイルのメタデータの取得要求をファイルサーバ3001に送信する(S3204)。
キャッシュサーバA3011は、ファイルサーバ3001から、ファイル参照要求に含まれるファイル名に対応するファイルのメタデータを受信する(S3205)。
キャッシュサーバA3011は、格納されるファイルのキャッシュが最新であるため、当該ファイルのキャッシュからファイルのデータを取得し(S3207)、取得されたファイルのデータを端末A3012−1に送信して(S3208)、処理を終了する。
図30に示す計算機システムにおいて、端末A3012−1および端末B3012−2は、ファイルサーバ3001に格納される全ファイルにアクセスすることが可能性である。したがって、枠線3206で囲ったS3204およびS3205の処理に伴うキャッシュサーバA3011からファイルサーバ3001への通信によって一貫性を制御する必要がある。
しかし、図32に示す処理では、ファイルのキャッシュが最新でるため、枠線3206で囲ったS3204およびS3205の処理は、処理の遅延を発生させる。
さらに、図30に示す計算機システムでは、キャッシュサーバA3011とファイルサーバ3001とは広域網(WAN)3030を介して接続されているため遅延が大きく、例えば、数百ミリ秒から1秒遅延が発生する。したがって、広域網(WAN)3030を介したフィンガープリントの取得では、取得されるデータ量が小さい場合であっても、例えば数百ミリ秒の遅延が生じる。
したがって、キャッシュサーバA3011内の処理(例えば、S3202、S3207)は数ミリ秒から数十ミリ秒と高速に処理が可能であるため、枠線3206で囲った処理が実行されない一貫性制御方式が望ましい。
なお、S3105において取得されるフィンガープリントのように、ファイルにはファイルの内容以外の情報が含まれる。ファイルの内容以外の情報としては、例えば、ファイルの作者、ファイルの作成日時、ファイルの最終更新日時、ファイルのアクセス権などが考えられる。以下では、ファイルの内容以外の情報をまとめてメタデータと呼ぶ。また、ファイルの内容を実データと呼ぶ。
また、以下ではディレクトリもファイルの一種とする。したがって、特に断りのない限り、ファイルは狭義のファイルとディレクトリとを含む。
[Wire FS]
前述したような、従来技術における遅延を考慮した一貫性制御の方法として、ファイルサーバ内のあるサブツリーへのキャッシュサーバ間のアクセスの偏りに応じて、当該サブツリーのメタデータ管理権と実データとを適切なキャッシュサーバが管理することによって、一貫性制御に必要となる広域網を介した通信の回数を削減し、ファイルアクセスを高速化する方法がある(例えば、特許文献1参照)。
特許文献1に記載の方法では、ファイルサーバ内のディレクトリを含む各ファイルに対してhomeとownerという役割を持つキャッシュサーバがある。
あるファイルに頻繁にアクセスするキャッシュサーバが当該ファイルのhomeとなり、当該ファイルのメタデータを管理する。また、当該ファイルにアクセスするキャッシュサーバはその都度homeであるキャッシュサーバからownerの権利を期限付きで借りうけownerとなり、該ファイルに関する一時的なメタデータの管理権と実データのキャッシュを持つ。
なお、ファイルに対して頻繁にアクセスするキャッシュサーバがhomeとなるため、通常、homeとownerとは同一のキャッシュサーバとなる。また、当該ファイルに対し頻繁にアクセスするキャッシュサーバが現在のhomeではなくなった場合、頻繁にアクセスするキャッシュサーバにhomeを移動させる。このとき、アクセス偏りの統計値の算出およびhome移動の判定は中央拠点に配置された管理サーバが行う。
特許文献1に記載の方法を用いると、特定のキャッシュサーバからの統計的にアクセスが多いファイルのownerとなったキャッシュサーバは、ownerの権利が切れるまでは一貫性制御の実行時に広域網を介した通信を行うことなく、常に自分が保持するキャッシュが最新であると判定できる。つまり、図32の枠線3206で囲った処理を行う必要がなくなる。
しかし、特許文献1に記載の方法では、多くの拠点から統計的に均等なアクセスを受けるようなファイルの扱いに問題となる。
すなわち、特許文献1に記載の方法において、統計値を算出するための情報を取得する期間を十分に長くする、または十分なアクセスの偏りがある場合に偏りが検出されるようにすると、当該ファイルについてのアクセス偏りが検出できないため、当該ファイルのhomeとなるキャッシュサーバを特定できない。
つまり、統計的に多くの拠点から均等にアクセスを受けるようなファイルの一貫性制御の実行時に広域網を介した処理の実行を低減することができない。
前述した問題に対して、統計値を算出するための情報を取得する期間を短くしたり、わずかなアクセスの偏りがある場合にアクセス偏りが検出されるようにすることによって、特定のキャッシュサーバをhomeとする方法が考えられる。しかし、この方法では、あるファイルに対してあるキャッシュサーバからのアクセスが一時的に増加する場合など、ノイズのようなアクセスの影響を強く受けるため、homeの移動を頻繁に行う必要がある。
しかし、特許文献1に記載の方法では、以下で述べる理由によって、いずれかの端末からアクセスされるファイルのhomeを移動させることができない。特定のキャッシュサーバがhomeとなるファイルは、頻繁にアクセスを受けるファイルであるため、いずれかの端末がアクセス中である可能性が高く、アクセス中のファイルのhomeを動かせないことの影響は大きい。すなわち、多くの拠点から統計的に均等なアクセスを受けるようなファイルの一貫性制御に必要とする広域網を介した処理の低減を実現できない。
あるファイルのhome移動については、特許文献1に記載されており、全てのキャッシュ(すなわち、homeとownerとが持っているキャッシュ)を無効化し、home移動通知をhomeから中央拠点の管理サーバに送る。その後、当該ファイルのメタデータとhome権限とを新しいhomeに送る。
つまり、全てのキャッシュを無効化できるのはowner権利の期限が切れた後である。一方、ownerであるキャッシュサーバは、いずれかの端末がファイルにアクセス中である場合、owner権利を更新するため、owner権利の期限が切れない。そのため、いずれかの端末がアクセス中のファイルのhomeを移動させることはできない
さらに、特許文献1に記載の方法では、あるキャッシュサーバのメンテナンスまたはリプレースに伴う計画停止を行う場合にも、前述したと同様の理由によって、当該キャッシュサーバがhomeであるファイルにいずれかの端末がアクセス中である場合、当該キャッシュサーバを停止することはできない。
前述したように、従来の方法では広域網を介して中央拠点と拠点との間でアクセスを行う場合に、遅延解消のためにキャッシュを用いても、統計的に多くの拠点から均等にアクセスを受けるようなファイルについては一貫性制御のための通信遅延を解消することができないという問題があった。
なお、ここではデータアクセスの一例としてファイルアクセスを例に挙げたが、対象が他のデータオブジェクトであっても本質的に違いは無く、同様の問題が生じる。
米国特許出願公開第2007/0162462号明細書
Nelson、「Caching in the Sprite Network File System」、ACM Transactions on Computer Systems、Volume 6、Issue 1(Feburauary 1988)、p.134−154 RFC1321、「The MD5 Message−Digest Algorithm」
発明が解決しようとする課題は、従来手法を用いてファイルのメタデータをキャッシュサーバで管理すると、当該ファイルのメタデータを当該キャッシュサーバから別のキャッシュサーバに動かそうとしても、いずれかの端末が該ファイルにアクセス中である場合には動かすことができないことである。
本発明の代表的な一例を示せば、以下の通りである。すなわち、第1のプロセッサと、前記第1のプロセッサに接続される第1のメモリとを備え、複数のファイルを格納するファイルサーバと、第2のプロセッサと、前記第2のプロセッサに接続される第2のメモリとを備え、前記ファイルのキャッシュデータを格納するキャッシュサーバと、第3のプロセッサと、前記第3のプロセッサに接続される第3のメモリとを備え、前記キャッシュサーバを管理するキャッシュ管理サーバとを備える計算機システムであって、前記ファイルのキャッシュデータは、前記ファイルを特定可能なデータ、又は、前記ファイルを構成するデータの少なくともいずれか一方を含み、前記キャッシュ管理サーバは、前記ファイルサーバに格納される前記ファイルのキャッシュデータに対する前記キャッシュサーバの管理権限を表す権限情報を管理し、前記キャッシュサーバは、第1のキャッシュサーバ、第2のキャッシュサーバ及び第3のキャッシュサーバを含み、前記第1のキャッシュサーバは、当該第1のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第1のロック管理情報を備え、前記第2のキャッシュサーバは、当該第2のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第2のロック管理情報を備え、前記第3のキャッシュサーバは、当該第3のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第3のロック管理情報を備え、前記ファイルは、第1のファイルを含み、前記第1のキャッシュサーバは、当該第1のキャッシュサーバに接続されるクライアント端末から前記第1のファイルに対する処理命令を受信した場合に、前記キャッシュ管理サーバから前記権限情報を取得し、前記取得された権限情報を参照して、前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有するか否かを判定し、前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有すると判定された場合に、前記第1のファイルに対する処理命令を実行し、前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有しないと判定された場合に、当該第1のファイルの前記管理権限を有する前記第2のキャッシュサーバに、前記第1のファイルに対する処理命令を送信して、前記第2のキャッシュサーバから前記第1のファイルに対する処理命令の実行結果を受信し、前記キャッシュ管理サーバは、前記第1のキャッシュサーバが有する、前記第1のファイルのキャッシュデータの前記管理権限を、前記第3のキャッシュサーバに変更する更新命令を、前記第1のキャッシュサーバに送信し、前記第1のキャッシュサーバは、前記更新命令を受信した後、前記更新命令を前記第3のキャッシュサーバに送信し、前記第1のファイルのロック状態を前記第3のキャッシュサーバに移動させるように前記第1のロック管理情報を更新する第1の更新処理を実行し、前記第3のキャッシュサーバは、前記更新命令を受信した後、前記第1のファイルのロック状態を前記第3のキャッシュサーバに移動させるように前記第3のロック管理情報を更新する第2の更新処理を実行し、前記キャッシュ管理サーバは、前記第1のファイルのキャッシュデータの管理権限を前記第1のキャッシュサーバから前記第3のキャッシュサーバに変更するように前記権限情報を更新することを特徴とする。
本発明によれば、アクセス偏りがあるファイルに対し、時間ごとに適切なキャッシュサーバが当該ファイルの管理権限を保持することができるため、一貫性制御に要する通信遅延を解消できる。
また、本発明の別の効果として、管理権限を任意のタイミングで変更できるため、計画停止など運用が容易に実現できる。
本発明の実施形態の計算機システムを説明するブロック図である。 本発明の実施形態のファイルサーバの構成例を説明するブロック図である。 本発明の実施形態のキャッシュ管理サーバの構成例を説明するブロック図である。 本発明の実施形態のキャッシュサーバの構成例を説明するブロック図である。 本発明の実施形態のロック管理表の一例を示す説明図である。 本発明の実施形態の受付停止管理表の一例を示す説明図である。 本発明の実施形態のマスタ管理表の一例を示す説明図である。 本発明の実施形態のファイルサーバが起動後に実行する処理を説明するフローチャートである。 本発明の実施形態のファイルサーバ制御部が備えるファイルのメタデータ参照機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のファイルサーバ制御部が備えるファイルのロック取得機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のファイルサーバ制御部が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のファイルサーバ制御部が備えるファイル更新機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のファイルサーバ制御部が備えるファイルクローズ機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のファイルサーバ制御部が備えるファイルのロック解放機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバが起動時に実行する処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバ制御部が備えるファイルのメタデータ参照機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバ制御部が備えるファイルのロック取得機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバ制御部が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバ制御部が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバ制御部が備えるファイルの実データ更新機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバ制御部が備えるファイルの実データ更新機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバ制御部が備えるファイルのクローズ機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバ制御部が備えるファイルのロック解放機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュ管理サーバが起動後に実行する処理を説明するフローチャートである。 本発明の実施形態のマスタ管理表制御UI部が備えるマスタ場所変更UI機能およびキャッシュサーバ制御部が備えるマスタ変更機能によって実行される処理の概要を説明するシーケンス図である。 本発明の実施形態のマスタ場所更新処理実行時における、マスタ管理表制御UI部が実行する処理の詳細を説明するフローチャートである。 本発明の実施形態のマスタ場所更新処理実行時における、旧キャッシュサーバの旧キャッシュサーバ制御部が実行する処理の詳細を説明するフローチャートである。 本発明の実施形態のマスタ場所更新処理実行時における、新キャッシュサーバの新キャッシュサーバ制御部が実行する処理の詳細を説明するフローチャートである。 本発明の実施形態のキャッシュ管理サーバのマスタ管理表制御UI部313が備えるアクセス偏り集計UI機能によって実行される処理を説明するフローチャートである。 本発明の実施形態のキャッシュサーバがアクセス履歴の送信命令を受信したときに実行する処理を説明するフローチャートである。 本発明の実施携帯の制御端末が備えるタイムテーブルを説明するフローチャートである。 従来のファイルサーバを備えた計算機システムの構成例を示すブロック図である。 従来のキャッシュサーバが実行するファイル参照処理を説明するフローチャートである。 従来のキャッシュサーバが実行するファイル参照処理の流れを説明するシーケンス図である。
本実施形態は、複数の拠点に位置する端末が遅延の大きい広域網(WAN)を介して中央拠点に配置されたファイルサーバにアクセスする場合にキャッシュサーバを適用した一例である。
本実施形態では、ファイルサーバ中の任意のサブツリーに含まれるディレクトリ下のファイルの実データおよびメタデータの管理権とロック管理表を備えるキャッシュサーバをマスタとして定義する。なお、ここでは管理権の定義を「あるファイルに関するメタデータまたは実データがキャッシュに格納されている場合に、当該キャッシュに格納された情報が最新であると判定してよい権限」とする。
サブツリーごとのアクセス統計の算出結果からアクセス偏りがあった場合、またはユーザの指示があった場合に、当該サブツリーに対してマスタを定義できるようにする。マスタの定義は、マスタ管理表で管理される。また、ユーザがサブツリーごとにマスタを定義できるようにユーザインタフェースを設ける。
ロック管理表はキャッシュサーバが備え、当該キャッシュサーバがマスタとして管理する全てのサブツリーのうち、ロックが取得されたファイルについてのロック情報を格納する。
任意のサブツリーについてマスタが変更される場合に、マスタが有する権利とあわせて、ロック管理表にから当該サブツリーに含まれるファイルに関する行が変更前のマスタであるキャッシュサーバから変更後のマスタであるキャッシュサーバに送信される。
図1は、本発明の実施形態の計算機システムを説明するブロック図である。
計算機システムは、中央拠点101、拠点A102および拠点B103から構成され、
中央拠点101、拠点A102および拠点B103は、広域網112を介して互いに接続される。
中央拠点101は、ファイルサーバ105、キャッシュサーバ106およびキャッシュ管理サーバ107を含む。
ファイルサーバ105は、各種ファイルを格納し、当該ファイルの参照および更新処理を実行する。なお、本実施形態ではファイルは、フルパスを用いて一意に識別されるものとする。ファイルサーバ105の構成については、図2を用いて後述する。
キャッシュサーバ106は、ファイルサーバ105に格納されるファイルに関するキャッシュを格納する。キャッシュサーバ106の構成については、図4を用いて後述する。
キャッシュ管理サーバ107は、各キャッシュサーバが格納するキャッシュを管理する。また、キャッシュ管理サーバ107には制御端末104が接続され、管理者が制御端末104を用いて、キャッシュ管理サーバを操作する。キャッシュ管理サーバ107の構成については、図3を用いて後述する。
拠点A102は、キャッシュサーバ108、および端末109−1、109−2を含む。キャッシュサーバ108および端末109−1、109−2は、ローカル網12を介して接続される。
キャッシュサーバ108は、キャッシュサーバ106と同一のものである。
端末109−1、109−2は、ファイルサーバ105からファイルを参照または更新の要求を送信する。端末109−1、109−2は、CPU(図示省略)、主記憶部(図示省略)および二次記憶部(図示省略)を備える。また、主記憶部(図示省略)には、少なくともファイルにアクセスするプログラムが格納される。
拠点B103は、拠点A102と同一の構成である。すなわち、拠点B103は、キャッシュサーバ110、および端末111−1、111−2を含む。キャッシュサーバ110、および端末111−1、111−2は、ローカル網113を介して接続される。
なお、図1に示す例では、拠点A102と拠点B103とが同一の構成であるが、異なる構成であってもよい。
図2は、本発明の実施形態のファイルサーバ105の構成例を説明するブロック図である。
ファイルサーバ105は、CPU200、主記憶部210、二次記憶部220およびネットワークインタフェース230を備える。CPU200、主記憶部210、二次記憶部220およびネットワークインタフェース230は、内部バス等によって互いに接続される。
CPU200は、主記憶部210に格納される各種プログラムを読み出し、読み出されたプログラムを実行する。
主記憶部210は、CPU200によって実行されるプログラムおよび当該プログラムの実行に必要となる情報を格納する。主記憶部210は、例えば、メモリ等が考えられる。
主記憶部210は、ファイル保持部211、ロック管理部212、ファイルサーバ制御部213およびロック管理表214を格納する。
ファイル保持部211は、ファイルの実データおよびメタデータを管理する。ファイル保持部211は、ファイル実データ取得機能、ファイルメタデータ取得機能、ファイル実データ更新機能およびファイルメタデータ更新機能を備える。
ファイル実データ取得機能は、ファイルのフルパスを引数としてファイルの実データを取得する。ファイルメタデータ取得機能は、ファイルのフルパスを引数としてファイルのメタデータを取得する。
ファイル実データ更新機能は、ファイルのフルパスと実データとを引数としてファイルの実データを更新する。ファイルメタデータ更新機能は、ファイルのフルパスとメタデータとを引数としてファイルのメタデータを更新する。
ロック管理部212は、ファイルのロック状態を管理する。なお、本実施形態では、説明を簡単にするため排他ロックについて説明する。また、本実施形態では、ロック管理部212は、ファイルのフルパスごとに当該ファイルのロック状態を管理する。
ロック管理部212は、ロック取得機能およびロック解放機能を備える。ロック取得機能は、ファイルのフルパスを引数としてファイルのロックを取得する機能である。すなわち、ロックを取得したユーザ以外はファイルを操作できない状態にするための機能である。ロック解放機能は、ファイルのフルパスを引数としてファイルのロックを解放するための機能である。
ファイルサーバ制御部213は、ファイルサーバ105全体を制御する。具体的には、ファイルのメタデータ参照機能、ファイルのロック取得機能、ファイルオープン機能、ファイル更新機能、ファイルクローズ機能およびファイルのロック解放機能を備える。
各機能によって実現される処理については、図8〜14を用いて後述する。
ロック管理表214は、ファイルサーバ105に格納されるファイルのロック状態を格納する。具体的にはファイルサーバ105に格納されるファイルのうち、ロックが取得されたファイルに関する情報とを格納する。
二次記憶部220は、主記憶部210に読み出されるプログラム、および各種データを格納する。二次記憶部220は、例えば、HDD等が考えられる。
ネットワークインタフェース230は、他の装置と通信するためのインタフェースであり、本実施形態では広域網112と接続される。
なお、主記憶部210に格納されるファイル保持部211、ロック管理部212およびファイルサーバ制御部213は、ハードウェアによって実現されてもよい。
図3は、本発明の実施形態のキャッシュ管理サーバ107の構成例を説明するブロック図である。
キャッシュ管理サーバ107は、CPU300、主記憶部310、二次記憶部320およびネットワークインタフェース330を備える。CPU300、主記憶部310、二次記憶部320およびネットワークインタフェース330は、内部バス等によって互いに接続される。
CPU300は、主記憶部310に格納される各種プログラムを読み出し、読み出されたプログラムを実行する。
主記憶部310は、CPU300によって実行されるプログラムおよび当該プログラムの実行に必要となる情報を格納する。主記憶部310は、例えば、メモリ等が考えられる。
主記憶部310は、キャッシュ管理サーバ制御部311、キュー管理部312、マスタ管理表制御UI部313、マスタ管理表制御部314およびマスタ管理表315を格納する。
キャッシュ管理サーバ制御部311は、キャッシュ管理サーバ107全体を制御する。キャッシュ管理サーバ制御部311は、マスタ場所変更機能およびアクセス偏り集計機能を備える。なお、各機能によって実現される処理については、図22〜図28を用いて後述する。
キュー管理部312は、マスタ管理表制御UI部313または他のキャッシュサーバ108、110との間の通信に用いられるキューを管理する。
各部は必要に応じてキュー管理部312を用いて新しいキューを作成できる。本実施形態ではキューはポート番号によって識別されるが、別の実装方式としてメッセージのヘッダに宛先となるキューの識別子を付与して送信し、受信側のキュー管理部312が当該識別子を用いて適切なキューに割り振る方法も考えられる。
マスタ管理表制御UI部313は、マスタ管理表315を操作するためのユーザインタフェースである。マスタ管理表制御UI部313は、マスタ場所変更UI機能およびアクセス偏り集計UI機能を備える。
マスタ場所変更UI機能は、任意のサブディレクトリのマスタとなるキャッシュサーバを変更するUIを提供する機能である。アクセス偏り集計UIは、ファイルサーバ105が提供するファイルシステムのツリーに含まれる全てのサブディレクトリについて、キャッシュサーバごとのアクセス数を集計するUIを提供する機能である。
ここで、マスタとは、キャッシュサーバ106、108、110に格納されるキャッシュ(ファイルの実データおよびメタデータ)の管理権限を保持するキャッシュサーバ106、108、110を意味する。マスタは、サブディレクトリ毎に設定される。すなわち、マスタであるキャッシュサーバ106、108、110には、当該サブディレクトリ配下に格納されるファイルの最新の実データおよびメタデータを管理する権限が付与される。
マスタ管理表制御部314は、マスタ管理表315を管理する。マスタ管理表制御部314は、他の構成部またはキャッシュサーバ106、108、110からの要求にしたがって、マスタ管理表315に対して処理を実行する。具体的には、マスタ管理表制御部314は、マスタ管理表送信機能を備える。マスタ管理表送信機能は、マスタ管理表315を送信する機能である。
マスタ管理表315は、マスタとして管理権限を保持するサブディレクトリとマスタであるキャッシュサーバ106、108、110が含まれる拠点との対応関係を格納する。マスタ管理表315は、図7を用いて後述する。
なお、マスタ管理表315は、二次記憶部320に格納され、必要な場合に主記憶部310に読み出されるようにしてもよい。また、マスタ管理表315のデータ量が増加した場合に、主記憶部310から二次記憶部320に退避されるようにしてもよい。
二次記憶部320は、主記憶部310に読み出されるプログラム、および各種データを格納する。二次記憶部320は、例えば、HDD等が考えられる。
ネットワークインタフェース330は、他の装置と通信するためのインタフェースであり、本実施形態では広域網112と接続される。
なお、主記憶部310に格納されるキャッシュ管理サーバ制御部311、キュー管理部312、マスタ管理表制御UI部313およびマスタ管理表制御部314は、ハードウェアによって実現されてもよい。
図4は、本発明の実施形態のキャッシュサーバ108の構成例を説明するブロック図である。
キャッシュサーバ108は、CPU400、主記憶部410、二次記憶部420およびネットワークインタフェース430を備える。CPU400、主記憶部410、二次記憶部420およびネットワークインタフェース430は、内部バス等によって互いに接続される。
CPU400は、主記憶部410に格納される各種プログラムを読み出し、読み出されたプログラムを実行する。
主記憶部410は、CPU400によって実行されるプログラムおよび当該プログラムの実行に必要となる情報を格納する。主記憶部410は、例えば、メモリ等が考えられる。
主記憶部410は、キャッシュサーバ制御部411、ロック管理部412、キャッシュ保持部413、アクセス履歴保持部414、キュー管理部415、ロック管理表416および受付停止管理表417を格納する。
キャッシュサーバ制御部411は、キャッシュサーバ108全体を制御する。キャッシュサーバ制御部411は、ファイルのメタデータ参照機能、ファイルのロック取得機能、ファイルオープン機能、ファイルの実データ更新機能、ファイルクローズ機能およびファイルのロック解放機能を備える。なお、各機能によって実現される処理の詳細については、図15〜21を用いて後述する。
さらに、キャッシュサーバ制御部411は、マスタを変更する処理を実行するためのマスタ変更機能を備える。
ロック管理部412はファイルサーバ105のロック管理部212と同一の機能を備える。キャッシュ保持部413は、ファイルの実データおよびメタデータを格納する。アクセス履歴保持部414は、ファイルのアクセス履歴を格納する。
キュー管理部415は、キャッシュ管理サーバ107のキュー管理部312と同一の機能を備え、さらに、ロックの状態をロック管理表416に書き出す機能と、任意のファイルのロックを無効化する機能とを備える。
ロックの状態をロック管理表416に書き出す機能とは、ロックが取得された場合、ロック管理表416に当該ロックに関する情報を追加し、また、ロックが解放された場合、ロック管理表416から当該ロックに関する情報を削除する機能である。
ロックの無効化機能とは、ロック管理表416には手を加える事なく、ロック管理部412の内部状態から任意のファイルに関する行を削除する機能である。
ロック管理表416は、マスタであるキャッシュサーバ108が管理するファイルのうち、ロックが取得されたファイルに関する情報とを格納する。なお、ロック管理表416は図5を用いて後述する。
受付停止管理表417は、マスタであるキャッシュサーバを変更する場合に、当該マスタであるキャッシュサーバが管理するサブディレクトリに対するアクセスに関する情報を格納する。なお、受付停止管理表417は図6を用いて後述する。
二次記憶部420は、主記憶部410に読み出されるプログラム、および各種データを格納する。二次記憶部420は、例えば、HDD等が考えられる。
ネットワークインタフェース430は、他の装置と通信するためのインタフェースであり、本実施形態では広域網112と接続される。
キャッシュサーバ106およびキャッシュサーバ110は、キャッシュサーバ108と同一の構成であるため説明を省略する。
図5は、本発明の実施形態のロック管理表416の一例を示す説明図である。
ロック管理表416は、ファイル名501、ユーザ名502及びロック情報503を含む。
ファイル名501は、ロックが取得されたファイルの名称である。ユーザ名502は、ファイル名501に対応するファイルのロックを取得したユーザを識別する情報である。例えば、ユーザ名502は、端末を操作するユーザ名が考えられる。
ロック情報503は、取得されたロックの識別情報である。ロックの識別情報は、例えば、ロックのシーケンス番号等が考えられる。
なお、ファイルサーバ105におけるロック管理表214は、各キャッシュサーバ106、108、110が備えるロック管理表416を全て足し合わせたものに相当する。
図6は、本発明の実施形態の受付停止管理表417の一例を示す説明図である。
受付停止管理表417は、サブディレクトリパス名601を含む。
サブディレクトリパス名601は、キャッシュサーバ106、108、110がマスタとして管理するサブディレクトリパスの名称である。サブディレクトリパス名601には、マスタ移動時にアクセスがあったファイルを格納するサブディレクトリパス名が格納される。
図7は、本発明の実施形態のマスタ管理表315の一例を示す説明図である。
マスタ管理表315は、サブディレクトリパス名701およびマスタ拠点名702を含む。
サブディレクトリパス名701は、キャッシュサーバ106、108、110がマスタとして管理するサブディレクトリパスの名称である。マスタ拠点名702は、サブディレクトリパス名701に格納されるサブディレクトリをマスタとして管理するキャッシュサーバが含まれる拠点を識別するための情報である。
以下の説明において、ファイルサーバ105によって用いるファイル共有プロトコルでは、端末が備えるファイルにアクセスするプログラムは以下の手順で動作する。
第1の手順では、端末が対象となるファイルのロックを取得する。第2の手順では、端末が当該ファイルをオープンする(開く)。第3の手順では、端末が当該ファイルを任意の回数だけ更新する。第4の手順では、端末が当該ファイルをクローズする(閉じる)。第5の手順では、端末が当該ファイルのロックを解放する。
ファイル共有プロトコルによっては、ファイルオープン命令と同時にファイルがロックされたり、ファイルクローズ命令と同時にファイルのロックが解放されたりといったバリエーションがある。しかし、前述した方法は、第1の手順と第2の手順とを同時に実行し、第4の手順と第5の手順とを同時に実行する等、前述した手順の簡単な組み合わせによって実現可能である。
なお、本実施形態では、第1の手順において取得されるロックは排他ロックとする。すなわち、あるユーザが排他ロックを取得すると、他のユーザは排他ロックを取得できないといった、排他的なアクセス権について説明する。したがって、ユーザは排他ロックが取得できない場合、ファイルをオープンすることもできなくなるため、結果としてファイルの参照ができない。
なお、一般にロックには、共有ロックまたは排他ロックなど複数の種類がある。例えば、あるユーザが共有ロックを取得したファイルは別のユーザがさらに共有ロックをかけることができ、あるユーザが排他ロックを取得したファイルは別のユーザが共有ロックを取得できないというように、ロックの組み合わせの方法もある。
ロックの管理方法、ロック情報をユーザに渡す方法およびロックの組み合わせの管理方法は公知技術であるため説明を省略する。
また、本発明は、どのようなロックの管理方法、ロック情報をユーザに渡す方法およびロックの組み合わせの管理方法を用いても実施可能である。
また、本実施形態ではファイルサーバ105のロック情報は、ロック管理部212が一元的に管理する。
また、ファイルにアクセスする一般的なプログラムを実行する端末は、ファイルサイズなどファイルにアクセスするプログラムの動作に必要な情報を取得するため、ファイルのロックを取得する前にファイルのメタデータを参照する。
次に、ファイルサーバ105について説明する。
図8は、本発明の実施形態のファイルサーバ105が起動後に実行する処理を説明するフローチャートである。
ファイルサーバ105は、起動後処理を開始し(S801)、ロック管理部212を初期化する(S802)。
次に、ファイルサーバ105は、キャッシュサーバ106、108、110から命令を受信し(S803)、受信した命令を実行する(S804)。すなわち、取り出された命令に対応する処理が実行される。ファイルサーバ105は、S803〜S804の処理を繰り返し実行する。
以下、ファイルサーバ105のファイルサーバ制御部213が備える各機能について、図9〜図14を用いて説明する。
図9は、本発明の実施形態のファイルサーバ制御部213が備えるファイルのメタデータ参照機能によって実行される処理を説明するフローチャートである。
図9に示す処理は、S803において受信した命令がメタデータ参照処理の実行命令である場合に実行される処理である。
S803おいて受信した命令には、メタデータが参照されるファイルのフルパス、当該メタデータを参照するユーザのユーザ名およびロックのシーケンス番号が含まれる。
以下の説明において、メタデータを参照するファイルをファイルXとし、また、メタデータを参照するユーザのユーザ名をユーザYとする。
S803おいて受信した命令に含まれるファイルXのフルパスとユーザYとを取得したファイルサーバ制御部213は、メタデータ参照処理を開始し(S901)、ファイル保持部211からファイルXのメタデータを取得する(S902)。なお、メタデータには、ファイルのアクセス権限(パーミション)を示す情報が含まれる。
ファイルサーバ制御部213は、ユーザYがファイルXのアクセス権を持っているか否かを判定する(S903)。具体的には、ファイルサーバ制御部213は、取得されたメタデータに含まれるファイルのアクセス権限を参照して、ユーザYが当該ファイルのアクセス権限を持っているか否かを判定する。
ユーザYがファイルXのアクセス権を持っていると判定された場合、ファイルサーバ制御部213は、S803において受信した命令を送信したキャッシュサーバ106、108、110にファイルXのメタデータを送信して処理を終了する(S904)。
ユーザYがファイルXのアクセス権を持っていないと判定された場合、ファイルサーバ制御部213は、ユーザYにエラーを送信して、処理を終了する(S905)。
なお、ファイルサーバ105がユーザのアクセス権の認証を実行するバリエーションとしては、S803において受信した命令には、さらに、認証鍵またはパスワード等の認証に必要な情報が含まれていてもよい。また、ファイルサーバ105に対する認証処理は初回アクセス時のみに実行するものであってもよい。この場合、初回アクセス時に認証専用命令を用いた認証が実行されるため、S803において受信した命令にはユーザ名が含まれなくともよい。以下で説明する処理では、ユーザのアクセス権の認証処理では、いずれのバリエーションを用いてもよい。
図10は、本発明の実施形態のファイルサーバ制御部213が備えるファイルのロック取得機能によって実行される処理を説明するフローチャートである。
図10に示す処理は、S803において受信した命令がロック取得処理の実行命令である場合に実行される処理である。
S803おいて受信した命令には、ロックが取得されるファイルのフルパス、および当該ファイルのロックを取得するユーザのユーザ名が含まれる。
以下の説明において、ロックが取得されるファイルをファイルXとし、当該ファイルXのロックを取得するユーザのユーザ名をユーザYとする。
S803において受信した命令に含まれるファイルXのフルパスとユーザYとを取得したファイルサーバ制御部213は、ロック取得処理を開始し(S1001)、ファイル保持部211からファイルXのメタデータを取得する(S1002)。
ファイルサーバ制御部213は、ユーザYがファイルXのアクセス権を持っているか否かを判定する(S1003)。当該処理はS903と同一の処理である。
ユーザYがファイルXのアクセス権を持っていないと判定された場合、ファイルサーバ制御部213は、ユーザYにエラーを返信して、処理を終了する(S1008)。
ユーザYがファイルXのアクセス権を持っていると判定された場合、ファイルサーバ制御部213は、ファイルXのロックを取得する(S1004)。具体的には、ファイルサーバ制御部213がロック管理部212にロックの取得を指示し、当該指示を受けたロック管理部212が、ロック取得機能を用いてロックの取得を実行する。ここでは、ロック管理部212は、ロック管理表214を参照し、他のユーザがファイルXのロックを取得していない場合はユーザYの行をロック管理表214に追加し、ロック取得成功とする。一方、すでにファイルXのロックが他のユーザによって取得されていた場合は、ロック管理部212はユーザYの行をロック管理表214に追加せず、ロック取得失敗とする。
ファイルサーバ制御部213は、ロックを取得できたか否かを判定する(S1005)。すなわち、他のユーザがファイルXのロックをすでに取得しているか否かが判定される。
具体的には、手順S1004実行後に、ファイルサーバ制御部213はロック管理部212からロックの取得可否を受け取る。
ロックを取得できないと判定された場合、ファイルサーバ制御部213は、ユーザYにエラーを送信して処理を終了する(S1008)。
ロックを取得できたと判定された場合、ファイルサーバ制御部213は、S1002において取得されたファイルXのメタデータを更新し(S1006)、ロック情報をユーザYに送信して処理を終了する(S1007)。
ここで、送信されるロック情報は、ファイルサーバ105とユーザYとの間でロックが取れたことを確認するための鍵のペアであり、当該鍵としては通し番号または乱数値などが用いられる。
本実施形態では、ファイルXのメタデータを更新では、最終アクセス日時が更新される。以下、本実施形態では断りのない限り、メタデータの更新は、最終アクセス日時の更新を意味するものとする。なお、ファイルXのメタデータを更新処理のバリエーションとして、最終アクセス日時と最終アクセスユーザとを更新してもよいし、最終アクセス日時の粒度が最終更新日時と最終参照日時に分かれていてもよい。本発明はいずれのバリエーションを用いてもよい。
図11は、本発明の実施形態のファイルサーバ制御部213が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。
図11に示す処理は、S803において受信した命令がファイルオープン処理である場合に実行される処理である。
S803おいて受信した命令には、オープンされるファイルのフルパス、当該ファイルをオープンするユーザを識別する情報、および当該ユーザに付与されたロック情報が含まれる。
以下の説明において、オープンされるファイルをファイルXとし、当該ファイルXをオープンするユーザのユーザ名をユーザYとする。
S803において受信した命令に含まれるファイルXのフルパス、ユーザYおよびロック情報を取得したファイルサーバ制御部213は、ファイルオープン処理を開始し(S1101)、取得されたロック情報が適切であるか否かを判定する(S1102)。
具体的には、ファイルサーバ制御部213が、ロック管理表214を参照して、取得されたロック情報がファイルXに対応するロック情報503と同一であるか否かを判定する。
取得されたロック情報が適切でないと判定された場合、ファイルサーバ制御部213は、ユーザYにエラーを送信して処理を終了する(S1106)。
取得されたロック情報が適切であると判定された場合、ファイルサーバ制御部213は、ファイル保持部211からファイルXの実データを取得し(S1103)、さらに、ファイルXのメタデータを更新する(S1104)。
ファイルサーバ制御部213は、ユーザYに取得されたファイルXの実データを送信して処理を終了する(S1105)。
図12は、本発明の実施形態のファイルサーバ制御部213が備えるファイル更新機能によって実行される処理を説明するフローチャートである。
図12に示す処理は、S803において受信した命令がファイル更新処理の実行命令である場合に実行される処理である。
S803において受信した命令には、更新されるファイルのフルパス、当該ファイルを更新するユーザのユーザ名、およびロック情報が含まれる。
以下の説明において、更新されるファイルをファイルXとし、当該ファイルXを更新するユーザのユーザ名をユーザYとする。
S803において受信した命令に含まれるファイルXのフルパス、ユーザYおよびロック情報を取得したファイルサーバ制御部213は、ファイル更新処理を開始し(S1201)、取得されたロック情報が適切であるか否かを判定する(S1202)。当該判定は、S1102と同一の処理である。
取得されたロック情報が適切でないと判定された場合、ファイルサーバ制御部213は、ユーザYにエラーを送信して処理を終了する(S1206)。
取得されたロック情報が適切であると判定された場合、ファイルサーバ制御部213は、ファイルXの実データを更新し(S1203)、さらに、ファイルXのメタデータを更新する(S1204)。
ファイルサーバ制御部213は、更新処理が成功したことを示す更新成功をユーザYに送信して処理を終了する(S1205)。
図13は、本発明の実施形態のファイルサーバ制御部213が備えるファイルクローズ機能によって実行される処理を説明するフローチャートである。
図13に示す処理は、S803において受信した命令がファイルクローズ処理の実行命令である場合に実行される処理である。
S803において受信した命令には、クローズされるファイルのフルパス、当該ファイルをクローズするユーザのユーザ名、および当該ユーザに付与されたロック情報が含まれる。
以下の説明において、更新されるファイルをファイルX、またファイルXを更新するユーザのユーザ名をユーザYとする。
S803において受信した命令に含まれるファイルXのフルパス、ユーザYおよびロック情報を取得したファイルサーバ制御部213は、ファイルクローズ処理を開始し(S1301)、取得されたロック情報が適切であるか否かを判定する(S1302)。当該判定は、S1102と同一の処理である。
取得されたロック情報が適切であると判定された場合、ファイルサーバ制御部213は、ファイルXのメタデータを更新し(S1303)、ファイルクローズ処理が成功したことを示すクローズ成功をユーザYに送信して処理を終了する(S1304)。
取得されたロック情報が適切でないと判定された場合、ファイルサーバ制御部213は、ユーザYにエラーを送信して処理を終了する(S1305)。
図14は、本発明の実施形態のファイルサーバ制御部213が備えるファイルのロック解放機能によって実行される処理を説明するフローチャートである。
図14に示す処理は、S803において受信した命令がロック解放処理である場合に実行される処理である。
S803において受信した命令には、クローズされるファイルのフルパス、当該ファイルをクローズするユーザのユーザ名、および当該ユーザに付与されたロック情報が含まれる。
以下の説明において、更新されるファイルをファイルX、またファイルXを更新するユーザのユーザ名をユーザYとする。
S803において受信した命令に含まれるファイルXのフルパス、ユーザYおよびロック情報を取得したファイルサーバ制御部213は、ロック解放処理を開始し(S1401)、取得されたロック情報が適切であるか否かを判定する(S1402)。当該判定は、S1102と同一の処理である。
取得されたロック情報が適切でないと判定された場合、ファイルサーバ制御部213は、ユーザYにエラーを送信して処理を終了する(S1406)。
取得されたロック情報が適切であると判定された場合、ファイルサーバ制御部213は、ファイルXのメタデータを更新し(S1403)、ファイルXのロックを解放する(S1404)。
ファイルサーバ制御部213は、ロック解放処理が成功したことを示すロック解放成功情報をユーザに送信して処理を終了する(S1405)。
次に、キャッシュサーバ108について説明する。なお、キャッシュサーバ106、110は、キャッシュサーバ108と同一であるため説明を省略する。
図15は、本発明の実施形態のキャッシュサーバ108が起動時に実行する処理を説明するフローチャートである。
キャッシュサーバ108は、起動後処理を開始し(S1501)、アクセス履歴保持部414、キュー管理部415、ロック管理表416および受付停止管理表417を初期化する(S1502)。
初期化処理では、キャッシュサーバ108は、キュー管理部415に命令キューと受付停止キューとの作成を指示する。
命令キューは、端末109、111または他のキャッシュサーバから命令を受け付けるためのキューである。停止キューは、端末109、111または他のキャッシュサーバからアクセスの受付が停止されているサブディレクトリパスへ送信された命令を一時的に保持するためのキューである。
キャッシュサーバ108は、命令キューから命令を取り出し(S1503)、取り出された命令が受付停止中のサブディレクトリパスへのアクセスであるか否かを判定する(S1504)。
具体的には、キャッシュサーバ108は、受付停止管理表417を参照して、取り出された命令によってアクセスされるファイルのパスがサブディレクトリパス名601に格納されたサブディレクトリパスに含まれるか否かを判定する。当該ファイルのパスがサブディレクトリパス名601に格納されたサブディレクトリパスに含まれる場合には、取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定される。
例えば、受付停止管理表417のサブディレクトリパス名601に「/a/b」が格納され、取り出された命令によってアクセスされるファイルのフルパスが「/a/b/c.txt」である場合には、当該命令は受付停止中のサブディレクトリパスへのアクセスであると判定される。
取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定された場合は、キャッシュサーバ108は、当該命令を受付停止キューの末尾に追加し(S1505)、S1503に戻りS1503〜S1506の処理を繰り返し実行する。
取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定された場合は、キャッシュサーバ108は、新しくスレッドを生成して当該命令を実行し(S1506)、S1503に戻りS1503〜S1506の処理を繰り返し実行する。すなわち、取り出された命令に対応する処理が実行される。
なお、取り出された命令を実行する場合に、新たにスレッドを生成する以外に、予め複数のスレッドを生成しておき、生成されたスレッドを使いまわすスレッドプールが用いられてもよい。これによって、取り出された命令の実行時に毎回新しいスレッドを生成するコストが高い場合にコストを削減できる。
次に、キャッシュサーバ108のキャッシュサーバ制御部411が備える各機能について、図16〜図21を用いて説明する。
図16は、本発明の実施形態のキャッシュサーバ制御部411が備えるファイルのメタデータ参照機能によって実行される処理を説明するフローチャートである。
図16に示す処理は、S1503において取り出された命令がメタデータ参照処理の実行命令である場合に実行される処理である。
S1503において取り出された命令には、メタデータが参照されるファイルのフルパス、当該メタデータを参照するユーザのユーザ名および当該ユーザが位置する拠点の拠点名が含まれる。
以下の説明において、メタデータが参照されるファイルをファイルXとし、当該ファイルXを参照するユーザのユーザ名をユーザYとし、当該ユーザYが位置する拠点の拠点名を拠点Zとする。
S1503において取り出された命令に含まれるファイルXのフルパス、ユーザYおよび拠点Zを取得したキャッシュサーバ制御部411は、メタデータ参照処理を開始する(S1601)。なお、S1503において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ108自身が位置する拠点の拠点名として処理が実行される。
キャッシュサーバ制御部411は、キャッシュ管理サーバ107からマスタ管理表315を取得する(S1602)。
具体的には、キャッシュサーバ制御部411は、キャッシュ管理サーバ107のマスタ管理表制御部314にマスタ管理表315の送信を要求し、当該要求を受けたマスタ管理表制御部314がマスタ管理表送信機能用いて送信したマスタ管理表315を受信する。
マスタ管理表315を取得する理由は、本実施形態では、頻繁にマスタが変更される場合を想定しているため、処理の開始時にマスタを確認する必要があるためである。
なお、マスタ管理表315の管理方法としては、キャッシュサーバ制御部411は、受信したマスタ管理表315を一時的の保持し、キャッシュ管理サーバ107からマスタ管理表315が更新された旨の通知を受けたときにマスタ管理表315のキャッシュを無効化する方法が考えられる。
この場合、キャッシュサーバ制御部411は、マスタ管理表315が必要となったときに再度キャッシュ管理サーバ107からマスタ管理表315を取得してもよいし、マスタ管理表315が更新された旨の通知を受けた直後、キャッシュ管理サーバ107からマスタ管理表315を取得してもよい。
キャッシュサーバ制御部411は、取得されたマスタ管理表315を参照して、ファイルXのマスタが自拠点であるか否かを判定する(S1603)。
具体的には、以下のような判定処理が実行される。
まず、キャッシュサーバ制御部411は、ファイルXのフルパスがサブディレクトリパス名701に格納されるサブディレクトリに含まれるか否かを判定する。
次に、ファイルXのフルパスがサブディレクトリパス名701に格納されるサブディレクトリに含まれると判定された場合、キャッシュサーバ制御部411は、マスタ管理表315を参照して、当該サブディレクトリに対応する行のマスタ拠点名702が自拠点の拠点名であるか否かを判定する。
ファイルXのマスタが自拠点であると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413にファイルXのメタデータが格納されるか否かを判定する(S1604)。
キャッシュ保持部413にファイルXのメタデータが格納されないと判定された場合、キャッシュサーバ制御部411は、ファイルサーバ105からファイルXのメタデータを取得し(S1609)、取得されたファイルXのメタデータをキャッシュ保持部413に格納して(S1610)、S1605に進む。
キャッシュ保持部413にファイルXのメタデータが格納されると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413からファイルXのメタデータを取得する(S1605)。
キャッシュサーバ制御部411は、ユーザYがファイルXのアクセス権を持っているか否かを判定する(S1606)。
ユーザYがファイルXのアクセス権を持っていないと判定された場合、キャッシュサーバ制御部411は、ユーザYにエラーを送信し、処理を終了する(S1613)。
ユーザYがファイルXのアクセス権を持っていると判定された場合、キャッシュサーバ制御部411は、拠点ZからファイルXのメタデータが参照されたことを示すアクセス履歴を記録する(S1607)。具体的には、キャッシュサーバ制御部411は、アクセス履歴保持部414にアクセス履歴を格納する。
キャッシュサーバ制御部411は、ファイルXのメタデータをファイルサーバ105に送信し、処理を終了する(S1608)。
S1603において、ファイルXのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部411は、マスタ管理表315を参照して、ファイルXのマスタである他のキャッシュサーバにメタデータ参照処理の実行を要求する(S1611)。
具体的には、キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバに、ファイルXのフルパス、ユーザYおよび拠点Zが含まれるメタデータ参照処理の実行要求を送信する。当該実行要求を受信した、ファイルXのマスタである他のキャッシュサーバは、S1601〜S1613の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部411に送信する。
キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する(S1612)。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部411は、S1608に進む。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部411は、S1613に進む。
図17は、本発明の実施形態のキャッシュサーバ制御部411が備えるファイルのロック取得機能によって実行される処理を説明するフローチャートである。
図17に示す処理は、S1503において取り出された命令がロック取得処理の実行命令である場合に実行される処理である。
S1503において取り出された命令には、メタデータが参照されるファイルのフルパス、当該メタデータを参照するユーザのユーザ名および当該ユーザが位置する拠点の拠点名が含まれる。
以下の説明において、ロックが取得されるファイルをファイルXとし、当該ファイルXのロックを取得するユーザのユーザ名をユーザYとし、当該ユーザYが位置する拠点の拠点名を拠点Zとする。
S1503において取り出された命令に含まれるファイルXのフルパス、ユーザYおよび拠点Zを取得したキャッシュサーバ制御部411は、ロック取得処理を開始する(S1701)。なお、S1503において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ108自身が位置する拠点の拠点名として処理が実行される。
キャッシュサーバ制御部411は、キャッシュ管理サーバ107からマスタ管理表315を取得する(S1702)。なお、当該処理はS1602と同一である。
キャッシュサーバ制御部411は、取得されたマスタ管理表315を参照して、ファイルXのマスタが自拠点であるか否かを判定する(S1703)。なお、当該処理は、S1603と同一の処理である。
ファイルXのマスタが自拠点であると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413にファイルXのメタデータが格納されるか否かを判定する(S1704)。なお、当該処理は、S1604と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されないと判定された場合、キャッシュサーバ制御部411は、ファイルサーバ105からファイルXのメタデータを取得し(S1712)、取得されたファイルXのメタデータをキャッシュ保持部413に格納して(S1713)、S1706に進む。なお、S1712およびS1713の処理は、S1609およびS1610と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413からファイルXのメタデータを取得し(S1705)、ユーザYがファイルXのアクセス権を持っているか否かを判定する(S1706)。S1705およびS1706の処理は、S1605およびS1606と同一の処理である。
ユーザYがファイルXのアクセス権を持っていないと判定された場合、キャッシュサーバ制御部411は、ユーザYにエラーを送信して処理を終了する(S1716)。当該処理は、S1613と同一の処理である。
ユーザYがファイルXのアクセス権を持っていると判定された場合、キャッシュサーバ制御部411は、ファイルXのロックを取得する(S1707)。具体的には、キャッシュサーバ制御部411がロック管理部412にロック取得を指示する。
ロック取得の指示を受けたロック管理部412は、ロック取得機能を用いてファイルXのロックを取得する。具体的には、ロック管理部412は、ロック管理表416を参照し、他のユーザがファイルXのロックを取得していない場合はユーザYの行をロック管理表416に追加し、ロック取得成功とする。一方、すでにファイルXのロックが他のユーザによって取得されていた場合は、ロック管理部412はユーザYの行をロック管理表416に追加せず、ロック取得失敗とする。
キャッシュサーバ制御部411は、ロックを取得できたか否かを判定する(S1708)。すなわち、他のユーザがファイルXのロックをすでに取得しているか否かが判定される。
具体的には、手順S1707実行後に、ファイルサーバ制御部213はロック管理部212からロックの取得可否を受け取る。
ロックを取得できないと判定された場合、キャッシュサーバ制御部411は、ユーザYにエラーを送信し、処理を終了する(S1716)。
ロックが取得できたと判定された場合、キャッシュサーバ制御部411は、ファイルXのメタデータを更新する(S1709)。すなわち、最終アクセス日時が更新される。
キャッシュサーバ制御部411は、拠点ZからファイルXのロックが取得されたことを示すアクセス履歴を記録する(S1710)。なお、当該処理は、S1607と同一の処理である。
キャッシュサーバ制御部411は、ファイルXのメタデータをファイルサーバ105に送信し、処理を終了する(S1711)。
S1703においてファイルXのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部411は、マスタ管理表315を参照して、ファイルXのマスタである他のキャッシュサーバにロック取得処理の実行を要求する(S1714)。
具体的には、キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバに、ファイルXのフルパス、ユーザYおよび拠点Zが含まれるロック取得処理の実行要求を送信する。当該実行要求を受信した、ファイルXのマスタである他のキャッシュサーバは、S1701〜S1716の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部411に送信する。
キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する(S1715)。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部411は、S1711に進む。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部411は、S1716に進む。
なお、後述するマスタ場所更新処理のS2014を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュサーバに格納されるメタデータをファイルサーバ105に送信する方法がある。
図18Aおよび図18Bは、本発明の実施形態のキャッシュサーバ制御部411が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。
図18Aおよび図18Bに示す処理は、S1503において取り出された命令がファイルオープン処理の実行命令である場合に実行される処理である。
S1503において取り出された命令には、オープンされるファイルのフルパス、当該ファイルをオープンするユーザを識別する情報、当該ユーザが位置する拠点に関する情報およびロック情報が含まれる。
以下の説明において、ロックが取得されるファイルをファイルXとし、当該ファイルXのロックを取得するユーザのユーザ名をユーザYとし、当該ユーザYが位置する拠点の拠点名を拠点Zとする。
S1503において取り出された命令に含まれるファイルXのフルパス、ユーザY、拠点Zおよびロック情報を取得したキャッシュサーバ制御部411は、ファイルオープン処理を開始する(S1801)。なお、S1503において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ108自身が位置する拠点の拠点名として処理が実行される。
キャッシュサーバ制御部411は、キャッシュ管理サーバ107からマスタ管理表315を取得する(S1802)。なお、当該処理はS1602と同一である。
キャッシュサーバ制御部411は、取得されたマスタ管理表315を参照して、ファイルXのマスタが自拠点であるか否かを判定する(S1803)。なお、当該処理は、S1603と同一の処理である。
ファイルXのマスタが自拠点であると判定された場合、キャッシュサーバ制御部411は、取得されたロック情報が適切であるか否かを判定する(S1804)。
具体的には、取得されたファイルXのフルパスを用いて、ロック管理表416を参照し、ファイルXのフルパスに対応する行のロック情報503と取得されたロック情報とが一致するか否かを判定する。
取得されたロック情報が適切でないと判定された場合、キャッシュサーバ制御部411は、ユーザYにエラーを送信して処理を終了する(S1817)。当該処理は、S1613と同一の処理である。
取得されたロック情報が適切であると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413にファイルXの実データが格納されるか否かを判定する(S1805)。
キャッシュ保持部413にファイルXの実データが格納されないと判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413にファイルXのメタデータが格納されるか否かを判定する(S1810)。なお、当該処理は、S1604と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されないと判定された場合、キャッシュサーバ制御部411は、ファイルサーバ105からファイルXのメタデータを取得し(S1813)、取得されたファイルXのメタデータをキャッシュ保持部413に格納して(S1814)、S1811に進む。なお、S1813およびS1814の処理は、S1609およびS1610と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されると判定された場合、キャッシュサーバ制御部411は、ファイルサーバ105からファイルXの実データを取得し(S1811)、取得されたファイルXのメタデータをキャッシュ保持部413に格納して(S1812)、S1806に進む。
S1805において、キャッシュ保持部413にファイルXの実データが格納されると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413からファイルXの実データを取得する(S1806)。
キャッシュサーバ制御部411は、ファイルXのメタデータを更新する(S1807)。当該処理は、S1709と同一の処理である。
キャッシュサーバ制御部411は、拠点ZからファイルXがオープンされたことを示すアクセス履歴を記録する(S1808)。なお、当該処理は、S1607と同一の処理である。
キャッシュサーバ制御部411は、ファイルXの実データをファイルサーバ105に送信し、処理を終了する(S1809)。
S1803において、ファイルXのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部411は、マスタ管理表315を参照して、ファイルXのマスタである他のキャッシュサーバにファイルオープン処理の実行を要求する(S1815)。
具体的には、キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバに、ファイルXのフルパス、ユーザY、拠点Zおよびロック情報が含まれるロック取得処理の実行要求を送信する。当該実行要求を受信した、ファイルXのマスタである他のキャッシュサーバは、S1801〜S1817の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部411に送信する。
キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する(S1816)。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部411は、S1809に進む。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部411は、S1817に進む。
なお、後述するマスタ場所更新処理のS2014を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュサーバに格納されるメタデータをファイルサーバ105に送信する方法がある。
図19Aおよび図19Bは、本発明の実施形態のキャッシュサーバ制御部411が備えるファイルの実データ更新機能によって実行される処理を説明するフローチャートである。
図19Aおよび図19Bに示す処理は、S1503において取り出された命令が実データ更新処理の実行命令である場合に実行される処理である。
S1503において取り出された命令には、オープンされるファイルのフルパス、当該ファイルをオープンするユーザのユーザ名、当該ユーザが位置する拠点の拠点名およびロック情報が含まれる。
以下の説明において、ロックが取得されるファイルをファイルXとし、当該ファイルXのロックを取得するユーザのユーザ名をユーザYとし、当該ユーザYが位置する拠点の拠点名を拠点Zとする。
S1503において取り出された命令に含まれるファイルXのフルパス、ユーザY、拠点Zおよびロック情報を取得したキャッシュサーバ制御部411は、実データ更新処理を開始する(S1901)。なお、S1503において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ108自身が位置する拠点の拠点名として処理が実行される。
キャッシュサーバ制御部411は、キャッシュ管理サーバ107からマスタ管理表315を取得する(S1902)。なお、当該処理はS1602と同一である。
キャッシュサーバ制御部411は、取得されたマスタ管理表315を参照して、ファイルXのマスタが自拠点であるか否かを判定する(S1903)。なお、当該処理は、S1603と同一の処理である。
ファイルXのマスタが自拠点であると判定された場合、キャッシュサーバ制御部411は、取得されたロック情報が適切であるか否かを判定する(S1904)。当該処理は、S1804と同一の処理である。
取得されたロック情報が適切でないと判定された場合、キャッシュサーバ制御部411は、ユーザYにエラーを送信し、処理を終了する(S1917)。当該処理は、S1613と同一の処理である。
取得されたロック情報が適切であると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413にファイルXの実データが格納されるか否かを判定する(S1905)。
キャッシュ保持部413にファイルXの実データが格納されないと判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413にファイルXのメタデータが格納されるか否かを判定する(S1910)。なお、当該処理は、S1604と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されないと判定された場合、キャッシュサーバ制御部411は、ファイルサーバ105からファイルXのメタデータを取得し(S1913)、取得されたファイルXのメタデータをキャッシュ保持部413に格納して(S1914)、S1911に進む。なお、S1913およびS1914の処理は、S1609およびS1610と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されると判定された場合、キャッシュサーバ制御部411は、ファイルサーバ105からファイルXの実データを取得し(S1911)、取得されたファイルXのメタデータをキャッシュ保持部413に格納して(S1912)、S1906に進む。なお、S1911およびS1912の処理は、S1811およびS1812と同一の処理である。
S1905において、キャッシュ保持部413にファイルXの実データが格納されると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413に格納されたファイルXの実データを更新する(S1906)。
キャッシュサーバ制御部411は、ファイルXのメタデータを更新する(S1907)。当該処理は、S1709と同一の処理である。
キャッシュサーバ制御部411は、拠点ZからファイルXが更新されたことを示すアクセス履歴を記録する(S1908)。なお、当該処理は、S1607と同一の処理である。
キャッシュサーバ制御部411は、ファイルXの実データをファイルサーバ105に送信し、処理を終了する(S1909)。
S1903において、ファイルXのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部411は、マスタ管理表315を参照して、ファイルXのマスタである他のキャッシュサーバにファイルオープン処理の実行を要求する(S1915)。
具体的には、キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバに、ファイルXのフルパス、ユーザY、拠点Zおよびロック情報が含まれる実データ更新処理の実行要求を送信する。当該実行要求を受信した、ファイルXのマスタである他のキャッシュサーバは、S1901〜S1917の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部411に送信する。
キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する(S1916)。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部411は、S1909に進む。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部411は、S1917に進む。
なお、後述するマスタ場所更新処理のS2014を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュサーバに格納されるメタデータをファイルサーバ105に送信する方法がある。
図20は、本発明の実施形態のキャッシュサーバ制御部411が備えるファイルのクローズ機能によって実行される処理を説明するフローチャートである。
図20に示す処理は、S1503において取り出された命令がファイルクローズ処理の実行命令である場合に実行される処理である。
S1503において取り出された命令には、クローズされるファイルのフルパス、ファイルをクローズするユーザのユーザ名、当該ユーザが位置する拠点の拠点名およびロック情報が含まれる。
以下の説明において、クローズされるファイルをファイルXとし、当該ファイルXをクローズするユーザのユーザ名をユーザYとし、当該ユーザYが位置する拠点の拠点名を拠点Zとする。
S1503において取り出された命令に含まれるファイルXのフルパス、ユーザY、拠点Zおよびロック情報を取得したキャッシュサーバ制御部411は、ファイルクローズ処理を開始する(S2001)。なお、S1503において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ108自身が位置する拠点の拠点名として処理が実行される。
キャッシュサーバ制御部411は、キャッシュ管理サーバ107からマスタ管理表315を取得する(S2002)。なお、当該処理はS1602と同一である。
キャッシュサーバ制御部411は、取得されたマスタ管理表315を参照して、ファイルXのマスタが自拠点であるか否かを判定する(S2003)。なお、当該処理はS1603と同一の処理である。
ファイルXのマスタが自拠点であると判定された場合、キャッシュサーバ制御部411は、取得されたロック情報が適切であるか否かを判定する(S2004)。なお、当該処理はS1804と同一の処理である。
取得されたロック情報が適切でないと判定された場合、キャッシュサーバ制御部411は、ユーザYにエラーを送信して処理を終了する(S2013)。なお、当該処理はS1613と同一の処理である。
取得されたロック情報が適切であると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413にファイルXのメタデータが格納されるか否かを判定する(S2005)。なお、当該処理は、S1604と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されないと判定された場合、キャッシュサーバ制御部411は、ファイルサーバ105からファイルXのメタデータを取得し(S2009)、取得されたファイルXのメタデータをキャッシュ保持部413に格納して(S2010)、S2006に進む。なお、S2009およびS2010の処理は、S1609およびS1610と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されると判定された場合、キャッシュサーバ制御部411は、ファイルXのメタデータを更新する(S2006)。なお、当該処理はS1709と同一の処理である。
キャッシュサーバ制御部411は、拠点ZからファイルXがクローズされたことを示すアクセス履歴を記録する(S2007)。なお、当該処理は、S1607と同一の処理である。
キャッシュサーバ制御部411は、ファイルクローズ処理が完了したことを示すファイルクローズ完了をユーザに送信し、処理を終了する(S2008)。
S2003において、ファイルXのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部411は、マスタ管理表315を参照して、ファイルXのマスタである他のキャッシュサーバにファイルクローズ処理の実行を要求する(S2011)。
具体的には、キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバに、ファイルXのフルパス、ユーザY、拠点Zおよびロック情報が含まれるファイルクローズ処理の実行要求を送信する。当該実行要求を受信した、ファイルXのマスタである他のキャッシュサーバは、S2001〜S2013の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部411に送信する。
キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する(S2012)。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部411は、S2008に進む。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部411は、S2013に進む。
なお、後述するマスタ場所更新処理のS2014を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュサーバに格納されるメタデータをファイルサーバ105に送信する方法がある。
図21は、本発明の実施形態のキャッシュサーバ制御部411が備えるファイルのロック解放機能によって実行される処理を説明するフローチャートである。
図21に示す処理は、S1503において取り出された命令がロック解放処理の実行命令である場合に実行される処理である。
S1503において取り出された命令には、ロックが解放されるファイルのフルパス、ファイルのロックを解放するユーザのユーザ名、当該ユーザが位置する拠点の拠点名およびロック情報が含まれる。
以下の説明において、ロックが解放されるファイルをファイルXとし、当該ファイルXのロックを解放するユーザのユーザ名をユーザYとし、当該ユーザYが位置する拠点の拠点名を拠点Zとする。
S1503において取り出された命令に含まれるファイルXのフルパス、ユーザY、拠点Zおよびロック情報を取得したキャッシュサーバ制御部411は、ロック解放処理を開始する(S2101)。なお、S1503において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ108自身が位置する拠点の拠点名として処理が実行される。
キャッシュサーバ制御部411は、キャッシュ管理サーバ107からマスタ管理表315を取得する(S2102)。なお、当該処理はS1602と同一である。
キャッシュサーバ制御部411は、取得されたマスタ管理表315を参照して、ファイルXのマスタが自拠点であるか否かを判定する(S2103)。なお、当該処理はS1603と同一の処理である。
ファイルXのマスタが自拠点であると判定された場合、キャッシュサーバ制御部411は、取得されたロック情報が適切であるか否かを判定する(S2104)。なお、当該処理はS1804と同一の処理である。
取得されたロック情報が適切でないと判定された場合、キャッシュサーバ制御部411は、ユーザYにエラーを送信し、処理を終了する(S2114)。なお、当該処理はS1613と同一の処理である。
取得されたロック情報が適切であると判定された場合、キャッシュサーバ制御部411は、キャッシュ保持部413にファイルXのメタデータが格納されるか否かを判定する(S2105)。なお、当該処理は、S1604と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されないと判定された場合、キャッシュサーバ制御部411は、ファイルサーバ105からファイルXのメタデータを取得し(S2110)、取得されたファイルXのメタデータをキャッシュ保持部413に格納して(S2111)、S2106に進む。なお、S2110およびS2111の処理は、S1609およびS1610と同一の処理である。
キャッシュ保持部413にファイルXのメタデータが格納されると判定された場合、キャッシュサーバ制御部411は、ファイルXのロックを解放する(S2106)。具体的には、キャッシュサーバ制御部411は、ロック管理表416からファイルXに対応する行を削除する。
キャッシュサーバ制御部411は、ファイルXのメタデータを更新する(S2107)。なお、当該処理はS1709と同一の処理である。
キャッシュサーバ制御部411は、拠点ZからファイルXのロックが解放されたことを示すアクセス履歴を記録する(S2108)。なお、当該処理は、S1607と同一の処理である。
キャッシュサーバ制御部411は、ロック解放処理が完了したことを示すロック完了をユーザに送信し、処理を終了する(S2109)。
S2103において、ファイルXのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部411は、マスタ管理表315を参照して、ファイルXのマスタである他のキャッシュサーバにロック解放処理の実行を要求する(S2112)。
具体的には、キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバに、ファイルXのフルパス、ユーザY、拠点Zおよびロック情報が含まれるロック解放処理の実行要求を送信する。当該実行要求を受信した、ファイルXのマスタである他のキャッシュサーバは、S2101〜S2114の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部411に送信する。
キャッシュサーバ制御部411は、ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する(S2113)。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部411は、S2109に進む。
ファイルXのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部411は、S2114に進む。
なお、後述するマスタ場所更新処理のS2014を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュされたメタデータをファイルサーバ(102)に反映させる方法がある。
次に、キャッシュ管理サーバ107について説明する。
図22は、本発明の実施形態のキャッシュ管理サーバ107が起動後に実行する処理を説明するフローチャートである。
キャッシュ管理サーバ107は、起動後、処理を開始し(S2201)、キュー管理部312、マスタ管理表制御UI部313およびマスタ管理表315を初期化する(S2202)。
初期化処理では、キャッシュ管理サーバ107は、キュー管理部312に管理キューと制御キューとの作成を指示する。
管理キューは、マスタ管理表制御UI部313から管理命令を受け付けるためのキューである。なお、管理命令とはファイルの実データおよびメタデータの取得や更新ではない命令であり、本実施形態ではマスタ場所更新処理と偏り集計処理を指示する命令である。制御キューは、キャッシュサーバから制御情報を受け付けるためのキューである。なお、制御情報とは管理命令実行中に各処理においてやり取りされる情報である。
キャッシュ管理サーバ107は、管理キューから命令を取り出し(S2203)、取り出された命令を実行し(S2204)、S2203に戻りS2203〜S2204の処理を繰り返し実行する。すなわち、取り出された命令に対応する処理が実行される。
次に、キャッシュ管理サーバ107のマスタ管理表制御UI部313が備える各機能について図23〜図28を用いて説明する。
図23は、本発明の実施形態のマスタ管理表制御UI部313が備えるマスタ場所変更UI機能およびキャッシュサーバ制御部が備えるマスタ変更機能によって実行される処理の概要を説明するシーケンス図である。
本実施形態では、キャッシュサーバ108からキャッシュサーバ110にマスタが変更される場合について説明する。以下、キャッシュサーバ108を旧キャッシュサーバ108と記載し、キャッシュサーバ110を新キャッシュサーバ110と記載する。また、キャッシュサーバ108のキャッシュサーバ制御部411を旧キャッシュサーバ制御部411−1と記載し、キャッシュサーバ110のキャッシュサーバ制御部411を新キャッシュサーバ制御部411−2と記載する。
マスタ管理表制御UI部313は、マスタ場所変更UI機能の実行を開始し、現在マスタである旧キャッシュサーバ108の旧キャッシュサーバ制御部411−1に、更新処理開始命令を送信する(S2301)。
なお、更新処理開始命令には、旧キャッシュサーバ108がマスタとして管理するサブディレクトリのサブディレクトリパス名と、旧キャッシュサーバ108の識別子および新キャッシュサーバ110の識別子が含まれる。本実施形態では、旧キャッシュサーバ108の識別子および新キャッシュサーバ110の識別子は、キャッシュサーバ108およびキャッシュサーバ110の名称とする。
以下の説明において、更新処理開始命令に含まれるサブディレクトリパス名をサブディレクトリパスAとし、旧キャッシュサーバ108の名称をキャッシュサーバBとし、新キャッシュサーバ110の名称をキャッシュサーバCとする。
マスタ管理表制御UI部313から更新処理開始命令を受信した旧キャッシュサーバ制御部411−1は、マスタ場所の更新処理を開始する。
まず、旧キャッシュサーバ制御部411−1は、更新処理開始命令に含まれる新キャッシュサーバ110の名称を参照することによって、新キャッシュサーバ110を特定し、新キャッシュサーバ110の新キャッシュサーバ制御部411−2に更新処理開始命令を送信する(S2302)。なお、更新処理開始命令には、サブディレクトリパスAが含まれる。
旧キャッシュサーバ制御部411−1は、受付停止管理表417を更新する(S2303)。また。旧キャッシュサーバ制御部411−1から更新処理開始命令を受信した新キャッシュサーバ制御部411−2も同様に、受付停止管理表417を更新する(S2305)。
具体的には、旧キャッシュサーバ制御部411−1および新キャッシュサーバ制御部411−2は、受付停止管理表417のサブディレクトリパス名601にサブディレクトリパスAを追加する。
S2303およびS2305の処理によって、受付停止管理表417に追加されたサブディレクトリパスA以下のファイルに対する命令が受付停止キューに格納される。すなわち、旧キャッシュサーバ制御部411−1および新キャッシュサーバ制御部411−2は、他のキャッシュサーバからのアクセスを受け付けることが可能となる。これによって、他のキャッシュサーバからの命令を停止することなくマスタを変更することが可能となる。
旧キャッシュサーバ制御部411−1は、キャッシュ保持部413に格納されるサブディレクトリパスA以下のファイルのキャッシュ(実データおよびメタデータ)をファイルサーバ105に書き戻す(ライトバックする)(S2304)。なお、サブディレクトリパスA以下のファイルのキャッシュは、新キャッシュサーバ110に送信されてもよい。
旧キャッシュサーバ制御部411−1は、ロック管理表416の該当行をキャッシュサーバ制御部411−2に移動させる(S2306)。
具体的には、旧キャッシュサーバ制御部411−1は、ロック管理表416からサブディレクトリパスA以下のファイルに対応する情報が格納される行を抽出し、抽出された行に含まれる情報を新キャッシュサーバ制御部411−2に送信し、また、ロック管理表416から当該行を削除する。
新キャッシュサーバ制御部411−2は、サブディレクトリパスA以下のファイルに対応する情報に基づいて、ロック管理表416を更新する(S2307)。
具体的には、新キャッシュサーバ制御部411−2は、サブディレクトリパスA以下のファイルに対応する情報をロック管理表416に追加する。当該処理によって、マスタが旧キャッシュサーバ108から新キャッシュサーバ110に変更される。
旧キャッシュサーバ制御部411−1は、サブディレクトリパスA以下のファイルに対するアクセスの受付開始命令を新キャッシュサーバ制御部411−2に対して送信する(S2308)。なお、当該受付開始命令は、新キャッシュサーバ制御部411−2の制御キューに格納される。
旧キャッシュサーバ制御部411−1は、受付停止管理表417を更新する(S2309)。また、受付開始命令を受信した新キャッシュサーバ制御部411−2も同様に、受付停止管理表417を更新する(S2311)。
具体的には、旧キャッシュサーバ制御部411−1および新キャッシュサーバ制御部411−2は、受付停止管理表417のサブディレクトリパス名601からサブディレクトリパスAを削除する。
旧キャッシュサーバ制御部411−1は、受付停止キューに格納された命令を命令キューの先頭に挿入(プッシュ)する(S2310)。
サブディレクトリパスAのマスタは新キャッシュサーバ制御部411−2であるため、新キャッシュサーバ制御部411−2に、受付停止キューに格納されたサブディレクトリパスA以下のファイルに対する命令が送信される。
新キャッシュサーバ制御部411−2は、受付停止キューに格納された命令を命令キューの先頭に挿入(プッシュ)する(S2312)。
新キャッシュサーバ制御部411−2自身がサブディレクトリパスAのマスタであるため、新キャッシュサーバ制御部411−2が受付停止キューに格納されたサブディレクトリパスA以下のファイルに対する命令を実行する。
なお、この時点では、旧キャッシュサーバ制御部411−1および新キャッシュサーバ制御部411−2のみがマスタが変更されたことを認識しているが、他のキャッシュサーバは、マスタが変更されたことを認識できない。
旧キャッシュサーバ制御部411−1は、マスタ場所更新処理の完了通知をマスタ管理表制御UI部313に送信する(S2313)。当該通知は、キャッシュ管理サーバ107の制御キューに入力される。
完了通知を受信したマスタ管理表制御UI部313は、マスタ管理表315を更新し処理を終了する(S2314)。マスタ管理表315が更新されることによって、他のキャッシュサーバが、旧キャッシュサーバ制御部411−1から新キャッシュサーバ制御部411−2にマスタが変更されたことを認識することが可能となる。
以上で説明した処理によって、旧キャッシュサーバ108および新キャッシュサーバ110以外のキャッシュサーバがマスタの変更を認識していなくとも、当該キャッシュサーバに影響を与えることなくマスタの変更が可能となる。
以下、マスタ管理表制御UI部313、旧キャッシュサーバ制御部411−1および新キャッシュサーバ制御部411−2のそれぞれの処理の詳細について説明する。
図24は、本発明の実施形態のマスタ場所更新処理実行時における、マスタ管理表制御UI部313が実行する処理の詳細を説明するフローチャートである。
マスタ管理表制御UI部313は、制御端末104からマスタ場所更新処理の開始命令を受信し、マスタ場所更新処理を開始する(S2401)。当該マスタ場所更新処理の開始命令には、サブディレクトリパスA、キャッシュサーバBおよびキャッシュサーバCが含まれる。
マスタ管理表制御UI部313は、旧キャッシュサーバ制御部411−1にマスタ場所更新処理開始命令を送信する(S2402)。
具体的には、マスタ管理表制御UI部313は、旧キャッシュサーバ108の命令キューにサブディレクトリパスAとキャッシュサーバCを引数にマスタ場所更新処理開始命令を格納し、マスタ場所更新処理の開始を指示する。
マスタ管理表制御UI部313は、制御キューから制御情報を取り出し(S2403)、取り出された制御情報がマスタ場所更新処理の完了通知であるか否かを判定する(S2404)。
取り出された制御情報がマスタ場所更新処理の完了通知でないと判定された場合、マスタ管理表制御UI部313は、取り出された制御情報を制御キューの先頭に戻し、(S2407)、S2403〜S2407の処理を実行する。
取り出された制御情報がマスタ場所更新処理の完了通知であると判定された場合、マスタ管理表制御UI部313は、マスタ管理表315を更新し(S2405)、処理を終了する(S2406)。
図25は、本発明の実施形態のマスタ場所更新処理実行時における、旧キャッシュサーバ108の旧キャッシュサーバ制御部411−1が実行する処理の詳細を説明するフローチャートである。
マスタ管理表制御UI部313から更新処理開始命令を受信した旧キャッシュサーバ制御部411−1は、マスタ場所更新処理を開始する(S2501)。具体的には、更新処理開始命令は、命令キュー入力され、旧キャッシュサーバ制御部411−1が図15に示す処理を開始する。この場合、S1504において、取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定される。
なお、当該更新処理開始命令には、サブディレクトリパスAおよびキャッシュサーバCが含まれる。
旧キャッシュサーバ制御部411−1は、新キャッシュサーバ制御部411−2に更新処理開始命令を送信する(S2502)。なお、当該更新処理開始命令には、ディレクトリパスAが含まれる。
旧キャッシュサーバ制御部411−1は、受付停止管理表417にサブディレクトリパスAを追加する(S2503)。
旧キャッシュサーバ制御部411−1は、キャッシュ保持部413に格納されるサブディレクトリパスA以下のファイルのキャッシュをファイルサーバ105に書き戻す(ライトバックする)(S2504)。なお、サブディレクトリパスA以下のファイルのキャッシュは、新キャッシュサーバ110に送信されてもよい。
旧キャッシュサーバ制御部411−1は、サブディレクトリパスA以下のファイルのロック情報を新キャッシュサーバ制御部411−2に送信する(S2505)。
具体的には、旧キャッシュサーバ制御部411−1は、ロック管理表416のサブディレクトリパスA以下のファイルに対応する情報が含まれる行を抽出し、抽出された行に含まれる情報を新キャッシュサーバ制御部411−2に送信するとともに、ロック管理表416から当該行を削除する。
なお、ロック管理表416のサブディレクトリパスA以下のファイルに対応する行の情報は、新キャッシュサーバ110の制御キューに入力される。
旧キャッシュサーバ制御部411−1は、新キャッシュサーバ制御部411−2にディレクトリパスA以下のファイルに対する命令の受付開始要求を送信する(S2506)。なお、当該受付開始要求は、新キャッシュサーバ110の制御キューに入力される。
旧キャッシュサーバ制御部411−1は、受付停止管理表417からディレクトリパスAを削除する(S2507)。
旧キャッシュサーバ制御部411−1は、サブディレクトリパスA以下のファイルに対する命令を命令キューの先頭に挿入する(S2508)。
具体的には、旧キャッシュサーバ制御部411−2は、受付停止キューからサブディレクトリパスA以下のファイルに対する命令を検索し、検索されたサブディレクトリパスA以下のファイルに対する命令を命令キューの先頭に挿入する。
旧キャッシュサーバ制御部411−1は、マスタ場所更新処理の完了通知をマスタ管理表制御UI部313に送信し、処理を終了する(S2509)。
図26は、本発明の実施形態のマスタ場所更新処理実行時における、新キャッシュサーバ110の新キャッシュサーバ制御部411−2が実行する処理の詳細を説明するフローチャートである。
新キャッシュサーバ制御部411−2は、旧キャッシュサーバ制御部411−1からマスタ場所更新処理の開始要求を受信し、マスタ場所更新処理を開始する(S2601)。
なお、当該開始要求は、命令キューに入力され、新キャッシュサーバ制御部411−2が図15に示す処理を開始する。この場合、S1504において、取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定される。
なお、当該開始要求には、サブディレクトリパスAが含まれる。
新キャッシュサーバ制御部411−2は、受付停止管理表417にサブディレクトリパスAを追加する(S2602)。
新キャッシュサーバ制御部411−2は、制御キューから制御情報を取り出し(S2603)、取り出された制御情報がロック引き継ぎに関する情報であるか否かを判定する(S2604)。
具体的には、新キャッシュサーバ制御部411−2は、取り出された制御情報がサブディレクトリパスA以下のファイルのロックに関する情報であるか否かを判定する。
取り出された制御情報がロック引き継ぎに関する情報でないと判定された場合、新キャッシュサーバ制御部411−2は、取り出された制御情報を制御キューの先頭に戻し、(S2611)、S2601〜S2612の処理を実行する。
取り出された制御情報がロック引き継ぎに関する情報であると判定された場合、新キャッシュサーバ制御部411−2は、ロック管理表416を更新する(S2605)。
具体的には、新キャッシュサーバ制御部411−2は、サブディレクトリパスA以下のファイルのロックに関する情報をロック管理表416に追加する。
新キャッシュサーバ制御部411−2は、制御キューから制御情報を取り出し(S2606)、取り出された制御情報がサブディレクトリパスA以下のファイルに対する命令の受付開始命令であるか否かを判定する(S2607)。
取り出された制御情報がサブディレクトリパスA以下のファイルに対する命令の受付開始命令でないと判定された場合、新キャッシュサーバ制御部411−2は、取り出された制御情報を制御キューの先頭に戻し、(S2612)、S2606〜S2612の処理を実行する。
取り出された制御情報がサブディレクトリパスA以下のファイルに対する命令の受付開始命令であると判定された場合、新キャッシュサーバ制御部411−2は、受付停止管理表417を更新する(S2608)。
具体的には、新キャッシュサーバ制御部411−2は、サブディレクトリパスAに対応する行を受付停止管理表417から削除する。
新キャッシュサーバ制御部411−2は、サブディレクトリパスA以下のファイルに対する命令を命令キューの先頭に挿入し(S2609)、処理を終了する(S2610)。
具体的には、新キャッシュサーバ制御部411−2は、受付停止キューからサブディレクトリパスA以下のファイルに対する命令を検索し、検索されたサブディレクトリパスA以下のファイルに対する命令を命令キューの先頭に挿入する。
図27は、本発明の実施形態のキャッシュ管理サーバ107のマスタ管理表制御UI部313が備えるアクセス偏り集計UI機能によって実行される処理を説明するフローチャートである。
マスタ管理表制御UI部313は、制御端末104から偏り集計処理の開始要求を受信し、偏り集計処理を開始する(S2701)。なお、マスタ管理表制御UI部313は、周期的に当該処理を実行してもよい。
マスタ管理表制御UI部313は、全てのキャッシュサーバ(本実施形態では、キャッシュサーバ106、108、110)にアクセス履歴の送信命令を送信する(S2702)。
アクセス履歴の送信命令は、各キャッシュサーバ(本実施形態では、キャッシュサーバ106、108、110)の命令キューに入力される。アクセス履歴の送信命令に対する処理結果はキャッシュ管理サーバ107の制御キューに出力される。また、マスタ管理表制御UI部313は、キャッシュ管理サーバ107の制御キューからアクセス履歴を取得する。
マスタ管理表制御UI部313は、キャッシュ管理サーバ107の制御キューから制御情報を取得し(S2703)、取得された制御情報がアクセス履歴であるか否かを判定する(S2704)。
取得された制御情報がアクセス履歴でないと判定された場合、マスタ管理表制御UI部313は、取り出された制御情報を制御キューの先頭に戻し、(S2708)、S2704〜S2708の処理を実行する。
取得された制御情報がアクセス履歴であると判定された場合、マスタ管理表制御UI部313は、全てのキャッシュサーバ(本実施形態では、キャッシュサーバ106、108、110)からアクセス履歴を受信したか否かを判定する(S2705)。
当該判定は、例えば、アクセス履歴の受信回数と計算機システム内のキャッシュサーバの数とが同一か否か判定することによってできる。
全てのキャッシュサーバ(本実施形態では、キャッシュサーバ106、108、110)からアクセス履歴を受信していないと判定された場合、マスタ管理表制御UI部313は、S2704に戻り、S2704〜S2708の処理を実行する。
全てのキャッシュサーバ(本実施形態では、キャッシュサーバ106、108、110)からアクセス履歴を受信したと判定された場合、マスタ管理表制御UI部313は、全てのファイルのフルパスごとにアクセス履歴を集計し(S2706)、集計結果を出力するための出力情報を生成し、処理を終了する(S2707)。
具体的には、マスタ管理表制御UI部313は、キャッシュサーバごとのファイルのフルパスに対するアクセス数を算出する。例えば、ファイルのフルパス「/a/b/c.txt」に対して拠点A102のキャッシュサーバ108からのアクセスが95回、拠点B103のキャッシュサーバ110からのアクセスが5回と算出される。また、「/a/b/」などサブディレクトリのパスの場合、サブディレクトリ配下に含まれる全てのファイルに対するアクセス数が算出される。
図28は、本発明の実施形態のキャッシュサーバ108、110がアクセス履歴の送信命令を受信したときに実行する処理を説明するフローチャートである。
キャッシュサーバ108、110のキャッシュサーバ制御部411は、キャッシュ管理サーバ107からアクセス履歴の送信命令を受信し、アクセス履歴送信処理を開始する(S2801)。
キャッシュサーバ制御部411は、アクセス履歴保持部414に格納される全てのアクセス履歴をキャッシュ管理サーバ107の制御キューに送信する(S2802)。
キャッシュサーバ制御部411は、アクセス履歴保持部414に格納される全てのアクセス履歴を消去し、処理を終了する(S2803)。
以上の処理によって、キャッシュサーバごとの全てのサブディレクトリについてのアクセス数を求めることができる。
本実施形態では、初回時には全ファイルのマスタは、中央拠点101のキャッシュサーバ106である。この状態から処理の実行開始後、アクセス偏りの大きい、すなわち、アクセス数の多いサブディレクトリから順に他の拠点のキャッシュサーバにマスタが変更される。また、マスタの変更のトリガは、制御端末104から出力される。
この場合、以下のようなユースケースが考えられる。
1.管理者が制御端末104を用いて、マスタ管理表制御UI部313が備えるアクセス偏り集計UI機能を実行し、サブディレクトリごとのアクセス履歴を取得する。
2.管理者が取得されたアクセス履歴に基づいて、アクセス偏りが大きいサブディレクトリを特定する。
3.管理者が特定されたサブディレクトリごとに、制御端末104を用いてマスタ管理表制御UI部313が備えるマスタ場所変更UI機能を実行し、マスタを変更する。
また、他のユースケースとして、自動的にマスタの変更を実行するユースケースが考えられる。この場合、予めアクセス偏りの判定条件を設定しておく必要がある。例えば、アクセス偏りの判定条件としては以下のようなものが考えられる。
1.アクセス偏り集計間隔:1時間ごと。
2.アクセス偏りしきい値:システム全体へのアクセスの90%以上。
3.アクセス均一しきい値:システム全体へのアクセスの70%以上。
前述した判定条件を用いて、以下のように自動的に管理する方法が考えられる。
1.制御端末104は、制御端末104が備えるタイマに基づいて、アクセス偏り集計間隔時間が経過した後に処理を実行する。
2.制御端末104は、マスタ管理表制御UI部313からマスタ管理表を取得する。
3.制御端末104は、マスタ管理表制御UI部313が備えるアクセス偏り集計UI機能を実行し、サブディレクトリごとのアクセス履歴を取得する。
4.制御端末104は、取得されたアクセス履歴に基づいて、アクセス偏りしきい値より大きく、かつ、その偏ったキャッシュサーバが手順2で取得したマスタ管理表に記載されたキャッシュサーバとは異なるサブディレクトリを抽出する。
5.制御端末104は、抽出されたサブディレクトリのうち、直接の親子関係にあるサブディレクトリは上位のサブディレクトリを変更対象とする。具体的には、「/a/b/c」と「/a/b」とが抽出された場合、「/a/b」を変更の対象とすれば、「/a/b/c」も自動的に変更の対象となる。
6.制御端末104は、マスタ管理表制御UI部313が備えるアクセス偏り集計UI機能を実行することによって、変更対象のサブディレクトリを、マスタ管理表に記載されたキャッシュサーバから、手順4において抽出されたキャッシュサーバにマスタを変更する
7.制御端末104は、取得されたアクセス履歴に基づいて、アクセス均一しきい値を下回り、かつ、その中で最もアクセス頻度の高いキャッシュサーバが手順2で取得したマスタ管理表に記載されたキャッシュサーバとは異なるサブディレクトリを抽出する。
8.制御端末104は、手順7で抽出されたサブディレクトリのうち、直接の親子関係にあるサブディレクトリは上位ディレクトリを変更対象とする。具体的には、「/a/b/c」と「/a/b」とが抽出された場合、「/a/b」を変更の対象とすれば、「/a/b/c」も自動的に変更の対象となる。
9.制御端末104は、マスタ管理表制御UI部313が備えるアクセス偏り集計UI機能を実行することによって、手順8で抽出されたサブディレクトリを、マスタ管理表に記載されたキャッシュサーバから中央拠点101のキャッシュサーバ106にマスタを変更する。
また、他のユースケースとして、時刻をトリガとしファイルシステムのサブツリーに対するマスタの場所を周期的に変更するユースケースも考えられる。
例えば、世界中に複数の拠点を持つ企業などで、時差等によって拠点の稼働する時間帯がずれる場合に適用する方法が考えられる。
この場合、管理者が、制御端末104に予め図29に示すタイムテーブル2900を登録しておく。
図29は、本発明の実施携帯の制御端末104が備えるタイムテーブル2900を説明するフローチャートである。
タイムテーブル2900は、制御端末104のタイムゾーンまたはGMTを基準に、サブディレクトリのパスごとに時刻とマスタである拠点が格納される。
図29に示す例では、3時間ごとにマスタの位置が管理される。
具体的には、サブディレクトリパス名が「/management/board」以下のサブディレクトリは0時〜12時までは拠点Aがマスタであり、12時から24時までは拠点Bがマスタであることを示す。
また、サブディレクトリパス名が「/office/personnel」以下のサブディレクトリは0時から9時までは拠点Cがマスタであり、9時から18時までは拠点Dがマスタであり、18時から21時までは拠点Eがマスタであることを示す。
このユースケースでは、管理者がタイムテーブルを更新したときに制御端末104が以下のような処理実行することによって、マスタの場所が周期的に変更するように管理することが可能となる。
1.制御端末104が、タイムテーブル2900を参照して、サブディレクトリのパス名ごとにマスタとなる拠点が変更される時刻と、どの拠点からどの拠点に変更されるかを抽出する。図29に示す例では、「/management/board」について12時に拠点Aから拠点Bへマスタが変更され、また、24時に拠点Bから拠点Aにマスタが変更される。また、「/office/personnel」について9時に拠点Cから拠点Dへマスタが変更され、18時に拠点Dから拠点Eへマスタが変更され、24時に拠点Eから拠点Cへマスタが変更される。
2.制御端末104は、抽出されたサブディレクトリのパス名、時刻、どの拠点からどの拠点にマスタが変更されるかの情報を用いて、制御端末104のタイマにマスタ場所更新処理(図24参照)の実行を登録する。図29に示す例では以下の引数でタイマにマスタ場所更新処理の実行が登録される。
12時:サブツリーパス=/management/board、旧マスタキャッシュサーバ拠点=拠点A、新マスタキャッシュサーバ=拠点B
0時:サブツリーパス=/management/board、旧マスタキャッシュサーバ拠点=拠点B、新マスタキャッシュサーバ=拠点A
9時:サブツリーパス=/office/personnel、旧マスタキャッシュサーバ拠点=拠点C、新マスタキャッシュサーバ=拠点D
18時:サブツリーパス=/office/personnel、旧マスタキャッシュサーバ拠点=拠点D、新マスタキャッシュサーバ=拠点E
24時:サブツリーパス=/office/personnel、旧マスタキャッシュサーバ拠点=拠点E、新マスタキャッシュサーバ=拠点C
なお、本実施形態では、ロック管理表214、マスタ管理表315、受付停止管理表417、タイムテーブル2900等は、全て表形式の情報として格納されているが、本発明はこれに限定されず、各情報の対応関係がわかるものであればどのような形式で情報が保持されてもよい。
本発明の一形態によれば、サブディレクトリ配下のファイルの管理権限を有するマスタの移動時に、当該マスタが管理するサブディレクトリ配下のファイルのロック状態を保ちつつ、他のキャッシュサーバに影響を与えることなく、マスタの変更を実行することができる。
12 ローカル網
101 中央拠点
102 拠点A
103 拠点B
104 制御端末
105 ファイルサーバ
106 キャッシュサーバ
107 キャッシュ管理サーバ
108 キャッシュサーバ
109 端末
110 キャッシュサーバ
111 端末
112 広域網
113 ローカル網
200 CPU
210 主記憶部
211 ファイル保持部
212 ロック管理部
213 ファイルサーバ制御部
214 ロック管理表
220 二次記憶部
230 ネットワークインタフェース
300 CPU
310 主記憶部
311 キャッシュ管理サーバ制御部
312 キュー管理部
313 マスタ管理表制御UI部
314 マスタ管理表制御部
315 マスタ管理表
320 二次記憶部
330 ネットワークインタフェース
400 CPU
410 主記憶部
411 キャッシュサーバ制御部
412 ロック管理部
413 キャッシュ保持部
414 アクセス履歴保持部
415 キュー管理部
416 ロック管理表
417 受付停止管理表
420 二次記憶部
430 ネットワークインタフェース
501 ファイル名
502 ユーザ名
503 ロック情報
601 サブディレクトリパス名
701 サブディレクトリパス名
702 マスタ拠点名
2900 タイムテーブル

Claims (16)

  1. 第1のプロセッサと、前記第1のプロセッサに接続される第1のメモリとを備え、複数のファイルを格納するファイルサーバと、第2のプロセッサと、前記第2のプロセッサに接続される第2のメモリとを備え、前記ファイルのキャッシュデータを格納するキャッシュサーバと、第3のプロセッサと、前記第3のプロセッサに接続される第3のメモリとを備え、前記キャッシュサーバを管理するキャッシュ管理サーバとを備える計算機システムであって、
    前記ファイルのキャッシュデータは、前記ファイルを特定可能なデータ、又は、前記ファイルを構成するデータの少なくともいずれか一方を含み、
    前記キャッシュ管理サーバは、前記ファイルサーバに格納される前記ファイルのキャッシュデータに対する前記キャッシュサーバの管理権限を表す権限情報を管理し、
    前記キャッシュサーバは、第1のキャッシュサーバ、第2のキャッシュサーバ及び第3のキャッシュサーバを含み、
    前記第1のキャッシュサーバは、当該第1のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第1のロック管理情報を備え、
    前記第2のキャッシュサーバは、当該第2のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第2のロック管理情報を備え、
    前記第3のキャッシュサーバは、当該第3のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第3のロック管理情報を備え、
    前記ファイルは、第1のファイルを含み、
    前記第1のキャッシュサーバは、当該第1のキャッシュサーバに接続されるクライアント端末から前記第1のファイルに対する処理命令を受信した場合に、前記キャッシュ管理サーバから前記権限情報を取得し、
    前記取得された権限情報を参照して、前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有するか否かを判定し、
    前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有すると判定された場合に、前記第1のファイルに対する処理命令を実行し、
    前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有しないと判定された場合に、当該第1のファイルの前記管理権限を有する前記第2のキャッシュサーバに、前記第1のファイルに対する処理命令を送信して、前記第2のキャッシュサーバから前記第1のファイルに対する処理命令の実行結果を受信し、
    前記キャッシュ管理サーバは、前記第1のキャッシュサーバが有する、前記第1のファイルのキャッシュデータの前記管理権限を、前記第3のキャッシュサーバに変更する更新命令を、前記第1のキャッシュサーバに送信し、
    前記第1のキャッシュサーバは、前記更新命令を受信した後、前記更新命令を前記第3のキャッシュサーバに送信し、前記第1のファイルのロック状態を前記第3のキャッシュサーバに移動させるように前記第1のロック管理情報を更新する第1の更新処理を実行し、
    前記第3のキャッシュサーバは、前記更新命令を受信した後、前記第1のファイルのロック状態を前記第3のキャッシュサーバに移動させるように前記第3のロック管理情報を更新する第2の更新処理を実行し、
    前記キャッシュ管理サーバは、前記第1のファイルのキャッシュデータの管理権限を前記第1のキャッシュサーバから前記第3のキャッシュサーバに変更するように前記権限情報を更新することを特徴とする計算機システム。
  2. 前記第1の更新処理では、
    前記第1のロック管理情報から前記第1のファイルのロック状態に関する情報を抽出して、
    前記抽出された第1のファイルのロック状態に関する情報を削除するように前記第1のロック管理情報を更新し、
    前記抽出された第1のファイルのロック状態に関する情報を前記第3のキャッシュサーバに送信し、
    前記更新命令に対する応答を前記キャッシュ管理サーバに送信し、
    前記第2の更新処理では、前記第1のキャッシュサーバから送信された第1のファイルのロック状態に関する情報を追加するように前記第3のロック管理情報を更新し、
    前記権限情報を更新する処理は、前記第1のキャッシュサーバから送信された前記更新命令に対する応答を受信した後に実行することを特徴とする請求項1に記載の計算機システム。
  3. 前記第1の更新処理では、前記更新命令に対する応答を前記キャッシュ管理サーバに送信する前又は後に、前記第1のファイルのキャッシュデータを前記ファイルサーバに送信することを特徴とする請求項2に記載の計算機システム。
  4. 前記第1の更新処理では、前記更新命令を前記第3のキャッシュサーバに送信した後に、前記第1のファイルのキャッシュデータを前記第3のキャッシュサーバに送信することを特徴とする請求項2に記載の計算機システム。
  5. 前記第1のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第1の受付管理情報を備え、
    前記第2のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第2の受付管理情報を備え、
    前記第3のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第3の受付管理情報を備え、
    前記第1の更新処理では、
    前記第1のファイルに関する情報を追加するように前記第1の受付管理情報を更新し、
    その後、前記端末または前記他のキャッシュサーバから前記ファイルに対する処理命令を受信した場合に、前記第1の受付管理情報を参照して、前記端末または前記他のキャッシュサーバからの前記ファイルに対するアクセスが前記第1のファイルに対する処理命令か否かを判定し、
    前記端末または前記他のキャッシュサーバからのファイルに対するアクセスが前記第1のファイルに対する処理命令であると判定された場合に前記第1のファイルに対する処理命令を一時的に蓄積し、
    前記抽出された第1のファイルのロック状態に関する情報が前記第3のキャッシュサーバに移動されるように前記第1のロック管理情報が更新された後、前記第2のキャッシュサーバに前記第1のファイルに対するアクセスの受け付けを開始させるための受付開始命令を送信し、
    前記受付開始命令が送信された後に、前記第1のファイルに関する情報を削除するように前記第1の受付管理情報を更新して、前記一時的に蓄積された端末または他のキャッシュサーバからの第1のファイルに対する処理命令を実行し、
    前記第2の更新処理では、
    前記第1のキャッシュサーバから送信された前記更新命令を受信した後に、前記第1のファイル関する情報を追加するように前記第3の受付管理情報を更新し、
    前記端末または前記他のキャッシュサーバから前記ファイルに対する処理命令を受信した場合に、前記第3の受付管理表を参照して、前記端末または前記他のキャッシュサーバからの前記ファイルに対する処理要求が前記第1のファイルに対する処理要求か否かを判定し、
    前記端末または前記他のキャッシュサーバからのファイルに対する処理命令が前記第1のファイルに対する処理命令であると判定された場合に、前記第1のファイルに対する処理要求を一時的に蓄積し、
    前記受付開始命令を受信した後に、前記第1のファイルに関する情報を削除するように前記第3の受付管理情報を更新して、前記一時的に蓄積された端末または他のキャッシュサーバからの第1のファイルに対する処理命令を実行することを特徴とする請求項2に記載の計算機システム。
  6. 前記権限情報は、ファイルシステムのサブディレクトリと、前記キャッシュサーバとを対応させた情報を格納する権限管理表であり、
    前記ロック管理情報は、前記ファイルの識別子と、前記ファイルのロックを取得したユーザ名と、前記取得されたロックの識別情報とを格納するロック管理表であり、
    前記受付管理情報は、前記ファイルシステムのサブディレクトリを格納する受付管理表であり、
    前記キャッシュサーバは、前記権限管理表に示された前記サブディレクトリ配下に格納される複数のファイルについての前記管理権限を有し、
    前記キャッシュサーバは、前記受付管理表に示された前記サブディレクトリ配下に格納される複数のファイルに対する処理命令を一時的に蓄積することを特徴とする請求項1に記載の計算機システム。
  7. 前記キャッシュ管理サーバは、前記ファイル毎に前記処理命令の実行時のアクセス数を算出し、
    前記キャッシュ管理サーバに入力された前記処理命令の実行時のアクセス回数の条件に基づいて、前記更新命令を前記第1のキャッシュサーバに送信することを特徴とする請求項1に記載の計算機システム。
  8. 前記キャッシュ管理サーバは、
    前記計算機システムの時間を管理し、
    前記計算機システムの時間に基づいて前記管理権限を保持する前記キャッシュサーバを変更するための時刻情報を備え、
    前記時刻情報において示された前記計算機システムの時間が経過した後に、前記更新命令を前記第1のキャッシュサーバに送信することを特徴とする請求項1に記載の計算機システム。
  9. 第1のプロセッサと、前記第1のプロセッサに接続される第1のメモリとを備え、複数のファイルを格納するファイルサーバと、第2のプロセッサと、前記第2のプロセッサに接続される第2のメモリとを備え、前記ファイルのキャッシュデータを格納するキャッシュサーバと、第3のプロセッサと、前記第3のプロセッサに接続される第3のメモリとを備え、前記キャッシュサーバを管理するキャッシュ管理サーバとを備える計算機システムにおけるキャッシュ制御方法であって、
    前記ファイルのキャッシュデータは、前記ファイルを特定可能なデータ、又は、前記ファイルを構成するデータ及び前記ファイルを特定可能なデータ、の少なくとも一方を含み、
    前記キャッシュ管理サーバは、前記ファイルサーバに格納される前記ファイルのキャッシュデータに対する前記キャッシュサーバの管理権限を表す権限情報を管理し、
    前記キャッシュサーバは、第1のキャッシュサーバ、第2のキャッシュサーバ及び第3のキャッシュサーバを含み、
    前記第1のキャッシュサーバは、当該第1のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第1のロック管理情報を備え、
    前記第2のキャッシュサーバは、当該第2のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第2のロック管理情報を備え、
    前記第3のキャッシュサーバは、当該第3のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第3のロック管理情報を備え、
    前記ファイルは、第1のファイルを含み、
    前記方法は、
    前記第1のキャッシュサーバが、当該第1のキャッシュサーバに接続されるクライアント端末から前記第1のファイルに対する処理命令を受信した場合に、前記キャッシュ管理サーバから前記権限情報を取得する第1のステップと、
    前記第1のキャッシュサーバが、前記取得された権限情報を参照して、前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有するか否かを判定する第2のステップと、
    前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有すると判定された場合に、前記第1のキャッシュサーバが、前記第1のファイルに対する処理命令を実行する第3のステップと、
    前記第1のキャッシュサーバが前記第1のファイルのキャッシュデータの管理権限を有しないと判定された場合に、当該第1のファイルの前記管理権限を有する前記第2のキャッシュサーバに、前記第1のファイルに対する処理命令を送信して、前記第2のキャッシュサーバから前記第1のファイルに対する処理命令の実行結果を受信する第4のステップと、
    前記キャッシュ管理サーバが、前記第1のキャッシュサーバが有する、前記第1のファイルのキャッシュデータの前記管理権限を、前記第3のキャッシュサーバに変更する更新命令を、前記第1のキャッシュサーバに送信する第5のステップと
    前記第1のキャッシュサーバが、前記更新命令を受信した後、前記更新命令を前記第3
    のキャッシュサーバに送信し、前記第1のファイルのロック状態を前記第3のキャッシュサーバに移動させるように前記第1のロック管理情報を更新する第1の更新処理を実行する第6のステップと、
    前記第3のキャッシュサーバが、前記更新命令を受信した後、前記第1のファイルのロック状態を前記第3のキャッシュサーバに移動させるように前記第3のロック管理情報を更新する第2の更新処理を実行する第7のステップと、
    前記キャッシュ管理サーバが、前記第1のファイルのキャッシュデータの管理権限を前記第1のキャッシュサーバから前記第3のキャッシュサーバに変更するように前記権限情報を更新する第8のステップとを含むことを特徴とするキャッシュ制御方法。
  10. 前記第6のステップは、
    前記第1のキャッシュサーバが、前記第1のロック管理情報から前記第1のファイルのロック状態に関する情報を抽出するステップと、
    前記第1のキャッシュサーバが、前記抽出された第1のファイルのロック状態に関する情報を削除するように前記第1のロック管理情報を更新するステップと、
    前記第1のキャッシュサーバが、前記抽出された第1のファイルのロック状態に関する情報を前記第3のキャッシュサーバに送信するステップと、
    前記第1のキャッシュサーバが、前記更新命令に対する応答を前記キャッシュ管理サーバに送信するステップと、を含み
    前記第7のステップは、前記第3のキャッシュサーバが、前記第1のキャッシュサーバから送信された第1のファイルのロック状態に関する情報を追加するように前記第3のロック管理情報を更新するステップを含み、
    前記第8のステップは、前記キャッシュ管理サーバが、前記第1のキャッシュサーバから送信された前記更新命令に対する応答を受信した後に前記権限情報を更新するステップを含むことを特徴とする請求項9に記載のキャッシュ制御方法。
  11. 前記第6のステップは、前記第1のキャッシュサーバが、前記更新命令に対する応答を前記キャッシュ管理サーバに送信する前又は後に、前記第1のファイルのキャッシュデータを前記ファイルサーバに送信するステップを含むことを特徴とする請求項10に記載のキャッシュ制御方法。
  12. 前記第6のステップは、前記第1のキャッシュサーバが、前記更新命令を前記第3のキャッシュサーバに送信した後に、前記第1のファイルのキャッシュデータを前記第3のキャッシュサーバに送信するステップを含むことを特徴とする請求項10に記載のキャッシュ制御方法。
  13. 前記第1のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第1の受付管理情報を備え、
    前記第2のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第2の受付管理情報を備え、
    前記第3のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第3の受付管理情報を備え、
    前記第6のステップは、
    前記第1のキャッシュサーバが、前記第1のファイルに関する情報を追加するように前記第1の受付管理情報を更新するステップと、
    前記第1のキャッシュサーバが、その後、前記端末または前記他のキャッシュサーバから前記ファイルに対する処理命令を受信した場合に、前記第1の受付管理情報を参照して、前記端末または前記他のキャッシュサーバからの前記ファイルに対するアクセスが前記第1のファイルに対する処理命令か否かを判定するステップと、
    前記第1のキャッシュサーバが、前記端末または前記他のキャッシュサーバからのファイルに対するアクセスが前記第1のファイルに対する処理命令であると判定された場合に前記第1のファイルに対する処理命令を一時的に蓄積するステップと、
    前記第1のキャッシュサーバが、前記抽出された第1のファイルのロック状態に関する情報が前記第3のキャッシュサーバに移動されるように前記第1のロック管理情報が更新された後、前記第2のキャッシュサーバに前記第1のファイルに対するアクセスの受け付けを開始させるための受付開始命令を送信するステップと、
    前記第1のキャッシュサーバが、前記受付開始命令が送信された後に、前記第1のファイルに関する情報を削除するように前記第1の受付管理情報を更新して、前記一時的に蓄積された端末または他のキャッシュサーバからの第1のファイルに対する処理命令を実行するステップと、を含み、
    前記第7のステップは、
    前記第3のキャッシュサーバが、前記第1のキャッシュサーバから送信された前記更新命令を受信した後に、前記第1のファイル関する情報を追加するように前記第3の受付管理情報を更新するステップと、
    前記第3のキャッシュサーバが、前記端末または前記他のキャッシュサーバから前記ファイルに対する処理命令を受信した場合に、前記第3の受付管理表を参照して、前記端末または前記他のキャッシュサーバからの前記ファイルに対する処理要求が前記第1のファイルに対する処理要求か否かを判定するステップと、
    前記第3のキャッシュサーバが、前記端末または前記他のキャッシュサーバからのファイルに対する処理命令が前記第1のファイルに対する処理命令であると判定された場合に、前記第1のファイルに対する処理要求を一時的に蓄積するステップと、
    前記第3のキャッシュサーバが、前記受付開始命令を受信した後に、前記第1のファイルに関する情報を削除するように前記第3の受付管理情報を更新して、前記一時的に蓄積された端末または他のキャッシュサーバからの第1のファイルに対する処理命令を実行するステップと、を含むことを特徴とする請求項10に記載のキャッシュ制御方法。
  14. 前記権限情報は、ファイルシステムのサブディレクトリと、前記キャッシュサーバとを対応させた情報を格納する権限管理表であり、
    前記ロック管理情報は、前記ファイルの識別子と、前記ファイルのロックを取得したユーザ名と、前記取得されたロックの識別情報とを格納するロック管理表であり、
    前記受付管理情報は、前記ファイルシステムのサブディレクトリを格納する受付管理表であり、
    前記キャッシュサーバは、前記権限管理表に示された前記サブディレクトリ配下に格納される複数のファイルについての前記管理権限を有し、
    前記キャッシュサーバは、前記受付管理表に示された前記サブディレクトリ配下に格納される複数のファイルに対する処理命令を一時的に蓄積することを特徴とする請求項13に記載のキャッシュ制御方法。
  15. 前記キャッシュ管理サーバは、前記ファイル毎に前記処理命令の実行時のアクセス数を算出し、
    前記キャッシュ管理サーバに入力された前記処理命令の実行時のアクセス回数の条件に基づいて、前記更新命令を前記第1のキャッシュサーバに送信することを特徴とする請求項9に記載のキャッシュ制御方法。
  16. 前記キャッシュ管理サーバは、
    前記計算機システムの時間を管理し、
    前記計算機システムの時間に基づいて前記管理権限を保持する前記キャッシュサーバを変更するための時刻情報を備え、
    前記第5のステップは、前記キャッシュ管理サーバが、前記時刻情報において示された前記計算機システムの時間が経過した後に、前記更新命令を前記第1のキャッシュサーバに送信することを特徴とする請求項9に記載のキャッシュ制御方法。
JP2010054749A 2010-03-11 2010-03-11 計算機システムおよびキャッシュ制御方法 Expired - Fee Related JP4995296B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2010054749A JP4995296B2 (ja) 2010-03-11 2010-03-11 計算機システムおよびキャッシュ制御方法
EP10014568.9A EP2365442B1 (en) 2010-03-11 2010-11-12 Computer system and method of data cache management
KR1020100113780A KR101191589B1 (ko) 2010-03-11 2010-11-16 계산기 시스템 및 캐쉬 제어 방법
US12/947,248 US20110225373A1 (en) 2010-03-11 2010-11-16 Computer system and method of data cache management
CN2010105511310A CN102193959B (zh) 2010-03-11 2010-11-17 计算机系统以及缓存控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010054749A JP4995296B2 (ja) 2010-03-11 2010-03-11 計算機システムおよびキャッシュ制御方法

Publications (2)

Publication Number Publication Date
JP2011187026A JP2011187026A (ja) 2011-09-22
JP4995296B2 true JP4995296B2 (ja) 2012-08-08

Family

ID=44140820

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010054749A Expired - Fee Related JP4995296B2 (ja) 2010-03-11 2010-03-11 計算機システムおよびキャッシュ制御方法

Country Status (5)

Country Link
US (1) US20110225373A1 (ja)
EP (1) EP2365442B1 (ja)
JP (1) JP4995296B2 (ja)
KR (1) KR101191589B1 (ja)
CN (1) CN102193959B (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9026510B2 (en) * 2011-03-01 2015-05-05 Vmware, Inc. Configuration-less network locking infrastructure for shared file systems
US9053141B2 (en) * 2011-10-31 2015-06-09 International Business Machines Corporation Serialization of access to data in multi-mainframe computing environments
US10397013B1 (en) 2012-04-11 2019-08-27 Google Llc User interfaces, systems and methods for configuring smart devices for interoperability with a smart hub device
US9198204B2 (en) 2012-04-11 2015-11-24 Google Inc. Apparatus and method for seamless commissioning of wireless devices
US10075334B1 (en) 2012-04-11 2018-09-11 Google Llc Systems and methods for commissioning a smart hub device
US10142122B1 (en) 2012-04-11 2018-11-27 Google Llc User interfaces, systems and methods for configuring smart devices for interoperability with a smart hub device
US9575986B2 (en) * 2012-04-30 2017-02-21 Synopsys, Inc. Method for managing design files shared by multiple users and system thereof
US9921752B2 (en) * 2012-05-04 2018-03-20 Netapp, Inc. Systems, methods, and computer program products providing read access in a storage system
US10338940B2 (en) * 2012-06-27 2019-07-02 International Business Machines Corporation Adjusting adminstrative access based on workload migration
CN103729247B (zh) * 2012-10-12 2017-04-12 阿里巴巴集团控股有限公司 数据获取请求的处理方法、系统及服务器
TW201416873A (zh) * 2012-10-19 2014-05-01 Apacer Technology Inc 網路儲存系統的檔案分享方法
KR20140097924A (ko) * 2013-01-30 2014-08-07 한국전자통신연구원 우선 순위를 가지는 이중 캐싱 방법 및 이를 위한 장치
US9922580B2 (en) 2013-04-30 2018-03-20 Google Llc Apparatus and method for the virtual demonstration of a smart phone controlled smart home using a website
US9722908B2 (en) 2013-10-17 2017-08-01 International Business Machines Corporation Problem determination in a hybrid environment
US10088818B1 (en) 2013-12-23 2018-10-02 Google Llc Systems and methods for programming and controlling devices with sensor data and learning
US9009805B1 (en) 2014-09-30 2015-04-14 Google Inc. Method and system for provisioning an electronic device
US10601604B2 (en) 2014-11-12 2020-03-24 Google Llc Data processing systems and methods for smart hub devices
CN105990185B (zh) * 2015-02-27 2020-02-11 中芯国际集成电路制造(上海)有限公司 对半导体对象执行操作的处理方法、系统及装置
GB2537587B (en) * 2015-02-27 2019-01-02 Novastone Media Ltd Asymmetric permissions in a communications system
US10021209B2 (en) 2015-04-10 2018-07-10 Open Text Sa Ulc Systems and methods for caching of managed content in a distributed environment using a multi-tiered architecture
CN106469150B (zh) * 2015-08-14 2019-10-08 阿里巴巴集团控股有限公司 文件读写方法、装置和系统
CN105511813A (zh) * 2015-12-11 2016-04-20 北京奇虎科技有限公司 访问服务器磁盘的方法、装置及系统
US10628602B2 (en) * 2015-12-28 2020-04-21 Quest Software Inc. Controlling content modifications by enforcing one or more constraint links
CN106066816B (zh) * 2016-05-26 2019-11-15 北京小米移动软件有限公司 用于数据缓存的方法和装置
CN108989373B (zh) 2017-06-02 2020-12-04 华为技术有限公司 访问数据的方法和装置
KR102553261B1 (ko) * 2018-10-10 2023-07-07 삼성전자 주식회사 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법
CN111274208B (zh) * 2018-12-05 2023-06-30 杭州海康威视系统技术有限公司 锁定文件的方法和装置
WO2020153454A1 (ja) * 2019-01-23 2020-07-30 株式会社Scalar 改ざん検知性を有するシステム
US11429585B2 (en) * 2020-12-01 2022-08-30 Walmart Apollo, Llc Systems and methods for managing concurrent data requests
JP2023037883A (ja) * 2021-09-06 2023-03-16 キオクシア株式会社 情報処理装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
US5596754A (en) * 1992-10-29 1997-01-21 Digital Equipment Corporation Method for performing private lock management
US5805900A (en) * 1996-09-26 1998-09-08 International Business Machines Corporation Method and apparatus for serializing resource access requests in a multisystem complex
US7200623B2 (en) * 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US6438652B1 (en) * 1998-10-09 2002-08-20 International Business Machines Corporation Load balancing cooperating cache servers by shifting forwarded request
US7062490B2 (en) * 2001-03-26 2006-06-13 Microsoft Corporation Serverless distributed file system
US6775673B2 (en) * 2001-12-19 2004-08-10 Hewlett-Packard Development Company, L.P. Logical volume-level migration in a partition-based distributed file system
US8086579B1 (en) * 2002-01-22 2011-12-27 Oracle International Corporation Semantic response to lock requests to reduce coherence overhead in multi-node systems
JP4131514B2 (ja) * 2003-04-21 2008-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークシステム、サーバ、データ処理方法及びプログラム
US7447786B2 (en) * 2003-05-09 2008-11-04 Oracle International Corporation Efficient locking of shared data that is accessed for reads in a cluster database
US7376744B2 (en) * 2003-05-09 2008-05-20 Oracle International Corporation Using local locks for global synchronization in multi-node systems
US7315926B2 (en) * 2004-09-21 2008-01-01 Emc Corporation Lock management for concurrent access to a single file from multiple data mover computers
JP4349301B2 (ja) * 2004-11-12 2009-10-21 日本電気株式会社 ストレージ管理システムと方法並びにプログラム
US8666957B2 (en) * 2005-08-29 2014-03-04 Hewlett-Packard Development Company, L.P. Method or apparatus for locking shared data
US7840618B2 (en) * 2006-01-03 2010-11-23 Nec Laboratories America, Inc. Wide area networked file system
JP5168630B2 (ja) * 2008-02-14 2013-03-21 日本電気株式会社 ブレードサーバシステムのキャッシュサーバ制御回路およびキャッシュサーバ制御方法
JP2010054749A (ja) 2008-08-28 2010-03-11 Citizen Finetech Miyota Co Ltd 液晶表示パネル及びその製造方法

Also Published As

Publication number Publication date
KR20110102803A (ko) 2011-09-19
EP2365442B1 (en) 2015-04-08
CN102193959B (zh) 2013-07-10
JP2011187026A (ja) 2011-09-22
KR101191589B1 (ko) 2012-10-15
CN102193959A (zh) 2011-09-21
EP2365442A1 (en) 2011-09-14
US20110225373A1 (en) 2011-09-15

Similar Documents

Publication Publication Date Title
JP4995296B2 (ja) 計算機システムおよびキャッシュ制御方法
CN110502507B (zh) 一种分布式数据库的管理系统、方法、设备和存储介质
US7343412B1 (en) Method for maintaining and managing dynamic web pages stored in a system cache and referenced objects cached in other data stores
CN103605698A (zh) 一种用于分布异构数据资源整合的云数据库系统
CN107066467A (zh) 用于事务高速缓存无效的原子可见性切换
US20140012867A1 (en) Method And Process For Enabling Distributing Cache Data Sources For Query Processing And Distributed Disk Caching Of Large Data And Analysis Requests
JP2012174113A (ja) ファイルストレージシステム及び記憶制御方法
JP6279770B2 (ja) ファイルサーバ装置
CN109471861A (zh) 一种基于MySql的数据分布式储存系统
CN116467275A (zh) 共享远程存储方法、装置、系统、电子设备及存储介质
JP6034512B2 (ja) 計算機システム及びデータ管理方法
JP6461101B2 (ja) データベースシステム、情報処理装置、方法およびプログラム
CN104021137A (zh) 一种基于目录授权的客户端本地开闭文件的方法及系统
JP2013025375A (ja) 情報処理システム、画像形成装置、管理装置、情報処理方法およびコンピュータプログラム
Owen Using Erlang, Riak and the ORSWOT CRDT at bet365 for scalability and performance
KR20190092901A (ko) SparkSQL 기반의 데이터 페더레이션장치
WO2015145586A1 (ja) データベースシステム、情報処理装置、方法およびプログラム
JP6720613B2 (ja) 情報処理システム及び情報処理プログラム
CN210691319U (zh) 一种基于区块链的档案信息安全管理系统
US20040267696A1 (en) Data management method, and data processing unit
Hashi et al. Design and implementation of data management scheme to enable efficient analysis of sensing data
CN113220218A (zh) 远程复制系统和远程复制管理方法
JP5481906B2 (ja) 投影ファイルシステム管理装置及び投影ファイルシステム管理方法並びにプログラム
JP2010282360A (ja) 検索システムおよび検索方法
Xiao et al. GridDaen: a data grid engine

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120410

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120509

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees