JP4175379B2 - ファイル共有方法およびファイル共有システム - Google Patents

ファイル共有方法およびファイル共有システム Download PDF

Info

Publication number
JP4175379B2
JP4175379B2 JP2006121355A JP2006121355A JP4175379B2 JP 4175379 B2 JP4175379 B2 JP 4175379B2 JP 2006121355 A JP2006121355 A JP 2006121355A JP 2006121355 A JP2006121355 A JP 2006121355A JP 4175379 B2 JP4175379 B2 JP 4175379B2
Authority
JP
Japan
Prior art keywords
file
real
server computer
information
client
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
JP2006121355A
Other languages
English (en)
Other versions
JP2007293634A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2006121355A priority Critical patent/JP4175379B2/ja
Priority to US11/785,947 priority patent/US8250176B2/en
Publication of JP2007293634A publication Critical patent/JP2007293634A/ja
Application granted granted Critical
Publication of JP4175379B2 publication Critical patent/JP4175379B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数のディスク装置の実ファイルシステムを跨ぐようにして構成された仮想ファイルシステム上に大容量ファイルを記憶するファイル共有方法およびファイル共有システムの改良に関する。
メタデータサーバーおよび複数のオブジェクトストレージサーバーとクライアントからなるシステム上でファイルを共有する方法が非特許文献1として提案されている。
このファイル共有方法は、ファイルシステムの管理情報のみを持つメタデータサーバーと、オブジェクトストレージサーバーと呼ばれる複数のディスクへのI/Oのみを行うサーバーを有し、クライアントがメタデータサーバーから取得したファイル管理情報を元に各ディスクへI/O処理を依頼することによりファイルの共有を実現している。
このような構成を有する従来のファイル共有方法は、次のように動作する。例えば、クライアントがファイルを参照する際の処理としては、クライアントがメタデータサーバーに対して参照したいファイルのメタデータを要求する。メタデータサーバーは、求められたファイルに対するメタデータを同クライアントへ送信する。同クライアントは、そのメタデータを基に対応するオブジェクトストレージサーバーへファイルを参照させるよう要求する。オブジェクトストレージサーバーは、メタデータに対応するファイルをディスク装置から読み込んで同クライアントへ送信する。
しかし、この従来技術には、次のような問題点があった。第1の問題点は、多くのクライアントから、多数のI/O要求をメタデータサーバーが受信するような場合、メタデータサーバーへの負荷が高くなり、一度には処理しきれなくなる可能性があることである。その理由は、I/O処理の際に、クライアントがメタデータサーバーに対してI/O対象のファイルのメタデータを要求しなければならないためである。
第2の問題点は、多くのクライアントから、多数のメタデータが同じオブジェクトストレージサーバーへ送信された場合、そのオブジェクトストレージサーバーのI/O処理能力が追いつかず、I/O処理が遅延する可能性があることである。その理由はクライアントが、オブジェクトストレージサーバーにメタデータを送信することによってI/Oをオブジェクトストレージサーバーに依頼しなければならないためである。
第3の問題点は、多くのクライアントから、多くのI/Oが要求された場合、ネットワーク負荷が増大してデータ転送時間が遅延される可能性があることである。その理由は、クライアントは、ネットワークを介してオブジェクトストレージサーバーとの間でI/Oのデータを送受信するためである。
また、ファイル管理情報のみを処理するファイル管理用計算機とクライアントを構成する他の計算機をネットワークで接続し、クライアントから要求のあったファイルに関連するファイル管理情報をファイル管理用計算機からネットワーク経由でクライアントに送信し、クライアントがファイル管理情報に基づいてネットワークを経由せずに共有ディスクに直接アクセスしてファイル操作を行うようにした共有ファイルシステムが特許文献1として提案されている。
しかし、このものは、ファイル操作の度にファイル管理情報をファイル管理用計算機からクライアントに送信する必要があり、前記と同様、多数のクライアントからの要求がファイル管理用計算機に集中した場合にファイル管理用計算機やネットワークの負荷が増大する問題がある。
また、ファイルへのアクセスに際してクライアントをファイル単位で排他的に制御しているため、複数のクライアントが同じファイルに対して同時にアクセスすることはできない。従って、複数のディスク装置を統合して仮想ファイルシステム上で大容量のファイルを取り扱うような場合、異なるディスク装置に実ファイルが分散している場合であっても、個々の実ファイルに対して書き込み等の処理を並行して行えない不都合がある。
特開11−120063号公報 http://www.lustre.org/docs/whitepaper.pdf
本発明の課題は、前記従来技術の不都合を改善し、サーバーコンピュータとネットワークの負荷を軽減して大容量のファイルに対するI/O処理を高速に行うことができ、また、同じ仮想ファイルシステム上のファイルであっても実ファイルが異なれば複数のクライアントコンピュータからの同時アクセスが可能なファイル共有方法およびファイル共有システムを提供することにある。
本発明は、複数のディスク装置を管理する子サーバーコンピュータと前記子サーバーコンピュータを管理する親サーバーコンピュータと複数のクライアントコンピュータとを情報伝達可能に接続し、前記ディスク装置に大容量ファイルを分割して記憶するようにしたファイル共有方法およびファイル共有システムであり、前記課題を達成するため、特に、
前記クライアントコンピュータおよび子サーバーコンピュータと親サーバーコンピュータをネットワーク経由で接続すると共に、前記複数のディスク装置と前記各クライアントコンピュータおよび前記各子サーバーコンピュータをチャネルスイッチを介して接続し、
前記各ディスク装置の実ファイルシステムの構造および前記実ファイルシステムを跨ぐ仮想ファイルシステムの構造と前記仮想ファイルシステム内における実ファイルの記憶位置を特定する実ファイル情報を前記親サーバーコンピュータにファイル管理データベースとして予め登録しておき、
前記クライアントコンピュータによるファイルのオープン操作に際し、目的とするファイルに対応した実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されているか否かを該クライアントコンピュータが判定し、記憶されている場合には、ファイル管理表に記憶されている実ファイル情報に基づいて、該クライアントコンピュータが、該当する子サーバーコンピュータに対して直接的に入出力処理の要求を送信して、当該子サーバーコンピュータで管理されるディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を開始する一方
目的とするファイルに対応した実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されていない場合には、前記親サーバーコンピュータにネットワーク経由で要求を送信して前記親サーバーコンピュータから目的とするファイルに対応した実ファイル情報を求め、親サーバーコンピュータのファイル管理データベースに実ファイル情報が登録されていれば、この実ファイル情報を取得し、当該実ファイル情報に基づいて、該クライアントコンピュータが、該当する子サーバーコンピュータに対して直接的に入出力処理の要求を送信して、当該子サーバーコンピュータで管理されるディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を開始すると共に、親サーバーコンピュータから取得した実ファイル情報を前記ファイル管理表に記憶し、また、親サーバーコンピュータのファイル管理データベースに実ファイル情報が登録されていなければ、親サーバーコンピュータが子サーバーコンピュータから実ファイルのファイルハンドルを取得してファイル管理データベースに登録した後、クライアントコンピュータが当該実ファイル情報を親サーバーコンピュータから取得し、当該実ファイル情報に基づいて、クライアントコンピュータが、該当する子サーバーコンピュータに対して直接的に入出力処理の要求を送信して当該子サーバーコンピュータで管理されるディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を開始すると共に、親サーバーコンピュータから取得した実ファイル情報を前記ファイル管理表に記憶することを特徴とした構成を有する。
例えば、図1に示すように、各ディスク装置4毎の子サーバーコンピュータ3と複数の子サーバーコンピュータ3を管理する親サーバーコンピュータ2と複数のクライアントコンピュータ1とをイーサネット(登録商標)等のネットワーク経由で接続し、複数のディスク装置4と各クライアントコンピュータ1および各子サーバーコンピュータ3をファブリックトポロジー形式のチャネルスイッチ5を介して接続する。
そして、図2に示すように1つの大規模ファイルシステムを複数の子サーバーコンピュータ3で分担して管理し、図3に示すように1つの巨大ファイルを同様に複数の子サーバーコンピュータ3で分担して管理する。
各子サーバーコンピュータ3はそれぞれ個別に管理する実ファイルシステムを持っており、これらを親サーバーコンピュータ2がクライアントコンピュータ1に対して、あたかも1つのファイルシステムであるように見せかける(仮想ファイルシステム)。
さらに、各実ファイルシステム内に大容量ファイルの分割されたある一部分をそれぞれ配置し、これらを親サーバーコンピュータ2がクライアントコンピュータ1に対して、あたかも1つのファイルであるように見せかける(仮想ファイル)。
クライアントコンピュータ1は、ファイルのオープン処理において、目的とするファイルに対応した情報が当該クライアントコンピュータ1内のファイル管理表に記憶されているか否かを判定し、記憶されていない場合には、ネットワークを介して、親サーバーコンピュータ2へ該当するファイルが存在する子サーバーコンピュータ3とそのファイルに関する情報を要求する。この時、親サーバーコンピュータ2はファイル管理データベースから該当する子サーバーコンピュータ3を検索し、子サーバーコンピュータ3に対して該当ファイルのファイルハンドルを取得するLOPOKUP処理を実行し、仮想ファイルシステム上でファイルまたはディレクトリを一意に特定するための識別子であるファイルハンドルを得る。
そして、クライアントコンピュータ1は、実ファイルシステムの構造と実ファイルシステムを跨ぐ仮想ファイルシステムの構造および仮想ファイルシステム内における実ファイルの記憶位置を特定するために必要とされる実ファイル情報、つまり、子サーバーコンピュータ3のIPアドレスやファイルオフセットおよびファイルハンドル等の情報を親サーバーコンピュータ2から受け取り、この情報に基づいて該当する子サーバーコンピュータ3に対して直接的に入出力処理の要求を送信し、当該子サーバーコンピュータ3で管理されるディスク装置4との間でチャネルスイッチ5を介してファイル操作に関わる入出力処理を開始すると共に、親サーバーコンピュータ2から取得した実ファイル情報をファイル管理表に記憶する
また、目的とするファイルに対応した情報が当該クライアントコンピュータ1内のファイル管理表に記憶されている場合には、ファイル管理表に記憶されている実ファイル情報に基づいて、該クライアントコンピュータ1が、該当する子サーバーコンピュータ3に対して直接的に入出力処理の要求を送信して、当該子サーバーコンピュータ3で管理されるディスク装置4との間でチャネルスイッチ5を介してファイル操作に関わる入出力処理を開始する
読み出しや書き込みのI/O処理に際しては、親サーバーコンピュータ2を介さず、親サーバーコンピュータ2から受信した実ファイル情報に基づいて、クライアントコンピュータ1が該当するファイルのデータを管理する子サーバーコンピュータ3に対してI/Oのリクエストを送信する。
ファイルのオープン処理の回数は、読み出しや書き込み処理の回数に比べて、一般に少ないので、クライアントコンピュータ1の数が多い場合でも、親サーバーコンピュータ2には大きな負荷をかけることがない。
また、I/0データの転送は、親サーバーコンピュータ2や子サーバーコンピュータ3およびネットワークを共に介さず、クライアントコンピュータ1と該当するディスク装置4との間でチャネルスイッチ5を介して直接的に行われるため、子サーバーコンピュータ3やネットワークにも大きな負荷がかからない。
更に、ディスク装置4は各ディスク装置4毎の子サーバーコンピュータ3によって管理されているので、同一の仮想ファイル上の異なる実ファイルに対して複数のクライアントコンピュータ1から同時に書き込み処理を行うことが可能である。
しかも、操作対象となるファイルの実ファイル情報がファイル管理表に記憶されている場合にはクライアントコンピュータ1から親サーバーコンピュータ2にアクセスして実ファイル情報を取得する必要がなくなるので、親サーバーコンピュータ2やネットワークの負荷を更に軽減することができる
また、操作対象となるファイルの実ファイル情報がファイル管理表に記憶されていない場合でも、親サーバーコンピュータ2のファイル管理データベースに登録されている場合があるので、子サーバーコンピュータ3にまで問い合わせを行なわなくてもよく、親サーバーコンピュータ2やネットワークの負荷を軽減することができる
また、クライアントコンピュータ1が実ファイル情報に基づいてディスク装置4との間でブロックI/O情報に従ってファイル操作に関わる入出力処理を行う間に、要求されたI/Oサイズの入出力処理が完了する前に当該ディスク装置4内における実ファィルの終端が検出されると、クライアントコンピュータ1は、当該実ファイルに続く実ファイルの実ファイル情報が当該クライアントコンピュータ1内のファイル管理表に記憶されているか否かを判定し、記憶されている場合には、ファイル管理表に記憶されている実ファイル情報に基づいて、該当する子サーバーコンピュータ3に対して入出力処理の要求を送信して、ディスク装置4との間でチャネルスイッチを介してファイル操作に関わる入出力処理を継続する一方、実ファイルに続く実ファイルの実ファイル情報が当該クライアントコンピュータ1内のファイル管理表に記憶されていない場合には、当該実ファイルに続く実ファイルの実ファイル情報を親サーバーコンピュータ2に要求する。
従って、ファイルの規模が大容量であってファイルが複数のディスク装置4に分散して記憶されている場合であっても、クライアントコンピュータ1は、読み出しや書き込みに関わるI/O処理を円滑に継続することができる。
本発明のファイル共有方法およびファイル共有システムは、クライアントコンピュータによるファイルのオープン操作の際に親サーバーコンピュータからクライアントコンピュータが取得した実ファイル情報に基づいてクライアントコンピュータがチャネルスイッチを介してディスク装置に直接的にアクセスしてファイル操作に関わる入出力処理を行うようにしているので、読み出しや書き込み等のI/O処理の間にクライアントコンピュータから親サーバーコンピュータにアクセスする必要がなく、クライアントコンピュータの数が多い場合でも、親サーバーコンピュータに大きな負荷がかからない。
また、I/0データの転送は、親サーバーコンピュータや子サーバーコンピュータおよびネットワークを共に介さず、クライアントコンピュータと該当するディスク装置との間でチャネルスイッチを介して直接的に行われるため、子サーバーコンピュータやネットワークにも大きな負荷がかからない。
更に、ディスク装置は各ディスク装置毎の子サーバーコンピュータによって管理されているので、同一の仮想ファイル上の異なる実ファイルに対して複数のクライアントコンピュータから同時にI/Oの処理、特に、書き込みに関わる処理を行うこともできる。
次に、本発明のファイル共有方法を適用したファイル共有システムの一実施形態について具体的に説明する。
図4は主にクライアントコンピュータ1(以下、単にクライアント1という)の構成の概略を示した機能ブロック図、図5は主に親サーバーコンピュータ2(以下、単に親サーバー2という)の構成の概略を示した機能ブロック図、図6は主に子サーバーコンピュータ3(以下、単に子サーバー3という)の構成の概略を示した機能ブロック図である。
図4〜図6に示される通り、本実施形態のファイル共有システムは、クライアント1と親サーバー2と子サーバー3およびディスク装置4によって構成され、図2に示されるように、子サーバー3と親サーバー2とクライアント1がイーサネット等のネットワークを経由して情報伝達可能に接続され、同時に、ディスク装置4とクライアント1および子サーバー3はファブリックトポロジー形式のチャネルスイッチ5を介して接続されている。
クライアント1は、図4に示されるように、通信手段101,I/O要求手段102,実ファイル情報操作手段103,オフセット変更手段104を備える。
I/O要求手段102は、I/O要求作成手段102a,受信待ち手段102b,I/O発行手段102cを内包し、実ファイル情報操作手段103は、実ファイル情報取得手段103aと実ファイル情報登録手段103bを内包する。
また、図5に示されるように、親サーバー2は、通信手段201,ファイル管理データベース202,仮想ファイル管理手段203,データベース検索更新手段204,子サーバー管理手段205を備える。
仮想ファイル管理手段203は、実ファイル終端処理手段203a,オフセット変更手段203b,子サーバー割り当て手段203c,アクセス許可手段203d,アクセス許可リスト203e,ファイルハンドル作成手段203f,実ファイル情報取得手段203g,実ファイル情報登録手段203hを内包し、子サーバー管理手段205は、ファイルハンドル取得手段205a,マウント手段205b,実ファイル操作手段205c,実ファイルシステム拡張手段205d,子サーバー追加手段205e,実ファイル情報収集手段205fを内包する。
そして、図6に示されるように、子サーバー3は、通信手段301,実ファイル管理手段302,実ファイルシステム管理手段303,ブロックI/O手段304を備える。実ファイル処理手段302は、アクセス許可手段302a,アクセス許可リスト302b,I/O結果返信手段302cを内包する。
クライアント1,親サーバー2,子サーバー3,ディスク装置4はそれぞれ概略において次のように動作する。
〔クライアント1〕
クライアント1は、アプリケーションプログラムを実行するユーザプロセスが動作するコンピュータであり、一般にシステム内に複数存在する。
通信手段101は、クライアント1と親サーバー2またはクライアント1と任意の子サーバー3との間の通信を行うための機能を提供する。通信は、TCP/IP等の一般的な通信プロトコルを用い、それぞれの通信相手と予めコネクションの確立をしておく必要がある。また、通信手段101は、受信したパケットの種別を判断し、クライアント1内の適切な処理手段に渡す機能も備えている。
I/O要求手段102は、ユーザプロセスから呼び出されたread,writeシステムコール内において実行される処理である。
I/O要求手段102内のI/O要求作成手段102aは、クライアント1から、親サーバー2を介さず、直に子サーバー3にI/O要求を送信するために、実ファイル情報に基づいてI/O要求のためのパケットを作成する。この際、ファイル管理表105内に対応する実ファイル情報が存在しない場合は、親サーバー2へ実ファイル情報を問い合わせるパケットを送信する。
I/O要求手段102内の受信待ち手段102bは、I/O要求作成手段102aによって子サーバー3へ要求されたI/Oに基づくレスポンスのパケットの受信待ちを行い、受信したパケットの種別がディスク装置4へのI/O発行(ブロックI/O情報)であるのかI/O処理終了通知であるのかを判別する。
I/O発行の場合は、I/O発行手段102cを呼び出し、I/O処理の終了通知の場合はI/O終了判別手段102dを呼び出す。
I/O要求手段102内のI/O発行手段102cは、受信したパケットの種別がディスク装置4へのI/O発行である場合、そのパケットには、どのディスク装置4のどの場所からどれだけの長さをリードまたはライトするかという情報が含まれているので、これに従ってディスクドライバに渡せる形式に変換し、ディスクドライバを呼び出す(ブロックI/Oの発行)。
また、発行したブロックI/Oの終了通知は、I/Oの終了割り込みの処理内において、パケットを受信した子サーバー3から指示されたブロックI/Oが終了した旨を伝えるパケットをその子サーバー3へ返信する。
I/O要求手段102内のI/O終了判別手段102dは、受信したパケットの種別がI/O処理の終了通知である場合において、I/O要求作成手段102aから要求したI/Oが正常に終わったかどうかを確認する。正常終了の場合は、ユーザプロセスへ復帰する。
また、正常ではない場合には、次の2種がある。
(1)I/O中にエラーが発生した場合。
(2)エラーは発生していないが、I/Oすべき仮想ファイルの続きが他の子サーバー上にある場合。
(1)の場合は、エラー番号を設定してユーザプロセスへ復帰する。
(2)の場合は、ファイル管理表105に対応する実ファイル情報がある場合はそれを取り出し、ない場合は、実ファイル情報を親サーバー2へ問い合わせるパケットを送信して応答があるまで待ち合わせ、親サーバー2からその応答のパケットを受信した時点で、再度I/O要求作成手段102aの処理に戻る。
実ファイル情報操作手段103は、ユーザプロセスから呼び出されたopenシステムコール内、またはread,writeシステムコール内において実行される処理である。
実ファイル情報操作手段103内の実ファイル情報取得手段103aは、最初に、ファイル管理表105内にオープンしようとする仮想ファイルのiノード番号のエントリが存在するかどうかを調べる。
存在すれば、openシステムコールを呼び出したプロセスからiノード番号によって同エントリを参照できるので、この処理を終了する。
存在しない場合は、親サーバー2へ問い合わせるためのパケットを送信する。そして、親サーバー2からの応答を受信すると、実ファイル情報登録手段103bを呼び出す。
また、read,writeシステムコールの内部の処理において、I/O対象の仮想ファイル上の現在のファイルオフセットとiノード番号によりファイル管理表105内に対応する実ファイル情報が存在するか否かを確認し、存在しない場合は上記と同様に親サーバー2へ問い合わせるためのパケットを送信し、親サーバー2からの応答を受信すると、実ファイル情報登録手段103bを呼び出す。
実ファイル情報操作手段103内の、実ファイル情報登録手段103bは、親サーバー2から実ファイル情報を受信した際に、ファイル管理表105の対応するiノード番号のエントリ(エントリがなければ作成する)に、受信した実ファイル情報を仮想ファイルのファイルオフセットの順に登録する。
オフセット変更手段104は、ユーザプロセスから呼び出されたseekシステムコール内において呼び出され、仮想ファイル上での新しいオフセットの位置を決め、ファイル管理表105内に、そのオフセットに対応した実ファイル情報があるかどうかを調べる。ある場合は、何もしない。また、ない場合には、ファイルのオープン時と同様に、新しいオフセットを指定して実ファイル情報取得手段103aを呼び出して対応する実ファイル情報を親サーバー2から取得し、実ファイル情報登録手段103bにより、ファイル管理表105の対応するエントリへ登録する。
ファイル管理表105は、ユーザプロセスが、openシステムコールやread,writeシステムコールあるいはseekシステムコールを呼び出した際に、実ファイル情報の登録,更新,参照が行われる。
また、対応する仮想ファイルが削除または移動された場合または対応する仮想ファイルが存在するディレクトリが削除移動された際に、それを認識した時点でその実ファイル情報が削除される。
このファイル管理表105は、iノード番号毎に仮想ファイル毎のエントリを持ち、そのエントリ毎に実ファイル毎のエントリを持つ。実ファイル毎のエントリは、各実ファイルの仮想ファイル上のオフセットにより、実ファイル情報を判別される。
ネットワークファイルシステム処理手段106は、UNIXオペレーティングシステム(「UNIX」は登録商標)などで一般的に存在するネットワークファイルシステムのクライアントの処理を行う。
〔親サーバー2〕
親サーバー2は、システムに1つ存在し、仮想ファイルシステムや仮想ファイルの管理を行う。一般に、親サーバー2は、複数の仮想ファイルシステムを管理する。
通信手段201は、親サーバー2と任意の子サーバー3または親サーバー2と任意のクライアント1との間の通信を行うための機能を提供する。通信は、TCP/IPなどの一般的な通信プロトコルを用い、それぞれの通信相手と予めコネクションの確立をしておく必要がある。また、通信手段201は、受信したパケットの種別を判断し、親サーバー2内の適切な処理手段に渡す機能も備えている。
ファイル管理データベース202は、仮想ファイルシステム上のディレクトリとそのファイルハンドル及びそれに対応する各子サーバー3上の実ファイルシステムのサイズとマウントしたディレクトリ名とそのファイルハンドル及び実ファイルシステム上の各ディレクトリとそのファイルハンドルの対応ならびに仮想ファイルシステム上の各ディレクトリ内の仮想ファイル及びそれに対応する各子サーバー3上の実ファイル情報から成り、一般的なデータベースのソフトウェアによって構築される。
仮想ファイル管理手段203は、仮想ファイルと実ファイルの関係が複数の子サーバー3に跨るような場合において実行される処理である。
仮想ファイル管理手段203内の実ファイル終端処理手段203aは、クライアント1が、ある子サーバー3との間で実ファイルに対するI/O処理を行っている過程において、その実ファイルの終端を検出し、且つ実ファイルのファイルサイズが、予め設定された実ファイルの最大長に達している場合には、そのクライアント1から、現在の実ファイルの続きの実ファイルに関する実ファイル情報を要求するパケットを受信する。この際、データベース検索更新手段204によってファイル管理データベース202内の現在の実ファイルが属する仮想ファイルのエントリを検索し、そのエントリ内の現在の実ファイル情報に続く実ファイル情報をクライアント1へ送信する。
仮想ファイル管理手段203内のオフセット変更手段203bは、クライアント1内のユーザプロセスがseekシステムコールにより仮想ファイルのオフセットを変更させた場合に、クライアント1から新しい実ファイル情報を要求するパケットが送信される。この際、そのオフセット位置に対応する実ファイル情報をクライアント1へ返信する。
仮想ファイル管理手段203内の子サーバー割り当て手段203cは、クライアント1からのファイルの生成の属性の付いたファイルのオープン時や実ファイルの終端検出時あるいはオフセット変更時において、実ファイルの生成が必要な場合、その実ファイルを管理する子サーバー3を1つ割り当てる。この割り当てには、全ての子サーバー3に実ファイルがなるべく均等に割り当てられるように、前回の子サーバー割り当て処理において割り当てられた子サーバー3の次の(隣の)子サーバー3を割り当てる。
仮想ファイル管理手段203内のアクセス許可手段203dは、アクセス許可リスト203eに登録されたクライアント1が、read,write要求発行時にその子サーバー3にアクセス可能なように、全ての子サーバー3に対して、これらアクセス許可を設定させるためのパケットを送信する。この処理は、システム全体を起動した場合とクライアント1を新たに追加した際に実行する。但し、子サーバー3を追加した際は、その子サーバー3に対してのみこのパケットを送信する。
クライアント1がマウントしている親サーバー2をアンマウントする際においては、クライアント1から一般的なネットワークファイルシステム手続きに基づいたパケットが送信される。仮想ファイル管理手段203内のアクセス許可リスト203eは、これを受けて、親サーバー2が管理する仮想ファイルシステムに対して当該クライアント1のアクセス許可の設定を解除する。
仮想ファイル管理手段203内のファイルハンドル作成手段203fは、クライアント1が親サーバー2をマウントする際において、親サーバー2がマウントプロトコルに従ったパケットを受信すると、アクセス許可を持つクライアント1であるかどうかを確認するためにアクセス許可リスト203eを参照する。
もし、同リストに当該クライアント1が登録されていない場合は、ステータスとしてエラーを設定し、通信手段201を介して同クライアント1へ返送する。
一方、同リストに当該クライアント1が登録されていた場合は、仮想ファイルシステムの先頭のディレクトリのファイルハンドルがファイル管理データベース202にあるかどうかをデータベース検索更新手段204を介して調べる。そして、まだ存在しない場合は、このファイルハンドルを作成してデータベース検索更新手段204によりファイル管理データベース202へ登録し、通信手段201によりマウントを要求したクライアントへ返送する。
また、クライアント1から仮想ファイルシステム上にディレクトリの作成を要求するパケットを受信した際に仮想ファイル操作手段203iから呼び出され、仮想ファイルシステム全体で一意のファイルハンドルを生成する。
仮想ファイル管理手段203内の実ファイル情報取得手段203gは、クライアント1が仮想ファイルをオープンする際または仮想ファイルのオフセットを移動する際あるいは実ファイルの終端を検出した際において、ファイル管理データベース202に対応する実ファイルのファイルハンドルが登録されていない場合もしくは実ファイル情報自体が登録されていない場合において、該当する子サーバー3に対しファイルハンドル取得手段205aにより実ファイルのファイルハンドルを取得する。次に、実ファイル情報登録手段203hによってファイル管理データベース202へ登録し、クライアント1へ実ファイル情報に含めて送信する。
仮想ファイル管理手段203内の実ファイル情報登録手段203hは、実ファイル情報取得手段203gによって取得した実ファイルのファイルハンドルをデータベース検索更新手段204によりファイル管理データベース202へ実ファイル情報の一つとして登録する。
仮想ファイル管理手段203内の仮想ファイル操作手段203iは、クライアント1が一般的なネットワークファイルシステムの手続きに基づいて、仮想ファイルシステム上のディレクトリや仮想ファイルの作成/削除/名前の変更を行った際に、それらの要求を含んだパケットを通信手段201を介して受信する。この際、ディレクトリへの操作の場合は、ファイルハンドル作成手段203fを呼び出して仮想ファイルシステム上におけるディレクトリのファイルハンドルを作成する。次に、実ファイル操作手段205cを呼び出し、各子サーバー上の実ファイルまたはディレクトリに対する操作を行い、データベース検索更新手段204によりファイル管理データベース202の仮想ファイル及び実ファイルまたはディレクトリの追加,更新,削除を行う。
データベース検索更新手段204は、一般的なデータベースのソフトウェアが提供する機能を使用して実現する。
子サーバー管理手段205内のファイルハンドル取得手段205aは、各子サーバー3内の実ファイルのファイルハンドルを取得するため、その子サーバー3に対して、対象の実ファイルの名前とその実ファイルが存在する実ファイルシステム上のディレクトリのファイルハンドルを含む一般的なネットワークファイルシステムが有するLOOKUPのプロトコルに基づいたパケットを作成し、該当する子サーバー3から実ファイルのファイルハンドルを取得する。
子サーバー管理手段205内のマウント手段205bは、一般的なネットワークファイルシステムのマウント処理により、各子サーバー3が管理する各実ファイルシステムを親サーバー2からマウントする。この処理は、システム全体の起動時や子サーバー3を追加する際に行う。
子サーバー管理手段205内の実ファイル操作手段205cは、クライアント1が仮想ファイルシステム上のディレクトリや仮想ファイルの作成/削除/名前の変更を行った際に、仮想ファイル操作手段203iより呼び出され、ディレクトリへの操作の場合は全子サーバー3に対して、また、ファイルへの操作の場合は対応する子サーバー3に対して、一般的なネットワークファイルシステムの手続きであるファイルやディレクトリに対する生成,削除,名前変更の処理を行う。
子サーバー管理手段205内の実ファイルシステム拡張手段205dは、子サーバー3が管理する実ファイルシステムに、動的にファイルシステムの容量を拡張する機能がある場合において、新たなディスク装置を追加するなど、子サーバー3上の実ファイルシステムの容量を拡張した際、それを親サーバー2のファイル管理データベース202へ反映するために、子サーバー3からその旨を伝えるパケットが送信される。この時、実ファイルシステム拡張手段205dは、データベース検索更新手段204により、ファイル管理データベース202の該当する実ファイルシステムのエントリを更新する。
子サーバー管理手段205内の子サーバー追加手段205eは、仮想ファイルシステムの容量を拡張するために、システム管理者の指示により新たな子サーバー3を追加する場合、指定された子サーバー3のIPアドレスとマウントするディレクトリ名からマウント手段205bを用いてその子サーバー3の実ファイルシステムをマウントし、一般的なネットワークファイルシステムの手続きにより、その実ファイルシステムの容量を取得する。次に、データベース検索更新手段204により、ファイル管理データベース202に新たな実ファイルシステムのエントリを設け、ディレクトリの情報のみをコピーする。さらに、そのディレクトリの情報に基づいて、実ファイル操作手段205cにより、ディレクトリの作成を行う。
〔子サーバー3〕
子サーバー3は、仮想ファイルシステムや仮想ファイルの存在を意識せずに、各実ファイルシステムと実ファイルを管理する。子サーバー3は一般にシステム内に複数存在する。また、子サーバー3は、複数のディスク装置4に跨って1つの実ファイルシステムを構築し、その中で複数の実ファイルを管理する。
通信手段301は、子サーバー3と親サーバー2または子サーバー3と任意のクライアント1との間の通信を実現するための機能を提供する。通信は、TCP/IPなどの一般的な通信プロトコルを用い、それぞれの通信相手とあらかじめコネクションの確立をしておく必要がある。また、通信手段301は、受信したパケットの種別を判断し、子サーバー3内の適切な処理手段に渡す機能も備えている。
実ファイル管理手段302内のアクセス許可手段302aは、親サーバー2内のアクセス許可手段203dより送信されたアクセスを許可するクライアントのリストをアクセス許可リスト302bに登録する。また、クライアント1内のI/O要求作成手段102aによってI/O要求を送信してきたクライアントがアクセス許可リスト302bに登録されているかどうかを調べる。
もし、登録されていない場合は、そのクライアントに対してエラーを示すパケットを返信する。登録されている場合は、そのI/O要求に実ファイル処理手段302内のアクセス許可リスト302bは、アクセスを許可したクライアント1のIPアドレスのリストで、アクセス許可手段302aにより、更新または参照される。
実ファイルシステム管理手段303は、一般的なネットワークファイルシステムのサーバー機能と子サーバー3が管理するファイルシステムのファイル管理機能であり、子サーバー3のオペレーティングシステム内に存在する既存の機能である。
なお、全子サーバーが同じ種類のファイルシステムを使用する必要はなく、一般的なUNIXオペレーティングシステムのインターフェースをサポートしているファイルシステムであれば、子サーバー3毎に異なる種類のファイルシステムであってもよい。
ブロックI/O手段304は、実際にI/Oをディスク装置4に対して発行するのは、クライアント1であるので、クライアント1のI/O発行手段102cに対して、どのディスク装置4のどの場所からどれだけの長さをリード、またはライトするかという情報(ブロックI/O情報)を渡す必要がある。このため、実ファイルシステム管理手段303よりこれらの情報を受け取り、そして、これらの情報を含んだパケットI/O要求を送信してきたクライアント1へ返信する。また、クライアント1がディスク装置4へのI/Oを終了した旨のパケットを受信した際は、実ファイルシステム管理手段303へその旨を通知する。
〔ディスク装置4〕
ディスク装置4は、ランダムアクセスが出来る一般的な記憶媒体であり、また図1に示すようにファイバチャネルなどのI/Oプロトコルに対応したスイッチ5に接続され、子サーバー3及びクライアント1よりアクセス可能である。
〔動作の説明〕
次に、図2および図4〜図6のブロック図と図7〜図10のフローチャートやシーケンス図を参照して本実施形態の動作について詳細に説明する。
各部の動作には以下のように複数のフェーズがあるので、この単位毎に説明する。
・システム設定時(子サーバーの設定)
・システム設定時(アクセス許可)
・クライアントからの親サーバーのマウント時
・クライアントからの仮想ファイルのオープン時
・I/O処理時(read,write処理)
・オフセット移動時
〔システム設定時(子サーバーの設定)〕
図5より、システム管理者は、子サーバー追加手段205eにより、すべての子サーバー3のIPアドレスとマウントするディレクトリ名から、マウント手段205bを用いて各子サーバー3の実ファイルシステムをマウントし、一般的なネットワークファイルシステムの手続きにより、各実ファイルシステムのファイルシステムの容量を取得する。
次に、データベース検索更新手段204により、ファイル管理データベース202に新たな実ファイルシステムのエントリを実ファイルシステム数だけ設ける。
〔システム設定時(アクセス許可)〕
図5,図6より、システム管理者は、アクセス許可手段203dによりアクセス許可リスト203eへ、親サーバー2が管理する仮想ファイルシステムへのアクセスを許可する各クライアント1のIPアドレスを設定する。
次に、アクセス許可手段203dは、管理する全子サーバー3の実ファイルシステム管理手段303に対して、アクセス許可リスト203e内にあるクライアントのIPアドレスを元にアクセス許可の設定をさせるパケットを送信する。
〔クライアントからの親サーバーのマウント時〕
図4,図5より、クライアント1は、一般的なネットワークファイルシステムのクライアントの機能であるネットワークファイルシステム処理手段106により、通信手段101を介して、仮想ファイルシステムを管理する親サーバー2を一般的なネットワークファイルシステムと同様にマウント処理を行う。この時、親サーバー2は、通信手段201を介して、上記一般的なネットワークファイルシステムのマウントプロトコルに従ったパケットを受信すると、ファイルハンドル作成手段203fにより、まずアクセス許可リスト203eを参照し、マウントを要求したクライアント1が同リストに登録されているか否かを確認する。もし、登録されていない場合は、アクセス許可を持たないクライアント1からの不正なマウント要求なので、ステータスとしてエラーを設定し、通信手段201を介して同クライアント1へ返送する。一方、マウントを要求したクライアント1が同リストに登録されていた場合は、仮想ファイルシステムの先頭のディレクトリのファイルハンドルがファイル管理データベース202にあるかどうかをデータベース検索更新手段204を介して調べる。そして、まだ存在しない場合は、このファイルハンドルを作成してデータベース検索更新手段204により、ファイル管理データベース202へ登録し、通信手段201により、マウントを要求したクライアント1へ返送する。
次に、上記ファイルハンドルを通信手段101により受信したクライアント1は、ネットワークファイルシステム処理手段106により、親サーバー2から受信したファイルハンドルを保持する。
〔クライアントからの仮想ファイルのオープン時〕
図7のフローチャートおよび図8のシーケンス図と図4〜図6のブロック図より、仮想ファイルのオープンの処理においては、最初に親サーバー2からディレクトリのファイルハンドルを得て、次に実ファイル情報を得る。この際、実ファイル情報を取得する仕方として条件によって以下がある。
条件1:
クライアント1のファイル管理表105内に該当する実ファイル情報が既に登録されている場合。
これは処理の手間が一番少ない場合で、クライアント1内で処理が完結する。
条件2:
実ファイル情報は、クライアント1のファイル管理表105には登録されていないが、親サーバー2のファイル管理データベース202に該当する実ファイル情報が登録されている場合。
この場合は子サーバー3への問い合わせをしなくても良いので、クライアント1と親サーバー2との通信だけでよい。
条件3:
実ファイル情報は、クライアント1のファイル管理表105にも、親サーバー2のファイル管理データベース202にも登録されておらず、該当する子サーバー3へ問い合わせを行わなければならない場合。
これは最も処理の手間が多い場合であり、クライアント1と親サーバー2、親サーバー2と子サーバー3との通信が必要となる。(図2内の「open時の制御パケットの転送経路」として示された点線は、この場合の通信経路である。)
なお、実ファイル情報は、以下から成る。
・実ファイルが存在する子サーバーのIPアドレス
・実ファイルのファイルハンドル
・実ファイルの最大長
・終端フラグ(仮想ファイルの最後の実ファイルであることを示すフラグ)
・仮想ファイルに対するこの実ファイルのオフセット
・仮想ファイルが存在するディレクトリのファイルハンドル
まず、クライアント1上のユーザプロセスから呼び出されるopenシステムコールの内部の処理において、実ファイル情報取得手段103aにより、オープンする対象のファイルのiノード番号を使用し、ファイル管理表105の該当するiノード番号のエントリがあるかどうかを調べる(図7のステップS2、ステップS3)。ある場合(条件1)は、その後のI/O処理においてこのエントリから実ファイル情報を取り出すことができるので、オープン処理を終了する。(ファイル管理表105は、iノード番号毎にエントリを持つ)。
ファイル管理表105に該当するエントリがない場合は、実ファイル情報取得手段103aは、一般的なネットワークファイルシステムのクライアントの機能と同様なLOOKUPを対象ファイルに到達するまで、ディレクトリツリーを辿りながら行い、LOOKUPの度に親サーバーから返されるディレクトリのファイルハンドルを上記マウント時と同様に、ネットワークファイルシステムのクライアントの機能が保持する。
この際、親サーバー2では、LOOKUPのパケットを通信手段201を介して受信する毎にファイルハンドル作成手段203fは、データベース検索更新手段205を介してファイル管理データベース202内を検索し、そのディレクトリ名に対応したファイルハンドルがなければ作成した後、データベース検索更新手段205を介してファイル管理データベース202にそのファイルハンドルを登録する。その後、通信手段201により、クライアント1へファイルハンドルを送信する(図7のステップS1)。
次に、クライアント1における上記LOOKUP処理の結果オープンする対象のファイルに到達した場合、実ファイル情報取得手段103aにより、オープン対象のファイルのファイル名、オープン対象のファイルが属するディレクトリのファイルハンドル、及びopenシステムコールに引数として渡された属性を通信手段101を介して親サーバー2に送信し、実ファイル情報の問い合わせを行う(図7のステップS4)。
ここで、属性とは、オープンするファイルを新たに生成するのか、オープンするファイルに対して後刻readするのか、writeするのか、またはその両方か、及びwriteの場合はAPPENDであるか否かの情報であって、ユーザプロセスが指定するものである。ここで、APPEND属性とは、既存のファイルをオープンし、その後そのファイルに対してwriteする場合、ファイルの終端にwriteするデータを付加することを意味する。APPEND属性がない場合の既存のファイルへのwriteは、ファイル先頭から上書きすることを意味する。
クライアント1の実ファイル情報取得手段103aから、実ファイル情報取得要求のパケットを通信手段201を介して受信した親サーバー2は、実ファイル情報取得手段203gにより、データベース検索更新手段204を介してファイル管理データベース202をオープン対象のファイルが属するディレクトリのファイルハンドルと、オープン対象のファイルのファイル名を元に検索する(図7のステップS5〜ステップS6)。
なお、属性が、write且つAPPENDである場合は、仮想ファイルの最後を含む実ファイル情報を検索する。
この検索の結果として、以下の場合がある。
(1)該当するエントリが見つからず、属性がファイルの生成である。
(2)該当するエントリが見つかったが、実ファイル情報が登録されていない。
(3)該当するエントリがあり、実ファイル情報が登録されている。
まず、(1)の場合、実ファイル情報取得手段203gは、子サーバー割り当て手段203cにより、子サーバー3を1つ割り当て、実ファイル操作手段205cにより、割り当てた子サーバー3上の該当ディレクトリに実ファイルを生成する(図7のステップS7)。この際、子サーバー3から生成した実ファイルのファイルハンドルが返されるので(図7のステップS8)、実ファイル情報登録手段203hにより、データベース検索更新手段204を介してファイル管理データベース202に該当エントリを作成し、ファイルハンドルを含む実ファイル情報を登録する(図7のステップS9)。
次に、クライアント1へ検索した実ファイル情報を送信する(図7のステップS10)。クライアント1は、実ファイル情報取得手段103aが実ファイル情報登録手段103bにより、ファイル管理表105の対応するiノード番号のエントリに(エントリがなければ作成する)、受信した実ファイル情報を登録する(図7のステップS11)。
また、検索の結果が(2)の場合、実ファイル情報取得手段203gは、該当する子サーバー3に対しファイルハンドル取得手段205aにより、実ファイルのファイルハンドルを取得する(図7のステップS7〜ステップS8)。そして、実ファイル情報登録手段203hにより、データベース検索更新手段204を介してファイル管理データベース202に該当エントリを作成し、ファイルハンドルを含む実ファイル情報を登録する(図7のステップS9)。
次に、クライアント1へ検索した実ファイル情報を送信する(図7のステップS10)。クライアント1は、実ファイル情報取得手段103aが実ファイル情報登録手段103bにより、ファイル管理表105の対応するiノード番号のエントリに(エントリがなければ作成する)、受信した実ファイル情報を登録する(図7のステップS11)。
一方、検索の結果が(3)の場合、実ファイル情報取得手段203gは、クライアント1へ検索した実ファイル情報を送信する(図7のステップS10)。クライアント1は、実ファイル情報取得手段103aが実ファイル情報登録手段103bにより、ファイル管理表105の対応するiノード番号のエントリに(エントリがなければ作成する)、受信した実ファイル情報を登録する(図7のステップS11)。
図8は条件3の場合、つまり、クライアント1から親サーバー2へ、そして、親サーバー2から子サーバー3へ至って、実ファイルのファイルハンドルを取得し、結果として親サーバー2のファイル管理データベース202に実ファイル情報を登録し、さらにクライアント1へその実ファイル情報が返信されて、ファイル管理表105へ登録するまでのシーケンスを表している。
〔I/O処理時(read,write処理)〕
クライアント1上のユーザプロセスから呼び出されるreadまたはwriteシステムコールの内部の処理において、図9のフローチャート及び図4〜図6のブロック図より、I/O要求作成手段102aは、ファイル管理表105をI/O対象の仮想ファイルのiノード番号に対応するエントリを参照し、さらに仮想ファイルの現在のファイルオフセットの値を元に、同エントリ内の実ファイル情報を順に調べ(図9のステップS1)、ファイルオフセットに対応した実ファイル情報が存在すれば(図9のステップS2)、それを取り出す。存在しない場合は、実ファイル情報取得手段103aにより、親サーバー2へ対応する実ファイルの実ファイル情報を問い合わせるパケットを送信し、応答があるまで待ち合わせる(図9のステップS3)。
次に、仮想ファイル上のファイルオフセットをその実ファイルの先頭を基準としたオフセット(実ファイルのファイルオフセット)に変換し、実ファイルのファイルオフセットとI/Oサイズと実ファイルの最大長の関係から、I/Oサイズとファイルオフセットの合計値が実ファイルの最大長を超えない値に補正する。要求されたI/Oサイズと補正後のI/Oサイズの差分は、図9のステップS10〜ステップS11を経て再度ステップS1に戻った際に処理する(図9のステップS4)。
そして、実ファイルのファイルオフセット,ファイルハンドル,I/Oサイズ,認証情報から、I/O要求パケットを作成し、該当する子サーバー3へ送信し、受信待ち手段102bにより、子サーバー3からのレスポンスを待ち合わせる(図9のステップS5)。
子サーバー3から、パケットを受信した場合(図9のステップS6)、受信するパケットの種別として、ブロックI/O情報とI/O終了通知の2種がある。
このパケットの種別をパケット内のフラグから判断し(図9のステップS7)、ブロックI/O情報である場合、I/O発行手段102cにより、パケット内に納められたブロックI/O情報に基づいて、該当するディスク装置4の該当する箇所に対してブロックI/Oを発行する。発行後は、再度ステップS6に戻りパケットの受信待ちをする。また、発行したブロックI/Oの終了通知は、I/Oの終了割り込みの処理内において、I/O発行手段102cにより、パケットを受信した子サーバー3から指示されたブロックI/Oが終了した旨を伝えるパケットをその子サーバー3へ返信する(図9のステップS8)。
子サーバー3から、受信したパケットがI/O終了通知である場合、子サーバー3から返された実際にI/Oを行ったサイズだけ仮想ファイルのファイルオフセットを進め(図9のステップS9)、I/Oの終了ステータスをチェックし(エラーのチェック)、エラーがない場合で要求したI/OサイズのI/Oが完了した場合は、I/O処理を終了する(図9のステップS10)。
エラーがない場合で要求したI/OサイズのI/Oがまだ終了していない場合においてI/O要求がwriteの場合は、実ファイルの最大長までI/Oした場合であるので、ステップS1へ戻り(図9のステップS11)、次の実ファイル情報を取り出す。
readの場合で、実ファイルのファイルオフセットが実ファイルの終端に達した場合、または、実ファイルのファイルオフセットが実ファイルの最大長に達しており且つ終端フラグがセットされている場合は、既に仮想ファイルの最後までreadした場合であるので、I/O処理を終了する(図9のステップS10)。
readの場合で、上記以外の場合は次にreadすべき実ファイルが存在するので、ステップS1に戻り、次の実ファイル情報を取り出す(図9のステップS11)。
そして、エラーがある場合はエラー番号を設定し、I/O処理を終了する(図9のステップS10)。
次に、クライアント1から、I/O要求を受信した子サーバー3の処理において、図10のフローチャート及び図4〜図6のブロック図より、I/O要求のパケットを受信した子サーバー3では(図10のステップS1)、アクセス許可手段302aにより、アクセス許可のあるクライアントであるか否かを確認する(図10のステップS2)。
次に、実ファイルシステム管理手段303により、認証情報のチェックのあと、対象の実ファイル上のI/Oすべき箇所が、どのディスク装置4のどのアドレスからの何ブロックをreadまたはwriteするかという情報(ブロックI/O情報)に変換し、ブロックI/O手段304によって、上記ブロックI/O情報をI/O要求を送信したクライアント1へ返信する(図10のステップS3)。
次に、クライアント1からブロックI/Oの終了通知を示すパケットを受信するまで待ち合わせる(図10のステップS4)。
クライアント1からブロックI/Oの終了通知を示すパケットを受信したら、そのブロックI/Oが正常に終了したか、エラーになったかを確認する。
エラーになった場合は、クライアント1へ返すI/O終了通知のステータスとしてエラーを設定し、そのパケットを同クライアント1へ返送する。
また、正常終了した場合は、クライアント1へ返すI/O終了通知のステータスとして正常終了を設定し、そのパケットを同クライアント1へ返送する(図10のステップS5)。
〔オフセット移動時〕
クライアント1上のユーザプロセスから呼び出されるseekシステムコールの内部の処理において、図4〜図6のブロック図より、オフセット変更手段104を用いて、仮想ファイルシステム上のファイルオフセットの新しい位置をseekシステムコールの渡された引数の値より計算し、ファイル管理表105を、対象の仮想ファイルのiノード番号と計算した新しいファイルオフセットの値を用いて検索し、対応する実ファイル情報があるかどうかを調べる。
実ファイル情報が存在する場合は何もしない。存在しない場合は、実ファイル情報取得手段103aにより、親サーバー2へ対応する実ファイルの実ファイル情報を問い合わせ、親サーバー2から返された実ファイル情報をファイル管理表105の該当するエントリに実ファイル情報登録手段103bにより登録する。
以上に述べた通り、この実施形態では、read,writeに関わるI/Oデータはサーバー(親サーバー2と子サーバー3)を介さないように構成されているため、サーバー上のメモリ、CPU等のシステム資源を無駄に使用しないようにできる。
また、read,writeシステムコール呼び出し時に、システム内に1つしかない親サーバー2に殆どの場合は通信の必要が生じないため、親サーバー2に負荷をかけない。このため、親サーバー2の処理がボトルネックになってファイルシステム全体の処理が遅延するようなことがなく、I/O高負荷でも滞りなくI/O処理ができる。その理由は、クライアント1と親サーバー2との通信及び親サーバー2と子サーバー3との通信は、実ファイルの終端を検出しない限り、クライアント1がファイルのオープン(openシステムコール呼び出し時の処理)またはファイルオフセットの移動(seekシステムコール呼出時の処理)を呼び出した際に行われ、read,writeシステムコール呼び出し時においては、クライアント1は子サーバー3との間での通信だけでよく、openまたはseekシステムコールの呼び出し頻度は、read,writeシステムコールの呼び出し頻度より一般に少ないと考えられるためである。
しかも、ファイル生成時において、親サーバー2が、最初に実ファイルを生成する子サーバー3を決定するアルゴリズムとして、子サーバー3の番号を最若番から順に増やすという方法を取っているため(段落0045参照)、ファイル生成を要求したクライアント1には依存せず、登録されている全ての子サーバー3に偏りなく実ファイルの配置ができるので、多数のI/O要求が発行された場合でも、各要求はそれぞれの子サーバー3に分散されることになり、子サーバー3の負荷が軽減される。
また、複数の子サーバー3に跨った大容量ファイルを作成でき、そのファイルへのI/Oがシーケンシャルなアクセスの場合は特に効率よくI/O処理を行うことができる。その理由は、新規にファイルを生成する場合、子サーバー3上の実ファイルのサイズが一定値を超えると、次の子サーバー3上にそのファイルの続きを作成するので(段落0043,0089参照)、親サーバー2との通信は次の子サーバー3に移る場合だけで済むためである。また、ファイルの読み込みや、既に存在するファイルに対する上書きを行う場合で、実ファイルの終端を検出した場合、クライアント1は親サーバー2へその旨を通知し、親サーバー2はクライアント1へ次の子サーバーのアドレスとファイルハンドル(実ファイル情報)を送信することで、クライアント1がI/Oの対象としている仮想ファイル上の次の実ファイルが存在する子サーバー3へI/O要求を発行することができるためである。
また、同一の仮想ファイルであっても実ファイルが異なれば、複数のクライアント1から同一の仮想ファイル上の異なる実ファイルに対して同時にwriteを行うことが可能である。
しかも、システムの運用中に親サーバー2に対して新たな子サーバー3とそれが管理するディスク装置4を追加することができるので、システムの運用中にファイルシステムを拡張することができる。
HPC(High Performance Computing)のような大規模なデータを高速に処理しなければならない分野においては、データの取り扱いを容易にするため、複数のファイルシステムに分散させてファイルを格納するのではなく、大容量の1つのファイルシステムにファイルを格納する方が一般に扱いやすいとされている。従って、本発明はHPCのような分野に適用できる。
また、MPI(Message Passing Interface)のジョブが複数のクライアント上で動作する場合、大容量ファイルの異なる箇所に対して、同時にI/O処理を行うことがある。本発明によれば、実ファイルが異なる場合、大容量ファイルの異なる箇所に対して同時に書き込み等のI/O処理ができるため、効率的に大容量ファイルの生成等が行える。従って、本発明はMPIのような分野にも好適である。
クライアントコンピュータと子サーバーコンピュータと親サーバーコンピュータとの接続およびディスク装置とクライアントコンピュータと子サーバーコンピュータとの接続について示した概念図である。 仮想ファイルシステムと実ファイルシステムの関係を簡略化して示した概念図である。 仮想ファイルと実ファイルの関係を簡略化して示した概念図である。 クライアントコンピュータの構成の概略を示した機能ブロック図である。 親サーバーコンピュータの構成の概略を示した機能ブロック図である。 子サーバーコンピュータの構成の概略を示した機能ブロック図である クライアントから仮想ファイルをオープンする際の処理の概略について示したフローチャートである。 実ファイル情報がクライアントにも親サーバーにも登録されておらず子サーバーへの問い合わせが必要となった場合のファイルハンドルの取得に関わる処理の流れを簡略化して示したシーケンス図である。 I/O処理におけるクライアントの動作の概略を示したフローチャートである。 I/O処理における子サーバーの動作の概略を示したフローチャートである。
符号の説明
1 クライアントコンピュータ
2 親サーバコンピュータ
3 子サーバコンピュータ
4 ディスク装置
5 チャネルスイッチ
101 通信手段
102 I/O要求手段
102a I/O要求作成手段
102b 受信待ち手段
102c I/O発行手段
102d I/O終了判別手段
103 実ファイル情報操作手段
103a 実ファイル情報取得手段
103b 実ファイル情報登録手段
104 オフセット変更手段
105 ファイル管理表
106 ネットワークファイルシステム処理手段
201 通信手段
202 ファイル管理データベース
203 仮想ファイル管理手段
203a 実ファィル終端処理手段
203b オフセット変更手段
203c 子サーバ割り当て手段
203d アクセス許可手段
203e アクセス許可リスト
203f ファイルハンドル作成手段
203g 実ファィル情報取得手段
203h 実ファイル情報登録手段
203i 仮想ファイル操作手段
204 データベース検索更新手段
205 子サーバ管理手段
205a ファイルハンドル取得手段
205b マウント手段
205c 実ファイル操作手段
205d 実ファイルシステム拡張手段
205e 子サーバ追加手段
205f 実ファイル情報収集手段
301 通信手段
302 実ファイル管理手段
302a アクセス許可手段
302b アクセス許可リスト
302c I/O結果返信手段
303 実ファイルシステム管理手段
304 ブロックIO手段

