ファイル・システムの仮想化のための方法および装置、ファイル・システムの仮想化のためのデータ・ストレージ・システム、ならびにデータ・ストレージ・システム内で使用するためのファイル・サーバ

著者らは特許

G06F3/06 - 記録担体からのデジタル入力または記録担体へのデジタル出力
G06F17/30 - 情報検索;そのためのデータベース構造
H04L1 - 受信情報中の誤りを検出または防止するための配置

の所有者の特許 JP2016527617:

ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited

 

本発明は、複数のクライアント・コンピュータ100と第2のファイル・システムを管理し、第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニット410とを備えるデータ・ストレージ・システムにおいて第2のファイル・システムへの間接的アクセスを可能にする仮想化されたファイル・システムを実現するための方法および装置に関するものであり、この方法は複数のクライアント・コンピュータ100と第2のファイル・システム管理ユニット410との間で第1のファイル・システム管理ユニット310を相互接続することと、第1のファイル・システム管理ユニット310によって管理される第1のファイル・システム内に第1のディレクトリ/rootを作成することと、第2のファイル・システムの第1のディレクトリ/rootを第1のファイル・システムの第1のディレクトリ/rootに関連付けることと、第1のファイル・システム管理ユニット310においてクライアント・コンピュータ100から受信されたクライアント要求に基づき、また第1のファイル・システムの第1のディレクトリと第2のファイル・システムの第1のディレクトリとの間の関連付けに基づき第1のファイル・システム管理ユニット310による第2のファイル・システムのオンデマンド仮想化を可能にすることと、第1のファイル・システムを通じて第2のファイル・システムへの間接的クライアント・アクセスを可能にすることとを含む。

 

 

