JP6115396B2 - 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法 - Google Patents

情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法 Download PDF

Info

Publication number
JP6115396B2
JP6115396B2 JP2013168783A JP2013168783A JP6115396B2 JP 6115396 B2 JP6115396 B2 JP 6115396B2 JP 2013168783 A JP2013168783 A JP 2013168783A JP 2013168783 A JP2013168783 A JP 2013168783A JP 6115396 B2 JP6115396 B2 JP 6115396B2
Authority
JP
Japan
Prior art keywords
connection
client
request
information processing
server
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.)
Active
Application number
JP2013168783A
Other languages
English (en)
Other versions
JP2015036928A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013168783A priority Critical patent/JP6115396B2/ja
Priority to US14/445,435 priority patent/US9843638B2/en
Publication of JP2015036928A publication Critical patent/JP2015036928A/ja
Application granted granted Critical
Publication of JP6115396B2 publication Critical patent/JP6115396B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Description

本件は、情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法に関する。
従来、分散ロック機能を有するクライアント・サーバモデルソフトウェア、例えばデータベースシステムや分散ファイルシステム(以下、これらをまとめて分散ファイルシステムという)が知られている。なお、分散ロック機能とは、クライアント・サービス(以下、単にクライアントという)からの共有リソースへのアクセスを制御する機能であり、例えば分散ロックマネージャ等の資源排他管理用サブシステムにより実現される。
図15は、分散ロック動作の一例を示す図であり、図16は、クライアント追放時の分散ロック動作の一例を示す図である。なお、図16において図15と同一の符号が付された処理は、図15の処理と同様の処理であるため、重複した説明を省略する。
Lustre等の分散ファイルシステムでは、図15に示すように、サーバ・サービス(以下、単にサーバという)は、クライアントAからの分散ロック要求を受けると(処理T110)、クライアントAへ分散ロックを付与する(処理T120)。分散ロックが付与されたクライアントAは、ロック範囲へ例えば書込処理を行なう。
また、サーバは、クライアントBから分散ロック要求を受け(処理T130)、クライアントAとクライアントBとの間で分散ロックの衝突を検出すると、クライアントAへ分散ロック(の返却)を要求する(処理T140)。しかし、クライアントAは、分散ロックを使用中であるため、分散ロック要求への返信では返却を拒否し(処理T150)、書込処理の完了後にサーバへ分散ロックを返却する(処理T160)。
サーバは、返却された分散ロックをクライアントBへ付与する(処理T170)。処理T130から分散ロック付与を待つクライアントBは、付与された分散ロックのロック範囲へ例えば書込処理を行なう。なお、クライアントBは、サーバから分散ロック要求を受けていないため、書込処理完了後も分散ロックを返却しなくてよい。
以上のように、分散ファイルシステムの資源排他管理用サブシステムは、適宜適切な分散ロックを処理主体に付与し、分散ロックが付与されたクライアントまたはサーバのみが、資源を操作できるようにする(図15の「分散ロックの動き」参照)。これにより、複数のクライアントが同一ファイルに対して同時にwriteシステムコールを発行し、各クライアントが各々勝手にファイル書き込みを行なうことを防止できる。従って、同一データへの同時書き込みによるデータ破壊、データ喪失、管理情報の不整合によるファイルシステム破壊等の重大な障害の発生を防止できる。
ここで、図16に示すように、サーバは、例えばクライアントからのリプライ(応答)がなかった場合(処理T250参照)等、クライアントの振る舞いが適切でなかった場合、当該クライアントの追放(追放処理)を行なう(処理T260参照)。追放処理では、サーバは、サーバから当該クライアントとの間の接続やロック範囲等に関する接続情報(サーバ側接続情報)を削除して、クライアントとの接続を切断する(解除する)。これにより、分散ファイルシステムでは、システム全体の整合性を維持することができる。
ところで、クライアントの追放処理はサーバ主導の処理であり、クライアントに対して非同期に実行される。また、仮にサーバがクライアントに対する通知・同期機能を有していたとしても、クライアントの追放処理は、クライアントがサーバに対して反応しない場合も想定した処理であるため、クライアントに対する通知が必ず成功することは保証されない。つまり、追放時の同期は保証されない。
図17は、クライアント追放処理及び追放復旧処理の一例を示す図である。
例えば、サーバ側で追放済(図17の処理T310参照)のクライアントは、上述のように追放処理が非同期で行なわれるため、自身がサーバ側で追放されたことを認識できないことがある。従って、追放済のクライアントは、削除されたサーバ側接続情報とは不整合な状態である接続情報(クライアント側)に基づいて、サーバに対してリクエスト(要求)を送信する場合がある(処理T320)。当該リクエストを受信したサーバは、既に接続情報が存在しないことを確認すると、当該リクエストに対してエラーを返す(処理T330)。このとき、クライアントは自身がサーバ側で追放済であることを認識し、サーバ及びクライアント間でクライアントの追放処理に関する同期が完了する。
エラーを受けたクライアントは、不整合状態のクライアント側接続情報を全て破棄し、サーバ側に対して再接続要求を送信する(処理T340)。そして、クライアントは、再接続要求により確立された再接続によって接続情報を更新し、サーバと整合性のとれた接続情報を構築して、クライアントによる追放復旧処理が完了する(処理T350)。つまり、追放後、最初にクライアントからサーバへ送信したリクエストに対する、サーバからのエラーの通知が、クライアントによる追放復旧処理の契機となる。
ここで、上述したサーバからのエラーは、クライアント側接続情報とサーバ側接続情報との整合性がとれていないことに由来するエラーである。このエラーは、上述したように、データ破壊、データ喪失、管理情報の不整合によるファイルシステム破壊等の重大な障害をもたらす可能性を示唆するエラー(重大エラー)であるといえる。
図18は、クライアントにおけるエラー時のリトライ処理の一例を示す図であり、図19は、クライアント追放によるアプリケーションへの影響の一例を示す図である。図18に示すように、クライアントは、重大エラーを受けると、リトライ処理を行わずに、重大エラーを発生させたリクエストの発行契機となったおおもとの処理までエラーを返す。なお、図18に示すように、クライアントは、通常のエラーの場合、処理元までエラーを返さず、システム内部で折り返して、可能な限りリトライする。
例えば、Lustre等において、重大エラーを発生させたリクエストの処理元がユーザ・アプリケーションの発行したシステムコールである場合(図19の処理T430参照)、当該システムコールはエラー復帰することになる。つまり、ユーザ・アプリケーションに対して重大エラーが返されることになる(処理T440)。
また、重大なエラーを受けてクライアント側で追放復旧処理が開始されるが、直接的に追放復旧処理の契機を与えるリクエストを発行していない処理であっても、追放復旧処理前の古い接続情報を参照していた処理に対して、同じ重大エラーが返されることになる。当該処理がユーザ・アプリケーションに由来する処理であった場合には、やはりユーザ・アプリケーションに重大エラーが返されることになる。
つまり、クライアントの追放が実行されると、ユーザ・アプリケーションに対してエラーが返される可能性が高くなる。
ユーザ・アプリケーションは、ユーザが望む処理を行なうためのアプリケーションであり、多くの場合エラーを正しく処理することは考慮されていない。故に、ユーザ・アプリケーションは、重大エラーを受けた後もリトライするように作成されずに、エラー処理を正しく行なわない場合が多い。また、アプリケーションの実行が自動化されている場合等では、ユーザ・アプリケーションがエラー終了したことにユーザが暫く気付かないことも多く、重大エラーの発生や取扱いがシステム運用上の障害となることも多い。
そこで、Lustre等の分散ファイルシステムでは、クライアントは、図20に示すように、サーバに対してpingリクエストを送信することがある。
図20は、pingによる追放検出手法の一例を示す図である。図20に示すように、クライアントは、サーバに対して定期的に(例えば25秒間隔で)pingリクエストを送信する(処理T510,T520)。これにより、クライアントは、pingリクエストがエラーになった契機(処理T520)で追放復旧処理を実行することができ(処理T530)、サーバ側で追放済のクライアントが長期間に亘って存在することを防止できる。また、ユーザ・アプリケーションが契機となって送信されたリクエスト(処理T540)が追放復旧処理の契機になる(重大エラーを発生させる)可能性を低減させることができる。
この方法では、pingリクエストは、クライアントの状態及びサーバの状態と、完全非同期に、かつ定期的に実行される。従って、クライアント追放の観点では、pingリクエストの送信間隔ごとに、クライアント側接続情報及びサーバ側接続情報を同期させることが可能となる。
なお、関連する技術として、特定地域情報にアクセスを求める遠隔地からのユーザによって開始された要求に応答する技術が知られている(例えば、特許文献1参照)。この技術では、インターネットに接続し、動的に割り当てられるIP(Internet Protocol)アドレスを受け取り、当該IPアドレスを転送し、最大の使用されていない時間を超過したとき、接続解除を行なう。
また、関連する他の技術として、クライアントから一定時間要求がなかった場合、ロックしている記憶装置内の領域の解放要求を記憶装置に対して発行するキャッシュストレージ装置が知られている(例えば、特許文献2参照)。
特表2003−521765号公報 特開2004−342071号公報
上述のように、クライアント追放処理は、サーバ主導でクライアントとは非同期的に実行される。つまり、クライアントは、実際にサーバに対してリクエストを送信し、リクエストに対する、クライアントの追放に起因するエラーをサーバから受信するまで、自身が追放されているか否かを認識できず、追放復旧処理を実行することが困難であった。従って、エラーを発生させたリクエストの送信元がユーザ・アプリケーションであった場合、ユーザ・アプリケーションにエラーが返ってしまうという課題がある。
なお、図20に示す手法では、クライアントは、サーバに対して定期的にpingリクエストを送信し、pingリクエストがクライアントの追放に起因するエラーになったことを検知することで、追放復旧処理を行なう。しかし、システム規模が拡大し、サーバ数やクライアント数が増大するに従って、定期的にpingリクエストを送信することによるサーバ及びクライアントのCPU(Central Processing Unit)負荷やメモリ使用量、ネットワーク負荷等が膨大になる。
また、負荷低減のために、pingリクエストを止めることも考えられる。しかし、追放処理後に最初に送信されるリクエストがエラーを発生させてしまい、当該リクエストの送信元がユーザ・アプリケーションであった場合、ユーザ・アプリケーションにエラーが返ってしまうことになる。
なお、上述した関連する技術では、上述した課題については考慮されていない。
ここまで、Lustre等の分散ファイルシステムを例に挙げて説明したが、上述した課題は、情報処理装置による端末装置の追放(接続の解除)処理が端末装置と非同期で行なわれる、種々の情報処理システムにおいても同様に生じ得る。
1つの側面では、本発明は、アプリケーションに対してエラーが返される頻度を低減させ、又は、情報処理システムの負荷の増大を抑制させて、情報処理装置と端末装置との間の接続を再確立することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
本件の情報処理システムは、情報処理装置と、前記情報処理装置との間で確立された接続を用いて前記情報処理装置と通信を行なう端末装置とを有する情報処理システムにおいて、前記情報処理装置は、前記接続を解除する予定時刻を前記端末装置に通知し、前記端末装置は、前記情報処理装置へ要求を送信する際に、現在時刻が前記情報処理装置から通知された予定時刻を経過しているか否かを判断する判断部と、前記判断部により前記現在時刻が前記予定時刻を経過していると判断された場合、前記情報処理装置へ前記要求を送信する前に、前記情報処理装置との間で接続を確立するための接続要求を前記情報処理装置へ送信する送信部と、を有する。
一実施形態によれば、アプリケーションに対してエラーが返される頻度を低減させ、又は、情報処理システムの負荷の増大を抑制させて、情報処理装置と端末装置との間の接続を再確立することができる。
一実施形態の一例としての分散ファイルシステムの構成例を示す図である。 図1に示すFSクライアントに着目した分散ファイルシステムの構成例を示す図である。 図1に示すサーバ及びFSクライアントそれぞれのハードウェア構成例を示す図である。 図1に示すサーバの機能構成例を示す図である。 一実施形態の一例としてのサーバ及びクライアントが保持する追放予定時刻を説明する図である。 図4に示すリクエスト処理部による追放予定時刻の通知手法の一例を示す図である。 図2に示すクライアントの機能構成例を示す図である。 図2に示すサーバ及びクライアント間の通信の一例を説明するシーケンス図である。 図2に示すサーバによるリクエスト受信処理の一例を説明するフローチャートである。 図2に示すサーバによるクライアント追放処理の一例を説明するフローチャートである。 図2に示すクライアントによる接続リクエスト送信処理の一例を説明するフローチャートである。 図2に示すクライアントによるリクエスト送信処理の一例を説明するフローチャートである。 図2に示すクライアントによる返信受信待ち処理の一例を説明するフローチャートである。 図2に示すクライアントによる返信受信処理の一例を説明するフローチャートである。 分散ロック動作の一例を示す図である。 クライアント追放時の分散ロック動作の一例を示す図である。 クライアント追放処理及び追放復旧処理の一例を示す図である。 クライアントにおけるエラー時のリトライ処理の一例を示す図である。 クライアント追放によるアプリケーションへの影響の一例を示す図である。 pingによる追放検出手法の一例を示す図である。
以下、図面を参照して実施の形態を説明する。
〔1〕一実施形態
〔1−1〕分散ファイルシステムについて
上述したように、クライアント(以下、クライアントAという)が何らかの理由でサーバからの要求に対して反応しなくなった場合、クライアントAに付与された分散ロックは資源排他管理用サブシステムに対して返却されなくなる。その結果、分散ファイルシステム全体(サーバ及び他の全てのクライアント)が、当該分散ロックによって排他されているファイルシステム資源に対して処理が行なえない状態に陥る。
一方、資源排他管理用サブシステムが、クライアントAが所持していた分散ロックを他のクライアント(以下、クライアントBという)に渡すこと等により強制的に処理を進めた場合、クライアントAが復帰して処理を再開することがある。このとき、クライアントAは、新たにロックを付与されたクライアントBと競合を引き起こして、データ破壊を発生させる等の可能性がある。
この状況を防ぐため、サーバは、分散ロックを付与されたクライアントAがダウンしたと判断した場合、その時点でサーバからクライアントAに関する全ての情報を無効化する。例えばLustreにおいては、クライアントAに付与された分散ロックやキャッシュされていたinodeの無効化、キャッシュされていたデータがあれば全てのデータのフラッシュ、等を行ない、クライアントAとの間の接続を切断する。すなわち、サーバは、クライアントを追放する。
例えば、クライアントAが動作している装置がダウンしたためにクライアントAがサーバからの要求に反応しなくなった場合、ダウン前にクライアントAが保持していたクライアント側の接続情報は失われてしまう。よって、当該装置の再起動によりクライアントが再起動し、当該クライアントが接続リクエストをサーバへ送信した際には、システム(サーバ)では、新しいクライアント(以下、クライアントCという)が接続リクエストを送信したものとして処理される。このように、装置が、ダウン、再起動、そしてクライアントCのマウントを実行するまでの間に、サーバ側で既にクライアントAの追放が発生していたとしても、クライアントAに関する情報はサーバ上及びクライアント上の双方から削除されている。従って、上述のように、装置がダウンした場合には、分散ファイルシステムにおけるデータ整合性は維持される。
しかし、サーバが、クライアントAがダウンしたと判断してクライアント追放処理を実行したものの、実際にはクライアントAはダウンしていない場合もある。このような場合としては、例えば、ネットワークエラーによってクライアントA−サーバ間で一時的に通信不可能になっていた場合や、クライアントA側でCPUの高負荷又はメモリ不足による通信処理不能に陥っていた場合が挙げられる。この場合、クライアントAは、接続情報を保持しているが、当該接続情報は既にサーバ側には存在しない情報である。つまり、クライアントA−サーバ間で接続情報に関して整合が取れていない状態となる。
従って、クライアントAがサーバに存在しない接続情報を保持した状態(サーバと整合が取れていない状態)になった場合、当該接続情報を新しく書き換えるために、何らかの契機で、クライアントAは追放復旧処理を行なうことが好ましい。
そこで、一実施形態に係る分散ファイルシステム1は、以下に詳述する処理を行なう。
〔1−2〕分散ファイルシステムの構成
以下、図1及び図2を参照して、一実施形態の一例としての分散ファイルシステム(情報処理システム)1の構成について説明する。
図1は、一実施形態の一例としての分散ファイルシステム1の構成例を示す図であり、図2は、図1に示すFS(File System)クライアント30に着目した分散ファイルシステム1の構成例を示す図である。
図1に示すように、分散ファイルシステム1は、MGS(Management Server)10−1、MDS(Meta Data Server)10−2、及びn−2個(nは2以上の整数)のOSS(Object Storage Server)10−3〜10−nをそなえる。また、分散ファイルシステム1は、MGT(Management Target)20−1、MDT(Meta Data Target)20−2、及びn−2個のOST(Object Storage Target)20−3〜20−nをさらにそなえる。さらに、分散ファイルシステム1は、m個(mは0以上の整数)のFSクライアント30−1〜30−m、及びネットワーク40をさらにそなえる。
以下、MGS10−1、MDS10−2、OSS10−3〜10−nを区別しない場合には、単にサーバ・サービス(サーバ,情報処理装置)10という。また、MGT20−1、MDT20−2、OST20−3〜20−nを区別しない場合には、単に論理ボリューム20という。
分散ファイルシステム1としては、Lustre−1.8版を用いたファイルシステムが例として挙げられる。
分散ファイルシステム1が想定するシステムは、ネットワーク層を介したサーバ数対FSクライアント数がn対mのシステムである。図1に示すように、複数のサーバ10及びFSクライアント30は、ネットワーク層(ネットワーク40)の上に位置し、互いに通信し合いながら1つの分散ファイルシステム1を構成する。
図1に示すように、分散ファイルシステム1における複数のサーバ10は、それぞれ1つの独自論理ボリューム20を管理する。
MGT20−1は、分散ファイルシステム1の構成情報を保持する論理ボリュームであり、MGS10−1は、MGT20−1を管理するサーバである。
OST20−3〜20−nは、テキストや計算結果等のデータ(ファイル,オブジェクト)を保持する論理ボリュームであり、OSS10−3〜10−nは、それぞれOST20−3〜20−nを管理するサーバである。
MDT20−2は、OST20−3〜20−nが保持するファイルの更新時間やファイルサイズ等のメタデータを保持する論理ボリュームであり、MDS10−2は、MDT20−2を管理するサーバである。
各FSクライアント30は、図2に示すように、サーバ数に応じたクライアント・サービス(クライアント)をそなえる。具体的には、各FSクライアント30は、MGC(Management Client)130−1、MDC(Meta Data Client)130−2、及びn−2個のOSC(Object Storage Client)130−3〜130−nをそなえる。
以下、MGC130−1、MDC130−2、OSC130−3〜130−nを区別しない場合には、単にクライアント・サービス(クライアント,端末装置)130という。
MGC130−1はMGS10−1との間でのリクエスト処理、MDC130−2はMDS10−2との間でのリクエスト処理、OSC130−3〜130−nはそれぞれOSS10−3〜10−nとの間でのリクエスト処理を担っている。
つまり、図1に示すサーバ数がn個、FSクライアント数がm個の分散ファイルシステム1においては、サーバ数対クライアント数はn対(n*m)になる(図2参照)。
ここで、1つのクライアント130に着目すると、クライアント130が対象とする通信相手は、1つのサーバ10のみとなる。以下、サーバ10及びクライアント130の1対1の接続確立方法に着目して説明する。
〔1−3〕分散ファイルシステムの説明
ここで、一実施形態に係る分散ファイルシステム1について、簡単に説明する。
上述のように、追放済クライアントにおいて、ユーザ・アプリケーションからのリクエストがサーバへ送信されると、サーバからユーザ・アプリケーションへエラーが返ってしまう。なお、追放済クライアントとは、サーバ側でクライアント追放後に一切リクエストを発行しておらず、よって追放復旧処理が実行されていないクライアントをいう。
また、図20に示す手法では、システム規模が拡大し、サーバ数やクライアント数が増大するに従って、定期的にpingリクエストを送信することによる情報処理システムの負荷が膨大になる。
これに対し、一実施形態に係る分散ファイルシステム1は、以下の(i)〜(iii)の処理を行なうことで、上述した不都合を解消する。
(i)サーバ(情報処理装置)10は、クライアント(端末装置)130との接続を解除する追放予定時刻(予定時刻)をクライアント130に通知する。
(ii)クライアント130は、サーバ10へリクエスト(要求)を送信する際に、現在時刻がサーバ10から通知された追放予定時刻を経過しているか否かを判断する。
(iii)クライアント130は、現在時刻が追放予定時刻を経過していると判断した場合、サーバ10へリクエストを送信する前に、サーバ10との間で接続を確立するための接続リクエストをサーバ10へ送信する。
上記(i)〜(iii)の処理により、分散ファイルシステム1は、同一の追放予定時刻をサーバ10側及びクライアント130側の双方に持たせ、追放予定時刻を使用してサーバ10側とクライアント130側を同期させることができる。
このように、分散ファイルシステム1は、追放予定時刻を過ぎてサーバ10側で追放済状態のクライアント130に対して、リクエストの送信の際に自身がサーバ10により追放済であることを認識させる(追放復旧処理を行なう契機を与える)ことができる。従って、クライアント130は、リクエストを送信する前に、追放復旧処理により新規接続を確立してから(サーバ10側と整合性のとれた新規の接続情報を作成してから)、リクエストを送信することができる。
これにより、クライアント130では、サーバ10では既に削除されたサーバ側接続情報に対応する古いクライアント側接続情報を参照したことによる、重大エラーの発生を抑制でき、ユーザ・アプリケーションに対してエラーが返る確率を下げることができる。
また、定期的なpingリクエストの送信も行なわれないため、図20に示す技術よりも分散ファイルシステム1の負荷(処理負荷)を軽減させることもできる。
以上のように、分散ファイルシステム1によれば、ユーザ・アプリケーションに対してエラーが返される頻度を低減させるとともに、システム1の負荷の増大を抑制させながら、サーバ10とクライアント130との間の接続を再確立することができる。
〔1−4〕ハードウェア構成
次に、図3を参照して、分散ファイルシステム1のハードウェア構成について説明する。図3は、図1に示すサーバ10及びFSクライアント30それぞれのハードウェア構成例を示す図である。
サーバ10及びFSクライアント30は、図3に示すように、それぞれCPU10a及び30a、メモリ10b及び30b、記憶部10c及び30c、ネットワークインタフェース10d及び30d、並びに入出力部10e及び30eをそなえる。また、サーバ10及びFSクライアント30は、図3に示すように、記録媒体10f及び30f、並びに読取部10g及び30gをさらにそなえる。
CPU10a及び30aは、それぞれ、図3における対応する各ブロック10b〜10g及び30b〜30gと接続され、種々の制御や演算を行なう処理装置(プロセッサ)である。CPU10a及び30aは、メモリ10b及び30b、記録媒体10f及び30f、又は図示しないROM(Read Only Memory)等に格納されたプログラムを実行することにより、サーバ10又はFSクライアント30における種々の機能を実現する。
メモリ10b及び30bは、種々のデータやプログラムを一時的に格納する記憶装置である。CPU10a及び30aは、プログラムを実行する際に、メモリ10b及び30bにデータやプログラムを格納し展開する。なお、メモリ10b及び30bとしては、例えばRAM(Random Access Memory)等の揮発性メモリが挙げられる。
記憶部10c及び30cは、種々のデータやプログラム等を格納するハードウェアである。記憶部10c及び30cとしては、例えばHDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、フラッシュメモリ等の不揮発性メモリ等の各種デバイスが挙げられる。
ネットワークインタフェース部10d及び30dは、有線又は無線による、サーバ10−ネットワーク40間、又は、FSクライアント30−ネットワーク40間の接続及び通信の制御を行なう。ネットワークインタフェース部10d及び30dとしては、TCP(Transmission Control Protocol)/IPをサポートするLAN(Local Area Network)カード等のネットワークコントローラが例として挙げられる。また、ネットワークインタフェース部10d及び30dとしては、インフィニバンド(InfiniBand,登録商標)等のHCA(Host Channel Adapter)や、ファイバチャネル(Fibre Channel)コントローラ等も例として挙げられる。
入出力部10e及び30eは、例えばマウスやキーボード等の入力装置、及びディスプレイやプリンタ等の出力装置の少なくとも一方を含むものである。入出力部10e及び30eは、入力装置によりサーバ10及びFSクライアント30のオペレータ(管理者)やユーザ(使用者)の操作等による動作命令を受け付ける一方、サーバ10及びFSクライアント30による監視結果等の処理結果を出力装置に表示(出力)する。
記録媒体10f及び30fは、フラッシュメモリやROM等の記憶装置であり、種々のデータやプログラムを記録する。読取部10g及び30gは、光ディスクやUSB(Universal Serial Bus)メモリ等のコンピュータ読取可能な記録媒体10h及び30hに記録されたデータやプログラムを読み出す装置である。
記録媒体10f及び10hの少なくとも一方には、本実施形態に係るサーバ10の機能を実現する制御プログラムが格納されてもよく、記録媒体30f及び30hの少なくとも一方には、FSクライアント30の機能を実現する制御プログラムが格納されてもよい。例えば、CPU10a及び30aは、それぞれ、記録媒体10f及び30fから読み出した制御プログラム、又は、読取部10g及び30gを介して記録媒体10h及び30hから読み出した制御プログラムを、メモリ10b及び30b等の記憶装置に展開して実行する。これにより、サーバ10としてのコンピュータ及びFSクライアント30としてのコンピュータは、CPU10a及び30aにより、本実施形態に係るサーバ10及びFSクライアント30の機能を実現する。
なお、上述した各ブロック10a〜10g間、各ブロック30a〜30g間は、それぞれバスで相互に通信可能に接続される。
また、分散ファイルシステム1の上述したハードウェア構成は例示である。従って、個々のストレージシステム1内、サーバ10内、又はFSクライアント30内でのハードウェアの増減や分割、任意の組み合わせでの統合等は、適宜行なわれてもよい。例えば、図3に示すサーバ10のハードウェアは、1以上のサーバ10で共用されてもよく、図3に示すFSクライアント30のハードウェアは、1以上のFSクライアント30で共用されてもよい。
さらに、図1に示す論理ボリューム20は、複数の物理ボリュームを搭載する図示しないストレージ装置の記憶領域や記憶部10cの記憶領域等により実現される。
〔1−5〕分散ファイルシステムの詳細な構成
〔1−5−1〕サーバの構成
次に、図4を参照して、一実施形態の一例としてのサーバ10の構成について説明する。図4は、図1に示すサーバ10の機能構成例を示す図である。
サーバ10は、上述のように、MGS10−1、MDS10−2、又はOSS10−3〜10−nとしての機能を有し、接続を確立したクライアント130に対してサービスを提供する。
また、一実施形態に係るサーバ10は、保持部11、受信処理部12、リクエスト処理部13、及び追放処理部14を有する。
保持部11は、クライアント130ごとに、クライアント130に関する接続情報11aを保持するものであり、例えば、メモリ10b又は記憶部10c等により実現される。
接続情報11aには、接続管理情報及び資源排他管理情報が含まれ得る。接続管理情報は、クライアント130との接続(コネクション)に関する情報であり、資源排他管理情報は、排他制御に用いられる構造体(例えばリソースのロック範囲)及びそれに紐付られたリソースに関する情報である。
また、接続情報11aは、クライアント130を追放する(クライアント130との接続を解除する)追放予定時刻(予定時刻)11bを含む。
図5は、一実施形態の一例としてのサーバ10及びクライアント130が保持する追放予定時刻を説明する図である。
例えば、図5に示すように、サーバ10(図5の説明では、便宜上サーバAという)が、3つのクライアント130(図5の説明では、便宜上クライアントA〜Cという)の各々との間で接続を確立している場合を説明する。この場合、サーバAは、保持部11に、サーバAと接続を確立している全てのクライアント130の接続情報11a、つまり、クライアントAの接続情報11a−1、クライアントBの接続情報11a−2、及びクライアントCの接続情報11a−3を保持する。また、サーバAが保持する接続情報11a−1〜11a−3には、それぞれ、クライアントA〜Cの追放予定時刻11b−1〜11b−3が含まれる。
受信処理部12は、クライアント130からの接続リクエスト、書込/読出等の各種リクエスト等の情報を受信し、接続リクエストや各種リクエストが、サーバ10が保持する接続情報11aに従っているか否かを判断して、判断結果に応じた所定の処理を行なう。
例えば、受信処理部12は、接続リクエストを受信すると、接続リクエストの送信元のクライアント130に関する接続情報11aが保持部11に保持されているか否かを判断する。保持されていない場合、受信処理部12は、当該クライアント130に関する接続情報11aを新規に作成するため、接続リクエストをリクエスト処理部13に渡す。
一方、当該クライアント130に関する接続情報11aが保持部11に保持されている場合、受信処理部12は、現在時刻が追放予定時刻11bを経過しているか否かを判断する。現在時刻が追放予定時刻11bを経過していない場合、リクエスト処理部13に当該クライアント130へのエラーを返させる。また、現在時刻が追放予定時刻11bを経過している場合、受信処理部12は、当該クライアント130に関する既存の接続情報11aを削除するため、追放処理部14に所定のシグナルを送信する。シグナル送信後、受信処理部12は、当該クライアント130に関する接続情報11aを新規に作成するため、接続リクエストをリクエスト処理部13に渡す。
また、受信処理部12は、クライアント130から、接続リクエスト以外の書込/読出等の各種リクエストを受信すると、当該リクエストの送信元のクライアント130に関する接続情報11aが保持部11に保持されているか否かを判断する。保持されていない場合、受信処理部12は、リクエスト処理部13に当該クライアント130へのエラーを返させる。
一方、当該クライアント130に関する接続情報11aが保持部11に保持されている場合、受信処理部12は、当該クライアント130からのリクエストをリクエスト処理部13に渡す。
リクエスト処理部13は、接続情報11a及び追放予定時刻11bの管理、並びに受信処理部12が受信した接続リクエスト又は各種リクエストに応じた処理、リプライの作成及び送信等を行なう。
例えば、リクエスト処理部(接続管理部)13は、受信処理部12から接続リクエスト又は各種リクエストを渡されると、追放予定時刻11bを取得する。そして、リクエスト処理部13は、接続リクエスト又は各種リクエストの送信元のクライアント130に関する接続情報11aと対応付けて管理する。
具体的には、リクエスト処理部13は、受信処理部12から接続リクエストを渡されると、当該クライアント130に関する新規の接続情報11aを生成し、生成した接続情報11aを、当該クライアント130に対応付けて保持部11に保持させる。そして、リクエスト処理部13は、接続リクエストに応じた所定の処理を実行し、追放予定時刻11bを計算して、生成した接続情報11aに記録する。
また、リクエスト処理部13は、受信処理部12から各種リクエストを渡されると、当該リクエストに応じた所定の処理(例えば書込処理/読出処理等)を実行し、追放予定時刻11bを更新して、当該クライアント130に関する接続情報11aに記録する。
そして、リクエスト処理部13は、データ部に各種情報を記録した、接続リクエスト又は各種リクエストへのリプライを生成し、生成したリプライを接続リクエスト又は各種リクエストの送信元のクライアント130へ送信する。
ここで、追放予定時刻11bは、クライアント130から接続リクエスト又は各種リクエストを受けると、リクエスト処理部13により、現在時刻に所定時間(例えば25秒)が加算されることにより取得(計算・更新)される。
また、リクエスト処理部(通知部)13は、取得した追放予定時刻11bを、接続リクエスト又は各種リクエストの送信元のクライアント130へ送信する。
図6は、図4に示すリクエスト処理部13による追放予定時刻11bの通知手法の一例を示す図である。
例えば、サーバ10(リクエスト処理部13)は、図6に示すように、クライアント130から受信した接続リクエスト又は各種リクエストに対するリプライ(例えばヘッダ部又はデータ部)に、追放予定時刻11bを設定して(含めて)送信することができる。つまり、リクエスト処理部13による追放予定時刻11bの取得処理は、クライアント130に対してリプライ(応答)を送信(作成)する際に行なわれてよい。追放予定時刻11bがリプライを送信(作成)する際に取得される場合、現在時刻は、リプライの送信(作成)時の時刻となる。
なお、図6に示すように、接続リクエスト又は各種リクエストには、ヘッダ部に送信先及び送信元を一意に定めるために使用される送信先ID及び送信元IDが含まれる。また、サーバ10は、これらの情報(例えば接続リクエスト又は各種リクエスト中の送信元ID)に基づいて、処理対象となる接続情報11aを一意に求めることができる。
以上のように、リクエスト処理部13は、クライアント130から初めて接続リクエストを受信すると、当該クライアント130に関する接続情報11aを生成して保持部11に保持する。また、リクエスト処理部13は、取得(算出)した追放予定時刻11bを接続情報11aに記録するとともに、当該クライアント130へ通知する。なお、「クライアント130から初めて接続リクエストを受信」とは、追放済且つ追放復旧処理が行なわれていないクライアント130等、サーバ10が対応する接続情報11aを保持していないクライアント130から接続リクエストを受信した場合も含む。
また、リクエスト処理部13は、クライアント130から各種リクエストを受信するたびに、取得(更新)した追放予定時刻11bを接続情報11aに記録するとともに、当該クライアント130へ通知する。
なお、リクエスト処理部13は、受信処理部12からエラーの送信を指示されると、接続リクエスト又は各種リクエストの送信元のクライアント130へ、エラーを送信する。エラーが送信される原因としては、上述のように、クライアント130に関する接続情報11aが保持部11に保持されている状態で、当該クライアント130から接続リクエストを受けた場合が挙げられる。また、エラーが送信される他の原因としては、保持部11に接続情報11aが保持されていないクライアント130から、接続リクエスト以外の各種リクエストを受けた場合等も挙げられる。
追放処理部(接続解除部)14は、現在時刻が追放予定時刻11bを経過しているクライアント130を追放する(クライアント130との間で確立された接続を解除する)クライアント追放処理(接続解除処理)を行なう。
具体的には、追放処理部14は、所定時間(例えば25秒)ごとに、保持部11に保持された1以上の接続情報11aを順に参照し、現在時刻が追放予定時刻11bを経過しているか否かを判断する。そして、追放処理部14は、現在時刻が追放予定時刻11bを経過していると判断した場合、対応する接続情報11aを無効化し、クライアント130との間の接続を切り離す(切断する)。
なお、リクエスト処理部13は、例えば、保持部11から当該クライアント130に関する接続管理情報及び資源排他情報等の接続情報11aを削除することで、接続情報11aを無効化することができる。
また、追放処理部14は、受信処理部12から所定のシグナルを受信した場合にも、保持部11に保持された1以上の接続情報11aについてクライアント追放処理を行なう。
すなわち、追放処理部14は、所定のタイミングとして、前回クライアント追放処理を行なってから所定時間が経過したとき、及び所定のシグナルを受信したとき、のいずれか早いタイミングで、クライアント追放処理を行なう。
なお、保持部11に保持された1以上の接続情報11aは、例えば双方向リストにより管理され、追放処理部14は、クライアント追放処理において、双方向リストを順に辿ることで、判断対象の接続情報11aを選択することができる。
以上のように、追放処理部14は、定期的にクライアント130の接続情報11aを監視し、追放予定時刻11bを経過したクライアント130の接続情報11aがある場合には当該クライアント130を追放する。
従来、クライアント−サーバ間で一度接続が確立されると、クライアントが明示的に接続の切断を指示されるまで、サーバにはクライアントの接続情報が保持されていることが期待されていた。しかし、上述した追放処理部14によれば、追放予定時刻11bを経過したクライアント130の接続情報11aを積極的に破棄することが可能となり、サーバ10のメモリ10b等のメモリ使用量を削減することができる。また、サーバ10上のクライアント130の接続情報量が削減されるため、接続情報11aの検索速度を向上させることができる。
また、リクエスト処理部13は、設定する追放予定時刻11b(差分間隔)を、例えば図20に示す例のpingリクエストの送信間隔と同程度とすることができる。これにより、分散ファイルシステム1は、ping方式と同程度のレベルで、ユーザ・アプリケーションに重大なエラーが返る可能性を確実に排除することができる。
なお、上述したサーバ10において、受信処理部12及びリクエスト処理部13の機能は、リクエストハンドラを実行するスレッドに持たせることができる。また、追放処理部14の機能は、クライアント130の追放を検知・実行するスレッド(クライアント追放用スレッド)に持たせることができる。
サーバ10は、リクエストハンドラを実行するスレッドを複数(例えばクライアント130の数)実行することができ、また、1つのクライアント追放用スレッドを実行することができる。例えば、クライアント追放用スレッドは、リクエストハンドラを実行する各スレッドから所定の信号を入力される都度、起動し、クライアント追放処理を実行する。
なお、受信処理部12及びリクエスト処理部13は、例えば、ネットワークインタフェース部10dと、メモリ10bに展開された制御プログラムを実行するCPU10aとが協働することにより実現される。また、追放処理部14は、例えば、メモリ10bに展開された制御プログラムを実行するCPU10aにより実現される。
〔1−5−2〕クライアントの構成
次に、図7を参照して、一実施形態の一例としてのクライアント130の構成について説明する。図7は、図2に示すクライアント130の機能構成例を示す図である。
クライアント130は、上述のように、各FSクライアント30内にサーバ10の数と同数そなえられ、対応するサーバ10と当該サーバ10との間で確立された接続を用いて1対1の通信を行なう。
また、一実施形態に係るクライアント130は、保持部31、受信処理部32、時刻管理部33、及び送信処理部34を有する。
保持部31は、自クライアント130に対応するサーバ10に関する接続情報31aを保持するものであり、例えば、メモリ30b又は記憶部30c等により実現される。
なお、接続情報31aは、自クライアント130が追放済クライアントでない場合、接続相手のサーバ10が保持する自クライアント130に関する接続情報11aに対応するものであり、当該接続情報11aと同様の情報を含むことができる。
また、接続情報31aは、サーバ10から通知された追放予定時刻(予定時刻)31bを含む。なお、追放予定時刻31bは、対応するサーバ10が管理する追放予定時刻11bと同一の時刻であるが、便宜上、クライアント130が保持するものを追放予定時刻31bという。
例えば、図5に示すように、クライアントA〜Cは、それぞれ、保持部31−1〜31−3に、サーバAの接続情報31a−1〜31a−3を保持する。また、接続情報31a−1〜31a−3には、それぞれ、各クライアントA〜Cがサーバ10から通知された追放予定時刻31b−1〜31b−3が含まれる。なお、追放予定時刻31b−1〜31b−3は、それぞれ、サーバ10が保持部11に保持する追放予定時刻11b−1〜11b−3と同時刻である。
受信処理部32は、サーバ10から送信されたリクエスト(例えば分散ロック要求)や、リクエストに対するリプライ、エラー等の情報を受信する。
また、受信処理部32は、接続リクエスト又は各種リクエストを送信したサーバ10から、リプライを受信すると、当該リプライに含まれる追放予定時刻31bを取得して、管理部33に渡す。
管理部33は、接続情報31a及び追放予定時刻31bの管理、並びに各種リクエストの送信の際に現在時刻と追放予定時刻31bとの比較を行なう。
例えば、管理部(時刻管理部)33は、受信処理部32がサーバ10から受信した追放予定時刻31bをサーバ10に関する接続情報31aに対応付けて管理する。
また、管理部(判断部)33は、送信処理部34がサーバ10へ書込・読出等の各種リクエストを送信する際に、現在時刻がサーバ10から通知され管理部33が管理する追放予定時刻31bを経過しているか否かを判断する。
現在時刻が追放予定時刻31bを経過していると判断した場合、管理部(接続情報管理部)33は、サーバ10に関する接続情報31aを無効化(例えば保持部31から削除)する。そして、管理部33は、送信処理部34にサーバ10へ接続リクエストを送信させ、サーバ10との間で接続を確立させる。つまり、管理部33は、受信処理部32がサーバ10から接続リクエストのリプライを受信すると、当該リプライの内容に基づき接続情報31aを作成し、保持部31に保持させる。そして、管理部33は、送信処理部34に、作成した接続情報31aに基づいてサーバ10へ各種リクエストを送信させる。
一方、現在時刻が追放予定時刻31bを経過していないと判断した場合、管理部33は、送信処理部34に、既に保持部31に保持されている接続情報31aに基づいてサーバ10へ各種リクエストを送信させる。
以上のように、管理部33は、自クライアント130がサーバ10側で追放済であると判断すると、送信処理部34に、サーバ10へ各種リクエストを送信させる前に、接続リクエストをサーバ10へ送信させる。
送信処理部(送信部)34は、管理部33からの指示に応じて、クライアント130上のユーザ・アプリケーションやシステムが生成した接続リクエスト、各種リクエスト等の情報をサーバ10へ送信する。例えば、送信処理部34は、図6に示すように、送信先IDとしてのサーバ10のID及び送信元IDとしてのクライアント130のID、その他接続情報31a等を含む接続リクエスト/各種リクエストを生成して送信する。
なお、クライアント130では、接続リクエスト及び各種リクエストの発行元が、ユーザ・アプリケーションからシステムスレッドまで多様である。例えば、接続リクエストは、クライアント130のシステム等から発行され、各種リクエストは、クライアント130上で実行されるユーザ・アプリケーションによるシステムコール(syscall)等である。
以上のように、クライアント130は、リクエスト送信のたびに、サーバ10から通知された追放予定時刻31bを参照し、現在時刻が追放予定時刻31bを超過していた場合、これまでの接続情報31aを使用せず、再接続処理が完了してからリクエストを送信する。
図20に示す例では、クライアントのpingリクエスト送信先はシステムを構成するサーバ数に比例して増加するため、サーバ数が増えるほど、各クライアントでpingリクエスト送信処理のためのCPU負荷が増大する。これに対し、クライアント130によれば、サーバ10側の追放検知のためにクライアント130側からpingリクエストを送信せずに済むため、ping方式のようにサーバ台数に比例してクライアントのCPU負荷が増加することを抑制できる。
また、図20に示す例では、pingを受けたサーバは送信元のクライアントにpingリクエストに対する返信を行なう。サーバが返信するpingリクエストの量は、クライアント数に比例して増加するため、クライアント数が増えるほど、各サーバでpingリクエスト返信処理のためのCPU負荷が増大する。これに対し、クライアント130によれば、サーバ10側はクライアント130から受信したpingリクエストに対する返信を行なわずに済むため、ping方式のようにクライアント台数に比例してサーバのCPU負荷が増加することを抑制できる。
さらに、図20に示す例のping方式では、pingリクエストの送信及び返信にネットワーク資源が使用される。上述のように、pingリクエストによるネットワークの負荷は、ping負荷*クライアント数*サーバ数になる。よって、システムが大規模化すると、pingリクエストによるネットワーク負荷は増大し、ネットワーク帯域を圧迫することになる。これに対し、クライアント130によれば、クライアント130の追放復旧処理にpingリクエストを送信せずに済むため、ping方式のようにシステム規模(サーバ及びクライアント台数)に比例してシステムのネットワーク負荷が増大することを抑制できる。
なお、受信処理部32及び送信処理部34は、例えば、ネットワークインタフェース部30dと、メモリ30bに展開された制御プログラムを実行するCPU30aとが協働することにより実現される。また、管理部33は、例えば、メモリ30bに展開された制御プログラムを実行するCPU30aにより実現される。
〔1−5−3〕サーバ及びクライアント間の通信
次に、図8を参照して、図1に示すサーバ10及びクライアント130間の通信について説明する。図8は、図2に示すサーバ10及びクライアント130間の通信の一例を説明するシーケンス図である。
図8に示すように、サーバ10(リクエスト処理部13)は、各クライアント130から最後に受信したリクエストの時刻から、追放予定時刻11bを計算(又は更新)し、クライアント130に追放予定時刻11b(31b)を通知する(処理T1,T2)。このとき、サーバ10は、追放予定時刻11bとして例えば受信時刻又は返信時刻(図8の例では返信時刻)から25秒後を計算して、保持部11に記録する。
なお、クライアント130は、サーバ10から通知された追放予定時刻31bを保持部31に記録する。クライアント130(送信処理部34)は、接続リクエスト以外の各種リクエストを送信する際に、追放予定時刻31bを確認し、現在時刻が追放予定時刻31bを経過していない場合、各種リクエストを送信する。
ここで、サーバ10(追放処理部14)は、追放予定時刻11bがくると、クライアント130をサーバ10から追放する(処理T3)。
クライアント130(送信処理部34)は、各種リクエスト、例えばユーザ・アプリケーションによるシステムコールを送信する際に、現在時刻が追放予定時刻31bを経過していた場合、当該リクエストを送信する前に、接続リクエストを送信する(処理T4)。サーバ10は、接続リクエストに応じて再接続処理を行なって接続状態を確立し、新たに計算した追放予定時刻31bをリプライに含めてクライアント130へ送信する(処理T5)。
クライアント130は、再接続が確立されてから、サーバ10へリクエスト(システムコール)を送信する(処理T6)。サーバ10(リクエスト処理部13)は、クライアント130からのリクエストに対して処理を行ない、リプライを返す(処理T7)。
このように、サーバ10は、クライアント130からのリクエストを受信した際に取得した追放予定時刻11bに基づいて、クライアント130接続情報31aを追放(無効化)するか否かを決定する。また、クライアント130は、サーバ10から通知された追放予定時刻31bに基づいて、通常のリクエスト(各種リクエスト)の送信前に、接続リクエストを送信するか否かを決定する。
ところで、既述のように、サーバ側のクライアント追放処理と、クライアント側の追放復旧処理とは、完全に非同期的に行なわれるため、追放済クライアントが長期間に亘って存在することもしばしばある。
追放済クライアントでは、自身がサーバ側で追放されていることを認識していない状態で、起動されたユーザ・アプリケーションから追放済クライアントへのリクエストが発行される場合がある。追放済クライアントは、発行されたリクエストがサーバへのアクセスを伴うものであると、リクエストをサーバへ送信するが、サーバは、追放済クライアントからのリクエストに対して重大エラーを返す。このように、ユーザ・アプリケーションからのリクエストが、追放済クライアントへ上述した追放復旧契機を与えしまい、ユーザ・アプリケーションに対してエラーが返ってしまうことがしばしば発生する。
以上のように、クライアント追放処理は、システム中のデータ破壊やシステム自体の破壊の可能性を排除しつつ、システム全体がハング状態に陥る可能性を排除する機能である。つまり、クライアント追放処理が実行されたためにユーザ・アプリケーションに対してエラーが返ってしまう可能性を、完全に排除することは難しい。
しかしながら、追放済状態になってから数分〜数時間経過しているような場合でも追放済クライアントが追放復旧処理を実行せず、ユーザ・アプリケーションが発行したリクエストにサーバからエラーが返ってしまうという状況はシステムの安定性からみて好ましくない。
これに対して、一実施形態に係る分散ファイルシステム1では、クライアント130が追放予定時刻31bを持つ。これにより、クライアント130は、各種リクエストを送信する際に、自クライアント130が追放済か否かを判断し、追放済である場合、再接続を行なって新規の接続情報31aを獲得してから当該リクエストを送信する。よって、上述したように、長期間に亘って追放済状態であった古い接続情報31aを参照してクライアント130が各種リクエストを送信した結果、重大なエラーがユーザ・アプリケーションに返されるという状況の発生を抑止することができる。
〔1−6〕動作例
次に、図9〜図14を参照して、上述の如く構成された一実施形態の一例としての分散ファイルシステム1における動作例を説明する。
〔1−6−1〕サーバ側の動作例
はじめに、サーバ10による動作例を説明する。図9及び図10は、図2に示すサーバ10によるリクエスト受信処理及びクライアント追放処理の一例をそれぞれ説明するフローチャートである。
〔1−6−1−1〕リクエスト受信処理
サーバ10によるリクエスト受信処理では、リクエストハンドラを実行するスレッド(受信処理部12)により、サーバ10に到着したリクエストが受け取られ、リクエストごとに固有の処理が行なわれてから、処理結果が送信元クライアント130へ返信される。
具体的には、図9に示すように、サーバ10(受信処理部12)により、クライアント130からリクエストが到着するまで待ち合わせが行なわれる(ステップS1)。リクエストが受信されると、受信処理部12により、受信したリクエストの内容が確認され、例えば、リクエストが接続リクエストであるか否かが判断される(ステップS2)。
リクエストが接続リクエストであると判断された場合(ステップS2のYesルート)、受信処理部12により、リクエストに記録されているクライアント130側の接続情報31aからサーバ10上の接続情報11aが検索される。そして、受信処理部12により、サーバ10上に送信元クライアント130に関する接続情報11aが存在するか否かが判断される(ステップS3)。
接続情報11aが存在すると判断された場合(ステップS3のYesルート)、既に送信元クライアント130と接続が確立しているため、受信処理部12により、現在時刻が追放予定時刻11bを経過しているか否かが判断される(ステップS4)。すなわち、既に接続情報11aが存在し、クライアント130が追放予定時刻11b通りに接続要求を送っていたとしても、サーバ10での追放処理のタイミングが遅れてクライアント130の接続情報11aが残ってしまう等の状況が想定される。なお、サーバ10での追放処理のタイミングが遅れる場合としては、サーバ10で処理負荷が高くて処理が滞った場合や、通信で想定以上の時間がかかってしまった場合等が挙げられる。
そこで、このような遅延状況を考慮し、サーバ10は、接続確立状態で接続リクエストを受信した場合、上記ステップS4の処理を行なう。現在時刻が追放予定時刻11bを経過していると判断された場合(ステップS4のYesルート)、受信処理部12により、クライアント追放処理を実行させるためにクライアント追放用スレッド(追放処理部14)にシグナルが送信される(ステップS5)。
次いで、追放処理部14による後述するクライアント追放処理により、新規に接続情報11aが生成され、保持部11に記録される(ステップS6)。そして、リクエスト処理部13により、各種リクエストに固有の処理が行なわれ、処理結果がリクエストに対する返信メッセージ(リプライ)に設定される(ステップS7)。
また、リクエスト処理部13により、現在時刻にx秒(例えば25秒)を加算した追放予定時刻11bが作成され、接続情報11aに記録される(ステップS8)。そして、リクエスト処理部13により、追放予定時刻11b(31b)がステップS7で生成された返信メッセージに設定され、クライアント130へ送信され(ステップS9)、処理がステップS1に移行する。
一方、ステップS3において、受信処理部12により接続情報11aが存在しないと判断された場合(ステップS3のNoルート)、送信元クライアント130と接続が確立されていない(又は追放済である)ため、処理がステップS6に移行する。
また、ステップS4において、現在時刻が追放予定時刻11b以前であると判断された場合(ステップS4のNoルート)、処理がステップS11に移行する。すなわち、この場合、接続が確立されているのにクライアント130から接続リクエストが送信されてきたという状況であるため、リクエスト処理部13により、接続が既に確立されていることを表すエラーが送信元クライアント130に返信される。そして、処理がステップS1に移行する。
さらに、ステップS2において、リクエストが接続リクエスト以外の各種リクエストであると判断された場合(ステップS2のNoルート)、受信処理部12により、リクエストに記録されているクライアント130側の接続情報31aからサーバ10上の接続情報11aが検索される。そして、受信処理部12により、サーバ10上に送信元クライアント130に関する接続情報11aが存在するか否かが判断される(ステップS10)。
接続情報11aが存在しないと判断された場合(ステップS10のNoルート)、接続が確立されていない状態で各種リクエストが受信されたため、リクエスト処理部13により、クライアント130へエラーが返される(ステップS11)。そして、処理がステップS1に移行する。
一方、接続情報11aが存在すると判断された場合(ステップS10のYesルート)、リクエスト固有の処理を進めるために処理がステップS7に移行する。
なお、この場合にも、ステップS4について上述した説明と同様に、現在時刻が追放予定時刻11bを経過している可能性がある。しかし、接続リクエスト以外の各種リクエストに関しては、ステップS10の判断の段階では接続情報11aが参照できている。従って、後述するクライアント追放用スレッドにおいて、リクエスト受信処理中に接続情報11aが削除されないように排他関係が適切にとられていれば、リクエスト受信処理完了時に追放予定時刻11bが上書き更新される。これにより、クライアント130が追放されなくなるため、上述したステップS4と同様の問題は発生しない。例えば、リクエストハンドラを実行するスレッドと、クライアント追放用スレッドとの間で、同時に同じ接続情報11aの処理を行なわないように、スピンロック等をかけること等により、適切な排他関係とすることができる。
〔1−6−1−2〕クライアント追放処理
クライアント追放用スレッド(追放処理部14)は、シグナル若しくはx秒(例えば25秒)間隔で動作開始し、接続情報11aの追放予定時刻11bを確認して、現在時刻を超過しているものがあればクライアント追放処理を実行する。
具体的には、図10に示すように、追放処理部14により、シグナルが受信される若しくは25秒が経過するまで待機され(ステップS21,S22,S22のNoルート)。シグナルが受信される若しくは25秒が経過すると(ステップS22のYesルート)、追放処理部14により、未判定の接続情報11aの追放予定時刻11bが取得され(ステップS23)、現在時刻が追放予定時刻11bを経過しているか否かが判断される(ステップS24)。
現在時刻が追放予定時刻11bを経過していると判断された場合(ステップS24のYesルート)、追放処理部14により、接続情報11aが削除される(ステップS25)。そして、追放処理部14により、保持部11が保持する全ての接続情報11aに対して判定が行なわれたか否かが判断される(ステップS26)。
全ての接続情報11aに対して判定が行なわれたと判断された場合(ステップS26のYesルート)、処理がステップS21に移行する。一方、全ての接続情報11aに対して判定が行なわれていないと判断された場合(ステップS26のNoルート)、処理がステップS23に移行する。
また、ステップS24において、現在時刻が追放予定時刻11bを経過していないと判断された場合(ステップS24のNoルート)、処理がステップS26に移行する。
ところで、クライアント追放処理では、接続情報11aについて、ステップS24の確認が行なわれた直後に現在時刻が追放予定時刻11bを経過してしまう場合が考えられるが、以下の(a)及び(b)により問題とはならない。
(a)この接続情報11aを対象にした接続リクエストが到着すると、図9のステップS3の判断により古い接続情報11aが使用されず、新規接続情報11aが作成される(ステップS3のNoルート,S6)。また、ステップS5で送信されるシグナルによって、クライアント追放用スレッドが現在のループ処理を完了してもすぐに起床してループ処理を再開することになるため(図10のステップS22のYesルート)、古い接続情報11aは速やかに削除される。
(b)この接続情報11aを対象にした接続リクエスト以外の各種リクエストが到着すると、図9のステップS10において接続情報11aが存在する場合、リクエスト処理の完了時点で追放予定時刻11bが更新される(ステップS10のNoルート,S7)。すなわち、ステップS10の判断の際に、リクエストハンドラを処理するスレッドとクライアント追放用スレッドとの間で接続情報11aの排他関係が適切にとれていればよい。
〔1−6−2〕クライアント側の動作例
次に、クライアント130による動作例を説明する。図11〜図14は、図2に示すクライアント130による接続リクエスト送信処理、リクエスト送信処理、返信受信待ち処理、及び返信受信処理の一例をそれぞれ説明するフローチャートである。
〔1−6−2−1〕接続リクエスト送信処理
クライアント130では、接続対象のサーバ10へ接続を確立するための接続リクエストが送信される。
具体的には、図11に示すように、送信処理部34によりサーバ10へ接続リクエストが送信され(ステップS31)、返信(リプライ)の受信の待ち合わせが行なわれる(ステップS32,図13のステップS51〜S60)。
受信処理部32によりサーバ10から返信が受信されると、受信処理部32により、返信の内容が解析され、接続リクエストによりエラーが発生していないか否かが判断される(ステップS33)。
エラーが発生していないと判断された場合(ステップS33のYesルート)、管理部33により、返信から追放予定時刻31bが取得され(ステップS34)、現在時刻が取得した追放予定時刻31bを経過しているか否かが判断される(ステップS35)。
現在時刻が追放予定時刻31bを経過していないと判断された場合(ステップS35のNoルート)、管理部33により、接続リクエストが成功したと判断され、サーバ10に対する接続情報31aが新規に作成される(ステップS36)。また、管理部33により、作成した接続情報31aに取得した追放予定時刻31bが記録され(ステップS37)、処理が正常終了する(ステップS38)。
一方、ステップS33において、接続リクエストにエラー(接続エラー)が発生していると判断された場合(ステップS33のNoルート)、処理が異常終了する(ステップS39)。なお、ステップS33のNoルート経由で処理が異常終了するのは、接続リクエストの送信元(例えばクライアント130のシステム)に接続リクエストをリトライするか否かの判断を委譲するためである。
また、ステップS35において、現在時刻が追放予定時刻31bを経過していると判断された場合にも(ステップS35のYesルート)、処理が異常終了する(ステップS39)。なお、現在時刻が受信したばかりの追追放予定時刻31bを経過してしまっている場合、サーバ10側、クライアント130側、及びクライアント−サーバ間の通信経路のいずれかに異常がある可能性が高い。そこで、リクエスト送信元に判断を委譲するため、ステップS35のYesルート経由でも処理が異常終了するのである。
〔1−6−2−2〕リクエスト送信処理
接続リクエスト送信処理は、クライアント130側でサーバ10との間の接続を確立するための処理であるため、接続管理の観点からは特殊なリクエストである。以下、接続リクエスト以外の、既に接続状態が存在していることを前提としてクライアント130から送信される各種リクエスト(以下の説明では、単にリクエストという)に対する処理について説明する。
具体的には、図12に示すように、管理部33により、リクエスト送信先のサーバ10の情報を含む接続情報31aが検索され、接続情報31aが存在するか否かが判断される(ステップS41)。なお、接続情報31aが検索されるのは、接続が確立されている状態で、ユーザ等の操作によってクライアント130がアンマウント(umount)される場合や、エラー等により接続が切断される場合があるためである。
接続情報31aが存在しないと判断された場合(ステップS41のNoルート)、当該リクエストの送信は、接続が確立されていないサーバ10に対する処理であるため、処理が異常終了する(ステップS50)。
一方、接続情報31aが存在すると判断された場合(ステップS41のYesルート)、管理部33により、現在時刻と接続情報31aに記録されている追放予定時刻31bとが比較され、現在時刻が追放予定時刻31bを経過しているか否かが判断される(ステップS42)。
現在時刻が追放予定時刻31bを経過していると判断された場合(ステップS42のYesルート)、管理部33により、送信処理部34へ接続リクエスト送信処理が指示される(ステップS43,図11のステップS31〜S39)。
次いで、受信処理部32により、接続処理が正常終了したか否かが判断され(ステップS44)、異常終了したと判断された場合(ステップS44のNoルート)、管理部33により、接続情報31aが存在するか(作成されたか)否かが判断される(ステップS49)。接続情報31aが存在しないと判断された場合(ステップS49のNoルート)、接続リトライのために、処理がステップS43に移行する。一方、接続情報31aが存在すると判断された場合(ステップS49のYesルート)、処理がステップS42に移行する。
なお、ステップS49において、接続リクエスト送信が異常終了したにもかかわらず、接続情報31aの存在有無を再度確認する。これは、同時刻に同一クライアント130から同一サーバ10に対して2以上のリクエストが発行され、他のリクエストが先に接続確立を完了していた場合を想定したためである。
一方、ステップS44において、接続処理が正常終了したと判断された場合(ステップS44のYesルート)、送信処理部34により、取得した追放予定時刻31bに基づきサーバ10へリクエストが送信される(ステップS45)。また、受信処理部32により、返信受信待ち処理が実行される(ステップS46,図13のステップS51〜S60)。
なお、ステップS42において、現在時刻が追放予定時刻31bを経過していないと判断された場合(ステップS42のNoルート)、処理がステップS45に移行する。
次いで、受信処理部32により、返信受信待ち処理が正常終了したか否かが判断される(ステップS47)。管理部33により異常終了したと判断された場合(ステップS47のNoルート)、リクエストをリトライすべきか否かを送信元の処理の判断に委ねるため、処理が異常終了する(ステップS50)。
一方、管理部33により返信受信待ち処理が正常終了したと判断された場合(ステップS47のYesルート)、処理が正常終了する(ステップS48)。
〔1−6−2−3〕返信受信待ち処理
クライアント130は、サーバ10へ接続リクエスト又は各種リクエストを送信すると、サーバ10からのリクエスト返信を待ち合わせる処理を行なう。ただし、リクエストが非同期リクエストであった場合、クライアント130は、リクエスト返信を待たずに即座に復帰する。
図13に示すように、クライアント130によりサーバ10へ接続リクエスト又は各種リクエストが送信されると、受信処理部32により、送信したリクエストが同期通信であるか否かが判断される(ステップS51)。送信したリクエストが同期通信ではない、つまり非同期通信であると判断された場合(ステップS51のNoルート)、処理が即座に正常終了する(ステップS56)。
一方、送信したリクエストが同期通信であると判断された場合(ステップS51のYesルート)、受信処理部32により、リクエスト返信の受信の待ち合わせが行なわれる(ステップS52)。また、受信処理部32により、受信されると返信受信処理が行なわれる(ステップS54,図14のステップS61〜S71)。そして、受信処理部32により、返信受信処理が正常終了しているか否かが判断され(ステップS55)、正常終了していると判断された場合(ステップS55のYesルート)、リクエスト返信待ち処理も正常終了する(ステップS56)。
一方、返信受信処理が異常終了していると判断された場合(ステップS55のNoルート)、受信処理部32により、返信受信処理から返されたエラーが、現在時刻が追放予定時刻31bを経過したために発生したエラー以外のエラーであるか否かが判断される(ステップS57)。
エラーが、現在時刻が追放予定時刻31bを経過したために発生したエラー以外のエラーであると判断された場合(ステップS57のYesルート)、処理が返信受信処理と同じエラーで異常終了する(ステップS60)。一方、エラーが、現在時刻が追放予定時刻31bを経過したために発生したエラーである場合(ステップS57のNoルート)、送信処理部34により、非同期通信のpingリクエストが作成される(ステップS58)。そして、送信処理部34により、pingリクエストがサーバ10へ非同期送信されて(ステップS59,図12のステップS41〜S50)、処理が正常終了する(ステップS56)。
なお、ステップS57のNoルート経由で処理が正常終了する理由は、現在時刻が追放予定時刻31bを超過していることを除いて、全ての処理が正常に完了しているためである。つまり、サーバ10に対するリクエストの送信・返信処理自体は正常に完了しており、本来の目的は達成できているためである。
また、ステップS58及びS59で送信処理部34がpingリクエストをサーバ10へ送信するのは、次にクライアント130がサーバ10へリクエストを送信するときに、クライアント追放によるエラーが返されないようにするためである。すなわち、クライアント130は、ステップS58及びS59において、何らかのリクエスト(この場合、システムが発行するpingリクエスト)をサーバ10へ送信し、追放復旧処理を実行しておくのである。
〔1−6−2−4〕返信受信処理
リクエスト返信受信処理は、同期通信の場合、クライアント130におけるリクエストの送信元によって開始される。また、リクエスト返信受信処理は、非同期通信の場合、例えばリクエスト送受信を管理するリクエスト送信元とは別のスレッドからコールバック関数の呼び出し等によって開始される。例えば、クライアント130は、サーバ10からリクエストに対する返信を受信すると、リクエスト固有の返信受信処理を行なう。
具体的には、図14に示すように、受信処理部32により、受信したリクエスト返信メッセージの内容が解析され(ステップS61)、通信エラーが発生しているか否かが判断される(ステップS62)。
受信処理部32により、通信エラーが発生したと判断された場合(ステップS62のYesルート)、追放予定時刻31bが更新されておらず、処理が即座に異常終了する(ステップS71)。なお、ステップS62のYesルートに進む場合としては、サーバ10へリクエストが届いていない場合も含まれる。
一方、通信エラーが発生していないと判断された場合(ステップS62のNoルート)、受信処理部32により、各リクエストに固有の返信受信処理が実行される(ステップS63)。そして、管理部33により、返信メッセージ中の追放予定時刻31bが取得され(ステップS64)、取得された追放予定時刻31bが接続情報31aに上書き保存される(ステップS65)。
また、受信処理部32により、リクエスト固有の返信受信処理がエラー終了したか否かが判断される(ステップS66)。正常終了したと判断された場合(ステップS66のNoルート)、管理部33により、現在時刻が新しい追放予定時刻31bを経過したか否かが判断される(ステップS67)。現在時刻が新しい追放予定時刻31bを経過していないと判断された場合(ステップS67のNoルート)、処理が正常終了する(ステップS68)。なお、現在時刻が新しい追放予定時刻31bを経過したと判断された場合(ステップS67のYesルート)、サーバ10側でクライアント130が追放されたため、処理が異常終了する(ステップS70)。
一方、ステップS66において、異常終了したと判断された場合(ステップS66のYesルート)、管理部33により、現在時刻が新しい追放予定時刻31bを経過したか否かが判断される(ステップS69)。現在時刻が新しい追放予定時刻31bを経過していないと判断された場合(ステップS69のNoルート)、処理が異常終了する(ステップS71)。なお、現在時刻が新しい追放予定時刻31bを経過したと判断された場合(ステップS69のYesルート)、サーバ10側でクライアント130が追放されたため、処理が異常終了する(ステップS70)。
〔2〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、上述した説明では、1つのクライアント130がサーバ10と通信を行なう場合の分散ファイルシステム1の動作について説明したが、図2に示すように、複数のクライアント130がサーバ10と通信を行なう場合も同様である。この場合、図15に示す例のように、クライアントAは、処理T110でサーバから分散ロックを付与されると、定期的に(例えば25秒よりも短い間隔で)サーバへリクエストを送信することで、追放予定時刻31bを更新することができる。なお、クライアントBは、処理T120でサーバへ分散ロック要求を発行するが、サーバから返信が返っていないため、処理T160まではサーバにおいてクライアントBの追放予定時刻31bの計算は行なわれない。
また、サーバ10及びクライアント130は、同一の追放予定時刻11b及び31bを保持するものとして説明したが、これに限定されるものではない。例えば、サーバ10は、クライアント130−サーバ10間のネットワークの遅延やクライアント130及びサーバ10での処理遅延等を考慮して、サーバ10が保持する追放予定時刻11bよりも早い時刻を示す追放予定時刻31bをクライアント130へ通知してもよい。
なお、一実施形態に係るサーバ10及びクライアント130の各種機能の全部もしくは一部は、コンピュータ(CPU,情報処理装置,各種端末を含む)が所定のプログラムを実行することによって実現されてもよい。
そのプログラムは、例えばフレキシブルディスク、CD、DVD、ブルーレイディスク等のコンピュータ読取可能な記録媒体(例えば図3に示す記録媒体10h)に記録された形態で提供される。なお、CDとしては、CD−ROM、CD−R、CD−RW等が挙げられる。また、DVDとしては、DVD−ROM、DVD−RAM、DVD−R、DVD−RW、DVD+R、DVD+RW等が挙げられる。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
〔3〕付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
情報処理装置と、前記情報処理装置との間で確立された接続を用いて前記情報処理装置と通信を行なう端末装置とを有する情報処理システムにおいて、
前記情報処理装置は、
前記接続を解除する予定時刻を前記端末装置に通知し、
前記端末装置は、
前記情報処理装置へ要求を送信する際に、現在時刻が前記情報処理装置から通知された予定時刻を経過しているか否かを判断する判断部と、
前記判断部により前記現在時刻が前記予定時刻を経過していると判断された場合、前記情報処理装置へ前記要求を送信する前に、前記情報処理装置との間で接続を確立するための接続要求を前記情報処理装置へ送信する送信部と、を有する
ことを特徴とする、情報処理システム。
(付記2)
前記情報処理装置は、
所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断し、前記現在時刻が前記予定時刻を経過していると判断した場合、前記端末装置との間で確立された接続を解除する接続解除部、を有する
ことを特徴とする、付記1記載の情報処理システム。
(付記3)
前記情報処理装置は、
前記予定時刻を前記端末装置に関する接続情報に対応付けて管理する接続管理部、をさらに有し、
前記接続解除部は、
前記現在時刻が前記接続管理部の管理する前記予定時刻を経過していると判断した場合、前記接続情報を無効化する
ことを特徴とする、付記2記載の情報処理システム。
(付記4)
前記接続管理部は、
前記端末装置から接続要求又は前記接続要求以外の要求を受けると、現在時刻に所定時間を加算して予定時刻を取得し、取得した前記予定時刻を前記端末装置に関する接続情報に対応付けて管理する
ことを特徴とする、付記3記載の情報処理システム。
(付記5)
前記情報処理装置は、
前記端末装置から接続要求又は前記接続要求以外の要求を受けると、前記接続要求又は前記要求への応答に前記予定時刻を含めて、前記端末装置へ通知する通知部、を有する
ことを特徴とする、付記1〜4のいずれか1項記載の情報処理システム。
(付記6)
前記端末装置は、
前記情報処理装置から受信した予定時刻を前記情報処理装置に関する接続情報に対応付けて管理する時刻管理部と、
前記判断部により前記現在時刻が前記予定時刻を経過していると判断された場合、前記接続情報を無効化する接続情報管理部と、をさらに有する
ことを特徴とする、付記1〜5のいずれか1項記載の情報処理システム。
(付記7)
前記判断部は、
前記情報処理装置へ要求を送信する際に、現在時刻が前記時刻管理部により管理される前記予定時刻を経過しているか否かを判断し、
前記送信部は、
前記判断部により前記現在時刻が前記予定時刻を経過していないと判断された場合、前記接続情報に基づいて前記情報処理装置へ前記要求を送信する一方、前記判断部により前記現在時刻が前記予定時刻を経過していると判断された場合、前記接続情報管理部により無効化された接続情報を用いずに、前記情報処理装置へ前記要求を送信する前に前記情報処理装置へ接続要求を送信する
ことを特徴とする、付記6記載の情報処理システム。
(付記8)
端末装置との間で確立した接続を用いて前記端末装置と通信を行なう情報処理装置において、
前記端末装置から接続要求を受けると、前記端末装置との間で接続を確立する接続処理を行なう接続管理部と、
前記接続処理により確立する接続を切り離す予定時刻を前記端末装置に通知する通知部と、
所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断し、前記現在時刻が前記予定時刻を経過していると判断した場合、前記端末装置との間で確立された接続を解除する接続解除部、を有する
ことを特徴とする、情報処理装置。
(付記9)
前記接続管理部は、
前記予定時刻を前記端末装置に関する接続情報に対応付けて管理し、
前記接続解除部は、
前記現在時刻が前記接続管理部の管理する前記予定時刻を経過していると判断した場合、前記接続情報を無効化する
ことを特徴とする、付記8記載の情報処理装置。
(付記10)
前記接続管理部は、
前記端末装置から接続要求又は前記接続要求以外の要求を受けると、現在時刻に所定時間を加算して予定時刻を取得し、取得した前記予定時刻を前記端末装置に関する接続情報に対応付けて管理する
ことを特徴とする、付記8又は付記9記載の情報処理装置。
(付記11)
前記通知部は、
前記端末装置から接続要求又は前記接続要求以外の要求を受けると、前記接続要求又は前記要求への応答に前記予定時刻を含めて、前記端末装置へ通知する
ことを特徴とする、付記8〜10のいずれか1項記載の情報処理装置。
(付記12)
端末装置との間で確立した接続を用いて前記端末装置と通信を行なう情報処理装置の制御プログラムにおいて、
前記情報処理装置に、
前記端末装置から接続要求を受けると、前記端末装置との間で接続を確立する接続処理を行なわせ、
前記接続処理により確立する接続を切り離す予定時刻を前記端末装置に通知させ、
所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断させ、前記現在時刻が前記予定時刻を経過していると判断した場合、前記端末装置との間で確立された接続を解除させる
ことを特徴とする、情報処理装置の制御プログラム。
(付記13)
前記情報処理装置に、
前記予定時刻を前記端末装置に関する接続情報に対応付けて管理させ、
所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断させ、前記現在時刻が前記予定時刻を経過していると判断した場合、前記接続情報を無効化させる
ことを特徴とする、付記12記載の情報処理装置の制御プログラム。
(付記14)
前記情報処理装置に、
前記端末装置から接続要求又は前記接続要求以外の要求を受けると、前記接続要求又は前記要求への応答に前記予定時刻を含めて、前記端末装置へ通知させる
ことを特徴とする、付記12又は付記13記載の情報処理装置の制御プログラム。
(付記15)
情報処理装置と、前記情報処理装置との間で確立された接続を用いて前記情報処理装置と通信を行なう端末装置とを有する情報処理システムの制御方法において、
前記情報処理装置が、
前記接続を解除する予定時刻を前記端末装置に通知し、
前記端末装置が、
前記情報処理装置へ要求を送信する際に、現在時刻が前記情報処理装置から通知された予定時刻を経過しているか否かを判断し、
前記現在時刻が前記予定時刻を経過していると判断した場合、前記情報処理装置へ前記要求を送信する前に、前記情報処理装置との間で接続を確立するための接続要求を前記情報処理装置へ送信する
ことを特徴とする、情報処理システムの制御方法。
(付記16)
前記情報処理装置が、
所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断し、前記現在時刻が前記予定時刻を経過していると判断した場合、前記端末装置との間で確立された接続を解除する
ことを特徴とする、付記15記載の情報処理システムの制御方法。
(付記17)
前記情報処理装置が、
前記予定時刻を前記端末装置に関する接続情報に対応付けて管理し、
所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断し、前記現在時刻が前記接続管理部の管理する前記予定時刻を経過していると判断した場合、前記接続情報を無効化する
ことを特徴とする、付記16記載の情報処理システムの制御方法。
(付記18)
前記情報処理装置が、
前記端末装置から接続要求又は前記接続要求以外の要求を受けると、前記接続要求又は前記要求への応答に前記予定時刻を含めて、前記端末装置へ通知する
ことを特徴とする、付記15〜17のいずれか1項記載の情報処理システムの制御方法。
(付記19)
前記端末装置が、
前記情報処理装置から受信した予定時刻を前記情報処理装置に関する接続情報に対応付けて管理し、
前記現在時刻が前記予定時刻を経過していると判断した場合、前記接続情報を無効化する
ことを特徴とする、付記15〜18のいずれか1項記載の情報処理システムの制御方法。
(付記20)
前記判断部が、
前記情報処理装置へ要求を送信する際に、現在時刻が前記予定時刻を経過しているか否かを判断し、
前記現在時刻が前記予定時刻を経過していないと判断した場合、前記接続情報に基づいて前記情報処理装置へ前記要求を送信し、
前記現在時刻が前記予定時刻を経過していると判断した場合、無効化した接続情報を用いずに、前記情報処理装置へ前記要求を送信する前に前記情報処理装置へ接続要求を送信する
ことを特徴とする、付記19記載の情報処理システムの制御方法。
1 分散ファイルシステム(情報処理システム)
10,10−1 MGS(サーバ,情報処理装置)
10,10−2 MDS(サーバ,情報処理装置)
10,10−3〜10−n OSS(サーバ,情報処理装置)
10a,30a CPU
10b,30b メモリ
10c,30c 記憶部
10d,30d ネットワークインタフェース
10e,30e 入出力部
10f,10h,30f,30h 記録媒体
10g,30g 読取部
11,31,31−1〜31−3 保持部
11a,11a−1〜11a−3,31a,31a−1〜31a−3 接続情報
11b,11b−1〜11b−3,31b,31b−1〜31b−3 追放予定時刻(予定時刻)
12,32 受信処理部
13 リクエスト処理部(接続管理部,通知部)
14 追放処理部(接続解除部)
20,20−1 MGT(論理ボリューム)
20,20−2 MDT(論理ボリューム)
20,20−3〜20−n OST(論理ボリューム)
30,30−1〜30−m FSクライアント
33 管理部(時刻管理部,判断部,接続情報管理部)
34 送信処理部(送信部)
40 ネットワーク
130,130−1 MGC(クライアント,端末装置)
130,130−2 MDC(クライアント,端末装置)
130,130−3〜130−n OSC(クライアント,端末装置)

