以下、本発明の実施の形態が適用された仮想View提供システムを説明する。
〈第1実施形態〉
先ず、本発明の第1実施形態について説明する。
図1は、本発明の第1実施形態の仮想View提供システムのシステム構成を説明するための図である。
図示するように、仮想View提供システム1000は、制御サーバ(計算機)100、クライアントノード200a〜n、およびストレージノード500a〜nを有する。制御サーバ100は、各クライアントノード200a〜nとネットワーク1を介して接続されている。また、制御サーバ100は、各ストレージノード500a〜nとネットワーク2を介して接続されている。
制御サーバ100は、ストレージノード500a〜nと連携して、ストレージノード500a〜nに格納されている情報資源であるファイルデータ(ファイル)を管理する。具体的には、制御サーバ100は、ストレージノード500a〜nと連携して、ファイルを管理するファイルシステム機能をクライアントノード200a〜nに対して提供する。
さらに、本実施形態の制御サーバ100は、仮想View機能を有している。仮想View機能とは、ストレージノード500a〜nに格納されているファイルデータのファイル名および格納位置を含む「ファイルデータを示す情報」を後述する分類条件毎にグループ分けして、その分類条件毎にグループ分けした情報(以下において「仮想View」という)を記憶して、かつ仮想Viewをクライアントノード200a〜nに対して提供する機能である。この仮想View機能により、クライアントノード200a〜nに対して、単一のViewとしてファイルシステムの物理的なディレクトリ構成を提供するのではなく、クライアント個別の仮想Viewを構築して提供することを可能にしている。
クライアントノード200a〜nは、制御サーバ100が提供するファイルシステム機能を利用してストレージノード100に格納されているファイルデータの入出力処理を行う。具体的には、クライアントノード200a〜nは、利用者からのストレージノード500a〜nに格納されたファイルに対するアクセス要求を受け付ける。クライアントノード200a〜nは、上記のアクセス要求を受け付けた場合、ファイルシステム機能を利用して、ストレージノード500a〜nに格納されているファイルに対するアクセス処理を行う。例えば、受け付けたアクセス要求がファイルの読出し処理の場合、クライアントノード200a〜nは、制御サーバ100にストレージノード500a〜nに格納されているファイルに対する読出し要求を行う。制御サーバ100は、上記の読出し要求にしたがい、ストレージノード500a〜nから要求されたファイルを読出す。制御サーバ100は、上記の要求したクライアントノード200a〜nに対して、読み出したファイルを出力する。このように、クライアントノード200a〜nは、制御サーバ100を介して、ストレージノード500a〜nに格納されたファイルを利用することができる。
また、クライアントノード200a〜nは、制御サーバ100が提供する仮想View機能を利用して、分類条件毎にグループ分けされた仮想Viewを取得する。具体的には、クライアントノード200a〜nは、利用者からの分類条件を示す情報の入力を受け付ける。クライアントノード200a〜nは、受け付けた分類条件を示す情報を制御サーバ100に出力して、制御サーバ100に対して、受け付けた分類条件の毎にグループ分けした「仮想View」を生成させる。また、クライアントノード200a〜nは、利用者からの仮想Viewの提示要求を受け付ける。クライアントノード200a〜nは、受け付けた仮想Viewの提示要求を制御サーバ100に出力して、制御サーバ100から仮想Viewを取得する。クライアントノード200a〜nは、取得した仮想Viewを利用者に提示する。
なお、クライアントノード200a〜nが仮想Viewを利用者に提示する具体的な方法について特に限定しない。例えば、クライアントノード200a〜nに表示装置(図示しない)を接続しておいて、仮想Viewを表示装置に表示させるようにしてもよい。また、クライアントノード200a〜nは、制御サーバ100と一体となった構成でもよい。また、クライアントノード200a〜nの数はいくつでもよい。
ストレージノード500a〜nは、情報資源であるファイルを格納するための装置であり、制御サーバ100を介してファイルを格納する。なお、ストレージノード500a〜nは、制御サーバ100と一体となった構成でもよい。また、ストレージノード500a〜nの数はいくつでもよい。例えば、複数のストレージノードを用意し、格納するファイルを各ストレージノードに分散格納することにより、分散ファイルシステムを構築することも可能である。また、RAID(Redundant Array of Independent Disks)方式に基づき、複数のストレージノードを利用して情報を冗長格納することも可能である。これにより、単一のストレージノードを利用する場合と比べて、より高信頼で高性能なファイルシステムを提供することも可能となる。また、ストレージノード500a〜nは、RAIDグループを構成する複数のディスク装置を有するディスクアレイシステムとして構成されていてもよい。
なお、本実施形態では、ネットワーク1およびネットワーク2の具体的構成について特に限定しない。また、ネットワーク1およびネットワーク2が同じネットワーク網として構成されていてもよい。また、例えば、ネットワーク1がLAN(Local Area Network)で構成されていて、ネットワーク2がSAN(Storage Area Network)で構成されているというように、ネットワーク1およびネットワーク2が別のネットワーク網として構成されていてもよい。
続いて、制御サーバの構成について図2を用いて説明する。
図2は、本実施形態の制御サーバ100のハードウェア構成を例示する説明図である。
制御サーバ100は、プログラムを実行するプロセッサ110と、プログラムならびにデータを一時的に格納するメモリ120と、プログラムならびにデータを永続的に格納可能な外部記憶装置130と、外部記憶装置130にアクセスするための外部記憶I/F140と、ネットワークで接続された他装置にアクセスするためのネットワークI/F150と、それらを接続するバス199と
を有する。
外部記憶装置130およびメモリ120には、外部記憶I/F140を制御するための外部記憶I/F制御プログラム160、ネットワークI/F150を制御するためのネットワークI/F制御プログラム170、ファイルシステム機能を提供するためのファイルシステム制御プログラム180、および仮想View機能を提供するための仮想View制御プログラム190が格納されている。仮想View制御190プログラムには、仮想View管理プログラム191、仮想ViewI/F制御プログラム192、および仮想View更新制御プログラム193の3つのプログラムが含まれる。また、外部記憶装置130およびメモリ120には、後述する仮想View管理表2000(図3参照)が格納されている。なお、上記各プログラムは、外部記憶装置130に格納されていて、プロセッサ110によりメモリ120の所定領域に読み出されるものとする。また、仮想View管理表2000は、外部記憶装置130に格納されていて、プロセッサ110によりメモリ120の所定領域に読み出される。
なお、本実施形態では、上記各プログラムは、制御サーバ100が有する外部記憶装置130に格納されている場合を例にしているが特にこれに限定されるものではない。上記各プログラムを記憶媒体に格納しておくようにしてもよい。この場合、例えば、制御サーバ100に記憶媒体に格納された各プログラムを読出し可能な外部装置を接続しておく。そして、制御サーバ100のプロセッサ110は、記憶媒体に格納された各プログラムを読出してメモリ120に格納するようにしてもよい。なお、記憶媒体には、フレキシブルディスクやCD−ROM、DVD−ROM、パンチカード、バーコードなどの符号が印刷された印刷物等のコンピュータが読み取り可能な種々の揮発性記録媒体や不揮発性記憶媒体を利用できる。また、制御サーバ100のプロセッサ110は、インターネット等のネットワークを介してメモリ120に上記各プログラムをダウンロードするようにしてもよい。
プロセッサ110は、上記各プログラムを実行することにより各種の処理を行う。具体的には、プロセッサ110は、外部記憶装置130に格納されている外部記憶I/F制御プログラム160をメモリ120の所定領域に読み出して実行することにより外部記憶装置140を制御する。また、プロセッサ110は、外部記憶装置130に格納されているネットワークI/F制御プログラム170をメモリ120の所定領域に読み出して実行することによりネットワークI/F150を制御する。同様に、プロセッサ110は、外部記憶装置130に格納されているファイルシステム制御プログラム180をメモリ120の所定領域に読み出して実行することによりファイルシステム機能を提供する。同様に、プロセッサ110は、外部記憶装置130に格納されている仮想View更新制御プログラム190をメモリ120の所定領域に読み出して実行することにより仮想View機能を提供する。なお、仮想View機能は、仮想View管理機能、仮想ViewI/F制御機能、および仮想View更新制御機能に分類される。
仮想View管理機能とは、プロセッサ110が仮想View管理プログラム191を実行することにより実現される機能で、後述する仮想View管理表2000(図3)を管理する機能である。また、仮想ViewI/F制御機能とは、プロセッサ110が仮想ViewI/F制御プログラム192を実行することにより実現される機能で、後述する仮想Viewに対する操作要求をクライアントノード200a〜nから受け付けて、その結果を要求元のクライアントノード200a〜nに返す機能である。仮想View更新制御機能は、ストレージノード500a〜nに格納されているファイルデータの更新等の処理を管理している仮想View管理表2000に反映させる機能である。なお、仮想View管理機能、仮想ViewI/F制御機能、および仮想View更新制御機能については後段で詳細に説明する。
ネットワークI/F150には、クライアントノード200a〜nと制御サーバ100とを接続しているネットワーク1、ならびにストレージノード500a〜nと制御サーバ100とを接続しているネットワーク2とが接続されている。そして、制御サーバ100は、ネットワークI/F制御プログラム170により、ネットワークI/F150を介して、クライアントノード200a〜nならびにストレージノード500a〜nとの間の通信を行う。
また、制御サーバ100がファイルシステム機能を提供する処理を実行する場合、ネットワークI/F制御プログラム170によりネットワークI/F150を制御してクライアントノード200a〜nからのファイルアクセス要求を受け付ける。また、制御サーバ100がファイルシステム機能を提供する処理を実行する場合、ネットワークI/F制御プログラム170によりネットワークI/F150を制御してストレージノード500a〜nに対してファイルアクセス要求を行う。なお、制御サーバ100は、ストレージノード500a〜nが対象データを識別できる要求形式でストレージノード500a〜nに対してアクセス要求を行う。
続いて、仮想Viewを格納するための仮想View管理表2000について図3を用いて説明する。なお、この仮想View管理表2000は、プロセッサ110が仮想View管理プログラム191を実行することにより管理されるリストもしくはデータベースである。
図3は、本実施形態の制御サーバ100が保持する仮想View管理表2000のデータ構造の一例を模擬的に示した図である。
図示するように、仮想View管理表2000は、仮想Viewを識別するための仮想View識別子を格納するエントリ2100と、エントリ2100に格納された仮想View識別子により特定される仮想Viewの構築条件を格納するためのエントリ2200と、エントリ2100に格納された仮想View識別子により特定される仮想Viewに登録されているファイル数を格納するエントリ2600と、エントリ2100に格納された仮想View識別子により特定される仮想Viewに格納されているファイルの実際に格納されている登録ファイルの格納場所を格納するエントリ2700a〜cと、を有する。また、構築条件を格納するためのエントリ2200は、構築条件を設定するための構築条件論理式を格納するエントリ2300、構築条件式を格納するエントリ2400、2500に分割されている。
エントリ2300には、エントリ2400およびエントリ2500に格納する複数の構築条件式と、それら構築条件式間の関係を規定する構築条件論理式を登録することができる。エントリ2300に格納する構築条件論理式の規定方法については、特に限定しない。構築条件論理式としては、例えば、条件式の否定や、条件式間の論理和ならびに論理積など、論理式で表現可能な方法を用いるとようにしてもよい。図示する例では、エントリ2400およびエントリ2500に格納された構築条件式の論理積が規定されている。
構築条件式を格納するエントリ2400(2500)は、属性を格納するエントリ2410(2510)、一致値を格納するエントリ2420(2520)、下限値を格納するエントリ2430(2530)、および上限値を格納するエントリ2440(2540)を有する。なお、下限値および上限値は、組で利用することとして、「一致値」および「下限値および上限値の組」は、どちらか一方を利用することとする。
図示する例では、エントリ2400の構築条件式1には、属性を格納するエントリ2410に「ファイル作成者」が格納されていて、一致値を格納するエントリ2420に有効な値「P」が格納されていて、下限値および上限値を格納するエントリ2430および2440に無効な値を意味する「NULL」が格納されている。すなわち、エントリ2400に格納されている構築条件式1は、ファイル作成者が「P」である全てのファイルを当該仮想Viewに対する構築条件として設定していることを示している。
また、構築条件式で上限値および下限値の組を利用する場合、双方に矛盾のない有効な値を設定する。ここで、上限値ならびに下限値のどちらか一方のみについては、無効な値を設定することにより、一方向に無限な範囲を指定することも可能である。
図示するエントリ2500に格納されている構築条件式2には、属性を格納するエントリ2510に「ファイル作成日」が格納されていて、一致値を格納するエントリ2520に無効な値を意味する「NULL」が格納されている。また、下限値を格納するエントリ2530に「2000年1月1日」という有効な値が格納されていて、上限値を格納するエントリ2540に無効な値を意味する「NULL」が格納されている。このエントリ2500に格納されている構築条件式2では、「2000年1月1日以降」に作成された全てファイルデータを当該仮想Viewに対する構築条件として設定していることを示している。
なお、仮想Viewの構築条件の設定方式には、図3で例示した方式に限定されるものではない。例えば、構築条件として、構築条件式と構築条件論理式を一体化させた論理式を登録するようにしてもよい。また、構築条件式で利用する属性には、ファイル属性情報や、ファイル実体情報など様々なものがある。例えば、構築条件としてファイル実態情報に含まれる「キーワード」を設定するようにしてもよい。また、構築条件としてファイル実態情報に含まれる「キーワード」と「ファイル属性情報」とを組合せるようにしてもよい。なお、ファイル属性情報とファイル実体情報については後述する。
エントリ2600には、上述した通り、当該仮想Viewの構築条件に合致した、当該仮想Viewに登録されているファイルの個数が格納される。そして、仮想View管理表2000のエントリ2700a〜cの数は、登録ファイル数と同数確保する。図示する例では、登録ファイル数を格納するエントリ2600に「3」が格納されている。そのため、仮想View管理表2000には、登録ファイル格納場所として3エントリ(2700a〜c)が確保されている。
エントリ2700a〜cに格納する登録ファイル格納場所には、登録ファイルの識別情報、すなわちそのファイルにアクセスするために必要な情報が格納される。具体的には、登録ファイルの識別情報として、制御サーバ100のファイルシステム制御プログラムにより実現されるファイルシステム機能がストレージノード500a〜nにアクセスする際に利用するパス名/ファイル名を登録するようにしてもよい。また、登録ファイルの識別情報として、ストレージノード500a〜nがローカルファイルシステム制御プログラムを介してアクセスするパス名/ファイル名をストレージノードの識別情報として登録するようにしてもよい。図示する例では、前者の方式に従い、エントリ2700a〜cに格納する登録ファイル格納場所に登録ファイルのパス名/ファイル名を格納している。具体的には、エントリ2700aには「/発明/発明A/発明A明細書」が格納され、エントリ2700bには「/特許出願/発明A出願書類」が格納され、エントリ2700cには「/特許出願/発明B出願書類」が格納されている。
なお、上述した仮想View管理表2000のデータ構造は例示に過ぎない。例えば、構築条件のエントリや登録ファイル格納場所のエントリを別表にして、仮想View管理表にはその別表への参照情報のみを登録するようにしてもよい。また、本実施形態では、制御サーバ100が仮想View管理表2000を保持する場合を例にするが、特にこれに限定するものではない。仮想View管理表2000をストレージノード500a〜nに保持させるようにしてもよい。
続いて、ストレージノード500a〜nのハードウェア構成について図4を用いて説明する。
図4は、本実施形態のストレージノード500aのハードウェア構成を説明するための図である。なお、ストレージノード500b〜nは、ストレージノード500aと同様の構成を有するため説明を省略する。
ストレージノード500aは、プログラムを実行するプロセッサ510と、プログラムならびにデータを一時的に格納するメモリ520と、プログラムならびにデータを永続的に格納可能な外部記憶装置530と、外部記憶装置520にアクセスするための外部記憶I/F540と、ネットワークで接続された他装置にアクセスするためのネットワークI/F550と、それらを接続するバス599とを有する。
外部記憶装置530およびメモリ520には、外部記憶I/F540を制御する外部記憶I/F制御560プログラムと、ネットワークI/F550を制御するネットワークI/F制御プログラム570と、ストレージノード500aにおけるファイルデータを制御するローカルファイルシステム制御プログラム580とが格納されている。具体的には、上記各プログラムは、外部記憶装置530に格納されていて、プロセッサ510によりメモリ520の所定領域に読み出される。
なお、本実施形態では、上記各プログラムは、ストレージノード500aが有する外部記憶装置530に格納されている場合を例にしているが特にこれに限定されるものではない。上記各プログラムを記憶媒体に格納しておくようにしてもよい。この場合、例えば、ストレージノード500aに記憶媒体に格納された各プログラムを読出し可能な外部装置を接続しておく。そして、ストレージノード500aのプロセッサ510は、記憶媒体に格納された各プログラムを読出してメモリ520に格納するようにしてもよい。なお、記憶媒体には、フレキシブルディスクやCD−ROM、DVD−ROM、パンチカード、バーコードなどの符号が印刷された印刷物等のコンピュータが読み取り可能な種々の揮発性記録媒体や不揮発性記憶媒体を利用できる。また、制御サーバ500aのプロセッサ510は、インターネット等のネットワークを介してメモリ520に上記各プログラムをダウンロードするようにしてもよい。
プロセッサ510は、上記各プログラムを実行することにより各種の処理を行う。具体的には、プロセッサ510は、外部記憶装置530に格納されている外部記憶I/F制御プログラム560をメモリ520の所定領域に読み出して実行することにより外部記憶I/F540を制御する。また、プロセッサ510は、外部記憶装置530に格納されているネットワークI/F制御プログラム570をメモリ520の所定領域に読み出して実行することによりネットワークI/F550を制御する。また、プロセッサ510は、外部記憶装置530に格納されているローカルファイルシステム制御プログラム580をメモリ520の所定領域に読み出して実行することにより、自ストレージノード500a上の外部記憶装置530を利用してファイルシステムを構築する。すなわち、プロセッサ510は、ローカルファイルシステム制御プログラム580により、自ストレージノード500aの外部記憶装置530に格納されているローカルファイルデータに対するアクセス処理を行う。
ネットワークI/F550は、制御サーバ100と接続されているネットワーク2に接続されている。そして、ストレージノード500aは、ネットワークI/F制御プログラム570により、ネットワークI/F550を介して制御サーバ100と通信を行う。
また、ストレージノード500aは、ローカルファイルデータに対するアクセス処理に際し、ネットワークI/F制御プログラム570により制御されるネットワークI/F550を介して制御サーバ100からのアクセス要求を受け付ける。このアクセス要求は、ストレージノード500a上のファイルデータが識別可能な形式で行われる。なお、このアクセス要求の具体な形式について特に限定しない。例えば、ストレージノード500aがローカルファイルデータにアクセス処理する際に用いるファイルのパス名/ファイル名を利用した形式でアクセス要求を受け付けるようにしてもよい。そして、このアクセス要求の結果は、当該ストレージノード500aから、要求された際の手順と逆の手順で制御サーバ100に返される。
外部記憶装置530は、ローカルファイルシステム制御プログラム580により管理されるファイルデータを格納する装置である。なお、外部記憶装置530の具体的な構成については特に限定しないが、例えば、外部記憶装置530には、ディスク装置を用いることができる、また、外部記憶装置530は、複数のディスク装置により構成されていてもよい。
続いて、クライアントノード200a〜nのハードウェア構成について図5を用いて説明する。
図5は、本実施形態のクライアントノード200aのハードウェア構成を説明するための図である。なお、クライアントノード200b〜nは、クライアントノード200aと同様の構成を有するため説明を省略する。
図示するように、クライアントノード200aは、プログラムを実行するプロセッサ210と、プログラムならびにデータを一時的に格納するメモリ220と、プログラムならびにデータを永続的に格納可能な外部記憶装置230と、外部記憶装置230にアクセスするための外部記憶I/F240と、ネットワークで接続された他装置にアクセスするためのネットワークI/F250と、それらを接続するバス299とを有する。
外部記憶装置230およびメモリ220には、外部記憶I/F240を制御する外部記憶I/F制御260プログラムと、ネットワークI/F250を制御するネットワークI/F制御プログラム270と、制御サーバ100が提供のファイルシステム機能へアクセスするためのファイルシステムアクセス制御プログラム280と、制御サーバ100が提供する仮想View機能を利用するための仮想Viewアクセス制御プログラム290とが格納されている。具体的には、上記各プログラムは、外部記憶装置230に格納されていて、プロセッサ210によりメモリ220の所定領域に読み出される。
なお、本実施形態では、上記各プログラムは、クライアントノード200aが有する外部記憶装置230に格納されている場合を例にしているが特にこれに限定されるものではない。上記各プログラムを記憶媒体に格納しておくようにしてもよい。この場合、例えば、クライアントノード200aに記憶媒体に格納された各プログラムを読出し可能な外部装置を接続しておく。そして、クライアントノード200aのプロセッサ210は、記憶媒体に格納された各プログラムを読出してメモリ220に格納するようにしてもよい。なお、記憶媒体には、フレキシブルディスクやCD−ROM、DVD−ROM、パンチカード、バーコードなどの符号が印刷された印刷物等のコンピュータが読み取り可能な種々の揮発性記録媒体や不揮発性記憶媒体を利用できる。また、クライアントノード200aのプロセッサ210は、インターネット等のネットワークを介してメモリ220に上記各プログラムをダウンロードするようにしてもよい。
プロセッサ210は、上記各プログラムを実行することにより各種の処理を行う。具体的には、プロセッサ210は、外部記憶装置230に格納されている外部記憶I/F制御プログラム260をメモリ220の所定領域に読み出して実行することにより外部記憶I/F240を制御する。また、プロセッサ210は、外部記憶装置230に格納されているネットワークI/F制御プログラム270をメモリ220の所定領域に読み出して実行することによりネットワークI/F250を制御する。また、プロセッサ210は、外部記憶装置230に格納されているファイルシステムアクセス制御プログラム280をメモリ220の所定領域に読み出して実行することにより、制御サーバ100が提供のファイルシステム機能を利用する。また、プロセッサ210は、外部記憶装置230に格納されている仮想Viewアクセス制御プログラム290をメモリ220の所定領域に読み出して実行することにより、制御サーバ100が提供する仮想View機能を利用する。
プロセッサ210は、ファイルシステムアクセス制御プログラム280により、制御サーバ100を介してストレージノード500a〜nのファイルにアクセスして、ファイルデータの読出し処理、書き込み処理、および削除処理等のアクセス処理を行う。また、プロセッサ210は、仮想Viewアクセス制御プログラム290により、制御サーバ100に対して、後述する仮想View管理表2000(図3参照)の作成要求や仮想View取得要求等の各種要求を行う。また、プロセッサ210は、仮想Viewアクセス制御プログラム290により、上記の要求に応じて制御サーバ100が返信する情報を取得して利用者に提示する。
ネットワークI/F250は、制御サーバ100と接続されているネットワーク1に接続されている。そして、クライアントノード200aは、ネットワークI/F制御プログラム270により、ネットワークI/F250を介して制御サーバ100と通信を行う。ファイルシステムアクセス制御プログラム280により実行される制御サーバ100へのアクセス処理は、ネットワークI/F制御プログラム270により制御されるネットワークI/F250を介して行われる。
続いて、本実施形態の仮想View提供システムが提供する仮想Viewとストレージノード500a〜nに格納されているファイルデータとの対応関係について図6を用いて説明する。
図6は、本実施形態の制御サーバが提供する仮想Viewとストレージノードに格納されているファイルデータとの対応関係を説明するための図である。
図示するように、制御サーバ100上に仮想View3000があり、ストレージノード500にファイルデータが格納されている。仮想View3000とは、図3で仮想View管理表2000として示した仮想Viewを模式化したものである。制御サーバ100は、クライアントノード200a〜nからの仮想View取得要求を受け付けて、仮想View3000の内容を示す情報をクライアントノード200a〜nに出力する。クライアントノード200a〜nは、仮想View3000に示す情報を利用者に提示する。また、クライアントノード200a〜nは、仮想Viewアクセス制御プログラム290により、制御サーバ100を介して仮想View3000に示されているファイルにアクセスすることができる。具体的には、クライアントノード200a〜nは、仮想Viewアクセス制御プログラム290により、仮想View3000に表示されたファイルを指定したアクセス要求を制御サーバ100に送信する。制御サーバ100は、ファイルシステム制御プログラム180により、仮想View管理表2000内の登録ファイル格納場所2700a〜cに登録されている情報を用いてアクセス要求されたファイルにアクセスする。
また、仮想View3000は、制御サーバ100に複数作成することが可能である。さらに、一つのファイルが複数の仮想Viewに登録されてもよい。また、複数のストレージノードが存在する場合は、各ストレージノード上に保存されているファイルを対象にした仮想View3000、すなわちストレージノードを跨った仮想Viewを作成することも可能である。
図示する例では、ストレージノード500a〜n上で提供されるファイルシステム機能のディレクトリ構造は、ルートディレクトリ「/」4000を頂点としている。ルートディレクトリ「/」4000のサブディレクトリとして「発明」ディレクトリ4100および「特許出願」ディレクトリ4200がある。「発明」ディレクトリ4100内には、さらにそのサブディレクトリとして「発明A」ディレクトリ4300および「発明B」ディレクトリ4400がある。「発明A」ディレクトリ4300内には、「発明Aアイデアメモ」4310、「発明A明細書」4320、および「発明A図面」4330の3つのファイルがある。同様に、「発明B」ディレクトリ4400内には、「発明Bアイデアメモ」4410、「発明B明細書」4420、および「発明B図面」4430の3つのファイルがある。また、「特許出願」ディレクトリ4200内には、「発明A出願書類」4210、および「発明B出願書類」4220の2つのファイルがある。
図示する仮想View3000は、仮想View識別子2100が「1」であり、構築条件2200に「ファイル作成者」が「P」であり、かつ「ファイル作成日」が「2000年1月1日以降」のファイルであることを示している。また、仮想View3000は、登録ファイル数2500が「3」であり、登録ファイルに対応する登録ファイル格納場所2700a〜cとして、3つのファイルに対する「パス名/ファイル名」がそれぞれ示されている。具体的には、ファイル名が「発明A明細書」4320であるファイルの登録ファイル格納場所2700aは、「/発明/発明A/発明A明細書」であることを示している。ファイル名が「発明A出願書類」4210であるファイルの登録ファイル格納場所2700bは、「/特許出願/発明A出願書類」であることを示している。ファイル名が「発明B出願書類」4220であるファイルの登録ファイル格納場所2700cは、「/特許出願/発明B出願書類」であることを示している。
続いて、本実施形態の仮想View3000を利用者に利用させるためのI/F(仮想View操作I/F)について図6を用いて説明する。
制御サーバ100は、仮想ViewI/F制御プログラム192により、仮想View操作I/F3100を、クライアントノード200a〜nを介して利用者に提供する。仮想View操作I/F3100により利用者から受け付ける操作処理には、仮想View作成要求3110、仮想View構築条件設定要求3120、仮想View更新要求3130、仮想View取得要求3140、および仮想View削除要求3150の5つの操作処理がある。なお、これらの5つの具体的な処理フローについては、後述する。
続いて、制御サーバ100が仮想ViewI/F制御プログラム192
により、利用者から受け付ける5つの操作処理(3110、3120、3130、3140、3150)で利用するパラメータについて説明する。
図7は、本実施形態の制御サーバが用いる入出力パラメータの一例を示した図である。
図示する入出力パラメータ5000には、入力パラメータ5100と出力パラメータ5200とが含まれる。
入力パラメータ5100には、どの仮想View操作を行うのかを識別するための操作種別5110、操作対象となる仮想Viewを識別するための仮想View識別子5120、および各操作で必要な情報5130が含まれる。
操作種別5110には、仮想ViewI/F制御プログラム192により提供される5つの操作処理(3110、3120、3130、3140、3150)を識別するための情報が格納される。各操作で必要な情報5130は、各操作により異なる。例えば、各操作で必要な情報5130には、仮想View作成要求3110および仮想View構築条件設定要求3120の場合、仮想Viewの構築条件が格納される。構築条件の格納形式は、仮想View管理表2000にある構築条件2200に沿った形式が考えられる。ただし、この形式のみにはよらず、他の形式を用いてもよい。
出力パラメータ5200には、要求された操作の結果を知らせるための操作結果5210、および操作で得られた情報5220が含まれる。操作結果5210には、操作が成功したか失敗したかを示す情報が格納される。また、操作結果5210には、操作が失敗した場合はどのような理由でその操作が失敗したかを示す情報が格納される。操作で得られた情報5220は、各操作により異なる。例えば、操作で得られた情報5220には、仮想View作成3110の場合、作成した仮想Viewの識別子が格納される。また、例えば、操作で得られた情報5220には、仮想View取得3140の場合、当該仮想Viewの仮想View管理表2000で管理されている情報が格納される。なお、この場合、仮想View管理表2000内の全ての情報を格納されるようにしてもよいし、一部の情報のみを格納されるようにしてもよい。
続いて、本実施形態の制御サーバ100が行う仮想View(仮想View管理表2000に格納されている情報)を更新する契機について説明する。仮想View更新の契機は、ストレージノード500a〜nに対するファイルアクセス操作を契機(更新契機3200)する場合、および、前述の仮想View更新要求3130を契機(更新契機3300)とする場合の2通りの契機がある(図6参照)。そして、制御サーバ100は、上記の2つの契機により保持する仮想View管理表2000の内容を更新する。具体的には、制御サーバ100は、ストレージノード500a〜nのファイルデータへのアクセス処理を行った場合に仮想View管理表2000を更新する処理を行う。また、制御サーバは、利用者からの仮想View更新要求3130をクライントノード200a〜nを介して受け付けた場合に仮想View管理表2000を更新する処理を行う。なお、これら2つの更新契機における仮想View管理表2000を更新する具体的な処理フローについては、後述する。
続いて、ストレージノード500a〜nに格納されたファイルに対するファイルアクセス操作を契機(更新契機3200)として行う仮想Viewの更新について説明する。
制御サーバ100は、ストレージノード500a〜nのファイルにアクセスした場合、そのアクセスの種類により仮想Viewの更新の必要があるか否かを判断する。ここで、制御サーバ100が仮想Viewの更新の必要があるか否かを判断する基準について図8を用いて説明する。
図8は、仮想Viewの更新・登録が必要であるか否かを判断するための基準を例示した図である。
一覧6000では、仮想View更新において、仮想Viewの更新が必要か否かの観点でファイルアクセス操作を分類している。
図示する一覧6000において、仮想Viewの更新が必要なファイルアクセス操作6100として、ファイル書き込み操作6110およびファイル削除操作6120を挙げている。これらのファイル操作を更新の対象としたのは、これらのファイル操作がストレージノード500a〜nに格納されているファイルの内容を変更する処理であるためである。なお、図示していないが、仮想View更新が必要なファイルアクセス操作6100には、ファイル作成操作、ディレクトリ作成操作、ディレクトリ削除操作、ディレクトリ情報設定操作、ファイル名/ディレクトリ名改名操作、ファイル/ディレクトリ複製操作、ファイル/ディレクトリ移動操作、ファイルへのリンク作成操作、ファイルへのリンク削除操作、書き込み途中状態の情報を同期書き込みさせる同期操作、ファイルを閉じる操作などが含まれる。
また、仮想View更新が不要なファイルアクセス操作6200として、ファイル読み出し操作6210を挙げている。これは、このファイル操作がストレージノード500a〜nに格納されているファイルの内容を変更する処理ではなく、仮想Viewを更新する必要がないためである。なお、図示していないが、仮想View更新が不要なファイルアクセス操作6200には、ファイルを開く操作、ファイル属性取得操作、ディレクトリ情報取得操作、ファイルアクセス権限確認操作、ファイルへのリンク情報読み出し操作、ファイル情報取得操作などが含まれる。
続いて、本実施形態のストレージノード500a〜nに格納されるファイルのデータ構成について説明する。
図9は、本実施形態のストレージノードに格納されるファイルのデータ構成を模擬的に示した図である。
図示するようにファイル7000は、ファイル属性情報7100とファイル実体情報7200とを有する。ファイル属性情報7100とは、このファイルのメタ情報に相当する。ファイル属性情報7100には、ファイル名7110、ファイル作成日7120、ファイル作成者7130、およびファイル格納場所7140が含まれる。また、ファイル属性情報7100には、図示しないが、このファイルの物理的な格納場所情報、アクセス制御情報、ファイル所有者、所属グループ、大きさ、最終アクセス時刻、最終更新時刻、最終変更時刻、物理的に利用している記憶領域の大きさ、キーワード等の情報が含まれていてもよい。
また、ファイル属性情報は、ファイルシステム制御180プログラムにより更新・管理される「システム属性」、および、利用者から受け付けた要求により登録・更新される属性であって、ファイルシステム制御プログラム180が管理だけ行う「ユーザ属性」の二つに分類できる。なお、システム属性として扱われる属性については、ファイルシステム制御プログラム180により決まる。ユーザ属性として扱われる属性については、利用者による拡張も可能なものにする。
ファイル実体情報7200とは、当該ファイルの実データのバイトストリームに相当する。ファイル実体情報7200は、ストレージノード500上の外部記憶装置530に格納される。ファイル属性情報7100は、ストレージノード500上の外部記憶装置530に格納する方式の他、制御サーバ100上の外部記憶装置130に格納する方式が考えられる。ここで、ストレージノード500aに格納する情報については、ストレージノード500b〜nについても同様に格納することができる。
なお、ファイル書き込み操作6110およびファイル読み出し操作6210は、図9で示すファイル属性情報7100に対する操作ならびにファイル実体情報7200に対する操作の両方に相当する。ファイル属性情報7100に対するファイル書き込み操作6110としては、ファイル名7110の変更操作やファイル格納場所7140の変更操作などが相当する。ファイル実体情報7200に対するファイル書き込み操作6110としては、実データに対する上書き更新などが相当する。一方で、ファイル読み出し操作6210としては、ファイル属性情報7100あるいはファイル実体情報7200への参照操作が相当する。
また、ファイル削除操作6120は、ファイル7000に対する操作に相当する。すなわち、ファイル削除操作6120は、当該ファイル7000のファイル属性情報7100とファイル実体情報7200とが共に削除されることを意味する。ファイル実体情報7200の全削除、もしくはファイル属性情報7100あるいはファイル実体情報7200の一部分を削除する操作については、ファイル書き込み操作6110として考える。
本実施形態では、ファイル属性情報7100ならびにファイル実体情報7200に対して、ファイル書き込み操作6110が行われた場合と、ファイル削除操作6120が行われた場合に、仮想Viewの更新を行うことにしている。なお、ファイル書き込み操作6110には、ファイル7000を新規に格納した場合や、ファイル属性情報7100の一部を変更した場合、例えば、ファイル格納場所7140を変更した場合などがある。
続いて、本実施形態のクライアントノード200a〜nが制御サーバ100に対して行う仮想View情報の操作処理について説明する。
図10は、本実施形態のクライアントノードが行う仮想View情報の操作処理を説明するためのフローチャートである。
なお、以下の処理は、クライアントノード200a〜nのプロセッサ210が仮想Viewアクセス制御プログラム290を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため仮想Viewアクセス制御プログラム290を動作主体として記載する。
仮想Viewアクセス制御プログラム290は、利用者からの操作要求の入力を受け付ける。具体的には、仮想Viewアクセス制御プログラム290は、利用者からの入力パラメータ5100(図7参照)を受け付ける。仮想Viewアクセス制御プログラム290は、受け付けた入力パラメータ5100を引数として設定した仮想View操作要求を生成する。仮想Viewアクセス制御プログラム290は、入力パラメータ5100を設定した仮想View操作要求を制御サーバ100に出力する(S10)。
なお、本実施形態では、利用者からの操作要求の入力を受け付ける手段について特に限定しない。例えば、仮想Viewアクセス制御プログラム290は、図示しない表示装置に操作メニュー画面を表示して、利用者からの操作要求の入力を受け付けるようにしてもよい。
上記の仮想View操作要求を受け付けた制御サーバ100は、仮想ViewI/F制御プログラム192により、受け付けた仮想View操作要求に対応する処理を行い、その処理の結果を示す情報を仮想Viewアクセス制御プログラム290に出力する。上記の結果を示す情報には出力パラメータ5200(図7参照)が含まれているものとする。なお、制御サーバ100が行う受け付けた仮想View操作要求に対する処理については後述する。
そして、仮想Viewアクセス制御プログラム290は、制御サーバ100からの結果を示す情報を受信して、その情報に含まれる出力パラメータ5200を利用者に提示する(S11)。
続いて、本実施形態の制御サーバ100が行う仮想Viewアクセス処理について図11を用いて説明する。
図11は、本実施形態の制御サーバ100が行う仮想Viewアクセス処理を説明するためのフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が各プログラム(仮想ViewI/F制御プログラム192、仮想View管理プログラム191、仮想View更新制御プログラム193)を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため各プログラム(仮想ViewI/F制御プログラム192、仮想View管理プログラム191、仮想View更新制御プログラム193)を動作主体として記載することとする。
仮想ViewI/F制御プログラム192は、クライアントノード200a〜nが出力する仮想View操作要求を受け付ける。仮想ViewI/F制御プログラム192は、受け付けた仮想View操作要求に引数として設定されている入力パラメータ5100(図7)を参照して、受け付けた操作要求の操作種別を判定する(S20)。
判定の結果、受け付けた操作要求が仮想View作成要求3110であった場合、仮想ViewI/F制御プログラム192は、仮想View管理プログラム191を呼び出して、仮想View管理プログラム191に仮想View作成処理を実行させる(S21)。なお、S21の処理は、後述する図12で説明する。
判定の結果、受け付けた操作要求が仮想View構築条件設定要求3120であった場合、仮想ViewI/F制御プログラム192は、仮想View管理プログラム191を呼び出して、仮想View管理プログラム191に仮想View構築条件設定処理を実行させる(S22)。なお、S22の処理は、後述する図13で説明する。
判定の結果、受け付けた操作要求が仮想View更新要求3130であった場合、仮想ViewI/F制御プログラム192は、仮想View更新制御プログラム193を呼び出して、仮想View更新制御プログラム193に仮想View更新処理を実行させる(S23)。なお、S23の処理は、後述する図14で説明する。
判定の結果、受け付けた操作要求が仮想View取得要求3140であった場合、仮想ViewI/F制御プログラム192は、仮想View管理プログラム191を呼び出して、仮想View管理プログラム191に仮想View取得処理を実行させる(S24)。なお、S24の処理は、後述する図16で説明する。
また、判定の結果、受け付けた操作要求が仮想View削除要求3150であった場合、仮想ViewI/F制御プログラム192は、仮想View管理プログラム191を呼び出して、仮想View管理プログラム191に仮想View削除処理を実行させる(S25)。なお、S24の処理は、後述する図17で説明する。
上記S21〜25では、それぞれの処理が終わった場合、呼び出し元である仮想ViewI/F制御プログラム192の処理に戻る。
続いて、本実施形態の制御サーバ100が行う仮想View作成処理について図12を用いて説明する。
図12は、本実施形態の制御サーバ100が行う仮想View作成処理を説明するためのフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が仮想View管理プログラム191を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため仮想View管理プログラム191を動作主体として記載する。
仮想View管理プログラム191は、上述した図11のS21において仮想ViewI/F制御プログラム192に呼び出された後、はじめに、仮想View識別子を採番して、当該仮想Viewが利用する仮想View管理表2000用の領域をメモリ120上に確保する(S30)。ここで、仮想View識別子は一意な識別子を採番するようにする。この仮想View識別子の一意性を保証する範囲については特に限定しない。例えば、一つの制御サーバの中で一意性を保証するようにしてもよい。また、例えば、複数の制御サーバをグループ化した制御サーバ群あるいは全世界を一つの一意性保証範囲としてもよい。
続いて、仮想View管理プログラム191は、S30で確保したメモリ120の領域上にある仮想View管理表2000(図3参照)のエントリ2100にS30で採番した仮想View識別子を格納する(S31)。
その後、仮想View管理プログラム191は、上記S20で受け付けた仮想View操作要求に引数として設定されている入力パラメータ5100(図7参照)の「各操作で必要な情報5130」の中に構築条件が登録されている否かを判定する(S32)。
仮想View管理プログラム191は、上記判定の結果、上記入力パラメータ5100の「各操作で必要な情報5130」の中に構築条件が登録されている場合、S33の処理に進み、登録されていない場合にはS35の処理に進む。
S33では、仮想View管理プログラム191は、上記の登録されている構築条件の中の構築条件論理式を仮想View管理表2000のエントリ2300に格納してS34に進む。
S34では、仮想View管理プログラム191は、上記の登録されている構築条件の中の構築条件式を仮想View管理表2000のエントリ2400に格納してS35に進む。なお、構築条件式が複数あれば、その数だけ構築条件式を対応するエントリ(例えばエントリ2500)に格納する。
S35では、仮想View管理プログラム191は、出力パラメータ5200(図7参照)を生成する。具体的には、仮想View管理プログラム191は、出力パラメータ5200の「操作結果5210」に上記の操作結果、すなわち「仮想View作成処理が成功したこと、或いは、失敗したことを示す情報」を登録する。また、仮想View管理プログラム191は、出力パラメータ5200の「操作で得られた情報5220」に、作成した仮想Viewの仮想View識別子を登録する(仮想View管理表2000に格納した仮想View識別子を登録する)。その後、仮想View管理プログラム191は、呼び出し元である仮想ViewI/F制御プログラム192の処理に戻る。
続いて、本実施形態の制御サーバ100が行う仮想View構築条件設定処理について図13を用いて説明する。
図13は、本実施形態の制御サーバ100が行う仮想View構築条件設定処理を説明するためのフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が仮想View管理プログラム191を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため仮想View管理プログラム191を動作主体として記載する。
仮想View管理プログラム191は、上述した図11のS22において、仮想ViewI/F制御プログラム192に呼び出された後、仮想View操作要求に引数として設定されている入力パラメータ5100(図7参照)の中の仮想View識別子5120と、メモリ120(または外部記憶装置130)に保持している仮想View管理表2000とを照合する。そして、仮想View管理プログラム191は、入力パラメータ5100で指定されている仮想View識別子5120を持つ仮想Viewが存在しているか否かを調べる(S40)。
具体的には、仮想View管理プログラム191は、入力パラメータ5100に指定されている仮想View識別子5120が格納された仮想View管理表2000が在るか否かを調べる。仮想View管理プログラム191は、入力パラメータ5100に指定された仮想View識別子5120が格納された仮想View管理表2000が在る場合にS41に進む。一方、仮想View管理プログラム191は、入力パラメータ5100に指定された仮想View識別子5120が格納された仮想View管理表2000が存在しない場合にS44に進む。
S41では、仮想View管理プログラム191は、仮想View操作要求の引数として設定されている入力パラメータ5100の中の「各操作で必要な情報4130」を調べ、対応する仮想Viewに対する構築条件2200が登録されているか否かを調べる(S41)。そして、仮想View管理プログラム191は、上記の構築条件2200が登録されている場合には、S42の処理に進む。仮想View管理プログラム191は、上記の構築条件2200が登録されていない場合には、S44の処理に進む。
S42〜S43では、仮想View管理プログラム191は、上述した図12で示したS33〜S34と同様の処理を行い、S44の処理に進む。なお、S42〜S43において、仮想View管理プログラム191が構築条件2200を設定する際、既に仮想View管理表2000の該当するエントリに構築条件が登録されている場合もある。このような場合、仮想View管理プログラム191は、既に登録されている情報に対して上書き処理を行う。なお、仮想View管理プログラム191は、構築条件2200の上書きを行う際、対象となる全ての構築条件論理式や構築条件式のエントリを上書きしてしまうようにしてもよいし、一部のエントリのみを上書きするようにしてもよい。
S44では、仮想View管理プログラム191は、図12のS35と同様に、出力パラメータ5200(図7参照)を生成する。例えば、仮想View管理プログラム191は、S40において、操作要求の対処である仮想Viewが存在しないと判定した場合には、出力パラメータ5200の操作結果5210に「仮想Viewが存在しないため要求する処理が失敗した旨」を示す情報を登録する。その後、仮想View管理プログラム191は、呼び出し元である仮想ViewI/F制御プログラム192の処理に戻る。
続いて、本実施形態の制御サーバ100が行う仮想View更新処理について図14を用いて説明する。
図14は、本実施形態の制御サーバ100が行う仮想View更新処理を説明するためのフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が各プログラム(仮想View更新制御プログラム193、ファイルシステム制御プログラム180、仮想View管理プログラム191)を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため各プログラム(仮想View更新制御プログラム193、ファイルシステム制御プログラム180、仮想View管理プログラム191)を動作主体として記載する。
以下で行う処理ステップは、仮想View更新制御プログラム193が上述したS23において仮想ViewI/F制御プログラム192に呼び出された場合に開始される処理である。仮想View更新制御プログラム193は、ファイルシステム制御プログラム180にストレージノード500a〜nに既に格納されているファイル群を調べさせる。そして、仮想View更新制御プログラム193は、仮想View管理プログラム191により管理されている仮想View管理表2000のエントリ2200の構築条件に合致しているファイルの情報を仮想View管理表2000に反映させる処理を行う。すなわち、本ステップでは、利用者からの更新要求を契機とした仮想Viewの更新処理を行う。
ここで、ファイル群の調べ方は、全検索、部分検索などどのような方法でもよい。部分検索を行う場合は、当該操作要求の引数として設定されている入力パラメータ5100の各操作で必要な情報5130の中に検索範囲を別途指定する必要がある。検索順序については任意でよいが、無限ループに陥らないようにする。
はじめに、仮想View更新制御プログラム193は、ファイルシステム制御プログラム180に検索対象のファイル群の中から、まだ検索していないファイルがあるかどうかを調べさせる(S50)。仮想View更新制御プログラム193は、ファイルシステム制御プログラム180に検索対象のファイル群を全て検索させ終えた場合に、S54の処理に進む。一方、仮想View更新制御プログラム193は、ファイルシステム制御プログラム180が検索していないファイルを検出した場合にS51の処理に進む。
S54において、仮想View更新制御プログラム193は、出力パラメータ5200の操作結果5210に当該操作結果を登録して、呼び出し元である仮想ViewI/F制御プログラム192の処理に戻る。
S51では、仮想View更新制御プログラム193は、更新する対象の仮想Viewであって、かつ上記の検出したファイルと適合確認を行っていない仮想Viewが在るか否かについて仮想View管理表2000を利用して確認する(S51)。なお、適合確認とは、上記の検出したファイルにより更新が必要な仮想Viewが在るか否かの確認をいう。仮想View更新制御プログラム193は、上記の更新する対象の仮想Viewであってかつ検出した対象ファイルとの適合確認を行っていない仮想Viewを検出した場合、S52の処理に進む。一方、仮想View更新制御プログラム193は、上記の検出した対象ファイルとの適合確認を行っていない仮想Viewを検出しなかった場合、S50の処理に戻る。ここで、更新する対象の仮想Viewの調べ方は、ファイル群の調べ方同様、どのような方法、手順でもよい。
S52では、仮想View更新制御プログラム193は、S51で検出された仮想Viewの構築条件2200に、対象ファイルが適合するのか否かの確認を行う(S52)。そして、仮想View更新制御プログラム193は、対象ファイルが当該仮想Viewの構築条件に適合する場合にS53の処理に進む。仮想View更新制御プログラム193は、対象ファイルが当該仮想Viewの構築条件に適合しない場合にS51の処理に戻る。
S53では、仮想View更新制御プログラム193は、仮想View管理プログラム191に対して、仮想View管理表2000に対象ファイルの情報を登録・更新する処理(処理A)を要求する(S53)。仮想View更新制御プログラム193は、「処理A」を要求する際、処理対象となる仮想Viewの仮想View識別子およびファイルの識別情報を入力パラメータとして仮想View管理プログラム191に渡す。ここで、ファイルの識別情報には、ファイルのファイル名および登録ファイルの格納場所が含まれていることとする。なお、「処理A」のフローについては、後述する。「処理A」が終了したら、仮想View更新制御プログラム193は、ステップS51の処理に戻る。なお、上記の処理フローは、検索対象ファイルを調べ終えるまで繰り返し行われる。
続いて、図14のS53で示した「処理A」のフローについて図15を用いて説明する。
図15は、本実施形態の制御サーバが行う仮想View管理表に対する情報登録処理ならびに更新処理を説明するためのフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が各プログラム(仮想View管理プログラム191、仮想View更新制御プログラム193)を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため各プログラム(仮想View管理プログラム191、仮想View更新制御プログラム193)を動作主体として記載する。
仮想View管理プログラム191は、図14のS53で仮想View更新制御プログラム193より呼び出されて以下の処理ステップを開始する。仮想View管理プログラム191は、以下の処理ステップにおいて、S53で取得した入力パラメータの引数で指定された仮想View識別子が格納されている仮想View管理表2000に、引数で指定されたファイルの情報を登録・更新する処理を行う。
はじめに、仮想View管理プログラム191は、図14のS53で取得した入力パラメータの引数で指定された仮想View識別子が格納されている仮想View管理表2000(図3参照)を特定する。仮想View管理プログラム191は、上記入力パラメータの引数で指定されたファイルの識別情報に含まれるファイル格納場所が、特定した仮想View管理表2000のエントリ2700a〜nに既に登録されているか否かを判定する(S60)。
S60での判定により既に登録されていると判定した場合、仮想View管理プログラム191は、既に登録されているファイル格納場所を上書きすることで仮想View管理表2000の更新を行う(S61)。
一方、S60での判定により対象ファイルが登録されていないと判定された場合、対象ファイルの格納場所を対応する仮想View管理表2000内の登録ファイル格納場所を格納する該当するエントリ(例えば、エントリ2700)に登録し(S62)、当該仮想View管理表2000の登録ファイル数を格納するエントリ2600の値をインクリメントする(S63)。
続いて、本実施形態の制御サーバ100が行う仮想View取得処理について図16を用いて説明する。
図16は、本実施形態の制御サーバ100が行う仮想View取得処理を説明するためのフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が仮想View管理プログラム191を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため仮想View管理プログラム191を動作主体として記載する。
仮想View管理プログラム191は、上述した図11のS24において、仮想ViewI/F制御プログラム192に呼び出されて以下で説明する仮想View取得処理を開始する。仮想View取得処理では、入力パラメータで指定された仮想View識別子を持つ仮想View管理表2000の情報を提供する処理を行う。ここで、情報の提供形式としては、当該仮想Viewの仮想View管理表2000の全データを提供する方式でもよいし、その一部のみを提供する方式でもよい。
さて、仮想View管理プログラム191は、はじめに、仮想View操作要求に引数として設定されている入力パラメータ5100(図7参照)の仮想View識別子5120を調べ、調べた仮想識別子5120および仮想View管理表2000を利用して、当該仮想View識別子を持つ仮想Viewが存在するのか否かを判定する(S70)。
仮想View管理プログラム191は、上記の仮想View識別子を持つ仮想Viewが存在すると判定した場合、出力パラメータ5300の「操作結果5310」に当該操作の操作結果を格納する。ここで、操作結果には、要求された仮想View取得処理が成功した旨、すなわち「仮想View操作要求で要求されていた仮想Viewが見つかった旨」を示す情報が格納される。また、仮想View管理プログラム191は、出力パラメータ5300の操作で得られた情報5320に当該仮想Viewの仮想View管理表2000に登録されている情報を格納して、呼び出し元である仮想ViewI/F制御プログラム192の処理に戻る(S71)。
一方で、仮想View管理プログラム191は、上記の仮想View識別子を持つ仮想Viewが存在しないと判定した場合、出力パラメータ5200の操作結果5210に、要求された仮想View取得処理が失敗した旨、すなわち、「仮想View操作要求で要求されていた仮想Viewが存在しない旨」を操作結果として格納して、呼び出し元である仮想ViewI/F制御プログラム192の処理に戻る(S72)。
なお、上記では利用者から受け付けた仮想View操作要求に引数として設定されている入力パラメータ5100に仮想View識別子が指定されている場合を例にしたが特にこれに限定するものではない。例えば、利用者から受け付ける仮想View操作要求に際して、仮想View識別子に代えて構築条件(仮想View管理表2000のエントリ2200の情報)を受け付けるようにしてもよい。そして、仮想View管理プログラム191は、受け付けた構築条件にしたがい該当する仮想Viewを検索するようにしてもよい。
続いて、本実施形態の制御サーバ100が行う仮想View削除処理について図17を用いて説明する。
図17は、本実施形態の制御サーバ100が行う仮想View削除処理を説明するためのフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が仮想View管理プログラム191を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため仮想View管理プログラム191を動作主体として記載する。
仮想View管理プログラム191は、上述した図11のS25において、仮想ViewI/F制御プログラム192に呼び出されて以下で説明する仮想View削除処理を開始する。仮想View削除処理では、入力パラメータで指定された仮想Viewの仮想View管理表2000の領域を解放することで登録情報を削除し、当該仮想View識別子を解放する処理が行われる。
さて、仮想View管理プログラム191は、はじめに、仮想View操作要求に引数として設定されている入力パラメータ5100(図7参照)の仮想View識別子5120を調べ、調べた仮想識別子5120および仮想View管理表2000を利用して、入力パラメータ5100に含まれる仮想View識別子512を持つ仮想Viewが存在するのか否かを判定する(S80)。
仮想View管理プログラム191は、入力パラメータ5100に含まれる仮想View識別子512を持つ仮想Viewが存在すると判定した場合、当該仮想Viewの仮想View管理表2000の領域を解放し(S81)、当該仮想View識別子を解放してS83の処理に進む(S82)。
一方、S80において、仮想View管理プログラム191は、入力パラメータ5100の仮想View識別子512を持つ仮想Viewが存在しないと判定した場合、S83の処理に進む。
S83では、仮想View管理プログラム191は、出力パラメータ52000の操作結果5210に当該操作結果を登録して呼び出し元である仮想ViewI/F制御プログラム192の処理に戻る。
続いて、本実施形態の制御サーバ100が行うファイルアクセス操作を契機とした仮想View更新処理について図18を用いて説明する。
図18は、本実施形態の制御サーバ100が行うファイルアクセス操作を契機とした仮想View更新処理を説明するためのフローチャートである。
さて、クライアントノード200a〜nからストレージノード500a〜nに格納されたファイルに対するファイルアクセス操作を要求する場合、クライアントノード200a〜nは、ファイルシステムアクセス制御プログラム280により制御サーバ100に対してファイルアクセス操作を要求する。制御サーバ100は、クライアントノード200a〜nからの要求を受けて、ストレージノード500a〜nに格納されたファイルに対するアクセス操作を行い、アクセス処理の結果をクライアントノード200a〜nに返信する。そして、制御サーバ100は、ファイルアクセス操作を行った場合に仮想Viewの更新する処理を行う。以下、制御サーバ100における、仮想View更新処理を含むファイルアクセス操作を説明する。
なお、以下の処理は、制御サーバ100のプロセッサ110が各プログラム(ファイルシステム制御プログラム180、仮想View更新制御プログラム193)を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため各プログラム(ファイルシステム制御プログラム180、仮想View更新制御プログラム193)を動作主体として記載する。
制御サーバ100のファイルシステム制御プログラム180は、クライアントノード200a〜nのファイルシステムアクセス制御プログラム280からのファイルアクセス操作要求を受け付ける。そして、ファイルシステム制御プログラム180は、受け付けたファイルアクセス操作を実行する(S90)。
ファイルシステム制御プログラム180は、このファイルアクセス操作が完了すると、対象ファイルを仮想Viewに反映させるよう、仮想View更新制御プログラム193に対して処理(処理B)を要求する(S91)。
ファイルシステム制御プログラム180は、「処理B」を要求する際、処理対象となるファイルの識別情報および対象ファイルに対するファイルアクセス操作の識別情報を入力パラメータとして仮想View更新制御プログラム193に渡す。なお、「処理B」のフローについては後述する。「処理B」が完了したら、ファイルシステム制御プログラム180は、ファイルアクセス操作の結果を、クライアントノード200のファイルシステムアクセス制御プログラム280に対して返す。
続いて、図18のS91で示した「処理B」のフローについて図19を用いて説明する。
図19は、本実施形態の制御サーバ100が行うファイルアクセス操作を契機とした仮想View更新処理を説明するためのフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が各プログラム(仮想View管理プログラム191、仮想View更新制御プログラム193)を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため各プログラム(仮想View管理プログラム191、仮想View更新制御プログラム193)を動作主体として記載する。
仮想View更新制御プログラム193は、図18のS91において、ファイルシステム制御プログラム180から処理B(対象ファイルを仮想Viewに反映させる処理)の要求を受け付けた場合、以下の処理ステップを開始する。処理Bでは、仮想View更新制御プログラム193は、S91で取得した入力パラメータで指定された対象ファイルと合致する構築条件を持つ仮想Viewを仮想View管理表2000から抽出する。そして、仮想View更新制御プログラム193は、抽出された仮想Viewに対し対象ファイルの情報を反映させる処理を行う。以下詳細に説明する。
さて、仮想View更新制御プログラム193は、はじめに、上記のS91で取得した入力パラメータで指定されたファイルアクセス処理の識別情報を用いて、当該識別情報が示すファイルアクセス操作が仮想Viewへの更新が必要な処理か否かの判定を行う(S100)。なお、S100における判定は、図8で示した分類情報を基に行う。すなわち、仮想View更新制御プログラム193は、ファイルアクセス操作が「ファイル書き込み操作」または「ファイル削除操作」である場合に仮想Viewの更新が必要であると判定する。一方、仮想View更新制御プログラム193は、ファイルアクセス操作が「ファイル読み出し操作」である場合に仮想Viewの更新が必要ないと判定する。
そして、仮想View更新制御プログラム193は、仮想Viewの更新が必要と判定した場合にS101の処理に進む。一方、仮想View更新制御プログラム193は、仮想Viewの更新の必要がないと判定した場合、当該処理を終了し、呼び出し元であるファイルシステム制御プログラム180の処理に戻る。
S101〜S103では、仮想View更新制御プログラム193は、上記S91で取得した入力パラメータで指定されたファイルを対象ファイルとした上で上述した図14のS51〜S53と同様の処理を行う。
具体的には、S101では、仮想View更新制御プログラム193は、更新する対象の仮想Viewであって、かつ上記の入力パラメータにより指定されたアクセス操作の対象のファイル(対象ファイル)と適合確認を行っていない仮想Viewが在るか否かについて仮想View管理表2000を利用して確認する。ここで、対象仮想Viewの調べ方は、どのような方法、手順でもよい。仮想View更新制御プログラム193は、上記の対象ファイルとの適合確認を行っていない仮想Viewを検出した場合、S102の処理に進む。仮想View更新制御プログラム193は、上記の対象ファイルとの適合確認を行っていない仮想Viewを検出しなかった場合、すなわち、全ての仮想Viewと適合確認を行った場合にS104の処理に進む。
S102では、仮想View更新制御プログラム193は、検出された仮想Viewの構築条件に、ファイルアクセス操作の対象ファイルが適合するのか否かの判定を行う。仮想View更新制御プログラム193は、検出された仮想Viewの構築条件に、ファイルアクセス操作の対象ファイルが適合する場合にS103に進む。一方、仮想View更新制御プログラム193は、上記適合しないと判定された場合にS101の処理に戻る。
S103では、仮想View更新制御プログラム193は、仮想View管理プログラム191に対して、仮想View管理表2000に対象ファイルの情報を登録・更新する処理(処理A)を要求する(S103)。「処理A」を要求する際、処理の対象となる仮想View識別子およびファイルの識別情報を入力パラメータとして仮想View管理プログラム191に渡す。なお、「処理A」のフローは、図15で示した通りである。「処理A」が終了したら、仮想View更新制御プログラム193は、ステップS101の処理に戻る。なお、仮想View更新制御プログラム193は、上記の処理フロー(S101〜103)を保持している仮想Viewの全てを調べ終えるまで繰り返し行う。
続いて、仮想View更新制御プログラム193が、対象となる仮想Viewの全てを調べ終えた場合に進むS104の処理を説明する。
S104では、仮想View更新制御プログラム193は、上記のS91で取得した入力パラメータおよび仮想View管理表2000を用いてアクセス操作した対象ファイルを登録している仮想Viewが存在するのか否かを調べる(S104)。
仮想View更新制御プログラム193は、アクセス操作した対象ファイルを登録している仮想Viewが存在している場合、上記入力パラメータで指定されたファイルアクセス処理の識別情報が「ファイル削除処理」であるか否かを判定する(S105)。
上記S105における判定の結果、上記の識別情報が「ファイル削除処理」である場合、仮想View更新制御プログラム193は、仮想View管理プログラム191に対して、仮想View管理表2000に対象ファイルの情報を削除する処理(処理C)を要求する(S106)。「処理C」を要求する際、処理対象となる仮想View識別子およびファイルの識別情報を入力パラメータとして仮想View管理プログラム191に渡す。なお、「処理C」のフローについては、後述する図20で説明する。「処理C」が終了したら、S104の処理に戻る。
上記S105における判定の結果、上記の識別情報が「ファイル削除処理」ではない場合、再度S104の処理を行う。なお、上記のS104〜S106の処理フローは、仮想Viewが全てを調べ終えるまで繰り返し行われる。
続いて、図19のS106で示した「処理C」のフローについて図20を用いて説明する。
図20は、本実施形態の制御サーバが行う仮想View管理表からの情報を削除する処理を説明するフローチャートである。
なお、以下の処理は、制御サーバ100のプロセッサ110が各プログラム(仮想View管理プログラム191、仮想View更新制御プログラム193)を実行することで実現されるものである。しかしながら、以下では、説明の簡略化のため各プログラム(仮想View管理プログラム191、仮想View更新制御プログラム193)を動作主体として記載する。
仮想View管理プログラム191は、図19のS106において、仮想View更新制御プログラム193に呼び出されて以下で説明する「処理C」を開始する。「処理C」では、S106で取得した入力パラメータの引数で指定された仮想View識別子を持つ仮想View管理表2000から、同じく引数で指定されたファイルの情報を削除する処理が行われる。
さて、仮想View管理プログラム191は、はじめに、入力パラメータの引数で指定された対象ファイルの格納場所情報を、同じく引数で指定された仮想View識別子を持つ仮想View管理表2000内の登録ファイル格納場所における該当エントリ2700から削除する(S110)。また、仮想View管理プログラム191は、該当する仮想View管理表2000のエントリ2600に格納されている登録ファイル数をデクリメントする(S111)。
このように、本実施形態では、図19で示したファイルアクセス操作を契機とした仮想View更新を行うことにより、常に最新状態の仮想Viewを提供することが可能になる。
また、ファイルアクセス操作が行われた際にだけ仮想Viewを更新することとした場合、当該仮想Viewの構築条件を設定する前にファイルシステムに保存・更新されたファイルに関する情報を反映させることができないことになる。そのため、本実施形態では、ファイルアクセス操作を契機とした仮想Viewの更新に加えて、さらに、図14に示したように利用者からの要求を契機とした仮想Viewの更新を行うようにしている。これにより、仮想Viewの構築条件を設定する前にストレージノードに保存・更新されているファイルに関する情報についても仮想Viewに反映させることが可能となる。
なお、本発明は、以上で説明した実施形態に限定されるものではなく、本発明の要旨の範囲内において種々の変形が可能である。例えば、以下のような実施形態2〜5が可能である。
<第2実施形態>
上述した第1実施形態では、仮想View3000には、当該仮想Viewの構築条件に合致するファイル7000の格納場所情報を登録できることとしたが、特にこれに限定するものではない。仮想Viewの構築条件2200に合致すれば、情報資源の格納場所以外の他の情報でもよい。例えば、複数の仮想Viewを階層的に管理できるようにするために、情報資源の格納場所を登録するエントリ2700に、当該仮想Viewの構築条件2200に合致する仮想View3000に関する情報を登録する。具体的には、当該仮想View管理表2000の登録ファイル場所情報を格納するエントリ2700に登録対象となる仮想Viewの仮想View識別子を登録する。この場合、登録ファイル数を格納するエントリ2600には、当該仮想Viewにだけ登録されているファイル数を登録するようにしてもよいし、当該仮想Viewならびにその下位層の仮想Viewに登録されている全てのファイル数を登録するようにしてもよい。
このように仮想View3000の階層化を実現することにより、利用者は、仮想View3000を階層的に管理できるようになる。また、第2実施形態において、当該仮想Viewの構築条件2200に合致する仮想View3000だけでなく、複数のファイルをグループ化したフォルダやディレクトリ等の情報資源を集合化しているもの全てを登録できるようにしてもよい。
<第3実施形態>
また、上述した第1実施形態では、制御サーバ100は、仮想View制御プログラム190が提供する機能により仮想View3000を提供するようにしたが、特にこれに限定するものではない。
制御サーバ100が有する情報資源にアクセスする機能を介して仮想View3000を利用できるようにしてもよい。例えば、制御サーバ100は、ファイルシステム制御プログラム180により利用者に仮想View3000を提供するようにしてもよい。この場合、制御サーバ100は、ファイルシステム制御プログラム180により、仮想View3000の仮想View管理表2000をファイルもしくはディレクトリとして管理した上で、仮想View管理表2000にアクセスできるようにすればよい。
これにより、ファイルシステム制御プログラム180が提供するファイル読み出し操作6120により当該仮想View管理表2000に相当するファイルを読み出すこと、またはディレクトリ情報読み出し操作により当該仮想View管理表2000に相当するディレクトリを読み出すことができる。
このように、仮想View制御プログラム190が提供する仮想View専用の機能を利用する代わりに、他の汎用的な機能に仮想Viewを利用する機能を付加することにより以下のような利点がある。すなわち、第3実施形態のように構成することにより、利用者は、通常の業務で利用するファイルアクセス機能の操作の中で仮想Viewを利用できるため、利用者の操作負担を軽減することができる。
なお、第3実施形態において、ファイルアクセス制御プログラム180が提供する機能により仮想Viewを利用する方式に代えて、データベースへのアクセスを制御する機能等、他の情報資源に対するアクセス機能を介することで、仮想Viewを利用できるようにしてもよい。
<第4実施形態>
上述した第1実施形態では、クライアントノード200a〜nの利用者が仮想View3000を利用することとしたが、特にこれに限定したものではない。ストレージノード500a〜nを運用し管理するストレージ運用管理装置を設けて、そのストレージ運用管理装置が仮想View3000を利用できるように構成してもよい。
例えば、ストレージ運用管理装置に管理対象のストレージノードを登録しておく。ストレージ運用管理装置は、その登録情報を基に登録ストレージノードの個数分仮想Viewを作成する。ストレージ運用管理装置は、仮想Viewそれぞれの構築条件として、その仮想Viewに対応するストレージノードに格納されたファイルを当該仮想Viewへ登録するという条件を設定するようにしてもよい。すなわち、ストレージ運用管理装置は、ストレージノードごとに、そのストレージノードに格納されているファイルを仮想Viewとして確認することができる。
このような仮想Viewをストレージ運用管理装置で利用できるようにすることにより、当該ストレージノードに格納されているファイルの一覧を仮想Viewとしてストレージ運用管理装置が即座に取得可能となる。これにより、あるストレージノードを物理的に交換する必要性が生じた場合、別のストレージノードへのデータ移行やバックアップなどを行うための対象ファイルを即座に特定できるため、かかる処理に要する処理時間の高速化を図ることができる。
また、上記の第4実施形態において、ストレージ運用管理装置に管理対象のストレージノードを登録しておく様態だけでなく、ストレージ運用管理に必要となる他の情報を登録できるようにしておいて、その情報を基に仮想Viewを構築してストレージ運用管理に利用できるようにしてもよい。
<第5実施形態>
また、上記の第4実施形態のストレージノード500a〜nを運用し管理するストレージ運用管理装置に対して環境設定作業を行い、その内容を仮想View3000に反映させてもよい。例えば、ストレージ運用管理装置の操作端末上で、ユーザの情報(ユーザを識別する識別情報)を登録し、このユーザ情報を制御サーバ100の仮想View管理処理で利用する。このことにより、上述した実施形態における仮想View提供システム1000に、さらに、仮想View3000に対するアクセス制御機能を付加することができる。具体的には、仮想ViewI/F制御プログラム192が提供する機能を基にして、仮想View作成要求3110に対する権限、仮想View構築条件設定要求3120に対する権限、仮想View更新要求3130に対する権限、仮想View取得要求3140に対する権限、および仮想View削除要求3150に対する権限を制御できる。さらに、当該のユーザ情報を各仮想View3000に対応する仮想View管理表2000にて管理することにより、仮想View毎に上述のアクセス制御を実現できる。
例えば、制御サーバ100は、利用者を示す利用者識別情報および該利用者識別情報に対応付けて該利用者に与えるアクセス権限情報の設定を受け付けて保持しておく。そして、制御サーバ100は、クライアントノード200を介して、利用者からの仮想View取得要求3140を受け付ける際、利用者を識別する識別情報を要求する。制御サーバ100は、受け付けた利用者識別情報対応付けられているアクセス権限情報により提示する仮想Viewの内容を変更するようにする。
上述では、アクセス制御のためにユーザの情報を登録することとしたが、特にこれに限定するものではない。例えば、アクセス制御情報として、グループの情報を登録するとしてもよいし、アクセスコントロールリストのように、対象者あるいは対象グループに対して許可する権限を記載したリスト情報を登録するとしてもよい。
また、ストレージ運用管理装置の操作端末上で、仮想View作成数の上限値を登録し、当該の上限値を制御サーバ100の仮想View管理プログラム191が提供する機能により管理するようにしてもよい。このことにより、制御サーバ100にて提供する仮想View作成数の上限値を制御できる。さらに、上記の仮想View作成数の上限値を、各ユーザごとに操作端末にて設定し、仮想View管理プログラム191により管理することで、各ユーザが作成可能な仮想View数の上限値を制御できる。
また、仮想ViewI/F制御プログラム192が提供する仮想View取得要求3140として、現状において存在する仮想Viewの一覧情報を取得する機能を設けるようにしてもよい。そして、この機能をストレージ運用管理装置の操作端末上で利用することにより、ストレージ運用管理装置から、制御サーバ100により作成されている仮想Viewの一覧情報を取得することもできる。この仮想Viewの一覧情報取得により、現状でいくつ仮想Viewが作成されているのかといった情報や、上述の仮想View作成数の上限値と比べることにより、あといくつ仮想Viewが作成可能なのかといった情報を運用利用者が把握できるようになる。
100…制御サーバ、110…プロセッサ、120…メモリ、130…外部記憶装置、140…外部記憶I/F、150…ネットワークI/F、160…外部記憶I/F制御プログラム、170…ネットワークI/F制御プログラム、180…ファイルシステム制御プログラム、190…仮想View制御プログラム、191…仮想View管理プログラム、192…仮想ViewI/F制御プログラム、193…仮想View更新制御プログラム、200…クライアントノード、210…プロセッサ、220…メモリ、230…外部記憶装置、240…外部記憶I/F、250…ネットワークI/F、260…外部記憶I/F制御プログラム、270…ネットワークI/F制御プログラム、280…ファイルシステムアクセス制御プログラム、290…仮想Viewアクセス制御プログラム、500…ストレージノード、510…プロセッサ、520…メモリ、530…外部記憶装置、540…外部記憶I/F、550…ネットワークI/F、560…外部記憶I/F制御プログラム、570…ネットワークI/F制御プログラム、580…ローカルファイルシステム制御プログラム、1000…仮想View提供システム、2000…仮想View管理表