本発明は、ファイル・システムの仮想化のための方法、ならびに装置およびデータ・ストレージ・システム(data storage system)、ならびにそのようなデータ・ストレージ・システムにおいて使用するためのファイル・サーバに関するものである。
従来技術には、例えば以下の図1Aに関連して説明されているような知られているデータ・ストレージ・システムがあり、そこでは、複数のクライアント・コンピュータがクライアント・コンピュータによるI/Oアクセスのため1つまたは複数のファイル・システムを管理する1つまたは複数のファイル・サーバ・システムと通信ネットワークを介して接続されている。
いくつかの時点において、例えば、より新しいファイル・サーバは、より多くのファイル・システムまたはより大きいファイル・システムを管理し(より大きいデータ記憶空間および/またはより多くのファイル・システム・オブジェクトを有効化することを含む)、より効率的な入出力(I/O)の実行を有効化し、より大きいストレージ・ユニットまたはより効率的なストレージ・デバイス技術を収容するストレージ・ユニットの使用を可能にするように適合され得るので、データ・ストレージ・システム全体の性能を改善するために1つまたは複数の(レガシー)ファイル・サーバを新しいファイル・サーバと交換することが望ましい場合がある。それでも、ファイル・システム構造(既存のファイル・ツリー構造など)およびそのユーザ・データ(ファイル・コンテンツ)を含むすでに存在しているファイル・システム(複数可)を保持することが望ましい場合があるが、原理上、ユーザが中断なしで、または少なくとも、できる限り短い単一の中断のみで既存のファイル・システム(複数可)にアクセスすることを可能にすることが望ましい。ハードウェア・ベースのファイル・システムに対する装置および方法の一例は、米国特許第7,457,822B1号において説明されており、これは参照により本明細書に組み込まれている。
以下でさらに詳しく説明されているように、本発明の実施形態は、データ・ストレージ・システムおよびその部品に関係するものとしてよく、そこでは、(新しい)第1のファイル・システム管理ユニットは、複数のクライアント・コンピュータと、クライアント・コンピュータによってアクセス可能な1つまたは複数のファイル・システムを管理する(レガシー)第2のファイル・システム管理ユニットとの間で相互接続される。
(新しい)第1のファイル・システム管理ユニットを相互接続した後に、(新しい)第1のファイル・システム管理ユニットを通じて、クライアント・コンピュータによる(レガシー)第2のファイル・システム管理ユニットの1つまたは複数のファイル・システムへのI/Oアクセスが達成され得る。仮想化と称される第1のフェーズにおいて、(レガシー)第2のファイル・システム管理ユニットの1つまたは複数のファイル・システムは、(新しい)第1のファイル・システム管理ユニットの1つまたは複数の仮想化されたファイル・システムによって表されるものとしてよく、仮想化されたファイル・システムは仮想化フェーズにおいて徐々に構築される。マイグレーションと称される、第2のフェーズ(仮想化フェーズとオーバーラップし得る)では、(レガシー)第2のファイル・システム管理ユニットの1つまたは複数のファイル・システムのユーザ・データは、(新しい)第1のファイル・システム管理ユニットにマイグレーションされ得る。
本発明によれば、目的は、第2のファイル・システムへの間接的アクセスを可能にし、第2のファイル・システムへのクライアント・アクセスを可能にする仮想化されたファイル・システムを構築し、実現するための方法、および装置、データ・ストレージ・システムおよびファイル・サーバを実現することである。
いくつかの実施形態によれば、複数のクライアント・コンピュータと、第2のファイル・システムを管理し、第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニットと、複数のクライアント・コンピュータと第2のファイル・システム管理ユニットとの間で相互接続されている第1のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて第2のファイル・システムへの間接的アクセスを可能にする仮想化されたファイル・システムを実現するための装置が実現され得る。
いくつかの実施形態では、装置は、第1のファイル・システム管理ユニットによって管理される第1のファイル・システム内に第1のディレクトリを作成し、第2のファイル・システムの第1のディレクトリを第1のファイル・システムの第1のディレクトリに関連付け、第1のファイル・システム管理ユニットにおいてクライアント・コンピュータから受信されたクライアント要求に基づき、また第1のファイル・システムの第1のディレクトリと第2のファイル・システムの第1のディレクトリとの間の関連付けに基づき第1のファイル・システム管理ユニットによる第2のファイル・システムのオンデマンド仮想化を可能にし、および/または第1のファイル・システムを通じて第2のファイル・システムへの間接的クライアント・アクセスを行うことを可能にするように適合された第1のファイル・システム管理ユニットを備え得る。これは、基本的に第2のファイル・システムへのクライアント・アクセスが、第1のファイル・システム管理ユニットを通じて間接的に第1のファイル・システム管理ユニットを相互接続した直後に可能にされ得るという利点を有する。
いくつかの実施形態では、オンデマンド仮想化を実行するために、第1のファイル・システム管理ユニットは、クライアント・コンピュータから、第2のファイル・システムの第1のディレクトリに関する第2のパス・ロケーションにおいて第2のファイル・システムの第2のディレクトリに向けられたアクセス要求を受信し、第2のファイル・システムの第2のディレクトリに向けられたアクセス要求を受信した後に、第1のファイル・システムの第1のディレクトリに関する第2のパス・ロケーションにおいて第1のファイル・システム内に第2のディレクトリを作成し、および/または第2のファイル・システムの第2のディレクトリのメタデータを第1のファイル・システム内に第1のファイル・システムの第2のディレクトリのメタデータとして記憶するように適合され得る。
いくつかの実施形態では、第1のファイル・システム管理ユニットは、アクセス要求が、第2のファイル・システムの第2のディレクトリを修正することを求める要求であるときには、受信されたアクセス要求に従って第1のファイル・システムの第2のディレクトリを修正し、アクセス要求を第2のファイル・システム管理ユニットに送信して第2のファイル・システム管理ユニットによる受信されたアクセス要求に従って第2のファイル・システムの第2のディレクトリを修正し、および/またはアクセス要求が、第2のファイル・システムの第2のディレクトリの属性を読み出すことを求める要求であるときには、第1のファイル・システムの第2のディレクトリのメタデータに基づき第2のファイル・システムの第2のディレクトリの要求された属性を返すように適合され得る。
いくつかの実施形態では、オンデマンド仮想化を実行するために、第1のファイル・システム管理ユニットは、クライアント・コンピュータから、第2のファイル・システムの第1のディレクトリに関する第1のパス・ロケーションにおいて第2のファイル・システムの第1のファイルに向けられたアクセス要求を受信し、第2のファイル・システムの第1のファイルに向けられたアクセス要求を受信した後に、第1のファイル・システムの第1のディレクトリに関する第1のパス・ロケーションにおいて第1のファイル・システム内に第1の外部リンク・オブジェクトを作成し、および/または第2のファイル・システムの第1のファイルのメタデータを第1のファイル・システム内に第1のファイル・システムの第1の外部リンク・オブジェクトと一緒に第1のファイルのメタデータとして記憶するように適合され得る。
いくつかの実施形態では、外部リンク・オブジェクトは、第1のファイル・システムにおいて第2のファイル・システムの第1のファイルを表す、第2のファイル・システムの第1のファイルへのアクセスを可能にする第1のファイル・システムのファイル・システム・オブジェクトであってよく、第1の外部リンク・オブジェクトは第2のファイル・システム内の第1のファイルの固有オブジェクトIDおよび第2のファイル・システムの第1のディレクトリに関する第1のパス・ロケーションを少なくとも示すリンク・データを含む。
いくつかの実施形態では、第1のファイル・システム管理ユニットは、アクセス要求が、第2のファイル・システムの第1のファイルを修正することを求める要求であるときには、第1の外部リンク・オブジェクトのリンク・データに基づきアクセス要求を第2のファイル・システム管理ユニットに送信して第2のファイル・システム管理ユニットによる受信されたアクセス要求に従って第2のファイル・システムの第1のファイルを修正し、および/またはアクセス要求が、第2のファイル・システムの第1のファイルの属性を読み出すことを求める要求であるときには、第1の外部リンク・オブジェクトのメタデータに基づき第2のファイル・システムの第1のファイルの要求された属性を返すように適合され得る。
いくつかの実施形態では、第1のファイル・システム管理ユニットは、第1のファイル・システム管理ユニットにおいてクライアント・コンピュータから受信されたクライアント要求と無関係に、第1のファイル・システム管理ユニットによって管理される仮想化管理情報に基づき、第1のファイル・システムの第1のディレクトリと第2のファイル・システムの第1のディレクトリとの間の関連付けに基づき、第1のファイル・システム管理ユニットによる第2のファイル・システムの自動仮想化を可能にするように適合されるものとしてよく、仮想化管理情報は第2のファイル・システム内に存在する第1のディレクトリを少なくとも示す。
いくつかの実施形態では、自動仮想化を実行するために、第1のファイル・システム管理ユニットは、第2のファイル・システム管理ユニットに、仮想化管理情報で示される第2のファイル・システムのターゲット・ディレクトリに向けられたディレクトリ情報要求を送信し、第2のファイル・システムのターゲット・ディレクトリ内に存在する子オブジェクトを示す情報を要求し、第2のファイル・システム管理ユニットから、ディレクトリ情報要求に応答して第2のファイル・システムのターゲット・ディレクトリに存在する子オブジェクトを示す情報を受信し、および/または第2のファイル・システムのターゲット・ディレクトリに存在する子オブジェクトを示す受信された情報に基づき仮想化管理情報を更新するように適合され得る。
いくつかの実施形態では、自動仮想化を実行するために、第1のファイル・システム管理ユニットは、仮想化管理情報で示されているような第2のファイル・システムのターゲット・ディレクトリに存在する各子オブジェクトについて、第2のファイル・システムの第1のディレクトリに関する関連付けられている子オブジェクトのパス・ロケーションに対応する第1のファイル・システムの第1のディレクトリに関するパス・ロケーションにおいて関連付けられているファイル・システム・オブジェクトを第1のファイル・システム内に作成するように適合され得る。
いくつかの実施形態では、ディレクトリ情報要求を前記送信することは、第2のファイル・システムの複数のターゲット・ディレクトリに対して第1のファイル・システム管理ユニットによって自動的に繰り返され、および/または仮想化管理情報で示されているような第2のファイル・システムのターゲット・ディレクトリに存在する各子オブジェクトについて、第1のファイル・システム内の関連付けられているファイル・システム・オブジェクトを前記作成することは、複数のターゲット・ディレクトリの各々に対して第1のファイル・システム管理ユニットによって繰り返され得る。
いくつかの実施形態では、第2のファイル・システムの複数のターゲット・ディレクトリについてディレクトリ情報要求を前記繰り返し送信すること、および複数のターゲット・ディレクトリの子ディレクトリの各々について第1のファイル・システム内に関連付けられているファイル・システム・オブジェクトを前記繰り返し作成することは、第1のファイル・システム管理ユニットによって並行して実行され得る。
いくつかの実施形態では、第2のファイル・システムの複数のターゲット・ディレクトリに対するディレクトリ情報要求を前記繰り返し送信する単位時間当たりの実行速度は、第1のファイル・システム管理ユニットのバッファ・ユニットのストレージ占有率に基づき第1のファイル・システム管理ユニットによって制御され得る。
いくつかの実施形態では、第2のファイル・システムの複数のターゲット・ディレクトリに対するディレクトリ情報要求を前記繰り返し送信する単位時間当たりの実行速度は、第1のファイル・システム管理ユニットと第2のファイル・システム管理ユニットとの間の通信チャネルの可用率の率に基づき第1のファイル・システム管理ユニットによって制御され得る。
いくつかの実施形態では、作成されたファイル・システム・オブジェクトは、関連付けられている子オブジェクトが第2のファイル・システムの第3のディレクトリであるときに第1のファイル・システムの第3のディレクトリであってよい。
いくつかの実施形態では、自動仮想化を実行するために、第1のファイル・システム管理ユニットは、第1のファイル・システムの作成された第3のディレクトリ内に自己参照リンクを作成し、第2のファイル・システム内の関連付けられている第3のディレクトリの子ディレクトリの数に基づき第1のファイル・システムの作成された第3のディレクトリに対してフェイク・リンク・カウント(fake link count)を計算し、および/または第1のファイル・システムの作成された第3のディレクトリのメタデータ内に計算されたフェイク・リンク・カウントを記憶するようにさらに適合され得る。
いくつかの実施形態では、第1のファイル・システム管理ユニットは、第2のファイル・システムの第3のディレクトリの子ディレクトリに関連付けられている第1のファイル・システムの第3のディレクトリ内の子ディレクトリを自動的に作成するときに第2のファイル・システム内の第3のディレクトリに関連付けられている第1のファイル・システムの第3のディレクトリのメタデータに記憶されているフェイク・リンク・カウントをデクリメントするように適合され得る。
いくつかの実施形態では、第1のファイル・システム管理ユニットは、クライアント・コンピュータのうちの1つから、第2のファイル・システムの第3のディレクトリのリンク・カウントを読み出すことを求める要求を受信し、第1のファイル・システムの第3のディレクトリのフェイク・リンク・カウントと第1のファイル・システムの第3のディレクトリの実リンク・カウントとを加算することによって第2のファイル・システムの第3のディレクトリのリンク・カウントを計算し、および/または要求に応答して計算されたリンク・カウントをクライアント・コンピュータに送信するようにさらに適合され得る。
いくつかの実施形態では、作成されたファイル・システム・オブジェクトは、それぞれの子オブジェクトが第2のファイル・システムの第2のファイルであるときに第2の外部リンク・オブジェクトであるものとしてよく、第2の外部リンク・オブジェクトは第1のファイル・システムにおいて第2のファイル・システムの第2のファイルを表し、第2のファイル・システムの第2のファイルへのアクセスを可能にし、第2の外部リンク・オブジェクトは第2のファイル・システム内の第2のファイルの固有オブジェクトIDおよび第2のファイル・システムの第1のディレクトリに関する第2のファイルのパス・ロケーションを少なくとも示すリンク・データを含む。
いくつかの実施形態では、第1のファイル・システム管理ユニットは、仮想化管理情報を複数のデータ・ブロックに分割し、および/または、各データ・ブロックについて、仮想化管理情報のデータ・ブロックの各々のバックアップ・コピーを繰り返し生成するようにさらに適合され得る。
いくつかの実施形態では、複数のデータ・ブロックの第1のデータ・ブロックは、第2のファイル・システムの第4のディレクトリに関連付けられている管理データを含み、1つまたは複数の第2のデータ・ブロックは、第2のファイル・システムの第4のディレクトリの子ディレクトリに関連付けられている管理データを含むものとしてよく、第1のファイル・システム管理ユニットは、第1のデータ・ブロックのバックアップ・コピーを生成する前に1つまたは複数の第2のデータ・ブロックの各々のバックアップ・コピーを生成するように適合され得る。
別の態様のいくつかの実施形態によれば、複数のクライアント・コンピュータと第2のファイル・システムを管理し、第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて第2のファイル・システムへの間接的アクセスを可能にする仮想化されたファイル・システムを実現するための方法が提供され得る。
この方法は、複数のクライアント・コンピュータと第2のファイル・システム管理ユニットとの間で第1のファイル・システム管理ユニットを相互接続すること、第1のファイル・システム管理ユニットによって管理される第1のファイル・システム内に第1のディレクトリを作成すること、第2のファイル・システムの第1のディレクトリを第1のファイル・システムの第1のディレクトリに関連付けること、第1のファイル・システム管理ユニットにおいてクライアント・コンピュータから受信されたクライアント要求に基づき、また第1のファイル・システムの第1のディレクトリと第2のファイル・システムの第1のディレクトリとの間の関連付けに基づき第1のファイル・システム管理ユニットによる第2のファイル・システムのオンデマンド仮想化を可能にすること、および/または第1のファイル・システムを通じて第2のファイル・システムへの間接的クライアント・アクセスを行うことを可能にすることを含み得る。
いくつかの実施形態におけるオンデマンド仮想化は、第1のファイル・システム管理ユニットにおいて、第2のファイル・システムの第1のディレクトリに関する第2のパス・ロケーションにおいて第2のファイル・システムの第2のディレクトリに向けられたアクセス要求を受信すること、第2のファイル・システムの第2のディレクトリに向けられたアクセス要求を受信した後に、第1のファイル・システムの第1のディレクトリに関する第2のパス・ロケーションにおいて第1のファイル・システム内に第2のディレクトリを作成すること、および/または第2のファイル・システムの第2のディレクトリのメタデータを第1のファイル・システム内に第1のファイル・システムの第2のディレクトリのメタデータとして記憶することを含み得る。
いくつかの実施形態では、アクセス要求が、第2のファイル・システムの第2のディレクトリを修正することを求める要求であるときには、この方法は、受信されたアクセス要求に従って第1のファイル・システムの第2のディレクトリを修正することと、アクセス要求を第2のファイル・システム管理ユニットに送信することと、受信されたアクセス要求に従って第2のファイル・システムの第2のディレクトリを修正することとをさらに含み得る。
いくつかの実施形態では、アクセス要求が、第2のファイル・システムの第2のディレクトリの属性を読み出すことを求める要求であるときには、この方法は、第1のファイル・システムの第2のディレクトリのメタデータに基づき第2のファイル・システムの第2のディレクトリの要求された属性を返すことをさらに含み得る。
いくつかの実施形態におけるオンデマンド仮想化は、第1のファイル・システム管理ユニットにおいて、第2のファイル・システムの第1のディレクトリに関する第1のパス・ロケーションにおいて第2のファイル・システムの第1のファイルに向けられたアクセス要求を受信すること、第2のファイル・システムの第1のファイルに向けられたアクセス要求を受信した後に、第1のファイル・システムの第1のディレクトリに関する第1のパス・ロケーションにおいて第1のファイル・システム内に第1の外部リンク・オブジェクトを作成すること、および/または第2のファイル・システムの第1のファイルのメタデータを第1のファイル・システム内に第1のファイル・システムの第1の外部リンク・オブジェクトと一緒に第1のファイルのメタデータとして記憶することを含み得る。
外部リンク・オブジェクトは、第1のファイル・システムにおいて第2のファイル・システムの第1のファイルを表す、第2のファイル・システムの第1のファイルへのアクセスを可能にする第1のファイル・システムのファイル・システム・オブジェクトであってよく、第1の外部リンク・オブジェクトは好ましくは第2のファイル・システム内の第1のファイルの固有オブジェクトIDおよび第2のファイル・システムの第1のディレクトリに関する第1のパス・ロケーションを少なくとも示すリンク・データを含む。
いくつかの実施形態では、アクセス要求が、第2のファイル・システムの第1のファイルを修正することを求める要求であるときには、この方法は、第1の外部リンク・オブジェクトのリンク・データに基づきアクセス要求を第2のファイル・システム管理ユニットに送信することと、受信されたアクセス要求に従って第2のファイル・システムの第1のファイルを修正することとをさらに含み得る。
いくつかの実施形態では、アクセス要求が、第2のファイル・システムの第1のファイルの属性を読み出すことを求める要求であるときには、この方法は、第1の外部リンク・オブジェクトのメタデータに基づき第2のファイル・システムの第1のファイルの要求された属性を返すことをさらに含み得る。
いくつかの実施形態では、この方法は、第1のファイル・システム管理ユニットにおいてクライアント・コンピュータから受信されたクライアント要求と無関係に、および/または第1のファイル・システム管理ユニットによって管理される仮想化管理情報に基づき、第1のファイル・システムの第1のディレクトリと第2のファイル・システムの第1のディレクトリとの間の関連付けに基づき、第1のファイル・システム管理ユニットによる第2のファイル・システムの自動仮想化を可能にすることをさらに含むものとしてよく、仮想化管理情報は好ましくは第2のファイル・システム内に存在する第1のディレクトリを少なくとも示す。
いくつかの実施形態における自動仮想化は、第1のファイル・システム管理ユニットから第2のファイル・システム管理ユニットに、仮想化管理情報で示される第2のファイル・システムのターゲット・ディレクトリに向けられたディレクトリ情報要求を送信し、第2のファイル・システムのターゲット・ディレクトリ内に存在する子オブジェクトを示す情報を要求すること、第2のファイル・システム管理ユニットから、第1のファイル・システム管理ユニットにおいて、ディレクトリ情報要求に応答して第2のファイル・システムのターゲット・ディレクトリに存在する子オブジェクトを示す情報を受信すること、および/または第2のファイル・システムのターゲット・ディレクトリに存在する子オブジェクトを示す受信された情報に基づき仮想化管理情報を更新することを含み得る。
いくつかの実施形態における自動仮想化は、仮想化管理情報で示されているような第2のファイル・システムのターゲット・ディレクトリに存在する各子オブジェクトについて、第2のファイル・システムの第1のディレクトリに関する関連付けられている子オブジェクトのパス・ロケーションに対応する第1のファイル・システムの第1のディレクトリに関するパス・ロケーションにおいて関連付けられているファイル・システム・オブジェクトを第1のファイル・システム内に作成することをさらに含み得る。
いくつかの実施形態では、ディレクトリ情報要求を前記送信することは、第2のファイル・システムの複数のターゲット・ディレクトリに対して自動的に繰り返され、および/または仮想化管理情報で示されているような第2のファイル・システムのターゲット・ディレクトリに存在する各子オブジェクトについて、第1のファイル・システム内の関連付けられているファイル・システム・オブジェクトを前記作成することは、複数のターゲット・ディレクトリの各々に対して繰り返される。
いくつかの実施形態では、第2のファイル・システムの複数のターゲット・ディレクトリについてディレクトリ情報要求を前記繰り返し送信すること、および複数のターゲット・ディレクトリの子ディレクトリの各々について第1のファイル・システム内に関連付けられているファイル・システム・オブジェクトを前記繰り返し作成することは、並行して実行され得る。
いくつかの実施形態では、第2のファイル・システムの複数のターゲット・ディレクトリに対するディレクトリ情報要求を前記繰り返し送信する単位時間当たりの実行速度は、第1のファイル・システム管理ユニットのバッファ・ユニットのストレージ占有率に基づき制御され得る。
いくつかの実施形態では、第2のファイル・システムの複数のターゲット・ディレクトリに対するディレクトリ情報要求を前記繰り返し送信する単位時間当たりの実行速度は、第1のファイル・システム管理ユニットと第2のファイル・システム管理ユニットとの間の通信チャネルの可用率の率に基づき制御され得る。
いくつかの実施形態では、作成されたファイル・システム・オブジェクトは、関連付けられている子オブジェクトが第2のファイル・システムの第3のディレクトリであるときに第1のファイル・システムの第3のディレクトリであってよい。
いくつかの実施形態における自動仮想化は、第1のファイル・システムの作成された第3のディレクトリ内に自己参照リンクを作成すること、第2のファイル・システム内の関連付けられている第3のディレクトリの子ディレクトリの数に基づき第1のファイル・システムの作成された第3のディレクトリに対してフェイク・リンク・カウントを計算すること、および/または第1のファイル・システムの作成された第3のディレクトリのメタデータ内に計算されたフェイク・リンク・カウントを記憶することをさらに含み得る。
いくつかの実施形態では、この方法は、第2のファイル・システムの第3のディレクトリの子ディレクトリに関連付けられている第1のファイル・システムの第3のディレクトリ内の子ディレクトリを自動的に作成するときに、第2のファイル・システム内の第3のディレクトリに関連付けられている第1のファイル・システムの第3のディレクトリのメタデータに記憶されているフェイク・リンク・カウントをデクリメントすることをさらに含み得る。
いくつかの実施形態では、この方法は、クライアント・コンピュータのうちの1つから、第1のファイル・システム管理ユニットにおいて、第2のファイル・システムの第3のディレクトリのリンク・カウントを読み出すことを求める要求を受信すること、第1のファイル・システムの第3のディレクトリのフェイク・リンク・カウントと第1のファイル・システムの第3のディレクトリの実リンク・カウントとを加算することによって、第1のファイル・システム管理ユニットにおいて、第2のファイル・システムの第3のディレクトリのリンク・カウントを計算すること、および/または要求に応答して計算されたリンク・カウントをクライアント・コンピュータに送信することをさらに含み得る。
いくつかの実施形態では、作成されたファイル・システム・オブジェクトは、それぞれの子オブジェクトが第2のファイル・システムの第2のファイルであるときに第2の外部リンク・オブジェクトであるものとしてよく、第2の外部リンク・オブジェクトは好ましくは第1のファイル・システムにおいて第2のファイル・システムの第2のファイルを表し、第2のファイル・システムの第2のファイルへのアクセスを可能にし、第2の外部リンク・オブジェクトは好ましくは第2のファイル・システム内の第2のファイルの固有オブジェクトIDおよび第2のファイル・システムの第1のディレクトリに関する第2のファイルのパス・ロケーションを少なくとも示すリンク・データを含む。
いくつかの実施形態では、この方法は、仮想化管理情報を複数のデータ・ブロックに分割することと、各データ・ブロックについて、仮想化管理情報のデータ・ブロックの各々のバックアップ・コピーを繰り返し生成することとをさらに含み得る。
いくつかの実施形態では、複数のデータ・ブロックの第1のデータ・ブロックは、第2のファイル・システムの第4のディレクトリに関連付けられている管理データを含み、1つまたは複数の第2のデータ・ブロックは、第2のファイル・システムの第4のディレクトリの子ディレクトリに関連付けられている管理データを含み、この方法は、好ましくは、第1のデータ・ブロックのバックアップ・コピーを生成する前に1つまたは複数の第2のデータ・ブロックの各々のバックアップ・コピーを生成することをさらに含む。
別の態様によれば、複数のクライアント・コンピュータと、第2のファイル・システムを管理し、第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニットと、複数のクライアント・コンピュータと第2のファイル・システム管理ユニットとの間で相互接続されている第1のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて第2のファイル・システムへの間接的アクセスを可能にする仮想化されたファイル・システムを実現するための装置が実現され得る。
装置は、第1のファイル・システム管理ユニットによって管理される第1のファイル・システム内に第1のディレクトリを作成し、第2のファイル・システムの第1のディレクトリを第1のファイル・システムの第1のディレクトリに関連付け、第1のファイル・システム管理ユニットにおいてクライアント・コンピュータから受信されたクライアント要求に基づき、また第1のファイル・システムの第1のディレクトリと第2のファイル・システムの第1のディレクトリとの間の関連付けに基づき第1のファイル・システム管理ユニットによる第2のファイル・システムのオンデマンド仮想化を可能にし、および/または第1のファイル・システムを通じて第2のファイル・システムへの間接的クライアント・アクセスを行うことを可能にするように適合される第1のファイル・システム管理ユニットを備え得る。
いくつかの実施形態では、装置の第1のファイル・システム管理ユニットは、いくつかの実施形態に関連して上で説明されている態様のうちの1つまたは複数の態様のステップを実行するようにさらに適合され得る。
別の態様によれば、複数のクライアント・コンピュータと、第2のファイル・システムを管理し、第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニットと、複数のクライアント・コンピュータと第2のファイル・システム管理ユニットとの間で相互接続されている第1のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて第2のファイル・システムへの間接的アクセスを可能にする仮想化されたファイル・システムを実現するためのデータ・ストレージ・システムが実現されるものとしてよく、第1のファイル・システム管理ユニットは好ましくは第1のファイル・システム管理ユニットによって管理される第1のファイル・システム内に第1のディレクトリを作成し、第2のファイル・システムの第1のディレクトリを第1のファイル・システムの第1のディレクトリに関連付け、第1のファイル・システム管理ユニットにおいてクライアント・コンピュータから受信されたクライアント要求に基づき、また第1のファイル・システムの第1のディレクトリと第2のファイル・システムの第1のディレクトリとの間の関連付けに基づき第1のファイル・システム管理ユニットによる第2のファイル・システムのオンデマンド仮想化を可能にし、および/または第1のファイル・システムを通じて第2のファイル・システムへの間接的クライアント・アクセスを行うことを可能にするように適合される。
いくつかの実施形態では、データ・ストレージ・システムの第1のファイル・システム管理ユニットは、いくつかの実施形態に関連して上で説明されている態様のうちの1つまたは複数の態様のステップを実行するようにさらに適合され得る。
別の態様によれば、好ましくはいくつかの実施形態に関連して上で説明されているような第1のファイル・システム管理ユニットを備える、上で説明されているようなデータ・ストレージ・システムにおいて使用するためのファイル・システム・サーバが実現され得る。
別の態様によれば、データ・ストレージ・システム内のファイル・システム管理ユニットの処理ユニットにいくつかの実施形態に関連して上で説明されている態様のうちの1つまたは複数の態様のステップを実行させるように構成されているコンピュータ・プログラム・コード手段を備えるコンピュータ・プログラム製品が提供され得る。
データ・ストレージ・システムの一例を示す図である。 追加のストレージ装置を相互接続している図1Aのデータ・ストレージ・システムの一例を示す図である。 データ・ストレージ・システムの別の例を示す図である。 データ・ストレージ・システムの別の例を示す図である。 ファイル・システム管理ユニットの構造の概略図を示す例示的な図である。 仮想およびマイグレーション・ユニットの構造の概略機能図を示す例示的な図である。 ファイル・システムのツリー構造の一例を示す図である。 図4のツリー構造に基づく仮想化されたファイル・システムのツリー構造の一例を示す図である。 図4のツリー構造に基づく他の仮想化されたファイル・システムのツリー構造の例を示す図である。 図4のツリー構造に基づく他の仮想化されたファイル・システムのツリー構造の例を示す図である。 仮想化の初期化のための方法を示す例示的な流れ図を示す図である。 自動バックグラウンド仮想化のための情報交換を示す図である。 仮想化の際の第1の時点における仮想化管理情報テーブルの一例を示す図である。 部分的に仮想化されたファイル・システムのツリー構造の一例を示す図である。 仮想化の際の第2の時点における仮想化管理情報テーブルの一例を示す図である。 自動バックグラウンド仮想化のための情報交換を示す別の図である。 仮想化の際の第3の時点における仮想化管理情報テーブルの一例を示す図である。 部分的に仮想化されたファイル・システムのツリー構造の一例を示す図である。 自動バックグラウンド仮想化管理の例示的な流れ図を示す図である。 自動バックグラウンド仮想化の例示的な流れ図を示す図である。 自動バックグラウンド・マイグレーションの別の例示的な流れ図を示す図である。 仮想化されたファイルに対する外部リンク・オブジェクトの例示的な概略データ構造を示す図である。 仮想化されたディレクトリに対するメタデータの例示的な概略データ構造を示す図である。 オンデマンド仮想化のための情報交換を示す図である。 図18によるオンデマンド仮想化の後の部分的に仮想化されたファイル・システムのツリー構造の一例を示す図である。 仮想化の際にユーザのファイル・アクセスを可能にするための方法を示す例示的な流れ図を示す図である。 仮想化の際に属性アクセスを可能にするための方法を示す例示的な流れ図を示す図である。 仮想化の際にユーザのディレクトリ・アクセスを可能にするための方法を示す例示的な流れ図を示す図である。 仮想化の際にユーザのディレクトリ・アクセスを可能にするための方法を示す例示的な流れ図を示す図である。 仮想化管理テーブルのバックアップのための方法を示す例示的な流れ図を示す図である。 図4のファイル・システムのツリーの仮想化が完了した後の仮想化管理情報テーブルの一例を示す図である。 仮想化されたファイルへの書き込みアクセスのための情報交換を示す図である。 仮想化されたファイルへの読み出しアクセスのための情報交換を示す図である。 仮想化されたファイルまたはディレクトリへの属性アクセスのための情報交換を示す図である。 仮想化されたファイルを削除するための情報交換を示す図である。 ファイル作成のための情報交換を示す図である。 属性を変更するための情報交換を示す図である。 ディレクトリ作成のための情報交換を示す図である。 ディレクトリの名前を変更するための情報交換を示す図である。
次に、本発明の好ましい態様および実施形態が、添付の図を参照しつつより詳細に説明される。異なる図面および実施形態における同じもしくは類似の特徴は、類似の参照番号によって参照される。さまざまな好ましい態様および好ましい実施形態に関係する以下の詳細な説明は、本発明の範囲を制限することを意図していないことは理解されるであろう。
図1Aは、通信ネットワーク200を介して第2のストレージ装置400に接続されている複数のクライアント・コンピュータ100(クライアント)を備えるデータ・ストレージ・システムの一例を示している。第2のストレージ装置400は、1つまたは複数のファイル・システムを管理するためのファイル・システム管理ユニット410と、ストレージ・ユニット420によって管理される1つまたは複数のファイル・システムのユーザ・データとユーザ・データのメタデータとを記憶するためのストレージ・ユニット420と、バックアップ要求があり次第、または例えば定期的になど、自動的にストレージ・ユニット420に記憶されているデータのバックアップを実行するためのバックアップ・ストレージ・ユニット430とを備える。第2のストレージ装置400は、単一のコンピューティング・デバイスとして、または互いに接続されている複数のデバイスからなるシステムとして実現され得る。例えば、ファイル・システム管理ユニット410は、ネットワーク・アタッチト・ストレージ(NAS)のストレージ・ユニット420および430として1つまたは複数のストレージ・デバイスに接続されている1つまたは複数のファイル・システム・サーバ・コンピュータからなるシステムとして実現され得る。
通信ネットワーク200(さらには以下で説明されている通信ネットワーク500、600、および800)は、有線通信ネットワーク(WAN、LAN、ローカル・ファイバ・チャネル・ネットワーク、インターネット・ベースのネットワーク、イーサネット通信ネットワーク、もしくは同様のもの)またはワイヤレス通信ネットワーク(WLANなど)、またはこれらの組合せとして実現され得る。基本的な通信プロトコルは、NFSベースのプロトコルまたはSMB/CIFSベースのプロトコルなどの、ファイバ・チャネル・プロトコルまたはファイル・ベースのプロトコルであるものとしてよい。
クライアント100は、通信ネットワーク200を介して第2のストレージ装置400のファイル・システム管理ユニット410によって管理される1つまたは複数のファイル・システムのユーザ・データにアクセスするように適合される。特に、ユーザは、ユーザ個別またはユーザ・グループ個別のアクセス・ポリシー(例えば、ユーザ・アクセス権、ユーザ・グループ・アクセス権、ファイル・システムのパーミッションなど)に応じてネットワーク200を介して第2のストレージ装置400に接続されているクライアント100の各々を介して、データをファイル・システムに書き込み、ファイル・システムからデータを読み出し、ファイル・システム内にファイルおよびディレクトリを作成し、ファイルおよびディレクトリなどのファイル・システムのオブジェクトの属性を設定または読み出し、ファイル・システムのデータを修正し、ファイル・システムのオブジェクトを削除し、ファイル・システムのオブジェクトを移動することができる。
いくつかの時点において、例えば、より新しいファイル・システム管理ストレージ装置は、より多くのファイル・システムまたはより大きいファイル・システムを管理し(より大きいデータ記憶空間および/またはより多くのファイル・システム・オブジェクトを使用可能にすることを含む)、より効率的な入出力(I/O)の実行を可能にし、より大きいストレージ・ユニットまたはより効率的なストレージ・デバイス技術を収容するストレージ・ユニットの使用を可能にするように適合され得るので、データ・ストレージ・システム全体の性能を改善するために第2のストレージ装置400を別の新しいファイル・システム管理ストレージ装置と交換することが望ましい場合がある。それでも、ファイル・システム構造(既存のファイル・ツリー構造など)およびそのユーザ・データ(ファイル・コンテンツ)を含むすでに存在しているファイル・システム(複数可)を保持することが望ましい場合があるが、原理上、ユーザが中断なしで、または少なくとも、できる限り短い単一の中断のみで既存のファイル・システム(複数可)にアクセスすることを可能にすることが望ましい。
本発明のいくつかの好ましい態様によれば、既存のファイル・システム(複数可)を管理するためにより古いレガシーの第2のストレージ装置400の代わりに使用されるものとする、より新しい第1のストレージ装置300は、短い単一のサービス中断のみで、アクセスするクライアント100と図1Bに例示的に示されているようなレガシーの第2のストレージ装置400との間に相互接続されるということが基本的な考え方である。
図1Bは、本発明の好ましい態様により通信ネットワーク200と第2のストレージ装置400との間において追加の第1のストレージ装置300を相互接続している図1Aのデータ・ストレージ・システムの一例を示している。第1のストレージ装置300は、1つまたは複数のファイル・システムを管理するためのファイル・システム管理ユニット310と、ストレージ・ユニット320によって管理される1つまたは複数のファイル・システムのユーザ・データとユーザ・データのメタデータとを記憶するためのストレージ・ユニット320と、バックアップ要求があり次第、または例えば定期的になど、自動的にストレージ・ユニット320に記憶されているデータのバックアップを実行するためのバックアップ・ストレージ・ユニット330とを備える。第1のストレージ装置300は、単一のコンピューティング・デバイスとして、または互いに接続されている複数のデバイスからなるシステムとして実現され得る。例えば、ファイル・システム管理ユニット310は、ネットワーク・アタッチト・ストレージ(NAS)のストレージ・ユニット320および330として1つまたは複数のストレージ・デバイスに接続されている1つまたは複数のファイル・システム・サーバ・コンピュータからなるシステムとして実現され得る。
通信ネットワーク200と第2のストレージ装置400との間で第1のストレージ装置300を相互接続するためには、ファイル・システム・サービスの短い中断が1回だけ必要であり、その中断の際にクライアント100の接続が切断され、クライアント100は短い期間、既存のファイル・システム(複数可)にアクセスできない、すなわち、クライアント100は、ユーザ・データの読み出し、ユーザ・データの書き込み、ファイルおよびディレクトリなどの新規ファイル・システム・オブジェクトの作成、またはファイル・システム・オブジェクト属性へのアクセスを行うことができない。
通信ネットワーク200と第2のストレージ装置400との間で第1のストレージ装置300を相互接続した後、クライアント100は、第2のストレージ・システム400から接続が切断されたままであり、したがって、第2のファイル・ストレージ装置400によって管理されるファイル・システム(複数可)に直接アクセスすることはできず、第1のストレージ装置300を通じて間接的にのみ第2のストレージ装置400によって管理されるファイル・システム(複数可)にアクセスすることができる。好ましい態様によれば、すべてのユーザ・アクセスは、第1のストレージ装置300にのみアドレッシングされ、第2のストレージ装置400への直接的接続は存在しないことが望ましい。
最初に、第1のストレージ装置300を相互接続した後に、クライアント100を介してユーザによってアクセスされるべき1つまたは複数のファイル・システムは、第2のストレージ装置400上にそのまま保持され(ファイルを編成するためのファイルおよびディレクトリのユーザ・データを含み、またファイル・システム・オブジェクトのメタデータを含む)、第1のストレージ装置300は、既存のファイル・システム(複数可)のデータを保持しない。
ローカルにおいて第1のストレージ装置300上のファイル・システム(複数可)へのすべてのユーザ・アクセス要求を処理し、第2のストレージ装置の接続を切断できるようにするため、すべてのファイル・システム・データ(ユーザ・データおよびファイル・システム・メタデータを含む)が、最終的に、第2のストレージ装置400から第1のストレージ装置300にマイグレーションされる必要があり得る。しかしながら、多数のディレクトリおよびファイルを収容する大きなファイル・システムの場合、そのようなデータ・マイグレーションは、非常に長い時間を要することがあり、データのマイグレーションの際にすべてのファイル・システム・データ(ユーザ・データおよびファイル・システム・メタデータを含む)が第1のストレージ装置300上に存在するまで無効化されていた場合、これにより、クライアント100によるファイル・システム(複数可)の望ましくないアクセス不能状態が、不利なほどの長い期間続くことになる。
ファイル・システム(複数可)の望ましくないアクセス不能の期間を短縮するために、第1のストレージ・システム300は、第1のストレージ装置300を相互接続した直後に第2のストレージ装置400によって管理されるファイル・システム(複数可)への間接的ユーザ・アクセスを可能にするように適合される。
次いで、次の段落で「仮想化」と称されている、第1のストレージ装置300を相互接続した後の第1のフェーズにおいて、第1のストレージ装置300は、ファイル・システム(複数可)のファイル・システム・ツリー(複数可)の仮想化を実行し、そこでは、第2のストレージ・システム400上に存在するファイル・システム(複数可の)のファイル・システム・ツリー(複数可)が、第2のストレージ装置のストレージ・ユニット420上に記憶されているユーザ・データを実際にマイグレーションすることなく第1のストレージ装置300上に仮想的に作成される。
次の段落で「マイグレーション」と称される、第2のフェーズにおいて、ファイルおよび同様のものの実際のデータコンテンツを含む実際のユーザ・データが、第2のストレージ装置400から第1のストレージ装置300に転送される。
仮想化フェーズおよびマイグレーション・フェーズの両方が完了した後、第1のストレージ装置300は、仮想化フェーズおよびマイグレーション・フェーズにおいてファイル・システム(複数可)へのユーザ・アクセスが進行しているせいで、その間変更されている可能性が非常に高い、既存のファイル・システム(複数可)をローカルで処理することができ、第2のストレージ装置400は、その後接続が完全に切断され得る。
しかしながら、仮想化フェーズおよびマイグレーション・フェーズの両方において、第2のストレージ装置400は、第1のストレージ装置300によってそのままアクセス可能である必要がある。
仮想化フェーズおよびマイグレーション・フェーズは、仮想化フェーズが完了するまでデータ・マイグレーションが開始されない、明確に区別できるフェーズとしていくつかの好ましい態様に関して以下でより詳しく説明されるが、本発明はそのような構成に制限されないこと、およびそれらのフェーズがファイル・システム(複数可)のすでに仮想化されている部分のファイルのファイル・データコンテンツのマイグレーションがファイル・システム(複数可)の他の部分について仮想化がまだ進行中である間にすでに実行され得るという点においてタイミングよくオーバーラップすることもあり得ることは理解されるであろう。
例として仮想化フェーズおよびマイグレーション・フェーズを明確に区別できるその後実行される動作フェーズと見なすときに、第1のファイル・システム管理ユニット310が第2のストレージ装置400のファイル・システム(複数可)内に存在する各ファイルについてストレージ・ユニット320によって記憶されている外部リンク・オブジェクトを作成するという点において仮想化フェーズで第1のファイル・システム管理ユニット310が第2のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)の仮想化されたファイルのツリー構造を構築するので、第1のストレージ・システム300上の(例えば、ストレージ・ユニット320内に記憶されている)ユーザ・データ(すなわち、ファイルコンテンツ)は存在しない。
これらの外部リンク・オブジェクトは、第1のファイル・システム管理ユニット310によって管理されるファイル・システム(複数可)のファイル・システム・オブジェクトとなり、各外部リンク・オブジェクトはファイルの実際のユーザ・データ(すなわち、ファイルコンテンツそれ自体)が第1のストレージ装置300のストレージ・ユニット320にマイグレーションされていない限り第2のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)の対応するファイルへのアクセスを可能にする。
第1のストレージ装置300上に存在する外部リンク・オブジェクトを通じて第2のストレージ装置400上に存在するファイル・システム(複数可)のファイルへのユーザ・アクセスの詳細は、以下で説明される。
以下の図1Bから図1Dの構成のすべてにおける第1および第2のストレージ装置300および400の接続は、さまざまな方法で、例えば、上で説明されている通信ネットワーク200と同様の方法で実現され得るが、異なる複数のファイバ・チャネル内の並列通信を可能にする複数のファイバ・チャネルを有するファイバ・チャネル接続を提供することが特に望ましい場合がある。さらに、例えば、FTPベースのプロトコル、NFSベースのプロトコル(例えば、NFSv3もしくはNFSv4)、またはSMB/CIFSベースのプロトコル、または同様のものなどの、ファイル・ベースの通信プロトコルを使用することが望ましい場合がある。
図1Cは、通信ネットワーク200と別の通信ネットワーク500との間で追加の第1のストレージ装置300を相互接続しているデータ・ストレージ・システムの別の例であり、これは複数の第2のストレージ装置400に接続されている。すなわち、図1Bに示されているようなデータ・ストレージ・システムとの違いは、第1のストレージ装置300が、複数のすでに存在しているレガシーのストレージ装置400との交換のため使用されるものとしてよく、各々クライアント100によってアクセスされるべき1つまたは複数のファイル・システム(複数可)を管理している、という点である。第1のストレージ装置300は、複数のレガシーのストレージ装置400によって管理されるファイル・システムの仮想化およびマイグレーションを実行するように適合される。
仮想化フェーズおよびマイグレーション・フェーズの両方が完了した後、第1のストレージ装置300は、仮想化フェーズおよびマイグレーション・フェーズにおいてファイル・システム(複数可)へのユーザ・アクセスが進行しているせいで、その間変更されている可能性が非常に高い、既存のファイル・システムをローカルで処理することができ、第2のストレージ装置400のうちの1つまたは複数またはすべてが、その後接続が完全に切断され得る。しかしながら、仮想化フェーズおよびマイグレーション・フェーズの両方において、第2のストレージ装置400は、第1のストレージ装置300によってそのままアクセス可能である必要がある。
図1Cの例において、場合によってはその後のマイグレーション・フェーズなしで第1のストレージ装置300によるファイル・システムの仮想化を実行するだけでも有利ですらあり得ることは明らかである。例えば、レガシーのストレージ装置400によって管理されるすべてのファイル・システムの仮想化の完了後に、ファイル・システムの実際のユーザ・データ(ファイルコンテンツ)がレガシーのストレージ装置400のストレージ・ユニットにのみ依然として記憶される間、複数のレガシーのストレージ装置400のすべてのファイル・システムは、第1のストレージ装置300によって単一のアクセス・ポイントとして管理される仮想化されたファイル・システムを通じてクライアント100によってアクセスされ得る。
図1Dは、データ・ストレージ・システムの別の例を示している。ここでもまた、クライアント100は、通信ネットワーク200を介して第1のストレージ装置300に接続され、第1のストレージ装置300は、別の通信ネットワーク500を介して第2の(レガシーの)ストレージ装置300に接続される。それに加えて、第1のストレージ装置300は、さらに別の通信ネットワーク800を介してリモート・ストレージ装置900に接続され、第2のストレージ装置400は、さらに別の通信ネットワーク600を介して別のリモート・ストレージ装置700に接続される。
そのような構成もリモート・データ・レプリケーションを可能にし、そこでは、第1のストレージ装置300のストレージ・ユニット320に記憶されているユーザ・データは、通信ネットワーク800を介して第1のリモート・ストレージ装置900のストレージ・ユニットにリモート・レプリケーションされ、第2のストレージ装置400のストレージ・ユニット420に記憶されているユーザ・データは、通信ネットワーク600を介して第2のリモート・ストレージ装置700のストレージ・ユニットにリモート・レプリケーションされ得る。もちろん、ネットワーク800および600を介したデータのリモート・レプリケーションは、同期的に、または非同期的に実行され得る。
原理上、多数のレガシーのデータ・ストレージ・システムに対して、第1のサイトにある第2のストレージ装置400と第2のストレージ装置400によって管理されるファイル・システム(複数可)のユーザ・データの同期または非同期リモート・レプリケーション用のリモート・ストレージ装置700とを有する構成が存在する。図1Bに関連して上で説明されているような第1のストレージ装置300を相互接続した後に、第1のストレージ装置300は、第2のストレージ装置400によって管理されるファイル・システム(複数可)の仮想化を実行するが、マイグレーション・フェーズが開始するまでユーザ・データを実際にはマイグレーションしない。
例示的な一実施形態によれば、マイグレーションなしの仮想化フェーズにおいて、書き込みアクセス、属性変更ユーザ・アクセス、新規ファイルおよびディレクトリの作成、名前変更の操作などのすべてのデータ修正ユーザ要求を含む、クライアント100によるファイル・システム(複数可)へのすべてのユーザ・アクセスが、第2のストレージ装置400にパススルーされ、第2のストレージ・システム400は、ファイル・システム(複数可)の現在の(標準的な)バージョンを管理し続ける。そのような実施形態において、ファイル・システム(複数可)の標準的なデータ・バージョンは第2のストレージ装置400上に完全に保持され、ストレージ装置900に同期または非同期方式でレプリケーションされ、リモート・ストレージ装置900は、後で接続され得るので、クライアント100によるファイル・システム(複数可)へのすべてのデータ修正ユーザ・アクセスが第2のストレージ装置400にパススルーされる限り、第1のストレージ装置300からリモート・ストレージ装置900へのデータ・レプリケーションを実行する必要はない。
しかしながら、マイグレーションが、仮想化中に(またはその後に)すでに開始されており、完全にマイグレーションされていて、第1のストレージ装置300上に完全に保持されるファイル・システム・オブジェクトに対して、ならびに/または第1のストレージ装置300によって管理されているファイル・システム(複数可)においてのみ実行されている新規ファイルおよび/もしくは新規ディレクトリの作成に対して修正ユーザ・アクセスがもはや第2のストレージ装置400にパススルーされない、いくつかの他の実施形態において、すなわち、ファイル・システムが異なり始め得るときに、リモート・ストレージ装置900への追加のデータ・レプリケーションは、少なくとも、完全にマイグレーションされていて、第1のストレージ装置300上に完全に保持されるファイル・システム・オブジェクトに対して、ならびに/または新規作成されたファイルおよび/もしくは新規作成されたディレクトリに対して望ましいものとなり得る。
同様に、上記の構成すべてにおいて、データのバックアップに関して、ファイル・システム(複数可)のまだ標準的であるバージョンが第2のストレージ装置400上にまだ保持され、第2のストレージ装置400のストレージ・ユニット420からバックアップ・ストレージ・ユニット430への標準的なバージョンのバックアップが実行されるときに、クライアント100によるファイル・システム(複数可)へのすべてのデータ修正ユーザ・アクセスが第2のストレージ装置400にパススルーされる限り、第1のストレージ装置300のストレージ・ユニット320からバックアップ・ストレージ・ユニット300へのデータ・バックアップを実行する必要はない。
しかしながら、マイグレーションが、仮想化中に(またはその後に)すでに開始されており、完全にマイグレーションされていて、第1のストレージ装置300上に完全に保持されるファイル・システム・オブジェクトに対して、ならびに/または第1のストレージ装置300によって管理されているファイル・システム(複数可)においてのみ実行されている新規ファイルおよび/もしくは新規ディレクトリの作成に対して修正ユーザ・アクセスがもはや第2のストレージ装置400にパススルーされない、いくつかの他の実施形態において、すなわち、ファイル・システムが異なり始め得るときに、リモート・ストレージ・ユニット330への追加のデータ・バックアップは、少なくとも、完全にマイグレーションされていて、第1のストレージ装置300上に完全に保持されるファイル・システム・オブジェクトに対して、ならびに/または新規作成されたファイルおよび/もしくは新規作成されたディレクトリに対して望ましいものとなり得る。
図2は、ファイル・システム管理ユニット310の構造の概略図を例示的に示している。ファイル・システム管理ユニット310は、ネットワーク200を介して複数のホスト・デバイス(クライアント・コンピュータ100などの)に接続するための複数のホスト・インターフェース311aから311gを備えるホスト・インターフェース・ユニット311と、ストレージ・ユニット320および330の複数のストレージ・デバイスに接続するための複数のストレージ・インターフェース312aから312gを備えるストレージ・インターフェース・ユニット312とを具備する。それに加えて、ファイル・システム管理ユニット310は、1つまたは複数の中央演算処理装置と、管理データを含む処理に使用されるデータを一時的に記憶するためのメモリ・ユニット314と、アプリケーション・データおよび管理データを記憶するためのストレージ・デバイス315とを備える処理ユニット313を具備する。
図3は、ハードウェア、ソフトウェア、またはこれらの組合せによって実現され得る、ファイル・システム管理ユニット310の仮想化およびマイグレーション・ユニット340の概略機能図を例示的に示している。
仮想化およびマイグレーション・ユニット340は、仮想化管理データおよびマイグレーション管理データ(メモリ・ユニット314および/またはストレージ・デバイス315に記憶されている)を管理するための仮想化管理情報テーブル341と、仮想化管理データおよびマイグレーション管理データの(ストレージ・デバイス315および/またはストレージ・ユニット320および/または330への)バックアップを実行するための仮想化管理情報バックアップ・ユニット342とを備える。
通信目的に関して、仮想化およびマイグレーション・ユニット340は、クライアント100からアクセス要求を受信し、クライアント100からのアクセス要求に応答するためのクライアント通信ユニット348Aを有する通信ユニット348と、アクセス要求を第2のストレージ装置400のファイル・システム管理ユニット410に発行し、第2のストレージ装置400のファイル・システム管理ユニット410から応答を受信するためのファイル・システム通信ユニット348Bとを備える。
仮想化およびマイグレーションを実行するため、仮想化およびマイグレーション・ユニット340は、第2のストレージ装置400のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)のファイルのツリー構造を自動的にクローリング(観察)し、第2のストレージ装置400のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)内で発見されたファイル・システム・オブジェクトの仮想化を命令する仮想化ジョブを作成するためのクローリング・ユニット343を備える。
仮想化およびマイグレーション・ユニット340は、クローリング・ユニット343によって発見されたファイル・システム・オブジェクトを仮想化する仮想化ジョブを実行し、仮想化されたファイル・システム・オブジェクトのマイグレーションを命令するマイグレーション・ジョブを作成するための仮想化ユニット344と、仮想化ユニット344によって仮想化されたファイル・システム・オブジェクトをマイグレーションするマイグレーション・ジョブを実行するためのマイグレーション・ユニット345とをさらに備える。
仮想化およびマイグレーション・ユニット340は、ファイル・システムのクローリング、ファイル・システム・オブジェクトの仮想化、およびファイル・システム・オブジェクトのマイグレーションに対するジョブをその後記憶するための複数のジョブ・キュー346A、346B、および346Cをさらに備える。
例えば、第1のジョブ・キュー346Aは、ディレクトリ情報ジョブを保持し、第2のジョブ・キュー346Bは、仮想化ジョブを保持し、第3のジョブ・キュー346Cは、マイグレーション・ジョブを保持し得る。すなわち、仮想化およびマイグレーションは、ジョブ・キュー346A内に保持されているジョブに基づきファイル・システムのクローリングを行い(クローリング・ユニット343)、ジョブ・キュー346B内に保持されているジョブに基づきファイル・システム・オブジェクトの仮想化を行い(仮想化ユニット344)、ジョブ・キュー346C内に保持されているジョブに基づきファイル・システム・オブジェクトのマイグレーションを行う(マイグレーション・ユニット345)ための異なるユニットが用意されるという点においてマルチスレッドおよび/または並列化方式で実行され得る。
上述のユニットは、クローリング・ユニット343が、ジョブ・キュー346Aから取り出された複数のクローリング・ジョブ(例えば、以下でさらに説明されているようなディレクトリ情報ジョブ)を並列に実行するように適合され、仮想化ユニット344が、ジョブ・キュー346Bから取り出された複数の仮想化ジョブを並列に実行するように適合され、マイグレーション・ユニット345が、ジョブ・キュー346Cから取り出された複数のマイグレーション・ジョブを並列に実行するように適合され得るという点においてマルチスレッド化されているものとしてよい。
しかしながら、本発明は、上で説明されているような3つのキューの使用に限定されず、ディレクトリ情報ジョブ、仮想化ジョブ、およびマイグレーション・ジョブの各々に対する複数のジョブ・キュー、または例えば、ディレクトリ情報ジョブ、仮想化ジョブ、およびマイグレーション・ジョブのすべてに対して1つのキューが用意されるという点において3つよりも少ないキューが用意され得る。キューがただ1つである後者の場合において、クローリング・ユニット343、仮想化ユニット344、およびマイグレーション・ユニット345は、単一のジョブ・キューから取り出された複数のジョブを実行するように適合され、すべての新規作成されたジョブ(同じキューへのディレクトリ情報ジョブ、仮想化ジョブ、およびマイグレーション・ジョブを含む)を追加する単一のマルチスレッド・ユニットとして実現され得る。
「ディレクトリ情報ジョブ」は、クローリング・ユニット343によって発見された第2のストレージ装置400のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)の特定のディレクトリに関連付けられたジョブであり、この「ディレクトリ情報ジョブ」は第2のストレージ装置400のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)の特定のディレクトリ内のファイル・システム・オブジェクト(サブディレクトリおよびファイルを含む)を観察することをクローリング・ユニット343に命令する。
「仮想化ジョブ」は、クローリング・ユニット343によって発見された第2のストレージ装置400のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)の特定のファイル・システム・オブジェクト(ファイルまたはディレクトリなど)に関連付けられたジョブであり、「仮想化ジョブ」は第1のストレージ装置300上で特定のファイル・システム・オブジェクトを仮想化することを仮想化ユニット344に命令する。
基本的に、クローリング・ユニット343によって発見されたディレクトリの仮想化は、対応するディレクトリ(同じ名前を有する)が第1のファイル・システム管理ユニット310によって管理されるファイル・システム(複数可)内に作成されることを意味するが、クローリング・ユニット343によって発見されたファイルまたは類似のオブジェクト(ハード・リンクされたファイルなど)の仮想化は、外部リンク・オブジェクト(以下ではXLOと略される)と称される仮想オブジェクトが、対応するファイルを有する第2のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)のディレクトリに対応する第1のファイル・システム管理ユニット310によって管理されるファイル・システム(複数可)のディレクトリ内に作成されることを意味する。
「外部リンク・オブジェクト」は、ファイルまたは類似のオブジェクト(ハード・リンクされたファイルなど)に関連付けられている第1のファイル・システム管理ユニット310によって管理されるファイル・システム(複数可)内に存在するオブジェクトである。「外部リンク・オブジェクト」は、対応するファイルの実際のユーザ・データを記憶しないが、第2のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)内の対応するファイルへの外部参照を含む。第1のファイル・システム管理ユニット310によって管理されるファイル・システム(複数可)の「外部リンク・オブジェクト」が第1のファイル・システム管理ユニット310によって管理されるファイル・システム(複数可)内の第2のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)の対応するファイルを表し、対応するファイルへのアクセスを可能にする。
「外部リンク・オブジェクト」は、少なくとも、第2のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)内の対応するファイルに使用されるリモート・オブジェクトIDに関する情報および第2のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)内のファイルのリモート・パスに関する情報を含み得る。
「マイグレーション・ジョブ」は、仮想化ユニット344によって仮想化された第2のストレージ装置400のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)の特定のファイルまたは類似のオブジェクト(ハード・リンクされたファイルなど)に関連付けられたジョブであり、「マイグレーション・ジョブ」は特定のファイルまたは類似のオブジェクトを第1のストレージ装置300にマイグレーションすることをマイグレーション・ユニット345に命令する。すなわち、マイグレーション・ジョブを実行して特定のファイルをマイグレーションすることをマイグレーション・ユニット345に命令することによって、実際のユーザ・データはファイルコンテンツとして第1のストレージ装置300に転送されストレージ・ユニット320に記憶される。
ジョブが、ジョブ・キューがジョブで占有されている間に作成される場合、ジョブ・キュー346Aから346Cのうちの1つまたは複数が占有されるときにディレクトリ情報ジョブ、仮想化ジョブ、およびマイグレーション・ジョブを一時的に記憶するためのバッファ・ユニット347が用意されている。ジョブが、バッファ・ユニット347によって保持されるときに、それらのジョブは、別のジョブが実行され、ジョブ・キューから取り除かれた後、それぞれのジョブ・キューに加えられる。
「仮想化」、「マイグレーション」、「外部リンク・オブジェクト」、「ディレクトリ情報ジョブ」、「仮想化ジョブ」、および「マイグレーション・ジョブ」という用語に関連したさらなる例示的な詳細は、以下のより詳細な説明および例の説明において明らかになる。
図4は、図1Aおよび図1Bの第2のファイル・システム管理ユニット410によって例示的に管理されているようなファイル・システムのファイル・システム・ツリー構造の一例を示している。特に、第2のファイル・システム管理ユニット410によって管理され、図1Aのストレージ・ユニット420に記憶されているファイル・システムは、第2のストレージ装置400の接続を切断し、第1のファイル・システム管理ユニット310によって管理されるべき第1のストレージ装置300上でファイル・システムの仮想化を開始する前に第1のストレージ装置300を相互接続するときに、図4の構造を有すると例示的に仮定される。
図4の例示的なファイル・システムは、最上位のディレクトリ/rootおよび複数のサブディレクトリを有する。特に、子ディレクトリ/dir1および/dir2は、ファイル「file1」および「file2」に加えて/rootディレクトリ内に存在する。すなわち、/rootディレクトリは、子ディレクトリ/dir1および/dir2の親ディレクトリを表す。ディレクトリ/dir1は、子ディレクトリ/dir11および/dir12を有し、ディレクトリ/dir2は、1つの子ディレクトリ/dir21およびファイル「file3」を有する。ディレクトリ/dir11の子ディレクトリ/dir111には、ファイル「file9」および「file10」が存在する。さらに、ファイル「file4」は、ディレクトリ/dir11に記憶され、ファイル「file5」および「file6」は、ディレクトリ/dir12内に存在する。最後に、ディレクトリ/dir21は、「file7」および「file8」を有する。
第1のストレージ装置300が、例えば図1B、1C、または1Dに示されているようにクライアント100と第2のストレージ装置400との間に相互接続された後、第2のファイル・システム管理ユニット410によって管理され、図1Aのストレージ・ユニット420に記憶されているファイル・システムの仮想化は、初期仮想化パスが作成されると直ちに開始されるものとしてよく、その仮想化パスは、第1のストレージ装置300の第1のファイル・システム管理ユニット310によって管理されるファイル・システム内の1つの新規作成されたディレクトリ(例えば、最上位のディレクトリ)を仮想化されおよび/またはマイグレーションされるべき第2のストレージ装置400の第2のファイル・システム管理ユニット410によって管理されるファイル・システムの部分の最上位のディレクトリに関連付ける。
例えば、第1のストレージ装置300上に以前のファイル・システムが存在していない場合、新規の最上位のディレクトリ/rootが、第1のストレージ装置300の第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に作成され、新規に確立された仮想パスによって第2のストレージ装置400の第2のファイル・システム管理ユニット410によって管理されるファイル・システムの最上位のディレクトリ/rootに関連付けられ、その結果、/rootよりも下位であるディレクトリを有するすべてのファイル・システム・オブジェクトのツリー構造の仮想化が行われ得る。
図5Aは、図4のツリー構造に基づく仮想化されたファイル・システムのツリー構造の一例を示しており、そこでは、第1のファイル・システム管理ユニット310によって管理されるファイル・システムの最上位のディレクトリ/rootは、第1の仮想パス<ストレージ装置300>:/root −> <ストレージ装置400>:/rootに従って第2のファイル・システム管理ユニット410によって管理されるファイル・システムの最上位のディレクトリ/rootに関連付けられている。
第1の仮想化パスにより第2のファイル・システム管理ユニット410のファイル・システムの完全な仮想化の後、第1のファイル・システム管理ユニット410は、図5Aによるツリー構造を有するファイル・システムを管理し、そこでは、第2のファイル・システム管理ユニット410によって管理されるファイル・システムのディレクトリ/dir1、/dir2、/dir11、/dir12、/dir21、および/dir111の各々が、第1のファイル・システム管理ユニット310によって管理されているようなファイル・システムにおいても作成されており、このファイル・システムはディレクトリ/dir1および/dir2が最上のディレクトリ/rootの子ディレクトリとして作成され、ディレクトリ/dir11および/dir12がディレクトリ/dir1の子ディレクトリとして作成され、というように続く点において同じツリー構造を有する。
しかしながら、ファイル(およびハード・リンクされたファイルなど類似のオブジェクト)に関しては、第1のストレージ装置300内の第1のファイル・システム管理ユニット310によって管理されるファイル・システムは、仮想化の後に実際のファイルを有しないが、第2のストレージ装置300内の第2のファイル・システム管理ユニット410によって管理されるファイル・システムの各ファイルに対してそれぞれの外部リンク・オブジェクトXLOを有する。
したがって、仮想化が完了した後、第2のストレージ装置400内の第2のファイル・システム管理ユニット410によって管理されるファイル・システムのそれぞれのファイルfile1、file2、file3、file4、file5、file6、file7、file8、file9、およびfile10の代わりに、外部リンク・オブジェクトXLO1、XLO2、XLO3、XLO4、XLO5、XLO6、XLO7、XLO8、XLO9、およびXLO10が、第1のストレージ装置300内の第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に存在する。第1のファイル・システム内の外部リンク・オブジェクトは、クライアントにファイルとして提示される、すなわち、クライアントは第1のファイル・システム内の外部リンク・オブジェクトを見ることはできないが、実際のファイル名、例えば、「file1」、「file2」、「file3」、「file4」、「file5」、「file6」、「file7」、「file8」、「file9」、および「file10」が見える。それぞれの外部リンク・オブジェクトの各々は、それぞれのファイルを有する第2のストレージ装置400内の第2のファイル・システム管理ユニット410によって管理されるファイル・システムのそれぞれのディレクトリに対応する第1のストレージ装置300内の第1のファイル・システム管理ユニット310によって管理されるファイル・システムのディレクトリ内に存在する。
例えば、file10は、第2のストレージ装置400内の第2のファイル・システム管理ユニット410によって管理されるファイル・システム内のリモート・パス/root/dir1/dir11/dir111/file10内に存在しているが、対応する外部リンク・オブジェクトXLO10は、第1のストレージ装置300の第1のファイル・システム管理ユニット310内の対応するローカル・パス/root/dir1/dir11/dir111/XLO10内に存在し、XLO10はfile10を表し、ユーザがアクセス要求を用いて第1のストレージ装置300のファイル・システム内のfile10にアクセスすることを試みたときにfile10への外部アクセスを許す。すなわち、好ましくは、ローカル・パス名は、リモート・パスと同じであり、クライアントの観点から、仮想化された第1のファイル・システムは、第2のファイル・システムから区別できないものとしてクライアントには見えている。
図5Bは、別の可能な仮想化パスによる図4のツリー構造に基づく別の仮想化されたファイル・システムのツリー構造の一例を示している。例えば、file1、file2、およびディレクトリ/dir2の下に存在するすべてのオブジェクトがもはやアクセスされていないときに現在のユーザが/dir1の下に存在するファイルおよびディレクトリのみをアクセスする状況において、<ストレージ装置300>:/root −> <ストレージ装置400>:/root/dir1などの別の仮想化パスが設定され、その結果、仮想化後にディレクトリ/dir1の下にあるオブジェクトのみがアクセスされ得る図5Aの仮想化されたツリー構造が得られる。
図5Cは、仮想化パス<ストレージ装置300>:/root −> <ストレージ装置400>:/root/dir2に従う対応する仮想化されたツリー構造の一例を示している。さらに、/dir1および/dir2のコンテンツがファイル・システム管理ユニット310によって管理される別個のファイル・システムに編成されるものとする場合に図4の1つの単一ファイル・システムを図5Bおよび5Cによる2つの別個のファイル・システムに分割することが可能である。
上記の例において、第2のファイル・システムは、それが第1のファイル・システム内に全く同じに再構築され、第2のファイル・システムの各ディレクトリが第1のファイル・システム内の類似のパスの下に作成され、第2のファイル・システムの各ファイルが第1のファイル・システム内の類似のパスの下のそれぞれの外部リンク・オブジェクトに関連付けられているという点において仮想化されている。しかしながら、いくつかの実施形態では、第2のファイル・システム内のユーザ・データに関係するディレクトリおよびファイルが第1のファイル・システムにおいて仮想化され、例えばユーザ・データ関係のファイル・システム・オブジェクトと異なる挙動を見せる一時ディレクトリ、スナップショット・ディレクトリ、または他のファイル・システム・オブジェクトなどの、第2のファイル・システムの他のファイル・システム・オブジェクトが第1のファイル・システム内で仮想化されないことを確実にするように付加的に実装されるメカニズムが用意され得る。例えば、第2のファイル・システムの一時的ディレクトリまたはスナップショット・ディレクトリなどのディレクトリは、そのような実施形態における第1のファイル・システム内に作成され得ない。
図6は、仮想化の初期化のための方法を示す例示的な流れ図を示す。この方法は、クライアント100から第2のストレージ装置300へのすべてのユーザ/クライアント・アクセスをブロックするステップS1と(例えば、図1Aに類似の状況において)、第2のストレージ装置400とクライアント100との間で第1のストレージ装置300を相互接続するステップS2とを含む。
さらに、仮想化の初期化を行うための方法は、第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に最上位のディレクトリを作成するステップS3と、ステップS3で作成された最上位のディレクトリを仮想化されるべき第2のファイル・システム管理ユニット410によって管理されるファイル・システムの部分の最上位のディレクトリ(例えば、図5A〜5Cに関して例示されているような最上位のディレクトリまたは下位のディレクトリのうちの1つ)に関連付ける仮想化パスを作成(設定)するステップS4とを含む。
さらに、仮想化の初期化を行うための方法は、ステップS3で設定された最上位のディレクトリに対するディレクトリ情報ジョブを作成するステップS5を含む。この方法は、自動バックグラウンド仮想化を可能にするステップS6と、ステップS8で第1のストレージ装置300へのクライアント・アクセスを直接的に可能にする前にユーザ・アクセス依存のオンデマンド仮想化を可能にする別のステップS7をさらに含む。ステップS1からS7の順序は、ステップS1がステップS2の前に実行され、ステップS4およびS5がステップS3の後に実行され、ステップS6およびS7がステップS4の後に実行され、ステップS8がステップS7の後に実行されることを条件として、複数の異なる方式で交換され得ることに留意されたい。
最も重要なのは、第2のストレージ装置が相互接続され(ステップS2)、仮想化パスが設定され(ステップS4)、オンデマンド仮想化が有効化される(ステップS7)とすぐに、ファイル・システムへのユーザ・アクセスが有効化され得る(ステップS8)ということである。特に、ユーザが、ファイル・システム内のまだ仮想化されていないファイル・システム・オブジェクトにアクセスすることを試みるとすぐに、それぞれのファイル・システム・オブジェクトは、有効化されたオンデマンド仮想化を用いて仮想化され(以下でより詳しく例示的に説明されているように)、それにより仮想化されたファイル・システム・オブジェクトを介してファイル・システム・オブジェクトへのアクセスを可能にし、ユーザがすでに仮想化されているファイル・システム・オブジェクトにアクセスすることを試みた場合、それぞれのファイル・システム・オブジェクトは、それぞれの仮想化されたファイル・システム・オブジェクトを介してアクセスされ得る。
したがって、上記の態様によるデータ・ストレージ・システムは、自動バックグラウンド仮想化(以下でより詳しく例示的に説明されているような)がすでに始まっていているかどうかに関係なく、また自動バックグラウンド仮想化のステータスに関係なく仮想化パスが作成され、オンデマンド仮想化が有効化されているという条件の下で第1のストレージ装置300を相互接続した直後にファイル・システムへのユーザ・アクセスを即座に有効化することができる。すなわち、クライアント100によるファイル・システムへのアクセスは、クライアント100と第2のストレージ装置400との間で第1のストレージ装置300を相互接続するための単一の中断の直後に再び有利に有効化され得る。
次の説明では、自動バックグラウンド仮想化(上のステップS6で有効化される)の例示的な態様は、以下でより詳しく説明される。自動バックグラウンド仮想化は、自動的に実行され、その結果、第2のストレージ装置400の第2のファイル・システム管理ユニット410によって管理されるファイル・システム(複数可)のファイルのツリー構造全体が、第1のストレージ装置400上に完全に仮想化される(すなわち、上の図5Aから5Cに関連して説明されているような仮想化された方式で完全に再構築される)。
自動バックグラウンド仮想化の原理的な例示的態様は、図4のファイル・ツリーを自動的にバックグラウンド仮想化することに関連して最初に説明される。自動バックグラウンド仮想化は、クローリング・ユニット343および上の図3の仮想化ユニット344によって実行され得る。最初に、クローリング・ユニット343は、上のステップS5で作成されたディレクトリ情報ジョブを実行する。特に、ステップS5の実行後に、ジョブ・キュー346Aは、ステップS4で設定された仮想化パスに従ってファイル・システム管理ユニット310によって管理されるファイル・システム内の最上位のディレクトリ(例えば、図4および5Aの上記の例における2つのそれぞれの/rootディレクトリ)に対するディレクトリ情報ジョブを格納する。
図7は、自動バックグラウンド仮想化に対する第1のファイル・システム・サーバと第2のファイル・システム・サーバ(第1のファイル・システム管理ユニット310および第2のファイル・システム管理ユニット410を具現化する)との間の情報交換を例示している。
クローリング・ユニット343による/rootディレクトリに対するディレクトリ情報ジョブを実行した後、第1のファイル・システム管理ユニット310は、第2のファイル・システム管理ユニット410に、図4のファイル・システムの/rootディレクトリ(設定された仮想化パスによって示されるような第2のファイル・システム管理ユニット410によって管理されるファイル・システムの最上位のディレクトリ、すなわち、図5Bおよび5Cの仮想化パスについては、第1の発行されるディレクトリ情報要求はすでに/dir1および/dir2にそれぞれ向けられている)に関連する/rootディレクトリ情報を求める要求(「request /root information」)を発行する。
/rootディレクトリ情報を求める要求に応答して、第2のファイル・システム管理ユニット410は、子ディレクトリ/dir1および/dir2ならびにファイル「file1」および「file2」に関する情報を含む/rootディレクトリ情報を提供することによって応答する。特に、この応答は、少なくとも、ディレクトリ/dir1および/dir2ならびにファイル「file1」および「file2」が第2のファイル・システム管理ユニット410によって管理されるファイル・システムの/rootディレクトリ内に存在することを示す。
第1のファイル・システム管理ユニット310においてディレクトリ/dir1および/dir2ならびにファイル「file1」および「file2」が第2のファイル・システム管理ユニット410によって管理されるファイル・システムの/rootディレクトリ内に存在することを示す応答を受信した後、クローリング・ユニット343は、ディレクトリ/dir1および/dir2ならびにファイル「file1」および「file2」が第2のファイル・システム管理ユニット410によって管理されるファイル・システムの/rootディレクトリ内に存在することと、それらのディレクトリ/dir1および/dir2ならびにファイル「file1」および「file2」が仮想化ユニット344による仮想化を必要としていることとが発見されたことを登録するように仮想化管理情報テーブル341を更新する。
図8は、図7の応答を受信した後の仮想化の際の第1の時点における仮想化管理情報テーブルの一例を示している。
例示的に、仮想化管理情報テーブルは、クライアント100および第2のファイル・システム管理ユニット410によって使用されるようなファイル・システム・オブジェクトの名前、そのオブジェクトのオブジェクト・タイプ(例えば、ファイル・システム・オブジェクトがディレクトリであるかファイルであるかを示す)、第2の管理ファイル・システム管理ユニット410によって使用されるようなそのオブジェクトのオブジェクトID、ファイル・システム・オブジェクトの仮想化ステータス、およびファイル・システム・オブジェクトのオブジェクト・ステータスを含むクローリング・ユニット343によって発見されている各ファイル・システム・オブジェクトに関するさまざまな情報を含む。
上記に加えて、仮想化管理情報テーブルは、それぞれのファイル・システム・オブジェクトの親ディレクトリ、それぞれのファイル・システム・オブジェクトのリモート・パス・ロケーション、それぞれのファイル・システム・オブジェクトの1つまたは複数の属性、などのさらなる情報を記録することができる。
「オブジェクトID」として、仮想化管理情報テーブルは、好ましくは、第2の管理ファイル・システム管理ユニット410によって管理されるようなファイル・システム内のそれぞれのファイル・システム・オブジェクトを一意的に識別するオブジェクトIDを記憶する。そのようなオブジェクトIDは、ファイル・ハンドル、Inode番号、サーバ識別子、デバイス番号、および同様のものなどのIDに関する情報によって表されるか、または情報を含み、名前およびリモート・パス・ロケーションに無関係にそれぞれのファイル・システム・オブジェクトを一意的に識別することができる。そのようなオブジェクトIDは、典型的には、知られているファイル・システム・サーバによって管理されるファイル・システム内に存在するが、それは、どのようなオブジェクトも、名前およびパス・ロケーションに無関係に一意的に識別される必要があるからである(例えば、ファイルが名前を変更され、および/または一方の特定のパス・ロケーションから別のパス・ロケーションに移動される場合、オブジェクトIDは、その名前および/またはパス・ロケーションが変わり得るが同じままであり得る)。
「virtualization status」の下に、発見されたファイル・システム・オブジェクトの仮想化の現在ステータスが示されるものとしてよく、新規に発見されたファイル・システム・オブジェクトには「needs virtualization」というラベルが付けられ、これにより、ファイル・システム・オブジェクトが仮想化される必要があること、すなわち、発見されたディレクトリについて対応するディレクトリが作成される必要があること、および発見されたファイルについて対応する外部リンク・オブジェクトが作成される必要があることを示す。
それぞれのファイル・システム・オブジェクトが仮想化された後、すなわち、発見されたディレクトリについて対応するディレクトリが作成されるか、または発見されたファイルについて対応する外部リンク・オブジェクトが作成されたときに、仮想化管理情報テーブル内の仮想化ステータスが「virtualized」に更新される。
図8では、上の図6のステップS3において/rootディレクトリがすでに作成されており、その仮想化ステータスに関してすでに「virtualized」というラベルを付けられている。その一方で、他の発見されたすべてのファイル・システム・オブジェクト、すなわち、ディレクトリ/dir1および/dir2ならびにファイル「file1」および「file2」は、発見されたばかりであり、対応する仮想化されたファイル・オブジェクトが第1のファイル・システム管理ユニット310によって管理されるようなファイル・システム内にまだ存在しておらず、したがって、それらのオブジェクトは、仮想化ステータス「needs migration」を有すると称される。
「object status」の下に、発見されたファイル・システム・オブジェクトの現在ステータスが示されるものとしてよく、新規に発見されたファイルは、「needs migration」というラベルを付けられ、第1のストレージ装置300のストレージ・ユニット320および330上にそれぞれのファイルに対応するユーザ・データ(ファイルコンテンツ)がまだ存在していないこと、およびファイルが第1のストレージ装置300にマイグレーションされる必要があること(マイグレーションが有効化された後)を示し、新規発見されたディレクトリは、「Incomplete」というラベルを付けられ、それぞれのディレクトリの直下に存在しているファイル・システム・オブジェクトすべてが、すでに仮想化されているとは限らないことを示す。図4のツリー構造に従って/rootディレクトリ内に存在するすべてのファイル・システム・オブジェクト(/dir1、/dir2、file1、およびfile2)は、すでに発見されているが、それらのオブジェクトはまだ仮想化されていないので、/rootディレクトリは、オブジェクト・ステータス「Incomplete」を有するものとしてラベル付けされたままであることに留意されたい。
ディレクトリ/dir1および/dir2が第1のファイル・システム管理ユニット310によって管理されるファイル・システムの/rootディレクトリ内に作成され、外部リンク・オブジェクトXLO1およびXLO2が第1のファイル・システム管理ユニット310によって管理されるファイル・システムの/rootディレクトリ内に作成された後、/rootディレクトリは、オブジェクト・ステータス「Complete」(以下参照)を有するように更新され得る。
図7の応答を受信した後に上で説明されているように仮想化管理情報テーブルを更新することに加えて、第1のファイル・システム管理ユニット310のクローリング・ユニット343は、仮想化ユニット344によって実行されるべき仮想化ジョブ・キュー346Bに追加することができる新規に発見されたファイル・システム・オブジェクトの各々に対する仮想化ジョブ(例えば、/dir1に対する仮想化ジョブ、/dir2に対する仮想化ジョブ、file1に対する仮想化ジョブ、およびfile2に対する仮想化ジョブ)を自動的に作成し、クローリング・ユニット343によって実行されるべきクローラー・ジョブ・キュー346Aに追加することができる新規に発見された子ディレクトリの各々に対するディレクトリ情報ジョブ(例えば、/dir1に対するディレクトリ情報ジョブおよび/dir2に対するディレクトリ情報ジョブ)を自動的に作成することに留意されたい。
したがって、すでに発見されているファイル・システム・オブジェクトの仮想化および新しいファイル・システム・オブジェクトを発見することは、既存の仮想化ジョブが仮想化ユニット344によって実行され得るという点において互いに並行して高効率で実行され得るが、さらなるディレクトリ情報ジョブは、新規ファイル・システム・オブジェクトを発見し、それらの新規に発見されたオブジェクトに対する新規仮想化ジョブおよび/またはディレクトリ情報ジョブを作成するためにクローリング・ユニット343によって並行して実行され得る。
図9は、部分的に仮想化されたファイル・システムのツリー構造の一例を示している。特に、ディレクトリ/dir1および/dir2が第1のファイル・システム管理ユニット310によって管理されるファイル・システムの/rootディレクトリ内に作成され、外部リンク・オブジェクトXLO1およびXLO2が、クローリング・ユニット343によって作成された4つすべての仮想化ジョブを実行することによって第1のファイル・システム管理ユニット310によって管理されるファイル・システムの/rootディレクトリ内に作成された後、第1のファイル・システム管理ユニット310によって管理されているファイル・システムのツリー構造は、図9に示されている通りのものとなる。/rootディレクトリの下に親ディレクトリとして直接存在するファイル・システム・オブジェクト/dir1、/dir2、file1、およびfile2の各々は、図9に従って仮想化されているので、/rootディレクトリのオブジェクト・ステータスは、図10に示されているように、「Complete」であるものとして更新され得る。
上記の例において、親ディレクトリとして/rootディレクトリの下に存在するファイル・システム・オブジェクトの数は、かなり少なく、原理上、多数のファイル・システム・オブジェクトが特定の親ディレクトリの下に存在し得る、例えば、いくつかファイル・システムでは、数百万個のファイルおよび子ディレクトリが特定の親ディレクトリの下に存在し得ることが想定されなければならない。典型的なファイル・システム通信プロトコル、ディレクトリ情報を受信することを求める標準的な要求(例えば、NFSベースのファイル・システム通信プロトコルにおけるREADDIRまたはREADDIRPLUSなど)では、応答で返されるべきエントリの個数は、単一のディレクトリ情報要求を発行した後に全エントリがすでに知られているということがないように最大数に限定され得ない。そのようなシナリオでは、クローリング・ユニット343は、ディレクトリ情報要求をファイル・システムの同じ親ディレクトリに、そのすべてのファイル・システム・オブジェクト(ファイルおよび子ディレクトリを含む子エントリ)が返されるまで繰り返し発行し得る。
好ましくは、上の段落において説明されているようなシナリオにおいて、クローリング・ユニット343は、同じ親ディレクトリに関連して次のディレクトリ情報要求を発行する前、各応答の後に、仮想化管理情報テーブルをさらに更新することができ、および/またはクローリング・ユニット343は、同じ親ディレクトリに関連して次のディレクトリ情報要求を発行する前、各応答の後に、これまでに発見された子ディレクトリの各々に対するディレクトリ情報ジョブおよび/またはこれまでにそれぞれの親ディレクトリ内で発見されたすべてのファイル・システム・オブジェクトに対する仮想化ジョブをすでに作成しているものとしてよい。
さらに、クローリング・プロセスの望ましくない中断の後に正しいクローリング開始位置でクローリング・ユニット343によるディレクトリ・クローリングを再開することができるようにするために、クローリング・ユニット343は、それぞれの親ディレクトリが読み出された最後のエントリ位置(位置を示すクッキーなどの、最後の応答によって与えられるデータ項目を示す位置に対応し得る)を示す情報を追加するために各応答の受信後にそれぞれの親ディレクトリのオブジェクト・ステータスをさらに更新する。
図11は、自動バックグラウンド仮想化に対する第1のファイル・システム管理ユニット310および第2のファイル・システム管理ユニット410との間の情報交換の別の図を例示している。特に、すでに上で説明されているように、クローリング・ユニット343は、図7の応答を受信した後、および図8に示されているような仮想化管理情報テーブルを更新した後に、子ディレクトリ/dir1および/dir2の各々に対してそれぞれのディレクトリ情報ジョブを作成していると想定される。次に、ディレクトリ情報ジョブ・キュー346A内の次のジョブに戻ったときに、クローリング・ユニット343は、ディレクトリ/dir1に対するディレクトリ情報ジョブを取得することができ、次いで/dir1ディレクトリに関するディレクトリ情報を求める要求を発行する。
特に、クローリング・ユニット343による/dir1ディレクトリに対するディレクトリ情報ジョブを実行した後に、第1のファイル・システム管理ユニット310は、第2のファイル・システム管理ユニット410によって管理されるような図4のファイル・システムの/dir1ディレクトリに関連して/dir1ディレクトリ情報を求める要求(「request /dir1 information」)を発行する。/dir1ディレクトリ情報を求める要求に応答して、第2のファイル・システム管理ユニット410は、子ディレクトリ/dir11および/dir12に関する情報を含む/dir1ディレクトリ情報を提供することによって応答する。この応答は、少なくとも、ディレクトリ/dir11および/dir12が第2のファイル・システム管理ユニット410によって管理されるファイル・システムの/dir1ディレクトリ内に存在することを示し得る。
第1のファイル・システム管理ユニット310においてディレクトリ/dir11および/dir12が第2のファイル・システム管理ユニット410によって管理されるファイル・システムの/dir1ディレクトリ内に存在することを示す応答を受信した後、クローリング・ユニット343は、ディレクトリ/dir11および/dir12が第2のファイル・システム管理ユニット410によって管理されるファイル・システムの/dir1ディレクトリ内に存在することと、それらのディレクトリ/dir11および/dir12が仮想化ユニット344による仮想化を必要としていることとが発見されたことを登録するように仮想化管理情報テーブル341を更新するが、図12に示されているようなそれに対応して更新された仮想化管理情報テーブルを参照されたい。
図12に示されているように、すべての子エントリが発見され、仮想化されているとは限らないすべてのディレクトリは、オブジェクト・ステータス「Incomplete」を有するものとしてラベル付けされ、すべての非仮想化されたファイル・システム・オブジェクトは、仮想化ステータス「needs virtualization」を有すると称される。したがって、仮想化手順の中断が生じた場合に、ファイル・システム仮想化は、仮想化手順が、望ましくない中断の後に、仮想化管理情報テーブル341内で「needs virtualization」と示される各ファイル・システム・オブジェクトに対する仮想化ジョブを作成することによって、また仮想化管理情報テーブル341内で「Incomplete」であるものとして示される各ディレクトリに対するディレクトリ情報ジョブを作成することによって容易に継続し得るという点において、ジョブ・キュー内のすべてのまたは少なくとも一部の既存のジョブが失われ得る最悪の場合であっても、都合のよい開始ポイントから確実に、効率的に開始されるものとしてよく、完全にリセットされることを必要としない。
図12に例示的に示されているように、仮想化管理情報テーブル341は、所定の数のファイル・システム・オブジェクト・エントリのブロック341aおよび341b(チャンクとも称され得る)内に記憶され得る。図12の例では、ブロック341aおよび341bごとに5個のエントリ・ラインしかないが、これは説明上の理由でそうなっているにすぎず、ブロックごとのエントリ数は、実際の実装に対してはかなり大きくなり得る。
しかしながら、仮想化管理情報をブロック(チャンク)に記憶することは、別々のブロックをメモリ314(仮想化管理情報テーブル341のデータコンテンツがクローリング・ユニット343、仮想化ユニット344、およびマイグレーション手段345による進行中の仮想化処理および更新を目的として記憶され得る)から仮想化管理情報バックアップ・ユニット342によるバックアップを目的としてストレージ・デバイス315に都合よく書き込まれ得るという利点をもたらす。
特に、バックアップは、ストレージ・デバイス315に現在バックアップコピーされるべき1つのブロックのみが、仮想化管理情報バックアップ・ユニット342によって一時的にブロックされる必要があり、仮想化管理情報テーブル341の他のすべてのブロックはクローリング・ユニット343、仮想化ユニット344、およびマイグレーション手段345によって読み出しおよび書き込みアクセス可能であるという点において、クローリング・ユニット343、仮想化ユニット344、およびマイグレーション手段345による進行中のクローリングおよび仮想化またはマイグレーション処理に著しい影響を及ぼすことなくより効率的に実行され得る。
バックアップ・ブロック341aおよび341bにおける仮想化管理情報テーブル341のバックアップに対するバックアップ処理に関連する好ましい態様について、以下でより詳しくさらに説明される。
上記に加えて、図11の応答を受信した後に、クローリング・ユニット343は、キュー346Aに加えられるべきディレクトリ/dir11および/dir12の各々に対するディレクトリ情報ジョブとキュー346Bに加えられるべきディレクトリ/dir11および/dir12の各々に対する仮想化ジョブとを作成する。ディレクトリ/dir11および/dir12に対する仮想化ジョブが、仮想化ユニット344によって実行された後、ディレクトリ/dir11および/dir12は、第2のファイル・システム管理ユニット410によって管理されるファイル・システム内のそれぞれのリモート・パスに対応する類似のローカル・パスの下の第1のファイル・システム管理ユニット310によって管理されるファイル・システム内のそれぞれの親ディレクトリ/dir1の直下に存在する。
図13は、親ディレクトリ/dir1の子ディレクトリ/dir11および/dir12が仮想化のために作成されているそれぞれの部分的に仮想化されているファイル・システムのツリー構造の一例を示している。
完全で確実な自動バックグラウンド仮想化は、クローリング・ユニット343によるディレクトリ情報ジョブの実行、クローリング・ユニット343による仮想化管理情報テーブル341の更新、クローリング・ユニット343による新規ディレクトリ情報ジョブおよび仮想化ジョブの作成、仮想化ユニット344による仮想化ジョブの実行、などの並行ループを含む上記の態様により、第2のファイル・システム管理ユニット410によって管理されるファイル・システムの完全なツリー構造が第1のファイル・システム管理ユニット310によって管理されるファイル・システムにおいて完全に仮想的に再構築されるまで継続されることによって効率的に、また確実に達成され得る。
すなわち、第2のファイル・システム管理ユニット410によって管理されるファイル・システムの完全なツリー構造は、第2のファイル・システム管理ユニット410によって管理されるファイル・システムの各ディレクトリに対して第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に対応するディレクトリが存在するとき、および第2のファイル・システム管理ユニット410によって管理されるファイル・システムの各ファイル(またはハード・リンクされたファイルなどの類似のオブジェクト)に対して第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に対応する外部リンク・オブジェクトが存在するときに、第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に完全に仮想的に再構築される。
上記の説明は、図4に示されているようなファイルのツリー構造の特定の例を参照しつつなされているが、仮想化手順のより一般的な態様は、以下の流れ図に関連して与えられる。
図14は、クローリング・ユニット343によって実行され得るような自動バックグラウンド仮想化管理の例示的な流れ図を示す図である。
図14の自動バックグラウンド仮想化管理方法は、ジョブ・キュー内の次のジョブをチェックするステップS1001を含む。特に、図3に例示的に示されているように複数のジョブ・キューが用意されている場合、クローリング・ユニット343は、ジョブ・キュー346A内の次のディレクトリ情報ジョブを探索し得る。次のステップS1002において、クローリング・ユニット343は、第2のファイル・システム管理ユニット410によって管理されるようなファイル・システム内に存在する特定のすでに発見されているディレクトリに対する新規ディレクトリ情報ジョブを観察することができる(または子ディレクトリがまだ発見されていない場合、例えば、仮想化フェーズの始めに、クローリング・ユニット343は、少なくとも、上記の図6のステップS5で作成されたディレクトリ情報ジョブを観察する)。
ステップS1003において、クローリング・ユニット343は、ステップS1002で取得されたディレクトリ情報ジョブのターゲット・ディレクトリがないか仮想化管理情報テーブル341をチェックする。特に、ターゲット・ディレクトリが仮想化管理情報テーブル341内にすでに存在しているときに、クローリング・ユニット343は、ターゲット.ディレクトリがCompleteまたはIncompleteとして示されているかどうかについて仮想化管理情報テーブル341内のターゲット・ディレクトリのオブジェクト・ステータスをチェックする。
ターゲット・ディレクトリが仮想化管理情報テーブル341内に存在し、Completeであるものとしてすでに示されている(すなわち、すべての子エントリがすでに仮想化されている)場合、すなわち、ステップS1004がNOを返したときに、クローリング・ユニット343は、ステップS1005で次のジョブがないかジョブ・キューをチェックする。
その一方で、ターゲット・ディレクトリがまだ完全でない(または仮想化管理情報テーブル341内にまだ存在していない)場合、すなわち、ステップS1004がYESを返したときに、クローリング・ユニット343は、ターゲット・ディレクトリに関連する1つまたは複数のディレクトリ情報要求を第2のストレージ装置400の第2のファイル・システム管理ユニット410に発行するという点において次のステップS1006においてターゲット・ディレクトリに対するディレクトリ情報を要求する。
ステップS1007において、第2のストレージ装置400の第2のファイル・システム管理ユニット410からの対応する1つまたは複数の応答が受信され、これはターゲット・ディレクトリの子エントリのうちの全部または少なくとも一部を示すディレクトリ情報を提供する。
次のステップS1008において、クローリング・ユニット343は、仮想化管理情報テーブル341を更新し、ターゲット・ディレクトリに対する受信されたディレクトリ情報を仮想化管理情報テーブル341に書き込む。特に、ステップS1007で受信された情報に含まれる各子エントリ(例えば、ターゲット・ディレクトリ内に存在するファイルを示すエントリまたはターゲット・ディレクトリ内に存在する子ディレクトリを示すエントリ)について、上で説明されているように、対応するエントリが仮想化管理情報テーブル341に追加され、オブジェクト・ステータスおよび仮想化ステータスはファイル・システム・オブジェクトのタイプ、すなわち、各ファイル・システム・オブジェクトに対する仮想化ステータス「needs virtualization」および発見された子ディレクトリに対するオブジェクト・ステータス「incomplete」または発見されたファイルもしくはハード・リンクされたファイルなどの類似のオブジェクトに対するオブジェクト・ステータス「needs migration」に従って示される。
さらに、クローリング・ユニット343は、ステップS1009において新規発見された子オブジェクトの各々に対するそれぞれの仮想化ジョブを作成し、ステップS1010において各新規発見された子ディレクトリに対するそれぞれのディレクトリ情報ジョブをさらに作成し、新規作成されたジョブをそれぞれのジョブ・キューまたは複数のジョブ・キューに追加する。
最後の子オブジェクトに至るまでのターゲット・ディレクトリのすべての子オブジェクトが、ステップS1007において観察された場合(ステップS1011はYESを返す)、クローリング・ユニット343は、ジョブ・キュー内の次のジョブを続け(ステップS1005)、そうでなければステップS1006からS1010が、ターゲット・ディレクトリのすべての子オブジェクトが観察されるまで繰り返される。ステップS1006からS1010のループの代わりに、クローリング・ユニット343は、また、ステップS1011がNOを返したときに同じターゲット・ディレクトリに対する新規ディレクトリ情報ジョブを作成するだけであり、次いで、ステップS1005を継続し、ジョブ実行のさらなる並行化を可能にし得る。
上でさらにすでに説明されているように、クローリング・ユニット343が、例えば、同じターゲット・ディレクトリに対する以前のジョブに関連して、それぞれのターゲット・ディレクトリの子エントリのうちのいくつかに対するディレクトリ情報をすでに以前に受信していた場合、またはステップS1011がNOを返した後(例えば、使用されているファイル・システム通信プロトコルに従って返される子エントリの数に制限があるため)ステップS1006からS1010をループで繰り返したときに、クローリング・ユニット343は、ステップS1008において仮想化管理情報テーブル341内のターゲット・ディレクトリに対するディレクトリ情報を求める要求に対する開始位置を(例えば、ステップS1007の応答で示されている位置に基づき、または例えば、クッキーを使用することによって)さらに繰り返し更新し、これにより、ステップS1006の要求における開始位置を使用することによって次のまだ発見されていない子エントリに対するディレクトリ情報を要求することを可能にし得る。
ステップS1010における新規ディレクトリ情報ジョブの作成により、自動バックグラウンド仮想化は、すべてのディレクトリ情報ジョブが実行され、さらなるディレクトリ情報ジョブが存在しなくなるまで連続的に実行され、これは、ファイル・システムのすべてのディレクトリが観察されており、すべての子エントリ(ファイルおよびさらなる子ディレクトリ)が発見されており、したがって、ステップS1009において作成されているようなそれぞれの仮想化ジョブが発見されたファイル・システム・オブジェクトの各々に対して存在する(またはすでに実行されている)ことを示す。
上記の手順と並行して、仮想化ユニット344は、以下でさらに説明されているようにクローリング・ユニット343によって作成された仮想化ジョブを自動的に実行する。しかしながら、非常に大きなディレクトリについては、クローリング・ユニット343が、ステップS1006からS1010のループで、特に、さまざまな子オブジェクトのすべてに対するステップS1009の繰り返しにおいて、非常に多くの仮想化ジョブを作成するときに、問題が生じ得る。したがって、クローリング・ユニット343のクローリング速度が可変であり、条件に応じて自動的に(および/または手動で)減じられ得ることが望ましい場合がある。
例えば、ジョブ・キューのうちの1つまたは複数が占有されるとすぐにジョブを一時的に記憶するためのデータ・バッファ・ユニット347が、それ自体占有されたことが検出されたときに(例えば、データ・バッファ・ユニット347内に保持されているジョブの個数が閾値を超えたとき、データ・バッファ・ユニット347内の利用可能な記憶領域が閾値を下回ったとき、または利用可能なバッファ記憶領域とバッファ容量との比が閾値を超えたとき、または同様のときに)、クローリング・ユニット343の処理速度は、減じられ、クローリング・ユニット343は、データ・バッファ・ユニット347の占有量が減るまで(例えば、データ・バッファ・ユニット347に保持されているジョブの数が別の閾値を下回ったとき、データ・バッファ・ユニット347内の利用可能な記憶領域が別の閾値を超えたとき、または利用可能なバッファ記憶領域とバッファ容量との比が別の閾値を下回ったとき、または同様のときに)停止されることすらあり得る。
また、ストレージ装置300とストレージ装置400との間の通信が、複数の並列ファイバ・チャネルを有するファイバ・チャネル接続によって実現されるときに、クローリング・ユニット343の処理速度が、ファイバ・チャネルの利用可能性を高めるために増加されるという点において、またクローリング・ユニット343の処理速度が、ファイバ・チャネルの利用可能性を減じるために減じられるという点において、ファイバ・チャネルの利用可能性に基づきクローリング・ユニット343の処理速度を制御することが望ましい場合がある(これにより、実際のユーザ・アクセスおよびオンデマンド仮想化による通信に対するより効率的な接続を可能にし、また仮想化ジョブおよび/またはマイグレーション・ジョブに関連する通信に対するより効率的な接続を可能にする)。また、効率的なユーザ・アクセスを可能にするために、ファイバ・チャネルの利用可能性が閾値を下回る場合にクローリング・ユニット343の処理が一時停止され、これにより、ファイバ・チャネルの利用可能性が制限されていることによるユーザ・アクセス通信における遅延を回避することができる。
図15は、仮想化・ユニット344によって実行されるような自動バックグラウンド仮想化の例示的な流れ図を示す。第1のステップS1101において、仮想化ユニット344は、次のジョブがないかジョブ・キューをチェックし、ステップS1102において特定のファイル・システム・オブジェクトに対する仮想化ジョブを取得する。それぞれの仮想化ジョブのターゲット・ファイル・システム・オブジェクトがディレクトリである(ステップS1103がディレクトリを返す)場合、この方法はステップS1104を続行し、それぞれの仮想化ジョブのターゲット・ファイル・システム・オブジェクトがファイルである(ステップS1103がファイルを返す)場合、この方法はステップS1112を続行する。
仮想化されるべき第2のファイル・システム管理ユニット410によって管理されるファイル・システムのディレクトリに対して、仮想化ユニット344は、第2のファイル・システム管理ユニット410によって管理されるファイル・システム内の仮想化されるべきディレクトリのそれぞれの親ディレクトリに対応する、親ディレクトリ内のローカル・パス・ロケーションにおいて第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に新規ディレクトリを作成する。
同じファイル・ツリー構造をクライアント100に見せることができるように仮想化されるディレクトリと同じ名前を持つ新規ディレクトリが作成される。仮想化フェーズであっても、仮想ディレクトリを作成せず、真のディレクトリをすでに作成していることには、ディレクトリ対応ディレクトリが仮想化されるべき第2のストレージ装置400のファイル・システムと同一のパス・ツリー構造を有する第1のストレージ装置300のファイル・システム内に作成されるものとしてよく、また第1のストレージ装置300内のファイル・システムのすべての外部リンク・オブジェクトが正しいディレクトリ・ツリー構造内にすでに記憶されるものとしてよく、それにより、両方のファイル・システムが仮想化後に同一のツリー構造を有することになるという利点がある。また、ディレクトリを作成することで、作成されたディレクトリにすでに関連付けられているディレクトリ・メタデータおよびファイル・メタデータを付加的に記憶することができる。
ステップS1104においてディレクトリを作成する(またはステップS1006およびS1007においてすでにあらかじめある)ときに、仮想化されるべきディレクトリのすべてのディレクトリ属性は、第2のストレージ装置400から第1のストレージ装置300に転送され、第1のファイル・システム管理ユニット310によって管理されるようなファイル・システム内の新規作成されたディレクトリに関連付けられて記憶される。これは、それぞれのディレクトリの属性に向けられたユーザ要求が第1のファイル・システム管理ユニット310によってローカルで処理することが可能であり、必ずしも第2のストレージ装置400との通信を必要としないという利点を有する。
本発明のいくつかの態様によれば、仮想化が進行中であるとしても仮想化の後にそれぞれのディレクトリのリンク・カウントに関して問い合わせるユーザ要求をローカルで返すことができることが望ましい場合がある。原理上、典型的なファイル・システム内のディレクトリの基礎をなす実リンク・カウントは、N+2と計算されるものとしてよく、ここにおいて、Nは、特定のディレクトリの子ディレクトリの総数である。その理由は、特定のディレクトリの親ディレクトリが、もちろん、特定のディレクトリへのリンクを含み、特定のディレクトリそれ自体が、特定のディレクトリへの自己参照リンク(ときにはオン・ドット・リンクまたは/.と称される)を表す子エントリを含み、特定のディレクトリの子ディレクトリの各々が、それぞれの親ディレクトリへのリンク(ときにはダブル・ドット・リンクまたは/..と称される)を含むからである。
しかしながら、仮想化フェーズでは、特定のディレクトリが、第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に作成されるとき、第2のファイル・システム管理ユニット410によって管理されるファイル・システム内の対応する子ディレクトリは、クローリング・ユニット343によってまだ発見され得ないか、または発見された場合でも、まだ仮想化され得ず、したがって、第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に、対応する子ディレクトリがまだ存在し得ないか、または対応する子ディレクトリの少なくともすべてが存在するとは限らない。
第1のストレージ装置300上のローカルに仮想化されたディレクトリのリンク・カウントに関係する属性要求を確実に、効率的に、正しく処理できるようにするために、ステップS1104において仮想化の際にディレクトリを作成するときに、この方法は、それぞれのディレクトリ内に自己参照リンクを作成するオプションのステップS1105、フェイク・リンク・カウントを計算するオプションのステップS1106、ディレクトリ・メタデータを書き込むオプションのステップS1107、親ディレクトリ・リンクを作成するオプションのステップS1108、および親ディレクトリのメタデータ内のフェイク・リンク・カウントを1だけデクリメントするオプションのステップS1109を続ける(可能な任意の順序で)。
したがって、それぞれの親ディレクトリ内でステップS1104において特定のディレクトリを作成するときに、親ディレクトリの内側の特定のディレクトリへのリンクは、ディレクトリ作成を用いて自動的に作成され、自己参照リンク(シングル・ドット・リンクまたは/.など)は、ステップS1105において作成され、結果として実際のリンク・カウントは2となるが(親ディレクトリ・リンク/..を有する子ディレクトリがまだ作成されていないので)、第2のファイル・システム管理ユニット410によって管理されるようなファイル・システム内の対応するディレクトリの基礎をなす実際のリンク・カウントはN+2となり、Nは特定のディレクトリの子ディレクトリの個数である。
したがって、フェイク・リンク・カウントは、例えば、特定のディレクトリの実リンク・カウントを第2のファイル・システム管理ユニット410に要求し、2を差し引くことによって、第2のファイル・システム管理ユニット410によって管理されるようなファイル・システム内の特定のディレクトリの子ディレクトリの個数Nに基づきステップS1106において計算され、ステップS1107においてディレクトリ・メタデータに書き込まれる。次いで、ユーザが特定のディレクトリのリンク番号を要求したときに、第1のファイル・システム管理ユニット310は、第1のファイル・システム管理ユニット310によって管理されるようなファイル・システム上で観察されるような実リンク・カウントと、ディレクトリ・メタデータに記憶されているようなフェイク・リンク・カウントとを単に加算することによって、また実リンク・カウントとフェイク・リンク・カウントとの総和を返すことによって第2のストレージ装置400とのさらなる通信を必要とすることなくローカルで要求を効率的に処理することができる。
上記の手順について、仮想化されたディレクトリのメタデータに記憶されているフェイク・リンク・カウントは、その子ディレクトリが自らの仮想化を目的として作成されるときには必ず更新される必要がある。すなわち、図15の方法では、ディレクトリの仮想化は、特定のディレクトリ内に親ディレクトリ・リンク(すなわち、ダブル・ドット・リンクまたは/..)を作成するステップS1108と、親ディレクトリのメタデータ内に記憶されているようなフェイク・リンク・カウントを1だけデクリメントするステップS1109とをさらに含む。
例えば、上記の図9において、ディレクトリ/dirは、仮想化されたファイル・システムのツリー構造内にすでに作成されており、その実リンク・カウントは2である(/dir1における自己参照リンクおよび/rootディレクトリにおける/dir1リンクに対して)が、図4におけるディレクトリ/dirは、それに加えて、さらに2つのリンク、すなわち、子ディレクトリ/dir11および/dir12の各々からの1つの追加の親ディレクトリ・リンク/..を有するので、ディレクトリ/dir1のリンク・カウントに関して問い合わせるユーザに返される必要のある実際のリンク・カウントは4である。したがって、図9において、ディレクトリ/dir1のフェイク・リンク・カウントは、2と計算される。ディレクトリ/dir11およびその中の親ディレクトリ・リンク/..が、ディレクトリ/dir11に対する仮想化ジョブの実行後に作成されると、実リンク・カウントは3になり、したがって、フェイク・リンク・カウントは、1だけデクリメントされその結果1となる。それでも、図4において、実リンク・カウントとフェイク・リンク・カウントとの総和は4であり、ディレクトリ/dir1の正しい真のリンク・カウントを返す。
特定のディレクトリのすべての子ディレクトリが、仮想化された後、特定のディレクトリのフェイク・リンク・カウントは、0となっているべきであり、さらなる仮想化ジョブが存在しないディレクトリまたはオブジェクト・ステータス「Complete」を有することが示されているディレクトリのフェイク・リンク・カウントが、ゼロよりも依然として大きい場合、そのような状況は、すべての子ディレクトリが発見されているとは限らないという問題について示し得、仮想化されたディレクトリの完全性を保証するために特定のディレクトリに対してディレクトリ情報ジョブが再び作成され得る。
逆に、ステップS1104において作成されたような特定のディレクトリの親ディレクトリのフェイク・リンク・カウントが0になったかどうかがチェックされるという点においてディレクトリが完全であるかどうかを検出することが可能であり、ステップS1110がYESを返した場合、親ディレクトリが「Incomplete」であるものとして示されたときに、仮想化管理情報テーブル341は、親ディレクトリのオブジェクト・ステータスが「Complete」に更新されたという点において更新される。これ以降(またはステップS1110がNOを返した直後)、特定のディレクトリの仮想化ステータスは、ステップS1114において「virtualized」に更新され、仮想化ユニット344は、次のジョブがないかジョブキューをチェックする(ステップS1101に対応するステップS1115)。
その一方で、S1102の仮想化ジョブに従って仮想化されるべきオブジェクトが特定のファイルであるときにステップS1103が「file」を返した場合、仮想化ユニット344は、ファイルのリモート・パス・ロケーションに対応するローカル・パス・ロケーションにおいて、すなわち、特定のファイルが存在する第2のファイル・システム管理ユニット410によって管理されるファイル・システムのディレクトリに対応する仮想化されたディレクトリにおいて、第2のファイル・システム管理ユニット410によって管理されるファイル・システムの特定のファイルを表し、その特定のファイルへのアクセスを可能にする、XLOと称される、それぞれの外部リンク・オブジェクトを作成する。
その一方で、上で説明されているような図14のステップS1112およびS1113の代わりに、以下の図16を参照しつつ例示的に説明されているようなより詳しく説明されている方法は、適宜、ハード・リンクとも称される、ハード・リンクされたファイルのより効率的な処理を可能にすることができるようにファイル仮想化に対して実装され得る。「ハード・リンク」は、同じ実際のユーザ・データに関連付けられているファイルのグループを指すものとしてよいことに留意されたい。
すなわち、ユーザ(複数可)の観点からのハード・リンクのグループの各ハード・リンクは、独立したファイルの見かけを有するが、ハード・リンクは異なる名前および/または異なるパス・ロケーションを潜在的に有し、各ハード・リンクはストレージ・ユニット410に記憶されている同じ実際のユーザ・データを指している。また、そのユーザ・データが、例えばデータをハード・リンクされたファイルのうちの1つに書きこむことによって、修正されるとすれば、基礎をなすデータは、すべてのハード・リンクに関して修正され、ハード・リンクのうちの1つまたは複数が、名前を変更され、および/または異なるパス・ロケーションに移動されるとすれば、他のハード・リンクは、ハード・リンクのそのような移動または名前変更を認識しない(これはいわゆるソフト・リンクについては異なる)。
クローリング・ユニット343が、同じファイル・データのコンテンツを指すハード・リンクのグループの1つのハード・リンクを表すファイルを発見した場合、クローリング・ユニット343は、それでも、ハード・リンクのグループの他のハード・リンクを容易に発見することはできないが、クローリング・ユニット343または仮想化ユニット344は、発見されたハード・リンクに対するメタデータ内のファイル属性からリンク・カウントを読み出すことによってハード・リンクの総数を決定することができる。ディレクトリのリンク・カウントに関連する状況と同様に、第1のファイル・システム管理ユニット310は、リンク・カウントのうちの1つのみの仮想化の後にローカルでハード・リンクのリンク・カウントを返すことができることが望ましく、ハード・リンクの仮想化を効率的に処理することが望ましい。
図16は、ハード・リンクされたファイル(ハード・リンク)をより効率的に、また確実に処理するための自動バックグラウンド・マイグレーションの別の例示的な流れ図を示している。ステップS1101、S1102、S1112、S1113、S1114、およびS1115は、上で説明されているように図15の同じ参照番号のステップに類似している。
特定のファイルに対する仮想化ジョブを取得した後に、ファイルのリンク・カウントNがステップS1120において決定され(例えば、それぞれのファイルに対するリンク・カウント情報を第2のファイル・システム管理ユニット410に要求することによって、または図14のステップS1007の応答とともにすでにファイルのリンク・カウントを示しているメタデータを受信することによって)、リンク・カウントが、1よりも大きいかどうかがチェックされる(ステップS1121)。ステップS1121がNOを返すと、この方法は、図15のファイル仮想化と同様に継続する(すなわち、ステップS1112、S1113、S1114、およびS1115/S1101)。
しかしながら、仮想化されるべき特定のファイルのリンク・カウントNが、1よりも大きく(すなわち、少なくとも1つの他のハード・リンクが存在するとき)、ステップS1121がYESを返したときに、ファイルのオブジェクトIDが決定され(ステップS1122)、ハード・リンク/ファイルのオブジェクトIDに関連付けられているサブディレクトリの存在に関して、第1のファイル・システム管理ユニット310によって管理されるファイル・システム内に以前に作成された、隠しインデックス・ディレクトリがチェックされる(ステップS1123)。
次に明らかにされるように、隠しインデックス・ディレクトリ内のハード・リンク/ファイルのオブジェクトIDに関連付けられている、サブディレクトリの存在は、ハード・リンクの同じグループの別のハード・リンク(同じオブジェクトIDを有するが、名前および/またはリモート・パス・ロケーションが異なる)は、クローリング・ユニット342によって以前にすでに発見されていたことを示す。その一方で、隠しインデックス・ディレクトリ内にそのような関連付けられているサブディレクトリが存在していない場合、これは、ハード・リンクの同じグループの他のハード・リンクが以前に発見されていなかったことを示す。
したがって、隠しインデックス・ディレクトリ内に関連付けられたサブディレクトリが存在せず、ハード・リンクの同じグループの他のハード・リンクが以前に発見されていなかったことを示す場合、発見されたハード・リンクの(すなわち、特定のファイルの)オブジェクトIDに関連付けられているインデックス・サブディレクトリが、ステップS1125において隠しインデックス・ディレクトリ内に作成され、作成された関連付けられているインデックス・サブディレクトリ内で、N−1個のハード・リンクが、ステップS1126において関連付けられているインデックス・サブディレクトリ内に作成され、ステップS1112において仮想化されるべきファイル/ハード・リンクのリモート・パス・ロケーションに対応するローカル・パス・ロケーションに作成される外部リンク・オブジェクトが、ステップS1126において作成されるようなハード・リンクのグループの別のハード・リンクとして作成される。したがって、ステップS1112において作成された外部リンク・オブジェクトの実際のリンク・カウントは、N−1+1=Nであり、仮想化されるべきファイル/ハード・リンクの基礎をなす実際のリンク・カウントNに同じく対応する。
その一方で、ステップS1124において、仮想化されるべきファイル/ハード・リンクのオブジェクトIDに関連付けられているインデックス・サブディレクトリが隠しインデックス・ディレクトリ内にすでに存在していると決定された場合(ステップS1124がYESを返す)、関連付けられているインデックス・サブディレクトリ内に存在するハード・リンクのうちの1つが、ステップS1127において取り除かれ、対応するハード・リンクされている外部リンク・オブジェクトが、ステップS1112において仮想化されるべきファイル/ハード・リンクのリモート・パス・ロケーションに対応するローカル・パス・ロケーション内に作成され、ハード・リンクされた外部リンク・オブジェクトは関連付けられているインデックス・サブディレクトリのハード・リンクのグループの別のハード・リンクとして作成される。
ステップS1127およびS1112によって、基礎をなす真の全リンク数は、他のすべてのハード・リンクが発見されているかいないかに関係なく、第1のストレージ装置300のファイル・システム内で同じままである、すなわち、第2のストレージ・システム400内の対応するハード・リンク・グループのハード・リンク数Nである。
ステップS1127およびS1112を別々に実行する代わりに、関連付けられているインデックス・サブディレクトリ内に記憶されているハード・リンクのうちの1つに関連して名前変更操作の1つの単一のステップのみを用意することによってなおいっそう効率的に類似の効果が得られる(名前変更操作はステップS1102のジョブに従って1つのハード・リンクの名前を変更することおよび/またはそのハード・リンクをインデックス・サブディレクトリから仮想化されるべきファイルのローカル・ターゲット・パス・ロケーションに移動することを含む)。
最後に、ステップS1127の後に、または上で説明されているような名前変更操作の後にインデックス・サブディレクトリ内にさらなるハード・リンクが残っていない場合(ステップS1128がNOを返す)、関連付けられているインデックス・サブディレクトリは、ステップS1129において取り除かれ(例えば、削除され)得る。
図17Aは、ファイル(またはハード・リンクされたファイル)に対する外部リンク・オブジェクト1100の例示的な概略データ構造を示している。外部リンク・オブジェクト1100は、例示的に、外部ファイル・システム内で使用されているような名前、外部ファイル・システム内のファイルのリモート・パス・ロケーション、外部ファイル・システム内で使用されているようなリモート・オブジェクトID、外部ファイル・システム内で使用されているようなリモートInode番号、外部ファイル・システムのリモート・ファイル・システムID(例えば、複数のファイル・システムが第2のファイル・システム管理ユニット410によって処理される場合)、およびファイル・データのコンテンツが記憶されるストレージ・ユニット420のデバイスを示すリモート・デバイスIDを含む第2のファイル・システム管理ユニット410によって管理されるような外部ファイル・システムに関するファイルに関するメタデータを有する第1の情報セクション1110を備える。
名前およびリモート・パス・ロケーションおよび/またはリモート・オブジェクトIDを参照することによって、外部リンク・オブジェクトは、ユーザが外部ファイル・システム内で使用されているような名前およびリモート・パス・ロケーションおよび/またはリモート・オブジェクトIDを参照するアクセス要求によってファイルにアクセスすることを試みるときに、外部ファイル・システム内のファイルへのアクセスを可能にする。
外部リンク・オブジェクト1100は、例示的に、ローカル・ファイル・システム内で使用されているような名前、内部ファイル・システム内の外部ファイル・オブジェクトのローカル・パス・ロケーション、内部ファイル・システム内で使用されているようなローカル・オブジェクトID、内部ファイル・システム内で使用されているようなローカルInode番号、内部ファイル・システムのローカル・ファイル・システムID(例えば、複数のファイル・システムが第1のファイル・システム管理ユニット310によって処理される場合)、およびファイル・データのコンテンツが記憶されるか、またはデータ・ブロックがデータの後からのマイグレーションのためにすでに割り当てられているものとしてよい、ストレージ・ユニット320のデバイスを示すローカル・デバイスIDを含む第1のファイル・システム管理ユニット310によって管理されるような内部(ローカル)ファイル・システムに関するファイルに関するメタデータを有する第2の情報セクション1120をさらに備える。
それに加えて、第2の情報セクション1120は、ストレージ・ユニット420にすでに記憶されているファイルコンテンツのデータのサイズに対応するオブジェクト・ストア長を示し得る(すなわち、ファイルのオブジェクト・ストア長が外部ファイル・システム上のファイルの長さに対応するときに、このことは実際のファイルコンテンツのすべてのデータが完全にマイグレーションされていることを意味する)。マイグレーションを開始する前に、転送される実際のファイルコンテンツのデータはないので、オブジェクト・ストア長は、仮想化時にはゼロのままである。
外部リンク・オブジェクト1100は、例示的に、現在のタイム・スタンプ(ファイルへの最後の修正アクセスの時刻を示す)、ファイルのリンク・カウント、ファイルの長さ(外部ファイル・システム内の)、およびさらなるファイル属性を含むファイルの属性に関するメタデータを有する第3の情報セクション1130をさらに備える。ファイル属性は、第3の情報セクション1130内に外部リンク・オブジェクトとともに記憶されるので、クライアント100を介してユーザから送信された属性要求は、外部リンク・オブジェクトが作成されるとすぐに、すなわち、ファイルが仮想化されるとすぐに、第1のファイル・システム管理ユニット310によってローカルで、都合よく、効率的に処理され得る。
図17Bは、仮想化されたディレクトリに対するメタデータの例示的な概略データ構造1200を示している。ディレクトリ・メタデータ1200は、例示的に、外部ファイル・システム内で使用されているような名前、外部ファイル・システム内のディレクトリのリモート・パス・ロケーション、外部ファイル・システム内で使用されているようなリモート・オブジェクトID、外部ファイル・システム内で使用されているようなリモートInode番号、外部ファイル・システムのリモート・ファイル・システムID(例えば、複数のファイル・システムが第2のファイル・システム管理ユニット410によって処理される場合)、およびディレクトリが記憶されるストレージ・ユニット420のデバイスを示すリモート・デバイスIDを含む外部ファイル・システムに関するディレクトリに関するメタデータを有する第1の情報セクション1210を備える。
ディレクトリ・メタデータ1200は、例示的に、ローカル・ファイル・システム内で使用されているような名前、内部ファイル・システム内のディレクトリのローカル・パス・ロケーション、内部ファイル・システム内で使用されているようなローカル・オブジェクトID、内部ファイル・システム内で使用されているようなローカルInode番号、内部ファイル・システムのローカル・ファイル・システムID(例えば、複数のファイル・システムが第1のファイル・システム管理ユニット310によって処理される場合)、およびディレクトリが記憶されるストレージ・ユニット320のデバイスを示すローカル・デバイスIDを含む第1のファイル・システム管理ユニット310によって管理されるような内部(ローカル)ファイル・システムに関するディレクトリに関するメタデータを有する第2の情報セクション1220をさらに備える。
ディレクトリ・メタデータ1200は、例示的に、現在のタイム・スタンプ(ディレクトリへの最後の修正アクセスの時刻を示す)、ディレクトリの実リンク・カウント、ディレクトリのフェイク・リンク・カウント、およびさらなるディレクトリ属性を含むディレクトリの属性に関するメタデータを有する第3の情報セクション1230をさらに備える。ディレクトリ属性は、第3の情報セクション1230内にディレクトリ・メタデータとともに記憶されるので、クライアント100を介してユーザから送信された属性要求は、ディレクトリおよびそのメタデータが作成されるとすぐに、すなわち、ディレクトリが仮想化されるとすぐに、第1のファイル・システム管理ユニット310によってローカルで、都合よく、効率的に処理され得る。
上記の説明は自動バックグラウンド仮想化に関係しているが、本発明のさらなる好ましい態様は、特定のファイル・システム・オブジェクトに向けられたクライアント100からアクセス要求を受信することによってトリガーされ得る以下で説明されているような自動オンデマンド仮想化に関係し得る。
図18は、オンデマンド仮想化に対する第1のファイル・システム管理ユニット310および第2のファイル・システム管理ユニット320との間の情報交換の図を例示している。例えば、図13による仮想化の状況においてfile8に向けられているクライアント100から要求が受信されたときに、file8も対応する仮想化された外部リンク・オブジェクトXLO8も、ディレクトリ/dir21内に存在せず、/dir21も存在しない。したがって、自動バックグラウンド仮想化によってまだ仮想化されていなかった、file8へのアクセス要求を受信したときに、第1のファイル・システム管理ユニット310は、クライアント100に対してfile8へのアクセスをブロックし、ユーザによって示されるようなリモート・パス(例えば、/root/dir2/dir21/file8)を探索することを求める要求を発行する。
/dir2は、以前に発見されており、自動バックグラウンド仮想の際にすでに仮想化されているので、第1のファイル・システム管理ユニット310は、その後、ターゲット・ファイル「file8」のリモート・パス内の残っているすべての未知のファイル・システム・オブジェクトを探索することを求める要求(例えば、NFSベースのファイル・システム通信プロトコルにおけるLOOKUP要求)を第2のファイル・システム管理ユニット410に発行する、すなわち、/dir2内のディレクトリ/dir21および/dir21内のfile8に関するルックアップ要求を発行し、それぞれの応答を待つ。次いで、/dir21およびfile8の存在が、第2のファイル・システム管理ユニット410からの応答によって確認された後、第1のファイル・システム管理ユニット310は、以前に仮想化された/dir2内に/dir21をローカルで作成し、新規作成された/dir21内に外部リンク・オブジェクトXLO8をローカルで作成するという点において、/dir21およびfile8のユーザ・トリガー・オンデマンド仮想化を実行する。これ以降、file8へのユーザ・アクセスは、/dir2および/dir21内の残りの他のすべてのファイル・システム・オブジェクトを仮想化する前に、新規作成された外部リンク・オブジェクトXLO8を介して即座に有効化される。
図19は、図18によるオンデマンド仮想化の後の部分的に仮想化されたファイル・システムのツリー構造の一例を示している。したがって、ディレクトリ/dir21および外部ファイル・システム・オブジェクトXLO8は、第1のファイル・システム管理ユニット310によってローカルで管理されるファイル・システム内に存在する。
図20は、仮想化(ターゲット・ファイルがまだ仮想化されていない場合には、オンデマンド仮想化を含む)の際にユーザのファイル・アクセスを可能にするための方法を示す例示的な流れ図を示す。
ステップS2001においてファイル・システム内の特定のターゲット・ファイルに向けられているクライアント100を介してアクセス要求がユーザから受信されたときに、第1のファイル・システム管理ユニット310は、ターゲット・ファイルがそれでも仮想化されているかどうかについて仮想化管理情報テーブル341をチェックする(ステップS2002)。ステップS2002がYESを返した場合、ファイル・システム内のターゲット・ファイルへのユーザ・アクセスは、ターゲット・ファイルに対応する外部リンク・オブジェクトを通じて即座に有効化される。
その一方で、ターゲット・ファイルが、まだ仮想化されていない場合(ステップS2002がNOを返す)、第1のファイル・システム管理ユニット310は、ステップS2001において受信されたアクセス要求で示されているようなターゲット・ファイルのリモート・パス内のターゲット・ファイルを探索する。ターゲット・ファイルの(またはリモート・パスのディレクトリのどれかの)存在が、第2のファイル・システム管理ユニット410によって確認されず(例えば、ユーザが不正なリモート・パスを与えたときに)、ステップS2004がNOを返した場合、アクセス要求を送信したクライアント100にI/Oエラーが返される。
ターゲット・ファイルの存在が、ステップS2003の探索要求(複数可)への応答によって第2のファイル・システム管理ユニット410によって確認された場合(ステップS2004がYESを返す)、第1のファイル・システム管理ユニット310は、ステップS2006においてリモート・パスの非仮想化されたオブジェクトの各々に対して(すなわち、リモート・パス内のすべての非仮想化されたディレクトリおよびターゲット・ファイルに対して)仮想化ジョブを作成する。さらなる好ましい態様において、第1のファイル・システム管理ユニット310は、それに加えて、リモート・パスの非仮想化されたディレクトリの各々に対してディレクトリ情報ジョブを作成し得る。また、上述のジョブは、上述のような自動バックグラウンド仮想化に使用されるのと同じジョブ・キュー(複数可)にアドホックで追加され得る。
ターゲット・ファイルを含む、リモート・パスのすべての以前に非仮想化されていたオブジェクトが仮想化された後(ステップS2007がYESを返す)、ファイル・システム内のターゲット・ファイルへのユーザ・アクセスは、ターゲット・ファイルに対応する外部リンク・オブジェクトを通じて有効化される(ステップS2008)。
図21は、仮想化(ターゲット・オブジェクトがまだ仮想化されていない場合には、オンデマンド仮想化を含む)の際に属性アクセスを可能にするための方法を示す例示的な流れ図を示す。
ステップS2101においてファイル・システム内の特定のファイル・システム・オブジェクトに向けられているクライアント100を介して属性情報要求がユーザから受信されたときに、第1のファイル・システム管理ユニット310は、ターゲット・オブジェクトがそれでも仮想化されているかどうかについて仮想化管理情報テーブル341をチェックする(ステップS2102)。ステップS2102がYESを返した場合、要求はローカルで処理され、要求された属性情報が、外部リンク・オブジェクトまたはディレクトリ・メタデータに関連して記憶されている属性情報に基づき返される(ステップS2108)。
その一方で、ターゲット・オブジェクトが、まだ仮想化されていない場合(ステップS2102がNOを返す)、第1のファイル・システム管理ユニット310は、ステップS2101において受信された属性情報要求で示されているようなターゲット・オブジェクトのリモート・パス内のターゲット・オブジェクトを探索する。ターゲット・オブジェクトの(またはリモート・パスのディレクトリのどれかの)存在が、第2のファイル・システム管理ユニット410によって確認されず(例えば、ユーザが不正なリモート・パスを与えたときに)、ステップS2104がNOを返した場合、要求を送信したクライアント100にエラーが返される。
ターゲット・オブジェクトの存在が、ステップS2103の探索要求(複数可)への応答によって第2のファイル・システム管理ユニット410によって確認された場合(ステップS2104がYESを返す)、第1のファイル・システム管理ユニット310は、ステップS2106においてリモート・パスの非仮想化されたオブジェクトの各々に対して仮想化ジョブを作成する。さらなる好ましい態様において、第1のファイル・システム管理ユニット310は、それに加えて、リモート・パスの非仮想化されたディレクトリの各々に対してディレクトリ情報ジョブを作成し得る。また、上述のジョブは、上述のような自動バックグラウンド仮想化に使用されるのと同じジョブ・キュー(複数可)にアドホックで追加され得る。
ターゲット・オブジェクトを含む、リモート・パスのすべての以前に非仮想化されたオブジェクトが、仮想化された後(ステップS2107がYESを返す)、要求はローカルで処理され、要求された属性情報が、外部リンク・オブジェクトまたはディレクトリ・メタデータに関連して記憶されている属性情報に基づき返される(ステップS2108)。
図22Aは、仮想化(ターゲット・ディレクトリがまだ仮想化されていない場合には、オンデマンド仮想化を含む)の際にユーザのディレクトリ・アクセスを可能にするための方法を示す例示的な流れ図を示す。
ステップS2201においてファイル・システム内の特定のターゲット・ディレクトリに向けられているクライアント100を介してアクセス要求がユーザから受信されたときに、第1のファイル・システム管理ユニット310は、ターゲット・ディレクトリがそれでも仮想化されているかどうかについて仮想化管理情報テーブル341をチェックする(ステップS2202)。ステップS2202がYESを返した場合、この方法は、この例示的な態様(さらに以下で説明されている)に従ってステップS2209を続行する。
その一方で、ターゲット・ディレクトリが、まだ仮想化されていない場合(ステップS2202がNOを返す)、第1のファイル・システム管理ユニット310は、ステップS2201において受信されたアクセス要求で示されているようなターゲット・ディレクトリのリモート・パス内のターゲット・ディレクトリを探索する。ターゲット・ディレクトリの(またはリモート・パスのディレクトリのどれかの)存在が、第2のファイル・システム管理ユニット410によって確認されず(例えば、ユーザが不正なリモート・パスを与えたときに)、ステップS2204がNOを返した場合、アクセス要求を送信したクライアント100にI/Oエラーが返される。
ターゲット・ディレクトリの存在が、ステップS2203の探索要求(複数可)への応答によって第2のファイル・システム管理ユニット410によって確認された場合(ステップS2204がYESを返す)、第1のファイル・システム管理ユニット310は、ステップS2206においてリモート・パスの非仮想化されたオブジェクトの各々に対して(すなわち、リモート・パス内のすべての非仮想化されたディレクトリに対して)仮想化ジョブを作成する。この例示的な態様によれば、この方法は、ターゲット・ディレクトリの子オブジェクト(ターゲットのすべての子ディレクトリおよびターゲット・ディレクトリに収容されているすべてのファイルを含む)の各々に対して仮想化ジョブをさらに作成するステップS2207を続行する。
さらなる好ましい態様において、第1のファイル・システム管理ユニット310は、それに加えて、リモート・パスの非仮想化されたディレクトリの各々に対するディレクトリ情報ジョブおよび/またはターゲット・ディレクトリの子ディレクトリの各々に対するディレクトリ情報ジョブを作成し得る。また、上述のジョブは、上述のような自動バックグラウンド仮想化に使用されるのと同じジョブ・キュー(複数可)にアドホックで追加され得る。
ターゲット・ディレクトリを含む、リモート・パスのすべての以前に非仮想化されたオブジェクトが、仮想化され(ステップS2208がYESを返す)、ターゲット・ディレクトリのすべての子ディレクトリが、仮想化された後(ステップS2209がYESを返す)、この方法は、ステップS2210に進み、ターゲット・ディレクトリのオブジェクト・ステータスを「Complete」に更新する。その後、ターゲット・ディレクトリへのクライアント・アクセスは、ステップS2211において有効化される。
しかしながら、ステップS2209がS2209を返すと(例えば、ステップS2207において作成されたすべてのジョブがまだ実行されていないとき、またはこの方法がステップS2202からS2209に進んだ場合)、この方法は、待機するか、または用心のためステップS2207に戻ることすらあり得る。その一方で、ステップS2209がNOを返した場合、この方法は、仮想化ジョブがステップS2209において以前に作成されているので、またはステップS2202がYESを返すときに、自動バックグラウンド・マイグレーションのステップS1009によるターゲット・ディレクトリの仮想化の後に、単に待つだけであるものとしてよい。
上記において、ターゲット・ディレクトリへのユーザ・アクセスを有効化する前にターゲット・ディレクトリのすべての子ディレクトリを仮想化していることが望ましいものとしてよいが(ユーザからのすべてのルックアップおよびディレクトリ情報要求が都合よくローカルで処理され得るので)、そのような方法は、多数の子エントリを有するターゲット・ディレクトリに対して望ましくない遅延をもたらし得る。
多数の子エントリを有するターゲット・ディレクトリに対するそのような望ましくない遅延を回避するために、ターゲット・ディレクトリへのユーザ・アクセスを有効化する前にターゲット・ディレクトリの子ディレクトリが必ずしも仮想化されない別の代替的方法が提供され得る。したがって、図22Bは、仮想化の際にユーザのディレクトリ・アクセスを可能にするための方法を示す代替的な例示的な流れ図を示している。ステップS2201、S2202、S2203、S2204、S2205、S2206、S2207、S2208、およびS2211は、上で説明されている図22Aと同じであるが、ステップS2209およびS2210は省かれている。
したがって、多数の子エントリ(数百万個のエントリなど)を有するターゲット・ディレクトリであっても、ターゲット・ディレクトリへのユーザ・アクセスは、ターゲット・ディレクトリの仮想化の直後の多数の子エントリの仮想化による望ましくない遅延を生じることなく可能にされ得る。それでも、ステップS2207により、子エントリのバックグラウンド・マイグレーションは進行中である。
ユーザから送信されたディレクトリ情報要求に関して、要求がローカルで処理され得るか、または第2のストレージ装置300にパススルーされる必要があるかどうかが決定される必要がある。例えば、使用されるファイル・システム通信プロトコルが、M個の子エントリのリストが典型的には、ディレクトリ情報要求に応答して返されるように最大数Mへのディレクトリ情報要求に応答して返される子エントリの数を制限し、要求が開始位置を示さないときに、要求は、最初のM個の子エントリのリストによって応答する必要があり、すでに少なくとも最初のM個の子オブジェクトがそれでも仮想化されていた場合にローカルで処理され得る。
ターゲット・ディレクトリのMより少ない子オブジェクトがそれでも仮想化されている場合、要求は、第2のファイル・システム管理ユニット410にパススルーされなければならず、第2のファイル・システム管理ユニット410の応答が、要求側クライアント100に返される。同様に、ディレクトリ情報要求が、開始位置を示しているとき(例えば、返されたエントリのリストがP番目の子エントリから始まるものとすることを示す)、要求は、すでに少なくとも最初のM+P個の子オブジェクトがそれでも仮想化されている場合にローカルで処理されるものとしてよく、そうでない場合、要求はパススルーされる必要がある。
図23は、仮想化管理テーブルのバックアップのための方法を示す例示的な流れ図を示している。上で説明されているように、仮想化管理情報テーブル341は、所定のサイズの(すなわち、特定の数のエントリ・ラインを有する)ブロック(チャンク)341aから341dに記憶される。
仮想化(および/またはマイグレーション)処理において、仮想化管理情報テーブル341は、メモリ314内に保持されるが、仮想化管理情報バックアップ・ユニット342は、仮想化管理情報テーブル341のバックアップ・コピーを作成することおよび作成されたバックアップ・コピーをストレージ・デバイス315にコピーすることを繰り返しまたはさらには定期的にも実行するように適合される。
しかしながら、マルチスレッドのクローリング・ユニット343、仮想化ユニット344、およびマイグレーション・ユニット345の複数のスレッドは、仮想化管理情報テーブル341へのアクセスを、それを更新するために行うことが非常に多い場合あるので、また仮想化管理情報テーブル341内のエントリの総数は、数百万から数十億(百万の数千倍)個のファイル・システム・オブジェクトを有するファイル・システムについては非常に大きくなり得るので、バックアップ実行は、仮想化管理情報テーブル341が丸ごとバックアップ・コピーされるのではなく、ブロック341aから341dの単位でバックアップ・コピーされるときにより効率的になされ得るが、ここにおいて、現在バックアップされている、特定の1つのブロックへのアクセスがブロックされたときでも、クローリング・ユニット343、仮想化ユニット344、およびマイグレーション・ユニット345は、依然として、他のすべてのブロックへの読み書きアクセスを効率的に行うことができる。
図23によるバックアップ処理によれば、仮想化管理情報テーブル・バックアップは、ステップS2301において可能にされ、仮想化管理情報バックアップ・ユニット342によって実行されるバックアップ処理は、ステップS2302における次の(または最初の)仮想化管理情報テーブル・ブロックに進む。
ステップS2302において、仮想化管理情報テーブル・ブロックが、オブジェクト・ステータス「Complete」を有するものとして示されているディレクトリを収容するかどうかがチェックされる。そのようなディレクトリが存在せず(例えば、ブロック内のすべてのエントリがハード・リンクなどのファイルまたはファイルに似たオブジェクトに関係する場合、またはブロック内で示されているすべてのディレクトリがオブジェクト・ステータス「Incomplete」を有する場合)、ステップS2303がNOを返す場合、バックアップ方法は、現在の仮想化管理情報ブロックのバックアップ・コピーを作成し、そのコピーをストレージ・デバイス315に(および/またはリモート・バックアップ・ストレージ・デバイスに)記憶するステップS2308をすぐに続行する。次いで、この方法は、ステップS2302における次のブロックを続行する。
その一方で、ステップS2303がYESを返した場合、それぞれのブロックの前のバックアップ・バージョンが存在するかどうかがチェックされ、もし存在すれば、前のバックアップ・バージョンは、現在のブロック内で「Complete」と示されている各ディレクトリについて、同じディレクトリがその特定のブロックの前のバックアップ・バージョンにおいて「Incomplete」と前に示されたかどうかに関してチェックされる(ステップS2305)。ステップS2305がNOを返した場合、すなわち、現在のブロック内でCompleteであると示されているすべてのディレクトリが、その特定のブロックの以前のバックアップ・バージョンにおいてすでにCompleteであるとして示されていた場合、この方法は、現在の仮想化管理情報ブロックのバックアップ・コピーを作成し、そのコピーをストレージ・デバイス315に(および/またはリモート・バックアップ・ストレージ・デバイスに)記憶するステップS2308を続行する。次いで、この方法は、ステップS2302における次のブロックを続行する。
しかしながら、ステップS2305がYESを返した場合、すなわち、少なくとも1つのディレクトリがその特定のブロックの以前のバックアップ・バージョンにおいて「Incpomplete」であるとして示されていたが、現在、その特定のブロックの現在のバージョンにおいて「Complete」であるとして示されているときに、仮想化管理情報バックアップ・ユニット342によって実行されるバックアップ処理は、最初に、ステップS2305において決定されたディレクトリ(または複数のディレクトリ)の子ディレクトリに関係する少なくとも1つのエントリを収容する仮想化管理情報テーブル341の他のすべてのテーブル・ブロックを、ステップS2306において決定し、ステップS2308において現在のテーブル・ブロックのバックアップを実行する前にステップS2307において決定されたような他のすべてのテーブル・ブロックのバックアップを実行する。
したがって、仮想化の中断、ならびに仮想化管理情報テーブル341のデータおよびジョブ・キュー346Aから346Cのデータを含むメモリ314内のデータの喪失が生じた場合であっても、仮想化(およびマイグレーション)は、仮想化管理情報テーブル341がバックアップ・コピーから復元され得る、それぞれの仮想化ジョブが「needs virtualization」として示されているすべてのオブジェクトについて作成され得る、およびそれぞれのディレクトリ情報ジョブが完全な仮想化を再開することを必要とすることなくオブジェクト・ステータス「Incomplete」を有する各ディレクトリについて作成され得る、という点において確実に再開され得る。
しかしながら、ちょうど完了したばかりのディレクトリの情報を含むブロックが、子ディレクトリ情報を有するブロックの予備的バックアップも実行することなくバックアップに使用された場合、子ディレクトリに収容されているオブジェクトは、見逃される可能性がある。特に、ディレクトリがCOMPLETEであるものとして示されているときに、これは、すべての子オブジェクトが仮想化されていることを意味し、すべての子ディレクトリは、実際にはすでに存在している(ファイル・システム内、さらには仮想化管理テーブル内にも)ことを意味するが、ジョブ・キュー内のデータの喪失は、それらの子ディレクトリのうちの1つまたは複数に向けられたディレクトリ情報要求が失われ、テーブル・ブロックに追加され以降にそれらのテーブル・ブロックがまだバックアップされていなかったという状況を引き起こすときに、それらの子ディレクトリの子エントリは、決して自動バックグラウンド仮想化によって仮想化され得ない。
その一方で、少なくとも1つの子ディレクトリ・エントリを収容する各さらなるテーブル・ブロックに関連してバックアップも実行する前にではなく、完了したディレクトリのテーブル・ブロックのバックアップを実行することによって、そのような望ましくない状況は、仮想化の中断ならびにジョブ・キューおよび仮想化管理情報テーブル内のデータの喪失という最悪のシナリオであっても確実に回避され得る。
図24は、図4のファイル・システムのツリーの仮想化が完了した後の仮想化管理情報テーブル341の一例を示している。このテーブルは、4つのデータ・ブロック341aから341dに例示的に分割されており、図4のファイル・システムのツリー構造のファイル・システム・オブジェクトの各々について1つのエントリを収容する。図24のテーブル341で示されているファイル・オブジェクトの各々は、それぞれの外部リンク・オブジェクトが図5Aの構造に従って第2のファイル・システム管理ユニット410によって管理されるようなファイル・システムのファイルの各々について存在することを示す仮想化ステータス「virtualized」を有し、各ファイル・オブジェクトは、実際のファイルコンテンツのデータは第2のストレージ装置400のストレージ・ユニット420から第1のストレージ装置300のストレージ・ユニット320にまだマイグレーションされていないことを示すオブジェクト・ステータス「needs migration」を有する。
図24のテーブル341で示されているディレクトリの各々は、同じ名前のそれぞれのディレクトリが図4および5Aの両方のツリー構造に従って第2のファイル・システム管理ユニット410によって管理されるようなファイル・システムのディレクトリの各々について存在することを示す仮想化ステータス「virtualized」を有し、各ディレクトリ・オブジェクトは、そのすべての子オブジェクトも仮想化されていることを示すオブジェクト・ステータス「Complete」を有する。
次いで、マイグレーションの第2のフェーズにおいて、クローリング・ユニット343は、仮想化管理情報テーブル341全体を再ウォーキングして、ジョブ・キュー346Cに追加されるべき「needs migration」として示されている各ファイル・オブジェクトについてそれぞれのマイグレーション・ジョブを作成することができ、それにより、マイグレーション・ユニット345は、連続的に、1つまたは複数のマイグレーション(例えば、マルチスレッド・マイグレーション・ユニット345と並行に)実行し、実際のファイルコンテンツのデータを第1のストレージ装置300のストレージ・ユニット320にマイグレーションし得る。
代替的に、もちろん、仮想化フェーズの完了前であっても、マイグレーション・フェーズを開始することが可能である。次いで、クローリング・ユニット343または仮想化ユニット344も、すでに仮想化を行っている間にマイグレーション・ジョブを、例えば、上で説明されているステップS1007、S1008、S1009、S1010、S1112、S1113、またはS1114のうちの1つのステップと一緒に、またはその後に作成し得る。
図6に関連して上で説明されているように、第2のストレージ装置400によって処理されるファイル・システム(複数可)へのユーザ・アクセスは、第2のストレージ装置400を相互接続し(ステップS2)、オンデマンド仮想化を有効化した(ステップS7)ときのほぼ直後に第1のストレージ装置300を通じて間接的に可能にされ(ステップS8)、オンデマンド仮想化は、図20から22Bに従って実行され得る。次いで、仮想化されたオブジェクトへのユーザ・アクセスは、図25Aから25Hに関連して次に説明されているように可能にされ得る。
図25Aは、仮想化されたファイルへの書き込みアクセスに対するクライアント100と、第1のファイル・システム管理ユニット310と、第2のファイル・システム管理ユニット410との間の情報交換の図を例示している。第1のファイル・システム管理ユニット310においてターゲット・ファイル(例えば、図4のfile8)に対する書き込み要求が受信されたときに、書き込み要求は、ターゲット・ファイルに対する対応する書き込み要求を第1のファイル・システム管理ユニット310から第2のファイル・システム管理ユニット410に発行することによって対応する外部リンク・オブジェクト(例えば、図5AのXLO8)を介してパススルーされる。
第1のファイル・システム管理ユニット310において第2のファイル・システム管理ユニット410から書き込み確認応答を受信した後に、対応する外部リンク・オブジェクトのメタデータが更新され(例えば、ファイルの長さ、タイム・スタンプ、または書き込み操作によって変更される他のファイル属性を更新することによって)、次いで、クライアント100に対して書き込み確認応答がなされる。
図25Bは、仮想化されたファイルへの読み出しアクセスに対するクライアント100と、第1のファイル・システム管理ユニット310と、第2のファイル・システム管理ユニット410との間の情報交換の図を例示している。第1のファイル・システム管理ユニット310においてターゲット・ファイル(例えば、図4のfile8)に対する読み出し要求が受信されたときに、読み出し要求は、ターゲット・ファイルに対する対応する読み出し要求を第1のファイル・システム管理ユニット310から第2のファイル・システム管理ユニット410に発行することによって対応する外部リンク・オブジェクト(例えば、図5AのXLO8)を介してパススルーされる。
第1のファイル・システム管理ユニット310において第2のファイル・システム管理ユニット410から読み出し応答(読み出しデータを含む)を受信した後に、読み出し要求に応答して受信された読み出しデータがクライアント100に転送される。
図25Cは、仮想化されたファイルまたはディレクトリへの属性アクセスに対するクライアント100と、第1のファイル・システム管理ユニット310と、第2のファイル・システム管理ユニット410との間の情報交換の図を例示している。第1のファイル・システム管理ユニット310においてターゲット・ファイル(例えば、図4のfile8)に対する属性読み出し要求が受信されたときに、対応する属性は、対応する外部リンク・オブジェクト(例えば、図5AのXLO8)からローカルで読み出され、要求された属性は、第2のファイル・システム管理ユニット410との通信から遅延なくクライアントの属性読み出し要求に応答してクライアント100に効率的に、都合よく返される。
ディレクトリについては、属性読み出し要求は、ディレクトリ・メタデータから対応する属性を読み出すことによって第1のファイル・システム管理ユニット310においてローカルで同様に処理され、読み出された属性は、第2のファイル・システム管理ユニット410との通信から遅延なくクライアントの属性読み出し要求に応答してクライアント100に効率的に、都合よく返される。
ディレクトリのリンク・カウントに関する問い合わせがある場合、第1のファイル・システム管理ユニット310は、第1のファイル・システム管理ユニット310によって管理されるようなファイル・システム上の対応するディレクトリの実際のリンク・カウントを返さず、上で説明されているように実リンク・カウントとフェイク・リンク・カウントとの総和を返すことによって第2のファイル・システム管理ユニット410によって管理されるようなファイル・システム上の対応するディレクトリの実際のリンク・カウントを返す。
図25Dは、仮想化されたファイルを削除することに対するクライアント100と、第1のファイル・システム管理ユニット310と、第2のファイル・システム管理ユニット410との間の情報交換の図を例示している。第1のファイル・システム管理ユニット310においてターゲット・ファイル(例えば、図4のfile8)に対する削除要求が受信されたときに、削除要求は、ターゲット・ファイルに対する対応する削除要求を第1のファイル・システム管理ユニット310から第2のファイル・システム管理ユニット410に発行することによって対応する外部リンク・オブジェクト(例えば、図5AのXLO8)を介してパススルーされる。
第2のファイル・システム管理ユニット410によりターゲット・ファイル(例えば、file8)を削除し、第1のファイル・システム管理ユニット310において第2のファイル・システム管理ユニット410から削除確認応答を受信した後に、対応する外部リンク・オブジェクト(例えば、XLO8)が削除され、仮想化管理情報テーブル341内の対応するエントリは、削除されたファイルに対するマイグレーション・ジョブの作成を回避するために取り除かれ、次いで、クライアント100に対して、ターゲット・ファイルの削除の確認応答がなされる。
図25Eは、ファイル作成に対するクライアント100と、第1のファイル・システム管理ユニット310と、第2のファイル・システム管理ユニット410との間の情報交換の図を例示している。ターゲット・パス・ロケーション内に新規ファイルを作成するために、第1のファイル・システム管理ユニット310においてファイル作成要求が受信されたときに、対応する新規外部リンク・オブジェクトが、ターゲット・パス・ロケーションに対応するローカル・パス内に作成され、ファイル作成要求は、ターゲット・パス・ロケーション内のターゲット・ファイルに対する対応するファイル作成要求を第1のファイル・システム管理ユニット310から第2のファイル・システム管理ユニット410に発行することによってパススルーされる。
ターゲット・パス・ロケーションに対応するリモート・パス内に新規ファイルを作成し、第1のファイル・システム管理ユニット310において第2のファイル・システム管理ユニット410からファイル作成確認応答を受信した後に(および潜在的に、対応する外部リンク・オブジェクトのメタデータを更新した後に)クライアント100に対して、ターゲット・ファイルのファイル作成の確認応答がなされる。
図25Fは、属性を変更することに対するクライアント100と、第1のファイル・システム管理ユニット310と、第2のファイル・システム管理ユニット410との間の情報交換の図を例示している。第1のファイル・システム管理ユニット310においてターゲット・ファイル(例えば、図4のfile8)に対する属性変更要求が受信されたときに、属性変更要求は、対応する外部リンク・オブジェクト(例えば、図5AのXLO8)における属性が属性変更要求に従って変更されるという点において最初に実行され、次いで、属性変更要求は、ターゲット・ファイルに対する対応する属性変更要求を第1のファイル・システム管理ユニット310から第2のファイル・システム管理ユニット410に発行することによって対応する外部リンク・オブジェクト(例えば、XLO8)を介してパススルーされる。
第2のファイル・システム管理ユニット410によりターゲット・ファイルの属性を変更し、第1のファイル・システム管理ユニット310において第2のファイル・システム管理ユニット410から属性変更確認応答を受信した後に、クライアント100に対して、属性変更の確認応答がなされる。同様に、第1のファイル・システム管理ユニット301においてターゲット・ディレクトリに対する属性変更要求を受信したときに、仮想化されたディレクトリのディレクトリ・メタデータが、要求に従って属性を変更するように更新され、次いで、属性変更要求は、第2のファイル・システム管理ユニット410に転送される。
図25Gは、ディレクトリ作成に対するクライアント100と、第1のファイル・システム管理ユニット310と、第2のファイル・システム管理ユニット410との間の情報交換の図を例示している。ターゲット・パス・ロケーション内に新規の空のディレクトリを作成するために、第1のファイル・システム管理ユニット310においてディレクトリ作成要求が受信されたときに、対応する新規の空のディレクトリおよびそのディレクトリ・メタデータが、ターゲット・パス・ロケーションに対応するローカル・パス内に作成され、新規ディレクトリは、COMPLETEであるものとして示され、ディレクトリ作成要求は、ターゲット・パス・ロケーション内のターゲット・ディレクトリに対する対応するディレクトリ作成要求を第1のファイル・システム管理ユニット310から第2のファイル・システム管理ユニット410に発行することによってパススルーされる。
ターゲット・パス・ロケーションに対応する第2のファイル・システム管理ユニット410によって管理されるファイル・システムのリモート・パス内に新規の空のディレクトリを作成し、第1のファイル・システム管理ユニット310において第2のファイル・システム管理ユニット410からディレクトリ作成確認応答を受信した後に(および潜在的に、対応するディレクトリ・メタデータのメタデータを更新した後に)クライアント100に対して、ターゲット・ディレクトリのディレクトリ作成の確認応答がなされる。
図25Hは、ディレクトリ名前変更に対するクライアント100と、第1のファイル・システム管理ユニット310と、第2のファイル・システム管理ユニット410との間の情報交換の図を例示している。既存のディレクトリの名前を変更するために、第1のファイル・システム管理ユニット310においてディレクトリ名前変更要求(ディレクトリの名前および/またはパス・ロケーションを変更する)が受信されたときに、対応するディレクトリは、第1のファイル・システム管理ユニット310によって管理されるようなファイル・システム内でディレクトリ名前変更要求に従って名前を変更され、ディレクトリ名前変更要求は、ターゲット・ディレクトリに対する対応するディレクトリ名前変更要求を第1のファイル・システム管理ユニット310から第2のファイル・システム管理ユニット410に発行することによってパススルーされる。
第2のファイル・システム管理ユニット410によって管理されるようなファイル・システム内でディレクトリ名前変更要求に従ってターゲット・ディレクトリの名前を変更した後、また第2のファイル・システム管理ユニット410から第1のファイル・システム管理ユニット310において名前変更確認応答を受信した後に、クライアント100に対して、ターゲット・ディレクトリのディレクトリ名前変更の確認応答がなされる。
上述の実施形態の構造の特徴、コンポーネント、および特定の詳細は、それぞれのアプリケーションに合わせて最適化されたさらなる実施形態を形成するように交換されるか、または組み合わされ得る。これらの修正が、当業者にとって容易にはっきり理解できるものである限り、それらは、本発明の説明を簡潔にするために、可能なあらゆる組合せを明示的に指定することなく上記の説明によって暗黙のうちに開示されるものとする。



  1. 複数のクライアント・コンピュータと、第2のファイル・システムを管理し、前記第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニットと、前記複数のクライアント・コンピュータと前記第2のファイル・システム管理ユニットとの間で相互接続されている第1のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて前記第2のファイル・システムへの間接的アクセスを可能にする仮想化されたファイル・システムを実現するための装置であって、
    前記第1のファイル・システム管理ユニットによって管理される第1のファイル・システム内に第1のディレクトリを作成し、
    前記第2のファイル・システムの第1のディレクトリを前記第1のファイル・システムの前記第1のディレクトリに関連付け、
    前記第1のファイル・システム管理ユニットにおいて前記クライアント・コンピュータから受信されたクライアント要求に基づき、また前記第1のファイル・システムの前記第1のディレクトリと前記第2のファイル・システムの前記第1のディレクトリとの間の前記関連付けに基づき前記第1のファイル・システム管理ユニットによる前記第2のファイル・システムのオンデマンド仮想化を可能にし、
    前記第1のファイル・システムを通じて前記第2のファイル・システムへの間接的クライアント・アクセスを可能にするように適合された前記第1のファイル・システム管理ユニットを備える装置。

  2. オンデマンド仮想化を実行するために、前記第1のファイル・システム管理ユニットは、
    クライアント・コンピュータから、前記第2のファイル・システムの前記第1のディレクトリに関する第2のパス・ロケーションにおいて前記第2のファイル・システムの第2のディレクトリに向けられたアクセス要求を受信し、
    前記第2のファイル・システムの前記第2のディレクトリに向けられた前記アクセス要求を受信した後に、前記第1のファイル・システムの前記第1のディレクトリに関する前記第2のパス・ロケーションにおいて前記第1のファイル・システム内に第2のディレクトリを作成し、
    前記第2のファイル・システムの前記第2のディレクトリのメタデータを前記第1のファイル・システム内に前記第1のファイル・システムの前記第2のディレクトリのメタデータとして記憶するように適合されることを特徴とする請求項1に記載の装置。

  3. 前記第1のファイル・システム管理ユニットは、
    前記アクセス要求が、前記第2のファイル・システムの前記第2のディレクトリを修正することを求める要求であるときに、前記受信されたアクセス要求に従って前記第1のファイル・システムの前記第2のディレクトリを修正し、前記アクセス要求を前記第2のファイル・システム管理ユニットに送信して前記第2のファイル・システム管理ユニットによる前記受信されたアクセス要求に従って前記第2のファイル・システムの前記第2のディレクトリを修正し、
    前記アクセス要求が、前記第2のファイル・システムの前記第2のディレクトリの属性を読み出すことを求める要求であるときに、前記第1のファイル・システムの前記第2のディレクトリのメタデータに基づき前記第2のファイル・システムの前記第2のディレクトリの要求された属性を返すように適合されることを特徴とする請求項2に記載の装置。

  4. オンデマンド仮想化を実行するために、前記第1のファイル・システム管理ユニットは、
    クライアント・コンピュータから、前記第2のファイル・システムの前記第1のディレクトリに関する第1のパス・ロケーションにおいて前記第2のファイル・システムの第1のファイルに向けられたアクセス要求を受信し、
    前記第2のファイル・システムの前記第1のファイルに向けられた前記アクセス要求を受信した後に、前記第1のファイル・システムの前記第1のディレクトリに関する前記第1のパス・ロケーションにおいて前記第1のファイル・システム内に第1の外部リンク・オブジェクトを作成し、
    前記第2のファイル・システムの前記第1のファイルのメタデータを前記第1のファイル・システム内に前記第1のファイル・システムの前記第1の外部リンク・オブジェクトと一緒に前記第1のファイルのメタデータとして記憶するように適合され、
    前記外部リンク・オブジェクトは、前記第1のファイル・システムにおいて前記第2のファイル・システムの前記第1のファイルを表す、前記第2のファイル・システムの前記第1のファイルへのアクセスを可能にする前記第1のファイル・システムのファイル・システム・オブジェクトであり、前記第1の外部リンク・オブジェクトは前記第2のファイル・システム内の前記第1のファイルの固有オブジェクトIDおよび前記第2のファイル・システムの前記第1のディレクトリに関する前記第1のパス・ロケーションを少なくとも示すリンク・データを含むことを特徴とする請求項1から3のいずれか一項に記載の装置。

  5. 前記第1のファイル・システム管理ユニットは、
    前記アクセス要求が、前記第2のファイル・システムの前記第1のファイルを修正することを求める要求であるときに、前記第1の外部リンク・オブジェクトの前記リンク・データに基づき前記アクセス要求を前記第2のファイル・システム管理ユニットに送信して前記第2のファイル・システム管理ユニットによる前記受信されたアクセス要求に従って前記第2のファイル・システムの前記第1のファイルを修正し、
    前記アクセス要求が、前記第2のファイル・システムの前記第1のファイルの属性を読み出すことを求める要求であるときに、前記第1の外部リンク・オブジェクトのメタデータに基づき前記第2のファイル・システムの前記第1のファイルの要求された属性を返すように適合されることを特徴とする請求項4に記載の装置。

  6. 前記第1のファイル・システム管理ユニットは、
    前記第1のファイル・システム管理ユニットにおいて前記クライアント・コンピュータから受信されたクライアント要求と無関係に、前記第1のファイル・システム管理ユニットによって管理される仮想化管理情報に基づき、前記第1のファイル・システムの前記第1のディレクトリと前記第2のファイル・システムの前記第1のディレクトリとの間の関連付けに基づき、前記第1のファイル・システム管理ユニットによる前記第2のファイル・システムの自動仮想化を可能にするように適合され、前記仮想化管理情報は前記第2のファイル・システム内に存在する前記第1のディレクトリを少なくとも示すことを特徴とする請求項1から5のいずれか一項に記載の装置。

  7. 自動仮想化を実行するために、前記第1のファイル・システム管理ユニットは、
    前記第2のファイル・システム管理ユニットに、前記仮想化管理情報で示される前記第2のファイル・システムのターゲット・ディレクトリに向けられたディレクトリ情報要求を送信し、前記第2のファイル・システムの前記ターゲット・ディレクトリ内に存在する子オブジェクトを示す情報を要求し、
    前記第2のファイル・システム管理ユニットから、前記ディレクトリ情報要求に応答して前記第2のファイル・システムの前記ターゲット・ディレクトリに存在する子オブジェクトを示す情報を受信し、
    前記第2のファイル・システムの前記ターゲット・ディレクトリに存在する子オブジェクトを示す前記受信された情報に基づき前記仮想化管理情報を更新するように適合されることを特徴とする請求項6に記載の装置。

  8. 自動仮想化を実行するために、前記第1のファイル・システム管理ユニットは、
    前記仮想化管理情報で示されているような前記第2のファイル・システムの前記ターゲット・ディレクトリに存在する各子オブジェクトについて、前記第2のファイル・システムの前記第1のディレクトリに関する前記関連付けられている子オブジェクトの前記パス・ロケーションに対応する前記第1のファイル・システムの前記第1のディレクトリに関するパス・ロケーションにおいて関連付けられているファイル・システム・オブジェクトを前記第1のファイル・システム内に作成するように適合されることを特徴とする請求項7に記載の装置。

  9. 前記ディレクトリ情報要求を前記送信することは、前記第2のファイル・システムの複数のターゲット・ディレクトリに対して前記第1のファイル・システム管理ユニットによって自動的に繰り返され、
    前記仮想化管理情報で示されているような前記第2のファイル・システムの前記ターゲット・ディレクトリに存在する各子オブジェクトについて、前記第1のファイル・システム内の前記関連付けられているファイル・システム・オブジェクトを前記作成することは、前記複数のターゲット・ディレクトリの各々に対して前記第1のファイル・システム管理ユニットによって繰り返されることを特徴とする請求項8に記載の装置。

  10. 前記第2のファイル・システムの複数のターゲット・ディレクトリについて前記ディレクトリ情報要求を前記繰り返し送信すること、および前記複数のターゲット・ディレクトリの前記子ディレクトリの各々について前記第1のファイル・システム内に前記関連付けられているファイル・システム・オブジェクトを前記繰り返し作成することは、前記第1のファイル・システム管理ユニットによって並行して実行されることを特徴とする請求項9に記載の装置。

  11. 前記第2のファイル・システムの複数のターゲット・ディレクトリに対する前記ディレクトリ情報要求を前記繰り返し送信する単位時間当たりの実行速度は、前記第1のファイル・システム管理ユニットのバッファ・ユニットのストレージ占有率に基づき前記第1のファイル・システム管理ユニットによって制御されることを特徴とする請求項10に記載の装置。

  12. 前記第2のファイル・システムの複数のターゲット・ディレクトリに対する前記ディレクトリ情報要求を前記繰り返し送信する単位時間当たりの実行速度は、前記第1のファイル・システム管理ユニットと前記第2のファイル・システム管理ユニットとの間の通信チャネルの可用率の率に基づき前記第1のファイル・システム管理ユニットによって制御されることを特徴とする請求項10または11に記載の装置。

  13. 前記作成されたファイル・システム・オブジェクトは、前記関連付けられている子オブジェクトが前記第2のファイル・システムの第3のディレクトリであるときに前記第1のファイル・システムの第3のディレクトリであることを特徴とする請求項8から12のいずれか一項に記載の装置。

  14. 自動仮想化を実行するために、前記第1のファイル・システム管理ユニットは、
    前記第1のファイル・システムの前記作成された第3のディレクトリ内に自己参照リンクを作成し、
    前記第2のファイル・システム内の前記関連付けられている第3のディレクトリの子ディレクトリの数に基づき前記第1のファイル・システムの前記作成された第3のディレクトリに対してフェイク・リンク・カウントを計算し、
    前記第1のファイル・システムの前記作成された第3のディレクトリの前記メタデータ内に前記計算されたフェイク・リンク・カウントを記憶するようにさらに適合さることを特徴とする請求項13に記載の装置。

  15. 前記第1のファイル・システム管理ユニットは、
    前記第2のファイル・システムの前記第3のディレクトリの子ディレクトリに関連付けられている前記第1のファイル・システムの前記第3のディレクトリ内の子ディレクトリを自動的に作成するときに、前記第2のファイル・システム内の前記第3のディレクトリに関連付けられている前記第1のファイル・システムの前記第3のディレクトリの前記メタデータに記憶されている前記フェイク・リンク・カウントをデクリメントするように適合されることを特徴とする請求項14に記載の装置。

  16. 前記第1のファイル・システム管理ユニットは、
    前記クライアント・コンピュータのうちの1つから、前記第2のファイル・システムの前記第3のディレクトリのリンク・カウントを読み出すことを求める要求を受信し、
    前記第1のファイル・システムの前記第3のディレクトリの前記フェイク・リンク・カウントと前記第1のファイル・システムの前記第3のディレクトリの実リンク・カウントとを加算することによって前記第2のファイル・システムの前記第3のディレクトリの前記リンク・カウントを計算し、
    前記要求に応答して前記計算されたリンク・カウントを前記クライアント・コンピュータに送信するようにさらに適合されることを特徴とする請求項14または15に記載の装置。

  17. 前記作成されたファイル・システム・オブジェクトは、前記それぞれの子オブジェクトが前記第2のファイル・システムの第2のファイルであるときに第2の外部リンク・オブジェクトであり、前記第2の外部リンク・オブジェクトは前記第1のファイル・システムにおいて前記第2のファイル・システムの前記第2のファイルを表し、前記第2のファイル・システムの前記第2のファイルへのアクセスを可能にし、前記第2の外部リンク・オブジェクトは前記第2のファイル・システム内の前記第2のファイルの固有オブジェクトIDおよび前記第2のファイル・システムの前記第1のディレクトリに関する前記第2のファイルのパス・ロケーションを少なくとも示すリンク・データを含むことを特徴とする請求項8から16のいずれか一項に記載の装置。

  18. 前記第1のファイル・システム管理ユニットは、
    前記仮想化管理情報を複数のデータ・ブロックに分割し、
    各データ・ブロックについて、前記仮想化管理情報の前記データ・ブロックの各々のバックアップ・コピーを繰り返し生成するようにさらに適合されることを特徴とする請求項6から17のいずれか一項に記載の装置。

  19. 前記複数のデータ・ブロックの第1のデータ・ブロックは、前記第2のファイル・システムの第4のディレクトリに関連付けられている管理データを含み、
    1つまたは複数の第2のデータ・ブロックは、前記第2のファイル・システムの前記第4のディレクトリの子ディレクトリに関連付けられている管理データを含み、
    前記第1のファイル・システム管理ユニットは、前記第1のデータ・ブロックのバックアップ・コピーを生成する前に前記1つまたは複数の第2のデータ・ブロックの各々のバックアップ・コピーを生成するようにさらに適合されることを特徴とする請求項18に記載の装置。

  20. 複数のクライアント・コンピュータと第2のファイル・システムを管理し、前記第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて前記第2のファイル・システムへの間接的アクセスを可能にする仮想化されたファイル・システムを実現するための方法であって、
    前記複数のクライアント・コンピュータと前記第2のファイル・システム管理ユニットとの間で第1のファイル・システム管理ユニットを相互接続することと、
    前記第1のファイル・システム管理ユニットによって管理される第1のファイル・システム内に第1のディレクトリを作成することと、
    前記第2のファイル・システムの第1のディレクトリを前記第1のファイル・システムの前記第1のディレクトリに関連付けることと、
    前記第1のファイル・システム管理ユニットにおいて前記クライアント・コンピュータから受信されたクライアント要求に基づき、また前記第1のファイル・システムの前記第1のディレクトリと前記第2のファイル・システムの前記第1のディレクトリとの間の前記関連付けに基づき前記第1のファイル・システム管理ユニットによる前記第2のファイル・システムのオンデマンド仮想化を可能にすることと、
    前記第1のファイル・システムを通じて前記第2のファイル・システムへの間接的クライアント・アクセスを可能にすることとを含む方法。

  21. 複数のクライアント・コンピュータと、第2のファイル・システムを管理し、前記第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニットと、前記複数のクライアント・コンピュータと前記第2のファイル・システム管理ユニットとの間で相互接続されている第1のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて前記第2のファイル・システムへの間接的アクセスを可能にする仮想化されたファイル・システムを実現するためのデータ・ストレージ・システムであって、前記第1のファイル・システム管理ユニットは
    前記第1のファイル・システム管理ユニットによって管理される第1のファイル・システム内に第1のディレクトリを作成し、
    前記第2のファイル・システムの第1のディレクトリを前記第1のファイル・システムの前記第1のディレクトリに関連付け、
    前記第1のファイル・システム管理ユニットにおいて前記クライアント・コンピュータから受信されたクライアント要求に基づき、また前記第1のファイル・システムの前記第1のディレクトリと前記第2のファイル・システムの前記第1のディレクトリとの間の前記関連付けに基づき前記第1のファイル・システム管理ユニットによる前記第2のファイル・システムのオンデマンド仮想化を可能にし、
    前記第1のファイル・システムを通じて前記第2のファイル・システムへの間接的クライアント・アクセスを可能にするように適合されるデータ・ストレージ・システム。

  22. 請求項20に記載の方法のステップを実行するようにさらに適合されている第1のファイル・システム管理ユニットを備える請求項21に記載のデータ・ストレージ・システムにおいて使用するためのファイル・システム・サーバ。

  23. コンピュータ・プログラム・コード手段を備えるコンピュータ・プログラム製品であって、前記コンピュータ・プログラム・コード手段は、複数のクライアント・コンピュータと第2のファイル・システムを管理し、前記第2のファイル・システムへのクライアント・アクセスを可能にするための第2のファイル・システム管理ユニットとを備えるデータ・ストレージ・システム内のファイル・システム管理ユニットの処理ユニットに、前記複数のクライアント・コンピュータと前記第2のファイル・システム管理ユニットとの間で第1のファイル・システム管理ユニットを相互接続するときに、
    前記第1のファイル・システム管理ユニットによって管理される第1のファイル・システム内に第1のディレクトリを作成するステップと、
    前記第2のファイル・システムの第1のディレクトリを前記第1のファイル・システムの前記第1のディレクトリに関連付けるステップと、
    前記第1のファイル・システム管理ユニットにおいて前記クライアント・コンピュータから受信されたクライアント要求に基づき、また前記第1のファイル・システムの前記第1のディレクトリと前記第2のファイル・システムの前記第1のディレクトリとの間の前記関連付けに基づき前記第1のファイル・システム管理ユニットによる前記第2のファイル・システムのオンデマンド仮想化を可能にすることと、
    前記第1のファイル・システムを通じて前記第2のファイル・システムへの間接的クライアント・アクセスを可能にするステップとを実行させるように構成されるコンピュータ・プログラム製品。

 

 