Claims (8)

  1. 情報処理装置と、前記情報処理装置との間で確立された接続を用いて前記情報処理装置と通信を行なう端末装置とを有する情報処理システムにおいて、
    前記情報処理装置は、
    前記接続を解除する予定時刻を前記端末装置に通知し、
    前記端末装置は、
    前記情報処理装置へ要求を送信する際に、現在時刻が前記情報処理装置から通知された予定時刻を経過しているか否かを判断する判断部と、
    前記判断部により前記現在時刻が前記予定時刻を経過していると判断された場合、前記情報処理装置へ前記要求を送信する前に、前記情報処理装置との間で接続を確立するための接続要求を前記情報処理装置へ送信する送信部と、を有する
    ことを特徴とする、情報処理システム。
  2. 前記情報処理装置は、
    所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断し、前記現在時刻が前記予定時刻を経過していると判断した場合、前記端末装置との間で確立された接続を解除する接続解除部、を有する
    ことを特徴とする、請求項1記載の情報処理システム。
  3. 前記情報処理装置は、
    前記予定時刻を前記端末装置に関する接続情報に対応付けて管理する接続管理部、をさらに有し、
    前記接続解除部は、
    前記現在時刻が前記接続管理部の管理する前記予定時刻を経過していると判断した場合、前記接続情報を無効化する
    ことを特徴とする、請求項2記載の情報処理システム。
  4. 前記情報処理装置は、
    前記端末装置から接続要求又は前記接続要求以外の要求を受けると、前記接続要求又は前記要求への応答に前記予定時刻を含めて、前記端末装置へ通知する通知部、を有する
    ことを特徴とする、請求項1〜3のいずれか1項記載の情報処理システム。
  5. 前記端末装置は、
    前記情報処理装置から受信した予定時刻を前記情報処理装置に関する接続情報に対応付けて管理する時刻管理部と、
    前記判断部により前記現在時刻が前記予定時刻を経過していると判断された場合、前記接続情報を無効化する接続情報管理部と、をさらに有する
    ことを特徴とする、請求項1〜4のいずれか1項記載の情報処理システム。
  6. 端末装置との間で確立した接続を用いて前記端末装置と通信を行なう情報処理装置において、
    前記端末装置から接続要求を受けると、前記端末装置との間で接続を確立する接続処理を行なう接続管理部と、
    前記接続処理により確立する接続を切り離す予定時刻を前記端末装置に通知する通知部と、
    所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断し、前記現在時刻が前記予定時刻を経過していると判断した場合、前記端末装置との間で確立された接続を解除する接続解除部、を有する
    ことを特徴とする、情報処理装置。
  7. 端末装置との間で確立した接続を用いて前記端末装置と通信を行なう情報処理装置の制御プログラムにおいて、
    前記情報処理装置に、
    前記端末装置から接続要求を受けると、前記端末装置との間で接続を確立する接続処理を行なわせ、
    前記接続処理により確立する接続を切り離す予定時刻を前記端末装置に通知させ、
    所定時間ごとに、現在時刻が前記予定時刻を経過しているか否かを判断させ、前記現在時刻が前記予定時刻を経過していると判断した場合、前記端末装置との間で確立された接続を解除させる
    ことを特徴とする、情報処理装置の制御プログラム。
  8. 情報処理装置と、前記情報処理装置との間で確立された接続を用いて前記情報処理装置と通信を行なう端末装置とを有する情報処理システムの制御方法において、
    前記情報処理装置が、
    前記接続を解除する予定時刻を前記端末装置に通知し、
    前記端末装置が、
    前記情報処理装置へ要求を送信する際に、現在時刻が前記情報処理装置から通知された予定時刻を経過しているか否かを判断し、
    前記現在時刻が前記予定時刻を経過していると判断した場合、前記情報処理装置へ前記要求を送信する前に、前記情報処理装置との間で接続を確立するための接続要求を前記情報処理装置へ送信する
    ことを特徴とする、情報処理システムの制御方法。
