いくつかの実施例について、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
なお、以後の説明では「aaaテーブル」等の表現にて本発明の情報を説明する場合があるが、これら情報は、テーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等について「aaa情報」と呼ぶことがある。また、「bbb名」等の表現にて本発明の「bbb」を識別するための情報を説明する場合があるが、これらの識別するための情報は、名前に限られず、識別子や識別番号、アドレスなど、「bbb」が特定できる情報であればよい。
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサ(典型的にはCPU(Central Processing Unit))によって実行されることで定められた処理をメモリ及びI/F(インタフェース)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は、ファイルサーバ(例えば、後述のファイルストレージ装置、アーカイブストレージ装置)が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。記憶メディアとしては、例えば、ICカード、SDカード、DVD等であってもよい。
ここで、各種用語について説明する。「Core」とは、リモートの計算機システムを含んだ拠点(集約拠点)であり、例えば、サーバやストレージ装置を一括管理する拠点やクラウドサービスを提供する拠点である。「Edge」とは、ローカルの計算機システムを含んだ拠点であり、例えば、支店、営業所、リモートオフィスなどユーザが実際に業務を行う拠点である。「スタブ」とは、ファイルの格納先情報(リンク先を表す情報)が関連付けられたオブジェクト(メタデータ)である。「スタブ化」とは、Edge(Edgeの計算機システム)のファイルについて、実際のデータ(実データ)を削除し、管理情報のみを保持した状態にすることをいう。スタブ化されたファイルは、実際のデータを保持していないため、アクセスされるとCoreの計算機システムから実データを取得する必要がある。このため、スタブ化されたファイルへのアクセスは、通常のファイルに比べてアクセス性能が低下する。
「レプリケーション」とは、EdgeにあるファイルをCoreにコピーすることをいう。「マイグレーション」とは、EdgeにあるファイルをCoreにレプリケーションし、Edgeのファイルをスタブ化することをいう。「アーカイブ」とは、マイグレーションとレプリケーションとの総称である。「リコール」とは、スタブ化されたファイルについて、Coreから実データを取得し、Edgeのファイルに保持させることをいう。「キャッシュ」とは、EdgeからCoreへレプリケーションした後に、Edgeに残っているファイルのこと又は、そのようにEdgeにファイルを残すことをいう。キャッシュへのアクセスは、通常のファイルと同等なアクセス性能である。「ホームディレクトリ」とは、ファイルシステムにおいて、ユーザ毎に割り当てられるユーザ専用のディレクトリのことをいい、配下に当該ユーザのディレクトリ及びファイルを含む。
まず、実施例1に係る情報システムを説明する。
図1は、実施例1に係る情報システムの概要を示す図である。
情報システムのEdge10A(拠点Aともいう)において、ユーザAによりファイルストレージ装置30のファイルシステム36のファイルAが更新される(図中(A))と、ファイルストレージ装置30は、所定の時点、例えば、ユーザAがファイルストレージ装置30に対するセッションを切断した時、又は定期的に、ファイルシステム36のファイル(ファイルA等)についてアーカイブストレージ装置120へのレプリケーション、及びファイルのスタブ化を実行する(図中(B))。
この後、ユーザAが拠点Aから拠点B(Edge10B)に移動して(図中(C))、ユーザAが拠点Bのファイルストレージ装置30に対するセッションを接続すると、拠点Bのファイルストレージ装置30は、Core100のアーカイブストレージ装置120のファイルシステム126からファイルAをリコールして、ファイルAをファイルシステム36に格納する(図中(D))。ここで、拠点BにおいてファイルAをリコールする場合には、既に、Core100のファイルシステム126にファイルAがレプリケーションされているので、適切にファイルAのリコールを行うことができる。
図2は、実施例1に係る情報システムのハードウェア構成を示す図である。
情報システムのハードウェアは、Edge10とCore100とに配置される。図2に示す例では、Edge10は複数、Core100が単数であるが、Edge10が単数、及び/又は、Core100が複数でもよい。
Edge10の計算機システムは、RAID(Redundant Array of Independent (or Inexpensive ) Disks)システム20と、1以上のファイルストレージ装置30と、1以上のクライアント(例えば、パーソナルコンピュータ)/ホスト(例えば、サーバ)40と、を備える。ファイルストレージ装置30は、ローカルのファイルサーバの一例である。ファイルストレージ装置30は、例えば、通信ネットワーク50(例えばLAN(Local Area Network))経由で、クライアント/ホスト40に接続されている。また、ファイルストレージ装置30は、例えば、通信ネットワーク(例えばSAN(Storage Area Network))経由で、RAIDシステム20に接続されている。
RAIDシステム20は、CHA(Channel Adaptor)21と、DKC(DisK Controller)22と、DISK23とを備える。DKC22に、CHA21及びDISK23が接続されている。CHA21は、ファイルストレージ装置30に接続される通信インタフェース装置である。DKC22は、コントローラである。DISK23は、ディスク型の物理記憶デバイス(例えば、HDD(Hard Disk Drive))である。物理記憶デバイスとして、他種の物理記憶デバイス(例えば、フラッシュメモリデバイス)が採用されてもよい。また、DISK23は、図2では単数であるが、実際は、複数である(図示通り、単数でも良い)。複数のDISK23で、1以上のRAIDグループが構成されてよい。また、図示されていないが、RAIDシステム20は、RAIDシステム20内で実行されるプログラムを格納するメモリ、及び当該プログラムを実行するCPU(Central Processing Unit)とを有する。
RAIDシステム20は、ファイルストレージ装置30から送信されたブロックレベルのI/O要求をCHA21で受信し、DKC22の制御に基づいて、適切なDISK23へのI/Oを実行する。
ファイルストレージ装置30は、メモリ31と、CPU32と、NIC(Network Interface Card)33と、HBA(Host Bus Adaptor)34と、を備える。メモリ31、NIC33及びHBA34に、CPU32が接続されている。
NIC33は、アーカイブストレージ装置120及びクライアント/ホスト40と通信する通信インタフェース装置である。
HBA34は、RAIDシステム20と通信する通信インタフェース装置である。
メモリ31は、CPU32が直接読み書きできる記憶領域(例えば、RAM(Random Access Memory)やROM(Read Only Memory))である。ファイルストレージ装置30では、メモリ31上にファイルストレージ装置30を制御するプログラム(例えばOS(Operating System))を読み込み、CPU32がそのプログラムを実行する。ファイルストレージ装置30は、メモリ31に加えて又は代えて、別種の記憶資源を有してもよい。メモリ31は、記憶デバイスの一例である。
ファイルストレージ装置30は、NIC33経由で、クライアント/ホスト40からファイルレベルのI/O要求を受信する。ファイルストレージ装置30は、そのI/O要求で指定されているファイルを構成するデータブロックのI/OのためのI/O要求(ブロックレベルのI/O要求)を作成する。ファイルストレージ装置30は、ブロックレベルのI/O要求を、HBA34経由で、RAIDシステム20に送信する。
クライアント/ホスト40は、メモリ41と、CPU42と、NIC43と、DISK44と、を備える。クライアント/ホスト40は、メモリ41及び/又はDISK44に加えて又は代えて、別種の記憶資源を有してもよい。
クライアント/ホスト40では、DISK44に格納されているプログラム(クライアント/ホスト40を制御するプログラム(例えばOS))をメモリ41上に読み込み、CPU42がプログラムを実行する。また、クライアント/ホスト40は、NIC43経由で、ファイルレベルのI/O要求をファイルストレージ装置30に送信する。
Core100の計算機システムは、RAIDシステム110と、アーカイブストレージ装置120と、を備える。アーカイブストレージ装置120は、リモートのファイルサーバの一例である。アーカイブストレージ装置120に、RAIDシステム110が接続されている。
RAIDシステム110は、CHA111と、DKC112と、DISK113と、を備える。図2では、RAIDシステム110の構成とRAIDシステム20の構成とは、同一である。従って、RAIDシステム110も、アーカイブストレージ装置120から送信されたブロックレベルのI/O要求をCHA111で受信し、DKC112の制御に基づいて、適切なDISK113へのI/Oを実行する。なお、RAIDシステム110の構成とRAIDシステム20の構成は、異なっていてもよい。
アーカイブストレージ装置120は、メモリ121と、CPU122と、NIC123と、HBA124と、を備える。メモリ121に代えて又は加えて、別種の記憶資源が備えられてもよい。アーカイブストレージ装置120では、メモリ121上にアーカイブストレージ装置120を制御するプログラム(例えばOS)を読み込み、CPU122がそのプログラムを実行する。また、アーカイブストレージ装置120は、NIC123及び通信ネットワーク80経由で、ファイルストレージ装置30と通信する。アーカイブストレージ装置120は、HBA124経由で、RAIDシステム110に対してブロック単位のアクセスを行う。
図3は、実施例1に係る情報システムのソフトウェア構成図である。
RAIDシステム20(110)は、複数のLU(Logical Unit)24(114)と、OS LU(OS用 Logical Unit)25(115)とを有する。LU24(114)は、ファイルストレージ装置30(アーカイブストレージ装置120)等の上位装置に対して提供される論理的な記憶デバイスであり、DISK23(113)の記憶領域に基づいて作成される。LU24(114)は、1以上のDISK23(113)に基づく実体的なLUであってもよいし、Thin Provisioningに従う仮想的なLUであってもよい。LU24(114)は、複数のブロック(記憶領域)で構成されている。LU24(114)に、ファイルが記憶される。
OS LU25(115)は、論理的な記憶デバイスである。OS LU25(115)は、1以上のDISK23(113)に基づく実体的なLUであってもよい。OS LU25(115)は、ファイルストレージ装置30又はアーカイブストレージ装置120を制御するプログラム等や、後述のファイルシステム構成情報200の全部又は一部が、記憶されてよい。
ファイルストレージ装置30のメモリ31(アーカイブストレージ装置120のメモリ121)には、データムーバプログラム37(125)と、ファイルシステム36(126)と、カーネル/ドライバ38(127)と、が記憶されている。ファイルストレージ装置30のメモリ31には、更に、ファイル共有プログラム35が記憶されている。以下、ファイルストレージ装置30内のデータムーバプログラム37を、「ローカルムーバ」と言い、アーカイブストレージ装置120内のデータムーバプログラム125を、「リモートムーバ」と言い、それらを特に区別しない場合に、「データムーバプログラム」と言う。ファイルストレージ装置30とアーカイブストレージ装置120との間では、ローカルムーバ37及びリモートムーバ125を介して、ファイルのやり取りが行われる。
ローカルムーバ37は、RAIDシステム20のLU24から、レプリケーション対象のファイル(ファイルの実データ及びファイルのメタデータ)を読み出し、そのファイルをアーカイブストレージ装置120に転送する。リモートムーバ125は、レプリケーション対象のファイルをファイルストレージ装置30から受信し、そのファイルを、RAIDシステム110のLU114に書き込む。
また、ローカルムーバ37は、LU24内のレプリケーション済みファイル(厳密にはそのファイルの実データ)を、ある所定の条件が満たされた場合に、削除し、それにより、レプリケーション済みファイルの実質的なマイグレーションを実現する。その後、ローカルムーバ37は、実データが削除されたファイルのスタブ(メタデータ)に対してクライアント/ホスト40からリード要求を受けた場合、リモートムーバ125を経由して、スタブにリンクしているファイル(ファイルの実データ)を取得し、取得したファイルをクライアント/ホスト40に送信する。なお、本実施例において、「スタブ」とは、ファイルの格納先情報(リンク先を表す情報)が関連付けられたオブジェクト(メタデータ)である。クライアント/ホスト40からは、ファイルがスタブであるかは分からない。
カーネル/ドライバ38(127)は、ファイルストレージ装置30(アーカイブストレージ装置120)上で動作する複数のプログラム(プロセス)のスケジュール制御やハードウェアからの割り込みをハンドリングするなど、全般的な制御及びハードウェア固有の制御を行う。
ファイル共有プログラム35は、CIFS(Common Internet File System)、NFS(Network File System)といった通信プロトコルを使用して、クライアント/ホスト40との間で、ファイル共有サービスを提供するプログラムである。
クライアント/ホスト40のメモリ41には、アプリケーション45と、ファイルシステム46と、カーネル/ドライバ47とが記憶されている。
アプリケーション45は、クライアント/ホスト40が、作業の目的に応じて使うソフトウェア(アプリケーションプログラム)である。ファイルシステム46及びカーネル/ドライバ47は、上述のファイルシステム36(126)、カーネル/ドライバ38(127)とほぼ同様である。
ファイルシステム36(126)は、ファイルシステムプログラムであり、ファイルシステム構成情報200を管理する。ファイルシステム構成情報200は、各ファイル、ディレクトリに関する情報(例えば、ファイルのサイズや場所などを表す情報等)を含み、例えばOS LU25(115)やメモリ31(121)に格納される。
図4は、実施例1に係るファイルシステム構成情報の構成図である。
ファイルシステム構成情報200は、スーパーブロック210と、inode管理テーブル220と、データブロック群230とを含む。スーパーブロック210は、ファイルシステムの情報を一括保持するブロックであり、例えば、ファイルシステムの大きさ、ファイルシステムの空き容量等の情報を格納する。inode管理テーブル220は、ファイル管理情報の一例であるinodeを管理するテーブルである。ファイルシステム36(126)では、1つのディレクトリや、1つのファイルのそれぞれに対して1つのinodeを対応させている。ここで、ディレクトリに対応するinodeをディレクトリエントリと呼ぶ。複数のディレクトリエントリを用いて、ファイルパスを辿ることにより、ファイルに対応するinodeにアクセスすることができる。
図5は、実施例1に係るディレクトリエントリの構成図である。図5は、「/home/use-01/a.txt」で示されるファイルにアクセスする際に利用するinode管理テーブル220のディレクトリエントリを示している。
「/home/use-01/a.txt」で示されるファイルにアクセスする際には、ファイルのパス名に従って、inode番号「2」、「10」、「15」に対応するinodeを辿って行き、ファイルに対応するinode番号「100」のinodeを特定する。そして、ファイルに対応するinode番号「100」のinodeに基づいて、ファイルの実データが格納されているデータブロックを特定し、このデータブロックにアクセスすることとなる。
図6は、実施例1に係るファイルに対応するinodeの構成図である。
ファイルに対応するinode201は、複数のメタデータで構成される。メタデータの種類としては、ファイルの所有者、ファイルのアクセス権、ファイルサイズ、ファイルの格納位置(データブロックアドレス1、2、3、…)などがある。例えば、inode番号「100」を含む行(inode番号「100」のinode)によれば、ファイルは、図6に示すように、下記のデータブロック(LU内のデータブロック)が記憶するデータ(実データ)で構成されていることがわかる。
(*)アドレス100のデータブロックを先頭とした所定数(ここでは、2つ)の連続したデータブロック内のデータ。
(*)アドレス200のデータブロックを先頭とした所定数(ここでは、2つ)の連続したデータブロック内のデータ。
(*)アドレス250のデータブロックを先頭とした所定数(ここでは、2つ)の連続したデータブロック内のデータ。
次に、inode管理テーブルの詳細な構成について説明する。
図7は、実施例1に係るinode管理テーブルの構成図である。
inode管理情報テーブル220は、ディレクトリに対応するinode202と、ファイルに対応するinode201との2種類のエントリを管理する。
ディレクトリに対応するinode202は、inode番号220aと、所有者220bと、アクセス権220cと、サイズ220dと、最終アクセス日時220eと、ディレクトリ名220fと、子ディレクトリinode番号220gとのフィールドを有する。
inode番号220aには、このエントリに対応するinode番号が格納される。所有者220bには、このエントリに対応するディレクトリの所有者の識別情報が格納される。アクセス権220cには、このエントリに対応するディレクトリに対するアクセス権が格納される。サイズ220dには、このエントリに対応するディレクトリのサイズが格納される。最終アクセス日時220eには、このエントリに対応するディレクトリに対する最終アクセス日時が格納される。ディレクトリ名220fには、このエントリに対応するディレクトリの名前(ディレクトリ名)が格納される。子ディレクトリinode番号220gには、このエントリに対応するディレクトリの子となる(直下の)ディレクトリ(ファイル)に対応するinode番号が格納される。
ファイルに対応するinode201は、inode番号220aと、所有者220bと、アクセス権220cと、サイズ220dと、最終アクセス日時220eと、ファイル名220hと、データブロックアドレス1 220lと、データブロックアドレス2 220mと、データブロックアドレス3 220nとのフィールドを有する。なお、ディレクトリに対応するinode202と同一の符号で示しているフィールドについては、同様な情報が格納される。ファイル名220hには、このエントリに対応するファイルのファイル名が格納される。データブロックアドレス1 220l、データブロックアドレス2 220m、及びデータブロックアドレス3 220nには、このエントリに対応するファイルの実データが格納されているデータブロックのアドレスが格納される。
本実施例では、inode管理テーブル220には、新たな種類のメタデータが管理されている。
図8は、実施例1に係るinode管理テーブルの詳細構成図である。
ファイルに対応するinode201は、スタブ化フラグ220iと、レプリケーション済みフラグ220jと、リンク先220kとのフィールドを更に有する。
スタブ化フラグ220iには、このエントリに対応するファイル(図8の説明で対象ファイルという)がスタブ化されているか否かを表すスタブ化フラグが格納される。スタブ化フラグは、例えば、対象ファイルがスタブ化されている場合には、「ON」であり、対象ファイルがスタブ化されていない場合、「OFF」である。
レプリケーション済みフラグ220jには、対象ファイルがレプリケーション済みであるか否かを表すレプリケーション済みフラグが格納される。レプリケーション済みフラグは、対象ファイルがレプリケーション済みの場合に「ON」であり、対象ファイルがレプリケーションされていない場合は「OFF」である。
リンク先220kには、対象ファイルの実データのCore100における格納先(リンク先)を表す情報(例えば、URL(Uniform Resource Locator))が格納される。
本実施例では、ファイルストレージ装置30に接続可能なユーザを管理するとともに、セッション接続をしたユーザを管理するためにセッション接続管理用のユーザ管理テーブル240を用いている。セッション接続管理用のユーザ管理テーブル240は、例えば、ファイルストレージ装置30のメモリ31に格納されている。また、セッション切断をしたユーザを管理するためにも同様な構成のセッション切断管理用のユーザ管理テーブルを用いている。このセッション切断管理用のユーザ管理テーブルについてもメモリ31に格納されている。
図9は、実施例1に係るユーザ管理テーブル及びユーザ管理テーブルの管理方法を説明する図である。図9は、セッション接続したユーザを管理するセッション接続管理用のユーザ管理テーブル240であるが、セッション切断したユーザを管理するセッション切断管理用のユーザ管理テーブルも同様な構成であり、その構成及びその管理方法は、図9におけるセッション接続したユーザを、セッション切断したユーザと読み替えればよい。
セッション接続管理用のユーザ管理テーブル240は、図9の上図に示すように、ポインタ240aと、ユーザ240bとのフィールドを含むエントリを格納する。ポインタ240aには、ユーザ管理テーブル240におけるエントリの番号が格納される。ユーザ240bには、エントリに対応するユーザのユーザ名(ユーザID等、ユーザを識別できるユーザ特定情報)が格納される。
本実施例では、図9の下図に示すように、接続管理用のポインタ250によって示される番号に対応するエントリ以降であるか否かにより、エントリに対応するユーザが所定の時点以降にセッション接続したことがあるユーザであるか否かを管理している。すなわち、接続管理用のポインタによって示されるエントリよりも前のエントリに対応するユーザは、所定の時点以降にセッション接続したことがあるユーザであり、ポインタによって示されるエントリ以降のエントリに対応するユーザは、所定の時点以降にセッション接続したことがないユーザであることを意味している。接続管理用のポインタ250は、例えば、メモリ31に格納されている。
このセッション接続管理用のユーザ管理テーブル240を用いたセッション接続したユーザの管理は、次のように行われる。まず、ユーザがセッション接続した際には、そのユーザのユーザ名が格納されているエントリが、ポインタが示すエントリ以降であるか否かを判定し、ポインタが示すエントリ以降であれば、そのエントリのユーザ名と、ポインタが示すエントリのユーザ名とをスワップし、ポインタ250を1つインクリメントする。これにより、ポインタ250が示すエントリよりも前に、所定時点以降にセッション接続したユーザのユーザ名を含むエントリを集約することができる。
例えば、図9の上図のような状態であり、だれもセッション接続していない場合において、UserA及びUserEがセッション接続をすると、ポインタが初期値0であるので、UserAについては、ポインタ以降のエントリであるので、ポインタの位置のユーザ名とのスワップをすることとなるが、ポインタの位置なのでユーザ名は移動しないで、ポインタが1となる。次に、UesrEについては、ポインタが示すエントリ以降のエントリであるので、図9の下図に示すように、ポインタの位置のユーザ名であるUserBとUesrEとをスワップし、UserEを2番目のエントリに格納するとともに、ポインタに1を加算して、ポインタを2とする。したがって、ポインタが示すエントリよりも前のエントリに、セッション接続したユーザのユーザ名、すなわち、UserA及びUserEを集約して管理することができる。
次に、実施例1で行われる処理を説明する。
図10は、実施例1に係るアクセス処理のフローチャートである。アクセス処理は、クライアント/ホスト40からファイルストレージ装置30に対してユーザによるアクセス処理が来た場合に実行される。
ファイルストレージ装置30は、アクセス処理を受け取ると、アクセス処理の種類がいずれであるかを判定する(ステップS11)。
ステップS11で、アクセス処理の種類がファイルストレージ装置30に対するセッション接続であると判定した場合(ステップS11:セッション接続)には、ファイルストレージ装置30は、アクセス処理を要求したユーザのホームディレクトリのロック要求を実行する(ステップS12)。ロック要求に起因して実行される処理は、図11を参照して後述する。
ファイルストレージ装置30は、ロックが成功したか否かを判定する(ステップS13)。この結果、ロック成功していない場合(ステップS13:No)には、ファイルストレージ装置30は、処理をステップS12に進める。
一方、ロック成功した場合(ステップS13:Yes)には、ファイルストレージ装置30は、ユーザのホームディレクトリの配下のディレクトリ及びファイルに対応するスタブ情報の取得要求を行う(ステップS14)。ここで、スタブ情報とは、アーカイブストレージ装置120のファイルシステム126において管理されているinode(エントリ)である。スタブ情報の取得要求に起因して実行される処理は、図16を参照して後述する。
その後、ファイルストレージ装置30は、取得したスタブ情報に基づいて、ホームディレクトリを作成し(ステップS15)、データ同期処理(図13及び図14参照)を実行し(ステップS16)、アクセス処理を終了する。
また、ステップS11で、アクセス処理の種類がファイルストレージ装置30に対するセッション切断であると判定した場合(ステップS11:セッション切断)には、ファイルストレージ装置30は、セッション切断時の処理を行う(ステップS17)。例えば、ファイルストレージ装置30は、アクセス処理を要求したユーザのホームディレクトリのレプリケーション、スタブ化等の処理を行う。セッション切断時の処理については、図17乃至図19を参照して後述する。
次に、ファイルストレージ装置30は、ホームディレクトリのアンロック要求を実行する(ステップS18)。アンロック要求に起因して実行される処理は、図12を参照して後述する。その後、ファイルストレージ装置30は、アクセス処理を終了する。
また、ステップS11で、アクセス処理の種類がファイルのRead処理であると判定した場合(ステップS11:Read処理)には、ファイルストレージ装置30は、ファイルシステム36のinode管理テーブル220のRead対象のファイルに対応するinode(エントリ)を参照し、このファイルがスタブ化されているか否かを判定する(ステップS19)。ここで、ファイルがスタブ化されているか否かは、inode201のスタブ化フラグ220iを参照することにより判定することができる。この結果、このファイルがスタブ化されている場合(ステップS19:Yes)には、ファイルストレージ装置30は、このファイルの実データをリコールする処理を実行し(ステップS20)、処理をステップS21に進める。ファイルをリコールする処理によると、ファイルの実データが、LU24のデータブロックに格納され、inode管理テーブル220のファイルに対応するinode201のデータブロックアドレスに実データが格納されたブロックアドレスが格納される。なお、ファイルの実データをリコールするリコール処理については、図15を参照して後述する。
一方、このファイルがスタブ化されていない場合(ステップS19:No)、すなわち、ファイルの実データがLU24に格納されている場合には、ファイルストレージ装置30は、処理をステップS21に進める。
ステップS21では、ファイルストレージ装置30は、ファイルのinode201に基づいて、ファイルの実体を読み出す、すなわち、inode201から実データが格納されているデータブロックを特定し、当該データブロックからデータを読み出す。その後、ファイルストレージ装置30は、アクセス処理を終了する。
また、ステップS11で、アクセス処理の種類がファイルのWrite処理であると判定した場合(ステップS11:Write処理)には、ファイルストレージ装置30は、ファイルシステム36のinode管理テーブル220のWrite対象のファイルに対応するinode(エントリ)201を参照し、このファイルがスタブ化されているか否かを判定する(ステップS22)。この結果、このファイルがスタブ化されている場合(ステップS22:Yes)には、ファイルストレージ装置30は、このファイルの実データをリコールする処理を実行し(ステップS23)、処理をステップS24に進める。ファイルをリコールする処理によると、ファイルの実データが、LU24のデータブロックに格納され、inode管理テーブル240のファイルに対応するinode201のデータブロックアドレスに実データが格納されたブロックアドレスが格納される。ファイルの実データをリコールする処理については、図15を参照して後述する。
一方、このファイルがスタブ化されていない場合(ステップS22:No)には、ファイルストレージ装置30は、処理をステップS24に進める。
ステップS24では、ファイルストレージ装置30は、ファイルのinode201に基づいて、ファイルの実データを書き込む、すなわち、inode201から実データが格納されているデータブロックを特定し、当該データブロックに対して実データを書き込む。その後、ファイルストレージ装置30は、このファイルのinode201のレプリケーション済みフラグ220jのレプリケーション済みフラグを、このファイルがレプリケーションされていないことを示すレプリケーション済みフラグ(ここでは、「OFF」)に変更し(ステップS25)、アクセス処理を終了する。
図11は、実施例1に係るロック処理のフローチャートである。
ロック処理は、図10に示すステップS12において、ファイルストレージ装置30によりロック要求が実行されることにより実行される。
Core100のアーカイブストレージ装置120は、ロック要求を受け取ると、ロック要求に含まれるEdge名称及びロック対象のホームディレクトリ名から、当該ホームディレクトリのロックを管理するためのロックファイルの名前(ロックファイル名)を特定し、同一のホームディレクトリのロックを管理するためのロックファイル、すなわち、同一のホームディレクトリ名を含むロックファイルを検索する(ステップS31)。ここで、ロックファイルとは、ロック状態の有無を識別するためにCORE100側に作成されるファイルであり、ホームディレクトリがロックされると当該ホームディレクトリについてのロックファイルが作成され、ホームディレクトリがアンロックされると当該ホームディレクトリについてのロックファイルが削除される。ファイル名をロック要求元(Edgeの識別情報)とホームディレクトリ名称とにすることにより、ファイル検索によって、誰がどのリソースをロックしているかを知ることができる。なお、ロックファイル名は、ロック要求を行ったユーザ名を含んでいてもよい。ロックファイルは、例えば、メモリ121に格納されている。
次いで、アーカイブストレージ装置120は、同一のホームディレクトリ名を含むロックファイルを発見したか否かを判定する(ステップS32)。この結果、同一のホームディレクトリ名を含むロックファイルを発見した場合(ステップS32:Yes)には、そのホームディレクト名のホームディレクトリがロックされていることを意味しているので、アーカイブストレージ装置120は、ロック要求の結果を失敗と設定し(ステップS34)、ロック要求の結果をEdge10のファイルストレージ装置30に返し(ステップS35)、処理を終了する。
一方、同一のホームディレクトリ名を含むロックファイルを発見しなかった場合(ステップS32:No)には、アーカイブストレージ装置120は、ステップS31で特定したロックファイル名のロックファイルを例えば、メモリ121に格納し、ロック要求の結果を成功と設定し(ステップS33)、ロック要求の結果をEdge10のファイルストレージ装置30に返す(ステップS35)。
ステップS35で返されたロック要求の結果を受け取ったファイルストレージ装置30は、ステップS12を終了して、次のステップに処理を進める。このロック処理によると、適切にホームディレクトリを単位としたロック制御を行うことができる。
なお、ロック処理は、セッション接続時ではなくて、ファイルに対する最初のアクセス時に行ってもよい。
図12は、実施例1に係るアンロック処理のフローチャートである。
アンロック処理は、図10に示すステップS18において、ファイルストレージ装置30によりアンロック要求が実行されることにより実行される。
Core100のアーカイブストレージ装置120は、アンロック要求を受け取ると、アンロック要求に含まれるEdge名称及びロック対象のホームディレクトリ名から、このホームディレクトリのロックを管理するためのロックファイルの名前(ロックファイル名)を特定し、このロックファイル名のロックファイルを検索する(ステップS41)。
次いで、アーカイブストレージ装置120は、このロックファイル名のロックファイルを発見したか否かを判定する(ステップS42)。この結果、このロックファイル名のロックファイルを発見した場合(ステップS42:Yes)には、アーカイブストレージ装置120は、このロックファイルを削除し、アンロック要求の結果を成功と設定し(ステップS43)、アンロック要求の結果をEdge10のファイルストレージ装置30に返し(ステップS45)、処理を終了する。
一方、このロックファイル名のロックファイルを発見しなかった場合(ステップS42:No)には、アーカイブストレージ装置120は、アンロック要求の結果を失敗と設定し(ステップS44)、アンロック要求の結果をEdge10のファイルストレージ装置30に返す(ステップS45)。
ステップS45で返されたアンロック要求の結果を受け取ったファイルストレージ装置30は、ステップS18を終了して、次のステップに処理を進める。このアンロック処理によると、適切にホームディレクトリを単位としたロック制御を行うことができる。
なお、アンロック処理は、セッション切断時ではなくて、レプリケーション後に所定時間以上ファイルに対するアクセス(リード又はライト)がない場合に行ってもよい。
図13は、実施例1に係る接続ユーザ管理処理のフローチャートである。
接続ユーザ管理処理は、図10に示すステップS16のデータ同期処理の一部の処理に対応する。
まず、ファイルストレージ装置30は、セッション接続管理用のユーザ管理テーブル240におけるセッション接続したユーザのユーザ名の位置の値(エントリの順番)が接続管理用のポインタの値以上であるか否か判定する。
この結果、セッション接続したユーザのユーザ名の位置の値がポインタの値以上の場合(ステップS51:Yes)には、ファイルストレージ装置30は、ユーザ管理テーブル240におけるポインタの値が示すエントリのユーザ名と、セッション接続したユーザのユーザ名が格納されているエントリのユーザ名とをswap(交換)し(ステップS52)、ポインタの値に1を加算し(ステップS53)、処理を終了する。
一方、セッション接続したユーザのユーザ名の位置の値がポインタの値より小さい場合(ステップS51:No)、ファイルストレージ装置30は、処理を終了する。
この処理により、セッション接続したユーザのユーザ名をユーザ管理テーブル240のポインタが示すエントリよりも前のエントリに集約して管理することができる。
図14は、実施例1に係るキャッシュ上書き処理のフローチャートである。
キャッシュ上書き処理は、図10に示すステップS16のデータ同期処理の一部の処理に対応する。このキャッシュ上書き処理は、例えば、所定の時間毎に実行される。なお、キャッシュ上書き処理を、接続ユーザ管理処理の終了直後に実行するようにしてもよい。
ファイルストレージ装置30は、変数Nを0に設定し(ステップS61)、変数NがEdge10のファイルストレージ装置30に接続可能なユーザ数より小さいか否かを判定する(ステップS62)。この結果、変数NがEdge10のファイルストレージ装置30に接続可能なユーザ数より小さい場合(ステップS62:Yes)には、ファイルストレージ装置30は、ユーザ管理テーブル240の変数Nの位置のユーザ名に対応するユーザのホームディレクトリ情報を、アーカイブストレージ装置120に要求し(ステップS63)、処理をステップS64に進める。ここで、ホームディレクトリ情報とは、ユーザのホームディレクトリの配下にあるファイル及びディレクトリのinodeを含む情報である。また、ホームディレクトリ情報の要求には、例えば、ユーザのホームディレクトリの名称が含まれる。
これに対して、アーカイブストレージ装置120は、ホームディレクトリ情報の要求を受け取ると、要求の対象となるユーザのホームディレクトリ情報をメモリ121から取得し(ステップS71)、当該取得したホームディレクトリ情報をファイルストレージ装置30に転送する(ステップS72)。
ファイルストレージ装置30は、アーカイブストレージ装置120から転送されたホームディレクトリ情報を取得し、ホームディレクトリを設定し、当該ホームディレクトリ情報に基づいて、メモリ31にキャッシュされているデータ、例えば、ユーザのホームディレクトリのディレクトリ及びファイルのinode等を上書きする(ステップS64)。
次いで、ファイルストレージ装置30は、変数Nに1を加算して(ステップS65)、処理をステップS62に進める。
一方、変数NがEdge10のファイルストレージ装置30に接続可能なユーザ数より小さくない場合(ステップS62:No)には、このファイルストレージ装置30に接続可能な全てのユーザのキャッシュされているデータを上書きしたことを意味しているので、ファイルストレージ装置30は、ポインタを0に設定して、接続したことがあるユーザをリセットし(ステップS66)、処理を終了する。
ここで、図13に示す接続ユーザ管理処理により、所定の時点以降でセッション接続したユーザのユーザ名がユーザ管理テーブル240の先頭から順に並んで管理されているので、図14に示すキャッシュ上書き処理においては、セッション接続したユーザのキャッシュが優先して上書きされることとなる。すなわち、例えば、切断中のユーザが格納した大きいサイズのファイルを上書きするために、セッション接続しているユーザのデータの上書き処理が遅れることを適切に防止できる。なお、セッション接続したユーザとしては、例えば、他のEdge10から移動してきたユーザが含まれる。
図15は、実施例1に係るリコール処理のフローチャートである。
リコール処理は、図10に示すステップS20、又はS23におけるファイルストレージ装置30の処理に応じて実行される。
ファイルストレージ装置30は、スタブ化されているファイルの実データの取得要求(ファイル取得要求)をCore100のアーカイブストレージ装置120に送信する(ステップS81)。ファイル取得要求には、取得対象の実データが格納されている格納先(リンク先)の情報が含まれている。このリンク先は、スタブ化されているファイルのinode201のリンク先220kから取得することができる。
アーカイブストレージ装置120は、ファイル取得要求を受信すると、ファイル取得要求の格納先に基づいて、対応する格納先から取得対象のファイルの実データを取得し(ステップS91)、このファイルの実データをファイルストレージ装置30に転送し(ステップS92)、処理を終了する。
ファイルストレージ装置30は、ファイルの実データを取得すると、取得したファイルの実データの呼び出し元、すなわち、図10のステップS20、又はS23の処理ステップに返し(ステップS82)、リコール処理を終了する。なお、図10のステップS20、又はS23では、返されたファイルの実データが、LU24のデータブロックに格納され、inode管理テーブル220のファイルに対応するinode201のデータブロックアドレス(220l等)に実データが格納されたブロックアドレスが格納され、スタブ化フラグ220iがOFFにされる。
図16は、実施例1に係るスタブ情報取得処理のフローチャートである。
スタブ情報取得処理は、図10に示すステップS14において、ファイルストレージ装置30によりスタブ情報の取得要求が実行されることにより実行される。
ファイルストレージ装置30は、スタブ情報の取得要求(スタブ情報取得要求)をCore100のアーカイブストレージ装置120に送信する(ステップS101)。スタブ情報取得要求には、スタブ情報を取得する対象のホームディレクトリを特定する情報(例えば、ホームディレクトリ名)が含まれている。
アーカイブストレージ装置120は、スタブ情報取得要求を受信すると、ホームディレクトリを特定する情報に基づいて、ホームディレクトリ配下の全てのディレクトリのinode202及びファイルのinode201(スタブ情報)を取得し(ステップS111)、このinode201及び202をファイルストレージ装置30に転送し(ステップS112)、処理を終了する。ここで、ファイルストレージ装置30に転送されるinode201のレプリケーション済みフラグ220jには、レプリケーション済みであることを示すONが設定され、リンク先220kには、実データが格納されているリンク先が格納されている。
ファイルストレージ装置30は、inode201及び202を取得すると、取得したスタブ情報取得要求の呼び出し元、すなわち、図10のステップS14の処理ステップに返し(ステップS102)、スタブ情報取得処理を終了する。これにより、ファイルストレージ装置30は、ホームディレクトリ配下のディレクトリ及びファイルのinode201及び202を受け取ることとなる。
なお、スタブ情報取得処理は、例えば、セッション接続時だけでなく、例えば、定期的に実行するようにしてもよい。
また、スタブ情報取得処理におけるステップS101を実行する前において、以下の(1)〜(4)に示すようなファイルのリネーム処理、キャッシュしたファイルの無効化処理等を実行してもよい。
(1)ファイルストレージ装置30は、ファイルシステム36が管理しているファイルのinode番号、ファイルパス名、及び最終更新日時をアーカイブストレージ装置120に送信する。
(2)アーカイブストレージ装置120は、ファイルシステム126が管理しているファイルのinode番号及びファイルパス名と、ファイルストレージ装置30から送信されたinode番号及びファイルパス名とを参照し、inode番号が同じで、ファイルパス名が異なる場合には、ファイルパス名を変更(リネーム)する。
(3)アーカイブストレージ装置120は、ファイルシステム126が管理しているファイルのinode番号及び最終更新日時と、ファイルストレージ装置30から送信されたinode番号及び最終更新日時とを参照し、inode番号が同じであり且つファイルストレージ装置30から送信された最終更新日時がアーカイブストレージ装置120の最終更新日時よりも古い場合、すなわち、ファイルストレージ装置30のファイルが古いデータである場合には、そのinode番号をファイルストレージ装置30に送信する。
(4)ファイルストレージ装置30は、アーカイブストレージ装置120から送信されたinode番号に対応するファイルの実データを削除して、当該ファイルをスタブ化する。
図17は、実施例1に係る切断ユーザ管理処理のフローチャートである。
切断ユーザ管理処理は、図10に示すステップS17において実行されるセッション切断時の処理の一部の処理である。
まず、ファイルストレージ装置30は、セッション切断管理用のユーザ管理テーブルにおけるセッション切断したユーザのユーザ名の位置の値(エントリの順番)が切断管理用のポインタの値以上であるか否か判定する。切断管理用のポインタは、例えば、メモリ31に格納されている。
この結果、セッション切断したユーザのユーザ名の位置の値がポインタの値以上である場合(ステップS121:Yes)には、ファイルストレージ装置30は、ユーザ管理テーブル240におけるポインタの値が示すエントリのユーザ名と、セッション切断したユーザのユーザ名が格納されているエントリのユーザ名とをswap(交換)し(ステップS122)、ポインタの値に1を加算し(ステップS123)、処理を終了する。
一方、セッション切断したユーザのユーザ名の位置の値がポインタの値より小さい場合(ステップS121:No)、ファイルストレージ装置30は、処理を終了する。
この処理により、セッション切断したユーザのユーザ名をセッション切断管理用のユーザ管理テーブルの切断管理用のポインタが示すエントリよりも前のエントリに集約して管理することができる。すなわち、所定期間の間にセッション切断したユーザをセッション切断した時刻が早いものから順に並べることができる。
図18は、実施例1に係るレプリケーション処理(方式A)のフローチャートである。
レプリケーション処理(方式A)は、図10に示すステップS17において実行されるセッション切断時の処理の一部の処理であり、図17に示す切断ユーザ管理処理と併せて実行される方式Aに従う処理である。このレプリケーション処理(方式A)は、例えば、所定の時間毎または、所定の時間帯に実行される。また、一度のレプリケーションで送信されるデータ量を制限してもよい。
ファイルストレージ装置30は、変数Nを0に設定し(ステップS131)、変数NがEdge10のファイルストレージ装置30に接続可能なユーザ数より小さいか否かを判定する(ステップS132)。この結果、変数NがEdge10のファイルストレージ装置30に接続可能なユーザ数より小さい場合(ステップS132:Yes)には、ファイルストレージ装置30は、ユーザ管理テーブル240の変数Nの位置のユーザ名に対応するユーザのホームディレクトリの配下に属するファイルのレプリケーションを実行する(ステップS133)。具体的には、ファイルストレージ装置30は、ユーザのホームディレクトリの配下のファイルの中のレプリケーションが必要なファイルに対応するinode(レプリケーション済みフラグ220jのレプリケーション済みフラグがOFFのinode)201及び実データをアーカイブストレージ装置120に送信する。
これに対して、アーカイブストレージ装置120は、ファイルストレージ装置30から送信されるファイルのinodeを取得するとともに、ファイルの実データを取得する(ステップS141)。次いで、アーカイブストレージ装置120は、取得したinode及びファイルの実データをファイルシステム126のinode管理テーブル220に格納するとともに、ファイル実体をLU114に格納し、取得したinodeのリンク先220kに、ファイル実体を格納した格納位置を示すURLを格納し(ステップS142)、データの格納を終了した旨の通知をファイルストレージ装置30に送信し、処理を終了する。ここで、inode201のリンク先220kには、格納位置を示すURLが格納されるので、以降において、いずれかのファイルストレージ装置30がこのinode201を取得することにより、リンク先220kを用いて、当該ファイルの実データを適切にリコールすることができる。
ファイルストレージ装置30は、アーカイブストレージ装置120からデータの格納を終了した旨の通知を受け取ると、ファイルストレージ装置30は、レプリケーションを行ったファイルに対応するinode201のレプリケーション済みフラグ220jにレプリケーション済みを示すONを設定し、リンク先220kにアーカイブストレージ装置120がファイルの実データを格納する格納位置を示すURLを格納し、変数Nに1を加算して(ステップS134)、処理をステップS132に進める。なお、アーカイブストレージ装置120がファイルの実データを格納する格納位置を示すURLについては、ステップS133の前に、アーカイブストレージ装置120から取得するようにしてもよいし、アーカイブストレージ装置120からデータの格納を終了した旨の通知として受け取るようにしてもよい。
一方、変数NがEdgeのファイルストレージ装置30に接続可能なユーザ数より小さくない場合(ステップS132:No)には、このファイルストレージ装置30に接続可能な全てのユーザのホームディレクトリの配下のレプリケーションをしていない全てのファイルについてレプリケーションを実行したことを意味しているので、ファイルストレージ装置30は、ポインタを0に設定して、全てのユーザを切断したユーザから外し(ステップS135)、処理を終了する。
ここで、図17に示す接続ユーザ管理処理により、セッション切断したユーザのユーザIDがユーザ管理テーブル240の先頭から順に並んで管理されているので、図18示す処理においては、セッション切断しているユーザのファイルが優先してレプリケーションされることとなる。すなわち、自身のファイルがレプリケーションされていないユーザのうち、セッション切断をしているユーザのファイルが、セッション切断をしていいないユーザ(セッション接続中のユーザ、またはセッションの接続も切断も行っていないユーザ)のファイルより先に(優先的に)レプリケーションされる。さらに、図17及び図18に示す処理によって、セッション切断した時刻が早いユーザのファイルから順にレプリケーションされることとなる。ここで、セッション切断しているユーザのうちセッション切断した時刻が早いユーザほど他のEdge10に移動する可能性が高いユーザであると考えられる。よって、以降において、このユーザが他のedge10でセッション接続する場合において、このユーザのホームディレクトリのファイルが適切にCore100に存在するようにすることができる。また、上記処理によると、例えば、接続中のユーザが格納した大きいサイズのファイルをレプリケーションするために、セッション切断したユーザのデータが一定時間以内にレプリケーションされないということを適切に防止できる。また、図17に示す接続ユーザ管理処理によらず、任意の順番、例えば任意に定められたユーザ毎の優先順位の順に、各ユーザのデータをレプリケーションをしてもよい。
図19は、実施例1に係るレプリケーション処理(方式B)のフローチャートである。
レプリケーション処理(方式B)は、図10に示すステップS17において実行されるセッション切断時の処理の一部の処理の他の例であり、図17に示す切断ユーザ管理処理と図18に示すレプリケーション処理(方式A)とを併せた処理に代えて実行するようにしてもよい処理である。このレプリケーション処理(方式B)は、例えば、セッション切断時に実行される。
ファイルストレージ装置30は、セッション切断を行ったユーザのホームディレクトリの配下に属するファイルのレプリケーションを実行する(ステップS151)。具体的には、ファイルストレージ装置30は、ユーザのホームディレクトリの配下のファイルの中のレプリケーションが必要なファイルに対応するinode(レプリケーション済みフラグ220jのアプリケーション済みフラグがOFFのinode)201と、そのファイルの実データとをアーカイブストレージ装置120に送信する。
これに対して、アーカイブストレージ装置120は、ファイルストレージ装置30から送信されるファイルのinodeを取得するとともに、ファイルの実データを取得する(ステップS161)。次いで、アーカイブストレージ装置120は、取得したinode及びファイルの実データをファイルシステム126のinode管理テーブル220に格納するとともに、ファイル実体をLU114に格納し(ステップS162)、データの格納を終了した旨の通知をファイルストレージ装置30に送信し、処理を終了する。ここで、inode201のリンク先220kには、格納位置を示すURLが格納されるので、以降において、いずれかのファイルストレージ装置30がこのinode201を取得することにより、リンク先220kを用いて、当該ファイルの実データを適切にリコールすることができる。
ファイルストレージ装置30は、アーカイブストレージ装置120からデータの格納を終了した旨の通知を受け取ると、レプリケーションを行ったファイルに対応するinode201のレプリケーション済みフラグ220jにレプリケーション済みを示すONを設定し、リンク先220kにアーカイブストレージ装置120がファイルの実データを格納する格納位置を示すURLを格納し、ステップS151を終了し、レプリケーション処理(方式B)を終了する。なお、アーカイブストレージ装置120がファイルの実データを格納する格納位置を示すURLについては、ステップS151の前に、アーカイブストレージ装置120から取得するようにしてもよいし、アーカイブストレージ装置120からデータの格納を終了した旨の通知として受け取るようにしてもよい。
このレプリケーション処理(方式B)によると、セッション切断したユーザ、すなわち、他のEdge10に移動して、ファイルにアクセスする可能性のあるユーザのホームディレクトリの配下のファイルを適切にCore100側に格納させることができる。
図20は、実施例1に係るレプリケーション処理(配下以外)のフローチャートである。
このレプリケーション処理(配下以外)は、ユーザのホームディレクトリ配下のファイル以外のファイルについてのレプリケーションを行う処理である。このレプリケーション処理(配下以外)は、例えば、所定時間毎、又は、ユーザから要求があった場合に実行される。
ファイルストレージ装置30は、各ユーザのホームディレクトリ以外のディレクトリの中からレプリケーションが必要なファイルを検索する(ステップS171)。次いで、ファイルストレージ装置30は、検索によって得られたファイルのレプリケーションを実行する(ステップS172)。具体的には、ファイルストレージ装置30は、ユーザのホームディレクトリ以外のディレクトリのファイルの中のレプリケーションが必要なファイルに対応するinode(レプリケーション済みフラグ220jのレプリケーション済みフラグがOFFのinode)をアーカイブストレージ装置120に送信するとともに、ファイルの実データを送信する。
これに対して、アーカイブストレージ装置120は、ファイルストレージ装置30から送信されるファイルのinodeを取得するとともに、ファイルの実データを取得する。次いで、アーカイブストレージ装置120は、取得したinode及びファイルの実データをファイルシステム126のinode管理テーブル220に格納するとともに、ファイル実体をLU114に格納し、データの格納を終了した旨の通知をファイルストレージ装置30に送信し、処理を終了する。
ファイルストレージ装置30は、アーカイブストレージ装置120からデータの格納を終了した旨の通知を受け取ると、レプリケーションを行ったファイルに対応するinodeのレプリケーション済みフラグ220jをレプリケーション済であることを示す「Yes」に変更しレプリケーションを行ったファイルに対応するinode201のレプリケーション済みフラグ220jにレプリケーション済みを示すONを設定し、リンク先220kにアーカイブストレージ装置120がファイルの実データを格納する格納位置を示すURLを格納し(ステップS173)、処理を終了する。
図21は、実施例1に係るスタブ化処理のフローチャートである。
スタブ化処理は、図10に示すステップS17において実行されるセッション切断時の処理の一部の処理である。なお、スタブ化処理は、所定の時間毎に実行するようにしてもよい。
ファイルストレージ装置30は、ファイルシステム36の容量が所定の閾値より大きいか否かを判定する(ステップS181)。この結果、ファイルシステム36の容量が所定の閾値より大きい場合(ステップS181:Yes)には、LU24の空き容量が少ないことを意味しているので、ファイルストレージ装置30は、レプリケーション済みフラグ220jのレプリケーション済みフラグがレプリケーション済みを示し、且つ最終アクセス日時220eの最終アクセス日時が古いinode201に対応するファイルから順にスタブ化を実行する(ステップS182)。具体的には、ファイルストレージ装置30は、対象のファイルの実データをデータブロックから削除するとともに、inode201のスタブ化フラグ220iにスタブ化したことを示すONを設定する。これにより、LU24の空き容量を増加させることができる。
次に、実施例2に係る情報システムを説明する。
まず、課題について説明する。
図22は、課題を説明する図である。
ここで、例えば、拠点X(Edge10X)で大規模な会議が開催され、他の拠点から多数のユーザが拠点Xに集合し、拠点Xにおいて多数のユーザがファイルにアクセスする場合を想定する。
この場合においては、拠点Xのファイルストレージ装置30に対して、ユーザがクライアント/ホスト40を用いて接続し、ファイルに対するアクセスを行うと、ファイルストレージ装置30には、inode201(スタブ情報)しか格納されていない場合が多いので、ファイルストレージ装置30は、アーカイブストレージ装置120に対して、ファイルの実データを取得するためのリコール要求を実行することとなる。ここで、多数のユーザがファイルに対するアクセスを行うと、多数のリコール要求がアーカイブストレージ装置120に送信されるとともに、そのリコール要求に対する応答であるファイルの実データの送信が行われることとなり、ネットワークに対する負荷や、アーカイブストレージ装置120に対する負荷が大きくなってしまう。
実施例2に係る情報システムでは、図22に示す課題を、以下に示す実現方法1乃至実現方法3によって解決している。
まず、実現方法1の概要について説明する。実現方法1は、ユーザによって設定された移動先の拠点に対して予めファイルを格納しておく方法である。
実施例2の実現方法1に係る情報システムは、図2及び図3に示す実施例1の情報システムと同様な構成に対して、新たな構成及び新たな処理が追加されている。以下、実施例1と異なる点について説明する。
実現方法1に係る情報システムでは、アーカイブストレージ装置120が設定ファイル131を新たに格納している。
図23は、実施例2に係る設定ファイルの構成図である。
設定ファイル131は、ユーザが移動する移動先の拠点に関する情報を格納する。設定ファイル131は、例えば、ユーザがクライアント/ホスト40を利用することにより、予め設定される。設定ファイル131は、移動先の拠点(Edge)を示す移動先拠点情報131aと、移動先の拠点で利用する時間を特定する時間情報131bとを含む。移動先拠点情報131aは、例えば、移動先拠点のファイルストレージ装置30のIPアドレスである。時間情報131bは、例えば、ユーザがいる移動元の拠点から移動先の拠点への移動時間である。なお、複数の移動先についての移動先拠点情報131a及び時間情報131bを設定していてもよい。
図24は、実施例2に係る実現方法1の概要を示す図である。
ユーザが移動元拠点(ここでは、例えば、拠点A)で作業をし、セッション切断を行うと、ファイルストレージ装置30からアーカイブストレージ装置120にファイルのレプリケーションが実行され、セッション切断要求がアーカイブストレージ装置120に送信される(図24の(1))。
アーカイブストレージ装置120は、セッション切断要求を行ったユーザのホームディレクトリ内の設定ファイル131を参照して、移動先拠点情報を取得する(図24の(2−A))。図24の例では、移動先が拠点Cであるとする。
次いで、アーカイブストレージ装置120は、セッション切断要求を行ったユーザのホームディレクトリ内のファイル(実データを含む)を移動先の拠点Cのファイルストレージ装置30に送信する(図24の(2−B))。
その後、ユーザが移動元の拠点Aから移動先の拠点Cに移動し(図24(3))、拠点Cのファイルストレージ装置30に対してユーザがセッション接続し、ファイルの参照を行うと、拠点Cに対してファイルの実データがリコール済みであるので、そのファイルを迅速にユーザが参照することができる(図24の(4))。
次に、実現方法2の概要について説明する。実現方法2は、ユーザの移動履歴に基づいて、移動先の拠点を特定し、その拠点に予めファイルを格納しておく方法である。
実現方法2に係る情報システムでは、アーカイブストレージ装置120が拠点リスト132を新たに格納している。拠点リスト132は、ユーザの各拠点に対する移動の履歴を管理する。
図25は、実施例2に係る拠点リストの構成図である。
拠点リスト132は、ユーザ名132aと、移動先拠点132bと、ユーザIP132cと、移動回数132dと、平均移動時間132eと、データ転送速度132fとのフィールドを含むエントリを有している。
ユーザ名132aには、ユーザ名が格納される。移動先拠点132bには、移動先の拠点を特定する情報(例えば、その拠点のファイルストレージ装置30のIPアドレス)が格納される。ユーザIP132cには、ユーザが所属している拠点のファイルストレージ装置30のIPアドレス(ユーザIP)が格納される。本実施例では、例えば、ユーザは、複数の拠点のいずれか1つに所属しているものとしている。移動回数132dには、ユーザIP132cのユーザIPが示す移動元の拠点から、移動先拠点132bの情報が示す移動先の拠点への移動回数が格納される。平均移動時間132eには、ユーザIP132cのユーザIPが示す移動元の拠点から、移動先拠点132bの情報が示す移動先の拠点への移動時間の平均(平均移動時間)が格納される。データ転送速度132fには、移動先拠点132bのIPアドレスが示す拠点に対してデータを転送する際の速度(データ転送速度)が格納される。
図26は、実施例2に係る実現方法2の概要を示す図である。
ユーザが移動元拠点(ここでは、例えば、拠点A)で作業をし、セッション切断を行うと、ファイルストレージ装置30からアーカイブストレージ装置120にファイルのレプリケーションが実行され、セッション切断要求がアーカイブストレージ装置120に送信される(図26の(1))。
アーカイブストレージ装置120は、拠点リスト132を参照して、セッション切断要求を行ったユーザの移動回数132dの移動回数が最大のエントリの移動先拠点132bのIPアドレスが示す拠点(ここでは、拠点Cであるとする。)を選択する(図26の(2−A))。
次いで、アーカイブストレージ装置120は、選択した1以上のファイルの転送データ量が以下の式1を満たすように、セッション切断要求を行ったユーザのホームディレクトリ内のファイル(実データを含む)の中の最終アクセス日時が新しいファイルから順に1以上のファイルを選択する(図26(2−B))。
(式1)転送データ量 < 拠点リスト132のデータ転送速度132fのデータ転送速度×拠点リスト132の平均移動時間132eの平均移動時間
次いで、アーカイブストレージ装置120は、選択した1以上のファイルを、選択した拠点(ここでは、拠点C)のファイルストレージ装置30に送信する(図26の(2−C))。
その後、ユーザが移動元の拠点Aから移動先の拠点Cに移動した場合(図26(3))には、拠点Cのファイルストレージ装置30に対してユーザがセッション接続し、ファイルの参照を行うと、拠点Cに対して1以上のファイルの実データがリコール済みであるので、そのファイルを迅速にユーザが参照することができる(図26の(4))。
実現方法2によると、ユーザが移動する可能性が高い拠点に対して、予めファイルが移動されることとなるので、移動先の拠点において、ファイルを迅速に参照できる可能性が高い。また、実現方法2によると、ユーザが設定ファイル131等の設定を予め行わなくてもよい。
次に、実現方法3の概要について説明する。
実現方法2では、ユーザの移動履歴に基づいて、移動先の拠点を特定し、その拠点に予めファイルを格納するようにしていた。しかしながら、ユーザの拠点への移動回数の分布は、特定の拠点への移動に集中している場合や、各拠点への移動が略均一である場合等のいろいろな場合が考えられる。このため、特定の移動先の拠点にファイルを格納するだけでは、好ましくない場合が発生する虞がある。
そこで、実現方法3においては、各ユーザの移動の履歴に基づいて、ユーザの拠点の移動に関する傾向を分析し、その移動の傾向に基づいて、ファイルストレージ装置30へのファイルの転送を制御するようにしている。
各ユーザの拠点への移動の傾向を判定するために、各拠点を、その拠点へのユーザの移動回数に基づいて、グループ分けを行う。
図27は、実施例2に係る拠点のグループ分けを説明する図である。
本実施例では、例えば、各拠点を2つのグループ(グループA、グループB)に分ける。グループに分ける方法としては、例えば、図27に示すように、移動回数が上位の所定数(例えば、3つ)の拠点をグループAとし、それ以外の拠点をグループBとする。なお、グループ分けは、これに限られず、例えば、最も多い移動回数の50%以上の移動回数がある1以上の拠点をグループAとし、それ以外の拠点をグループBとしてもよい。
そして、実施方法3においては、グループAに属する拠点への総移動回数(グループA総移動回数)と、グループBに属する拠点への総移動回数(グループB総移動回数)とを比較し、その比較結果によって、ファイルストレージ装置30へのファイルの転送方式を異ならせている。
例えば、グループA総移動回数がグループB総移動回数以上である場合には、グループAの拠点への移動の傾向が高いと考えられるので、グループAの拠点のファイルストレージ装置30にファイルを転送する転送方式(転送方式A)とし、グループA総移動回数がグループB総移動回数未満である場合には、各拠点への移動の傾向が比較的均一であると考えられるので、各拠点のファイルストレージ装置30にファイルを転送する転送方式(転送方式B)とする。
実現方法3においては、各ユーザの移動傾向に応じた転送方式を管理するために、ユーザリスト133をアーカイブストレージ装置120に格納するようにしている。
図28は、実施例2に係るユーザリストの構成図である。
ユーザリスト133は、ユーザ名133aと、ユーザIP133bと、セッション切断時刻133cと、転送方式133dと、帯域速度133eとのフィールドを含むレコード(エントリ)を格納する。
ユーザ名133aには、ファイルストレージ装置30に接続するユーザのユーザ名が格納される。ユーザIP133bには、ユーザが所属している拠点のファイルストレージ装置30のIPアドレス(ユーザIP)が格納される。セッション切断時刻133cには、セッションを切断した時刻(セッション切断時刻)が格納される。このセッション切断時刻を用いると、他の拠点への移動時間を計算することができる。転送方式133dには、このエントリのユーザの拠点への移動傾向に対応するファイルの転送方式が格納される。本実施例では、転送方式133dには、転送方式A又は転送方式Bのいずれかが格納される。帯域速度133eには、アーカイブストレージ装置120からのデータ転送に対して、このエントリに対応するユーザに対して許容された帯域速度が格納される。
図29は、実施例2に係る実現方法3の転送方式Aの概要を示す図である。この転送方式Aは、ユーザがグループAの拠点に移動する傾向が高い場合に実行される。
ユーザが移動元拠点(ここでは、例えば、拠点A)で作業をし、セッション切断を行うと、ファイルストレージ装置30からアーカイブストレージ装置120にファイルのレプリケーションが実行され、セッション切断要求がアーカイブストレージ装置120に送信される(図29の(1))。
アーカイブストレージ装置120は、ユーザリスト133を参照して、セッション切断要求を行ったユーザの転送方式133dを参照し、転送方式(ここでは、転送方式Aであるとする。)を特定する(図29の(2−A))。
次いで、アーカイブストレージ装置120は、セッション切断要求を行ったユーザのホームディレクトリ内の1以上のファイル(実データを含む)を最終アクセス日時が新しいファイルを優先して選択し、選択したファイルをグループAに属する各拠点(ここでは、拠点B及び拠点C)のファイルストレージ装置30に送信する(図29の(2−B))。
その後、ユーザが移動元の拠点AからグループAに属する拠点Cに移動した場合(図29の(3))には、拠点Cのファイルストレージ装置30に対してユーザがセッション接続し、ファイルの参照を行うと、拠点Cに対して1以上のファイルの実データがリコール済みであるので、そのファイルを迅速にユーザが参照することができる(図29の(4))。
これにより、ユーザがグループAの拠点に移動する傾向が高い場合には、グループAの拠点に対して、ファイルが格納されることとなるので、移動先の拠点において、ファイルを迅速に参照できる可能性が高い。
図30は、実施例2に係る実現方法3の転送方式Bの概要を示す図である。この転送方式Bは、ユーザが各拠点に比較的均一して移動する傾向が高い場合に実行される。
ユーザが移動元拠点(ここでは、例えば、拠点A)で作業をし、セッション切断を行うと、ファイルストレージ装置30からアーカイブストレージ装置120にファイルのレプリケーションが実行され、セッション切断要求がアーカイブストレージ装置120に送信される(図30の(1))。
アーカイブストレージ装置120は、ユーザリスト133を参照して、セッション切断要求を行ったユーザの転送方式133dを参照し、転送方式(ここでは、転送方式Bであるとする。)を特定する(図30の(2−A))。
次いで、アーカイブストレージ装置120は、セッション切断要求を行ったユーザのホームディレクトリ内の1以上のファイル(実データを含む)を最終アクセス日時が新しいファイルを優先して選択し、選択したファイルを全ての拠点のファイルストレージ装置30に送信する(図30の(2−B))。なお、全ての拠点にファイルを送信するので、転送方式Aのデータ量よりは少ないデータ量分のファイルが選択される。
その後、ユーザが移動元の拠点Aから移動先の拠点Cに移動した場合(図30(3))には、拠点Cのファイルストレージ装置30に対してユーザがセッション接続し、ファイルの参照を行うと、拠点Cに対して1以上のファイルの実データがリコール済みであるので、そのファイルを迅速にユーザが参照することができる(図30の(4))。なお、いずれの拠点にユーザが移動しても同様に、ファイルを迅速に参照できる可能性が高い。
これにより、ユーザが各拠点に比較的均一に移動する傾向がある場合には、各拠点に対して、ファイルが格納されることとなるので、移動先の拠点において、ファイルを迅速に参照できる可能性が高い。
次に、実施例2で行われる処理を説明する。
図31は、実施例2に係るEdge側のセッション切断処理のフローチャートである。
Edge側のセッション切断処理は、ファイルストレージ装置30がクライアント/ホスト40からセッション切断要求を受け取った場合に実行される。
ファイルストレージ装置30は、クライアント/ホスト40とファイルストレージ装置30との間のセッション切断処理を実行する(ステップS191)。次いで、ファイルストレージ装置30は、セッション切断を要求したユーザのホームディレクトリのレプリケーションとスタブ化を実行する(ステップS192)。この処理は、実施例1に係る図10のステップS17と同様な処理である。
次いで、ファイルストレージ装置30は、セッション切断したEdge10が切断要求したユーザが所属するEdge10であるか否かを判定する(ステップS193)。
この結果、セッション切断したEdge10が、ユーザが所属するEdge10である場合(ステップS193:Yes)には、ファイルストレージ装置30は、Core100のアーカイブストレージ装置120にセッション切断時処理の要求を行い(ステップS194)、セッション切断処理を終了する。一方、セッション切断したEdge10が自分のEdge10でない場合(ステップS193:No)には、ファイルストレージ装置30は、セッション切断処理を終了する。
図32は、実施例2に係るCore側のセッション切断時の処理のフローチャートである。なお、図32のフローチャートは、便宜的に、実現方式1乃至実現方式3における処理をまとめて記載しているが、実際には、アーカイブストレージ装置120が採用しているいずれかの実現方式に対応する部分の処理が実行される。
Core側のセッション切断時処理は、アーカイブストレージ装置120がファイルストレージ装置30から図31のステップS194のセッション切断時処理の要求を受け取った場合に実行される。
アーカイブストレージ装置120が実現方式1を採用している場合には、アーカイブストレージ装置120は、セッション切断時処理要求を受け取ると、設定ファイル131から移動先拠点のIPアドレスと、移動時間を取得し(ステップS201)、取得した移動時間を変数「移動時間合計」に設定し(ステップS209)、処理をステップS210に進める。
また、アーカイブストレージ装置120が実現方式2を採用している場合には、アーカイブストレージ装置120は、セッション切断時処理要求を受け取ると、拠点リスト132から切断するユーザ名に対応するレコードの中の移動回数132dの移動回数が最大であるレコードを取得し(ステップS202)、当該レコードの平均移動時間132eの移動平均時間を変数「移動時間合計」に設定し(ステップS209)、処理をステップS210に進める。
また、アーカイブストレージ装置120が実現方式3を採用している場合には、アーカイブストレージ装置120は、セッション切断時処理要求を受け取ると、ユーザリスト133から、切断要求したユーザのユーザIPが設定されているレコードを選択する(ステップS203)。次いで、アーカイブストレージ装置120は、選択したレコードのセッション切断時刻133cに、セッション切断時処理要求に含まれているセッション切断時刻を記録する(ステップS204)。次いで、アーカイブストレージ装置120は、選択したレコードの転送方式133dを参照して転送方式を特定し(ステップS205)、転送方式が転送方式Aであるか、又は転送方式Bであるかを判定する(ステップS206)。
この結果、転送方式が転送方式Aである場合(ステップS206:転送方式A)には、拠点リスト132からユーザに対応するグレープAに属する拠点のレコードを取得し(ステップS207)、取得した全てのレコードの平均移動時間132eの平均移動時間の和を変数「移動時間合計」に設定し(ステップS209)、処理をステップS210に進める。
一方、転送方式が転送方式Bである場合(ステップS206:転送方式B)には、拠点リスト132から切断要求したユーザに対応する全てのレコードを取得し(ステップS208)、取得した全てのレコードの平均移動時間132eの平均移動時間の和を変数「移動時間合計」に設定し(ステップS209)、処理をステップS210に進める。
ステップS210では、アーカイブストレージ装置120は、変数「転送データ量_TMP」に0を設定する。次いで、アーカイブストレージ装置120は、(式2)変数「転送データ量_TMP」<帯域速度×変数「移動時間合計」を満たすか否かを判定する(ステップS211)。ここで、帯域速度は、実現方式3では、ユーザリスト133の切断要求したユーザのレコードの帯域速度133eの値であり、実現方式2又は実現方式1では、予め設定されている帯域速度である。
この結果、(式2)を満たしている場合(ステップS211:満たす)には、アーカイブストレージ装置120は、変数「転送データ量」に変数「転送データ量_TMP」の値を設定する(ステップS212)。次いで、アーカイブストレージ装置120は、切断要求したユーザのホームディレクトリに属するファイルの中で、最終アクセス日時220eの最終アクセス日時が、転送データ量に反映させたファイルの次に新しいファイルを取得する(ステップS213)。なお、転送データ量に反映させたファイルが存在しない場合には、切断要求したユーザのホームディレクトリに属するファイルの中で、最終アクセス日時220eの最終アクセス日時が最も新しいファイルを取得する。
次いで、アーカイブストレージ装置120は、変数「転送データ量」に、ステップS213で取得したファイルのサイズを反映させた(加算した)値を変数「転送データ量_TMP」に設定し(ステップS214)、処理をステップS211に進める。
ステップS211で、(式2)を満たしていない場合(ステップS211:満たさない)には、転送データ量_TMPに反映させたファイルについて、移動時間合計が示す時間内にデータ転送できないことを意味しているので、アーカイブストレージ装置120は、現在の変数「転送データ量」に反映させたファイル(前回のステップS211の判定において(式2)を満たすと判定された際に反映させていたファイル)を送信対象のファイルとして選択する(ステップS215)。
次いで、アーカイブストレージ装置120は、データ転送速度を決定する(ステップS216)。例えば、データ転送速度は、変数「転送データ量」の値を、拠点リスト132の移動先の拠点に対応するレコードの平均移動時間132eの平均移動時間で除算して得られる。
次いで、アーカイブストレージ装置120は、決定したデータ転送速度と、実際の転送速度とを比較して、送信対象のファイルを送信対象のファイルストレージ装置30に転送するデータ量を制御する(ステップS217)。なお、アーカイブストレージ装置120の動作を起因として、アーカイブストレージ装置120からファイルストレージ装置30へデータを転送できない場合には、以下に示すようなファイルストレージ装置30によるポーリングを利用して、ファイルストレージ装置30へデータを転送してもよい。
次に、ファイルストレージ装置30がポーリングによりファイルのデータをアーカイブストレージ装置120から取得する例を説明する。
図33は、実施例2に係るポーリングによるデータ取得処理の概要を示す図である。
ユーザが移動元拠点(ここでは、例えば、拠点A)で作業をし、セッション切断を行うと、ファイルストレージ装置30からアーカイブストレージ装置120にファイルのレプリケーションが実行され、セッション切断要求がアーカイブストレージ装置120に送信される(図33の(1))。
アーカイブストレージ装置120は、ファイルの転送先の拠点と、転送するファイルを決定する(図33の(2))。ここで、ファイルの転送先としては、例えば、拠点B、拠点C、及び拠点Dに決定したとする。
次いで、アーカイブストレージ装置120は、決定した転送するファイルを、送信データキュー140のファイルの転送先の拠点用のキューにセットする(図33の(3))。この例では、拠点B、拠点C、及び拠点D用のキューに、転送するファイルのデータがセットされる。
その後、各拠点のファイルストレージ装置30がポーリングを行って、アーカイブストレージ装置120の中の自身用のキューにセットされたファイルのデータを取得し(図33の(4))、LU24に取得したデータを格納する。
このデータ取得処理により、アーカイブストレージ装置120の動作を起因としてデータを転送できないファイルストレージ装置30に対して、ファイルのデータを適切に送信することができる。
図34は、実施例2に係るポーリングによるデータ取得処理のフローチャートである。
Edge10のファイルストレージ装置30は、ポーリングを行うタイミングになった際に、自拠点用のキューにデータがあるか否かの確認要求をアーカイブストレージ装置120に送信する(ステップS221)。
アーカイブストレージ装置120は、キューにデータがあるか否かの確認要求を受け取ると、この確認要求に対応するキュー、すなわち、このファイルストレージ装置30の拠点用(自分用)のキューにデータがあるか否かをチェックし(ステップS231)、チェック結果をファイルストレージ装置30に転送する(ステップS232)。
ファイルストレージ装置30は、チェック結果を受け取ると、チェック結果に基づいて、自分用のキューにデータがあるか否かを判定する(ステップS222)。この結果、自分用のキューにデータがある場合(ステップS222:Yes)には、ファイルストレージ装置30は、キューにあるファイルのデータをリコールする(ステップS223)。
すなわち、ファイルストレージ装置30は、ファイルの転送要求をアーカイブストレージ装置120に送信する。アーカイブストレージ装置120は、ファイルの転送要求を受信すると、転送要求に対応するファイルのデータをキューから取得し(ステップS233)、ファイルのデータをファイルストレージ装置30に転送する(ステップS234)。ファイルストレージ装置30は、ファイルのデータを取得すると、このデータをLU24に格納し、データ取得処理を終了する。
一方、自分用のキューにデータがない場合(ステップS222:No)には、ファイルストレージ装置30は、データ取得処理を終了する。
図35は、実施例2に係るEdge側のセッション接続処理のフローチャートである。
Edge側のセッション接続処理は、クライアント/ホスト40からファイルストレージ装置30に対してユーザによるセッション接続要求が来た場合に実行される。
ファイルストレージ装置30は、クライアント/ホスト40とのセッション接続を行う(ステップS251)。次いで、ファイルストレージ装置30は、アーカイブストレージ装置120に対してユーザのホームディレクトリのスタブ情報の取得要求を行う(ステップS252)。これにより、アーカイブストレージ装置120からホームディレクトリのスタブ情報が取得できることとなる。次いで、ファイルストレージ装置30は、取得したスタブ情報に基づいて、ホームディレクトリを作成する(ステップS253)。
ファイルストレージ装置30は、セッション接続したEdge10(セッション接続したファイルストレージ装置30が属するEdge10)が、接続したユーザの所属するEdge10であるか否かを判定する(ステップS254)。この結果、セッション接続したEdge10が、接続したユーザが所属するEdge10である場合(ステップS254:Yes)には、ファイルストレージ装置30は、処理を終了する。
一方、セッション接続したEdge10が、接続したユーザが所属するEdge10でない場合(ステップS254:No)には、ファイルストレージ装置30は、アーカイブストレージ装置120にセッション接続処理要求を送信し(ステップS255)、処理を終了する。アーカイブストレージ装置120は、セッション接続処理要求を受け取ると、図36に示すCore側のセッション接続処理を実行する。
図36は、実施例2に係るCore側のセッション接続処理のフローチャートである。
Core側のセッション接続処理は、アーカイブストレージ装置120が、ファイルストレージ装置30からセッション接続処理要求を受け取った場合に実行される。セッション接続処理要求には、セッション接続を要求したユーザのユーザ名、接続した拠点のIPアドレス、及びセッション接続時刻等が含まれている。
アーカイブストレージ装置120は、ユーザリスト133を参照し、セッション接続要求を行ったユーザ名に対応するレコードを選択する(ステップS261)。次いで、アーカイブストレージ装置120は、拠点リスト132を参照し、移動先拠点132bの移動先拠点がセッション接続処理要求に含まれている接続した拠点のIPアドレスであり、且つユーザ名132aのユーザ名及びユーザIP132cのユーザIPが、ステップS261で取得したレコードのユーザ名133aのユーザ名及びユーザIP133bのユーザIPであるレコードを特定する(ステップS262)。
次いで、アーカイブストレージ装置120は、以下の(式3)により平均移動時間を算出し、特定したレコードの平均移動時間132dの平均移動時間を更新する(ステップS263)。(式3)平均移動時間 =((セッション接続処理要求中のセッション接続時刻−ステップS261で選択したレコードのセッション切断時刻133cのセッション切断時刻)+ステップS262で特定したレコードの平均移動時間132eの平均移動時間)/2
次いで、アーカイブストレージ装置120は、特定したレコードの移動回数132dの移動回数に1を加算する(ステップS264)。これにより、実際のユーザの拠点の移動に応じた平均移動時間及び移動回数がユーザリスト132に反映されることとなる。
ステップS264の後の処理は、採用している実現方式に応じて異なっている。ここで、実現方式1又は実現方式2においては、アーカイブストレージ装置120は、セッション接続処理を終了する。一方、実現方式3の場合には、アーカイブストレージ装置120は、処理をステップS266に進める。
ステップS266では、アーカイブストレージ装置120は、拠点リスト132のセッション接続したユーザ名に対応するレコードに基づいて、各移動先拠点132bの移動先拠点を、グループAと、グループBとに分ける。
更に、アーカイブストレージ装置120は、これらレコードに基づいて、グループAに分けられた移動先拠点に対応するレコードの移動回数132dの移動回数の合計(グループA移動回数合計)と、グループBに分けられた移動先拠点に対応するレコードの移動回数132dの移動回数の合計(グループB移動回数合計)とを算出し、グループA移動回数合計が、Bグループ移動回数合計よりも大きいか否かを判定する(ステップS267)。
この結果、グループA移動回数合計が、Bグループ移動回数合計よりも大きい場合(ステップS267:Yes)には、アーカイブストレージ装置120は、ステップS261で選択したレコードの転送方式133dに転送方式Aを設定し(ステップS268)、処理を終了する。
一方、グループA移動回数合計が、Bグループ移動回数合計よりも大きくない場合(ステップS267:No)には、アーカイブストレージ装置120は、ステップS261で選択したレコードの転送方式133dに転送方式Bを設定し(ステップS269)、処理を終了する。この処理により、ユーザの拠点の移動傾向に応じて、転送方式A又は転送方式Bのいずれとするかを適切に決定することができる。
以上、いくつかの実施例を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。