Claims (5)

  1. 複数のディスク装置を管理する各ディスク装置毎の子サーバーコンピュータと前記子サーバーコンピュータを管理する親サーバーコンピュータと複数のクライアントコンピュータとを情報伝達可能に接続し、前記ディスク装置に大容量ファイルを分割して記憶するようにしたファイル共有方法であって、
    前記クライアントコンピュータおよび子サーバーコンピュータと親サーバーコンピュータをネットワーク経由で接続すると共に、前記複数のディスク装置と前記各クライアントコンピュータおよび前記各子サーバーコンピュータをチャネルスイッチを介して接続し、
    前記各ディスク装置の実ファイルシステムの構造および前記実ファイルシステムを跨ぐ仮想ファイルシステムの構造と前記仮想ファイルシステム内における実ファイルの記憶位置を特定する実ファイル情報を前記親サーバーコンピュータにファイル管理データベースとして予め登録しておき、
    前記クライアントコンピュータによるファイルのオープン操作に際し、目的とするファイルに対応した実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されているか否かを該クライアントコンピュータが判定し、記憶されている場合には、ファイル管理表に記憶されている実ファイル情報に基づいて、該クライアントコンピュータが、該当する子サーバーコンピュータに対して直接的に入出力処理の要求を送信して当該子サーバーコンピュータで管理されるディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を開始する一方
    目的とするファイルに対応した実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されていない場合には、前記親サーバーコンピュータにネットワーク経由で要求を送信して前記親サーバーコンピュータから目的とするファイルに対応した実ファイル情報を求め、親サーバーコンピュータのファイル管理データベースに実ファイル情報が登録されていれば、この実ファイル情報を取得し、当該実ファイル情報に基づいて、該クライアントコンピュータが、該当する子サーバーコンピュータに対して直接的に入出力処理の要求を送信して当該子サーバーコンピュータで管理されるディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を開始すると共に、親サーバーコンピュータから取得した実ファイル情報を前記ファイル管理表に記憶し、また、親サーバーコンピュータのファイル管理データベースに実ファイル情報が登録されていなければ、親サーバーコンピュータが子サーバーコンピュータから実ファイルのファイルハンドルを取得してファイル管理データベースに登録した後、クライアントコンピュータが当該実ファイル情報を親サーバーコンピュータから取得し、当該実ファイル情報に基づいて、クライアントコンピュータが、該当する子サーバーコンピュータに対して直接的に入出力処理の要求を送信して当該子サーバーコンピュータで管理されるディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を開始すると共に、親サーバーコンピュータから取得した実ファイル情報を前記ファイル管理表に記憶することを特徴としたファイル共有方法。
  2. 前記クライアントコンピュータが前記実ファイル情報に基づいてディスク装置との間でブロックI/O情報に従ってファイル操作に関わる入出力処理を行う間に、要求されたI/Oサイズの入出力処理が完了する前に当該ディスク装置内における実ファィルの終端が検出されると、前記クライアントコンピュータが、当該実ファイルに続く実ファイルの実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されているか否かを判定し、記憶されている場合には、ファイル管理表に記憶されている実ファイル情報に基づいて、該当する子サーバーコンピュータに対して入出力処理の要求を送信して、ディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を継続する一方、実ファイルに続く実ファイルの実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されていない場合には、当該実ファイルに続く実ファイルの実ファイル情報を前記親サーバーコンピュータに要求することを特徴とした請求項1記載のファイル共有方法。
  3. 前記仮想ファイルシステム上のディレクトリのファイルハンドルを前記親サーバーコンピュータが生成すると共に、前記仮想ファイルシステム上のファイルのオフセットに基づいて前記親サーバーコンピュータが前記子サーバーコンピュータから実ファイルシステム上のファイルのファイルハンドルを取得し、前記親サーバーコンピュータが、仮想ファイルシステム上のディレクトリのファイルハンドルと実ファイルシステム上のファイルのファイルハンドルを実ファイル情報として前記クライアントコンピュータに送信することを特徴とした請求項1または請求項2記載のファイル共有方法。
  4. 複数のディスク装置を管理する子サーバーコンピュータと前記子サーバーコンピュータを管理する親サーバーコンピュータと複数のクライアントコンピュータを情報伝達可能に接続し、前記ディスク装置に大容量ファイルを分割して記憶するようにしたファイル共有システムであって、
    前記クライアントコンピュータおよび子サーバーコンピュータと親サーバーコンピュータがネットワーク経由で接続されると共に、前記複数のディスク装置と前記各クライアントコンピュータおよび前記各子サーバーコンピュータがチャネルスイッチを介して接続され、
    前記親サーバーコンピュータには、前記各ディスク装置の実ファイルシステムの構造および前記実ファイルシステムを跨ぐ仮想ファイルシステムの構造と前記仮想ファイルシステム内における実ファイルの記憶位置を特定する実ファイル情報を生成する子サーバー管理手段と、生成された実ファイル情報を記憶するファイル管理データベースが備えられ、前記子サーバー管理手段には、クライアントコンピュータから前記ファイル管理データベースに記憶されていない実ファイル情報の要求を受けた際に子サーバーコンピュータから実ファイルのファイルハンドルを取得してファイル管理データベースに実ファイル情報を登録するファイルハンドル取得手段が設けられ
    前記クライアントコンピュータには、ファイルのオープン操作に際し、目的とするファイルに対応した実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されているか否かを判定し、目的とするファイルに対応した実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されていない場合に限り、前記親サーバーコンピュータにネットワーク経由で要求を送信して前記親サーバーコンピュータから目的とするファイルに対応した実ファイル情報を取得する実ファイル情報取得手段と、該実ファイル情報取得手段で取得された実ファイル情報を前記ファイル管理表に記憶させる実ファイル情報登録手段と、前記ファイル管理表に取得された実ファイル情報に基いて該当する子サーバーコンピュータに対して直接的に入出力処理の要求を送信し、該子サーバーコンピュータから送信されたブロックI/O情報に従って、チャネルスイッチを介して前記ディスク装置に直接的にアクセスしてファイル操作に関わる入出力処理を行うI/O要求手段が設けられていることを特徴としたファイル共有システム。
  5. 前記I/O要求手段は、前記クライアントコンピュータが前記実ファイル情報に基づいてディスク装置との間でブロックI/O情報に従ってファイル操作に関わる入出力処理を行う間に、要求されたI/Oサイズの入出力処理が完了する前に当該ディスク装置内における実ファィルの終端が検出されると、当該実ファイルに続く実ファイルの実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されているか否かを判定し、記憶されている場合には、ファイル管理表に記憶されている実ファイル情報に基づいて、該当する子サーバーコンピュータに対して入出力処理の要求を送信してディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を継続する一方、実ファイルに続く実ファイルの実ファイル情報が当該クライアントコンピュータ内のファイル管理表に記憶されていない場合には、当該実ファイルに続く実ファイルの実ファイル情報を前記親サーバーコンピュータに要求し、この実ファイル情報に基づいて、該当する子サーバーコンピュータに対して入出力処理の要求を送信してディスク装置との間で前記チャネルスイッチを介してファイル操作に関わる入出力処理を継続するように構成されていることを特徴とした請求項4記載のファイル共有システム。