JP2013168783A 2013-08-15 2013-08-15 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法 Active JP6115396B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013168783A JP6115396B2 (ja) 2013-08-15 2013-08-15 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
US14/445,435 US9843638B2 (en) 2013-08-15 2014-07-29 Information processing system, information processing apparatus, and computer-readable recording medium having stored therein control program for information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013168783A JP6115396B2 (ja) 2013-08-15 2013-08-15 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法

Publications (2)

Publication Number Publication Date
JP2015036928A JP2015036928A (ja) 2015-02-23
JP6115396B2 true JP6115396B2 (ja) 2017-04-19

Family

ID=52467652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013168783A Active JP6115396B2 (ja) 2013-08-15 2013-08-15 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法

Country Status (2)

Country Link
US (1) US9843638B2 (ja)
JP (1) JP6115396B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10523766B2 (en) * 2015-08-27 2019-12-31 Infinidat Ltd Resolving path state conflicts in internet small computer system interfaces
CN110677648B (zh) * 2018-07-02 2022-06-07 北京字节跳动网络技术有限公司 处理视频数据的方法、装置及非暂时性存储介质
JP7081402B2 (ja) * 2018-09-07 2022-06-07 富士通株式会社 排他制御システム、排他制御プログラム、および排他制御方法
CN109600823B (zh) * 2018-12-27 2022-05-17 芯翼信息科技(上海)有限公司 一种功耗控制方法及功耗控制系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2985802B2 (ja) * 1996-11-28 1999-12-06 日本電気株式会社 ターミナルアダプタとリンク解放予定通知方法
JP3569149B2 (ja) * 1999-02-03 2004-09-22 株式会社日立製作所 通信制御装置
US6785724B1 (en) 1999-11-02 2004-08-31 Walchem Corporation On-demand web server
US7406523B1 (en) * 2000-11-21 2008-07-29 Microsoft Corporation Client-server communications system and method using a semi-connectionless protocol
US7016710B2 (en) * 2001-07-31 2006-03-21 International Business Machines Corporation Power optimized request response communication protocol with timer mechanism to enforce client to generate request
US7080267B2 (en) * 2002-08-01 2006-07-18 Texas Instruments Incorporated Methodology for managing power consumption in an application
JP4257785B2 (ja) 2003-04-22 2009-04-22 株式会社日立製作所 キャッシュストレージ装置
US7380009B2 (en) * 2003-08-07 2008-05-27 Interantional Business Machines, Incorporated Method, system and program product for delayed disconnection of a client from a server
JP4410608B2 (ja) * 2004-06-04 2010-02-03 株式会社日立製作所 Webサービス提供方法
US20070025342A1 (en) * 2005-07-14 2007-02-01 Gemini Mobile Technology, Inc. Protocol optimization for wireless networks
JP2007036624A (ja) * 2005-07-26 2007-02-08 Matsushita Electric Ind Co Ltd 通信管理装置、機器、および通信システム
US20080140941A1 (en) * 2006-12-07 2008-06-12 Dasgupta Gargi B Method and System for Hoarding Content on Mobile Clients
US8713186B2 (en) * 2007-03-13 2014-04-29 Oracle International Corporation Server-side connection resource pooling
US20080228865A1 (en) * 2007-03-15 2008-09-18 Nazareno Brier Cruzada Electronic personal computing and videophone system consisting of a remote server system providing dynamic, subscription based virtual computing services & resources, a thin client hardware device connected to a television set and wireless keyboard & mouse, and a wireless mobile device (a Pocket PC Phone)
JP5022141B2 (ja) * 2007-08-22 2012-09-12 インターナショナル・ビジネス・マシーンズ・コーポレーション データ通信を中継する中継装置、中継方法及び中継用プログラム
US8713193B1 (en) * 2007-11-12 2014-04-29 Sprint Communications Company L.P. Pausing multimedia data streams
KR101660374B1 (ko) * 2009-06-17 2016-09-27 삼성전자 주식회사 휴대 단말기의 통화 연결 및 차단 방법
US20110119241A1 (en) * 2009-11-13 2011-05-19 Zhenzhou Ge Active search engine and method thereof
US8996657B2 (en) * 2010-09-01 2015-03-31 Canon Kabushiki Kaisha Systems and methods for multiplexing network channels
US8745245B1 (en) * 2011-09-15 2014-06-03 Google Inc. System and method for offline detection

