(57)【要約】【課題】論理デバイスの切替え処理が頻発することに起因するストレージ装置のデータの読書き性能の低下を防止し得る情報処理装置及び情報処理方法並びにストレージシステムを提案する。【解決手段】記憶デバイスが提供する記憶領域上にキャッシュ領域を作成すると共に、上位装置に提供する仮想的な論理ユニットと、上位装置から与えられたデータを記憶する論理デバイスとのマッピングを外部からの要求に応じて動的に切り替えるストレージ装置における論理ユニット及び論理デバイス間のマッピングの切り替えを必要に応じてストレージ装置に要求し、必要なファイルのデータをストレージ装置内の対応する論理デバイスから読み出してキャッシュ領域に格納し、上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、キャッシュ領域に格納された当該ファイルのデータに対して行うようにした。【選択図】図３
2008077290.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するための記憶領域を提供する記憶デバイスと、
当該記憶領域上にキャッシュ領域を作成すると共に、上位装置に提供する仮想的な論理ユニットと、前記上位装置から与えられたデータを記憶する論理デバイスとのマッピングを外部からの要求に応じて動的に切り替えるストレージ装置における前記論理ユニット及び前記論理デバイス間のマッピングの切り替えを必要に応じて前記ストレージ装置に要求し、必要なファイルのデータを前記ストレージ装置内の対応する前記論理デバイスから読み出して前記キャッシュ領域に格納し、前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、前記キャッシュ領域に格納された当該ファイルのデータに対して行う処理部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記処理部は、
前記ファイルのデータを、当該ファイルのオープン時に前記ストレージ装置内の対応する前記論理デバイスから読み出して前記記憶デバイス内の前記キャッシュ領域に格納し、
当該キャッシュ領域に格納された前記ファイルのデータを、当該ファイルのクローズ時に前記ストレージ装置内の対応する前記論理デバイスに書き込ませる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理部は、
前記記憶デバイス内の前記キャッシュ領域にデータが格納された前記ファイルに対する前記ファイル処理要求が与えられたときには、当該ファイル処理要求に応じたデータ入出力処理を前記キャッシュ領域に格納された当該データに対して行い、前記記憶デバイスにデータが格納されていない前記ファイルに対する前記ファイル処理要求が与えられたときには、当該ファイルのデータを前記ストレージ装置内の対応する論理デバイスから読み出して前記記憶デバイス内の前記キャッシュ領域に格納する
を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記処理部は、
ファイルシステムをマウント処理する際に、当該ファイルシステムに属する各前記ファイルのデータを格納するための当該ファイルシステムに専用の前記キャッシュ領域を前記記憶デバイス内に作成し、当該ファイルシステムをアンマウント処理する際に当該キャッシュ領域を削除する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記処理部は、
前記記憶デバイス内の前記キャッシュ領域に格納された各前記ファイルのデータを、所定のタイミングで前記ストレージ装置内の対応する前記論理デバイスにそれぞれ書き込ませる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記処理部は、
前記記憶デバイスの残容量に応じて、当該記憶デバイスに格納されているいずれかの前記ファイルのデータを前記ストレージ装置内の対応する前記論理デバイスに書き込ませると共に、前記記憶デバイスにおける当該ファイルのデータが格納されていた前記キャッシュ領域を解放した後、必要なファイルのデータを前記ストレージ装置内の対応する論理デバイスから読み出して、当該キャッシュ領域に書き込む
ことを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記処理部は、
前記ファイルのデータを、前記ストレージ装置における前記記憶領域の管理単位であるブロック単位で前記論理デバイスから読み出して前記記憶デバイス内の前記キャッシュ領域に格納し、前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、当該ブロック単位で行う
ことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
記憶デバイスが提供する記憶領域上にキャッシュ領域を作成すると共に、上位装置に提供する仮想的な論理ユニットと、前記上位装置から与えられたデータを記憶する論理デバイスとのマッピングを外部からの要求に応じて動的に切り替えるストレージ装置における前記論理ユニット及び前記論理デバイス間のマッピングの切り替えを必要に応じて前記ストレージ装置に要求し、必要なファイルのデータを前記ストレージ装置内の対応する前記論理デバイスから読み出して前記キャッシュ領域に格納する第１のステップと、
前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、前記キャッシュ領域に格納された当該ファイルのデータに対して行う第２のステップと
を備えることを特徴とする情報処理方法。
【請求項９】
前記第１のステップでは、前記ファイルのデータを、当該ファイルのオープン時に前記ストレージ装置内の対応する前記論理デバイスから読み出して前記記憶デバイス内の前記キャッシュ領域に格納し、
当該キャッシュ領域に格納された前記ファイルのデータを、当該ファイルのクローズ時に前記ストレージ装置内の対応する前記論理デバイスに書き込ませる第３のステップを備える
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
前記第１のステップでは、
前記記憶デバイス内の前記キャッシュ領域にデータが格納された前記ファイルに対する前記ファイル処理要求が与えられたときには、当該ファイル処理要求に応じたデータ入出力処理を前記キャッシュ領域に格納された当該データに対して行い、前記記憶デバイスにデータが格納されていない前記ファイルに対する前記ファイル処理要求が与えられたときには、当該ファイルのデータを前記ストレージ装置内の対応する論理デバイスから読み出して前記記憶デバイス内の前記キャッシュ領域に格納する
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１１】
前記第１のステップでは、ファイルシステムをマウント処理する際に、当該ファイルシステムに属する各前記ファイルのデータを格納するための当該ファイルシステムに専用の前記キャッシュ領域を前記記憶デバイス内に作成し、
当該ファイルシステムをアンマウント処理する際に当該キャッシュ領域を削除する第３のステップを備える
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１２】
前記記憶デバイス内の前記キャッシュ領域に格納された各前記ファイルのデータを、所定のタイミングで前記ストレージ装置内の対応する前記論理デバイスにそれぞれ書き込ませる
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１３】
前記第１のステップでは、
前記記憶デバイスの残容量に応じて、当該記憶デバイスに格納されているいずれかの前記ファイルのデータを前記ストレージ装置内の対応する前記論理デバイスに書き込ませると共に、前記記憶デバイスにおける当該ファイルのデータが格納されていた前記キャッシュ領域を解放した後、必要なファイルのデータを前記ストレージ装置内の対応する論理デバイスから読み出して、当該キャッシュ領域に書き込む
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１４】
前記第１のステップでは、
前記ファイルのデータを、前記ストレージ装置における前記記憶領域の管理単位であるブロック単位で前記論理デバイスから読み出して前記記憶デバイス内の前記キャッシュ領域に格納し、
前記第２のステップでは、
前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、当該ブロック単位で行う
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１５】
上位装置に提供する仮想的な論理ユニットと、前記上位装置から与えられたデータを記憶する論理デバイスとのマッピングを外部からの要求に応じて動的に切り替えるストレージ装置と、
所定の記憶デバイスが提供する記憶領域上にキャッシュ領域を作成すると共に、前記論理ユニット及び前記論理デバイス間のマッピングの切り替えを必要に応じて前記ストレージ装置に要求し、必要なファイルのデータを前記ストレージ装置内の対応する前記論理デバイスから読み出して前記キャッシュ領域に格納し、前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、前記キャッシュ領域に格納された当該ファイルのデータに対して行うサーバ装置と
を備えることを特徴とするストレージシステム。
【請求項１６】
前記サーバ装置は、
前記ファイルのデータを、当該ファイルのオープン時に前記ストレージ装置内の対応する前記論理デバイスから読み出して前記記憶デバイス内の前記キャッシュ領域に格納し、
当該キャッシュ領域に格納された前記ファイルのデータを、当該ファイルのクローズ時に前記ストレージ装置内の対応する前記論理デバイスに書き込ませる
ことを特徴とする請求項１５に記載のストレージシステム。
【請求項１７】
前記サーバ装置は、
ファイルシステムをマウント処理する際に、当該ファイルシステムに属する各前記ファイルのデータを格納するための当該ファイルシステムに専用の前記キャッシュ領域を前記記憶デバイス内に作成し、当該ファイルシステムをアンマウント処理する際に当該キャッシュ領域を削除する
ことを特徴とする請求項１５に記載のストレージシステム。
【請求項１８】
前記サーバ装置は、
前記記憶デバイス内の前記キャッシュ領域に格納された各前記ファイルのデータを、所定のタイミングで前記ストレージ装置内の対応する前記論理デバイスにそれぞれ書き込ませる
ことを特徴とする請求項１５に記載のストレージシステム。
【請求項１９】
前記処理部は、
前記記憶デバイスの残容量に応じて、当該記憶デバイスに格納されているいずれかの前記ファイルのデータを前記ストレージ装置内の対応する前記論理デバイスに書き込ませると共に、前記記憶デバイスにおける当該ファイルのデータが格納されていた前記キャッシュ領域を解放した後、必要なファイルのデータを前記ストレージ装置内の対応する論理デバイスから読み出して、当該キャッシュ領域に書き込む
ことを特徴とする請求項１５に記載のストレージシステム。
【請求項２０】
前記処理部は、
前記ファイルのデータを、前記ストレージ装置における前記記憶領域の管理単位であるブロック単位で前記論理デバイスから読み出して前記記憶デバイス内の前記キャッシュ領域に格納し、前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、当該ブロック単位で行う
ことを特徴とする請求項１５に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法並びにストレージシステムに関し、特に、ジュークボックス機能が搭載されたストレージ装置を備えるストレージシステムに適用して好適なものである。
【背景技術】
【０００２】
従来、ストレージ装置として、上位装置に仮想的な記憶領域である論理ユニット（以下、これを仮想論理ユニットと呼ぶ）を提示し、上位装置から与えられる仮想論理ユニットに対するデータ入出力要求に応じて、対応するデータの読み書きを当該仮想論理ユニットに割り当てられた論理デバイス（ＬＤＥＶ：Logical Device）に対して行う機能が搭載されたものがある。
【０００３】
また近年では、ストレージ装置として、かかる仮想論理ユニットに対する論理デバイスの割り当てを、上位装置に搭載されたアプリケーションプログラムからの要求に応じて動的に変更するＬＤＥＶジュークボックス機能と呼ばれる機能が搭載されたものも実用化されている（特許文献１及び特許文献２を参照）。このようなＬＤＥＶジュークボックス機能によれば、ＯＳ（Operating System）が管理可能な論理ユニット数を超える論理デバイス数を取り扱うことができる。
【特許文献１】特開２００５−２０９１４９号公報
【特許文献２】特開２００６−１０７２５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、かかるＬＤＥＶジュークボックス機能によると、上述のような論理デバイスの切替え処理時に論理デバイスに対するデータ入出力処理を行うことができない。このため、ある仮想論理ユニットに割り当てる論理デバイスとして複数のアプリケーションプログラムがそれぞれ異なる論理デバイスを要求した場合、かかる論理デバイスの切替え処理が頻発し、そのオーバヘッドによって、ストレージ装置のデータの読書き性能が一時的に低下する問題があった。
【０００５】
また、かかるＬＤＥＶジュークボックス機能によると、上位装置のアプリケーションプログラムが仮想論理ユニットにアクセスしている最中は当該仮想論理ユニットに割り当てられた論理デバイスが切り替わらないように、アプリケーションプログラム間で排他処理を行う必要があり、その分、上位装置の負荷が大きくなる問題があった。
【０００６】
本発明は以上の点を考慮してなされたもので、論理デバイスの切替え処理が頻発することに起因するストレージ装置のデータの読書き性能の低下を防止し得る情報処理装置及び情報処理方法並びにストレージシステムを提案しようとするものである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するため本発明においては、情報処理装置において、データを記憶するための記憶領域を提供する記憶デバイスと、当該記憶領域上にキャッシュ領域を作成すると共に、上位装置に提供する仮想的な論理ユニットと、前記上位装置から与えられたデータを記憶する論理デバイスとのマッピングを外部からの要求に応じて動的に切り替えるストレージ装置における前記論理ユニット及び前記論理デバイス間のマッピングの切り替えを必要に応じて前記ストレージ装置に要求し、必要なファイルのデータを前記ストレージ装置内の対応する前記論理デバイスから読み出して前記キャッシュ領域に格納し、前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、前記キャッシュ領域に格納された当該ファイルのデータに対して行う処理部とを設けるようにした。
【０００８】
この結果、この情報処理装置によれば、ファイルのデータが記憶デバイス上に存在する限りは、そのファイルへのアクセスが記憶デバイス上のデータに対して行われるため、ストレージ装置において論理ユニットと論理デバイスとのマッピングの切替え処理が頻発することを有効に防止することができる。
【０００９】
また本発明においては、情報処理方法において、記憶デバイスが提供する記憶領域上にキャッシュ領域を作成すると共に、上位装置に提供する仮想的な論理ユニットと、前記上位装置から与えられたデータを記憶する論理デバイスとのマッピングを外部からの要求に応じて動的に切り替えるストレージ装置における前記論理ユニット及び前記論理デバイス間のマッピングの切り替えを必要に応じて前記ストレージ装置に要求し、必要なファイルのデータを前記ストレージ装置内の対応する前記論理デバイスから読み出して前記キャッシュ領域に格納する第１のステップと、前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、前記キャッシュ領域に格納された当該ファイルのデータに対して行う第２のステップとを設けるようにした。
【００１０】
この結果、この情報処理方法によれば、ファイルのデータが記憶デバイス上に存在する限りは、そのファイルへのアクセスが記憶デバイス上のデータに対して行われるため、ストレージ装置において論理ユニットと論理デバイスとのマッピングの切替え処理が頻発することを有効に防止することができる。
【００１１】
さらに本発明においては、ストレージシステムにおいて、上位装置に提供する仮想的な論理ユニットと、前記上位装置から与えられたデータを記憶する論理デバイスとのマッピングを外部からの要求に応じて動的に切り替えるストレージ装置と、所定の記憶デバイスが提供する記憶領域上にキャッシュ領域を作成すると共に、前記論理ユニット及び前記論理デバイス間のマッピングの切り替えを必要に応じて前記ストレージ装置に要求し、必要なファイルのデータを前記ストレージ装置内の対応する前記論理デバイスから読み出して前記キャッシュ領域に格納し、前記上位装置から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、前記キャッシュ領域に格納された当該ファイルのデータに対して行うサーバ装置とを設けるようにした。
【００１２】
この結果、このストレージシステムでは、ファイルのデータがサーバ装置の記憶デバイス上に存在する限りは、そのファイルへのアクセスが記憶デバイス上のデータに対して行われるため、ストレージ装置において論理ユニットと論理デバイスとのマッピングの切替え処理が頻発することを有効に防止することができる。
【発明の効果】
【００１３】
本発明によれば、論理デバイスの切替え処理が頻発することに起因するストレージ装置のデータの読書き性能の低下を防止することができる。
【発明を実施するための最良の形態】
【００１４】
以下図面について、本発明の一実施の形態を詳述する。
【００１５】
（１）第１の実施の形態
（１−１）本実施の形態による計算機システムの構成
図１において、１は全体として本実施の形態による計算機システムを示す。この計算機システム１は、上位装置としてのファイルアクセスクライアント２と、ファイル共有サーバ３及びストレージ装置４からなるストレージシステム６と、管理装置５とから構成されている。そしてファイルアクセスクライアント２は、ファイル共有サーバ３を介してストレージ装置４と接続されると共に、ファイル共有サーバ３及びストレージ装置４が管理装置５と接続されている。
【００１６】
ファイルアクセスクライアント２は、ユーザが利用し、ファイル共有サーバ３に対してファイルアクセスを要求する端末であり、パーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。このファイルアクセスクライアント３は、ＣＰＵ（Central Processing Unit）及びメモリ等の情報処理資源のほか、キーボード、スイッチ、ポインティングデバイス及び又はマイクロフォン等の情報入力装置（図示せず）や、モニタディスプレイやスピーカ等の情報出力装置（図示せず）などの情報出力装置を備える。
【００１７】
ファイル共有サーバ３は、ファイルアクセスクライアント２からファイルアクセス要求を受けてサービスを提供するサーバであり、ＮＦＳ（Network File System）サーバや、ＣＩＦＳ（Common Internet File System）サーバなどから構成される。ファイル共有サーバ３は、ネットワークインタフェース部１０、ＣＰＵ１１、メモリ１２及びストレージインタフェース部１３を備えており、これらがバス１４を介して相互に通信可能な状態に接続されている。
【００１８】
ネットワークインタフェース部１０は、例えばＳＣＳＩ（Small Computer System Interface）カードやＬＡＮ（Local Area Network）インタフェースカード等のネットワークインタフェースカードから構成され、ファイルアクセスクライアント２をストレージ装置４に接続するためのデータ入出力アダプタとして用いられる。
【００１９】
ＣＰＵ１１は、ファイル共有サーバ３全体の動作制御を司るプロセッサであり、メモリ１２に格納された各種プログラムに基づいて、各種の制御処理を実行する。
【００２０】
メモリ１２は、主として各種アプリケーションプログラム２０や、各種制御プログラム及び各種管理テーブルを保持するために使用される。後述のファイルシステムプログラム２１及びキャッシュ制御プログラム２２や、ＬＤＥＶマッピングテーブル２３、ＬＤＥＶキャッシュ管理テーブル２４、論理ユニット割当て管理テーブル２５、ファイルディスクリプタ管理テーブル２６及びキャッシュ領域管理テーブル２７などもこのメモリ１２に保持される。またメモリ１２には、後述のように、ストレージ装置４から読み出したファイルデータを保持するためのＬＤＥＶキャッシュ領域２８が作成される。
【００２１】
ストレージ装置４は、ファイル共有サーバ３に提供する仮想的な記憶領域である仮想論理ユニット４７（図２）と、ストレージ装置４が管理する論理的な記憶デバイスである論理デバイス４６（図２）とのマッピングを動的に切替えるＬＤＥＶジュークボックス機能が搭載された大容量のデータ記憶装置である。このストレージ装置４は、複数のディスクデバイス３０からなるディスクデバイス部３１と、ディスクデバイス部３１内の各ディスクデバイス３１を制御するコントローラ３２とから構成される。
【００２２】
各ディスクデバイス３０は、例えばＳＣＳＩ（Small Computer System Interface）ディスク等の高価なディスク、又はＳＡＴＡ（Serial AT Attachment）ディスクや光ディスク等の安価なディスクなどの安価なディスクから構成される。これらディスクデバイス３０は、コントローラ３２によりＲＡＩＤ（Redundant Array of Inexpensive Disks）方式で運用される。なお、ディスクデバイス３０に代えて、例えばフラッシュメモリなどの半導体メモリを適用するようにしても良い。
【００２３】
図２に示すように、１又は複数のディスクデバイス３０が提供する物理的な記憶領域上に、１又は複数の論理デバイス４６（ＬＤＥＶ１，ＬＤＥＶ２，……）が定義され、これら論理デバイス４６がストレージ装置４内に設定された仮想論理ユニット４７（ＬＵ１，ＬＵ２，……）にマッピング（割り当て）される。そしてファイルアクセスクライアント２から仮想論理ユニット４７を指定したデータ入出力要求が送信されてきた場合、その仮想論理ユニット４７にマッピングされた論理デバイス４６に対して対応するデータの読書き処理が行われる。
【００２４】
コントローラ３２は、ストレージインタフェース部４０、メモリ４１、ＣＰＵ４２及びネットワークインタフェース部４３がバス４４を介して接続されることにより構成される。
【００２５】
ストレージインタフェース部４０は、ファイル共有サーバ３との間で行われるデータ送受信時のインタフェースとして機能する。またメモリ４１は、上述のＬＤＥＶジュークボックス機能を提供する制御プログラム（以下、これをジュークボックス制御プログラムと呼ぶ）４５を含む各種制御プログラムを保持するために使用されるほか、ＣＰＵ４２のワークメモリとして用いられる。
【００２６】
ＣＰＵ４２は、ストレージ装置４全体の動作制御を司るプロセッサであり、メモリ４１に格納された各種制御プログラムに基づいてストレージインタフェース部４０、ネットワークインタフェース部４３及びディスクデバイス部３１を制御する。
【００２７】
ネットワークインタフェース部４３は、ファイル共有サーバ３のネットワークインタフェース部１０と同様に、例えばＳＣＳＩカードやＬＡＮインタフェースカード等のネットワークインタフェースカードから構成され、ストレージ装置５を管理装置５に接続するためのアダプタとして機能する。
【００２８】
管理装置５は、システム管理者がファイル共有サーバ３及びストレージ装置４を管理するために利用する端末であり、パーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。
【００２９】
この管理装置５は、バス５３を介して相互に接続されたネットワークインタフェース部５０、ＣＰＵ５１及びメモリ５２を備えて構成されており、ネットワークインタフェース部５０を通じてファイル共有サーバ３及びストレージ装置４と接続されている。メモリ５２には、管理プログラム５４等の各種制御プログラムが格納されており、ＣＰＵ５１が、これら制御プログラムを実行することにより、管理装置５全体として各種の処理を実行する。
【００３０】
（１−２）本実施の形態によるＬＤＥＶ切替え制御機能
次に、かかる計算機システム１に採用された本実施の形態によるＬＤＥＶ切替え制御機能について説明する。
【００３１】
この計算機システム１では、図３に示すように、ファイル共有サーバ３上で動作するアプリケーションプログラム２０がストレージ装置４に格納されたファイルにアクセスする場合に、そのファイルのデータ（ファイルデータ）ＦＤをストレージ装置４からファイル共有サーバ３内のメモリ１２内に作成した所定容量の記憶領域（以下、これをＬＤＥＶキャッシュ領域と呼ぶ）２８に読み出し、この後そのファイルに対するアクセスをこのＬＤＥＶキャッシュ領域２８に読み出したファイルデータＦＤに対して行う点を特徴の１つとしている。言い換えると、ファイル共有サーバ３は、アプリケーションプログラム２０ごと又はファイルごとに、ＬＤＥＶキャッシュ領域２８の一部の領域が割り当てられるファイル共有サーバである。
【００３２】
これによりこの計算機システム１では、かかるＬＤＥＶキャッシュ領域２８内にファイルデータが存在する間は、アプリケーションプログラム２０（図２）のファイルアクセスがＬＤＥＶキャッシュ領域２８に対して行われるため、ストレージ装置４内において、ＬＤＥＶジュークボックス機能による仮想論理ユニット４７にマッピングする論理デバイス４６の切り替えが行われるのを回避することができる。この結果、かかるＬＤＥＶジュークボックス機能による仮想論理ユニット４７にマッピングする論理デバイス４６の切り替え回数を低減することができ、当該論理デバイス４６の切替え処理に関するオーバヘッドを低減することができる。
【００３３】
またこの計算機システム１では、ファイルシステムプログラム２１（図１）が仮想論理ユニット４７に対する論理デバイス４６のマッピングを管理する。これによりこの計算機システム１では、ファイル共有サーバ３のアプリケーションプログラム２０が仮想論理ユニット４７にマッピングする論理デバイス４６の切り替えを意識することなく、通常のファイルアクセスと同じアクセス方法で所望するファイルにアクセスすることができる。
【００３４】
具体的には、この計算機システム１では、あるアプリケーションプログラム２０が仮想論理ユニット４７にマッピングされている論理デバイス４６にアクセス中に、他のアプリケーションプログラム２０がそのマッピングを変更しないように、アプリケーションプログラム２０自身で排他処理を行う必要がない。つまり、複数のアプリケーションプログラム２０が異なる論理デバイス４６に同一の仮想論理ユニット４７を用いてアクセスする場合、アプリケーションプログラム２０に特別な変更を加えずに、ＬＤＥＶジュースボックス機能を利用することができる。
【００３５】
このようなＬＤＥＶ切替え制御機能を提供するための手段として、ファイル共有サーバ３のメモリ１２には、図１に示すように、ＬＤＥＶマッピングテーブル２３、ＬＤＥＶキャッシュ管理テーブル２４、ＬＵ割当て管理テーブル２５、ファイルディスクリプタ管理テーブル２６及びキャッシュ領域管理テーブル２７が格納されている。
【００３６】
ＬＤＥＶマッピングテーブル２３は、ストレージ装置４にマウントされたファイルシステムＦＳ（図２）ごとのマウントパスと、論理デバイス４６及び仮想論理ユニット４７との間のマッピング関係を管理するためのテーブルであり、図４に示すように、「マウントパス」欄２３Ａ、「ＬＤＥＶ番号」欄２３Ｂ、「割当てＬＵ番号」欄２３Ｃ及び「ＬＤＥＶキャッシュ管理テーブルポインタ」欄２３Ｄから構成される。
【００３７】
このうち「マウントパス」欄２３Ａには、対応するファイルシステムＦＳへのパスが格納される。すなわち、本実施の形態の場合、論理デバイス４６ごとに１つのファイルシステムＦＳがそれぞれ作成され、これら作成されたファイルシステムＦＳが、ファイル共有サーバ３が管理するファイルパスの一部に接木のようにマウントされる。そして、ＬＤＥＶマッピングテーブル２３の「マウントパス」欄２３Ａには、このようにマウントされた対応するファイルシステムＦＳ（論理デバイス４６）へのパスが格納される。
【００３８】
また「ＬＤＥＶ番号」欄２３Ｂには、そのファイルシステムＦＳのデータが格納された論理デバイス４６の識別番号（以下、これをＬＤＥＶ番号と呼ぶ）が格納され、「割当てＬＵ番号」欄２３Ｃには、そのときその論理デバイス４６がマッピングされている仮想論理ユニット４７の識別番号（以下、これをＬＵ番号と呼ぶ）が格納される。ただし、そのときその論理デバイス４６が仮想論理ユニット４７にマッピングされていない場合には、これを表す所定の情報（「−」）が格納される。さらに「ＬＤＥＶキャッシュ管理テーブルポインタ」欄２３Ｄには、そのファイルシステムＦＳに対応する後述のＬＤＥＶキャッシュ管理テーブル２４へのポインタが格納される。
【００３９】
従って、例えば図４の場合、あるファイルシステムＦＳへのマウントパスは「/mnt/fs1」  であり、そのファイルシステムＦＳのデータはＬＤＥＶ番号が「１」の論理デバイス４６に格納され、その論理デバイス４６はＬＵ番号が「16」の仮想論理ユニット４７にマッピングされ、そのファイルシステムＦＳについて作成されたＬＤＥＶキャッシュ管理テーブル２４へのポインタは「１」であることが示されている。
【００４０】
一方、ＬＤＥＶキャッシュ管理テーブル２４は、あるファイルシステムＦＳに属する各ファイルがＬＤＥＶキャッシュ領域２８に読み出されているか否か等を管理するためのテーブルである。本実施の形態においては、上述のように１つの論理デバイス４６内に１つのファイルシステムＦＳのデータが格納される（１つのファイルシステムＦＳが１つの論理デバイス４６に対応する）ため、このＬＤＥＶキャッシュ管理テーブル２４はファイルシステムＦＳ（論理デバイス４６）ごとに作成されることになる。
【００４１】
このＬＤＥＶキャッシュ管理テーブル２４は、図５に示すように、「ファイルパス」欄２４Ａ、「オンメモリフラグ」欄２４Ｂ、「Syncフラグ」欄２４Ｃ、「参照カウンタ」欄２４Ｄ及び「キャッシュ領域アドレス欄」２４Ｅから構成される。
【００４２】
そして「ファイルパス」欄２４Ａには、対応するファイルへのローカルパス（ファイルパス）が格納される。従って、ＬＤＥＶマッピングテーブル２３の「マウントパス」欄２３Ａに格納されたマウントパスと、対応するＬＤＥＶキャッシュ管理テーブル２４の「ファイルパス」欄２４Ａに格納されたファイルパスとを組み合わせることによって、ルートディレクトリからそのファイルへの全体パス（フルパス）を得ることができる。
【００４３】
例えば図４に示すＬＤＥＶマッピングテーブル２３の１行目のレコードに対応するファイルシステムＦＳと、図５に示すＬＤＥＶキャッシュ管理テーブル２４とが対応する場合において、ＬＤＥＶキャッシュ管理テーブル２４の２行目のレコードに対応するファイルへのフルパスは、かかるＬＤＥＶマッピングテーブル２３の対応する「マウントパス」欄（１行目の「マウントパス」欄）２３Ａに格納されたマウントパス「/mnt/fs1」と、かかるＬＤＥＶキャッシュ管理テーブル２４の対応する「ファイルパス」欄（２行目の「ファイルパス」欄）２４Ａに格納された「aa/cc/b.doc」とを組み合わせた「/mnt/fs1/aa/cc/b.doc」となる。
【００４４】
また「オンメモリフラグ」欄２４Ｂには、対応するファイルのデータがファイル共有サーバ３のメモリ１２に保持されているか否かを表すフラグが格納される。例えば図５の場合、現在、ＬＤＥＶキャッシュ管理テーブル２４の１行目のレコードに対応するファイルのデータはファイル共有サーバ３のメモリ１２内に存在せず、これに対してＬＤＥＶキャッシュ管理テーブル２４の２行目及び３行目のレコードにそれぞれ対応する各ファイルのデータはファイル共有サーバ３のメモリ１２に保持されていることが示されている。
【００４５】
さらに「Syncフラグ」欄２４Ｃには、ファイル共有サーバ３のメモリ１２に読み出されたそのファイルのデータと、ストレージ装置４内の対応する論理デバイス４６に格納されたデータとが同期しているか否か（すなわち一致しているか否か）を表す情報が格納される。具体的には、後述のように、かかるファイルのデータをファイル共有サーバ３のメモリ１２内に作成されたＬＤＥＶキャッシュ領域２８に読み出した段階で「Syncフラグ」欄２４Ｃに「１」が格納（同期がとれている）され、そのＬＤＥＶキャッシュ領域２８に読み出されたデータが更新されたときに当該「Syncフラグ」欄２４Ｃに「０」が格納（同期がとれていない）されることとなる。
【００４６】
さらに「参照カウンタ」欄２４Ｄには、そのファイルを参照しているアプリケーションプログラム２０の数が格納される。従って、図５の例では、１行目のレコードに対応するファイルはいずれのアプリケーションプログラム２０にも参照されておらず、これに対して２行目のレコードに対応するファイルは３つのアプリケーションプログラム２０に参照されていることが示されている。
【００４７】
さらに「キャッシュ領域アドレス」欄２４Ｅには、ファイル共有サーバ３のメモリ１２内に作成されたＬＤＥＶキャッシュ領域２８におけるそのファイルのデータが格納されている記憶領域（以下、これをキャッシュ領域と呼ぶ）２８Ａ（図３）のアドレスが格納される。本実施の形態の場合、かかるメモリ１２は所定大きさ（例えば４キロバイト）のブロック単位で管理されるため、「キャッシュ領域アドレス」欄２４には、かかるファイルのデータが格納されたブロックのアドレスが格納されることとなる。この場合において、例えばそのファイルのデータ量が大きく、当該ファイルのデータが複数のブロックに跨って格納される場合には、各ブロックのアドレスがそれぞれ「キャッシュ領域アドレス」欄２４Ｅに格納される。
【００４８】
図５の例では、１行目のレコードに対応するファイルのデータは、メモリ１２上にあるため、アドレスを「0x0000」に設定する。また図５では、２行目のレコードに対応するファイルのデータは、ファイル共有サーバ３のメモリ１２におけるアドレスが「0xFFB2」及び「0xFF40」の２つのブロックに跨って格納されていることが示されている。
【００４９】
他方、論理ユニット割当て管理テーブル２５は、ＬＤＥＶジュークボックス機能で使用する仮想論理ユニット４７を管理するためのテーブルであり、図６に示すように、「ＬＵ番号」欄２５Ａ及び「使用中フラグ」欄２５Ｂから構成される。
【００５０】
このうち「ＬＵ番号」欄２５Ａには、ＬＤＥＶジュークボックス機能で利用可能な仮想論理ユニット４７のＬＵ番号が格納され、「使用中フラグ」欄２５Ｂには、その仮想論理ユニット４７が現在使用中、つまりいずれかの論理デバイス４６がマッピングされているか否かを表すフラグが格納される。
【００５１】
従って、図６の例では、ＬＤＥＶジュークボックス機能で使用可能な仮想論理ユニット４７として、それぞれＬＵ番号が「15」、「16」、「19」又は「21」のものが存在し、これら仮想論理ユニット４７のうち、ＬＵ番号が「15」及び「21」の仮想論理ユニット４７には現在いずれの論理デバイス４６もマッピングされておらず、ＬＵ番号が「16」及び「19」の仮想論理ユニット４７には現在いずれかの論理デバイス４６がマッピングされていることが示されている。
【００５２】
ファイルディスクリプタ管理テーブル２６は、ファイル共有サーバ３に実装されたアプリケーションプログラム２０が起動されたときにファイルシステムプログラム２１（図１）によって作成されるテーブルであり、そのアプリケーションプログラム２０がファイルをオープンする際にファイルシステムプログラム２１が当該ファイルに対して割り当てる識別番号である、いわゆるファイルディスクリプタを管理するために用いられる。
【００５３】
このファイルディスクリプタ管理テーブル２６は、図７に示すように、「ファイルディスクリプタ」欄２６Ａ、「ＬＤＥＶキャッシュ管理テーブルレコードポインタ」欄２６Ｂ、「ＬＤＥＶマッピングテーブルレコードポインタ」欄２６Ｃ及び「使用フラグ」欄２６Ｄから構成される。
【００５４】
そして「ファイルディスクリプタ」欄２６Ａには、対応するファイルをオープンしたときに割り当てたファイルディスクリプタが格納され、「ＬＤＥＶキャッシュ管理テーブルレコードポインタ」欄２６Ｂには、そのファイルに対応するＬＤＥＶキャッシュ管理テーブル２４上のレコードへのポインタが格納される。
【００５５】
また「ＬＤＥＶマッピングテーブルレコードポインタ」欄２６Ｃには、そのファイルに対応するＬＤＥＶマッピングテーブル２３上のレコードへのポインタが格納され、「使用フラグ」欄２６Ｄには、対応するファイルが現在オープンしているか否かを表す情報が格納される。具体的には、対応するファイルがオープンしているときには、「使用フラグ」欄２６Ｄに「１」が格納され、当該ファイルがオープンしていないときには「使用フラグ」欄２６Ｄに「０」が格納される。
【００５６】
従って、図７の例では、ファイルディスクリプタとして「１」が付与されたファイルは、ＬＤＥＶキャッシュ管理テーブル２４上の「２」番目のレコード及びＬＤＥＶマッピングテーブル２３の「１」番目のレコードとそれぞれ対応し、現在、そのファイルはオープンしていることが示されている。
【００５７】
これに対してキャッシュ領域管理テーブル２７は、ファイル共有サーバ３のメモリ１２の使用状況をブロック領域単位で管理するためのテーブルであり、図８に示すように、「キャッシュ領域」欄２７Ａ及び「使用中フラグ」欄２７Ｂから構成されている。
【００５８】
そして「キャッシュ領域」欄２７Ａには、かかるメモリ１２内に作成されたＬＤＥＶキャッシュ領域２８（図１）内に存在する各ブロックのアドレスがそれぞれ格納され、「使用中フラグ」欄２７Ｂには、現在、対応するブロックが使用中であるか否か（当該ブロックにファイルデータが格納されているか否か）を表す情報が格納される。具体的には、対応するブロックが使用中であるときには、「使用フラグ」欄２７Ｂに「１」が格納され、当該ブロックが使用中でないときには、「使用フラグ」欄２７Ｂに「０」が格納される。
【００５９】
従って、図８の例では、アドレスが「0xF000」及び「0xF004」の各ブロックは現在使用中であり、アドレスが「0xFFFF」のブロックは現在使用されていないことが示されている。
【００６０】
なお、ファイルディスクリプタ管理テーブル２６、ＬＤＥＶマッピングテーブル２３及びＬＤＥＶキャッシュ管理テーブル２４の相関関係を図９に示す。
【００６１】
上述のようにファイルディスクリプタ管理テーブル２６は、ファイル共有サーバ３に実装されたアプリケーションプログラム２０ごとに存在し、ＬＤＥＶキャッシュ管理テーブル２４はストレージ装置４内に設けられた論理デバイス４６（ファイルシステムＦＳ）ごとに存在する。またＬＤＥＶマッピングテーブル２３は、１つのみ存在する。
【００６２】
そして、このファイルディスクリプタ管理テーブル２６上の１つのレコードと、ＬＤＥＶマッピングテーブル２３上の１つのレコードと、対応するＬＤＥＶキャッシュ管理テーブル２４上の１つのレコードとがファイルディスクリプタ管理テーブル２６上の対応するポインタによって関連付けられ、ファイルディスクリプタ管理テーブル２６上の１つのレコードと、対応するＬＤＥＶキャッシュ管理テーブル２４とがＬＤＥＶマッピングテーブル２４のポインタによって関連付けられている。
【００６３】
（１−３）ＬＤＥＶ切替え制御機能に関する具体的処理内容
（１−３−１）アプリケーションプログラムに基づくＣＰＵの具体的な処理内容
図１０は、本実施の形態によるＬＤＥＶ切替え制御機能に関して、ファイル共有サーバ３のＣＰＵ１１がアプリケーションプログラム２０に基づき実行する処理の具体的な内容を示すフローチャートである。
【００６４】
ＣＰＵ１１は、例えば対象とするファイルを特定したファイルアクセス要求がファイルアクセスクライアント２から与えられると、この図１０に示すアプリケーションプログラム処理を開始し（ＳＰ０）、まず、アプリケーションプログラム２０に基づいて、かかるファイルアクセス要求に応じたファイル処理要求（ファイルオープン処理、ファイル読込み処理、ファイル書込み処理又はファイルクローズ処理）をファイルシステムプログラム２１に発行する（ＳＰ１）。
【００６５】
そしてＣＰＵ１１は、この後、かかるファイル処理要求に対する処理結果がファイルシステムプログラム２１から与えられると、必要な処理（例えばかかる処理結果として取得したデータを上位装置に転送するなど）を実行した後（ＳＰ２）、このアプリケーションプログラム処理を終了する（ＳＰ３）。
【００６６】
（１−３−２）ファイルシステムプログラムに基づくＣＰＵの具体的な処理
（１−３−２−１）キャッシュ領域作成処理
一方、図１１は、ファイル共有サーバ３の起動時にファイルシステムプログラム２１に基づきＣＰＵ１１により実行されるキャッシュ領域作成処理の処理内容を示すフローチャートである。
【００６７】
ＣＰＵ１１は、ファイル共有サーバ３が起動されると、この図１１に示すキャッシュ領域作成処理を開始し（ＳＰ１０）、まず、ストレージ装置４から読み出したファイルのデータを記憶保持するためのＬＤＥＶキャッシュ領域２８をメモリ１２上に作成する（ＳＰ１１）。
【００６８】
次いでＣＰＵ１１は、作成したＬＤＥＶキャッシュ領域２８の使用状況をブロック単位で管理するためのキャッシュ領域管理テーブル２７（図８）を作成する（ＳＰ１２）。具体的に、ＣＰＵ１１は、ステップＳＰ１１において作成したＬＤＥＶキャッシュ領域２８に含まれる各ブロックのアドレスをキャッシュ領域管理テーブル２７の「キャッシュ領域」欄２７Ａ（図８）にそれぞれ格納し、これらに対応する各「使用中フラグ」欄２７Ｂ（図８）にそれぞれ「０」を格納したキャッシュ領域管理テーブル２７を作成することとなる。
【００６９】
そしてＣＰＵ１１は、この後、このキャッシュ領域作成処理を終了する（ＳＰ１３）。
【００７０】
（１−３−２−２）ファイルアクセス処理
他方、図１２は、アプリケーションプログラム２０から発行されたファイル処理要求に応じて、ファイルシステムプログラム２１に基づきＣＰＵ１１が実行するファイルアクセス処理の具体的な内容を示すフローチャートである。
【００７１】
ＣＰＵ１１は、かかるファイル処理要求を受信すると、この図１２に示すファイルアクセス処理を開始し、まず、受信したファイル処理要求が、ファイルオープン要求、ファイル読込み要求、ファイル書込み要求及びファイルクローズ要求のうちのいずれであるかを判断する。
【００７２】
そしてＣＰＵ１１は、そのファイル処理要求がファイルオープン要求であった場合には、指定されたファイルを使用できるようにオープンするファイルオープン処理を実行し（ＳＰ２３）、そのファイル処理要求がファイル読込み要求であった場合には、指定されたファイルのデータを読み込むファイル読込み処理を実行する（ＳＰ２４）。
【００７３】
またＣＰＵ１１は、そのファイル処理要求がファイル書込み要求であった場合には、書込み対象のファイルのデータをストレージ装置４内の指定された論理デバイス４６に書き込むファイル書込み処理を実行し（ＳＰ２５）、そのファイル処理要求がファイルクローズ要求であった場合には、指定されたファイルをクローズするファイルクローズ処理を実行する（ＳＰ２６）。
【００７４】
そしてＣＰＵ１１は、これらファイルオープン処理、ファイル読込み処理、ファイル書込み処理及びファイルクローズ処理のうち、受信したファイル処理要求に応じた処理を実行し終えると、アプリケーションプログラム２０に処理結果を返却し、この後このファイルアクセス処理を終了する（ＳＰ２８）。
【００７５】
（１−３−２−３）ファイルオープン処理
図１３は、かかるファイルアクセス処理のステップＳＰ２３におけるファイルオープン処理の具体的な処理内容を示すフローチャートである。
【００７６】
ＣＰＵ１１は、かかるファイルアクセス処理のステップＳＰ２３に進むとこのファイルオープン処理を開始し、まず、ＬＤＥＶマッピングテーブル２３の各レコードの「マウントパス」欄２３Ａを参照して、これらレコードのうち、ファイル処理要求と共に与えられたそのとき対象とするファイル（以下、これを対象ファイルと呼ぶ）までのフルパスのうちのマウントパス部分と同じマウントパスを有するレコードを検索する（ＳＰ３１）。
【００７７】
そしてＣＰＵ１１は、この後、かかる検索結果に基づいて、そのようなレコードがＬＤＥＶマッピングテーブル２３上に存在するか否かを判断する（ＳＰ３３）。
【００７８】
ここで、この判断において否定結果を得ることは、アプリケーションプログラム２０からのファイル処理要求が、存在しないファイル（例えばマウントされていないファイルシステムに属するファイル）を対象としたものであることを意味する。かくして、このときＣＰＵ１１は、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ３４）、この後このファイルオープン処理を終了する（ＳＰ３５）。
【００７９】
これに対して、ＣＰＵ１１は、ステップＳＰ３３の判断において肯定結果を得ると、ＬＤＥＶマッピングテーブル２３上のステップＳＰ３１の検索により検出したレコードの「ＬＤＥＶキャッシュ管理テーブルポインタ」欄２３Ｄ（図４）を参照して、対象ファイルが属するファイルシステムに対応するＬＤＥＶキャッシュ管理テーブル２４（図５）を特定する（ＳＰ３６）。
【００８０】
またＣＰＵ１１は、この後、ＬＤＥＶキャッシュ管理テーブル２４（図５）の各レコードの「マウントパス」欄２４Ａを参照して、これらレコードのうち、アプリケーションプログラム２０からファイル処理要求と共に与えられた対象ファイルまでのフルパスのうちのファイルパス部分と同じファイルパスを有するレコードを検索する（ＳＰ３７）。
【００８１】
そしてＣＰＵ１１は、この後、かかる検索結果に基づいて、そのようなレコードがＬＤＥＶキャッシュ管理テーブル２４上に存在するか否かを判断する（ＳＰ３８）。
【００８２】
ここで、この判断において肯定結果を得ることは、対象ファイルが、少なくとも１度はアクセスしたことがあるファイルであることを意味する。
【００８３】
かくして、このときＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル２４上のステップＳＰ３７の検索により検出したレコードの「オンメモリフラグ」欄２４Ｂを参照して、当該「オンメモリフラグ」欄２４Ｂに「１」が格納されているか否か、つまり対象ファイルがファイル共有サーバ３のＬＤＥＶキャッシュ領域２８に読み込まれているか否かを判断する（ＳＰ３９）。
【００８４】
そしてＣＰＵ１１は、この判断において肯定結果を得ると、ファイルディスクリプタ管理テーブル２６（図７）を参照して、対象ファイルに対して、そのとき使用していないファイルディスクリプタを採番する（ＳＰ４５）。
【００８５】
またＣＰＵ１１は、この後、対象ファイルに関する必要な情報をファイルディスクリプタ管理テーブル２６に登録する（ＳＰ４６）。具体的には、ＣＰＵ１１は、そのとき採番したファイルディスクリプタをファイルディスクリプタ管理テーブル２６の「ファイルディスクリプタ」欄２６Ａに格納すると共に、その対象ファイルと対応付けられているＬＤＥＶキャッシュ管理テーブル２４（図５）へのポインタを、当該ファイルディスクリプタ管理テーブル２６の「ＬＤＥＶキャッシュ管理テーブルレコードポインタ」欄２６Ｂに格納する。またＣＰＵ１１は、ＬＤＥＶマッピングテーブル２３（図４）のそのＬＤＥＶキャッシュ管理テーブル２４と対応付けられたレコードへのポインタをファイルディスクリプタ管理テーブル２６の「ＬＤＥＶマッピングテーブルレコードポインタ」欄２６Ｃに格納すると共に、当該ファイルディスクリプタ管理テーブル２６の対応する「使用フラグ」欄２６Ｄにフラグを格納（「１」を格納）する。
【００８６】
続いてＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル２４の対象ファイルと対応するレコードの「参照カウンタ」欄２４Ｄに格納された数値を「１」増加させ（ＳＰ４７）、この後このファイルオープン処理を終了する。
【００８７】
これに対して、ステップＳＰ３８又はステップＳＰ３９の判断において否定結果を得ることは、対象ファイルがいままでに１度もアクセスしたことがないファイルであるか（ＳＰ３８：ＮＯ）、又は対象ファイルのデータがファイル共有サーバ３のＬＤＥＶキャッシュ領域２８に読み込まれていない（ＳＰ３９：ＮＯ）ことを意味する。かくして、このときＣＰＵ１１は、対象ファイルのデータをかかるＬＤＥＶキャッシュ領域２８に読み込むキャッシュ読込み処理を実行すべきことをキャッシュ制御プログラム２２（図１）に要求（以下、これをキャッシュ読込み処理要求と呼ぶ）する（ＳＰ４０）。
【００８８】
またＣＰＵ１１は、これと併せて、ファイル処理要求と共にアプリケーションプログラム２０から与えられた対象ファイルまでのフルパスをキャッシュ制御プログラム２２に通知する（ＳＰ４１）。
【００８９】
そしてＣＰＵ１１は、この後、かかるキャッシュ読込み処理要求の処理結果をキャッシュ制御プログラム２２から受け取ると（ＳＰ４２）、キャッシュ読込み処理が成功したか否かを判断する（ＳＰ４３）。
【００９０】
そしてＣＰＵ１１は、この判断において肯定結果を得ると、この後上述のステップＳＰ４５〜ステップＳＰ４７の処理を実行した後、このファイルオープン処理を終了する。またＣＰＵ１１は、かかるステップＳＰ４３の判断において否定結果を得ると、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ４４）、この後このファイルオープン処理を終了する。
【００９１】
（１−３−２−４）ファイル読込み処理
一方、図１４は、図１２について上述したファイルアクセス処理のステップＳＰ２４におけるファイル読込み処理の具体的な処理内容を示すフローチャートである。
【００９２】
ＣＰＵ１１は、かかるファイルアクセス処理のステップＳＰ２４に進むとこのファイル読込み処理を開始し、まず、対象ファイルのファイルオープン処理時に付与（図１３のステップＳＰ４５参照）したファイルディスクリプタをアプリケーションプログラム２２から取得する（ＳＰ５０）。
【００９３】
続いてＣＰＵ１１は、ファイルディスクリプタ管理テーブル２６に登録されたレコードの中から、「ファイルディスクリプタ」欄２６Ａに格納されたファイルディスクリプタとステップＳＰにおいて取得したファイルディスクリプタとが一致するレコードを検索する（ＳＰ５２）。
【００９４】
次いでＣＰＵ１１は、かかる検索により検出したレコードについて、ファイルディスクリプタ管理テーブル２６の対応する「使用フラグ」欄２６Ｄを参照して（ＳＰ５３）、そのファイルが使用中であるか否かを判断する（ＳＰ５４）。
【００９５】
ここで、図１３のステップＳＰ４６について上述したように、ファイルオープン処理がなされたファイルの場合、ファイルディスクリプタ管理テーブル２６の「使用フラグ」欄２６Ｄには「１」が格納される。従って、かかる判断において否定結果を得ることは、例えばアプリケーションプログラム２０からのファイル処理要求が、ファイルオープンされていないファイルを対象としているなどの不正なものであることを意味する。かくして、このときＣＰＵ１１は、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ５５）、この後このファイル読込み処理を終了する（ＳＰ５６）。
【００９６】
これに対してＣＰＵ１１は、かかるステップＳＰ５４の判断において肯定結果を得ると、ファイルディスクリプタ管理テーブル２６の対応する「ＬＤＥＶキャッシュ管理テーブルレコードポインタ」欄２６Ｂから対応するＬＤＥＶキャッシュ管理テーブル２４へのポインタを読み出すと共に、かかるファイルディスクリプタ管理テーブル２６の対応する「ＬＤＥＶマッピングテーブルレコードポインタ」欄２６ＣからＬＤＥＶマッピングテーブル２３上の対応するレコードへのポインタを読み出す（ＳＰ５７）。
【００９７】
次いでＣＰＵ１１は、ステップＳＰ５７においてファイルディスクリプタ管理テーブル２６から読み出した、対応するＬＤＥＶキャッシュ管理テーブル２４へのポインタに基づいて、ＬＤＥＶキャッシュ管理テーブル２４上の対象ファイルのレコードを特定し、当該ＬＤＥＶキャッシュ管理テーブル２４の対応する「ファイルパス」欄２４Ａから当該対象ファイルへのファイルパスを読み出す（ＳＰ５８）。
【００９８】
またＣＰＵ１１は、ステップＳＰ５７においてファイルディスクリプタ管理テーブル２６から読み出した、ＬＤＥＶマッピングテーブル２３上の対応するレコードへのポインタに基づいて、ＬＤＥＶマッピングテーブル２３上の対象ファイルが属するファイルシステムＦＳに対応するレコードを特定し、当該ＬＤＥＶマッピングテーブル２３の対応する「マウントパス」欄２３Ａから当該ファイルシステムＦＳへのマウントパスを読み出す（ＳＰ５９）。
【００９９】
そしてＣＰＵ１１は、この後、対象ファイルについてのキャッシュ読込み処理要求をキャッシュ制御プログラム２２に送信する（ＳＰ６０）。またＣＰＵ１１は、これと併せて、ステップＳＰ５９において取得したマウントパスと、ステップＳＰ５８において取得したファイルパスとを組み合わせてそのファイルまでのフルパスを生成し、このフルパスをキャッシュ制御プログラム２２に通知する（ＳＰ６１）。
【０１００】
この結果、後述のように、キャッシュ制御プログラム２２の制御のもとに、対象ファイルのデータがストレージ装置４から読み出されてファイル共有サーバ３のメモリ３（ＬＤＥＶキャッシュ領域２８）に格納される。またこれに伴って、ＬＤＥＶマッピングテーブル２３、ＬＤＥＶキャッシュ管理テーブル２４及びＬＵ割当て管理テーブル２５が更新される。
【０１０１】
この後ＣＰＵ１１は、キャッシュ制御プログラム２２からかかるキャッシュ読込み処理要求に対する処理結果を受け取ると（ＳＰ６２）、ＬＤＥＶキャッシュ管理テーブル２４を参照して、対象ファイルのデータが格納されているファイル共有サーバ３のＬＤＥＶキャッシュ領域２８内のアドレスを、かかるＬＤＥＶキャッシュ管理テーブル２４の対応する「キャッシュ領域アドレス」欄２４Ｅから読み出す。またＣＰＵ１１は、このようにして取得したかかるアドレスに基づいて、ファイル共有サーバ３のＬＤＥＶキャッシュ領域２８内の当該アドレス位置に格納されているファイルデータを読み込む（ＳＰ６３）。
【０１０２】
そしてＣＰＵ１１は、この後、このようにして取得したファイルデータと、この一連のファイル読込み処理の処理結果（成功又は失敗）の情報とを対応するアプリケーションプログラム２０に送信し（ＳＰ６４）、この後このファイル読込み処理を終了する。
【０１０３】
（１−３−２−５）ファイル書込み処理
他方、図１５は、図１２について上述したファイルアクセス処理のステップＳＰ２５におけるファイル書込み処理の具体的な処理内容を示すフローチャートである。
【０１０４】
ＣＰＵ１１は、かかるファイルアクセス処理のステップＳＰ２５に進むとこのファイル書込み処理を開始し、ステップＳＰ７０〜ステップＳＰ７４をファイル読込み処理のステップＳＰ５０〜ステップＳＰ５４と同様に処理する。
【０１０５】
そしてＣＰＵ１１は、ステップＳＰ７４の判断において否定結果を得ると、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ７５）、この後このファイル読込み処理を終了する（ＳＰ８２）。
【０１０６】
これに対してＣＰＵ１１は、ステップＳＰ７４の判断において肯定結果を得ると、ファイルディスクリプタ管理テーブル２６（図７）上の対応するレコード「ＬＤＥＶキャッシュ管理テーブルレコードポインタ」欄２６Ｂを参照して、対応するＬＤＥＶキャッシュ管理テーブル２４（図５）上の対応するレコードを特定し、当該レコードへのポインタを読み出す（ＳＰ７６）。
【０１０７】
続いてＣＰＵ１１は、アプリケーションプログラム２０から送信される書込み対象のデータを受け取り（ＳＰ７７）、この後、ＬＤＥＶキャッシュ管理テーブル２４のステップＳＰ７６において特定したレコードの「キャッシュ領域アドレス」欄２４Ｅから、ファイル共有サーバ３のＬＤＥＶキャッシュ領域２８における対象ファイルのデータを書き込むべきキャッシュ領域２８Ａ（図３）のアドレスを読み出す（ＳＰ７８）。
【０１０８】
そしてＣＰＵ１１は、この後、ステップＳＰ７７においてアプリケーションプログラム２０から受け取った書込み対象のデータをファイル共有サーバ３のＬＤＥＶキャッシュ領域２８内のステップＳＰ７８においてアドレスを取得したキャッシュ領域２８Ａに書き込む（ＳＰ７９）。
【０１０９】
さらにＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル２４のステップＳＰ７６において特定したレコードの「オンメモリフラグ」欄２４Ｂに格納された数値を「１」に更新すると共に、当該レコードの「Syncフラグ」欄２４Ｃに格納された数値を「０」に更新する（ＳＰ８０）。
【０１１０】
次いでＣＰＵ１１は、返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ８１）、この後このファイル読込み処理を終了する（ＳＰ８１）。
【０１１１】
（１−３−２−６）ファイルクローズ処理
図１６及び図１７は、図１２について上述したファイルアクセス処理のステップＳＰ２６におけるファイルクローズ処理の具体的な処理内容を示すフローチャートである。
【０１１２】
ＣＰＵ１１は、かかるファイルアクセス処理のステップＳＰ２６に進むとこのファイルクローズ処理を開始し（ＳＰ９０）、まず、ステップＳＰ９０〜ステップＳＰ９６を図１４について上述したファイル読込み処理のステップＳＰ５０〜ステップＳＰ５６と同様に処理する。
【０１１３】
そしてＣＰＵ１１は、ステップＳＰ９４の判断において否定結果を得ると、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ９５）、この後このファイルクローズ処理を終了する（ＳＰ９６）。
【０１１４】
これに対してＣＰＵ１１は、ステップＳＰ９４の判断において肯定結果を得ると、ファイルディスクリプタ管理テーブル２６（図７）の対応する「ＬＤＥＶキャッシュ管理テーブルレコードポインタ」欄２６Ｂから、ＬＤＥＶマッピングテーブル２３（図４）上の対応するレコードへのポインタを特定する（ＳＰ９７）。
【０１１５】
続いてＣＰＵ１１は、かかるＬＤＥＶキャッシュ管理テーブル２４（図５）上のステップＳＰ９７において特定したレコードの「参照カウンタ」欄２４Ｄに格納されたカウンタ値を読み出し、その値が「１」であるか、「２以上」であるかを判断する（ＳＰ９８）。
【０１１６】
ここで、かかる値が「１」の場合、その対象ファイルに対するファイルアクセスが、そのときファイルクローズ要求を送信してきたアプリケーションプログラム２０だけであることを意味する。かくして、このときＣＰＵ１１は、そのファイルのデータをファイル共有サーバ３のＬＤＥＶキャッシュ領域２８から削除する処理を実行する（ステップＳＰ９９〜ステップＳＰ１０３）。
【０１１７】
具体的にＣＰＵ１１は、ステップＳＰ９８の判断においてかかる値が「１」との判断結果を得ると、ＬＤＥＶキャッシュ管理テーブル２４の対応する「ファイルパス」欄２４Ａからそのレコードと対応付けられたファイルへのファイルパスを読み出す（ＳＰ９９）。
【０１１８】
またＣＰＵ１１は、ファイルディスクリプタ管理テーブル２６の対応する「ＬＤＥＶマッピングテーブルレコードポインタ」欄２６Ｃを参照してＬＤＥＶマッピングテーブル２３上の対応するレコードを特定し、ＬＤＥＶマッピングテーブル２３における当該レコードの「マウントパス」欄２３Ａから対象ファイルが属するファイルシステムＦＳへのマウントパスを読み出す（ＳＰ１００）。
【０１１９】
そしてＣＰＵ１１は、この後、対象ファイルのデータをファイル共有サーバ３のＬＤＥＶキャッシュ領域２８から読み出してストレージ装置４内の対応する論理デバイス４６に書き込むキャッシュ読込み処理の実行をキャッシュ制御プログラム２２に要求（以下、これをキャッシュ書込み処理要求と呼ぶ）する（ＳＰ１０１）。
【０１２０】
またＣＰＵ１１は、これと併せて、ステップＳＰ９９において取得したそのファイルのファイルパスと、ステップＳＰ１００において取得したそのファイルが属するファイルシステムＦＳへのマウントパスとを組み合わせた対象ファイルへのフルパスを生成し、生成したフルパスをキャッシュ制御プログラム２２に通知する（ＳＰ１０２）。
【０１２１】
この後、ＣＰＵ１１は、キャッシュ制御プログラム２２からかかるキャッシュ書込み処理の処理結果を受け取ると（ＳＰ１０３）、当該キャッシュ書込み処理が成功したか否かを判断する（ＳＰ１０４）。そしてＣＰＵ１１は、この判断において否定結果を得ると、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ１０５）、この後このファイルクローズ処理を終了する（ＳＰ１０９）。
【０１２２】
これに対してＣＰＵ１１は、かかる判断において肯定結果を得ると、ファイル共有サーバ３のＬＤＥＶキャッシュ領域２８におけるそのファイルのデータが格納されていたキャッシュ領域２８Ａ（図３）を解放すると共に、ＬＤＥＶキャッシュ管理テーブル２４から当該対象ファイルのレコードを削除する（ＳＰ１０６）。
【０１２３】
そしてＣＰＵ１１は、この後ＬＤＥＶキャッシュ管理テーブル２４上の対象ファイルに対応する「参照カウンタ」欄２４Ｄに格納された数値を「１」だけ減少させる（ＳＰ１０７）。またＣＰＵ１１は、返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ１０８）、この後このファイルクローズ処理を終了する（ＳＰ１０９）。
【０１２４】
一方、ステップＳＰ９８において、かかる値が「２以上」であった場合、現在、対象ファイルに対して、そのときファイルクローズ要求を送信してきたアプリケーションプログラム２０以外のアプリケーションプログラム２０がアクセスしていることを意味する。かくして、このときＣＰＵ１１は、その対象ファイルのデータをファイル共有サーバ３のＬＤＥＶキャッシュ領域２８から削除することなく対象ファイルをクローズするための処理を実行する。
【０１２５】
具体的にＣＰＵ１１は、ステップＳＰ９８の判断において、かかる値が「２以上」であると判断すると、ステップＳＰ１０７に進み、この後ステップＳＰ１０７及びステップＳＰ１０８を上述と同様に処理した後に、このファイルクローズ処理を終了する（ＳＰ１０９）。
【０１２６】
（１−３−３）キャッシュ制御プログラムに基づくＣＰＵの具体的な処理
図１８〜図２０は、ファイルオープン処理（図１３）のステップＳＰ４０やファイル読込み処理（図１４）のステップＳＰ６０において発行されるキャッシュ読込み処理要求、又はファイルクローズ処理（図１６）のステップＳＰ１０１において発行されるキャッシュ書込み処理要求に応じて、キャッシュ制御プログラム２２に基づきＣＰＵ１１が行うキャッシュ読込み／書込み処理の具体的な内容を示すフローチャートである。
【０１２７】
ＣＰＵ１１は、かかるキャッシュ読込み処理要求又はキャッシュ書込み処理要求がファイルシステムプログラム２１（図１）から発行されると、この図１８〜図２０に示すキャッシュ読込み／書込み処理を開始し（ＳＰ１１０）、まず、かかるキャッシュ読込み処理要求又はキャッシュ書込み処理要求を受け取る（ＳＰ１１１）。またＣＰＵ１１は、この後ファイルシステムプログラム２１から通知されるフルパスを受け取る（ＳＰ１１２）。
【０１２８】
そしてＣＰＵ１１は、ＬＤＥＶマッピングテーブル２３のレコードの中から、ステップＳＰ１１２において取得したフルパスのうちのマウントパス部分と同じマウントパスが「マウントパス」欄２３Ａに格納されたレコードを検索する（ＳＰ１１３）。
【０１２９】
続いてＣＰＵ１１は、ＬＤＥＶマッピングテーブル２３上のステップＳＰ１１３にいて検出したレコードの「ＬＤＥＶキャッシュ管理テーブルポインタ」欄２３Ｄに格納されたＬＤＥＶキャッシュ管理テーブル２４へのポインタに基づいて、対応するＬＤＥＶキャッシュ管理テーブル２４を特定し（ＳＰ１１４）、この後、ステップＳＰ１１１において受け取った要求処理がキャッシュ読込み処理であるか否かを判断する（ＳＰ１１５）。
【０１３０】
ＣＰＵ１１は、この判断において肯定結果を得ると、ステップＳＰ１１４において特定したＬＤＥＶキャッシュ管理テーブル２４上の各レコードの「ファイルパス」欄２４Ａに格納されたファイルパスと、ステップＳＰ１１２において取得した対象ファイルへのフルパスとをそれぞれ比較し、当該フルパスのファイルパス部分と同じファイルパスが「ファイルパス」欄２４Ａに格納されたレコードを検索する（ＳＰ１１６）。またＣＰＵ１１は、この後この検索結果に基づいて、かかるファイルパスのレコードが存在するか否かを判断する（ＳＰ１１６）。
【０１３１】
ここで、この判断において否定結果を得ることは、対象ファイルのデータが一度もファイル共有サーバ３のＬＤＥＶキャッシュ領域２８に読み出されたことがないことを意味する。かくして、このときＣＰＵ１１は、かかる対象ファイルのレコードをＬＤＥＶキャッシュ管理テーブル２４上に新規作成する。またＣＰＵ１１は、この際、かかるレコードの「オンメモリフラグ」欄２４Ｂ、「Syncフラグ」欄２４Ｃ及び「参照カウンタ」欄２４Ｄにそれぞれ初期値（「０」）を格納する（ＳＰ１１８）。そして、ＣＰＵ１１は、この後ステップＳＰ１２３に進む。
【０１３２】
これに対して、ステップＳＰ１１７の判断において肯定結果を得ることは、対象ファイルのデータが以前にファイル共有サーバ３のＬＤＥＶキャッシュ領域２８に読み出されたことがあることを意味する。かくして、このときＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル２４の対応する「オンメモリフラグ」欄２４Ｂを参照して、そのファイルデータが現在もかかるＬＤＥＶキャッシュ領域２８に保持されているか否かを判断する（ＳＰ１２０）。
【０１３３】
そしてＣＰＵ１１は、この判断において肯定結果を得ると、返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ１２１）、この後このキャッシュ読込み／書込み処理を終了する（ＳＰ１２２）。
【０１３４】
これに対してＣＰＵ１１は、かかるステップＳＰ１２０の判断において否定結果を得ると、ＬＤＥＶマッピングテーブル２３（図４）の対応するレコードの「ＬＤＥＶ番号」欄２３Ｂ及び「割当てＬＵ番号」欄２３Ｃから、対応する論理デバイス４６のＬＤＥＶ番号及び当該論理デバイス４６が割り当てられた仮想論理ユニット４７のＬＵ番号をそれぞれ読み出す処理を実行すると共に（ＳＰ１２３）、このときかかる仮想論理ユニット４７のＬＵ番号を読み出せたか否かを判断する（ＳＰ１２４）。
【０１３５】
この判断において否定結果を得ることは、対象ファイルのデータが格納されている論理デバイス４６がいずれの仮想論理ユニット４７にもマッピングされていないことを意味する。かくして、このときＣＰＵ１１は、ＬＵ割当て管理テーブル２５（図６）を参照して、未使用の仮想論理ユニット４７（「使用中フラグ」欄２５Ｂに「１」が格納されていない仮想論理ユニット４７）を検索する（ＳＰ１２５）。そしてＣＰＵ１１は、未使用の仮想論理ユニット４７を検出できたか否かを判断する（ＳＰ１２６）。
【０１３６】
そしてＣＰＵ１１は、この判断において肯定結果を得るとステップＳＰ１２９に進む。これに対してＣＰＵ１１は、かかるステップＳＰ１２６の判断において否定結果を得ると、ＬＵ割当て管理テーブル２５を参照して、使用中の仮想論理ユニット４７の中から任意の仮想論理ユニット４７を選択する（ＳＰ１２７）。なお、この場合における仮想論理ユニット４７の選択方法として、アクセス頻度の最も少ない又は最後にアクセスがあった時刻が最も古いファイルシステムＦＳのデータを格納する論理デバイス４６が割り当てられた仮想論理ユニット４７を選択する選択方法を採用するようにしても良い。
【０１３７】
この後ＣＰＵ１１は、ストレージ装置４内のジュークボックス機能を提供する上述のジュークボックス制御プログラム４５（図１）に対して、ステップＳＰ１２７において選択した仮想論理ユニット４７に対する論理デバイス４６の割り当ての解除を要求（以下、これを割当て解除要求と呼ぶ）する（ＳＰ１２８）。この結果、ストレージ装置４のＣＰＵ４２（図１）は、この割当て解除要求に応じて、ジュークボックス制御プログラム４５に基づき、指定された仮想論理ユニット４７に対する論理デバイス４６の割り当てを解除する。
【０１３８】
続いてＣＰＵ１１は、ストレージ装置４に対して、仮想論理ユニット４７に対する論理デバイス４６の割り当てを要求する（ＳＰ１２９）。またＣＰＵ１１は、その対象となる仮想論理ユニット４７のＬＵ番号として、ステップＳＰ１２５の検索において検出した未使用の仮想論理ユニット４７のＬＵ番号（ステップＳＰ１２５において肯定結果を得た場合）又はステップＳＰ１２７において選択した仮想論理ユニット４７のＬＵ番号（ステップＳＰ１２６において否定結果を得た場合）を、かかるストレージ装置４に送信すると共に、当該仮想論理ユニット４７に割り当てるべき論理デバイス４６のＬＤＥＶ番号として、対象ファイルのデータが格納されている論理デバイス４６のＬＤＥＶ番号をストレージ装置４に送信する（ＳＰ１３０）。この結果、ストレージ装置４のＣＰＵ４２は、ジュークボックス制御プログラム４５に基づいてかかる仮想論理ユニット４７にかかる論理デバイス４６を割り当てる割当て処理を実行する。
【０１３９】
次いでＣＰＵ１１は、ファイル共有サーバ３のＬＤＥＶキャッシュ領域２８内に、対象ファイルのデータを読み出すためのキャッシュ領域２８Ａを確保するキャッシュ領域確保処理を実行する（ＳＰ１３１）。またＣＰＵ１１は、この後ストレージ装置４にアクセスすることにより、対応する論理デバイス４６から対象ファイルのデータを読み出し、当該ファイルデータをステップＳＰ１３１において確保したキャッシュ領域２８Ａに格納する（ＳＰ１３２）。
【０１４０】
続いてＣＰＵ１１は、ステップＳＰ１２５においてＬＵ番号を取得した未使用の仮想論理ユニット４７（ステップＳＰ１２６において肯定結果を得た場合）又はステップＳＰ１２７において選択した仮想論理ユニット４７（ステップＳＰ１２６において否定結果を得た場合）に対応するＬＵ割当て管理テーブル２５（図６）上の「使用中フラグ」欄２５Ｂに、当該仮想論理ユニット４７が使用中であることを表すフラグを格納する（ＳＰ１３３）。
【０１４１】
またＣＰＵ１１は、ＬＤＥＶマッピングテーブル２３（図４）の「割当てＬＵ番号」欄２３Ｃのうち、対象ファイルのデータが格納されている論理デバイス４６に対応する「割当てＬＵ番号」欄２３Ｃに、当該論理デバイス４６を割り当てた仮想論理ユニット４７のＬＵ番号を格納する（ＳＰ１３４）。
【０１４２】
さらにＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル２４（図５）上の対応する「オンメモリフラグ」欄２４Ｂ及び「Syncフラグ」欄２４Ｃにそれぞれ「１」を格納し（ＳＰ１３５）、この後、ＬＤＥＶキャッシュ管理テーブル２４上の対応する「キャッシュ領域アドレス」欄２４Ｅに、ファイル共有サーバ３のＬＤＥＶキャッシュ領域２８における対象ファイルのデータが格納されたキャッシュ領域２８Ａ（図３）のアドレスを格納する（ＳＰ１３６）。
【０１４３】
さらにＣＰＵ１１は、返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ１３７）、この後このキャッシュ読込み／書込み処理を終了する。
【０１４４】
これに対してＣＰＵ１１は、ステップＳＰ１１５（図１８）の判断において否定結果を得ると、ステップＳＰ１１４において特定したＬＤＥＶキャッシュ管理テーブル２４上の各レコードの「ファイルパス」欄２４Ａに格納されたファイルパスと、ステップＳＰ１１２において取得した対象ファイルへのフルパスとをそれぞれ比較し、当該フルパスのファイルパス部分が一致するレコードを検索する（ＳＰ１３９）。またＣＰＵ１１は、この後この検索結果に基づいて、かかるフルパスのファイルパス部分が一致するレコードが存在するか否かを判断する（ＳＰ１４０）。
【０１４５】
そしてＣＰＵ１１は、この判断において否定結果を得ると、返却値に「エラー」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ１４１）、この後このキャッシュ読込み／書込み処理を終了する（ＳＰ１４２）。
【０１４６】
これに対してＣＰＵ１１は、かかる判断において肯定結果を得ると、ＬＤＥＶキャッシュ管理テーブル２４（図５）上の「オンメモリフラグ」欄２４Ｂのうち、対象ファイルが格納されている論理デバイス４６に対応する「オンメモリフラグ」欄２４Ｂを参照して（ＳＰ１４３）、かかる対象ファイルのデータがファイル共有サーバ３のＬＤＥＶキャッシュ領域２８に格納されているか否かを判断する（ＳＰ１４４）。
【０１４７】
ここで、この判断において否定結果を得ることは、ファイルオープン処理された対象ファイルのデータがファイル共有サーバ３のＬＤＥＶキャッシュ領域２８上に読み出されているはずにも係わらず、その対象ファイルのデータがかかるＬＤＥＶキャッシュ領域２８上に存在しないことを意味する。かくして、このときＣＰＵ１１は、返却値に「エラー」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ１４５）、この後このキャッシュ読込み／書込み処理を終了する（ＳＰ１４６）。
【０１４８】
これに対してＣＰＵ１１は、かかる判断において肯定結果を得ると、ＬＤＥＶキャッシュ管理テーブル２４（図５）上の対象ファイルに対応する「Syncフラグ」欄２４Ｃに「１」が格納されているか否かを判断する（ＳＰ１４７）。
【０１４９】
ここで、この判断において肯定結果を得ることは、ファイル共有サーバ３のＬＤＥＶキャッシュ領域２８上に格納されている対象ファイルのデータと、ストレージ装置４の対応する論理デバイス４６に保存されている対象ファイルのデータとが同じ、つまり、その対象ファイルのオープン後に当該対象ファイルのデータが更新されていないことを意味する（図１５のステップＳＰ８０参照）。従って、この場合には、その対象ファイルをクローズ処理するに際し、かかるＬＤＥＶキャッシュ領域２８に格納された対象ファイルのデータをストレージ装置４の対応する論理デバイス４６に書き戻す必要はない。かくして、このときＣＰＵ１１は、返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ１４８）、この後このキャッシュ読込み／書込み処理を終了する（ＳＰ１４９）。
【０１５０】
これに対して、かかる判断において否定結果を得ることは、かかるＬＤＥＶキャッシュ領域２８上に格納されている対象ファイルのデータと、ストレージ装置４の対応する論理デバイス４６に保存されている対象ファイルのデータとが異なる、つまり、その対象ファイルのオープン後に当該対象ファイルのデータが更新されていることを意味する（図１５のステップＳＰ８０参照）。従って、この場合には、その対象ファイルをクローズ処理するに際し、かかるＬＤＥＶキャッシュ領域２８に格納された対象ファイルのデータをストレージ装置４内の対応する論理デバイス４６に書き戻す必要がある。かくして、このときＣＰＵ１１は、ＬＤＥＶマッピングテーブル２３上の対応する「ＬＤＥＶ番号」欄２３Ｂ及び「割当てＬＵ番号」欄２３Ｃから、対象ファイルを書き戻すべき論理デバイス４６のＬＤＥＶ番号と、そのときその論理デバイス４６に割り当てられている仮想論理ユニット４７のＬＵ番号とを読み出す（ＳＰ１５０）。
【０１５１】
そしてＣＰＵ１１は、この後、かかるステップＳＰ１５０の処理によって対応する仮想論理ユニット４７のＬＵ番号を取得できたか否か、つまり、ＬＤＥＶマッピングテーブル２３上の対応する「割当てＬＵ番号」欄２３Ｃにいずれかの仮想論理ユニット４７のＬＵ番号が格納されていたか否かを判断する（ＳＰ１５１）。
【０１５２】
この判断において肯定結果を得ることは、対象ファイルのデータが保存されている論理デバイス４６に対し、そのときいずれかの仮想論理ユニット４７が割り当てられていることを意味する。かくして、このときＣＰＵ１１は、ステップＳＰ１５８に進む。
【０１５３】
これに対して、かかる判断において否定結果を得ることは、対象ファイルのデータが保存されている論理デバイス４６が、そのときいずれの仮想論理ユニット４７に対しても割り当てられていないことを意味する。かくして、このときＣＰＵ１１は、ＬＵ割当て管理テーブル２５（図６）から未使用の仮想論理ユニット４７のＬＵ番号を取得する処理を実行し（ＳＰ１５２）、この後、かかるステップＳＰ１５２において未使用の仮想論理ユニット４７のＬＵ番号を取得できたか否か（未使用の仮想論理ユニット４７があるか否か）を判断する（ＳＰ１５３）。
【０１５４】
そしてＣＰＵ１１は、この判断において肯定結果を得るとステップＳＰ１５６に進み、これに対して否定結果を得ると、ＬＵ割当て管理テーブル２５（図６）を参照して、現在使用中の仮想論理ユニット４７の中から１つの仮想論理ユニット４７を選択し（ＳＰ１５４）、この後、ストレージ装置４に対して、この仮想論理ユニット４７に対する論理デバイス４６の割当て解除を要求する（ＳＰ１５５）。
【０１５５】
またＣＰＵ１１は、ストレージ装置４に対して仮想論理ユニット４７に対する論理デバイス４６の割り当てを要求する（ＳＰ１５６）。さらにＣＰＵ１１は、ＬＵ割当て管理テーブル２５から取得し（ステップＳＰ１５１において肯定結果を得た場合）又はステップＳＰ１５４において選択した（ステップＳＰ１５１において否定結果を得た場合）仮想論理ユニット４７のＬＵ番号と、対象ファイルのデータが格納されている論理デバイス４６のＬＤＥＶ番号とをストレージ装置４に送信する（ＳＰ１５７）。この結果、ストレージ装置４のＣＰＵ４２（図１）は、ジュークボックス制御プログラム４５に基づいて、かかる仮想論理ユニット４７をかかる論理デバイス４６に割り当てるように論理デバイスの切替え処理を実行する。
【０１５６】
その後ＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル２４（図５）上の対応する「キャッシュ領域アドレス」欄２４Ｅから、ＬＤＥＶキャッシュ領域２８における対象ファイルのデータが格納されているブロックのアドレスを読み出す（ＳＰ１５８）。またＣＰＵ１１は、この読み出したアドレスに基づいて、かかるＬＤＥＶキャッシュ領域２８から対象ファイルのデータを読み込み、これをストレージ装置４に転送することにより、対応する論理デバイス４６に書き戻させる（ＳＰ１５９）。
【０１５７】
次いでＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル２４上の対応する「Syncフラグ」欄２４Ｃに「１」を設定し（ＳＰ１５９）、さらに返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信した後（ＳＰ１６０）、このキャッシュ読込み／書込み処理を終了する（ＳＰ１６１）。
【０１５８】
なお、かかるキャッシュ読込み／書込み処理のステップＳＰ１３１（図１９）におけるキャッシュ領域確保処理の具体的内容を図２１に示す。
【０１５９】
ＣＰＵ１１は、かかるキャッシュ読込み／書込み処理のステップＳＰ１３１に進むと、この図２１に示すキャッシュ領域確保処理を開始し、まず、キャッシュ領域管理テーブル２７（図８）を参照して、対象ファイルのデータを格納するための未使用のブロックを検索及び選択する（ＳＰ１７１）。
【０１６０】
続いてＣＰＵ１１は、キャッシュ領域管理テーブル２７におけるステップＳＰ１７１において選択した未使用のブロックの「使用中フラグ」欄に「１」を設定する（ＳＰ１７２）。
【０１６１】
次いでＣＰＵ１１は、ステップＳＰ１７１において選択したブロックのアドレスをＬＤＥＶキャッシュ管理テーブル２４（図５）の対応する「キャッシュ領域アドレス」欄２４Ｅに格納し（ＳＰ１７３）、この後このキャッシュ領域確保処理を終了する（ＳＰ１７４）。
【０１６２】
（１−４）ファイルオープンに関する一連の流れ
図２２は、上述した各種処理のうち、特にファイルオープン処理時におけるファイル共有サーバ３内のアプリケーションプログラム２０、ファイルシステムプログラム２１、キャッシュ制御プログラム２２及びストレージ装置３間での一連の処理の流れを示している。
【０１６３】
まず、ファイルアクセスクライアント２（図１）からファイル共有サーバ３に処理要求が与えられると、ファイル共有サーバ３内の対応アプリケーションプログラム２０は、これに応じたファイルオープン要求をファイルシステムプログラム２１に与える（ＳＰ１８０）。また、かかるアプリケーションプログラム２０は、これと併せてオープン対象の対象ファイルへのフルパスをファイルシステムプログラム２１に与える（ＳＰ１８１）。
【０１６４】
そしてファイルシステムプログラム２１は、かかるファイルオープン要求及びフルパスを受信すると、指定されたファイル（対象ファイル）をオープンするファイルオープン処理や、ＬＤＥＶキャッシュ管理テーブル２４を検索して当該対象ファイルのデータがファイル共有サーバ３のＬＤＥＶキャッシュ領域２８に保持されているか否かを判定する処理等を実行する（ＳＰ１８２）。またファイルシステムプログラム２１は、この後、キャッシュ制御プログラム２２に対してキャッシュ読込み要求を送信する（ＳＰ１８３）。
【０１６５】
キャッシュ制御プログラム２２は、かかるキャッシュ読込み要求を受信すると、対象ファイルのデータがＬＤＥＶキャッシュ領域２８上に存在せず、かつ、そのとき当該対象ファイルのデータが保存された論理デバイス４６にいずれの仮想論理ユニット４７も割り当てられていないときには、当該論理デバイス４６にいずれかの仮想論理ユニット４７を割り当てるようにＬＤＥＶ切替え要求をストレージ装置４に送信する（ＳＰ１８４）。
【０１６６】
そしてストレージ装置４は、このＬＤＥＶ切替え要求を受信すると、仮想論理ユニット４７に指定された論理デバイス４６を割り当てるように、当該仮想論理ユニット４７に割り当てる論理デバイス４６の切替え処理を実行し（ＳＰ１８５）、この後、割り当て結果をキャッシュ制御プログラム２２に通知する（ＳＰ１８６）。
【０１６７】
かかる通知を受信したキャッシュ制御プログラム２２は、当該通知に基づいて対象ファイルのデータをファイル共有サーバ３内のＬＤＥＶキャッシュ領域２８に読み込み（ＳＰ１８７）、このキャッシュ読込み処理の処理結果をファイルシステムプログラム２１に通知する（ＳＰ１８８）。
【０１６８】
またこの通知を受信したファイルシステムプログラム２１は、この通知に基づいてＬＤＥＶキャッシュ管理テーブル２４等の対応する各テーブルを更新すると共に、そのファイルに対してファイルディスクリプタを採番し（ＳＰ１８９）、このファイルディスクリプタを対応するアプリケーションプログラム２０に送信する（ＳＰ１９０）。
【０１６９】
（１−５）ＬＤＥＶ切替え制御機能に関するユーザの設定手順
図２３は、上述のような本実施の形態によるＬＤＥＶ切替え制御機能に関してシステム管理者が管理装置５（図１）を用いて行う各種設定の手順を示すフローチャートである。
【０１７０】
システム管理者は、まずストレージ装置４内に設定された仮想論理ユニット４７の中から本実施の形態によるＬＤＥＶ切替え制御機能に関連して使用する仮想論理ユニット４７を設定する（ＳＰ２０１）。かくしてこの設定に基づいて図６について上述したＬＵ割当て管理テーブル２５が作成されることとなる。
【０１７１】
続いてシステム管理者は、ストレージ装置４内に作成したファイルシステムＦＳのうちのマウントするファイルシステムＦＳへのマウントパスをそれぞれ入力する（ＳＰ２０２）。かくしてこの入力に基づいて、図４について上述したＬＤＥＶマッピングテーブル２３の各「マウントパス」欄２３Ａ内に対応するマウントパスが格納されることとなる。
【０１７２】
この後システム管理者は、ステップＳＰ２０２においてマウントパスを入力した各ファイルシステムとそれぞれ対応付けられている論理デバイス４６の識別番号を入力する（ＳＰ２０３）。かくしてこの入力に基づいて、図４について上述したＬＤＥＶマッピングテーブル２３の各「ＬＤＥＶ番号」欄２３Ｂ内に対応する識別番号が格納されることとなる。
【０１７３】
（１−６）本実施の形態の効果
以上のように本実施の形態による計算機システム１では、ファイルアクセスクライアント２からのファイルオープン要求に応じて対象とするファイルをファイル共有サーバ３上のＬＤＥＶキャッシュ領域２８に読み出し、この後、当該ファイルに対するアクセスをこのＬＤＥＶキャッシュ領域２８に保持されたデータに対して行う。
【０１７４】
従って、この計算機システム１では、ストレージ装置４におけるＬＤＥＶジュークボックス機能により仮想論理ユニット４７に割り当てる論理デバイス４６の切替え回数を低減させることができ、当該論理デバイス４６の切り替え時におけるオーバヘッドを低減させることができる。かくするにつき、論理デバイス４６の切替え処理が頻発することに起因するデータの読書き性能の低下を防止することができる。
【０１７５】
また本実施の形態による計算機システム１では、かかる仮想論理ユニット４７に割り当てる論理デバイス４６の切り替えをファイルシステムプログラム２１が行うようにしているため、アプリケーションプログラム２０がかかる論理デバイス４６の切り替えを意識することなく、通常のファイルアクセスと同じアクセス方法でファイルアクセスすることができる。かくするにつき、アプリケーションプログラム２０として、専用品でなく通常のアプリケーションプログラム２０を適用することができ、汎用性を向上させることができる。
【０１７６】
（２）第２の実施の形態
（２−１）本実施の形態による計算機システムの構成
図１において、６０は第２の実施の形態による計算機システムを示す。この計算機システム６０は、ＬＤＥＶキャッシュ領域６１を作成するタイミングが異なる点を除いて第１の実施の形態による計算機システム１と同様に構成されている。
【０１７７】
すなわち、第１の実施の形態では、すべてのファイルシステムＦＳで共有するＬＤＥＶキャッシュ領域２８をファイル共有サーバ３の起動時に作成していたのに対し（図１１参照）、本実施の形態では、ファイルシステムＦＳごとのＬＤＥＶキャッシュ領域６１を、そのファイルシステムＦＳをファイル共有サーバ３にマウント又はアンマウントするタイミングで作成又は削除する点を特徴としている。
【０１７８】
従って、本実施の形態の場合、ファイル共有サーバ３の起動時に図１１について上述したキャッシュ領域作成処理は行われず、これに代えて、ファイルシステムＦＳがファイル共有サーバ３にマウント又はアンマウントされるごとに、そのファイルシステムＦＳに専用のＬＤＥＶキャッシュ領域６１をファイル共有サーバ３のメモリ１２内に作成し又は当該メモリ１２内に作成された対応するＬＤＥＶキャッシュ領域６１を削除する処理が行われる。
【０１７９】
図２４は、このような第２の実施の形態によるＬＤＥＶキャッシュ領域作成／削除処理の具体的な処理内容を示すフローチャートである。
【０１８０】
ＣＰＵ１１は、管理装置５が操作されて入力されたファイルシステムＦＳをマウント又はアンマウントすべき旨の処理要求（以下、これをファイルシステムマウント／アンマウント処理要求と呼ぶ）を受信するごとに、メモリ１２に格納された第２の実施の形態によるファイルシステムプログラム６２（図１）に基づき、この図２４に示すＬＤＥＶキャッシュ領域作成／削除処理を実行する。
【０１８１】
すなわちＣＰＵ１１は、かかるファイルシステムマウント／アンマウント処理要求を受信すると、このＬＤＥＶキャッシュ領域作成／削除処理を開始し（ＳＰ１９０）、まず、受信したファイルシステムマウント／アンマウント処理要求がファイルシステムＦＳのマウント処理及びアンマウント処理のいずれであるかを判定する（ＳＰ１９１）。
【０１８２】
そしてＣＰＵ１１は、受信したファイルシステムマウント／アンマウント処理要求がファイルシステムＦＳのマウント処理の要求であると判定した場合、そのファイルシステムＦＳ専用の所定容量のＬＤＥＶキャッシュ領域６１をファイル共有サーバ３のメモリ１２上に作成すると共に、そのファイルシステムＦＳ専用のキャッシュ領域管理テーブル２７（図８）を作成する（ＳＰ１９２）。従って、この第２の実施の形態の場合、ファイルシステムＦＳ（論理デバイス４６）ごとにキャッシュ領域管理テーブル２７が作成されることとなる。この後、ＣＰＵ１１は、かかるＬＤＥＶキャッシュ領域６１を作成した旨の応答通知をアプリケーションプログラム２０に送信し（ＳＰ１９４）、この後このＬＤＥＶキャッシュ領域作成／削除処理を終了する（ＳＰ１１９５）。
【０１８３】
これに対してＣＰＵ１１は、ステップＳＰ１９１において、受信したファイルシステムマウント／アンマウント処理要求がファイルシステムのマウント処理の要求であると判定した場合、ファイル共有サーバ３のメモリ１２上にアンマウント対象のファイルシステムＦＳ専用に作成したＬＤＥＶキャッシュ領域６１を破棄すると共に、このＬＤＥＶキャッシュ領域６１に対応するキャッシュ領域管理テーブル２７（図８）を破棄する（ＳＰ１９３）。そしてＣＰＵ１１は、この後かかるＬＤＥＶキャッシュ領域６１を破棄した旨の応答通知をアプリケーションプログラム２０に送信し（ＳＰ１９４）、このＬＤＥＶキャッシュ領域作成／削除処理を終了する（ＳＰ１９５）。
【０１８４】
一方、図２５は、図２１について上述した第１の実施の形態によるキャッシュ領域確保処理に代えて、第２の実施の形態によるファイルシステムプログラム６２に基づき、図１８〜図２０について上述したキャッシュ読込み／書込み処理のステップＳＰ１３１（図１９）において行われる第２の実施の形態によるキャッシュ領域確保処理の具体的な処理内容を示すフローチャートである。
【０１８５】
ＣＰＵ１１は、かかるキャッシュ読込み／書込み処理のステップＳＰ１３１に進むと、この図２５に示すキャッシュ領域確保処理を開始し、まず、ステップＳＰ１１２（図１８）において取得した対象ファイルへのフルパスに基づいて対応する論理デバイス４６（ファイルシステムＦＳ）を特定し（ＳＰ２０１）、この後、その論理デバイス４６（ファイルシステムＦＳ）に対応するキャッシュ領域管理テーブル２７を参照して、当該ファイルシステムＦＳに割り当てられたＬＤＥＶキャッシュ領域６１の中から未使用のキャッシュ領域（ブロック）を検索及び検出する（ＳＰ２０２）。
【０１８６】
そしてＣＰＵ１１は、かかる未使用のキャッシュ領域を検出すると、そのキャッシュ領域管理テーブル２７上の当該キャッシュ領域に対応する「使用中フラグ」欄２７Ｂに「１」を格納する（ＳＰ２０３）。またＣＰＵ１１は、その論理デバイス４６（ファイルシステムＦＳ）に対応するＬＤＥＶキャッシュ管理テーブル２４（図５）上の対応する「キャッシュ領域アドレス」欄２４Ｅに、ステップＳＰ２０３において「使用中フラグ」欄２７Ｂに「１」を格納したキャッシュ領域のアドレスを格納し（ＳＰ２０４）、この後このキャッシュ領域確保処理を終了する（ＳＰ２０５）。
【０１８７】
（２−２）本実施の形態の効果
以上のように本実施の形態による計算機システム５０では、ファイルシステムＦＳごとのＬＤＥＶキャッシュ領域６１を、そのファイルシステムＦＳをファイル共有サーバ３にマウント又はアンマウントするタイミングで作成又は削除する。
【０１８８】
この場合において、例えば第１の実施の形態のようにファイル共有サーバ３のメモリ１２上にすべてのファイルシステムＦＳで共有するＬＤＥＶキャッシュ領域２８を作成する方式によると、あるファイルシステムＦＳに多量のアクセスが発生した場合に、別のファイルシステムＦＳが使用可能なキャッシュ領域が逼迫して不具合が発生するおそれがある。
【０１８９】
しかしながら、本実施の形態によるＬＤＥＶキャッシュ領域６１の作成方式によれば、各ファイルシステムＦＳが予め自己に割り当てられたＬＤＥＶキャッシュ領域６１のみを使用することになるため、１つのファイルシステムＦＳに対するアクセスが多発しても、他のファイルシステムＦＳがその影響を受けることなく、自己に割り当てられたＬＤＥＶキャッシュ領域６１を使用できる。従って、本実施の形態によれば、各ファイルシステムＦＳが常に一定量のＬＤＥＶキャッシュ領域６１を使用できるため、不具合が発生するおそれが少なく、信頼性の高い計算機システムを構築することができる。
【０１９０】
（３）第３の実施の形態
（３−２）本実施の形態による計算機システムの構成
図１において、６５は第３の実施の形態による計算機システムを示す。この計算機システム６５は、ファイル共有サーバ３のメモリ１２上に設けられたＬＤＥＶキャッシュ領域２８に保持された全ファイルデータを定期的にストレージ装置３に書き込む点を除いて第１の実施の形態による計算機システム１と同様に構成されている。
【０１９１】
すなわち、第１の実施の形態では、かかるＬＤＥＶキャッシュ領域２８に保持された各ファイルのデータを、そのファイルをクローズ処理するタイミングでストレージ装置４に書き込んでいたのに対し（図２０のＳＰ１５９参照）、本実施の形態では、当該タイミングに加えて、かかるＬＤＥＶキャッシュ領域２８に保持されたすべてのファイルのデータを定期的にストレージ装置４内の対応する論理デバイス４６に書き込む点を特徴としている。
【０１９２】
図２６は、このようにＬＤＥＶキャッシュ領域２８に保持されたファイルデータをストレージ装置４に書き込む書込み処理（以下、これを全キャッシュデータ書込み処理と呼ぶ）の具体的な処理内容を示すフローチャートである。ＣＰＵ１１は、第２の実施の形態によるキャッシュ制御プログラム６６に基づき、ファイル共有サーバ３内の図示しないタイマから定期的に与えられる割込み信号に応じて、この図２６に示す全キャッシュデータ書込み処理を実行する。
【０１９３】
すなわちＣＰＵ１１は、かかる割込み信号を受信すると、この全キャッシュデータ書込み処理を開始し、まず、ＬＤＥＶマッピングテーブル２３（図４）のレコードを１つ選択する（ＳＰ２１１）。次いでＣＰＵ１１は、ステップＳＰ２１１においてレコードを選択できたか否かを判断する（ＳＰ２１２）。
【０１９４】
この判断において肯定結果を得ることは、ステップＳＰ２１３〜ステップＳＰ２１７について後述する処理を行っていないレコード（ファイルシステムＦＳ）が存在しない、つまり、ＬＤＥＶマッピングテーブル２３のすべてのレコードについてステップＳＰ２１３〜ステップＳＰ２１７の処理を行ったことを意味する。かくして、このときＣＰＵ１１は、この全キャッシュデータ書込み処理を終了する（ＳＰ２１８）。
【０１９５】
これに対してＣＰＵ１１は、かかる判断において否定結果を得ると、ＬＤＥＶマッピングテーブル２３におけるステップＳＰ２１１において選択したレコードの「ＬＤＥＶキャッシュ管理テーブルポインタ」欄２３Ｄを参照して、当該レコードに対応するＬＤＥＶキャッシュ管理テーブル２４（図５）を特定し（ＳＰ２１３）、この後、このＬＤＥＶキャッシュ管理テーブル２４に登録されているレコードの中から１つのレコードを選択する（ＳＰ２１４）。
【０１９６】
そしてＣＰＵ１１は、この後、ＬＤＥＶキャッシュ管理テーブル２４におけるステップＳＰ２１４において選択したレコードの「Syncフラグ」欄２４Ｃを参照して、当該「Syncフラグ」欄２４Ｃに「１」が格納されているか否かを判断する（ＳＰ２１５）。
【０１９７】
ここで、この判断において肯定結果を得ることは、そのとき対象としているレコードに対応するファイルに関して、ファイル共有サーバ３のメモリ１２に格納されているそのファイルのデータと、ストレージ装置４の対応する論理デバイス４６に格納されているそのファイルのデータとが一致する（同期が取れている）ことを意味する。かくして、このときＣＰＵ１１は、ステップＳＰ２１４に戻って、同じＬＤＥＶキャッシュ管理テーブル２４から次のレコードを選択する。
【０１９８】
これに対して、ステップＳＰ２１５の判断において否定結果を得ることは、そのとき対象としているレコードに対応するファイルに関して、ファイル共有サーバ３のメモリ１２に格納されているそのファイルのデータと、ストレージ装置４の対応する論理デバイス４６に格納されているそのファイルのデータとが一致しない（同期が取れていない）ことを意味する。かくして、このときＣＰＵ１１は、図２０のステップＳＰ１５０〜ステップＳＰ１５９について上述した手順と同じ手順でかかるメモリ１２のＬＤＥＶキャッシュ領域２８に格納されているそのファイルのデータをストレージ装置４内の対応する論理デバイス４６に書き込む（ＳＰ２１６）。
【０１９９】
この後ＣＰＵ１１は、そのとき対象としているレコードがステップＳＰ２１７において特定したＬＤＥＶキャッシュ管理テーブル２４上の最後のレコードであるか否かを判断する（ＳＰ２１７）。そしてＣＰＵ１１は、この判断において否定結果を得るとステップＳＰ１２４に戻り、これに対して肯定結果を得るとステップＳＰ２１１に戻って、この後ステップＳＰ２１２において否定結果を得るまで同様の処理を繰り返す。
【０２００】
（３−２）本実施の形態の効果
このように本実施の形態による計算機システム６５では、ファイル共有サーバ３のメモリ１２のＬＤＥＶキャッシュ領域２８に保持された各ファイルのデータを、そのファイルをクローズ処理するタイミングに加えて、定期的にストレージ装置４内の対応する論理デバイス４６に書き込むため、かかるＬＤＥＶキャッシュ領域２８に格納されたファイルデータと、ストレージ装置４における対応するファイルのデータとが不整合となっている時間を短縮させることができ、その分障害発生によるデータ損失の危険性を低減させて、耐障害性を向上させることができる。
【０２０１】
（４）第４の実施の形態
（４−１）第４の実施の形態による計算機システムの構成
図１において、７０は第４の実施の形態による計算機システムを示す。この計算機システム７０は、ファイル書込み処理の際にファイル共有サーバ３のメモリ１２上に確保されたＬＤＥＶキャッシュ領域２８に空きがない場合に対応し得るようになされた点を除いて第１の実施の形態による計算機システム１と同様に構成されている。
【０２０２】
すなわち、第１の実施の形態では、ファイル書込み処理の際にかかるＬＤＥＶキャッシュ領域２８内に対応するファイルのデータを格納するためのキャッシュ領域２８Ａ（図３）を必ずＬＤＥＶキャッシュ領域２８内に確保できることを前提としていた。
【０２０３】
しかしながら、ファイル共有サーバ３のメモリ１２の容量は有限であり、数多くのファイルがオープンされた場合、かかるＬＤＥＶキャッシュ領域２８の残容量が逼迫し、その後の新たなファイルのオープン時に、図２１について上述したキャッシュ領域確保処理において、当該新たなファイル用のキャッシュ領域２８Ａを確保できなくなる（そのファイルにキャッシュ領域２８Ａを割り当てられなくなる）事態が発生することも考えられる。
【０２０４】
そこで、この第４の実施の形態による計算機システム７０では、ファイル書込み処理の際に対象ファイルにキャッシュ領域２８Ａを割り当てるだけの残容量がＬＤＥＶキャッシュ領域２８内に存在しない場合には、同じファイルシステムＦＳ内の使用されていないファイルに割り当てられているキャッシュ領域２８Ａを解放し、そのキャッシュ領域２８Ａに書込み対象のファイルのデータを格納する点を特徴としている。
【０２０５】
図２７は、このような第４の実施の形態による計算機システム７０におけるファイル書込み処理の具体的な処理内容を示すフローチャートである。ＣＰＵ１１は、ファイルシステムプログラム２１からファイル書込み要求が与えられると、第４の実施の形態によるキャッシュ制御プログラム７１（図１）に基づき、この図２７に示す手順に従って、対応するファイルのデータをファイル共有サーバ３のメモリ１２上に設けられたＬＤＥＶキャッシュ領域２８に書き込む。
【０２０６】
すなわちＣＰＵ１１は、ファイルシステムプログラム２１からファイル書込み要求が与えられると、このファイル書込み処理を開始し（ＳＰ２２０）、ステップＳＰ２２１〜ステップＳＰ２２８を図１５について上述した第１の実施の形態によるファイル書込み処理のステップＳＰ７１〜ステップＳＰ７８と同様に処理する。
【０２０７】
この後ＣＰＵ１１は、ステップＳＰ２２８においてＬＤＥＶキャッシュ管理テーブル２４の対応する「キャッシュ領域アドレス」欄２４Ｅからアドレスを取得できたか否か、つまり、書込み対象のファイルにＬＤＥＶキャッシュ領域２８内のキャッシュ領域２８Ａが割り当てられているか否かを判断し（ＳＰ２２９）、肯定結果を得るとステップＳＰ２３２に進む。そしてＣＰＵ１１は、この後ステップＳＰ２３２〜ステップＳＰ２３４までを第１の実施の形態のファイル書込み処理のステップＳＰ７９〜ステップＳＰ８１までと同様に処理し、この後、このファイル書込み処理を終了する（ＳＰ２３５）。
【０２０８】
これに対してＣＰＵ１１は、ステップＳＰ２２９の判断において否定結果を得ると、同じファイルシステムＦＳ内の使用されていないファイルに割り当てられているＬＤＥＶキャッシュ領域２８内のキャッシュ領域２８Ａを解放して書込み対象のファイル用のキャッシュ領域２８Ａを確保するキャッシュ領域確保処理を実行する（ＳＰ２３０）。
【０２０９】
次いでＣＰＵ１１は、ストレージ装置４の対応する論理デバイス４６から対応するファイルのデータを読み出し（ＳＰ２３１）、この後ステップＳＰ２３２〜ステップＳＰ２３４までを第１の実施の形態のファイル書込み処理のステップＳＰ７９〜ステップＳＰ８１までと同様に処理し、この後、このファイル書込み処理を終了する。
【０２１０】
ここで、図２８は、この第４の実施の形態によるファイル書込み処理のステップＳＰ２３０の具体的な処理内容を示すフローチャートである。
【０２１１】
ＣＰＵ１１は、かかるファイル書込み処理のステップＳＰ２３０に進むと、この図２８に示すキャッシュ領域確保処理を開始し、まず、キャッシュ領域管理テーブル２７（図８）を参照して、未使用のキャッシュ領域２８Ａを検索する（ＳＰ２４１）。
【０２１２】
ＣＰＵ１１は、この検索により未使用のキャッシュ領域２８Ａを検出できなかった場合には、書込み対象のファイルが属するファイルシステムＦＳと対応付けられたＬＤＥＶキャッシュ管理テーブル２４（図５）のレコードの中から、アクセス頻度の最も低いファイル又は最後にアクセスされた時間が最も古いファイルに対応するレコードを１つ選択する（ＳＰ２４５）。
【０２１３】
続いてＣＰＵ１１は、図２０のステップＳＰ１５０〜ステップＳＰ１５９について上述した手順と同じ手順で、ＬＤＥＶキャッシュ領域２８に格納されているかかるレコードに対応するファイルのデータをストレージ装置４内の対応する論理デバイス４６に書き込む（ＳＰ２４６）。
【０２１４】
またＣＰＵ１１は、この後、キャッシュ領域管理テーブル２７（図８）上のかかるファイルのデータが格納されていたキャッシュ領域２８Ａ（ブロック）に対応する「使用中フラグ」欄２７Ｂに「０」を格納する（ＳＰ２４７）。さらにＣＰＵ１１は、対応するＬＤＥＶキャッシュ管理テーブル２４上の当該ファイルに対応するレコードの「キャッシュ領域アドレス」欄２４Ｅに、割り当てられたキャッシュ領域２８Ａが存在しないということを表す「０」を格納し（ＳＰ２４８）、この後ステップＳＰ２４２に戻る。
【０２１５】
そして、ＣＰＵ１１は、この後必要に応じてステップＳ２４１Ｐ〜ステップＳＰ２４８の処理を繰り返し、やがてステップＳＰ２４２において肯定結果を得ると、このキャッシュ領域確保処理を終了する。
【０２１６】
（４−２）本実施の形態の効果
以上のように本実施の形態による計算機システム７０では、ファイル書込み処理の際に対象ファイルにキャッシュ領域２８Ａを割り当てるだけの残容量がＬＤＥＶキャッシュ領域２８内に存在しない場合には、使用されていないファイルに割り当てられているキャッシュ領域２８Ａを解放し、そのキャッシュ領域２８Ａに書込み対象のファイルのデータを格納するようにしているため、新たなファイルのオープン時にキャッシュ領域２８Ａを割り当てられないという事態が発生することを確実に防止することができ、信頼性の高い計算機システムを構築することができる。
【０２１７】
（５）第５の実施の形態
（５−１）第５の実施の形態による計算機システムの構成
図１との対応部分に同一符号を付して示す図２９は、第５の実施の形態による計算機システム８０を示す。この計算機システム８０は、ストレージシステム８６を構成するファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に保持するファイルデータの単位が異なる点を除いて第１の実施の形態による計算機システム１と同様に構成されている。
【０２１８】
すなわち、第１の実施の形態による計算機システム１では、ファイルデータをファイル単位でファイル共有サーバ３のＬＤＥＶキャッシュ領域２８に保持する方式であったのに対し、本実施の形態による計算機システム８０では、ファイルデータをストレージ装置４における記憶領域の管理単位である上述のブロック単位でファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に保持する点を特徴としている。
【０２１９】
そして本実施の形態においては、このようにファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８においてファイルデータをブロック単位で管理するための手段として、ＬＤＥＶマッピングテーブル２３、ＬＤＥＶキャッシュ管理テーブル８２、ＬＵ割当て管理テーブル２５、ファイルディスクリプタ管理テーブル８３及びキャッシュ領域管理テーブル２７がファイル共有サーバ８１のメモリ１２に格納されている。
【０２２０】
このうち、ＬＤＥＶマッピングテーブル２３、ＬＵ割当て管理テーブル２５及びキャッシュ領域管理テーブル２７は、第１の実施の形態と同様のものであるので、その説明は省略する。
【０２２１】
一方、ＬＤＥＶキャッシュ管理テーブル８２は、ストレージ装置４内の対応する論理デバイス４６に格納されたデータを、当該論理デバイス４６が提供する記憶領域の基本単位であるブロック単位で管理するために用いられるテーブルであり、論理デバイス４６ごと（ファイルシステムＦＳごと）に作成される。
【０２２２】
このＬＤＥＶキャッシュ管理テーブル８２は、図３０に示すように、「ブロック番号」欄８２Ａ、「オンメモリフラグ」欄８２Ｂ、「Syncフラグ」欄８２Ｃ、「参照カウンタ」欄８２Ｄ及び「キャッシュ領域アドレス」欄８２Ｅから構成される。このうち「オンメモリフラグ」欄８２Ｂ、「Syncフラグ」欄８２Ｃ及び「参照カウンタ」欄８２Ｄには、図５について上述した第１の実施の形態のＬＤＥＶキャッシュ管理テーブル２４の「オンメモリフラグ」欄２４Ｂ「Syncフラグ」欄２４Ｃ及び「参照カウンタ」欄２４Ｄに格納されるデータと同様のデータが格納される。
【０２２３】
また「ブロック番号」欄８２Ａには、そのレコードに対応する各論理デバイス４６内の各ブロックのブロック番号が格納される。さらに「キャッシュ領域アドレス」欄８２Ｅには、そのブロックに格納されていたデータが格納されたファイル共有サーバ８１内のＬＤＥＶキャッシュ領域２８上のアドレスが格納される。なお、本実施の形態において、論理デバイス４６が提供する記憶領域の基本的な単位であるブロックと、ＬＤＥＶキャッシュ領域２８の基本単位であるブロックとは、同じ大きさに設定されているものとする。
【０２２４】
従って、図３０の例では、ストレージ装置４内のある論理デバイス４６が提供する記憶領域のうち、ブロック番号が「１」のブロックに格納されたファイルデータは、現在、ＬＤＥＶキャッシュ領域２８内のアドレスが「0xF224」のブロックに読み出されているが、当該ブロックに格納されたデータはかかる論理デバイス４６の対応するブロックに格納されたデータと同期がとれておらず、かつ、そのＬＤＥＶキャッシュ領域２８内のかかるブロックに格納されたデータを、現在３つのアプリケーションプログラム２０が参照していることが示されている。
【０２２５】
他方、ファイルディスクリプタ管理テーブル８３は、ファイル共有サーバ８１に実装されたアプリケーションプログラム２０が起動されたときにファイルシステムプログラム２１（図１）によって作成されるテーブルであり、そのアプリケーションプログラム２０がファイルをオープンする際にファイルシステムプログラム２１が割り当てるファイルディスクリプタ（識別番号）を管理するために用いられる。
【０２２６】
このファイルディスクリプタ管理テーブル８３は、図３１に示すように、「ファイルディスクリプタ」欄８３Ａ、「ＬＤＥＶ番号」欄８３Ｂ、「使用フラグ」欄８３Ｃ及び「inodeポインタ」欄８４Ｄから構成される。このうち「ＬＤＥＶ」欄８３Ｂ及び「使用フラグ」欄８３Ｃには、図２６について上述した第１の実施の形態によるファイルディスクリプタ管理テーブル２６の「ファイルディスクリプタ」欄２６Ａ及び「使用フラグ」欄２６Ｄに格納されるデータと同様のデータが格納される。
【０２２７】
また「ＬＤＥＶ番号」欄８３Ｂには、対応するデータが格納されているストレージ装置４内の論理デバイス４６の識別番号（ＬＤＥＶ番号）が格納され、「inodeポインタ」欄８３Ｄには、後述のようにファイル共有サーバ８１のメモリ１２に読み出された対応するファイルシステムＦＳのｉノードへのポインタが格納される。
【０２２８】
図３２は、本実施の形態の計算機システム８０におけるファイルデータの管理方法の概要を示している。計算機システム８０において、ファイルディスクリプタ管理テーブル８３の各レコードは、それぞれ対応するｉノード９０Ａ，９０Ｂへのポインタを備える。
【０２２９】
ｉノード９０Ａ，９０Ｂは、ファイルごとに作成される当該ファイルの管理情報であり、そのファイルを所有するユーザのユーザＩＤ（「ＵＩＤ（User ID）」）や、そのファイルのグループＩＤ（「ＧＩＤ（Group ID）」）、そのファイルへのアクセスモード（「mode」）及びそのファイルの実体（ファイルデータ）が格納されている論理デバイス４６上のブロックアドレス（「BLOCK」）のほか、そのファイルのサイズ、アクセス権限及び作成日時などの各種情報から構成される。
【０２３０】
このｉノード９０Ａ，９０Ｂは、通常、論理デバイス４６内におけるファイルデータが格納されている領域ＡＲ２と異なる領域ＡＲ１に保存されているが、本実施の形態においては、このｉノード９０Ａ，９０Ｂを論理デバイス４６からファイル共有サーバ３のメモリ１２に読み出して利用する。
【０２３１】
そして本実施の形態においては、このメモリ１２に読み出したｉノード９０Ａ，９０Ｂを参照して、必要時には論理デバイス４６に格納されたファイルデータをブロック単位で読み出すと共に、このブロックに対応したキャッシュ領域２８ＡをＬＤＥＶキャッシュ領域２８上に確保し、当該キャッシュ領域２８Ａ内にかかるブロックから読み出したファイルデータを格納するようにする。
【０２３２】
（５−２）本実施の形態のＬＤＥＶ切替え制御機能に関するＣＰＵの具体的処理内容
（５−２−１）ファイルシステムプログラムに基づくＣＰＵの具体的な処理
（５−２−１−１）ファイルオープン処理
図３３は、図１３について上述した第１の実施の形態によるファイルオープン処理に代えて、ファイルシステムプログラム８４（図２９）に基づいてファイル共有サーバ８１のＣＰＵ１１が実行する、本実施の形態によるファイルオープン処理の具体的な処理内容を示すフローチャートである。
【０２３３】
ＣＰＵ１１は、図１２について上述したファイルアクセス処理のステップＳＰ２３に進むとこのファイルオープン処理を開始し（ＳＰ２５０）、まず、ファイルオープン要求と共にアプリケーションプログラム２０から与えられたオープン対象の対象ファイルまでのフルパスに基づいて、当該対象ファイルのデータが格納されている論理デバイス４６及び当該論理デバイス４６上のブロックを検索する（ＳＰ２５１）。
【０２３４】
例えば、与えられた対象ファイルまでのファイルパスが「/mut/fs1/aa.txt」であった場合、ＣＰＵ１１は、まず、最初の「/」に対応するｉノードを検索する。次いでＣＰＵ１１は、そのｉノードから「mut」に対応するｉノードを特定し、その後そのｉノードから「fs1」に対応するｉノードを取得し、さらにそのｉノードから「aa.txt」のｉノードを取得する。このとき「aa.txt」のｉノードには、対応する論理デバイス４６上の対応するブロックのブロック番号が記述されている。かくして、ＣＰＵ１１は、この「aa.txt」のｉノードから、所望のブロックのブロック番号を取得することとなる。
【０２３５】
次いでＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル８２の対応する「オンメモリフラグ」欄８２Ｂを参照して（ＳＰ２５２）、ステップＳＰ２５１において取得したブロック番号のブロックに格納されているファイルデータがファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８上に存在するか否かを判断する（ＳＰ２５３）。
【０２３６】
そしてＣＰＵ１１は、この判断において肯定結果を得ると、かかるＬＤＥＶキャッシュ領域２８から対応するｉノードのデータを読み出す（ＳＰ２５４）。またＣＰＵ１１は、そのとき対象としているｉノードに対して、そのとき使用していないファイルディスクリプタを採番して対応付け、その後、当該ブロックに関する必要な情報をファイルディスクリプタ管理テーブル８３（図３１）に登録する（ＳＰ２５５）。
【０２３７】
具体的に、ＣＰＵ１１は、そのとき採番したファイルディスクリプタをファイルディスクリプタ管理テーブル８３の「ファイルディスクリプタ」欄８３Ａに格納すると共に、当該「ファイルディスクリプタ」欄８３Ａと同じ行の「ＬＤＥＶ番号」欄８３Ｂに、そのブロックを含む論理デバイス４６の識別番号を格納する。またＣＰＵ１１は、かかる「ＬＤＥＶ番号」欄８３Ｂと同じ行の「使用フラグ」欄８３Ｃに「１」を格納すると共に、当該「使用フラグ」欄８３Ｃと同じ行の「ｉノードポインタ」欄８３Ｄに、対応するｉノードへのポインタを格納する。これにより、ファイルディスクリプタ管理テーブル８３上に、そのブロックについてのレコードが作成されることとなる。
【０２３８】
続いてＣＰＵ１１は、ステップＳＰ２５５において採番したファイルディスクリプタを返却値に設定した応答通知をアプリケーションプログラム２０に送信する（ＳＰ２５８）。従って、アプリケーションプログラム２０は、この後このファイルディスクリプタを利用して、そのブロックにアクセスすることが可能となる。そしてＣＰＵ１１は、この後このファイルオープン処理を終了する（ＳＰ２５９）。
【０２３９】
これに対してＣＰＵ１１は、ステップＳＰ２５３の判断において否定結果を得ると、キャッシュ制御プログラム８５（図２９）にそのとき対象としているブロックに格納されているｉノードの読み出しを要求する（ＳＰ２５６）。
【０２４０】
またＣＰＵ１１は、この後この結果としてファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に読み出されたかかるｉノードのデータをステップＳＰ２５４と同様にしてＬＤＥＶキャッシュ領域２８から読み出すと共に、そのとき対象としているブロックに関するレコードをステップＳＰ２５５と同様にしてファイルディスクリプタ管理テーブル８３に作成する（ＳＰ２５７）。
【０２４１】
次いでＣＰＵ１１は、ステップＳＰ２５７において採番したファイルディスクリプタを返却値に設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ２５８）、この後このファイルオープン処理を終了する（ＳＰ２５９）。
【０２４２】
（５−２−１−２）ファイル読込み処理
一方、図３４は、図１４について上述した第１の実施の形態によるファイル読込み処理に代えて、ファイルシステムプログラム８４（図２９）に基づいてＣＰＵ１１が実行する、本実施の形態によるファイル読込み処理の具体的な処理内容を示すフローチャートである。
【０２４３】
ＣＰＵ１１は、図１２について上述したファイルアクセス処理のステップＳＰ２４に進むとこのファイル読込み処理を開始し（ＳＰ２６０）、まず、アプリケーションプログラム２０から与えられたファイル読込み要求に基づいて、ファイルディスクリプタ及び読込み対象のファイルのサイズを取得する（ＳＰ２６１）。
【０２４４】
続いてＣＰＵ１１は、ファイルディスクリプタ管理テーブル８３（図３１）を参照して、ステップＳＰ２６１において取得したファイルディスクリプタに対応するｉノードを特定し、このｉノードに基づいて、対象とするファイルのデータが格納されているブロックのブロック番号を取得する（ＳＰ２６２）。
【０２４５】
次いでＣＰＵ１１は、対象ファイルが格納されている論理デバイス４６の識別番号と、ステップＳＰ２６２において取得したブロック番号とをファイル読出し要求と共にキャッシュ制御プログラム８５（図２９）に送信する（ＳＰ２６３）。
【０２４６】
そしてＣＰＵ１１は、この後、かかるファイル読出し要求に対する応答として、返却値に「成功」が設定された応答通知がキャッシュ制御プログラム８５から与えられると、対象ファイルのデータが格納されているファイル共有サーバ８１内のＬＤＥＶキャッシュ領域２８のアドレスをＬＤＥＶキャッシュ管理テーブル８２の対応する「キャッシュ領域アドレス」欄８２Ｅから読み出し、当該アドレス位置から対象ファイルのデータを読み出す（ＳＰ２６４）。
【０２４７】
さらにＣＰＵ１１は、このファイルデータと読込み結果とを対応するアプリケーションプログラム２０に送信し（ＳＰ２６５）、この後、このファイル読出し処理を終了する（ＳＰ２６６）。
【０２４８】
（５−２−１−３）ファイル書込み処理
他方、図３５は、図１５について上述した第１の実施の形態によるファイル書込み処理に代えて、ファイルシステムプログラム８４（図２９）に基づいてファイル共有サーバ８１のＣＰＵ１１が実行する、本実施の形態によるファイル書込み処理の具体的な処理内容を示すフローチャートである。
【０２４９】
ＣＰＵ１１は、図１２について上述したファイルアクセス処理のステップＳＰ２５に進むとこのファイル書込み処理を開始し（ＳＰ２７０）、ステップＳＰ２７１〜ステップＳＰ２７４を図１５について上述した第１の実施の形態によるファイル書込み処理のステップＳＰ７１〜ステップＳＰ７４と同様に処理する。
【０２５０】
そしてＣＰＵ１１は、ステップＳＰ２７４の判断において否定結果を得ると、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ２７５）、この後このファイル書込み処理を終了する（ＳＰ２８５）。
【０２５１】
これに対してＣＰＵ１１は、ステップＳＰ２７４の判断において肯定結果を得ると、ファイルディスクリプタ管理テーブル８３（図３１）を参照して、対象ファイルに対応するｉノードへのポインタを検出すると共に、そのｉノードに基づいて、対応する論理デバイス４６における当該対象ファイルが格納されているブロックのブロック番号を特定する（ＳＰ２７６）。
【０２５２】
続いてＣＰＵ１１は、アプリケーションプログラム２０から書込み対象のファイルデータを受け取り（ＳＰ２７７）、この後、ステップＳＰ２７６において特定したＬＤＥＶキャッシュ管理テーブル８２上のレコードの「キャッシュ領域アドレス」欄８２Ｅから、ファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８における対象ファイルのデータを書き込むべきキャッシュ領域２８Ａのアドレスを読み出す（ＳＰ２７８）。
【０２５３】
次いで、ＣＰＵ１１は、ステップＳＰ２７８において対象ファイルのデータを書き込むべきキャッシュ領域２８Ａのアドレスを読み出せたか否か、つまり当該対象ファイルのデータがＬＤＥＶキャッシュ領域２８に保持されているか否かを判断する（ＳＰ２７９）。
【０２５４】
そしてＣＰＵ１１は、この判断において肯定結果を得ると、ステップＳＰ２７７においてアプリケーションプログラム２０から受け取ったファイルデータをＬＤＥＶキャッシュ領域２８内のステップＳＰ２７８においてＬＤＥＶキャッシュ管理テーブル８２から読み出したアドレス位置に書き込む（ＳＰ２８２）。
【０２５５】
これに対してＣＰＵ１１は、この判断において否定結果を得ると、図２５について上述したキャッシュ領域確保処理を実行することにより、かかる対象ファイルのデータを読み出すべきキャッシュ領域２８ＡをＬＤＥＶキャッシュ領域２８内に確保する（ＳＰ２８０）。
【０２５６】
次いでＣＰＵ１１は、このようにして確保したキャッシュ領域２８ＡのアドレスをＬＤＥＶキャッシュ管理テーブル８２（図３０）上の対応する「キャッシュ領域アドレス」欄８２Ｅに格納し（ＳＰ２８１）、この後、ステップＳＰ２７７においてアプリケーションプログラム２０から受け取ったファイルデータをこの「キャッシュ領域アドレス」欄８２Ｅに書き込む（ＳＰ２８２）。
【０２５７】
さらにＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル８２におけるステップＳＰ２７２において特定したレコードの「オンメモリフラグ」欄８２Ｂに「１」を格納すると共に、当該レコードの「Syncフラグ」欄８２Ｃに「０」を格納する（ＳＰ２８３）。
【０２５８】
次いでＣＰＵ１１は、返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ２８４）、この後このファイル読込み処理を終了する（ＳＰ２８５）。
【０２５９】
（５−２−１−４）ファイルクローズ処理
図３６及び図３７は、図１６及び図１７について上述した第１の実施の形態によるファイルクローズ処理に代えて、ファイルシステムプログラム８４（図２９）に基づいてＣＰＵ１１が実行する、本実施の形態によるファイルクローズ処理の具体的な処理内容を示すフローチャートである。
【０２６０】
ＣＰＵ１１は、図１２について上述したファイルアクセス処理のステップＳＰ２６に進むとこのファイルクローズ処理を開始し（ＳＰ２９０）、まず、ステップＳＰ２９１〜ステップＳＰ２９４を図１６について上述した第１の実施の形態によるファイルクローズ処理のステップＳＰ９１〜ステップＳＰ９４と同様に処理する。
【０２６１】
そしてＣＰＵ１１は、ステップＳＰ２９４の判断において否定結果を得ると、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ２９５）、この後このファイル書込み処理を終了する（ＳＰ２９６）。
【０２６２】
これに対してＣＰＵ１１は、ステップＳＰ２９４の判断において肯定結果を得ると、ファイルディスクリプタ管理テーブル８３（図３１）を参照して、対象ファイルに対応するｉノードのｉノード番号を特定する（ＳＰ２９７）。またＣＰＵ１１は、特定したｉノード番号に基づいて、対応する論理デバイス４６における当該対象ファイルが格納されているブロックのブロック番号を特定し、当該ブロックに対応するＬＤＥＶキャッシュ管理テーブル８２（図３０）上のレコードを特定する（ＳＰ２９８）。
【０２６３】
次いでＣＰＵ１１は、かかるＬＤＥＶキャッシュ管理テーブル８２上の特定したレコードの「参照カウンタ」欄８２Ｄに格納されたカウンタ値を読み出し、その値が「１」であるか否かを判断する（ＳＰ２９９）。
【０２６４】
ここで、この判断において肯定結果を得ることは、そのファイルに対するファイルアクセスが、そのときファイルクローズ要求を送信してきたアプリケーションプログラム２０だけであることを意味する。かくして、このときＣＰＵ１１は、ＬＤＥＶキャッシュ管理テーブル８２の対応するレコードの「キャッシュ領域アドレス」欄８２Ｅから、対象ファイルのデータが格納されているＬＤＥＶキャッシュ領域２８のアドレスを読み出す（ＳＰ３００）。
【０２６５】
またＣＰＵ１１は、この後、対象ファイルのデータをファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８から読み出してストレージ装置４内の対応する論理デバイス４６に書き込むキャッシュ読込み処理の実行をキャッシュ制御プログラム８５に要求する（ＳＰ３０１）。
【０２６６】
そしてＣＰＵ１１は、この後、キャッシュ制御プログラム８５からかかるキャッシュ書込み処理の処理結果を受け取ると（ＳＰ３０２）、当該キャッシュ書込み処理が成功したか否かを判断する（ＳＰ３０３）。
【０２６７】
ＣＰＵ１１は、この判断において否定結果を得ると、返却値にエラーを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ３０４）、この後このファイルクローズ処理を終了する（ＳＰ３０８）。
【０２６８】
これに対してＣＰＵ１１は、かかる判断において肯定結果を得ると、ファイル共有サーバ３のＬＤＥＶキャッシュ領域２８におけるそのファイルのデータが格納されていたキャッシュ領域２８Ａを解放すると共に、ＬＤＥＶキャッシュ管理テーブル８２から当該対象ファイルのレコードを削除する（ＳＰ３０５）。
【０２６９】
そしてＣＰＵ１１は、この後ＬＤＥＶキャッシュ管理テーブル８２上の対象ファイルに対応する「参照カウンタ」欄８２Ｄに格納された数値を「１」だけ減少させる（ＳＰ３０６）。またＣＰＵ１１は、返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ３０７）、この後このファイルクローズ処理を終了する（ＳＰ３０８）。
【０２７０】
一方、ステップＳＰ２９９の判断において否定結果を得ることは、現在、対象ファイルに対して、そのときファイルクローズ要求を送信してきたアプリケーションプログラム２０以外のアプリケーションプログラム２０がアクセスしていることを意味する。かくして、このときＣＰＵ１１は、その対象ファイルのデータをファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８から削除することなく対象ファイルをクローズするための処理を実行する。
【０２７１】
具体的にＣＰＵ１１は、ステップＳＰ２９９の判断において否定結果を得ると、ステップＳＰ３０６に進み、この後ステップＳＰ３０６及びステップＳＰ３０７を上述と同様に処理した後に、このファイルクローズ処理を終了する（ＳＰ３０８）。
【０２７２】
（５−２−２）キャッシュ制御プログラムに基づくＣＰＵの具体的な処理
図３８〜図４０は、図３３について上述した第５の実施の形態によるファイルオープン処理のステップＳＰ２５６や図３４について上述した第５の実施の形態によるファイル読込み処理のステップＳＰ２６３において発行されるキャッシュ読込み処理要求、又は図３６及び図３７について上述した第５の実施の形態によるファイルクローズ処理のステップＳＰ３０１において発行されるキャッシュ書込み処理要求に応じて、キャッシュ制御プログラム８５（図２９）に基づきＣＰＵ１１が行う第５の実施の形態によるキャッシュ読込み／書込み処理の具体的な内容を示すフローチャートである。
【０２７３】
ＣＰＵ１１は、かかるキャッシュ読込み処理要求又はキャッシュ書込み処理要求がファイルシステムプログラム８４（図２９）から送信されると、この図３８〜図４０に示すキャッシュ読込み／書込み処理を開始し（ＳＰ３１０）、まず、かかるキャッシュ読込み要求又はキャッシュ書込み要求を受け取る（ＳＰ３１１）。またＣＰＵ１１は、この後ファイルシステムプログラム８４から送信される、そのとき対象とする論理デバイス４６の識別番号及びそのとき対象とするブロックのブロック番号を受け取る（ＳＰ３１２）。
【０２７４】
続いてＣＰＵ１１は、ステップＳＰ３１１において受け取った処理要求がキャッシュ読込み処理であるか否かを判断する（ＳＰ３１３）。そしてＣＰＵ１１は、この判断において肯定結果を得ると、ＬＤＥＶキャッシュ管理テーブル８２（図３０）の対応する「オンメモリフラグ」欄８２Ｂを参照し（ＳＰ３１４）、この参照結果に基づいて、そのとき対象とするブロックのデータがファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に保存されているか否かを判断する（ＳＰ３１５）。
【０２７５】
ＣＰＵ１１は、この判断において肯定結果を得ると、返却値に「読出し成功」を表すコードを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ３１６）、この後このキャッシュ読込み／書込み処理を終了する（ＳＰ３１７）。
【０２７６】
これに対してＣＰＵ１１は、かかる判断において否定結果を得ると、ＬＤＥＶマッピングテーブル２３（図２９）上の対応するレコードを参照して、そのとき対象としているブロックが格納された論理デバイス４６の識別番号と、そのときその論理デバイス４６に割り当てられている仮想論理ユニット４７の識別番号とを取得する（ＳＰ３１８）。またＣＰＵ１１は、この後、かかる仮想論理ユニット４７の識別番号を取得できたか否かを判断する（ＳＰ３１９）。
【０２７７】
この判断において否定結果を得ることは、そのとき対象としているブロックを含む論理デバイス４６が、現在、仮想論理ユニット４７と対応付けられていないことを意味する。かくして、このときＣＰＵ１１は、ステップＳＰ３２０〜ステップＳＰ３２５を図１８〜図２０について上述した第１の実施の形態によるキャッシュ読込み／書込み処理のステップＳＰ１２４〜ステップＳＰ１３０と同様に処理することにより、そのとき対象としているブロックを含む論理デバイス４６をいずれかの仮想論理ユニット４７に割り当てる。
【０２７８】
またＣＰＵ１１は、この後、図２１について上述したキャッシュ領域確保処理と同様のキャッシュ領域確保処理を実行することにより、ファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８内にそのとき対象としているブロックのデータを読み出すためのキャッシュ領域２８Ａを確保し（ＳＰ３２６）、当該キャッシュ領域２８Ａに当該対象ブロックに格納されたデータを読み出す（ＳＰ３２７）。
【０２７９】
次いでＣＰＵ１１は、ステップＳＰ３２８〜ステップＳＰ３３２を、上述の第１の実施の形態によるキャッシュ読込み／書込み処理のステップＳＰ１３３〜ステップＳＰ１３７と同様に処理することにより、ＬＤＥＶマッピングテーブル２３及びＬＤＥＶキャッシュ管理テーブル８２を更新し、この後、このキャッシュ読込み／書込み処理を終了する（ＳＰ３３３）。
【０２８０】
これに対してステップＳＰ３１９の判断で肯定結果を得ることは、そのとき対象としているブロックを含む論理デバイス４６が、現在、いずれかの仮想論理ユニット４７と対応付けられていることを意味する。かくして、このときＣＰＵ１１は、ステップＳＰ３２６〜ステップＳＰ３３２を上述のように処理することにより、そのとき対象としているブロックに格納されているデータをファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に読み出し、さらにこれに応じてＬＤＥＶマッピングテーブル２３及びＬＤＥＶキャッシュ管理テーブル８２を更新する。そしてＣＰＵ１１は、この後、このキャッシュ読込み／書込み処理を終了する（ＳＰ３３３）。
【０２８１】
一方、ＣＰＵ１１は、ステップＳＰ３１３の判断において否定結果を得ると、ＬＤＥＶキャッシュ管理テーブル８２の対応する「オンメモリフラグ」欄８２Ｂを参照して、そのとき対象とするブロックのデータがファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に保持されているか否かを判断する（ＳＰ３３５）。
【０２８２】
ＣＰＵ１１は、この判断において否定結果を得ると、返却値に「エラー」を表すコードを設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ３３６）、この後このキャッシュ読込み／書込み処理を終了する（ＳＰ３３７）。
【０２８３】
これに対してＣＰＵ１１は、かかる判断において肯定結果を得ると、ＬＤＥＶキャッシュ管理テーブル８２上のそのとき対象としているブロックに対応する「Syncフラグ」欄８２Ｃに「１」が格納されているか否かを判断する（ＳＰ３３８）。
【０２８４】
ここで、この判断において肯定結果を得ることは、ファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８上に格納されている対象ブロックのデータと、ストレージ装置４の対応する論理デバイス４６に保存されている対象ブロックのデータとが同じ、つまり、その対象ブロックのオープン後に当該対象ブロックのデータが更新されていないことを意味する。従って、この場合には、その対象ブロックをクローズ処理するに際し、ファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に格納された対象ブロックのデータをストレージ装置４の対応する論理デバイス４６に書き戻す必要はない。かくして、このときＣＰＵ１１は、返却値に「成功」を設定した応答通知をアプリケーションプログラム２０に送信し（ＳＰ３３９）、この後このキャッシュ読込み／書込み処理を終了する（ＳＰ３４０）。
【０２８５】
これに対して、かかる判断において否定結果を得ることは、ファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８上に格納されている対象ブロックのデータと、ストレージ装置４の対応する論理デバイス４６に保存されている対象ブロックのデータとが異なる、つまり、その対象ブロックのオープン後に当該対象ブロックのデータが更新されていることを意味する。従って、この場合には、その対象ファイルをクローズ処理するに際し、ファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に格納された対象ファイルのデータをストレージ装置４の対応する論理デバイス４６に書き戻す必要がある。かくして、このときＣＰＵ１１は、ＬＤＥＶマッピングテーブル２３（図２９）上の対応する「ＬＤＥＶ番号」欄２３Ｂ及び「割当てＬＵ番号」欄２３Ｃから、対象ブロックを書き込むべき論理デバイス４６の識別番号と、そのときその論理デバイス４６に割り当てられている仮想論理ユニット４７の識別番号とを読み出す（ＳＰ３４１）。
【０２８６】
そしてＣＰＵ１１は、この後ステップＳＰ３４２〜ステップＳＰ３５２を上述の第１の実施の形態のステップＳＰ１５１〜ステップＳＰ１６０と同様に処理することにより、ファイル共有サーバ８１のＬＤＥＶキャッシュ領域２８に格納されている対象ブロックのデータをストレージ装置４内の対応する論理デバイス４６に書き込むと共に、これに応じてＬＤＥＶキャッシュ管理テーブル８２を更新し、この後キャッシュ読込み／書込み処理を終了する（ＳＰ３５３）。
【０２８７】
（５−３）本実施の形態の効果
以上のように本実施の形態による計算機システム８０では、ファイルデータをストレージ装置４における記憶領域の管理単位であるブロック単位でファイル共有サーバ８１のメモリ１２内に設けられたＬＤＥＶキャッシュ領域２８に保持するようにしているため、対象ファイル内のアクセス対象外のブロックのデータまでもがＬＤＥＶキャッシュ領域２８に読み込まれることがなく、その分かかるＬＤＥＶキャッシュ領域２８を有効利用することができる。
【０２８８】
（６）他の実施の形態
なお上述の第１〜第５の実施の形態においては、本発明を図１又は図２９のように構成された計算機システム１，６０，６５，７０，８０に適用する場合について述べたが、本発明はこれに限らず、要は、上位装置に提供する仮想的な論理ユニットと、データを記憶する論理デバイスとのマッピングを動的に切り替える機能が搭載されたストレージ装置を備える計算機システムであれば、この他種々の構成の計算機システムに広く適用することができる。
【０２８９】
また上述の第１〜第５の実施の形態においては、本発明によるＬＤＥＶ切替え制御機能を適用する情報処理装置としてファイル共有サーバ３を適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の装置に広く適用することができる。例えばかかるＬＤＥＶ切替え制御機能をストレージ装置４に搭載するようにしても良い。
【０２９０】
さらに上述の第１〜第５の実施の形態においては、ファイル共有サーバ３において、ストレージ装置４から読み出したファイルデータを記憶する記憶デバイスとしてメモリ１２を適用するようにした場合について述べたが、本発明はこれに限らず、ハードディスク等のディスクデバイスなどのメモリ１２以外の記憶デバイスを適用するようにしても良い。
【０２９１】
さらに上述の第１〜第５の実施の形態においては、ファイル共有サーバ３において、各種制御プログラムや各種管理テーブルが格納されたメモリ１２内にストレージ装置４から読み出したファイルデータを格納するＬＤＥＶキャッシュ領域２８，５１を作成するようにした場合について述べたが、本発明はこれに限らず、かかるメモリ１２とは別に専用の記憶デバイスを設け、当該記憶デバイスが提供する記憶領域上にＬＤＥＶキャッシュ領域２８，５１を作成するようにしても良い。
【０２９２】
さらに上述の第１〜第５の実施の形態においては、仮想的論理ユニット４７と論理デバイス４６とのマッピングの切り替えを必要に応じてストレージ装置４に要求し、必要なファイルのデータをストレージ装置４内の対応する論理デバイス４６から読み出してファイル共有サーバ３のメモリ１２に格納し、ファイルアクセスクライアント２から与えられる当該ファイルに対するファイルアクセス要求に応じたデータ入出力処理を、メモリ１２に格納された当該ファイルのデータに対して行う処理部を、ファイルシステムプログラム２１，５２，８４及びキャッシュ制御プログラム２２，６１，７１，８５と、ＬＤＥＶマッピングテーブル２３及びＬＤＥＶキャッシュ管理テーブル２４等の管理テーブルと、ＣＰＵ１１とで構成するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を広く適用することができる。この場合において、かかる処理部による処理の一部をハードウェア構成とするようにしても良い。
【０２９３】
さらに上述の第３の実施の形態においては、メモリ１２内のＬＤＥＶキャッシュ領域２８に格納された全ファイルのデータを、定期的にストレージ装置４内の対応する論理デバイス４６にそれぞれ書き込ませるようにした場合について述べたが、本発明はこれに限らず、例えばＬＤＥＶキャッシュ領域２８に格納されたいずれかのファイルのデータをストレージ装置４内の対応する論理デバイス４６に書き込むタイミングなど、定期的なタイミング以外のタイミングでメモリ１２内のＬＤＥＶキャッシュ領域２８に格納された全ファイルのデータをストレージ装置４内の対応する論理デバイス４６にそれぞれ書き込ませるようにしても良い。
【産業上の利用可能性】
【０２９４】
本発明は、記憶装置としてＬＤＥＶジュークボックス機能が搭載されたストレージ装置を備える種々の構成のストレージシステムに広く適用することができる。
【図面の簡単な説明】
【０２９５】
【図１】第１〜第４の実施の形態による計算機システムの構成を示すブロック図である。
【図２】論理デバイス、ファイルシステム及び仮想論理ユニットの関係の説明に供する概念図である。
【図３】第１の実施の形態によるＬＤＥＶ切替え制御機能の説明に供する概念図である。
【図４】ＬＤＥＶマッピングテーブルを示す概念図である。
【図５】ＬＤＥＶキャッシュ管理テーブルを示す概念図である。
【図６】ＬＵ割当て管理テーブルを示す概念図である。
【図７】ファイルディスクリプタ管理テーブルを示す概念図である。
【図８】キャッシュ領域管理テーブルを示す概念図である。
【図９】ファイルディスクリプタ管理テーブル、ＬＤＥＶマッピングテーブル及びＬＤＥＶキャッシュ管理テーブルの関係の説明に供する概念図である。
【図１０】アプリケーションプログラム処理の説明に供するフローチャートである。
【図１１】キャッシュ領域作成処理の説明に供するフローチャートである。
【図１２】ファイルアクセス処理の説明に供するフローチャートである。
【図１３】ファイルオープン処理の説明に供するフローチャートである。
【図１４】ファイル読込み処理の説明に供するフローチャートである。
【図１５】ファイル書込み処理の説明に供するフローチャートである。
【図１６】ファイルクローズ処理の説明に供するフローチャートである。
【図１７】ファイルクローズ処理の説明に供するフローチャートである。
【図１８】キャッシュ読込み／書込み処理の説明に供するフローチャートである。
【図１９】キャッシュ読込み／書込み処理の説明に供するフローチャートである。
【図２０】キャッシュ読込み／書込み処理の説明に供するフローチャートである。
【図２１】キャッシュ領域確保処理の説明に供するフローチャートである。
【図２２】ファイルオープン時における処理の一連の流れの説明に供するタイミングチャートである。
【図２３】ＬＤＥＶ切替え制御機能に関してシステム管理者が行う各種設定の説明に供するフローチャートである。
【図２４】第２の実施の形態によるＬＤＥＶキャッシュ領域作成／削除処理の具体的な処理内容を示すフローチャートである。
【図２５】第２の実施の形態によるキャッシュ領域確保処理の説明に供するフローチャートである。
【図２６】全キャッシュデータ書込み処理の説明に供するフローチャートである。
【図２７】第４の実施の形態によるファイル書込み処理の説明に供するフローチャートである。
【図２８】第４の実施の形態によるキャッシュ領域確保処理の説明に供するフローチャートである。
【図２９】第５の実施の形態による計算機システムの構成を示すブロック図である。
【図３０】第５の実施の形態によるＬＤＥＶキャッシュ管理テーブルを示す概念図である。
【図３１】第５の実施の形態によるファイルディスクリプタ管理テーブルを示す概念図である。
【図３２】第５の実施の形態によるＬＤＥＶ切替え制御機能の説明に供する概念図である。
【図３３】第５の実施の形態によるファイルオープン処理の説明に供するフローチャートである。
【図３４】第５の実施の形態によるファイル読込み処理の説明に供するフローチャートである。
【図３５】第５の実施の形態によるファイル書込み処理の説明に供するフローチャートである。
【図３６】第５の実施の形態によるファイルクローズ処理の説明に供するフローチャートである。
【図３７】第５の実施の形態によるファイルクローズ処理の説明に供するフローチャートである。
【図３８】第５の実施の形態によるキャッシュ読込み／書込み処理の説明に供するフローチャートである。
【図３９】第５の実施の形態によるキャッシュ読込み／書込み処理の説明に供するフローチャートである。
【図４０】第５の実施の形態によるキャッシュ読込み／書込み処理の説明に供するフローチャートである。
【符号の説明】
【０２９６】
１，６０，６５，７０，８０……計算機システム、２……ファイルアクセスクライアント、３、８１……ファイル共有サーバ、４……ストレージ装置、５……管理装置、１１……ＣＰＵ、１２……メモリ、２０……アプリケーションプログラム、２１，６２，８４……ファイルシステムプログラム、２２，６６，７１，８５……キャッシュ制御プログラム、２３……ＬＤＥＶマッピングテーブル、２４，８２……ＬＤＥＶキャッシュ管理テーブル、２５……ＬＵ割当て管理テーブル、２６，８３……ファイルディスクリプタ管理テーブル、２７……キャッシュ領域管理テーブル、２８，６１……ＬＤＥＶキャッシュ領域、２８Ａ……キャッシュ領域、３０……ディスクデバイス、９０Ａ，９０Ｂ……ｉノード、ＬＤＥＶ……論理デバイス、ＬＵ……仮想論理ユニット、ＦＳ……ファイルシステム。
【図１】
2008077290.tif 000003
【図２】
2008077290.tif 000004
【図３】
2008077290.tif 000005
【図４】
2008077290.tif 000006
【図５】
2008077290.tif 000007
【図６】
2008077290.tif 000008
【図７】
2008077290.tif 000009
【図８】
2008077290.tif 000010
【図９】
2008077290.tif 000011
【図１０】
2008077290.tif 000012
【図１１】
2008077290.tif 000013
【図１２】
2008077290.tif 000014
【図１３】
2008077290.tif 000015
【図１４】
2008077290.tif 000016
【図１５】
2008077290.tif 000017
【図１６】
2008077290.tif 000018
【図１７】
2008077290.tif 000019
【図１８】
2008077290.tif 000020
【図１９】
2008077290.tif 000021
【図２０】
2008077290.tif 000022
【図２１】
2008077290.tif 000023
【図２２】
2008077290.tif 000024
【図２３】
2008077290.tif 000025
【図２４】
2008077290.tif 000026
【図２５】
2008077290.tif 000027
【図２６】
2008077290.tif 000028
【図２７】
2008077290.tif 000029
【図２８】
2008077290.tif 000030
【図２９】
2008077290.tif 000031
【図３０】
2008077290.tif 000032
【図３１】
2008077290.tif 000033
【図３２】
2008077290.tif 000034
【図３３】
2008077290.tif 000035
【図３４】
2008077290.tif 000036
【図３５】
2008077290.tif 000037
【図３６】
2008077290.tif 000038
【図３７】
2008077290.tif 000039
【図３８】
2008077290.tif 000040
【図３９】
2008077290.tif 000041
【図４０】
2008077290.tif 000042