JP2006121355A 2006-04-25 2006-04-25 ファイル共有方法およびファイル共有システム Expired - Fee Related JP4175379B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006121355A JP4175379B2 (ja) 2006-04-25 2006-04-25 ファイル共有方法およびファイル共有システム
US11/785,947 US8250176B2 (en) 2006-04-25 2007-04-23 File sharing method and file sharing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006121355A JP4175379B2 (ja) 2006-04-25 2006-04-25 ファイル共有方法およびファイル共有システム

Publications (2)

Publication Number Publication Date
JP2007293634A JP2007293634A (ja) 2007-11-08
JP4175379B2 true JP4175379B2 (ja) 2008-11-05

Family

ID=38620758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006121355A Expired - Fee Related JP4175379B2 (ja) 2006-04-25 2006-04-25 ファイル共有方法およびファイル共有システム

Country Status (2)

Country Link
US (1) US8250176B2 (ja)
JP (1) JP4175379B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070255677A1 (en) * 2006-04-28 2007-11-01 Sun Microsystems, Inc. Method and apparatus for browsing search results via a virtual file system
GB2455347B (en) * 2007-12-07 2012-04-11 Virtensys Ltd Control path I/O virtualisation
US20100070544A1 (en) * 2008-09-12 2010-03-18 Microsoft Corporation Virtual block-level storage over a file system
KR101245519B1 (ko) * 2008-12-09 2013-03-20 한국전자통신연구원 방송콘텐츠 보호 장치 및 방법
JP5395532B2 (ja) * 2009-06-22 2014-01-22 日本電信電話株式会社 クライアント装置、サーバ装置、コンピュータシステム、および、ファイルシステムアクセス方法、並びに、クライアントプログラムおよびサーバプログラム
US8468007B1 (en) 2010-08-13 2013-06-18 Google Inc. Emulating a peripheral mass storage device with a portable device
US20150293938A1 (en) * 2012-09-27 2015-10-15 Hewlett-Packard Development Company, L.P. Replacing virtual file system data structures deleted by a forced unmount
US9626377B1 (en) * 2013-06-07 2017-04-18 EMC IP Holding Company LLC Cluster file system with metadata server for controlling movement of data between storage tiers

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0304032B1 (de) 1987-08-20 1993-01-27 Siemens Aktiengesellschaft Lichtsteuerbarer Thyristor
JPH103421A (ja) 1995-11-20 1998-01-06 Matsushita Electric Ind Co Ltd 仮想ファイル管理システム
JP3500972B2 (ja) 1998-07-24 2004-02-23 日本電気株式会社 ディスク共有型クラスタシステムにおける論理ファイル管理システム
US6609213B1 (en) * 2000-08-10 2003-08-19 Dell Products, L.P. Cluster-based system and method of recovery from server failures
US7865596B2 (en) * 2000-11-02 2011-01-04 Oracle America, Inc. Switching system for managing storage in digital networks
US7313614B2 (en) * 2000-11-02 2007-12-25 Sun Microsystems, Inc. Switching system
US20020161846A1 (en) * 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US20030105816A1 (en) * 2001-08-20 2003-06-05 Dinkar Goswami System and method for real-time multi-directional file-based data streaming editor
EP1298536A1 (en) * 2001-10-01 2003-04-02 Partec AG Distributed file system and method of operating a distributed file system
JP4237515B2 (ja) 2003-02-07 2009-03-11 株式会社日立グローバルストレージテクノロジーズ ネットワークストレージ仮想化方法およびネットワークストレージシステム
US7610348B2 (en) * 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
US7653699B1 (en) * 2003-06-12 2010-01-26 Symantec Operating Corporation System and method for partitioning a file system for enhanced availability and scalability