Also Published As

Publication number Publication date
JP2015036928A (ja) 2015-02-23
US9843638B2 (en) 2017-12-12
US20150052273A1 (en) 2015-02-19

Similar Documents

Publication Publication Date Title
US11445019B2 (en) Methods, systems, and media for providing distributed database access during a network split
US8949828B2 (en) Single point, scalable data synchronization for management of a virtual input/output server cluster
KR101638436B1 (ko) 클라우드 스토리지 및 그의 관리 방법
JP6141189B2 (ja) ファイルシステムにおける透過的なフェイルオーバーの提供
JP5714571B2 (ja) キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理
JP6963168B2 (ja) 情報処理装置、メモリ制御方法およびメモリ制御プログラム
JP4794143B2 (ja) 通知ボンドを使用してキャッシュオブジェクトを管理するためのシステムおよび方法
CN109842651B (zh) 一种业务不间断的负载均衡方法和系统
US9992118B2 (en) System and method for optimizing transportation over networks
US10846185B2 (en) Method for processing acquire lock request and server
US9667736B2 (en) Parallel I/O read processing for use in clustered file systems having cache storage
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
JP6115396B2 (ja) 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
WO2016082078A1 (zh) 路径管理的系统、装置和方法
KR101211207B1 (ko) 캐시 클라우드 구조를 이용한 캐시 시스템 및 캐싱 서비스 제공 방법
US11537314B1 (en) Resynchronization of individual volumes of a consistency group (CG) within a cross-site storage solution while maintaining synchronization of other volumes of the CG
WO2017054734A1 (zh) 一种锁定文件管理方法和装置
JP5544521B2 (ja) 状態管理方法、処理装置、および状態管理プログラム
CN109992447B (zh) 数据复制方法、装置及存储介质
CN115640169A (zh) 保障主集群停止提供服务的方法、系统、设备和存储介质
CN109697126B (zh) 一种针对服务器的数据处理方法和装置
US10848554B2 (en) Memory efficient asynchronous high availability replication
US20240036996A1 (en) Methods and systems to improve input/output (i/o) resumption time by batching multiple non-conflicting operations during a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system
US20240036997A1 (en) Methods and systems to improve input/output (i/o) resumption time during a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system
US20240036732A1 (en) Methods and systems to improve resumption time of input/output (i/o) operations based on prefetching of configuration data and early abort of conflicting workflows during a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170214

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: 20170221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170306

R150 Certificate of patent or registration of utility model

Ref document number: 6115396

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150