Patent trol of patentswamp
類似の特許
本発明は、こどもモード処理方法、装、プログラム、及び記録媒体に関し、インターネット技術分野に属する。前記方法は、第1端末が送信した目標アプリケーションの利用許可機能リスト或は利用不可機能リストを受信するステップと、前記利用許可機能リスト或は前記利用不可機能リストに基づいて、前記目標アプリケーションの利用許可機能を特定するステップと、前記目標アプリケーションのこどもモードにおいて、前記利用許可機能を表示するステップとを含む。本発明を採用すると、こどもモードにおいてアプリケーションの正常な利用には影響を及ぼさない。
【選択図】図1
コードの仮想化およびリモートプロセスコールコード生成のためのシステムおよび方法。ユーザデバイスにソフトウェア開発キットをインストールするステップと、リモートサーバ上のリモートプロセスを選択するステップであって、リモートプロセスは、少なくとも1つのリモートサービスと相関される、ステップとを含む方法。また、リモートプロセスに対して事前定義されたフィールドからパラメータを解析し、リモートサーバ上で少なくとも1つの仮想コードプロバイダによってリモートプロセスを呼び出すためのコードスニペットを生成する方法。挿入されたコードスニペットは、インストールされたsdkを用いてリモートプロセスを呼び出すように、ローカルユーザデバイスのローカルコードベースにコードスニペットを挿入する方法。
本明細書に記載の技法およびシステムは、実行するためのプロセスを認証するための、およびプロセスとユーザーのシステムリソースに対するパーミッション制限を指定して実施するための、モデルの様々な実装形態を提示する。いくつかの実装形態では、アプリケーション、プログラム、またはプロセスのバイナリファイルは、その後オペレーティングシステムがデジタル署名を認証できるように、鍵で暗号化されたデジタル署名を含むように拡張され得る。バイナリファイルが認証されると、オペレーティングシステムは、プロセスを作成して、プロセスのために許可されるパーミッションの種類を示すメタデータで、プロセスをタグ付けすることができる。メタデータは、リソースパーミッションを指定するための特定のアクセスレベルに対応し得る。
人間と機械を区別する方法及びシステムが開示される。方法は、指定ネットワークサービスへのアクセス要求が受信されると、要求を受信した時間と要求を送信したアクセス所望体の情報とを含む要求に関する情報を記録し、記録に基づいてアクセス所望体により送信された要求の統計値をリアルタイムで計算し、アクセス所望体により送信された要求の統計値が所定の正常範囲外になると、アクセス所望体は異常であると判定することを含む。開示された人間と機械を区別するシステムは、記録モジュール、計算モジュール、及び判定モジュールを備える。開示された仕組みを使用する人間と機械の識別は、突破されにくく、かつ人間−機械識別の正確度を向上可能である。
データセンタにおいて計算インスタンスを事前準備するためのシステム、方法およびコンピュータ可読媒体が記述される。データセンタに関連するサービスプロバイダは、計算インスタンスについての要求を予測し、データセンタ内のコンピューティングリソースを事前設定することによって、計算インスタンスを事前起動することができる。そのようなものとして、ユーザが計算インスタンスをリクエストすると、サービスプロバイダは、事前準備された計算インスタンスをユーザに割り当てることによって、リクエストを満たすことができる。
ライトインストーラ // JP2016527603
クライアントサイド・アプリケーションのインストールプロセスを改善するために、ライトインストーラが利用されうる。ライトインストーラは、必要となるデータ及び権限付与をユーザに求め、コンテンツ管理システムと通信し、追加のリソースをダウンロードし、かつ、クライアントサイド・アプリケーションをインストールするのに必要な情報等の、インストールプロセスを開始するのに必要な情報のみを含むインストーラでありうる。ライトインストーラは、インストールプロセスの初期に、全ての必要なユーザ権限付与を取得することによって、ユーザ・インタラクション時間を最小限にでき、その結果、ライトインストーラが、ユーザからの更なる権限付与なしでクライアントサイド・アプリケーションの全てのコンポーネントをインストールすることが可能になる。更に、ライトインストーラは、報告、インストールプロセスの間におけるデータの事前設定、インストールプロセスのカスタマイズ、クライアントサイド・アプリケーションの事前設定等に使用されうる、クライアントデバイスと関連付けられたユーザアカウントを識別するデータをタグ付けされうる。
方法は、モバイルデバイスにおいて、モバイルデバイスからリモートデバイスに転送される第1のメディアアイテムの選択を受信することを含む。方法は、モバイルデバイスによって、第1のメディアアイテムとの第2のメディアアイテムの類似性に基づいて、リモートデバイスに転送するように第2のメディアアイテムを選択することも含む。方法は、モバイルデバイスによって、リモートデバイスに転送するようにパッケージ化されたモーメントのデータを生成することをさらに含み、ここでパッケージ化されたモーメントのデータは、第1のメディアアイテムと第2のメディアアイテムとを含む複数のメディアアイテムに関連付けられたメディアデータを含む。
1つまたは複数のシステム・レベル・アプリケーションを実行して、第1および第2の種類のシステムコンポーネントを管理するよう構成される少なくとも1つのサーバを含むシステムを提供する。第1および第2の種類のシステムコンポーネントは、第1および第2の種類のインターフェース規格にそれぞれ応じる。本システムはまた、第1の種類のインターフェース規格により第1の種類のシステムコンポーネントと関連づけられたデータを表示するために構成されるグラフィカル・ユーザ・インターフェース(GUI)を含む。アプリケーションは、第2の種類のシステムコンポーネントを表し、第1の種類のインターフェース規格によりGUIを介して表示される。
【選択図】図1
ユーティリティアプリケーションストアは、ユーティリティアプリケーションストアから使用可能な複数のアプリケーションを表示するインターフェースを提示するように構成可能である。ユーティリティアプリケーションストアのインターフェースにアクセスすることにより、ユーティリティサプライヤは、単一の要求で、ユーティリティの通信ネットワークにおける複数のユーティリティメータまたは他のスマートセンサ上で1または複数のアプリケーションのインストールまたはアクティブ化を開始することができる。ユーティリティアプリケーションストアは、ユーティリティメータもしくは他のスマートセンサ、コンシューマコンピューティングデバイス、および/またはユーティリティサプライヤユーティリティバックオフィスコンピューティングデバイスに対するアプリケーションの利用可能性の通知を提供するように構成可能である。ユーティリティアプリケーションストアは、ユーティリティメータによる実行のために構成された第1の部分と、別のコンピューティングデバイス(たとえば、パーソナルコンピュータ、モバイルデバイス、ユーティリティサプライヤバックオフィスサーバ、またはクラウドサービスなど)による実行のために構成された第2の部分とを含むことができる。
ネットワーク要素(ne)が、会議のためのダイジェストログを格納するように構成されたメモリと、neに関連した複数のうちの第1の参加者からの第1のメッセージを受信するように構成された受信機であって、この第1のメッセージは第1の参加者の署名プロファイルを含む受信機と、受信機とメモリに連結され、第1のメッセージに応じてダイジェストログの第1の更新を実行することによって会議の状態を追跡するように構成されたプロセッサと、プロセッサに連結され、会議にサービスを提供する複数のうちの第1のサービスプロキシに第2のメッセージを送信するように構成された送信機であって、この第2のメッセージは更新されたダイジェストログを示す送信機とを備えている。
To top