Also Published As

Publication number Publication date
JP2007293634A (ja) 2007-11-08
US8250176B2 (en) 2012-08-21
US20070250594A1 (en) 2007-10-25

Similar Documents

Publication Publication Date Title
JP4175379B2 (ja) ファイル共有方法およびファイル共有システム
JP5066415B2 (ja) ファイルシステム仮想化のための方法および装置
JP4824085B2 (ja) ネットワークファイルシステムをキャッシュするシステム、及び方法
JP4405533B2 (ja) キャッシュ方法及びキャッシュ装置
US8086634B2 (en) Method and apparatus for improving file access performance of distributed storage system
JP5828760B2 (ja) キャッシュを最適化するための方法とシステム
JP4931660B2 (ja) データ移行処理装置
JP4451293B2 (ja) 名前空間を共有するクラスタ構成のネットワークストレージシステム及びその制御方法
JP4278445B2 (ja) ネットワークシステム及びスイッチ
US8909753B2 (en) Root node for file level virtualization
US9300692B2 (en) System and method for implementing data migration while preserving security policies of a source filer
US20030212571A1 (en) Distributed file management method and program therefor
WO2015118865A1 (ja) 情報処理装置、情報処理システム及びデータアクセス方法
CN109302448A (zh) 一种数据处理方法及装置
US9304997B2 (en) Asynchronously migrating a file system
WO2016101662A1 (zh) 一种数据处理方法及相关服务器
JP3848268B2 (ja) 計算機システム、計算機装置、計算機システムにおけるデータアクセス方法及びプログラム
JP2011242826A (ja) ファイル管理システム及びファイル管理プログラム
JP2007287180A (ja) 分散ファイルシステム、分散ファイルシステムサーバ及び分散ファイルシステムへのアクセス方法
JP6607044B2 (ja) サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム
WO2011117921A1 (en) Method for concurrency control in a file versioning system
KR20220053207A (ko) 멀티-다운로드 기반의 고성능 인터넷 파일 시스템
JP4005102B2 (ja) ゲートウェイ装置
JP2014235531A (ja) データ転送装置、データ転送システム、およびプログラム
US20220182384A1 (en) Multi-protocol lock manager for distributed lock management

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080707

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

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

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

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4175379

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130829

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees