(57)【特許請求の範囲】
【請求項１】
サーバ計算機と、前記サーバ計算機を管理する管理計算機と、前記サーバ計算機が接続可能なストレージ装置と、を備える計算機システムであって、
前記サーバ計算機は、前記管理計算機から前記ストレージ装置への書き込み要求信号である情報処理要求を受信した場合に、前記サーバ計算機が備える第１の記憶部に前記情報処理要求に関する書き込みを行う処理である仮書き込み処理を行い、前記仮書き込み処理が完了したことを示す第１の通知信号を前記管理計算機に送信し、
前記管理計算機は、前記第１の通知信号を受信した場合に、前記管理計算機が前記第１の通知信号を受信したことを示す第２の通知信号を前記サーバ計算機に送信し、
前記サーバ計算機は、前記第２の通知信号を受信した場合に、前記第１の記憶部から前記仮書き込みの内容を読み出し、前記仮書き込みの内容を前記ストレージ装置に書き込む、こと、
を特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記管理計算機は、前記第１の通知信号を受信した場合に、前記情報処理要求の内容を前記管理計算機が備える第２の記憶部に保持する、こと、
を特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記サーバ計算機は、前記ストレージ装置への前記仮書き込みの内容の書き込みが完了した場合に、前記ストレージ装置への書き込みが完了したことを示す第３の通知信号を前記管理計算機に送信し、
前記管理計算機は、前記第３の通知信号を受信した場合に、前記第２の記憶部に保持した前記情報処理要求の内容を削除する、こと、
を特徴とする計算機システム。
【請求項４】
請求項１に記載の計算機システムであって、
前記サーバ計算機は、前記仮書き込み処理を行う際に前記ストレージ装置から読み出した情報を利用する、こと、
を特徴とする計算機システム。
【請求項５】
請求項１に記載の計算機システムであって、
前記サーバ計算機として、第１のサーバ計算機と、前記第１のサーバ計算機の代替サーバ計算機である第２のサーバ計算機と、を管理し、
前記第１のサーバ計算機が前記管理計算機から情報処理要求を受信した場合に、
前記管理計算機は、前記第１のサーバ計算機から前記第１の通知信号を受信した際に、前記情報処理要求の内容を前記管理計算機が備える第２の記憶部に保持し、
前記第２のサーバ計算機は、前記第１のサーバ計算機に障害が発生した際に、前記第２の記憶部に保持された前記情報処理要求の内容に基づいて前記情報処理要求に関する処理を前記第１のサーバ計算機から引き継ぐ、こと、
を特徴とする計算機システム。
【請求項６】
サーバ計算機と、前記サーバ計算機を管理する管理計算機と、前記サーバ計算機が接続可能なストレージ装置と、を備える計算機システムにおける計算機システム制御方法であって、
前記サーバ計算機が、前記管理計算機から前記ストレージ装置への書き込み要求信号である情報処理要求を受信した場合に、前記サーバ計算機が備える第１の記憶部に前記情報処理要求に関する書き込みを行う処理である仮書き込み処理を行い、前記仮書き込み処理が完了したことを示す第１の通知信号を前記管理計算機に送信し、
前記管理計算機が、前記第１の通知信号を受信した場合に、前記管理計算機が前記第１の通知信号を受信したことを示す第２の通知信号を前記サーバ計算機に送信し、
前記サーバ計算機が、前記第２の通知信号を受信した場合に、前記第１の記憶部から前記仮書き込みの内容を読み出し、前記仮書き込みの内容を前記ストレージ装置に書き込む、こと、
を特徴とする計算機システム制御方法。
【請求項７】
請求項６に記載の計算機システム制御方法であって、
前記管理計算機が、前記第１の通知信号を受信した場合に、前記情報処理要求の内容を前記管理計算機が備える第２の記憶部に保持する、こと、
を特徴とする計算機システム制御方法。
【請求項８】
請求項７に記載の計算機システム制御方法であって、
前記サーバ計算機が、前記ストレージ装置への前記仮書き込みの内容の書き込みが完了した場合に、前記ストレージ装置への書き込みが完了したことを示す第３の通知信号を前記管理計算機に送信し、
前記管理計算機が、前記第３の通知信号を受信した場合に、前記第２の記憶部に保持した前記情報処理要求の内容を削除する、こと、
を特徴とする計算機システム制御方法。
【請求項９】
請求項６に記載の計算機システム制御方法であって、
前記サーバ計算機が、前記仮書き込み処理を行う際に前記ストレージ装置から読み出した情報を利用する、こと、
を特徴とする計算機システム制御方法。
【請求項１０】
請求項６に記載の計算機システム制御方法であって、
前記サーバ計算機として、第１のサーバ計算機と、前記第１のサーバ計算機の代替サーバ計算機である第２のサーバ計算機と、を管理し、
前記第１のサーバ計算機が前記管理計算機から情報処理要求を受信した場合に、
前記管理計算機が、前記第１のサーバ計算機から前記第１の通知信号を受信した際に、前記情報処理要求の内容を前記管理計算機が備える第２の記憶部に保持し、
前記第２のサーバ計算機が、前記第１のサーバ計算機に障害が発生した際に、前記第２の記憶部に保持された前記情報処理要求の内容に基づいて前記情報処理要求に関する処理を前記第１のサーバ計算機から引き継ぐ、こと、
を特徴とする計算機システム制御方法。
【請求項１１】
管理計算機と、ストレージ装置と、に接続可能なサーバ計算機であって、
前記管理計算機との間で信号を送受信する送受信部と、
情報を記憶する情報記憶部と、
前記ストレージ装置への情報の書き込みと、前記ストレージ装置からの情報の読み出しと、を行うストレージ装置接続部と、
前記送受信部が前記管理計算機から前記ストレージ装置への書き込み要求信号である情報処理要求を受信した場合に、前記情報記憶部に前記情報処理要求に関する書き込みを行う処理である仮書き込み処理を行う処理要求仮実行部と、を備え、
前記送受信部は、
前記仮書き込み処理が完了したことを示す第１の通知信号を前記管理計算機に送信し、
前記管理計算機が前記第１の通知信号を受信したことを示す第２の通知信号を前記管理計算機から受信し、
前記ストレージ装置接続部は、
前記送受信部が前記第２の通知信号を受信した場合に、前記情報記憶部から前記仮書き込みの内容を読み出し、前記仮書き込みの内容を前記ストレージ装置に書き込む、こと、
を特徴とするサーバ計算機。
【請求項１２】
請求項１１に記載のサーバ計算機であって、
前記送受信部は、前記ストレージ装置への前記仮書き込みの内容の書き込みが完了した場合に、前記ストレージ装置への書き込みが完了したことを示す第３の通知信号を前記管理計算機に送信する、こと、
を特徴とするサーバ計算機。
【請求項１３】
請求項１１に記載のサーバ計算機であって、
前記ストレージ装置接続部は、前記仮書き込み処理を行う際に前記ストレージ装置から読み出した情報を利用すること、
を特徴とするサーバ計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ計算機の制御に関し、特に、サーバ計算機によるディスク装置への書き込み処理の制御方法に関する。
【背景技術】
【０００２】
計算機によって大量のデータを処理する必要がある場合、複数の計算機にデータを分配して同時並行で処理を行うことは多い。また、複雑なステップを経て一連の処理が完了するような場合に各ステップを専門に担当する独立した計算機を準備し、計算機間で結果の受け渡しを行いながら処理を進める場合もある。このような複数の計算機を用いたデータ処理の際には、データ授受の利便性のため、処理対象や処理結果が書かれたファイルをネットワークを用いた共有ファイルシステム上に配置し、すべての計算機から同じファイルにアクセスすることができるようシステムを構成することが多い。【０００３】
共有ファイルシステムは、システム全体にファイルを提供するという性質上、単一障害点になりやすい。つまり、共有ファイルシステムを提供する計算機が停止するとシステム全体でファイルアクセスが不可能となり、大規模なシステム停止につながる。そこで、特に大規模システム向けに作られた共有ファイルシステムは、複数の計算機を用いて共有ファイルシステムを構成し、一部の計算機に故障が発生した場合でもファイルアクセスを続けることができるようなフェイルオーバー機能を提供している。【０００４】
非特許文献１には次のような方法が開示されている。まず、ファイルの作成、書き込みなどの要求を出す計算機（以下、クライアント）から要求を処理する計算機（以下、サーバ）に書き込みを伴うリクエストが発行されると、サーバはその処理に一意な処理番号を与える。そして、要求された処理内容と最新の処理番号をディスクに書き込む。その処理番号はクライアントに通知され、クライアントはサーバ側でのディスクへの書き込みを確認するまでは要求の内容と処理番号を記憶しておく。サーバに障害が発生した場合は代替計算機が起動し、故障前のサーバが利用していたディスクの内容を確認する。そこにはディスクへの書き込みが完了した処理の処理番号が記録されているため、その番号を確認し、ディスクに書き込まれていない処理の再実行をクライアントに依頼する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Lustre 2.0 Operations Manual, CHAPTER30,［ online ］、［平成２３年９月２日検索］、インターネット〈URL: http://wiki.lustre.org/manual/LustreManual20_HTML/index.html〉
【発明の概要】
【発明が解決しようとする課題】
【０００６】
非特許文献１に示されるような先行技術ではクライアントからの要求に処理番号を付加し、要求内容と共に処理番号をディスクに書き込むことで、サーバの故障時にもクライアントからの要求を漏れなく重複なく再現することを可能としている。その例を図１６に示す。ファイルシステムクライアントは処理番号１としてメッセージＭ１６０１にてファイルＡの作成をサーバに依頼する。サーバはメッセージＭ１６０２にてディスクにファイルＡの作成を要求し、メッセージＭ１６０３にて最新の処理番号が１であることの書き込みを要求する。その後メッセージＭ１６０４でクライアントに処理の成功を返す。サーバに障害が発生した場合、失敗した処理を再実行するため代替サーバは最新の処理番号を調べ（この例では１の書き込みに失敗しているので０）、メッセージＭ１６０５にてクライアントに通知する。そしてクライアントは失敗した最新のリクエスト１から再実行する（メッセージＭ１６０６）。処理番号と処理の本体が不可分に書込みできれば問題は起きないが、図１６の例のように、ファイルの実体の作成は成功したものの処理番号の書き込みに失敗した場合は、メッセージＭ１６０７のように再実行によって二重実行が発生し、本来発生しないエラーが発生する。このような問題を回避するためには、例えばディスクファイルシステムに処理内容と不可分に処理番号を書くような機能が必要となる。【０００７】
しかし、オペレーティングシステムに標準装備されたディスクファイルシステムに新たな機能を付加するのは、ソースコードの入手可能性、あるいは既存ファイルとの互換性維持のために困難を伴う場合が多い。しかし、オペレーティングシステムに標準装備されたディスクファイルシステムに新たな機能を付加するのは、ソースコードの入手可能性、あるいは既存ファイルとの互換性維持のために困難を伴う場合が多い。この困難を回避するためにはディスクファイルシステム一式を開発しなくてはならず、ソフトウェアの開発、保守コストの増大を招く。【０００８】
本発明は、上記の問題点に鑑みてなされたものであり、ディスクファイルシステムに処理番号の記録等の為の特殊な機能を仮定せずとも、主サーバの故障時における主サーバから副サーバへの処理の引継ぎを行う際に、書き込み処理の二重実行によるエラーの発生を防止することを目的とする。
【課題を解決するための手段】
【０００９】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、サーバ計算機が、管理計算機からストレージ装置への書き込み要求信号を受信した場合に、前記サーバ計算機が備える第１の記憶部に前記書き込み要求信号に関する書き込みを行う仮書き込みを行い、前記仮書き込みが完了したことを示す第１の通知信号を前記管理計算機に送信し、前記管理計算機が、前記第１の通知信号を受信した場合に、前記管理計算機が前記第１の通知信号を受信したことを示す第２の通知信号を前記サーバ計算機に送信し、前記サーバ計算機が、前記第２の通知信号を受信した場合に、前記ストレージ装置への書き込み処理を行う。
【発明の効果】
【００１０】
本発明によれば、ディスクファイルシステムに処理番号の記録等の為の特殊な機能を仮定せずとも、主サーバの故障時における主サーバから副サーバへの処理の引継ぎを行う際に、書き込み処理の二重実行によるエラーの発生を防止することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例１の計算機システムの構成を示すブロック図である。
【図２】本発明の実施例１のファイル入出力処理の手順のシーケンス図である。
【図３】本発明の実施例１における、データがディスク装置に書き込まれた後にサーバ計算機に障害が発生した場合の処理の手順のシーケンス図である。
【図４】本発明の実施例１における、データがディスクに書き込まれる前にファイルサーバ計算機に障害が発生した場合の処理の手順のシーケンス図である。
【図５】本発明の実施例１における、クライアント計算機が処理結果を受け取る前にファイルサーバ計算機に障害が発生した場合の処理の手順のシーケンス図である。規則を設定する手順のフローチャートである。
【図６】本発明の実施例１における、ユーザ要求転送部の処理の手順のフローチャートである。
【図７】本発明の実施例１における、クライアント要求仮実行部の前半の処理のフローチャートである。
【図８】本発明の実施例１における、クライアント要求仮実行部の後半の処理のフローチャートである。
【図９】本発明の実施例１における、ＡＣＫ処理部の処理のフローチャートである
【図１０】本発明の実施例１における、再送処理部の処理のフローチャートである
【図１１】本発明の実施例１における、リクエスト履歴情報の例の説明図である
【図１２】本発明の実施例１における、メモリファイルシステム情報の例の説明図である
【図１３】本発明の実施例１における、フェイルオーバー処理部のフローチャートである
【図１４】本発明の実施例２における、並列ファイルシステムの例である
【図１５】本発明の実施例２における、並列ファイルシステムクライアント部の処理のフローチャートである
【図１６】本発明を使用しない場合の計算機システムにおけるフェイルオーバー処理シーケンスの例である
【発明を実施するための形態】
【００１２】
以下、本発明の各種の実施例について、図面を用いて詳細に説明する。
【実施例１】
【００１３】
本実施例では最初に、本発明を実施する際の装置構成の例を示した後に、全体の処理概要を示し、その後詳細を解説する。【００１４】
はじめに、図１に示すブロック構成図を用いて、実施例１の計算機システムの構成について説明する。クライアント計算機１０１は、ネットワーク１０４を介して、サーバ計算機１０２ａおよび１０２ｂに接続される。サーバ計算機１０２ａ、１０２ｂにはディスク装置１０３ａ〜１０３ｃが接続される。ネットワーク１０５を用い、サーバ計算機１０２ａ、１０２ｂは共に同じディスク装置１０３ａ〜１０３ｃにアクセスできるように接続されている。【００１５】
ネットワーク１０４は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。ネットワーク１０５は、例えば、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。【００１６】
クライアント計算機１０１は、システムの管理者またはユーザーが使用するコンピュータ装置であり、プロセッサ１１１、メモリ１１２、記憶装置１１３、ネットワークインタフェース１１４等を備え、ネットワークインタフェース１１４を用いてネットワーク１０４に接続されている。クライアント計算機１０１のメモリ１１２には、ユーザープログラム１４０およびファイルシステムクライアント１４１が格納されており、ユーザープログラム１４０は例えばファイルシステムクライアント１４１に対してデータ入出力命令を発行する。ユーザープログラム１４０およびファイルシステムクライアント１４１は計算機プログラムであり、記憶装置１１３に格納されている当該計算機プログラムをメモリ１１２に読み込む、または、当該計算機プログラムを格納している他の計算機等よりネットワーク１０４およびネットワークインタフェース１１４を用いてメモリ１１２に読み込むなどの方法があり、プロセッサ１１１によって実行される。また、ファイルシステムクライアント１４１は、後述するユーザ要求転送部１５１、ＡＣＫ処理部１５２、再送処理部１５３、及びリクエスト履歴部１７１を有する。【００１７】
サーバ計算機１０２ａは、クライアント１０１からのファイル入出力要求を受け付け、ディスク装置１０３ａ〜１０３ｃにアクセスするためのコンピュータ装置であり、プロセッサ１２１ａ、メモリ１２２ａ、記憶装置１２３ａ、ネットワークインタフェース１２４ａ、ストレージインタフェース１２５ａ等を備える。ネットワークインタフェース１２４ａを通じネットワーク１０４に、ストレージインタフェース１２５ａを通じ、ネットワーク１０５に接続されている。【００１８】
サーバ計算機１０２ａのメモリにはファイルシステムサーバ１４２ａが格納されており、ファイルシステムクライアント１４１からの要求を処理する。ファイルシステムサーバ１４２ａは計算機プログラムであり、記憶装置１２３ａに格納されている当該計算機プログラムをメモリ１２２ａに読み込む、または、当該計算機プログラムを格納している他の計算機よりネットワーク１０４およびネットワークインタフェース１２４ａを用いてメモリ１２２ａに読み込むなどの方法があり、プロセッサ１２１ａによって実行される。また、ファイルシステムサーバ１４２ａは、後述するクライアント要求仮実行部１６１ａ、フェイルオーバー処理部１６２ａ、ディスクファイルシステム部１６３ａ、及びメモリファイルシステム情報１８１ａを有する。【００１９】
サーバ計算機１０２ｂは、上述のファイルシステムサーバ１４２ａ、プロセッサ１２１ａ、記憶装置１２３ａ等のサーバ計算機１０２ａが有する構成と同様の構成を持つコンピュータ装置であり、ネットワークインタフェースを用いてネットワーク１０４に、ストレージインタフェースを用いてネットワーク１０５に接続されている。サーバ計算機１０２ｂのメモリ１２２ｂには、クライアント要求仮実行部１６１ａと同じ構成、機能を有するクライアント要求仮実行部１６１ｂ、フェイルオーバー処理部１６１ａと同じ構成、機能を有するフェイルオーバー処理部１６１ｂ、ディスクファイルシステム部１６３ａと同じ構成、機能を有するディスクファイルシステム部１６３ｂ、メモリファイルシステム情報１８１ａと同じ構成、機能を有するメモリファイルシステム情報１８１ｂが格納されていて、プロセッサ１２１ｂにより実行される。【００２０】
本実施例ではサーバ計算機１０２ａを通常使用するサーバ計算機、サーバ計算機１０２ｂを１０２ａに障害が発生した場合の代替サーバ計算機として説明を行うが、１０２ａ、１０２ｂに構成や機能の相違はなく役割は入れ替わっても構わない。また、お互いが他方の代替サーバとして構成されていても良い。【００２１】
ディスク装置１０３ａ〜１０３ｃはネットワーク１０５に接続可能な記憶装置であり、例えば、ハードディスクドライブ（ＨＤＤ）、半導体ディスク（ＳＳＤ）、またはＨＤＤ、ＳＤＤをＲＡＩＤシステムとして組み合わせたストレージアレイ等である。【００２２】
次にファイルシステムクライアント１４１が有する各機能ブロックについて概要を説明する。【００２３】
ユーザ要求転送部１５１はユーザープログラムからのファイル入出力命令をサーバ計算機に転送する。ＡＣＫ処理部１５２はユーザ要求転送部１５１が送信した処理要求がサーバ側で処理されたか処理に失敗したかを管理する。再送処理部１５３はサーバ計算機１０２ａの障害の後、代替サーバとして動作するサーバ計算機１０２ｂに対して、１０２ａが障害前に受け取ったものの処理が完了しなかったリクエストを再実行するよう求める。リクエスト履歴情報１７１は、ＡＣＫ処理部１５２が未完の処理を管理するための管理情報である。【００２４】
次にファイルシステムサーバ１４２ａについて概要を説明する。【００２５】
クライアント要求仮実行部１６１ａはファイルシステムクライアント１４１からの要求を受け付け、メモリファイルシステム情報１８１ａに対して処理を行う。フェイルオーバー処理部１６２ａはファイルシステムクライアントの再送処理部１５３からのリクエストを受けつける。ディスクファイルシステム部１６３ａはディスク装置１０３ａ〜１０３ｃに保存されるデータのデータ構造を管理し、ファイルの読み込み、書き込みなどの一連の処理を提供する。ディスクファイルシステム部１６３ａは、ファイルに対する作成、削除、読み込み、書き込み等の操作要求を１０３ａ等のディスク装置上の記録位置と記録形式に変換した上でディスクに読み書き要求を発行する処理を行う。メモリファイルシステム情報１８１ａは、クライアント要求仮実行部１６１ａによって使用され、ファイルシステムクライアントからの処理要求を、一時的にメモリ上で実行するためのデータ構造である。【００２６】
次に、図１１、図１２を用いて、図１の説明で述べた記憶装置内に構築するデータ構造であるリクエスト履歴情報１７１、および、メモリファイルシステム情報１８１ａの構成例についてそれぞれ詳細に説明する。ただし、以下の内容はデータ構造の一例であり、同等の意味を持つ内容を保持できればその形式は任意である。【００２７】
図１１にリクエスト履歴情報１７１の構成例を示す。リクエスト履歴情報は一個のリクエストをひとつの要素とするリスト構造である。リスト構造を計算機のメモリ上に構築する具体的方法はここでは詳細に説明しない。リストは先頭を示す構造１１０１から連なり、リストの各要素には、次のリクエストへのポインタ１１０３、リクエスト種別１１０４、宛先のサーバ計算機の識別番号１１０５、リクエストの内容１１０６を含む。リクエスト種別とは、当該リクエストがファイル作成、ファイル書き込み、属性変更など多数あるファイル操作のうちのどれであったのかを示す数値である。宛先のサーバ計算機の識別番号は該リクエストを送信した先のファイルサーバ計算機を識別できる番号で、例えばファイルシステムサーバとクライアントの間で合意されたノード番号、あるいはネットワークのアドレスなどである。リクエストの内容は種別に依存し、例えばファイル作成ならば親ディレクトリを識別するデータとファイル名、作成時の属性情報が含まれる。データ書き込みであれば書き込んだデータを保持しているメモリの番地１１０８およびデータ本体１１０９が含まれる。リクエスト内容の保持方法は任意であるが、最も簡単には、リクエスト実行時にネットワークに送信した情報をすべて保持しておけばよい。【００２８】
図１２にメモリファイルシステム情報１８１ａの構成例を示す。図１２の例ではメモリファイルシステム情報は保持されているディレクトリをノードとする木構造である。木構造を計算機のメモリ上に構築する方法はここでは詳細に説明しない。各ディレクトリはそのディレクトリに含まれるファイルをリスト構造として保持するため、その先頭となるファイルの情報を保持するメモリのメモリアドレス１２１０を保持する。また、各ディレクトリは、そのディレクトリの名前、およびアクセス権などの属性を保持する。各ファイルは名前１２０２、ファイルの種別（属性１２０３、所有者１２０４、グループ１２０５、アクセス権１２０６、開放可能フラグ１２０７）の他に、ファイルの内容を記したデータを保持したメモリのアドレス１２０８、同じディレクトリに存在する次のファイルの情報へのポインタ１２０９を持つ。【００２９】
ここまで本実施例における計算機システムの構成例について述べてきたが、以下にて、図１に示される各部の動作と各部間の関係について詳細に説明する。本実施例において、サーバ計算機１０２ａに障害がない場合の動作概要は図２のようになる。また、サーバ計算機１０２ａに障害が発生した場合の本発明における動作概要が図３、図４、図５である。図２におけるいかなるタイミングでサーバ計算機１０２ａの障害が起きても本発明の手法で回復できることを示すため、サーバ計算機１０２ａの障害（図３、図４、図５において×印３８０で示されている）の発生タイミングごとに３つの場合に分けて、本発明の詳細な内容を説明している。【００３０】
まず、サーバに障害が発生しない場合を示す図２から説明する。メッセージＭ２１０にて、ユーザ要求転送部１５１はユーザープログラム１４０からファイル処理要求を受け取る。これは、例えばファイルの作成、削除、読み込み、書き込みなどである。Ｍ２１０を受け取ったユーザ要求転送部１５１はファイルシステムサーバ内のクライアント要求仮実行部１６１ａに対してメッセージＭ２２０でこの処理要求を転送する。【００３１】
Ｍ２２０を受け取ったクライアント要求仮実行部１６１ａは、リクエストＲ２２５にてメモリファイルシステム情報１８１ａに対して要求を実行する。この際、メモリファイルシステム情報１８１ａ中には存在しないデータが必要になった場合は、メッセージＭ２２２にてクライアント要求仮実行部１６１ａはディスクファイルシステム部１６３ａに対して読み込み要求を伝える。Ｍ２２２を受けてディスクファイルシステム部１６３ａはリクエストＲ２２６にて１０３ａ等のディスク装置から必要なデータを受け取り、このデータをメッセージＭ２２７にてクライアント要求仮実行部１６１ａに転送する。【００３２】
クライアント要求仮実行部はＭ２３０にてファイルシステムクライアント１４１内のＡＣＫ処理部１５２に処理結果を伝達する。Ｍ２３０を受け取ったＡＣＫ処理部１５２はメッセージＭ２４０にてユーザ要求転送部に当該処理結果を通知する。さらにユーザ要求転送部１５１はＭ２５０にて当該処理結果をユーザープログラムに通知する。【００３３】
Ｍ２３０がエラー終了を示していた場合、または読み込み処理でファイルシステムに変更を加えていない場合は処理を終了する。【００３４】
一方、Ｍ２３０が書き込みを伴うリクエストで、かつエラー終了を示していない場合、ユーザ要求転送部１５１は該リクエストをＲ２１５にてリクエスト履歴情報１７１に登録する。ＡＣＫ処理部１５２はさらにメッセージＭ２６０にてクライアント要求仮実行部１６１ａに対してＭ２３０の受領を伝える。Ｍ２６０を受け取ったクライアント要求仮実行部は、ディスクファイルシステム部１６３ａを通じてＲ２２５と同内容のリクエストを１０３ａ等のディスク装置に書き込む（Ｍ２７０およびＲ２７５）。ディスクファイルシステム部１６３ａはＭ２８０にてディスクへの書き込み完了通知をクライアント要求仮実行部に通知し、クライアント要求仮実行部はＭ２９０にて１０３ａ等のディスク装置への書き込み通知をＡＣＫ処理部１５２に返す。Ｍ２９０を受け取ったＡＣＫ処理部１５２はリクエストＲ２９５にてリクエスト履歴情報から当該処理の情報を削除する。上記のようにリクエスト履歴情報の登録、削除を行うことにより、リクエスト履歴情報には、リクエストＲ２７５によって１０３ａ等のディスク装置に対する書き込みが行われている途中にあるリクエストの一覧が保存されることになる。リクエスト履歴情報が存在することにより、サーバの障害発生時に１０３ａ等のディスク装置への書き込み完了が確認できていないリクエストを再実行することが可能となる。【００３５】
図２のシーケンスで処理を行うことの効果は、クライアントのＡＣＫ処理部１５２がリクエストの処理結果であるメッセージＭ２３０を受領するまでは、決して１０３ａ等のディスク装置への書き込みリクエストＲ２７５が発行されないことを保障することが可能となる点である。この性質により、メッセージＭ２３０を受け取る前にサーバに障害が発生した場合、その処理は決して１０３ａ等のディスク装置に変更を加えていないことが保障されるため、再実行時に二重実行の懸念がない。【００３６】
図３および図４は、サーバ計算機に障害が発生し、ＡＣＫ処理部１５２が上述のメッセージＭ２６０に対する応答を一定時間内に受け取らなかった場合の動作を示している。ここで一定時間とはファイルシステムの利用者によって設定される閾値であり、たとえば０．１秒あるいは１秒等、秒単位で設定される時間である。図中、×印３８０はサーバ障害により処理が継続できなくなったことを示す。【００３７】
図３、４はサーバ計算機１０２ａに障害が発生するタイミングが異なり、図３はリクエストＲ２７５により当該リクエストの内容が１０３ａ等のディスク装置に反映された後の障害であるのに対し、図４はＲ２７５の完了前の障害発生である。なお、図３、図４、図５について、図２で既に説明した処理と同じ符号が付された処理については同じ処理内容であり、図２とは異なる処理のみについて下記にて説明する。【００３８】
まず、図３について説明する。図３中、ユーザープログラム１４０、ユーザ要求処理部１５１、ＡＣＫ処理部１５２、再送処理部１６４は図１に示すとおりクライアント計算機１０１に備えられている。また×印３８０以前のクライアント要求仮実行部１６１ａ、ディスクファイルシステム部１６３ａは図１の計算機１０２ａに備えられている。【００３９】
また、丸印３８１、３８２、３８３から始まるシーケンスは、サーバ計算機１０２ａから処理を引き継ぐサーバ計算機１０２ｂに備えられた、それぞれクライアント要求仮実行部１６１ｂ、フェイルオーバー処理部１６２ｂ、ディスクファイルシステム部１６３ｂの処理である。【００４０】
ＡＣＫ処理部１５２は、図２におけるＭ２９０のような、メッセージＭ２６０に対する応答を一定時間受け取らなかった場合、再送処理部１５３を起動する。再送処理部１５３はリクエスト履歴情報に蓄えられているリクエストのなかの最も古いものを取り出すと同時にリクエスト履歴情報１７１からは削除し、新しく立ち上がったサーバ計算機１０２ｂのフェイルオーバー処理部１６２ｂに対し、該リクエストをメッセージＭ３１０にて送信する。フェイルオーバー処理部１６２ｂはメッセージＭ３２０で代替サーバ１０２ｂのディスクファイルシステム部１６３ｂに対して処理要求を行い、代替サーバ１０２ｂのディスクファイルシステム部１６３ｂがリクエストＲ３２５で１０３ａ等のディスク装置に対して書き込みを行う（上述の通り、リクエスト履歴情報に残るのは書き込み処理のみである）。再送処理部１５３はＭ３３０、Ｍ３４０を通じてＭ３１０のリクエストの処理結果を受け取る。【００４１】
次に、図４について説明する。なお、図４については、図３で既に説明した処理と同じ符号が付された処理については同じ処理内容である。図４では、メッセージＭ２６０がクライアント要求仮実行部１６１ａに到達する前にサーバ計算機１０２ａに障害が発生している為、図３にて示したＭ２７０、Ｒ２７５のメッセージは送信されず、サーバ計算機１０２ａによってはリクエストの内容が１０３ａ等のディスク装置に反映されない。【００４２】
次に、図５を用いて、ユーザ要求転送部１５１がメッセージＭ２２０の結果を一定時間内に受け取らなかった場合の処理について説明する。なお、図３、図４で既に説明した処理と同じ符号が付された処理については同じ処理内容である。この場合、ユーザ要求転送部１５１は代替サーバ１０２ｂに対してＭ２２０ａにてＭ２２０の再送信を行う。その後の処理は図２に示した平常時の処理と同じである。【００４３】
以上が、本実施例における全体的な処理の概要である。以下、このような処理を実現するための各部の動作とメモリ上のデータ格納方式について詳細に説明する。【００４４】
図６はユーザ要求転送部１５１の処理を示したフロー図である。【００４５】
ユーザ要求転送部１５１はユーザープログラム１４０からのファイル処理要求を受信することを契機として起動される（Ｓ６０１）。ユーザ要求転送部１５１は起動後、ステップＳ６０２にて、そのファイル処理要求をサーバ計算機１０２ａ内のファイルシステムサーバのクライアント要求仮実行部１６１ａに送信する。ユーザ要求転送部１５１は、ステップＳ６０３にてＡＣＫ処理部１５２を通じてサーバ計算機１０２ａ内のファイルシステムサーバのクライアント要求仮実行部１６１ａまたはディスクファイルシステム部１６３ａにおける処理結果が返るのを待つ。ステップＳ６０４はサーバからのメッセージを待つ処理であり、一定時間内にサーバからのメッセージを受領できなかった場合は通信エラーが発生したと判定して、ステップＳ６０５にて、後述する再送処理部１５３の処理が終了するのを待った後に、ステップＳ６０６にて要求の宛先を代替サーバ１０２ｂに変更し、ステップＳ６０２にて代替サーバ１０２ｂに対して要求を再送する。【００４６】
一方、ステップＳ６０４にて一定時間内にサーバからのメッセージを受領できた場合は通信エラーは発生していないと判定してステップＳ６０７の処理に移る。ステップＳ６０７はサーバ計算機１０２ａ、またはステップＳ６０６を経た場合はサーバ計算機１０２ｂからの応答を調査するステップであり、ステップＳ６０２でサーバに要求した処理が１０３ａ等のディスク装置への書き込みを伴う処理であったかどうかを調査する。調査の結果、ステップＳ６０２でサーバに要求した処理が１０３ａ等のディスク装置への書き込みを伴っていない場合はステップＳ６１０にてファイルシステムサーバ（１６２ａ、１６２ｂ）のクライアント要求仮実行部（１６１ａ、１６１ｂ）またはディスクファイルシステム部（１６３ａ、１６３ｂ）の処理結果をＳ６０１で受け取った要求に対する応答としてユーザープログラムに返す。ステップＳ６０７の判定の結果、ステップＳ６０２でサーバに要求した処理が１０３ａ等のディスク装置への書き込みを伴っている場合は、さらにステップＳ６０８にて当該要求のファイルシステムサーバ（１４２ａ、１４２ｂ）におけるクライアント要求仮実行部またはディスクファイルシステム部の処理結果が成功であったかどうかを判定する。判定の結果が失敗であった場合はすでに説明したステップＳ６１０を実行する。判定の結果が成功であった場合はステップＳ６０９にて該リクエストをリクエスト履歴情報に保存し、ステップＳ６１０を実行する。【００４７】
次に、図７を用いてクライアント要求仮実行部（１０３ａ、１０３ｂ）の処理について説明する。図７では、クライアント要求仮実行部１０３ａを例として説明する。【００４８】
クライアント要求仮実行部１０３ａは上述のユーザ要求転送部１５１からリクエストを受信することによって起動する（ステップＳ７０１）。クライアント要求仮実行部１０３ａは、起動すると受信したリクエストが１０３ａ等のディスク装置への書き込みを伴う処理であるか否かを判定する（Ｓ７０２）。【００４９】
ステップＳ７０２の判定で、受信したリクエストが１０３a等のディスク装置への書き込みを伴う処理であった場合、クライアント要求仮実行部１０３aはまず、ステップＳ７０３にてメモリファイルシステム情報１８１ａに空き領域があるかどうかを判定する。Ｓ７０３にて空きがないと判定した場合はステップＳ７０４にて、上述のメモリファイルシステム情報中１８１ａの開放可能フラグが立ったデータを削除して記憶領域を解放する。この処理の後、クライアント要求仮実行部１０３ａはステップＳ７０５にてメモリファイルシステム情報１８１ａに対してリクエストにて要求された書き込みを行う。一方、Ｓ７０３にて空きがあると判定した場合は、Ｓ７０４の処理を行わずに、クライアント要求仮実行部１０３ａはステップＳ７０５にてメモリファイルシステム情報１８１ａに対してリクエストにて要求された書き込みを行う。【００５０】
ステップＳ７０２の判定にて受信したリクエストが１０３ａ等のディスク装置への書き込みを伴う処理であった場合は、ステップＳ７０６にて対象データがメモリファイルシステム情報１８１ａ内に存在するかを調査する。Ｓ７０６にて対象データがメモリファイルシステム情報１８１ａ内に存在する場合はステップＳ７０７にてメモリファイルシステム情報１８１ａから当該データを取り出す。ステップＳ７０６にて対象データがメモリファイルシステム情報１８１ａ内に存在しない場合は、ステップＳ７０８にてディスクファイルシステム部１６３ａに読み込み命令を発行し、要求されたデータを取得する。最後にステップＳ７０９にて上記のメモリファイルシステムに対する処理におけるエラーの有無をＡＣＫ処理部１５２に対して送信し、処理を終了する。【００５１】
クライアント要求仮実行部（１０３ａ、１０３ｂ）の処理の特徴は、１０３ａ等のディスク装置への変更を伴う処理を、実際に１０３ａ等のディスク装置に要求する前にメモリファイルシステム情報に対して実行することである。クライアント要求仮実行部の存在により、ファイルシステムクライアントのユーザ要求転送部１５１からのリクエストによる１０３ａ等のディスク装置への書き込みの発生の有無を、実際に１０３ａ等のディスク装置に変更を加えることなく判定できる効果がある。【００５２】
また、メモリファイルシステム情報（１８１ａ、１８１ｂ）に対する処理の特徴は、後に説明する図８のステップＳ８０５を経ることなく（つまり、ファイルシステムクライアントのＡＣＫ処理部１５２からの命令を受け取ることなく）メモリファイルシステム情報（１８１ａ、１８１ｂ）に含まれる情報が削除されない点にある。これは、空き容量が枯渇し次第、自由に内容を破棄するディスクキャッシュ等の公知技術との相違点である。【００５３】
次に、図９を用いてＡＣＫ処理部１５２の処理について説明する。ＡＣＫ処理部１５２はクライアント要求仮実行部（１６１ａ、１６１ｂ）からの処理結果Ｍ２３０を受け取ることで起動する（ステップＳ９０１）。起動したＡＣＫ処理部１５２は、ステップＳ９０２にて、受け取った結果を図２、３等におけるメッセージＭ２４０にてユーザ要求転送部１５１に通知する。その後、ＡＣＫ処理部１５２はステップＳ９０３にて当該処理が１０３a等のディスク装置への書き込みを伴う命令かどうかを判定する。Ｓ９０３にて１０３a等のディスク装置への書き込みを伴う命令でないと判定した場合はＡＣＫ処理部１５２は終了する（Ｓ９０９）。【００５４】
一方、Ｓ９０３にて１０３ａ等のディスク装置への書き込みを伴う命令であると判定した場合には、ステップＳ９０４にて処理の成功がクライアント要求仮実行部（１６１ａ、１６１ｂ）から通知されているか否かを判定する。Ｓ９０４にて処理が成功していないと判定した場合は、ＡＣＫ処理部１５２は終了する（Ｓ９０９）。一方、Ｓ９０４にて処理が成功したと判定した場合は、ステップＳ９０５にて図３、４等におけるメッセージＭ２３０の受領を示すメッセージ（Ｍ２６０）をクライアント要求仮実行部（１６１ａ、１６１ｂ）に対して送信し、Ｓ９０６にてそのメッセージに対する応答（Ｍ２９０）を受け取ったか否かを判定する。【００５５】
Ｓ９０６の判定にて、そのメッセージに対する応答を受け取った場合は、ステップＳ９０７にて当該リクエストをリクエスト履歴情報から削除して、ステップＳ９０９にて処理を終了する。Ｓ９０６の判定にて、そのメッセージに対する応答を受け取らなかった場合は、ステップＳ９０８にて再送処理部１５３を起動し、ステップＳ９０９にて処理を終了する。リクエスト履歴情報を削除するステップＳ９０７により、後述する図１０の再送処理部１５３が不必要な再実行を行うことを抑止することができる。【００５６】
次に、図８を用いて、図９のＡＣＫ処理部１５２の動作のＳ９０５にてクライアント要求仮実行部（１６１ａ、１６１ｂ）に対して送信されたメッセージＭ２６０について、その受信時のクライアント要求仮実行部（１６１ａ、１６１ｂ）の動作について説明する。ステップＳ８０１にて図３，図４等におけるメッセージＭ２６０を受け取ったクライアント要求仮実行部（１６１ａ、１６１ｂ）は、ステップＳ８０２にて、図２で説明したリクエストＲ２２５にて書き込みを行ったデータをメモリファイルシステム情報１８１aから読み込む。続いてステップＳ８０３にてクライアント要求仮実行部（１６１ａ、１６１ｂ）はそのデータを書き込むようディスクファイルシステム部１６３ａに要求し（Ｍ２７０）、ステップＳ８０４にて書込完了（Ｍ２８０）を示す応答を待つ。応答の受領後、ステップＳ８０５にてメモリファイルシステム情報に対して、当該データを削除してもよいことを示す開放可能フラグを立て、最後にステップＳ８０６にてファイルシステムクライアントのＡＣＫ処理部１５２に対して処理の完了を通知する（Ｍ２９０）。【００５７】
次に、図１０を用いて再送処理部１５３の動作について説明する。再送処理部１５３は、上述のとおり図９のステップＳ９０８にて開始を指示する命令をＡＣＫ処理部１５２から受けて動作を開始する。再送処理部１５３は、ステップＳ１００２にて、リクエスト履歴情報１７１が空か否かを判定し、空の場合はステップＳ１００３にて処理を終了する。空でない場合はステップＳ１００４にてリクエスト履歴情報から最も古いリクエストである履歴の先頭のリクエストを取り出し、履歴情報からは削除する。ステップＳ１００５にて該リクエストをフェイルオーバー処理部１６２ｂに送信する（Ｍ３１０）。次に、ステップＳ１００６にて、フェイルオーバー処理部１６２ｂからの応答メッセージＭ３４０の受領を待つ。最後にステップＳ１００２の判定に戻る。【００５８】
次に、図１３を用いてフェイルオーバー処理部１６２ｂの動作について説明する。【００５９】
フェイルオーバー処理部１６２ｂはステップＳ１３０１にて、図３，４にて説明した再送処理部１５３からのメッセージＭ３１０を受信し、ステップＳ１３０２にてＭ３１０に書かれている処理要求をディスクファイルシステム部１６３ｂに要求する（Ｍ３２０）。その後、ステップＳ１３０３にてディスクファイルシステム部１６３ｂの書き込み完了通知（Ｍ３３０）を待ち、当該完了通知を受信したらディスクファイルシステム部１６３ｂが行ったファイルの書き込み処理の結果をステップＳ１３０４にて再送処理部１５３に通知する（Ｍ３４０）。【００６０】
フェイルオーバー処理部１６２ｂは再送処理部１５３とディスクファイルシステム部１６３ｂの仲介を行うが、フェイルオーバー処理部１６２ｂが存在することにより、ディスクファイルシステム部１６３ｂが再送処理部１５３の処理に対応するための機能を持つ必要がなくなり、既存のオペレーティングシステムに含まれるファイルシステムが変更なく利用できるようになる。【００６１】
以上が本発明の実施例１である。本実施例では、図２で説明したように、クライアントからの要求メッセージであるＭ２２０について、クライアント計算機がメッセージＭ２３０を受け取っていない場合には決して１０３ａ等のディスク装置に対して実行されないことを保障している。そのため、代替サーバの起動後、図４のＭ３１０による再処理の際も二重実行の懸念はない。【００６２】
一方、図３のシーケンスでは１０３ａ等のディスク装置へのリクエストＲ２７５、およびＲ３２５の合計２回発行されているため、２回目は二重実行となり、例えばファイル作成のように二回実行できない処理は失敗となる。しかし、図３のシーケンスではメッセージＭ２３０により、処理自体の成功はクライアント計算機によって確認されているため、再実行の失敗はユーザープログラムに通知すべき失敗ではなく、再実行が原因で発生したものであると判断できる。そのため、このエラーを無視することにより、ユーザープログラムにＭ２５０にて通知したエラーの有無と１０３ａ等のディスク装置上の状態が矛盾しないことが保障できる。【００６３】
以上のように、ユーザープログラム１４０から要求された処理の成功、失敗が未知であるリクエストは決して１０３ａ等のディスク装置に書き込まないよう制御することで、１０３ａ等のディスク装置に処理番号を書き込むなどの特殊な処理を加えることなく、フェイルオーバー機能を実現できる。
【実施例２】
【００６４】
以下にて、実施例２について説明する。実施例２は、クライアント計算機やサーバ計算機の基本的な構成・動作については実施例１と同様であるが、これらの構成・動作を並列ファイルシステムにおいて実現する際の実施の形態である。よって、本実施例においては、実施例１と異なる構成・動作についてのみ説明を行うこととする。【００６５】
図１４の本発明を並列ファイルシステムに適用した場合のシステム構成の一例を示す図である。並列ファイルシステムは複数のサーバ計算機を用いて単一のファイルシステムを提供する。この際、メタデータサーバと呼ばれる一台のサーバ計算機がディレクトリ構造とファイルの属性を管理し、その他のサーバにファイル内のデータを格納する手法、あるいはすべてのサーバ計算機が等しく役割を分担して、各サーバ計算機がディレクトリやファイルの一部分を保持する手法がある。【００６６】
図１４に示すように本発明の第２の実施形態では、並列ファイルサーバを構成するそれぞれのサーバ計算機に正サーバと副サーバを準備するものであり、例として計算機１０２ａと１０２ｂがメタデータを管理する正副のサーバ計算機、１４０１ａおよび１４０２ａがデータを管理する正サーバ、１４０２ｂおよび１４０２ｂがデータを管理する副サーバである。図１と同じ番号を付した部分は第一の実施例と同一の機能を持つため、ここでは説明しない。クライアント計算機１０１’が備える、並列ファイルシステムクライアント部１４５０は並列ファイルシステムとして動作するための制御を行う。ファイルシステムクライアント１４５１、１４５２は、ファイルシステムクライアント１４１と同様にユーザ要求転送部１５１、ＡＣＫ処理部１５２、再送処理部１５３、リクエスト履歴情報１７１を備える。ここで、ファイルシステムクライアント１４１は、サーバ計算機１０２ａおよび１０２ｂをサーバとする。ファイルシステムクライアント１４５１は、サーバ計算機１４０１ａと１４０１ｂをサーバとする。ファイルシステムクライアント１４５２は、サーバ計算機１４０２ａと１４０２ｂをサーバとする。【００６７】
図１５に並列ファイルシステムクライアント部１４５０の動作を示す。まず、並列ファイルシステムクライアント部はステップＳ１５０１にてユーザーアプリケーションからファイル操作の要求を受け取る。次に並列ファイルシステムクライアント部はステップＳ１５０２にてその要求を属性に対する操作とファイルデータに対する操作に分解する。その後、並列ファイルシステムクライアント部はステップＳ１５０３にてファイル属性に関する操作をファイルシステムクライアント１４１に要求する。【００６８】
次に、判定Ｓ１５０４において処理内容がファイルの内容へのアクセスを伴う処理であるか否かを判定する。判定Ｓ１５０４において処理内容がファイルの内容へのアクセスを伴う処理であると判定した場合、ステップＳ１５０５にて並列ファイルシステムクライアント部はファイルシステムクライアント１４５１および１４５２にファイルアクセスを要求する。ファイルシステムクライアント１３１、１４５１、１４５２の動作は先の実施例１と同じ機能を持つため、ここでは説明は省略する。Ｓ１５０４の判定にてファイルの内容へのアクセスを伴わない場合、あるいはステップＳ１５０６の終了後、並列ファイルシステムクライアント部はステップＳ１５０７にて終了する。【００６９】
以上のように、実施例２では、並列ファイルシステムに本発明を適用することにより、並列ファイルシステムを構成するサーバ１０２ａ、１４０１ａ、１４０２ａのいずれかに障害が発生した際も、それぞれの代替サーバ１０２ｂ、１４０１ｂ、１４０２ｂで処理を引き継ぐことができる。これにより例えば図１５のＳ１５０３までは成功し、Ｓ１５０５に失敗するような、不整合状態を招くエラーを避けることができるため、並列ファイルシステム全体の健全性を向上させることが可能となる。【００７０】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。【００７１】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００７２】
１０１              クライアント計算機
１０２ａ            正サーバ計算機
１０２ｂ            副サーバ計算機
１０３ａ〜１０３ｃ  ディスク装置
１４１              ファイルシステムクライアント
１４２ａ            ファイルシステムサーバ
１５１              ユーザ要求転送部
１５２              ＡＣＫ処理部
１５３              再送処理部
１６１ａ            クライアント要求仮実行部
１６２ａ            フェイルオーバー処理部
１６３ａ            ディスクファイルシステム部
１７１              リクエスト履歴情報
１８１ａ            メモリファイルシステム情報
【図１】
0005577471.tif 000002
【図２】
0005577471.tif 000003
【図３】
0005577471.tif 000004
【図４】
0005577471.tif 000005
【図５】
0005577471.tif 000006
【図６】
0005577471.tif 000007
【図７】
0005577471.tif 000008
【図８】
0005577471.tif 000009
【図９】
0005577471.tif 000010
【図１０】
0005577471.tif 000011
【図１１】
0005577471.tif 000012
【図１２】
0005577471.tif 000013
【図１３】
0005577471.tif 000014
【図１４】
0005577471.tif 000015
【図１５】
0005577471.tif 000016
【図１６】
0005577471.tif 000017