(57)【要約】  本発明は、複数のクライアント・コンピュータ１００と、第１のファイル・システムを管理し、複数のクライアント・コンピュータ１００に接続されるようにするための第１のファイル・システム管理ユニット３１０と、第２のファイル・システムを管理し、第１のファイル・システム管理ユニット３１０に接続されるようにするための第２のファイル・システム管理ユニット４１０とを備えるデータ・ストレージ・システムにおいて第１のファイル・システムのデータ・マイグレーションを行うための、第２のファイル・システムは複数のデータ・ファイルを備え、第１のファイル・システムは複数の外部リンク・オブジェクトを備え、第１のファイル・システムの各外部リンク・オブジェクトは第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように第２のファイル・システムのそれぞれのデータ・ファイルに関連付けられる、方法および装置に関係する。
2016527618.tif 000002
【特許請求の範囲】
【請求項１】
データ・ストレージ・システムにおいて第１のファイル・システムのデータ・マイグレーションを行うための装置であって、前記データ・ストレージ・システムは複数のクライアント・コンピュータと、前記第１のファイル・システムを管理し、前記複数のクライアント・コンピュータに接続されるようにするための第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、前記第１のファイル・システム管理ユニットに接続されるようにするための第２のファイル・システム管理ユニットとを備え、
前記第２のファイル・システムは複数のデータ・ファイルを備え、前記第１のファイル・システムは複数の外部リンク・オブジェクトを備え、前記第１のファイル・システムの各外部リンク・オブジェクトは前記第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように前記第２のファイル・システムの前記それぞれのデータ・ファイルに関連付けられ、
前記第２のファイル・システムの第１のファイルのファイルコンテンツのデータをマイグレーション・データ・ブロックの第１のグループに分割し、
前記第２のファイル・システムの第１のファイルのファイルコンテンツのデータを前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの前記第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションするように適合された前記第１のファイル・システム管理ユニットを備え、
マイグレーション・データ・ブロックの前記第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、前記それぞれのマイグレーション・データ・ブロックが前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーションされている間に一時的に差し控えられ、前記それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの前記第１のグループの前記それぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの前記第１のグループの前記それぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行される装置。
【請求項２】
マイグレーション・データ・ブロックの前記第１のグループのデータコンテンツへのクライアント・アクセスは、前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーションされている、すべてのマイグレーション・データ・ブロックに対して、また前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットへのマイグレーションをまだ開始していない、すべてのマイグレーション・データ・ブロックに対して可能にされることを特徴とする請求項１に記載の装置。
【請求項３】
前記第１のファイル・システム管理ユニットは、マイグレーション・データ・ブロックの前記第１のグループのデータ・マイグレーション・データ・ブロックのブロック・サイズを、データ・ブロックを受信するために前記第１のファイル・システム管理ユニットによってサポートされているような最大ブロック・サイズおよびデータ・ブロックを送信するために前記第２のファイル・システム管理ユニットによってサポートされているような前記最大ブロック・サイズのうちのより小さい値として決定するように適合されることを特徴とする請求項１または２に記載の装置。
【請求項４】
マイグレーション・データ・ブロックの前記第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから前記第１のファイル・システム管理ユニットにおいて受信されたときに、前記第１のファイル・システム管理ユニットは、
少なくとも１つのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定するようにさらに適合され、
少なくとも１つのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされている場合、前記書き込みアクセス要求は、前記第１のファイル・システム管理ユニットによってローカルで実行され、前記ターゲット・マイグレーション・データ・ブロックのどれもが、まだマイグレーションを開始していない場合、前記書き込みアクセス要求は、前記第２のファイル・システム管理ユニットによって前記第２のファイル・システム内で実行されるように前記第２のファイル・システム管理ユニットにパススルーされることを特徴とする請求項１から３のいずれか一項に記載の装置。
【請求項５】
少なくとも１つのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされている場合、前記第１のファイル・システム管理ユニットは、前記書き込みアクセス要求を、前記第２のファイル・システム管理ユニットによって前記第２のファイル・システム内で実行されるように前記第２のファイル・システム管理ユニットにさらにパススルーするようにさらに適合されることを特徴とする請求項４に記載の装置。
【請求項６】
マイグレーション・データ・ブロックの前記第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから前記第１のファイル・システム管理ユニットにおいて受信されたときに、前記第１のファイル・システム管理ユニットは、
すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定するようにさらに適合され、
前記ターゲット・マイグレーション・データ・ブロックのどれもが、まだマイグレーションされていない場合、前記書き込みアクセス要求は、前記第１のファイル・システム管理ユニットによってローカルで実行され、
マイグレーション・データ・ブロックの前記第１のグループの前記１つまたは複数のターゲット・マイグレーション・データ・ブロックを後でマイグレーションするときに、前記第１のファイル・システム管理ユニットは、前記書き込みアクセス要求のデータ書き込みブロックに対応するデータ部分をマイグレーションするのを控えるように適合されることを特徴とする請求項１から３のいずれか一項に記載の装置。
【請求項７】
マイグレーション・データ・ブロックの前記第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから前記第１のファイル・システム管理ユニットにおいて受信されたときに、前記第１のファイル・システム管理ユニットは、
すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定するようにさらに適合され、
前記ターゲット・マイグレーション・データ・ブロックのどれもが、まだマイグレーションされていない場合、前記書き込みアクセス要求は、前記第１のファイル・システム管理ユニットによってローカルで実行され、
前記第１のファイル・システム管理ユニットは、前記書き込みアクセス要求の前記データ書き込みブロックに割り当てられている現在のチェックポイント数よりも小さい、チェックポイント数を、すでにマイグレーションされているデータ部分の終了位置と前記書き込みアクセス要求のデータ書き込みブロックの開始位置との間のデータ・ホールに割り当てるようにさらに適合されることを特徴とする請求項１から３のいずれか一項に記載の装置。
【請求項８】
マイグレーション・データ・ブロックの前記第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた読み出しアクセス要求が、クライアント・コンピュータから前記第１のファイル・システム管理ユニットにおいて受信されたときに、前記第１のファイル・システム管理ユニットは、
すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定するようにさらに適合され、
すべてのターゲット・マイグレーション・データ・ブロックが、すでにマイグレーションされている場合、前記読み出しアクセス要求は、前記第１のファイル・システム管理ユニットによってローカルで実行され、前記ターゲット・マイグレーション・データ・ブロックの少なくとも１つが、まだマイグレーションを開始していない場合、前記読み出しアクセス要求は、前記第２のファイル・システム管理ユニットによって前記第２のファイル・システム内で実行されるように前記第２のファイル・システム管理ユニットにパススルーされ、前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにおいて受信された対応する読み出し応答は、前記第１のファイル・システム管理ユニットによって前記要求側クライアント・コンピュータにパススルーされることを特徴とする請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記第１のファイル・システム管理ユニットは、
前記第１のファイル・システム管理ユニットにおいて、前記第２のファイル・システムの前記第１のファイルに関連付けられている前記第１のファイル・システム内の前記第１のファイル・システム管理ユニットによって記憶されているファイルコンテンツデータのオブジェクト・ストア長を決定し、
前記第２のファイル・システム管理ユニットから受信されたデータに基づき前記第１のファイル・システム管理ユニットにおいて、前記第２のファイル・システムの前記第１のファイルの長さを決定し、
前記オブジェクト・ストア長が前記第１のファイルの前記長さに等しいと決定されたときに前記第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされていると決定するようにさらに適合されることを特徴とする請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記第１のファイル・システム管理ユニットは、
前記第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされたと決定されたときに前記第２のファイル・システムの前記第１のファイルに関連付けられている前記第１のファイル・システムの前記外部リンク・オブジェクトを削除し、および／または
前記第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされたと決定されたときに、前記第２のファイル・システム管理ユニットに、前記第２のファイル・システムの前記第１のファイルの削除を求める要求を送信するようにさらに適合されることを特徴とする請求項９に記載の装置。
【請求項１１】
前記第１のファイル・システム管理ユニットは、
クライアント・コンピュータから、ファイル作成要求で示されているパス・ロケーションにおいて前記第２のファイル・システム内に第２のファイルを作成することを求める前記ファイル作成要求を受信し、
前記ファイル作成要求で示されているパス・ロケーションに基づき前記第１のファイル・システム内に前記第２のファイルを作成するようにさらに適合されることを特徴とする請求項１から１０のいずれか一項に記載の装置。
【請求項１２】
前記第１のファイル・システム管理ユニットは、
マイグレーション・データ・ブロックの前記第１のグループの第１のマイグレーション・データ・ブロックについて、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定し、
前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有していないと決定されたときに前記第１のマイグレーション・データ・ブロックを前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーションすることを控え、および／または
前記第１のマイグレーション・データ・ブロックに関連付けられている記憶領域がゼロのみを含むものとすることを示す前記第１のファイルのメタデータを更新するようにさらに適合されることを特徴とする請求項１から１１のいずれか一項に記載の装置。
【請求項１３】
前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定することは、前記第２のファイル・システム管理ユニットから受信される前記第１のファイルに向けられた読み出し応答に基づき前記第２のファイル・システム内の前記第１のファイルの前記ファイルコンテンツの中の第１の非ゼロ・ビットの位置を示すデータに基づき前記第１のファイル・システム管理ユニットによって実行されることを特徴とする請求項１２に記載の装置。
【請求項１４】
前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定することは、前記第１のマイグレーション・データ・ブロックのバイト毎の分析に基づき前記第１のファイル・システム管理ユニットによって実行されることを特徴とする請求項１２に記載の装置。
【請求項１５】
前記第１のファイル・システム管理ユニットは、
前記第２のファイル・システム内の前記第１のファイルに対して割り振られた記憶領域の使用量パーセンテージと前記第２のファイル・システム内の前記第１のファイルに対して割り振られた前記記憶領域を示す前記第１のファイルの長さとの比が所定の閾値を下回る場合に、マイグレーション・データ・ブロックの前記第１のグループの第２のマイグレーション・データ・ブロックについて、前記マイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定し、
前記第２のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有していないと決定された場合に前記第２のマイグレーション・データ・ブロックを前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーションすることを控え、および／または
前記第１のマイグレーション・データ・ブロックに関連付けられている記憶領域がゼロのみを含むものとすることを示す前記第１のファイルのメタデータを更新するようにさらに適合されることを特徴とする請求項１から１１のいずれか一項に記載の装置。
【請求項１６】
データ・ストレージ・システムにおいて第１のファイル・システムのデータ・マイグレーションを行うための方法であって、前記データ・ストレージ・システムは複数のクライアント・コンピュータと、前記第１のファイル・システムを管理し、前記複数のクライアント・コンピュータに接続されるようにするための第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、前記第１のファイル・システム管理ユニットに接続されるようにするための第２のファイル・システム管理ユニットとを備え、
前記第２のファイル・システムは複数のデータ・ファイルを備え、前記第１のファイル・システムは複数の外部リンク・オブジェクトを備え、前記第１のファイル・システムの各外部リンク・オブジェクトは前記第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように前記第２のファイル・システムの前記それぞれのデータ・ファイルに関連付けられ、
前記方法は
前記第２のファイル・システムの第１のファイルのファイルコンテンツのデータをマイグレーション・データ・ブロックの第１のグループに分割することと、
前記第２のファイル・システムの第１のファイルのファイルコンテンツのデータを前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの前記第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションすることとを含み、
マイグレーション・データ・ブロックの前記第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、前記それぞれのマイグレーション・データ・ブロックが前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーションされている間に一時的に差し控えられ、前記それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの前記第１のグループの前記それぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの前記第１のグループの前記それぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行される方法。
【請求項１７】
第１のファイル・システムのデータ・マイグレーションを行うためのデータ・ストレージ・システムであって、前記データ・ストレージ・システムは複数のクライアント・コンピュータと、前記第１のファイル・システムを管理し、前記複数のクライアント・コンピュータに接続されるようにするための第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、前記第１のファイル・システム管理ユニットに接続されるようにするための第２のファイル・システム管理ユニットとを備え、
前記第２のファイル・システムは複数のデータ・ファイルを備え、前記第１のファイル・システムは複数の外部リンク・オブジェクトを備え、前記第１のファイル・システムの各外部リンク・オブジェクトは前記第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように前記第２のファイル・システムの前記それぞれのデータ・ファイルに関連付けられ、
前記第１のファイル・システム管理ユニットは
前記第２のファイル・システムの第１のファイルのファイルコンテンツのデータをマイグレーション・データ・ブロックの第１のグループに分割し、
前記第２のファイル・システムの第１のファイルのファイルコンテンツのデータを前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの前記第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションするように適合され、
マイグレーション・データ・ブロックの前記第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、前記それぞれのマイグレーション・データ・ブロックが前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーションされている間に一時的に差し控えられ、前記それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの前記第１のグループの前記それぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの前記第１のグループの前記それぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行されるデータ・ストレージ・システム。
【請求項１８】
請求項１６に記載の方法のステップを実行するようにさらに適合されている第１のファイル・システム管理ユニットを備える請求項１７に記載のデータ・ストレージ・システムにおいて使用するためのファイル・システム・サーバ。
【請求項１９】
コンピュータ・プログラム・コード手段を備えるコンピュータ・プログラム製品であって、前記コンピュータ・プログラム・コード手段は、複数のクライアント・コンピュータと、第１のファイル・システムを管理し、前記複数のクライアント・コンピュータに接続されるようにするための第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、前記第１のファイル・システム管理ユニットに接続されるようにするための第２のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおけるファイル・システム管理ユニットの処理ユニットであって、前記第２のファイル・システムは複数のデータ・ファイルを備え、前記第１のファイル・システムは複数の外部リンク・オブジェクトを備え、前記第１のファイル・システムの各外部リンク・オブジェクトは前記第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように前記第２のファイル・システムの前記それぞれのデータ・ファイルに関連付けられる、前記処理ユニットに、
前記第２のファイル・システムの第１のファイルのファイルコンテンツのデータをマイグレーション・データ・ブロックの第１のグループに分割するステップと、
前記第２のファイル・システムの第１のファイルのファイルコンテンツのデータを前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの前記第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションするステップとを実行させるように構成され、
マイグレーション・データ・ブロックの前記第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、前記それぞれのマイグレーション・データ・ブロックが前記第２のファイル・システム管理ユニットから前記第１のファイル・システム管理ユニットにマイグレーションされている間に一時的に差し控えられ、前記それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの前記第１のグループの前記それぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの前記第１のグループの前記それぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行されるコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化されたファイル・システムのデータ・マイグレーションのための方法、ならびに装置およびデータ・ストレージ・システム（data storage system）、ならびにそのようなデータ・ストレージ・システムにおいて使用するためのファイル・サーバに関するものである。
【背景技術】
【０００２】
従来技術には、例えば以下の図１Ａに関連して説明されているような知られているデータ・ストレージ・システムがあり、そこでは、複数のクライアント・コンピュータがクライアント・コンピュータによるＩ／Ｏアクセスのため１つまたは複数のファイル・システムを管理する１つまたは複数のファイル・サーバ・システムと通信ネットワークを介して接続されている。いくつかの時点において、例えば、より新しいファイル・サーバは、より多くのファイル・システムまたはより大きいファイル・システムを管理し（より大きいデータ記憶空間および／またはより多くのファイル・システム・オブジェクトを有効化することを含む）、より効率的な入出力（Ｉ／Ｏ）の実行を有効化し、より大きいストレージ・ユニットまたはより効率的なストレージ・デバイス技術を収容するストレージ・ユニットの使用を可能にするように適合され得るので、データ・ストレージ・システム全体の性能を改善するために１つまたは複数の（レガシー）ファイル・サーバを新しいファイル・サーバと交換することが望ましい場合がある。
【０００３】
それでも、ファイル・システム構造（既存のファイル・ツリー構造など）およびそのユーザ・データ（ファイル・コンテンツ）を含むすでに存在しているファイル・システム（複数可）を保持することが望ましい場合があるが、原理上、ユーザが中断なしで、または少なくとも、できる限り短い単一の中断のみで既存のファイル・システム（複数可）にアクセスすることを可能にすることが望ましい。ハードウェア・ベースのファイル・システムに対する装置および方法の一例は、米国特許第７，４５７，８２２Ｂ１号において説明されており、これは参照により本明細書に組み込まれている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
以下でさらに詳しく説明されているように、本発明の実施形態は、データ・ストレージ・システムおよびその部品に関係するものとしてよく、そこでは、（新しい）第１のファイル・システム管理ユニットは、複数のクライアント・コンピュータと、クライアント・コンピュータによってアクセス可能な１つまたは複数のファイル・システムを管理する（レガシー）第２のファイル・システム管理ユニットとの間で相互接続される。
【課題を解決するための手段】
【０００５】
（新しい）第１のファイル・システム管理ユニットを相互接続した後に、（新しい）第１のファイル・システム管理ユニットを通じて、クライアント・コンピュータによる（レガシー）第２のファイル・システム管理ユニットの１つまたは複数のファイル・システムへのＩ／Ｏアクセスが達成され得る。仮想化と称される第１のフェーズにおいて、（レガシー）第２のファイル・システム管理ユニットの１つまたは複数のファイル・システムは、（新しい）第１のファイル・システム管理ユニットの１つまたは複数の仮想化されたファイル・システムによって表されるものとしてよく、仮想化されたファイル・システムは仮想化フェーズにおいて徐々に構築される。マイグレーションと称される、第２のフェーズ（仮想化フェーズとオーバーラップし得る）では、（レガシー）第２のファイル・システム管理ユニットの１つまたは複数のファイル・システムのユーザ・データは、（新しい）第１のファイル・システム管理ユニットにマイグレーションされ得る。
【０００６】
本発明によれば、目的は、第２のファイル・システムのファイル・システム・オブジェクトへの効率的でシームレスなクライアント・アクセスを可能にしながら、第２のファイル・システムからの仮想化されたファイル・システム内のユーザ・データの効率的なデータ・マイグレーションを実行するための方法、および装置、データ・ストレージ・システムおよびファイル・サーバを実現することである。
【０００７】
いくつかの実施形態によれば、複数のクライアント・コンピュータと、第１のファイル・システムを管理し、複数のクライアント・コンピュータに接続されるようにするための（新しい）第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、第１のファイル・システム管理ユニットに接続されるようにするための（レガシーの）第２のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて第１のファイル・システムのデータ・マイグレーションを行うための装置が実現されるものとしてよく、第２のファイル・システムは複数のデータ・ファイルを備え、第１のファイル・システム（仮想化されたファイル・システム）は複数の外部リンク・オブジェクトを（一種の仮想ファイルとして）備え、第１のファイル・システムの各外部リンク・オブジェクトは第２のファイル・システムのそれぞれのデータ・ファイルに関連付けられ、これにより、第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にし、特に、第１のファイル・システムのそれぞれの外部リンク・オブジェクトを通じて第２のファイル・システムのそれぞれのデータ・ファイルへの間接的クライアント・アクセスを可能にする。
【０００８】
したがって、第２のファイル・システム管理ユニットによって管理される第２のファイル・システムのデータ・ファイルのユーザ・データは、実際のユーザ・データがマイグレーションされる前であっても、（仮想化された）第１のファイル・システム内のそれぞれの外部リンク・オブジェクトを通じて（一種の仮想ファイルとして）クライアント・コンピュータによって間接的にアクセスされ得る。
【０００９】
いくつかの実施形態では、装置は、第２のファイル・システムの第１のファイルのファイルコンテンツデータをマイグレーション・データ・ブロックの第１のグループに分割し、および／または第２のファイル・システムの第１のファイルのファイルコンテンツデータを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションするように適合された第１のファイル・システム管理ユニットを備え得る。これは、第２のファイル・システムのファイルのユーザ・データがデータのブロックで第１のファイル・システムに連続的にマイグレーションできるという利点を有する。
【００１０】
いくつかの実施形態では、マイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、それぞれのマイグレーション・データ・ブロックが第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている間にブロックされ（キューに入れられる、一時的に差し控えられる）得るが、それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行される。
【００１１】
マイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスがブロックされた（キューに入れられた）と説明されたときに、このことは、クライアント・アクセスは、「ブロックされる」という言い回しがプロセス／スレッド・スケジューリングの意味で使用されているという点において再び可能にされるまでキューに入れられることを意味する、すなわち、クライアント・アクセスは、一時的に差し控えられるという意味でキューに入れられる。クライアント側に唯一目立つ効果は、ある程度の待ち時間が加わる可能性があることであり得るが、クライアント・アクセスが再び可能になるとすぐに、キューに入れられているアクセスは好ましくは処理され、Ｉ／Ｏエラー・メッセージは発行されない。すなわち、ブロックされているデータ・ブロックへのクライアント・アクセス（Ｉ／Ｏアクセス）は、そのマイグレーションが完了するまでキューに入れられており、したがって、クライアント側が気付き得る唯一の効果は、ある程度の待ち時間が加わることである。
【００１２】
好ましい態様において、マイグレーション・データ・ブロックの第１のグループのデータコンテンツへのクライアント・アクセスは、第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている、すべてのマイグレーション・データ・ブロックに対して、また第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットへのマイグレーションをまだ開始していない、すべてのマイグレーション・データ・ブロックに対して可能にされるものとしてよい。
【００１３】
これは、データの特定のブロックがマイグレーションされている間であっても、同じファイルのすべてのブロックが、クライアント・コンピュータによってシームレスにアクセスされ得るという利点を有する。それに加えて、第２のデータ・システムの他のすべてのファイルへのユーザ・アクセスは、特定のファイルの１つのブロックのマイグレーションにおいて可能にされたままであってよい。すなわち、ファイルのマイグレーションするブロックへのアクセスは、そのファイルの１つのマイグレーションするブロックのマイグレーションの際のいくつかの期間のみについてブロックされ（キューに入れられ）得るが、同じファイルの他のブロックのマイグレーションの時間を含む、他のすべての時間において可能にされたままである。
【００１４】
代替的実施形態では、第１のグループそれぞれのマイグレーション・データ・ブロックが第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている間、第１のファイルのデータコンテンツへのクライアント・アクセスは、ブロックされ（キューに入れられ、一時的に差し控えられ）得る。これは、特定のファイルのデータの特定のブロックがマイグレーションされている間であっても、第２のデータ・システムの少なくとも他のすべてのファイルが、クライアント・コンピュータによってシームレスにアクセスされ得るという利点を有する。すなわち、特定のファイルへのアクセスは、特定のファイルの１つまたは複数のブロックのマイグレーションの際のいくつかの期間のみについてブロックされ（キューに入れられ、一時的に差し控えられ）得るが、他のすべての時間において可能にされたままである。
【００１５】
いくつかの実施形態では、第１のファイル・システム管理ユニットは、マイグレーション・データ・ブロックの第１のグループのデータ・マイグレーション・データ・ブロックのブロック・サイズを、データ・ブロックを受信するために第１のファイル・システム管理ユニットによってサポートされているような最大ブロック・サイズおよびデータ・ブロックを送信するために第２のファイル・システム管理ユニットによってサポートされているような最大ブロック・サイズのうちのより小さい値として決定するように適合され得る。これは、ブロック・サイズは、可能な限り少ないマイグレーション・ステップでファイルコンテンツを効率的にマイグレーションするために可能な限り大きく決定されるが、それぞれのデータ・ブロックは、ブロック・サイズがデータ・ブロックを受信するために第１のファイル・システム管理ユニットによってサポートされているような最大ブロック・サイズおよびデータ・ブロックを送信するために第２のファイル・システム管理ユニットによってサポートされているような最大ブロック・サイズの両方よりも小さいか、または等しいので、単一の読み出し操作によってそのままマイグレーションされ得るという利点を有する。
【００１６】
いくつかの実施形態では、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて受信されたときに、第１のファイル・システム管理ユニットは、少なくとも１つのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定するようにさらに適合されるものとしてよく、少なくとも１つのターゲット・マイグレーション・データ・ブロックが、すでにマイグレーションされている場合、書き込みアクセス要求は、第１のファイル・システム管理ユニットによってローカルで実行され、ターゲット・マイグレーション・データ・ブロックのどれもが、まだマイグレーションを開始していない場合、書き込みアクセス要求は、第２のファイル・システム管理ユニットによって第２のファイル・システム内で実行されるように第２のファイル・システム管理ユニットにパススルーされ得る。
【００１７】
いくつかの実施形態では、少なくとも１つのターゲット・マイグレーション・データ・ブロックが、すでにマイグレーションされている場合、第１のファイル・システム管理ユニットは、第２のファイル・システム管理ユニットによって第２ファイル・システムにおいて実行され、第２のファイル・システムのユーザ・データを第１のファイル・システムのユーザ・データと同期させることができるように第２のファイル・システム管理ユニットに書き込みアクセス要求をパススルーするようにさらに適合され得る。
【００１８】
いくつかの実施形態では、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて受信されたときに、第１のファイル・システム管理ユニットは、すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定するようにさらに適合されるものとしてよく、ターゲット・マイグレーション・データ・ブロックのどれもが、まだマイグレーションされていない場合、書き込みアクセス要求は、第１のファイル・システム管理ユニットによってローカルで実行され、および／またはマイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックを後でマイグレーションするときに、第１のファイル・システム管理ユニットは、書き込みアクセス要求のデータ書き込みブロックに対応するデータ部分をマイグレーションするのを控えるように適合され得る。
【００１９】
いくつかの実施形態では、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて受信されたときに、第１のファイル・システム管理ユニットは、すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定するようにさらに適合されるものとしてよく、ターゲット・マイグレーション・データ・ブロックのどれもが、まだマイグレーションされていない場合、書き込みアクセス要求は、第１のファイル・システム管理ユニットによってローカルで実行され、および／または第１のファイル・システム管理ユニットは、書き込みアクセス要求のデータ書き込みブロックに割り当てられている現在のチェックポイント数よりも小さい、チェックポイント数を、すでにマイグレーションされているデータ部分の終了位置と書き込みアクセス要求のデータ書き込みブロックの開始位置との間のデータ・ホールに割り当てるようにさらに適合され得る。
【００２０】
好ましい実施形態において、特定のファイルへの書き込み要求は、少なくとも特定のファイルのすべてのブロックが完全にマイグレーションされるまで、第２のファイル・システム内で常に特定のファイルのカノニカル・バージョン（canonical version）を有するように、少なくとも、第１のファイル・システム上のファイルコンテンツがカノニカル・バージョンとなり得るように特定のファイルが完全にマイグレーションされるまで、第１のファイル・システム管理ユニットによって第２のファイル・システム管理ユニットによって管理される第２のファイル・システムにパススルーされ得る。他の好ましい実施形態では、書き込み要求は、少なくとも第２のファイル・システムのすべてのファイルのすべてのブロックが完全にマイグレーションされるまで（すなわち、マイグレーション・フェーズの終わりまで）、第２のファイル・システム内で常にファイルのカノニカル・バージョンを有するように、少なくともすべてのファイルが完全にマイグレーションされるまで、第１のファイル・システム管理ユニットによって第２のファイル・システム管理ユニットによって管理される第２のファイル・システムにパススルーされ得る。
【００２１】
上記の実施形態は、第１のファイル・システムにおいてローカルで（例えば、すべてのターゲット・ブロックがすでにマイグレーションされているとき）、第２のファイル・システムにおいてローカルで（例えば、マイグレーションされたターゲット・ブロックがもうないとき）、または第１および第２のファイル・システムの両方においても（例えば、いくつかのターゲット・ブロックがすでにマイグレーションされているとき）ユーザ書き込み要求を実行するかどうかが都合よく、効率的に決定され得るという利点を有する。決定は、以下で、どのデータ・ブロックがもうマイグレーションされているかを示すものとして（例えば、オブジェクト・ストア長がすでにマイグレーションされているブロックおよび／またはマイグレーションされたブロックの個数を示すという点において）以下で説明されているオブジェクト・ストア長（例えば、第１のファイルのマイグレーションの終わり領域を示す）に基づき実行され得る。
【００２２】
いくつかの実施形態では、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた読み出しアクセス要求が、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて受信されたときに、第１のファイル・システム管理ユニットは、すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定するようにさらに適合されるものとしてよく、すべてのターゲット・マイグレーション・データ・ブロックが、すでにマイグレーションされている場合、読み出しアクセス要求は、第１のファイル・システム管理ユニットによってローカルで実行され、ターゲット・マイグレーション・データ・ブロックの少なくとも１つが、まだマイグレーションを開始していない場合、読み出しアクセス要求は、第２のファイル・システム管理ユニットによって第２のファイル・システム内で実行されるように第２のファイル・システム管理ユニットにパススルーされ得、および／または第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにおいて受信された対応する読み出し応答は、第１のファイル・システム管理ユニットによって要求側クライアント・コンピュータにパススルーされ得る。
【００２３】
上記の実施形態は、第１のファイル・システムにおいてローカルで（例えば、すべてのターゲット・ブロックがすでにマイグレーションされているとき）、第２のファイル・システムにおいてローカルで（例えば、マイグレーションされたターゲット・ブロックがいくつかのみであるか、もうないとき）ユーザ読み出し要求を実行するかどうかが都合よく、効率的に決定され得るという利点を有する。決定は、以下で、どのデータ・ブロックがもうマイグレーションされているかを示すものとして（例えば、オブジェクト・ストア長がすでにマイグレーションされているブロックおよび／またはマイグレーションされたブロックの個数を示すという点において）以下で説明されているオブジェクト・ストア長（例えば、第１のファイルのマイグレーションの終わり領域を示し得る）に基づき実行され得る。
【００２４】
いくつかの実施形態では、第１のファイル・システム管理ユニットは、第１のファイル・システム管理ユニットにおいて、第２のファイル・システムの第１のファイルに関連付けられている第１のファイル・システム内の第１のファイル・システム管理ユニットによって記憶されているファイルコンテンツデータのオブジェクト・ストア長を決定し、第２のファイル・システム管理ユニットから受信されたデータに基づき第１のファイル・システム管理ユニットにおいて、第２のファイル・システムの第１のファイルの長さを決定し、および／または前記オブジェクト・ストア長が第１のファイルの前記長さに等しいと決定されたときに第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされていると決定するようにさらに適合され得る。これは、典型的なファイル・システムにすでに用意されているファイル・システム属性の比較結果に基づきファイルのデータコンテンツが完全にマイグレーションされたかどうか、いつマイグレーションされたかが容易に決定され得るという利点を有する。
【００２５】
ファイルのオブジェクト・ストア長（例えば、ＷＦＳ  ｏｎｏｄｅ長などの、第１のファイル・システム内のファイルのｏｎｏｄｅ長）は、第１のファイル・システムにすでに転送（マイグレーション）されており、記憶されている記憶されたファイルコンテンツデータのサイズに対応し得る（すなわち、ファイルのオブジェクト・ストア長が、外部の第２のファイル・システム上のファイルの長さに対応するときに、このことは、実際のファイルコンテンツのすべてのデータが完全にマイグレーションされていることを意味する）。すなわち、オブジェクト・ストア長は、第１のファイル・システム内のファイルのユーザ・データのマイグレーションの終わり領域を示すものを表すものとして見なされ得る。ファイルのマイグレーションを開始する前に、実際のファイルコンテンツデータは転送（マイグレーション）されていないので、オブジェクト・ストア長は、第１のブロックがマイグレーションされるまでゼロのままである。次いで、各マイグレーションされたブロックは、オブジェクト・ストア長を１ブロック・サイズだけインクリメントし得る。オブジェクト・ストア長は、バイトまたはキロバイトなどの記憶単位またはブロック数の単位で与えられ得る。マイグレーション時のユーザ書き込みは、オブジェクト・ストア長に影響を及ぼし得ることに留意されたい（しかしながら、ユーザ書き込みが第１のファイル・システムにおいてローカルで実行されるときのみである）。
【００２６】
ファイルの長さ（例えば、第２のファイル・システムにおけるｅｎｏｄｅ長）は、第２のファイル・システム内の第２のファイル・システム管理ユニットによって管理されるような第２のファイル・システムにおけるファイル・データ（ファイルコンテンツ）に割り振られた記憶領域の実際のサイズを示し得る。ファイルの長さは、バイトまたはキロバイトなどの記憶単位またはブロック数の単位で与えられ得る。仮想化およびマイグレーション時のユーザ書き込みは、ファイルの長さに影響を及ぼし得ることに留意されたい。
【００２７】
いくつかの実施形態では、第１のファイル・システム管理ユニットは、第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされたと決定されたときに第２のファイル・システムの第１のファイルに関連付けられている第１のファイル・システムの外部リンク・オブジェクトを削除するようにさらに適合され得る。いくつかの実施形態では、第１のファイル・システム管理ユニットは、第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされたと決定されたときに、第２のファイル・システム管理ユニットに、第２のファイル・システムの第１のファイルの削除を求める要求を送信するようにさらに適合され得る。第１のファイル・システム管理ユニットは、ファイルが完全にマイグレーションされたということをファイルのメタデータで示すために、第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされたと決定されたときに第２のファイル・システムの第１のファイルに関連付けられている第１のファイル・システムのメタデータの１つまたは複数のフラグを更新するようにさらに適合され得る。
【００２８】
いくつかの実施形態では、第１のファイル・システム管理ユニットは、クライアント・コンピュータから、ファイル作成要求で示されているパス・ロケーションにおいて第２のファイル・システム内に第２のファイルを作成することを求めるファイル作成要求を受信し、および／またはファイル作成要求で示されているパス・ロケーションに基づき第１のファイル・システム内に第２のファイルを作成するようにさらに適合され得る。特に、いくつかの好ましい実施形態において、新規ファイルは、ファイル作成要求を第２のファイル・システム管理ユニットにパススルーすることなくレギュラー・ファイルとして第１のファイル・システムにおいてのみ作成され得る。
【００２９】
新規ファイルの作成（「ｃｒｅａｔｅ」操作）がマイグレーション・フェーズにおいて第１のファイル・システムでのみ実行されることに加えて、操作「ｕｎｌｉｎｋ」、「ｌｉｎｋ」、および／または「ｒｅｎａｍｅ」は、好ましくは、マイグレーション・フェーズにおいて第２のファイル・システム管理ユニットにパススルーされることなく第１のファイル・システム管理ユニットによって第１のファイル・システムにおいてのみ実行される。
【００３０】
仮想化の際に発見される第２のファイル・システムのファイルのファイル・ハンドルなどのファイル・メタデータがマイグレーションの際に陳腐化する場合（例えば、第２のファイル・システムが破滅的障害の後にバックアップから再構築される必要がある場合）、それらは次の２つの対策により「ｃｒｅａｔｅ」／「ｌｉｎｋ」／「ｕｎｌｉｎｋ」／「ｒｅｎａｍｅ」操作がマイグレーションの際に第２のファイル・システムに受け渡されないのでマイグレーションの開始時に第２の（レガシーの）ファイル・システム・ツリーの観点から再生成され得る。第１に、第１のファイル・システムのスナップショットがマイグレーションの開始時に取られ、このビューを保存することができる。第２に、与えられたオブジェクトに対するファイル・ハンドルを含むファイル・メタデータが、スナップショット内の対応するＸＬＯのパスを導出し、次いで第２の（レガシーの）ファイル・システム内でこのパスを探索することによって見つけられ得る。マイグレーションの際に、ファイルは、ｒｅｎａｍｅ操作を介して、関連付けのツリー（第２のファイル・システムのツリーに対応する）の外にあっても、第１のファイル・システム内の任意の場所に移動することができ、これは、関連付けのツリーの境界を横切るときにｃｏｐｙ／ｄｅｌｅｔｅを必要とすることがない。
【００３１】
いくつかの実施形態では、第１のファイル・システム管理ユニットは、マイグレーション・データ・ブロックの第１のグループの第１のマイグレーション・データ・ブロックについて、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定し、および／または、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有していない（すなわち、全部ゼロである、ゼロで埋めたビットのみを有する）と決定されたとき、データ・ブロックがゼロで埋めたビットのみを有すると決定されたときに、前記第１のマイグレーション・データ・ブロックを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションすることおよび／または記憶することを控え、および／または前記第１のマイグレーション・データ・ブロックに関連付けられている記憶領域がゼロのみを含むものとする（ゼロで埋めたビットのみを有する）ことを示す第１のファイルのメタデータを更新するようにさらに適合され得る。
【００３２】
例えば、ゼロで埋めたビットを第１のファイル・システム内に記憶するために実際にゼロをディスクにマイグレーションし、書き込む代わりに、ファイルのメタデータ内に、対応するデータ・ブロックがゼロのみを含むものとする（ゼロで埋めたビットのみを有する）ことだけが示され得る。これは、マイグレーションされるファイル内のスパース性を処理し、マイグレーションをより効率的にすることを有利に可能にする。特に、スパースであることが、マイグレーションにわたって保存され、第２のファイル・システムが多数のスパース・ファイルを含む場合、スパース・ファイルは、第１のストレージ・ユニット上により多くの領域を必要とし、そのため、ファイル・システムがスパース・ファイルで満たされる危険性および拡張する必要性が生じ、またクォータに影響を及ぼす危険性も生じ得る。第１のファイル・システムをスパース・ファイルで埋めることを回避するために、マイグレーションされるデータ・ブロックがセルで埋めたビットのみを有する（データ・ブロックのすべてのビット・エントリがゼロである）と決定したときに、第１のファイル・システム管理ユニットは、ブロックのデータを実際にマイグレーションすることを控え、それぞれのファイルのｏｎｏｄｅ長をブロック・サイズだけインクリメントするのみとしてよい。それに加えて、ブロックのメタデータのフラグがセットされ、ブロックがゼロのみを含む（ゼロで埋めたビットのみを有する）ことを示すことができる。
【００３３】
効率上の理由から、１つまたは複数のデータ・ブロックについて、それぞれのデータ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうか（すなわち、ブロックがゼロのみを有するかどうか）を決定するステップは、ＣＰＵ以外の手段によって実行され得ることが好ましい。例えば、１つまたは複数のデータ・ブロックについて、それぞれのデータ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうか（すなわち、ブロックがゼロのみを有するかどうか）を決定するタスクは、第１のファイル・システム管理ユニットの１つまたは複数のＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）にオフロード（送信）され得る。
【００３４】
この態様は、受信されたデータ・ブロックについて、前記データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定し、受信されたデータ・ブロックがゼロで埋めたビットのみを有する（すなわち、非ゼロ・ビットを有しない）と決定された場合にブロックのデータコンテンツをストレージ・ユニットに書き込むことを控え、および／または前記第１のマイグレーション・データ・ブロックに関連付けられている記憶領域がゼロのみを含むものとする（ゼロで埋めたビットのみを有する）ことを示す第１のファイルのメタデータを更新するための独立した方法として、任意のファイル・システム・サーバにおける上記の仮想化およびマイグレーションの態様と無関係に実現され得ることに留意されたい。そのような方法において、以下で説明されるような好ましい態様は、特定の実装に使用され得る。
【００３５】
いくつかの実施形態では、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定することは、第２のファイル・システム管理ユニットから受信される第１のファイルに向けられた読み出し応答に基づき第２のファイル・システム内の第１のファイルのファイルコンテンツの中の第１の非ゼロ・ビットの位置を示すデータに基づき第１のファイル・システム管理ユニットによって実行され得る。
【００３６】
いくつかの実施形態では、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定することは、第１のマイグレーション・データ・ブロックのバイト毎の分析を行うことによって第１のファイル・システム管理ユニットによって実行され得る。
【００３７】
いくつかの実施形態では、第１のファイル・システム管理ユニットは、第２のファイル・システム内の第１のファイルに対して割り振られた記憶領域の使用量パーセンテージおよび／または第２のファイル・システム内の第１のファイルに対して割り振られた記憶領域を示す第１のファイルの長さがスパースの閾値を示す１つまたは複数の条件を満たす場合のみ（使用量パーセンテージが特定の閾値を下回ったとき）、マイグレーション・データ・ブロックの第１のグループの第２のマイグレーション・データ・ブロックについて、前記マイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定し、および／または、前記第２のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有していないと決定された場合に前記第２のマイグレーション・データ・ブロックを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションすることを控え、および／または前記第１のマイグレーション・データ・ブロックに関連付けられている記憶領域がゼロのみを含むものとすることを示す第１のファイルのメタデータを更新するようにさらに適合され得る。
【００３８】
いくつかの実施形態では、第１のファイル・システム管理ユニットは、第２のファイル・システム内の第１のファイルに対して割り振られた記憶領域の使用量パーセンテージと第２のファイル・システム内の第１のファイルに対して割り振られた記憶領域を示す第１のファイルの長さとの比が所定の閾値を下回る場合に、マイグレーション・データ・ブロックの第１のグループの第２のマイグレーション・データ・ブロックについて、前記マイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定し、および／または、前記第２のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビット（すなわち、全部ゼロからなるビット）を有していないと決定された場合に前記第２のマイグレーション・データ・ブロックを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションすることを控え、および／または前記第１のマイグレーション・データ・ブロックに関連付けられている記憶領域がゼロのみを含むものとすることを示す第１のファイルのメタデータを更新するようにさらに適合され得る。
【００３９】
いくつかの実施形態によれば、複数のクライアント・コンピュータと、第１のファイル・システムを管理し、複数のクライアント・コンピュータに接続されるようにするための第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、第１のファイル・システム管理ユニットに接続されるようにするための第２のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて第１のファイル・システムのデータ・マイグレーションを行うための方法が提供され得る。
【００４０】
いくつかの実施形態によれば、第２のファイル・システムは、複数のデータ・ファイルを備え、第１のファイル・システムは複数の外部リンク・オブジェクトを備え、第１のファイル・システムの各外部リンク・オブジェクトは第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように第２のファイル・システムのそれぞれのデータ・ファイルに関連付けられる。
【００４１】
いくつかの実施形態によれば、この方法は、第２のファイル・システムの第１のファイルのファイルコンテンツデータをマイグレーション・データ・ブロックの第１のグループに分割することと、第２のファイル・システムの第１のファイルのファイルコンテンツデータを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションすることとを含み得る。
【００４２】
いくつかの実施形態によれば、マイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、それぞれのマイグレーション・データ・ブロックが第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている間に一時的に差し控えられ得るが、それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行され得る。
【００４３】
いくつかの実施形態によれば、マイグレーション・データ・ブロックの第１のグループのデータコンテンツへのクライアント・アクセスは、第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている、すべてのマイグレーション・データ・ブロックに対して、また第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットへのマイグレーションをまだ開始していない、すべてのマイグレーション・データ・ブロックに対して可能にされるものとしてよい。
【００４４】
いくつかの実施形態によれば、マイグレーション・データ・ブロックの第１のグループのデータ・マイグレーション・データ・ブロックのブロック・サイズは、データ・ブロックを受信するために第１のファイル・システム管理ユニットによってサポートされているような最大ブロック・サイズおよびデータ・ブロックを送信するために第２のファイル・システム管理ユニットによってサポートされているような最大ブロック・サイズのうちのより小さい値として決定され得る。
【００４５】
いくつかの実施形態によれば、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて受信されたときに、この方法は、少なくとも１つのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定することを含むものとしてよく、
少なくとも１つのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされている場合、書き込みアクセス要求は、第１のファイル・システム管理ユニットによってローカルで実行されるものとしてよく、ターゲット・マイグレーション・データ・ブロックのどれもが、まだマイグレーションを開始していない場合、書き込みアクセス要求は、第２のファイル・システム管理ユニットにパススルーされ、第２のファイル・システム管理ユニットによって第２のファイル・システム内で実行され得る。
【００４６】
いくつかの実施形態によれば、少なくとも１つのターゲット・マイグレーション・データ・ブロックが、すでにマイグレーションされている場合、書き込みアクセス要求は、第２のファイル・システム管理ユニットにさらにパススルーされ、第２のファイル・システム管理ユニットによって第２のファイル・システム内で実行され得る。
【００４７】
いくつかの実施形態によれば、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて受信されたときに、この方法は、すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定することを含むものとしてよく、ターゲット・マイグレーション・データ・ブロックのどれもがまだマイグレーションされていない場合、書き込みアクセス要求は、第１のファイル・システム管理ユニットによってローカルで実行されるものとしてよく、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックを後でマイグレーションするときに、書き込みアクセス要求のデータ書き込みブロックに対応するデータ部分は、マイグレーションすることを控えられ得る。
【００４８】
いくつかの実施形態によれば、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた書き込みアクセス要求が、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて受信されたときに、この方法は、すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定することを含むものとしてよく、ターゲット・マイグレーション・データ・ブロックのどれもがまだマイグレーションされていない場合、書き込みアクセス要求は、第１のファイル・システム管理ユニットによってローカルで実行されるものとしてよく、すでにマイグレーションされているデータ部分の終了位置と書き込みアクセス要求のデータ書き込みブロックの開始位置との間のデータ・ホールは、書き込みアクセス要求のデータ書き込みブロックに割り当てられている現在のチェックポイント数よりも小さいチェックポイント数を割り当てられ得る。
【００４９】
いくつかの実施形態によれば、マイグレーション・データ・ブロックの第１のグループの１つまたは複数のターゲット・マイグレーション・データ・ブロックに向けられた読み出しアクセス要求が、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて受信されたときに、この方法は、すべてのターゲット・マイグレーション・データ・ブロックがすでにマイグレーションされているかどうかを決定することを含むものとしてよく、すべてのターゲット・マイグレーション・データ・ブロックが、すでにマイグレーションされている場合、読み出しアクセス要求は、第１のファイル・システム管理ユニットによってローカルで実行され、ターゲット・マイグレーション・データ・ブロックの少なくとも１つが、まだマイグレーションを開始していない場合、読み出しアクセス要求は、第２のファイル・システム管理ユニットにパススルーされ、第２のファイル・システム管理ユニットによって第２のファイル・システム内で実行されるものとしてよく、第２のファイル・システム管理ユニットは、第１のファイル・システム管理ユニットによって要求側クライアント・コンピュータにパススルーされ得る対応する読み出し応答を第１のファイル・システム管理ユニットに送信する。
【００５０】
いくつかの実施形態によれば、この方法は、第１のファイル・システム管理ユニットにおいて、第２のファイル・システムの第１のファイルに関連付けられている第１のファイル・システム内の第１のファイル・システム管理ユニットによって記憶されているファイルコンテンツデータのオブジェクト・ストア長を決定すること、第１のファイル・システム管理ユニットにおいて、第２のファイル・システムの第１のファイルの長さを決定すること、および／または前記オブジェクト・ストア長が第１のファイルの前記長さに等しいと決定されたときに第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされていると決定することを含み得る。
【００５１】
いくつかの実施形態によれば、この方法は、第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされたと決定されたときに第２のファイル・システムの第１のファイルに関連付けられている第１のファイル・システムの外部リンク・オブジェクトを削除することを含み得る。いくつかの実施形態では、この方法は、第１のグループのすべてのマイグレーション・データ・ブロックがマイグレーションされていると決定されたときに第２のファイル・システムの第１のファイルを削除することをさらに含み得る。
【００５２】
いくつかの実施形態によれば、この方法は、クライアント・コンピュータから第１のファイル・システム管理ユニットにおいて、ファイル作成要求で示されているパス・ロケーションにおいて第２のファイル・システム内に第２のファイルを作成することを求めるファイル作成要求を受信すること、および／またはファイル作成要求で示されているパス・ロケーションに基づき第１のファイル・システム内に第２のファイルを作成することを含み得る。
【００５３】
いくつかの実施形態によれば、この方法は、マイグレーション・データ・ブロックの第１のグループの第１のマイグレーション・データ・ブロックについて、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定することと、および／または、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビット（すなわち、全部ゼロからなるビット）を有していないと決定されたときに前記第１のマイグレーション・データ・ブロックを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションすることを控えることと、および／または前記第１のマイグレーション・データ・ブロックに関連付けられている記憶領域がゼロのみを含むものとすることを示す第１のファイルのメタデータを更新することとを含み得る。
【００５４】
いくつかの実施形態によれば、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定することは、第２のファイル・システム管理ユニットから受信される第１のファイルに向けられた読み出し応答に基づき第２のファイル・システム内の第１のファイルのファイルコンテンツの中の第１の非ゼロ・ビットの位置を示すデータに基づき実行され得る。
【００５５】
いくつかの実施形態によれば、前記第１のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定することは、第１のマイグレーション・データ・ブロックのバイト毎の分析を行うことによって実行され得る。
【００５６】
いくつかの実施形態によれば、この方法は、第２のファイル・システム内の第１のファイルに対して割り振られた記憶領域の使用量パーセンテージと第２のファイル・システム内の第１のファイルに対して割り振られた記憶領域を示す第１のファイルの長さとの比が所定の閾値を下回るときに、マイグレーション・データ・ブロックの第１のグループの第２のマイグレーション・データ・ブロックについて、前記マイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビットを有するかどうかを決定すること、および／または、前記第２のマイグレーション・データ・ブロックが少なくとも１つの非ゼロ・ビット（すなわち、全部ゼロからなる）を有していないと決定されたときに前記第２のマイグレーション・データ・ブロックを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションすることを控えること、および／または前記第１のマイグレーション・データ・ブロックに関連付けられている記憶領域がゼロのみを含むものとすることを示す第１のファイルのメタデータを更新することを含み得る。
【００５７】
さらなる実施形態によれば、複数のクライアント・コンピュータと、第１のファイル・システムを管理し、複数のクライアント・コンピュータに接続されるようにするための第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、第１のファイル・システム管理ユニットに接続されるようにするための第２のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいて第１のファイル・システムのデータ・マイグレーションを行うための装置が実現されるものとしてよく、第２のファイル・システムは複数のデータ・ファイルを備え、第１のファイル・システムは複数の外部リンク・オブジェクトを備え、第１のファイル・システムの各外部リンク・オブジェクトは第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように第２のファイル・システムのそれぞれのデータ・ファイルに関連付けられる。
【００５８】
いくつかの実施形態によれば、装置は、第２のファイル・システムの第１のファイルのファイルコンテンツデータをマイグレーション・データ・ブロックの第１のグループに分割し、第２のファイル・システムの第１のファイルのファイルコンテンツデータを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションするように適合されている第１のファイル・システム管理ユニットを備え得る。
【００５９】
マイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、それぞれのマイグレーション・データ・ブロックが第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている間に一時的に差し控えられ得るが、それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行される。
【００６０】
いくつかの実施形態によれば、マイグレーション・データ・ブロックの第１のグループのデータコンテンツへのクライアント・アクセスは、第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている、すべてのマイグレーション・データ・ブロックに対して、また第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットへのマイグレーションをまだ開始していない、すべてのマイグレーション・データ・ブロックに対して可能にされるものとしてよい。
【００６１】
いくつかの実施形態によれば、第１のファイル・システム管理ユニットは、上記の態様のうちの１つまたは複数による方法のステップを実行するようにさらに適合され得る。
【００６２】
さらなる実施形態によれば、第１のファイル・システムのデータ・マイグレーションを行うためのデータ・ストレージ・システムが実現されるものとしてよく、データ・ストレージ・システムは複数のクライアント・コンピュータと、第１のファイル・システムを管理し、複数のクライアント・コンピュータに接続されるようにするための第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、第１のファイル・システム管理ユニットに接続されるようにするための第２のファイル・システム管理ユニットとを備え、第２のファイル・システムは複数のデータ・ファイルを備え、第１のファイル・システムは複数の外部リンク・オブジェクトを備え、第１のファイル・システムの各外部リンク・オブジェクトは第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように第２のファイル・システムのそれぞれのデータ・ファイルに関連付けられる。
【００６３】
第１のファイル・システム管理ユニットは、第２のファイル・システムの第１のファイルのファイルコンテンツデータをマイグレーション・データ・ブロックの第１のグループに分割し、第２のファイル・システムの第１のファイルのファイルコンテンツデータを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションするように適合され得る。
【００６４】
マイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、それぞれのマイグレーション・データ・ブロックが第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている間に一時的に差し控えられ得るが、それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行される。
【００６５】
いくつかの実施形態では、マイグレーション・データ・ブロックの第１のグループのデータコンテンツへのクライアント・アクセスは、第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている、すべてのマイグレーション・データ・ブロックに対して、また第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットへのマイグレーションをまだ開始していない、すべてのマイグレーション・データ・ブロックに対して可能にされるものとしてよい。
【００６６】
いくつかの実施形態によれば、第１のファイル・システム管理ユニットは、上記の態様のうちの１つまたは複数による方法のステップを実行するようにさらに適合され得る。
【００６７】
さらなる実施形態によれば、上で説明されているようなデータ・ストレージ・システムで使用するためのファイル・システム・サーバが実現されるものとしてよく、これは上記の態様のうちの１つまたは複数による方法のステップを実行するようにさらに適合される第１のファイル・システム管理ユニットを備える。
【００６８】
さらなる実施形態によれば、コンピュータ・プログラム・コード手段を備えるコンピュータ・プログラム製品が提供されるものとしてよく、コンピュータ・プログラム・コード手段は、複数のクライアント・コンピュータと、第１のファイル・システムを管理し、複数のクライアント・コンピュータに接続されるようにするための第１のファイル・システム管理ユニットと、第２のファイル・システムを管理し、第１のファイル・システム管理ユニットに接続されるようにするための第２のファイル・システム管理ユニットとを備えるデータ・ストレージ・システムにおいてファイル・システム管理ユニットの処理ユニットであって、第２のファイル・システムは複数のデータ・ファイルを備え、第１のファイル・システムは複数の外部リンク・オブジェクトを備え、第１のファイル・システムの各外部リンク・オブジェクトは第２のファイル・システムのそれぞれのデータ・ファイルへのクライアント・アクセスを可能にするように第２のファイル・システムのそれぞれのデータ・ファイルに関連付けられる、処理ユニットに、第２のファイル・システムの第１のファイルのファイルコンテンツデータをマイグレーション・データ・ブロックの第１のグループに分割するステップと、第２のファイル・システムの第１のファイルのファイルコンテンツデータを第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックの単位でマイグレーションするステップとを実行させるように構成される。
【００６９】
マイグレーション・データ・ブロックの第１のグループのマイグレーション・データ・ブロックのデータコンテンツへのクライアント・アクセスは、それぞれのマイグレーション・データ・ブロックが第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている間に一時的に差し控えられ得るが、それぞれのマイグレーション・データ・ブロックのマイグレーションの際に受信されたマイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックに向けられたクライアント・アクセス要求は、キューに入れられ、マイグレーション・データ・ブロックの第１のグループのそれぞれのマイグレーション・データ・ブロックがマイグレーションされた後に実行される。
【００７０】
いくつかの実施形態では、マイグレーション・データ・ブロックの第１のグループのデータコンテンツへのクライアント・アクセスは、第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットにマイグレーションされている、すべてのマイグレーション・データ・ブロックに対して、また第２のファイル・システム管理ユニットから第１のファイル・システム管理ユニットへのマイグレーションをまだ開始していない、すべてのマイグレーション・データ・ブロックに対して可能にされるものとしてよい。
【００７１】
いくつかの実施形態によれば、コンピュータ・プログラム製品は、処理ユニットに上記の態様のうちの１つまたは複数による方法のステップを実行させるように構成されているコンピュータ・プログラム・コード手段をさらに備え得る。
【図面の簡単な説明】
【００７２】
【図１Ａ】データ・ストレージ・システムの一例を示す図である。
【図１Ｂ】追加のストレージ装置を相互接続している図１Ａのデータ・ストレージ・システムの一例を示す図である。
【図１Ｃ】データ・ストレージ・システムの別の例を示す図である。
【図１Ｄ】データ・ストレージ・システムの別の例を示す図である。
【図２】ファイル・システム管理ユニットの構造の概略図を示す例示的な図である。
【図３】仮想およびマイグレーション・ユニットの構造の概略機能図を示す例示的な図である。
【図４】ファイル・システムのツリー構造の一例を示す図である。
【図５】図４のツリー構造に基づく仮想化されたファイル・システムのツリー構造の一例を示す図である。
【図６Ａ】仮想化されたファイルに対する外部リンク・オブジェクトの例示的な概略データ構造を示す図である。
【図６Ｂ】仮想化されたディレクトリに対するメタデータの例示的な概略データ構造を示す図である。
【図７】図４のファイル・システムのツリーの仮想化が完了した後の仮想化管理情報テーブルの一例を示す図である。
【図８Ａ】仮想化の初期化およびマイグレーションの初期化の例示的な流れ図を示す図である。
【図８Ｂ】仮想化の初期化およびマイグレーションの初期化の例示的な流れ図を示す図である。
【図８Ｃ】仮想化の初期化およびマイグレーションの初期化の例示的な流れ図を示す図である。
【図９Ａ】バックグラウンド・マイグレーション管理の流れ図の例を示す図である。
【図９Ｂ】バックグラウンド・マイグレーション管理の流れ図の別の例を示す図である。
【図１０Ａ】ファイル・データ・マイグレーションの流れ図の例を示す図である。
【図１０Ｂ】ファイル・データ・マイグレーションの流れ図の別の例を示す図である。
【図１０Ｃ】ファイル・データ・マイグレーションの流れ図の別の例を示す図である。
【図１０Ｄ】ファイル・データ・マイグレーションの流れ図の別の例を示す図である。
【図１０Ｅ】ファイル・データ・マイグレーションの流れ図の別の例を示す図である。
【図１１Ａ】仮想化フェーズにおける仮想化されたファイルへの書き込みアクセスのための情報交換を示す図である。
【図１１Ｂ】仮想化フェーズにおける仮想化されたファイルへの読み出しアクセスのための情報交換を示す図である。
【図１１Ｃ】仮想化フェーズにおける仮想化されたファイルまたはディレクトリへの属性アクセスのための情報交換を示す図である。
【図１１Ｄ】仮想化されたファイルを削除するための情報交換を示す図である。
【図１１Ｅ】仮想化フェーズにおけるファイル作成のための情報交換を示す図である。
【図１１Ｆ】仮想化されたオブジェクトの属性を変更するための情報交換を示す図である。
【図１１Ｇ】仮想化フェーズにおけるディレクトリ作成のための情報交換を示す図である。
【図１１Ｈ】仮想化フェーズにおけるディレクトリ名前変更のための情報交換を示す図である。
【図１２Ａ】マイグレーション・フェーズにおける仮想化されたファイルへの書き込みアクセスのための情報交換を示す図である。
【図１２Ｂ】マイグレーション・フェーズにおけるマイグレーションされたファイルへの書き込みアクセスのための情報交換を示す図である。
【図１２Ｃ】マイグレーション・フェーズにおけるマイグレーションされた（または部分的に）ファイルへの読み出しアクセスのための情報交換を示す図である。
【図１２Ｄ】マイグレーション・フェーズにおけるファイル作成のための情報交換を示す図である。
【図１２Ｅ】マイグレーション・フェーズにおけるディレクトリ作成のための情報交換を示す図である。
【図１３Ａ】マイグレーションの際の書き込みアクセス管理の流れ図の例を示す図である。
【図１３Ｂ】マイグレーションの際の書き込みアクセス管理の流れ図の別の例を示す図である。
【図１４Ａ】マイグレーションの際の読み出しアクセス管理の流れ図の例を示す図である。
【図１４Ｂ】マイグレーションの際の読み出しアクセス管理の流れ図の別の例を示す図である。
【図１５Ａ】マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツの例示的な概略図を示す図である。
【図１５Ｂ】マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツの例示的な概略図を示す図である。
【図１６Ａ】マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツに対する例示的なデータ書き込み手順の概略を示す図である。
【図１６Ｂ】マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツに対する例示的なデータ書き込み手順の概略を示す図である。
【図１７Ａ】マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツに対する例示的なデータ・マイグレーション手順の概略を示す図である。
【図１７Ｂ】マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツに対する例示的なデータ・マイグレーション手順の概略を示す図である。
【図１８】マイグレーションの際のファイルのファイルコンテンツの例示的な概略図を示す図である。
【図１９Ａ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【図１９Ｂ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【図１９Ｃ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【図１９Ｄ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【図１９Ｅ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【図１９Ｆ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【図１９Ｇ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【図１９Ｈ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【図１９Ｉ】ファイル・システム内のチェックポイント数メカニズムを例示的に示す図である。
【発明を実施するための形態】
【００７３】
次に、本発明の好ましい態様および実施形態が、添付の図を参照しつつより詳細に説明される。異なる図面および実施形態における同じもしくは類似の特徴は、類似の参照番号によって参照される。さまざまな好ましい態様および好ましい実施形態に関係する以下の詳細な説明は、本発明の範囲を制限することを意図していないことは理解されるであろう。
【００７４】
図１Ａは、通信ネットワーク２００を介して第２のストレージ装置４００に接続されている複数のクライアント・コンピュータ１００（クライアント）を備えるデータ・ストレージ・システムの一例を示している。第２のストレージ装置４００は、１つまたは複数のファイル・システムを管理するためのファイル・システム管理ユニット４１０と、ストレージ・ユニット４２０によって管理される１つまたは複数のファイル・システムのユーザ・データとユーザ・データのメタデータとを記憶するためのストレージ・ユニット４２０と、バックアップ要求があり次第、または例えば定期的になど、自動的にストレージ・ユニット４２０に記憶されているデータのバックアップを実行するためのバックアップ・ストレージ・ユニット４３０とを備える。第２のストレージ装置４００は、単一のコンピューティング・デバイスとして、または互いに接続されている複数のデバイスからなるシステムとして実現され得る。例えば、ファイル・システム管理ユニット４１０は、ネットワーク・アタッチト・ストレージ（ＮＡＳ）のストレージ・ユニット４２０および４３０として１つまたは複数のストレージ・デバイスに接続されている１つまたは複数のファイル・システム・サーバ・コンピュータからなるシステムとして実現され得る。
【００７５】
通信ネットワーク２００（さらには以下で説明されている通信ネットワーク５００、６００、および８００）は、有線通信ネットワーク（ＷＡＮ、ＬＡＮ、ローカル・ファイバ・チャネル・ネットワーク、インターネット・ベースのネットワーク、イーサネット通信ネットワーク、もしくは同様のもの）またはワイヤレス通信ネットワーク（ＷＬＡＮなど）、またはこれらの組合せとして実現され得る。基本的な通信プロトコルは、ＮＦＳベースのプロトコルまたはＳＭＢ／ＣＩＦＳベースのプロトコルなどの、ファイバ・チャネル・プロトコルまたはファイル・ベースのプロトコルであるものとしてよい。
【００７６】
クライアント１００は、通信ネットワーク２００を介して第２のストレージ装置４００のファイル・システム管理ユニット４１０によって管理される１つまたは複数のファイル・システムのユーザ・データにアクセスするように適合される。特に、ユーザは、ユーザ個別またはユーザ・グループ個別のアクセス・ポリシー（例えば、ユーザ・アクセス権、ユーザ・グループ・アクセス権、ファイル・システムのパーミッションなど）に応じてネットワーク２００を介して第２のストレージ装置４００に接続されているクライアント１００の各々を介して、データをファイル・システムに書き込み、ファイル・システムからデータを読み出し、ファイル・システム内にファイルおよびディレクトリを作成し、ファイルおよびディレクトリなどのファイル・システムのオブジェクトの属性を設定または読み出し、ファイル・システムのデータを修正し、ファイル・システムのオブジェクトを削除し、ファイル・システムのオブジェクトを移動することができる。
【００７７】
いくつかの時点において、例えば、より新しいファイル・システム管理ストレージ装置は、より多くのファイル・システムまたはより大きいファイル・システムを管理し（より大きいデータ記憶空間および／またはより多くのファイル・システム・オブジェクトを使用可能にすることを含む）、より効率的な入出力（Ｉ／Ｏ）の実行を可能にし、より大きいストレージ・ユニットまたはより効率的なストレージ・デバイス技術を収容するストレージ・ユニットの使用を可能にするように適合され得るので、データ・ストレージ・システム全体の性能を改善するために第２のストレージ装置４００を別の新しいファイル・システム管理ストレージ装置と交換することが望ましい場合がある。それでも、ファイル・システム構造（既存のファイル・ツリー構造など）およびそのユーザ・データ（ファイル・コンテンツ）を含むすでに存在しているファイル・システム（複数可）を保持することが望ましい場合があるが、原理上、ユーザが中断なしで、または少なくとも、できる限り短い単一の中断のみで既存のファイル・システム（複数可）にアクセスすることを可能にすることが望ましい。
【００７８】
本発明のいくつかの好ましい態様によれば、既存のファイル・システム（複数可）を管理するためにより古いレガシーの第２のストレージ装置４００の代わりに使用されるものとする、より新しい第１のストレージ装置３００は、短い単一のサービス中断のみで、アクセスするクライアント１００と図１Ｂに例示的に示されているようなレガシーの第２のストレージ装置４００との間に相互接続されるということが基本的な考え方である。
【００７９】
図１Ｂは、本発明の好ましい態様により通信ネットワーク２００と第２のストレージ装置４００との間において追加の第１のストレージ装置３００を相互接続している図１Ａのデータ・ストレージ・システムの一例を示している。第１のストレージ装置３００は、１つまたは複数のファイル・システムを管理するためのファイル・システム管理ユニット３１０と、ストレージ・ユニット３２０によって管理される１つまたは複数のファイル・システムのユーザ・データとユーザ・データのメタデータとを記憶するためのストレージ・ユニット３２０と、バックアップ要求があり次第、または例えば定期的になど、自動的にストレージ・ユニット３２０に記憶されているデータのバックアップを実行するためのバックアップ・ストレージ・ユニット３３０とを備える。第１のストレージ装置３００は、単一のコンピューティング・デバイスとして、または互いに接続されている複数のデバイスからなるシステムとして実現され得る。例えば、ファイル・システム管理ユニット３１０は、ネットワーク・アタッチト・ストレージ（ＮＡＳ）のストレージ・ユニット３２０および３３０として１つまたは複数のストレージ・デバイスに接続されている１つまたは複数のファイル・システム・サーバ・コンピュータからなるシステムとして実現され得る。
【００８０】
通信ネットワーク２００と第２のストレージ装置４００との間で第１のストレージ装置３００を相互接続するためには、ファイル・システム・サービスの短い中断が１回だけ必要であり、その中断の際にクライアント１００の接続が切断され、クライアント１００は短い期間、既存のファイル・システム（複数可）にアクセスできない、すなわち、クライアント１００は、ユーザ・データの読み出し、ユーザ・データの書き込み、ファイルおよびディレクトリなどの新規ファイル・システム・オブジェクトの作成、またはファイル・システム・オブジェクト属性へのアクセスを行うことができない。
【００８１】
通信ネットワーク２００と第２のストレージ装置４００との間で第１のストレージ装置３００を相互接続した後、クライアント１００は、第２のストレージ・システム４００から接続が切断されたままであり、したがって、第２のファイル・ストレージ装置４００によって管理されるファイル・システム（複数可）に直接アクセスすることはできず、第１のストレージ装置３００を通じて間接的にのみ第２のストレージ装置４００によって管理されるファイル・システム（複数可）にアクセスすることができる。好ましい態様によれば、すべてのユーザ・アクセスは、第１のストレージ装置３００にのみアドレッシングされ、第２のストレージ装置４００への直接的接続は存在しないことが望ましい。
【００８２】
最初に、第１のストレージ装置３００を相互接続した後に、クライアント１００を介してユーザによってアクセスされるべき１つまたは複数のファイル・システムは、第２のストレージ装置４００上にそのまま保持され（ファイルを編成するためのファイルおよびディレクトリのユーザ・データを含み、またファイル・システム・オブジェクトのメタデータを含む）、第１のストレージ装置３００は、既存のファイル・システム（複数可）のデータを保持しない。
【００８３】
ローカルにおいて第１のストレージ装置３００上のファイル・システム（複数可）へのすべてのユーザ・アクセス要求を処理し、第２のストレージ装置の接続を切断できるようにするため、すべてのファイル・システム・データ（ユーザ・データおよびファイル・システム・メタデータを含む）が、最終的に、第２のストレージ装置４００から第１のストレージ装置３００にマイグレーションされる必要があり得る。しかしながら、多数のディレクトリおよびファイルを収容する大きなファイル・システムの場合、そのようなデータ・マイグレーションは、非常に長い時間を要することがあり、データのマイグレーションの際にすべてのファイル・システム・データ（ユーザ・データおよびファイル・システム・メタデータを含む）が第１のストレージ装置３００上に存在するまで無効化または差し控えられていた場合、これにより、クライアント１００によるファイル・システム（複数可）の望ましくないアクセス不能状態が、不利なほどの長い期間続くことになる。
【００８４】
ファイル・システム（複数可）の望ましくないアクセス不能の期間を短縮するために、第１のストレージ・システム３００は、第１のストレージ装置３００を相互接続した直後に第２のストレージ装置４００によって管理されるファイル・システム（複数可）への間接的ユーザ・アクセスを可能にするように適合される。
【００８５】
次いで、次の段落で「仮想化」と称されている、第１のストレージ装置３００を相互接続した後の第１のフェーズにおいて、第１のストレージ装置３００は、ファイル・システム（複数可）のファイル・システム・ツリー（複数可）の仮想化を実行し、そこでは、第２のストレージ・システム４００上に存在するファイル・システム（複数可の）のファイル・システム・ツリー（複数可）が、第２のストレージ装置のストレージ・ユニット４２０上に記憶されているユーザ・データを実際にマイグレーションすることなく第１のストレージ装置３００上に仮想的に作成される。
【００８６】
次の段落で「マイグレーション」と称される、第２のフェーズにおいて、ファイルおよび同様のものの実際のデータコンテンツを含む実際のユーザ・データが、第２のストレージ装置４００から第１のストレージ装置３００に転送される。
【００８７】
仮想化フェーズおよびマイグレーション・フェーズの両方が完了した後、第１のストレージ装置３００は、仮想化フェーズおよびマイグレーション・フェーズにおいてファイル・システム（複数可）へのユーザ・アクセスが進行しているせいで、その間変更されている可能性が非常に高い、既存のファイル・システム（複数可）をローカルで処理することができ、第２のストレージ装置４００は、その後接続が完全に切断され得る。
【００８８】
しかしながら、仮想化フェーズおよびマイグレーション・フェーズの両方において、第２のストレージ装置４００は、第１のストレージ装置３００によってそのままアクセス可能である必要がある。
【００８９】
仮想化フェーズおよびマイグレーション・フェーズは、仮想化フェーズが完了するまでデータ・マイグレーションが開始されない、明確に区別できるフェーズとしていくつかの好ましい態様に関して以下でより詳しく説明されるが、本発明はそのような構成に制限されないこと、およびそれらのフェーズがファイル・システム（複数可）のすでに仮想化されている部分のファイルのファイル・データ・コンテンツのマイグレーションがファイル・システム（複数可）の他の部分について仮想化がまだ進行中である間にすでに実行され得るという点においてタイミングよくオーバーラップすることもあり得ることは理解されるであろう。
【００９０】
例として仮想化フェーズおよびマイグレーション・フェーズを明確に区別できるその後実行される動作フェーズと見なすときに、第１のファイル・システム管理ユニット３１０が第２のストレージ装置４００のファイル・システム（複数可）内に存在する各ファイルについてストレージ・ユニット３２０によって記憶されている外部リンク・オブジェクトを作成するという点において仮想化フェーズで第１のファイル・システム管理ユニット３１０が第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）の仮想化されたファイルのツリー構造を構築するので、第１のストレージ・システム３００上の（例えば、ストレージ・ユニット３２０内に記憶されている）ユーザ・データ（すなわち、ファイルコンテンツ）は存在しない。
【００９１】
これらの外部リンク・オブジェクトは、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム（複数可）のファイル・システム・オブジェクトとなり、各外部リンク・オブジェクトはファイルの実際のユーザ・データ（すなわち、ファイルコンテンツそれ自体）が第１のストレージ装置３００のストレージ・ユニット３２０にマイグレーションされていない限り第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）の対応するファイルへのアクセスを可能にする。
【００９２】
第１のストレージ装置３００上に存在する外部リンク・オブジェクトを通じて第２のストレージ装置４００上に存在するファイル・システム（複数可）のファイルへのユーザ・アクセスの詳細は、以下で説明される。
【００９３】
以下の図１Ｂから図１Ｄの構成のすべてにおける第１および第２のストレージ装置３００および４００の接続は、さまざまな方法で、例えば、上で説明されている通信ネットワーク２００と同様の方法で実現され得るが、異なる複数のファイバ・チャネル内の並列通信を可能にする複数のファイバ・チャネルを有するファイバ・チャネル接続を提供することが特に望ましい場合がある。さらに、例えば、ＦＴＰベースのプロトコル、ＮＦＳベースのプロトコル（例えば、ＮＦＳｖ３もしくはＮＦＳｖ４）、またはＳＭＢ／ＣＩＦＳベースのプロトコル、または同様のものなどの、ファイル・ベースの通信プロトコルを使用することが望ましい場合がある。
【００９４】
図１Ｃは、通信ネットワーク２００と別の通信ネットワーク５００との間で追加の第１のストレージ装置３００を相互接続しているデータ・ストレージ・システムの別の例であり、これは複数の第２のストレージ装置４００に接続されている。すなわち、図１Ｂに示されているようなデータ・ストレージ・システムとの違いは、第１のストレージ装置３００が、複数のすでに存在しているレガシーのストレージ装置４００との交換のため使用されるものとしてよく、各々クライアント１００によってアクセスされるべき１つまたは複数のファイル・システム（複数可）を管理している、という点である。第１のストレージ装置３００は、複数のレガシーのストレージ装置４００によって管理されるファイル・システムの仮想化およびマイグレーションを実行するように適合される。
【００９５】
仮想化フェーズおよびマイグレーション・フェーズの両方が完了した後、第１のストレージ装置３００は、仮想化フェーズおよびマイグレーション・フェーズにおいてファイル・システム（複数可）へのユーザ・アクセスが進行しているせいで、その間変更されている可能性が非常に高い、既存のファイル・システムをローカルで処理することができ、第２のストレージ装置４００のうちの１つまたは複数またはすべてが、その後接続が完全に切断され得る。しかしながら、仮想化フェーズおよびマイグレーション・フェーズの両方において、第２のストレージ装置４００は、第１のストレージ装置３００によってそのままアクセス可能である必要がある。
【００９６】
図１Ｃの例において、場合によってはその後のマイグレーション・フェーズなしで第１のストレージ装置３００によるファイル・システムの仮想化を実行するだけでも有利ですらあり得ることは明らかである。例えば、レガシーのストレージ装置４００によって管理されるすべてのファイル・システムの仮想化の完了後に、ファイル・システムの実際のユーザ・データ（ファイルコンテンツ）がレガシーのストレージ装置４００のストレージ・ユニットにのみ依然として記憶される間、複数のレガシーのストレージ装置４００のすべてのファイル・システムは、第１のストレージ装置３００によって単一のアクセス・ポイントとして管理される仮想化されたファイル・システムを通じてクライアント１００によってアクセスされ得る。
【００９７】
図１Ｄは、データ・ストレージ・システムの別の例を示している。ここでもまた、クライアント１００は、通信ネットワーク２００を介して第１のストレージ装置３００に接続され、第１のストレージ装置３００は、別の通信ネットワーク５００を介して第２の（レガシーの）ストレージ装置３００に接続される。それに加えて、第１のストレージ装置３００は、さらに別の通信ネットワーク８００を介してリモート・ストレージ装置９００に接続され、第２のストレージ装置４００は、さらに別の通信ネットワーク６００を介して別のリモート・ストレージ装置７００に接続される。
【００９８】
そのような構成もリモート・データ・レプリケーションを可能にし、そこでは、第１のストレージ装置３００のストレージ・ユニット３２０に記憶されているユーザ・データは、通信ネットワーク８００を介して第１のリモート・ストレージ装置９００のストレージ・ユニットにリモート・レプリケーションされ、第２のストレージ装置４００のストレージ・ユニット４２０に記憶されているユーザ・データは、通信ネットワーク６００を介して第２のリモート・ストレージ装置７００のストレージ・ユニットにリモート・レプリケーションされ得る。もちろん、ネットワーク８００および６００を介したデータのリモート・レプリケーションは、同期的に、または非同期的に実行され得る。
【００９９】
原理上、多数のレガシーのデータ・ストレージ・システムに対して、第１のサイトにある第２のストレージ装置４００と第２のストレージ装置４００によって管理されるファイル・システム（複数可）のユーザ・データの同期または非同期リモート・レプリケーション用のリモート・ストレージ装置７００とを有する構成が存在する。図１Ｂに関連して上で説明されているような第１のストレージ装置３００を相互接続した後に、第１のストレージ装置３００は、第２のストレージ装置４００によって管理されるファイル・システム（複数可）の仮想化を実行するが、マイグレーション・フェーズが開始するまでユーザ・データを実際にはマイグレーションしない。
【０１００】
例示的な一実施形態によれば、マイグレーションなしの仮想化フェーズにおいて、書き込みアクセス、属性変更ユーザ・アクセス、新規ファイルおよびディレクトリの作成、名前変更の操作などのすべてのデータ修正ユーザ要求を含む、クライアント１００によるファイル・システム（複数可）へのすべてのユーザ・アクセスが、第２のストレージ装置４００にパススルーされ、第２のストレージ・システム４００は、ファイル・システム（複数可）の現在の（標準的な）バージョンを管理し続ける。そのような実施形態において、ファイル・システム（複数可）の標準的なデータ・バージョンは第２のストレージ装置４００上に完全に保持され、ストレージ装置９００に同期または非同期方式でレプリケーションされ、リモート・ストレージ装置９００は、後で接続され得るので、クライアント１００によるファイル・システム（複数可）へのすべてのデータ修正ユーザ・アクセスが第２のストレージ装置４００にパススルーされる限り、第１のストレージ装置３００からリモート・ストレージ装置９００へのデータ・レプリケーションを実行する必要はない。
【０１０１】
しかしながら、マイグレーションが、仮想化中に（またはその後に）すでに開始されており、完全にマイグレーションされていて、第１のストレージ装置３００上に完全に保持されるファイル・システム・オブジェクトに対して、ならびに／または第１のストレージ装置３００によって管理されているファイル・システム（複数可）においてのみ実行されている新規ファイルおよび／もしくは新規ディレクトリの作成に対して修正ユーザ・アクセスがもはや第２のストレージ装置４００にパススルーされない、いくつかの他の実施形態において、すなわち、ファイル・システムが異なり始め得るときに、リモート・ストレージ装置９００への追加のデータ・レプリケーションは、少なくとも、完全にマイグレーションされていて、第１のストレージ装置３００上に完全に保持されるファイル・システム・オブジェクトに対して、ならびに／または新規作成されたファイルおよび／もしくは新規作成されたディレクトリに対して望ましいものとなり得る。
【０１０２】
同様に、上記の構成すべてにおいて、データのバックアップに関して、ファイル・システム（複数可）のまだ標準的であるバージョンが第２のストレージ装置４００上にまだ保持され、第２のストレージ装置４００のストレージ・ユニット４２０からバックアップ・ストレージ・ユニット４３０への標準的なバージョンのバックアップが実行されるときに、クライアント１００によるファイル・システム（複数可）へのすべてのデータ修正ユーザ・アクセスが第２のストレージ装置４００にパススルーされる限り、第１のストレージ装置３００のストレージ・ユニット３２０からバックアップ・ストレージ・ユニット３００へのデータ・バックアップを実行する必要はない。
【０１０３】
しかしながら、マイグレーションが、仮想化中に（またはその後に）すでに開始されており、完全にマイグレーションされていて、第１のストレージ装置３００上に完全に保持されるファイル・システム・オブジェクトに対して、ならびに／または第１のストレージ装置３００によって管理されているファイル・システム（複数可）においてのみ実行されている新規ファイルおよび／もしくは新規ディレクトリの作成に対して修正ユーザ・アクセスがもはや第２のストレージ装置４００にパススルーされない、いくつかの他の実施形態において、すなわち、ファイル・システムが異なり始め得るときに、リモート・ストレージ・ユニット３３０への追加のデータ・バックアップは、少なくとも、完全にマイグレーションされていて、第１のストレージ装置３００上に完全に保持されるファイル・システム・オブジェクトに対して、ならびに／または新規作成されたファイルおよび／もしくは新規作成されたディレクトリに対して望ましいものとなり得る。
【０１０４】
図２は、ファイル・システム管理ユニット３１０の構造の概略図を例示的に示している。ファイル・システム管理ユニット３１０は、ネットワーク２００を介して複数のホスト・デバイス（クライアント・コンピュータ１００などの）に接続するための複数のホスト・インターフェース３１１ａから３１１ｇを備えるホスト・インターフェース・ユニット３１１と、ストレージ・ユニット３２０および３３０の複数のストレージ・デバイスに接続するための複数のストレージ・インターフェース３１３Ａから３１２ｇを備えるストレージ・インターフェース・ユニット３１２とを具備する。それに加えて、ファイル・システム管理ユニット３１０は、１つまたは複数の中央演算処理装置と、管理データを含む処理に使用されるデータを一時的に記憶するためのメモリ・ユニット３１４と、アプリケーション・データおよび管理データを記憶するためのストレージ・デバイス３１５とを備える処理ユニット３１３を具備する。
【０１０５】
図３は、ハードウェア、ソフトウェア、またはこれらの組合せによって実現され得る、ファイル・システム管理ユニット３１０の仮想化およびマイグレーション・ユニット３４０の概略機能図を例示的に示している。
【０１０６】
仮想化およびマイグレーション・ユニット３４０は、仮想化管理データおよびマイグレーション管理データ（メモリ・ユニット３１４および／またはストレージ・デバイス３１５に記憶されている）を管理するための仮想化管理情報テーブル３４１と、仮想化管理データおよびマイグレーション管理データの（ストレージ・デバイス３１５および／またはストレージ・ユニット３２０および／または３３０への）バックアップを実行するための仮想化管理情報バックアップ・ユニット３４２とを備える。
【０１０７】
通信目的に関して、仮想化およびマイグレーション・ユニット３４０は、クライアント１００からアクセス要求を受信し、クライアント１００からのアクセス要求に応答するためのクライアント通信ユニット３４８Ａを有する通信ユニット３４８と、アクセス要求を第２のストレージ装置４００のファイル・システム管理ユニット４１０に発行し、第２のストレージ装置４００のファイル・システム管理ユニット４１０から応答を受信するためのファイル・システム通信ユニット３４８Ｂとを備える。
【０１０８】
仮想化およびマイグレーションを実行するため、仮想化およびマイグレーション・ユニット３４０は、第２のストレージ装置４００のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）のファイルのツリー構造を自動的にクローリング（観察）し、第２のストレージ装置４００のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）内で発見されたファイル・システム・オブジェクトの仮想化を命令する仮想化ジョブを作成するためのクローリング・ユニット３４３を備える。
【０１０９】
仮想化およびマイグレーション・ユニット３４０は、クローリング・ユニット３４３によって発見されたファイル・システム・オブジェクトを仮想化する仮想化ジョブを実行し、仮想化されたファイル・システム・オブジェクトのマイグレーションを命令するマイグレーション・ジョブを作成するための仮想化ユニット３４４と、仮想化ユニット３４４によって仮想化されたファイル・システム・オブジェクトをマイグレーションするマイグレーション・ジョブを実行するためのマイグレーション・ユニット３４５とをさらに備える。
【０１１０】
仮想化およびマイグレーション・ユニット３４０は、ファイル・システムのクローリング、ファイル・システム・オブジェクトの仮想化、およびファイル・システム・オブジェクトのマイグレーションに対するジョブをその後記憶するための複数のジョブ・キュー３４６Ａ、３４６Ｂ、および３４６Ｃをさらに備える。
【０１１１】
例えば、第１のジョブ・キュー３４６Ａは、ディレクトリ情報ジョブを保持し、第２のジョブ・キュー３４６Ｂは、仮想化ジョブを保持し、第３のジョブ・キュー３４６Ｃは、マイグレーション・ジョブを保持し得る。すなわち、仮想化およびマイグレーションは、ジョブ・キュー３４６Ａ内に保持されているジョブに基づきファイル・システムのクローリングを行い（クローリング・ユニット３４３）、ジョブ・キュー３４６Ｂ内に保持されているジョブに基づきファイル・システム・オブジェクトの仮想化を行い（仮想化ユニット３４４）、ジョブ・キュー３４６Ｃ内に保持されているジョブに基づきファイル・システム・オブジェクトのマイグレーションを行う（マイグレーション・ユニット３４５）ための異なるユニットが用意されるという点においてマルチスレッドおよび／または並列化方式で実行され得る。
【０１１２】
上述のユニットは、クローリング・ユニット３４３が、ジョブ・キュー３４６Ａから取り出された複数のクローリング・ジョブ（例えば、以下でさらに説明されているようなディレクトリ情報ジョブ）を並列に実行するように適合され、仮想化ユニット３４４が、ジョブ・キュー３４６Ｂから取り出された複数の仮想化ジョブを並列に実行するように適合され、マイグレーション・ユニット３４５が、ジョブ・キュー３４６Ｃから取り出された複数のマイグレーション・ジョブを並列に実行するように適合され得るという点においてマルチスレッド化されているものとしてよい。
【０１１３】
しかしながら、本発明は、上で説明されているような３つのキューの使用に限定されず、ディレクトリ情報ジョブ、仮想化ジョブ、およびマイグレーション・ジョブの各々に対する複数のジョブ・キュー、または例えば、ディレクトリ情報ジョブ、仮想化ジョブ、およびマイグレーション・ジョブのすべてに対して１つのキューが用意されるという点において３つよりも少ないキューが用意され得る。キューがただ１つである後者の場合において、クローリング・ユニット３４３、仮想化ユニット３４４、およびマイグレーション・ユニット３４５は、単一のジョブ・キューから取り出された複数のジョブを実行するように適合され、すべての新規作成されたジョブ（同じキューへのディレクトリ情報ジョブ、仮想化ジョブ、およびマイグレーション・ジョブを含む）を追加する単一のマルチスレッド・ユニットとして実現され得る。
【０１１４】
「ディレクトリ情報ジョブ」は、クローリング・ユニット３４３によって発見された第２のストレージ装置４００のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）の特定のディレクトリに関連付けられたジョブであり、この「ディレクトリ情報ジョブ」は第２のストレージ装置４００のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）の特定のディレクトリ内のファイル・システム・オブジェクト（サブディレクトリおよびファイルを含む）を観察することをクローリング・ユニット３４３に命令する。
【０１１５】
「仮想化ジョブ」は、クローリング・ユニット３４３によって発見された第２のストレージ装置４００のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）の特定のファイル・システム・オブジェクト（ファイルまたはディレクトリなど）に関連付けられたジョブであり、「仮想化ジョブ」は第１のストレージ装置３００上で特定のファイル・システム・オブジェクトを仮想化することを仮想化ユニット３４４に命令する。
【０１１６】
基本的に、クローリング・ユニット３４３によって発見されたディレクトリの仮想化は、対応するディレクトリ（同じ名前を有する）が第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム（複数可）内に作成されることを意味するが、クローリング・ユニット３４３によって発見されたファイルまたは類似のオブジェクト（ハード・リンクされたファイルなど）の仮想化は、外部リンク・オブジェクト（以下ではＸＬＯと略される）と称される仮想オブジェクトが、対応するファイルを有する第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）のディレクトリに対応する第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム（複数可）のディレクトリ内に作成されることを意味する。
【０１１７】
「外部リンク・オブジェクト」は、ファイルまたは類似のオブジェクト（ハード・リンクされたファイルなど）に関連付けられている第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム（複数可）内に存在するオブジェクトである。「外部リンク・オブジェクト」は、対応するファイルの実際のユーザ・データを記憶しないが、第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）内の対応するファイルへの外部参照を含む。第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム（複数可）の「外部リンク・オブジェクト」が第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム（複数可）内の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）の対応するファイルを表し、対応するファイルへのアクセスを可能にする。
【０１１８】
「外部リンク・オブジェクト」は、少なくとも、第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）内の対応するファイルに使用されるリモート・オブジェクトＩＤに関する情報および第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）内のファイルのリモート・パスに関する情報を含み得る。
【０１１９】
「マイグレーション・ジョブ」は、仮想化ユニット３４４によって仮想化された第２のストレージ装置４００のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）の特定のファイルまたは類似のオブジェクト（ハード・リンクされたファイルなど）に関連付けられたジョブであり、「マイグレーション・ジョブ」は特定のファイルまたは類似のオブジェクトを第１のストレージ装置３００にマイグレーションすることをマイグレーション・ユニット３４５に命令する。すなわち、マイグレーション・ジョブを実行して特定のファイルをマイグレーションすることをマイグレーション・ユニット３４５に命令することによって、実際のユーザ・データはファイルコンテンツとして第１のストレージ装置３００に転送されストレージ・ユニット３２０に記憶される。
【０１２０】
ジョブが、ジョブ・キューがジョブで占有されている間に作成される場合、ジョブ・キュー３４６Ａから３４６Ｃのうちの１つまたは複数が占有されるときにディレクトリ情報ジョブ、仮想化ジョブ、およびマイグレーション・ジョブを一時的に記憶するためのバッファ・ユニット３４７が用意されている。ジョブが、バッファ・ユニット３４７によって保持されるときに、それらのジョブは、別のジョブが実行され、ジョブ・キューから取り除かれた後、それぞれのジョブ・キューに加えられる。
【０１２１】
「仮想化」、「マイグレーション」、「外部リンク・オブジェクト」、「ディレクトリ情報ジョブ」、「仮想化ジョブ」、および「マイグレーション・ジョブ」という用語に関連したさらなる例示的な詳細は、以下のより詳細な説明および例の説明において明らかになる。
【０１２２】
図４は、図１Ａおよび図１Ｂの第２のファイル・システム管理ユニット４１０によって例示的に管理されているようなファイル・システムのファイル・システム・ツリー構造の一例を示している。特に、第２のファイル・システム管理ユニット４１０によって管理され、図１Ａのストレージ・ユニット４２０に記憶されているファイル・システムは、第２のストレージ装置４００の接続を切断し、第１のファイル・システム管理ユニット３１０によって管理されるべき第１のストレージ装置３００上でファイル・システムの仮想化を開始する前に第１のストレージ装置３００を相互接続するときに、図４の構造を有すると例示的に仮定される。
【０１２３】
図４の例示的なファイル・システムは、最上位のディレクトリ／ｒｏｏｔおよび複数のサブディレクトリを有する。特に、子ディレクトリ／ｄｉｒ１および／ｄｉｒ２は、ファイル「ｆｉｌｅ１」および「ｆｉｌｅ２」に加えて／ｒｏｏｔディレクトリ内に存在する。すなわち、／ｒｏｏｔディレクトリは、子ディレクトリ／ｄｉｒ１および／ｄｉｒ２の親ディレクトリを表す。ディレクトリ／ｄｉｒ１は、子ディレクトリ／ｄｉｒ１１および／ｄｉｒ１２を有し、ディレクトリ／ｄｉｒ２は、１つの子ディレクトリ／ｄｉｒ２１およびファイル「ｆｉｌｅ３」を有する。ディレクトリ／ｄｉｒ１１の子ディレクトリ／ｄｉｒ１１１には、ファイル「ｆｉｌｅ９」および「ｆｉｌｅ１０」が存在する。さらに、ファイル「ｆｉｌｅ４」は、ディレクトリ／ｄｉｒ１１に記憶され、ファイル「ｆｉｌｅ５」および「ｆｉｌｅ６」は、ディレクトリ／ｄｉｒ１２内に存在する。最後に、ディレクトリ／ｄｉｒ２１は、「ｆｉｌｅ７」および「ｆｉｌｅ８」を有する。
【０１２４】
第１のストレージ装置３００が、例えば図１Ｂ、１Ｃ、または１Ｄに示されているようにクライアント１００と第２のストレージ装置４００との間に相互接続された後、第２のファイル・システム管理ユニット４１０によって管理され、図１Ａのストレージ・ユニット４２０に記憶されているファイル・システムの仮想化は、初期仮想化パスが作成されると直ちに開始されるものとしてよく、その仮想化パスは、第１のストレージ装置３００の第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内の１つの新規作成されたディレクトリ（例えば、最上位のディレクトリ）を仮想化されおよび／またはマイグレーションされるべき第２のストレージ装置４００の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムの部分の最上位のディレクトリに関連付ける。
【０１２５】
例えば、第１のストレージ装置３００上に以前のファイル・システムが存在していない場合、新規の最上位のディレクトリ／ｒｏｏｔが、第１のストレージ装置３００の第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内に作成され、新規に確立された仮想パスによって第２のストレージ装置４００の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムの最上位のディレクトリ／ｒｏｏｔに関連付けられ、その結果、／ｒｏｏｔよりも下位であるディレクトリを有するすべてのファイル・システム・オブジェクトのツリー構造の仮想化が行われ得る。
【０１２６】
図５は、図４のツリー構造に基づく仮想化されたファイル・システムのツリー構造の一例を示しており、そこでは、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システムの最上位のディレクトリ／ｒｏｏｔは、第１の仮想パス＜ストレージ装置３００＞：／ｒｏｏｔ  −＞  ＜ストレージ装置４００＞：／ｒｏｏｔに従って第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムの最上位のディレクトリ／ｒｏｏｔに関連付けられている。
【０１２７】
第１の仮想化パスにより第２のファイル・システム管理ユニット４１０のファイル・システムの完全な仮想化の後、第１のファイル・システム管理ユニット４１０は、図５によるツリー構造を有するファイル・システムを管理し、そこでは、第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムのディレクトリ／ｄｉｒ１、／ｄｉｒ２、／ｄｉｒ１１、／ｄｉｒ１２、／ｄｉｒ２１、および／ｄｉｒ１１１の各々が、第１のファイル・システム管理ユニット３１０によって管理されているようなファイル・システムにおいても作成されており、このファイル・システムはディレクトリ／ｄｉｒ１および／ｄｉｒ２が最上のディレクトリ／ｒｏｏｔの子ディレクトリとして作成され、ディレクトリ／ｄｉｒ１１および／ｄｉｒ１２がディレクトリ／ｄｉｒ１の子ディレクトリとして作成され、というように続く点において同じツリー構造を有する。
【０１２８】
しかしながら、ファイル（およびハード・リンクされたファイルなど類似のオブジェクト）に関しては、第１のストレージ装置３００内の第１のファイル・システム管理ユニット３１０によって管理されるファイル・システムは、仮想化の後に実際のファイルを有しないが、第２のストレージ装置３００内の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムの各ファイルに対してそれぞれの外部リンク・オブジェクトＸＬＯを有する。
【０１２９】
したがって、仮想化が完了した後、第２のストレージ装置４００内の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムのそれぞれのファイルｆｉｌｅ１、ｆｉｌｅ２、ｆｉｌｅ３、ｆｉｌｅ４、ｆｉｌｅ５、ｆｉｌｅ６、ｆｉｌｅ７、ｆｉｌｅ８、ｆｉｌｅ９、およびｆｉｌｅ１０の代わりに、外部リンク・オブジェクトＸＬＯ１、ＸＬＯ２、ＸＬＯ３、ＸＬＯ４、ＸＬＯ５、ＸＬＯ６、ＸＬＯ７、ＸＬＯ８、ＸＬＯ９、およびＸＬＯ１０が、第１のストレージ装置３００内の第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内に存在する。第１のファイル・システム内の外部リンク・オブジェクトは、クライアントにファイルとして提示される、すなわち、クライアントは第１のファイル・システム内の外部リンク・オブジェクトを見ることはできないが、実際のファイル名、例えば、「ｆｉｌｅ１」、「ｆｉｌｅ２」、「ｆｉｌｅ３」、「ｆｉｌｅ４」、「ｆｉｌｅ５」、「ｆｉｌｅ６」、「ｆｉｌｅ７」、「ｆｉｌｅ８」、「ｆｉｌｅ９」、および「ｆｉｌｅ１０」が見える。それぞれの外部リンク・オブジェクトの各々は、それぞれのファイルを有する第２のストレージ装置４００内の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムのそれぞれのディレクトリに対応する第１のストレージ装置３００内の第１のファイル・システム管理ユニット３１０によって管理されるファイル・システムのディレクトリ内に存在する。
【０１３０】
例えば、ｆｉｌｅ１０は、第２のストレージ装置４００内の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム内のリモート・パス／ｒｏｏｔ／ｄｉｒ１／ｄｉｒ１１／ｄｉｒ１１１／ｆｉｌｅ１０内に存在しているが、対応する外部リンク・オブジェクトＸＬＯ１０は、第１のストレージ装置３００の第１のファイル・システム管理ユニット３１０内の対応するローカル・パス／ｒｏｏｔ／ｄｉｒ１／ｄｉｒ１１／ｄｉｒ１１１／ＸＬＯ１０内に存在し、ＸＬＯ１０はｆｉｌｅ１０を表し、ユーザがアクセス要求を用いて第１のストレージ装置３００のファイル・システム内のｆｉｌｅ１０にアクセスすることを試みたときにｆｉｌｅ１０への外部アクセスを許す。すなわち、好ましくは、ローカル・パス名は、リモート・パスと同じであり、クライアントの観点から、仮想化された第１のファイル・システムは、第２のファイル・システムから区別できないものとしてクライアントには見えている。
【０１３１】
図６Ａは、ファイル（またはハード・リンクされたファイル）に対する外部リンク・オブジェクト１１００の例示的な概略データ構造を示している。外部リンク・オブジェクト１１００は、例示的に、外部ファイル・システム内で使用されているような名前、外部ファイル・システム内のファイルのリモート・パス・ロケーション、外部ファイル・システム内で使用されているようなリモート・オブジェクトＩＤ、外部ファイル・システム内で使用されているようなリモートＩｎｏｄｅ番号、外部ファイル・システムのリモート・ファイル・システムＩＤ（例えば、複数のファイル・システムが第２のファイル・システム管理ユニット４１０によって処理される場合）、およびファイル・データコンテンツが記憶されるストレージ・ユニット４２０のデバイスを示すリモート・デバイスＩＤを含む第２のファイル・システム管理ユニット４１０によって管理されるような外部ファイル・システムに関するファイルに関するメタデータを有する第１の情報セクション１１１０を備える。
【０１３２】
それに加えて、第１の情報セクション１１１０は、例示的に、第２のストレージ装置４００内の第２のファイル・システム管理ユニット４１０によって管理されるような外部（リモート）ファイル・システム内のファイルのユーザ・データの論理的な長さ（データ・サイズ、ファイルコンテンツ）を示す、ファイルのリモート長をさらに含む。ファイルの長さは、バイトおよびキロバイトなどの記憶単位またはブロック数の単位で与えられ得る（ただし、データを第２のストレージ装置４００内の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムに記憶するためのデータ・ブロックの実際のデータ・サイズが知られているか、または登録されている場合）。
【０１３３】
名前およびリモート・パス・ロケーションおよび／またはリモート・オブジェクトＩＤを参照することによって、外部リンク・オブジェクトは、ユーザが外部ファイル・システム内で使用されているような名前およびリモート・パス・ロケーションおよび／またはリモート・オブジェクトＩＤを参照するアクセス要求によってファイルにアクセスすることを試みるときに、外部ファイル・システム内のファイルへのアクセスを可能にする。
【０１３４】
外部リンク・オブジェクト１１００は、例示的に、ローカル・ファイル・システム内で使用されているような名前、内部ファイル・システム内の外部ファイル・オブジェクトのローカル・パス・ロケーション、内部ファイル・システム内で使用されているようなローカル・オブジェクトＩＤ、内部ファイル・システム内で使用されているようなローカルＩｎｏｄｅ番号、内部ファイル・システムのローカル・ファイル・システムＩＤ（例えば、複数のファイル・システムが第１のファイル・システム管理ユニット３１０によって処理される場合）、およびファイル・データコンテンツが記憶されるか、またはデータ・ブロックがデータの後からのマイグレーションのためにすでに割り当てられているものとしてよい、ストレージ・ユニット３２０のデバイスを示すローカル・デバイスＩＤを含む第１のファイル・システム管理ユニット３１０によって管理されるような内部（ローカル）ファイル・システムに関するファイルに関するメタデータを有する第２の情報セクション１１２０をさらに備える。
【０１３５】
それに加えて、第２の情報セクション１１２０は、ストレージ・ユニット４２０にすでに転送され記憶されている記憶済みのファイルコンテンツデータのサイズに対応するオブジェクト・ストア長を示し得る（すなわち、ファイルのオブジェクト・ストア長が外部ファイル・システム上のファイルの長さに対応するときに、このことは実際のファイルコンテンツのすべてのデータが完全にマイグレーションされていることを意味する）。マイグレーションを開始する前に、転送される実際のファイルコンテンツデータはないので、オブジェクト・ストア長は、仮想化時にはゼロのままである。オブジェクト・ストア長は、バイトまたはキロバイトなどの記憶単位またはブロック数の単位で与えられ得る。
【０１３６】
それに加えて、第２の情報セクション１１２０は、第１のストレージ装置３００内の第１のファイル・システム管理ユニット３１０によって管理されるような内部（ローカル）ファイル・システム内のファイルのユーザ・データの論理的な長さ（データ・サイズ、ファイルコンテンツ）を示す、リモート・ファイルの論理的な長さに等しいものとしてよい、ファイルのローカル長を示し得る。ファイルのローカル長は、バイトおよびキロバイトなどの記憶単位またはブロック数の単位で与えられ得る（もちろん、データを第１のファイル・システム管理ユニット３１０によって管理されるファイル・システムに記憶するためのデータ・ブロックの実際のデータ・サイズが知られているが、ただし、外部ファイル・システム管理と外部ファイル・システム管理とではブロック・サイズが異なり得ることに留意されたい）。
【０１３７】
上述の「ファイルのローカル長」および「オブジェクト・ストア長」に関して、「ファイルのローカル長」は、ストレージ・ユニット３２０上のファイルによって論理的に占有される記憶領域の量を示し、「オブジェクト・ストア長」は、ファイルのユーザ・データのうちどれだけがストレージ・ユニット３２０にマイグレーションされているかを示すことに留意されたい。
【０１３８】
上記において、ローカルの「ファイルの長さ」は、第１のファイル・システム内のファイルの論理的なファイル長を表し、以下の説明におけるリモート「ファイルの長さ」は、第２のファイル・システム内のファイルの論理的なファイル長を表し、ローカル・オブジェクト・ストア長は、ローカル・オブジェクト・ストア長がマイグレーションされるべき次のデータ・マイグレーション・ブロックのオフセットを示すという点においてファイルに対するデータ・マイグレーションの進捗を示すために使用され得ることに留意されたい。ファイルが第１のファイル・システムに完全にマイグレーションされているかどうか（すなわち、第１のファイル・システムによって完全に所有されているかどうか）を検出することは、リモート「ファイルのローカル長」とローカル「オブジェクト・ストア長」とを比較することによって実行されるものとしてよく、ローカル「ファイルの論理的な長さ」は、使用される必要はない。
【０１３９】
「ファイルのローカル長」および「オブジェクト・ストア長」は、等しいサイズであってもよいが、それらのパラメータは状況に応じて異なることもあり得ることに留意されたい。例えば、１００ｋＢのデータコンテンツのファイルが、ストレージ・ユニット３２０にマイグレーションされるものとする場合、ファイルのデータコンテンツが、例えば、１００ｋＢのコンテンツ全体が完全にマイグレーションされてしまうまで４つのブロックが最終的に連続的にマイグレーションされるように２５ｋＢのブロックで転送され得る。２５ｋＢの第１のブロックを受信し、受信された第１のブロックをストレージ・ユニット３２０に書き込むときに、第１のファイル・システム管理ユニット３１０は、ストレージ・ユニット３２０内のファイルコンテンツ全体に対して１００ｋＢの記憶領域をすでに割り振ることができ、第１のブロックのコンテンツを割り振られた記憶領域に書き込んだ後、それぞれの「オブジェクト・ストア長」は、サイズ２５ｋＢとなるが、それぞれの「ファイルの長さ」は、すでに１００ｋＢに達する。
【０１４０】
外部リンク・オブジェクト１１００は、例示的に、現在のタイム・スタンプ（ファイルへの最後の修正アクセスの時刻を示す）、ファイルのリンク・カウント、ファイルの長さ（外部ファイル・システム内の、すなわち、セクション１１１０のファイルのリモート長に対応する）、およびさらなるファイル属性を含むファイルの属性に関するメタデータを有する第３の情報セクション１１３０をさらに備える。ファイル属性は、第３の情報セクション１１３０内に外部リンク・オブジェクトとともに記憶されるので、クライアント１００を介してユーザから送信された属性要求は、外部リンク・オブジェクトが作成されるとすぐに、すなわち、ファイルが仮想化されるとすぐに、第１のファイル・システム管理ユニット３１０によってローカルで、都合よく、効率的に処理され得る。
【０１４１】
図６Ｂは、仮想化されたディレクトリに対するメタデータの例示的な概略データ構造１２００を示している。ディレクトリ・メタデータ１２００は、例示的に、外部ファイル・システム内で使用されているような名前、外部ファイル・システム内のディレクトリのリモート・パス・ロケーション、外部ファイル・システム内で使用されているようなリモート・オブジェクトＩＤ、外部ファイル・システム内で使用されているようなリモートＩｎｏｄｅ番号、外部ファイル・システムのリモート・ファイル・システムＩＤ（例えば、複数のファイル・システムが第２のファイル・システム管理ユニット４１０によって処理される場合）、およびディレクトリが記憶されるストレージ・ユニット４２０のデバイスを示すリモート・デバイスＩＤを含む外部ファイル・システムに関するディレクトリに関するメタデータを有する第１の情報セクション１２１０を備える。
【０１４２】
ディレクトリ・メタデータ１２００は、例示的に、ローカル・ファイル・システム内で使用されているような名前、内部ファイル・システム内のディレクトリのローカル・パス・ロケーション、内部ファイル・システム内で使用されているようなローカル・オブジェクトＩＤ、内部ファイル・システム内で使用されているようなローカルＩｎｏｄｅ番号、内部ファイル・システムのローカル・ファイル・システムＩＤ（例えば、複数のファイル・システムが第１のファイル・システム管理ユニット３１０によって処理される場合）、およびディレクトリが記憶されるストレージ・ユニット３２０のデバイスを示すローカル・デバイスＩＤを含む第１のファイル・システム管理ユニット３１０によって管理されるような内部（ローカル）ファイル・システムに関するディレクトリに関するメタデータを有する第２の情報セクション１２２０をさらに備える。
【０１４３】
ディレクトリ・メタデータ１２００は、例示的に、現在のタイム・スタンプ（ディレクトリへの最後の修正アクセスの時刻を示す）、ディレクトリの実リンク・カウント、ディレクトリのフェイク・リンク・カウント、およびさらなるディレクトリ属性を含むディレクトリの属性に関するメタデータを有する第３の情報セクション１２３０をさらに備える。ディレクトリ属性は、第３の情報セクション１２３０内にディレクトリ・メタデータとともに記憶されるので、クライアント１００を介してユーザから送信された属性要求は、ディレクトリおよびそのメタデータが作成されるとすぐに、すなわち、ディレクトリが仮想化されるとすぐに、第１のファイル・システム管理ユニット３１０によってローカルで、都合よく、効率的に処理され得る。
【０１４４】
ディレクトリのリンク・カウント（実リンク・カウントおよびフェイク・リンク・カウント）の属性に関して、フェイク・リンク・カウントは、それぞれのディレクトリが仮想化され、その子ディレクトリのすべても仮想化された後にゼロに等しいパラメータであるが、子ディレクトリのすべてがまだ仮想化されてしまっていない仮想化されたディレクトリについて（すなわち、外部ファイル・システム内のそれぞれのディレクトリの少なくとも１つの子ディレクトリがローカル・ファイル・システムのそれぞれのディレクトリ内の対応するディレクトリをまだ有していない場合）、フェイク・リンク・カウントは、非ゼロとなり、リンク・カウント属性要求に応答してユーザに返されるべきリンク・カウントは、上記の実リンク・カウントとフェイク・リンク・カウントとの総和であることに留意されたい。
【０１４５】
特に、第１のストレージ装置３００上のローカルに仮想化されたディレクトリのリンク・カウントに関係する属性要求を確実に、効率的に、正しく処理できるようにするために、仮想化の際にディレクトリを作成するときに、自己参照リンクがそれぞれのディレクトリ内に作成され、フェイク・リンク・カウントが計算されてディレクトリ・メタデータに書き込まれ、親ディレクトリ・リンクが作成され、親ディレクトリのメタデータ内のフェイク・リンク・カウントが１だけデクリメントされる。
【０１４６】
したがって、それぞれの親ディレクトリ内に特定のディレクトリを作成するときに、親ディレクトリの内側の特定のディレクトリへのリンクは、ディレクトリ作成を用いて自動的に作成され、自己参照リンク（シングル・ドット・リンクまたは／．など）が作成され、結果として実際のリンク・カウントは２となるが（親ディレクトリ・リンク／．．を有する子ディレクトリがまだ作成されていないので）、第２のファイル・システム管理ユニット４１０によって管理されるようなファイル・システム内の対応するディレクトリの基礎をなす実際のリンク・カウントは実際にはＮ＋２となり、Ｎは特定のディレクトリの子ディレクトリの個数である。
【０１４７】
したがって、フェイク・リンク・カウントは、例えば、特定のディレクトリの実リンク・カウントを第２のファイル・システム管理ユニット４１０に要求し、２を差し引くことによって、第２のファイル・システム管理ユニット４１０によって管理されるようなファイル・システム内の特定のディレクトリの子ディレクトリの個数Ｎに基づいて計算され、ディレクトリ・メタデータに書き込まれ得る。次いで、ユーザが特定のディレクトリのリンク番号を要求したときに、第１のファイル・システム管理ユニット３１０は、第１のファイル・システム管理ユニット３１０によって管理されるようなファイル・システム上で観察されるような実リンク・カウントと、ディレクトリ・メタデータに記憶されているようなフェイク・リンク・カウントとを単に加算することによって、また実リンク・カウントとフェイク・リンク・カウントとの総和を返すことによって第２のストレージ装置４００とのさらなる通信を必要とすることなくローカルで要求を効率的に処理することができる。
【０１４８】
上記の手順について、仮想化されたディレクトリのメタデータに記憶されているフェイク・リンク・カウントは、その子ディレクトリが自らの仮想化を目的として作成されるときには必ず更新される必要がある。
【０１４９】
図７は、図４のファイル・システムのツリーの仮想化が完了した後の仮想化管理情報テーブル３４１の一例を示している。このテーブルは、４つのデータ・ブロック３４１ａから３４１ｄに例示的に分割されており、図４のファイル・システムのツリー構造のファイル・システム・オブジェクトの各々について１つのエントリを収容する。仮想化管理情報テーブル３４１は、仮想化管理情報テーブル３４１内の更新されたデータがブロックでバックアップされるバックアップ・プロセスを実行できるようにブロック３４１ａから３４１ｄに記憶される、すなわち、仮想化管理情報バックアップ・ユニット３４２は、メモリ３１４に記憶されているブロック３４１ａから３４１の各々のバックアップ・コピーを繰り返し、連続的に作成し、次いで、バックアップ・コピーをブロック毎にストレージ・デバイス３１５にコピーする。バックアップ目的で１つの特定のブロックがコピーされるときに、ブロックは、ユニット３４３、３４４、および３４５によって更新され得ず、他のすべてのブロックはアクセス可能なままである。
【０１５０】
例示的に、図２４のテーブル３４１で示されているファイル・オブジェクトの各々は、それぞれの外部リンク・オブジェクトが図５の構造に従って第２のファイル・システム管理ユニット４１０によって管理されるようなファイル・システムのファイルの各々について存在することを示す仮想化ステータス「ｖｉｒｔｕａｌｉｚｅｄ」を有し、各ファイル・オブジェクトは、実際のファイルコンテンツデータは第２のストレージ装置４００のストレージ・ユニット４２０から第１のストレージ装置３００のストレージ・ユニット３２０にまだマイグレーションされていないことを示すオブジェクト・ステータス「ｎｅｅｄｓ  ｍｉｇｒａｔｉｏｎ」を有する。
【０１５１】
図７のテーブル３４１で示されているディレクトリの各々は、同じ名前のそれぞれのディレクトリが図４および５の両方のツリー構造に従って第２のファイル・システム管理ユニット４１０によって管理されるようなファイル・システムのディレクトリの各々について存在することを示す仮想化ステータス「ｖｉｒｔｕａｌｉｚｅｄ」を有し、各ディレクトリ・オブジェクトは、そのすべての子オブジェクトも仮想化されていることを示すオブジェクト・ステータス「Ｃｏｍｐｌｅｔｅ」を有する。
【０１５２】
次いで、マイグレーションの第２のフェーズにおいて、クローリング・ユニット３４３は、仮想化管理情報テーブル３４１全体を再ウォーキングして、ジョブ・キュー３４６Ｃに追加されるべき「ｎｅｅｄｓ  ｍｉｇｒａｔｉｏｎ」として示されている各ファイル・オブジェクトについてそれぞれのマイグレーション・ジョブを作成することができ、それにより、マイグレーション・ユニット３４５は、連続的に、１つまたは複数のマイグレーション・ジョブ（例えば、マルチスレッド・マイグレーション・ユニット３４５と並行に）を実行し、実際のファイルコンテンツデータを第１のストレージ装置３００のストレージ・ユニット３２０にマイグレーションし得る。
【０１５３】
代替的に、もちろん、仮想化フェーズの完了前であっても、マイグレーション・フェーズを開始することが可能である。次いで、クローリング・ユニット３４３または仮想化ユニット３４４も、すでに仮想化を行っている間にマイグレーション・ジョブを作成し得る。
【０１５４】
マイグレーションの際にマイグレーション・ユニット３４５によるパス・ウォーキング（path walking）を回避するために、仮想化ユニット３４４によって仮想化の際に発見された第２のファイル・システムのファイルのメタデータはキャッシュ・メモリに記憶されるものとしてよく、これはファイル・ハンドルなどのファイル情報を好ましくは含む。
【０１５５】
図８Ａ、８Ｂ、および８Ｃは、仮想化の初期化およびマイグレーションの初期化のための方法の例示的な流れ図を示している（図８Ａおよび８Ｂまたは図８Ａおよび８Ｃの組合せによる）。この方法は、それに加えて、クライアント１００から第２のストレージ装置３００へのすべてのユーザ／クライアント・アクセスをブロックするステップと（例えば、図１Ａに類似の状況において）、図８ＡのステップＳ１の前の第２のストレージ装置４００とクライアント１００との間で第１のストレージ装置３００を相互接続するステップとを含み得る。
【０１５６】
仮想化の初期化およびマイグレーションの初期化を行うための方法は、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内に最上位のディレクトリを作成するステップＳ２と、ステップＳ２で作成された最上位のディレクトリを仮想化されるべき第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムの部分の最上位のディレクトリ（例えば、図４に関して例示されているような最上位のディレクトリまたは下位のディレクトリのうちの１つ）に関連付ける仮想化パスを作成（設定）するステップＳ１とを含む。
【０１５７】
さらに、仮想化の初期化を行うための方法は、ステップＳ２で設定された最上位のディレクトリに対するディレクトリ情報ジョブを作成するステップＳ４を含む。この方法は、自動バックグラウンド仮想化を可能にするステップＳ５と、ステップＳ７で第１のストレージ装置３００へのクライアント・アクセスを直接的に可能にする前にユーザ・アクセス依存のオンデマンド仮想化を可能にする別のステップＳ６をさらに含む。ステップＳ１からＳ７の順序は、ステップＳ５およびＳ６がステップＳ１およびＳ２の後に実行され、ステップＳ７がステップＳ６の後に実行されることを条件として、複数の異なる方式で交換され得ることに留意されたい。
【０１５８】
最も重要なのは、第２のストレージ装置が相互接続され、仮想化パスが設定され（ステップＳ１）、オンデマンド仮想化が有効化される（ステップＳ６）とすぐに、ファイル・システムへのユーザ・アクセスが可能にされ得る（ステップＳ７）ということである。特に、ユーザが、ファイル・システム内のまだ仮想化されていないファイル・システム・オブジェクトにアクセスすることを試みるとすぐに、それぞれのファイル・システム・オブジェクトは、有効化されたオンデマンド仮想化を用いて仮想化され（以下でより詳しく例示的に説明されているように）、それにより仮想化されたファイル・システム・オブジェクトを介してファイル・システム・オブジェクトへのアクセスを可能にし、ユーザがすでに仮想化されているファイル・システム・オブジェクトにアクセスすることを試みた場合、それぞれのファイル・システム・オブジェクトは、それぞれの仮想化されたファイル・システム・オブジェクトを介してアクセスされ得る。
【０１５９】
したがって、上記の態様によるデータ・ストレージ・システムは、自動バックグラウンド仮想化（以下でより詳しく例示的に説明されているような）がすでに始まっていているかどうかに関係なく、また自動バックグラウンド仮想化のステータスに関係なく仮想化パスが作成され、オンデマンド仮想化が有効化されているという条件の下で第１のストレージ装置３００を相互接続した直後にファイル・システムへのユーザ・アクセスを即座に有効化することができる。すなわち、クライアント１００によるファイル・システムへのアクセスは、クライアント１００と第２のストレージ装置４００との間で第１のストレージ装置３００を相互接続するための単一の中断の直後に再び有利に有効化され得る。
【０１６０】
自動バックグラウンド仮想化は、自動的に実行され、その結果、第２のストレージ装置４００の第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム（複数可）のファイルのツリー構造全体が、第１のストレージ装置４００上に完全に仮想化される（すなわち、上の図５に関連して説明されているような仮想化された方式で完全に再構築される）。オンデマンド仮想化は、各ファイル・システム・オブジェクトがユーザによるアクセスを試みられるが、まだ仮想化されておらず、ファイル・システム・オブジェクトが最初に仮想化され、次いでユーザ・アクセスが以下の図１１Ａから１１Ｈに関して次に説明されているように実行されるという点においてユーザ・アクセスに基づき実行される。
【０１６１】
ステップＳ７でクライアント・アクセスを可能にした後、第２のストレージ装置４００のファイル・システム内に存在する完全なファイル・システムのツリー構造が第１のストレージ装置３００のファイル・システム内に仮想化された形で存在するとい点において、すなわち、図４および５における例示的な状況と同様に、第２のストレージ装置４００のファイル・システム内に存在する各ファイルが第１のストレージ装置３００のファイル・システム内に存在する対応する外部リンク・オブジェクトを有し、第２のストレージ装置４００のファイル・システム内に存在する各ディレクトリが第１のストレージ装置３００のファイル・システム内に存在する対応するディレクトリを有するときに、仮想化が終了するまで待つことが可能である。
【０１６２】
次いで、仮想化の終了が確認され（図８ＣのステップＳ８がＹＥＳを返す）、マイグレーションの開始が管理者によって命令されたときに（図８ＣのステップＳ９がＹＥＳを返す）、この方法は図８ＣのステップＳ１０のバックグラウンド・マイグレーションを有効化することを続行する。代替的に、他の実施形態では、ステップＳ９は、スキップされ、バックグラウンド・マイグレーションは、仮想化の終了が確認される（図８ＣのステップＳ８がＹＥＳを返す）とすぐに自動的に有効化され得る（ステップＳ１０）。
【０１６３】
他の実施形態により、マイグレーション・フェーズが上記の実施形態において終了する前に開始されていない間に、マイグレーション・フェーズは、例えば図８Ｂに示されているように仮想化まだ進行中であるときにすでに開始され得る。仮想化およびクライアント・アクセスが可能にされ（図８ＡのステップＳ５、Ｓ８、およびＳ７）、マイグレーションが命令されたときに（図８ＢのステップＳ９がＹＥＳを返す）、この方法は、仮想化が終了しているかいないかに関係なく図８ＢのステップＳ１０においてバックグラウンド・マイグレーションを有効化することを続行する。
【０１６４】
原理上、バックグラウンド・マイグレーションは、次のように開始され得る。バックグラウンド・マイグレーションが有効化されるとすぐに（ステップＳ１０）、クローリング・ユニット３４３は、仮想化管理情報テーブル３４１をウォークスルーし、オブジェクト・ステータス「ｎｅｅｄｓ  ｍｉｇｒａｔｉｏｎ」を有する各ファイルに対してマイグレーション・ジョブを作成し、マイグレーション・ジョブをキュー３４６Ｃに入れることができ、マイグレーション・ユニット３４５は、マイグレーション・ジョブを（例えば、マルチスレッド並行プロセスとして並行して）実行することができる。それに加えて、仮想化手段３４４は、各作成された外部リンク・オブジェクトに対してその作成後にマイグレーション・ジョブを作成し得る。特定のファイルに対するマイグレーション・ジョブを実行するときに、マイグレーション・ユニット３４５は、ファイルのデータコンテンツ全体を第２のストレージ装置４００から第１のストレージ装置に転送する。
【０１６５】
図９Ａは、バックグラウンド・マイグレーション管理の流れ図の例を示している。クローリング・ユニット３４３（またはマイグレーション・ユニット３４５）は、オブジェクト・ステータス「ｎｅｅｄｓ  ｍｉｇｒａｔｉｏｎ」を有するファイルに関係するエントリが存在するかどうかについてステップＳ１００１において仮想化管理情報テーブル３４１をチェックする。そのようなエントリが存在しない場合（ステップＳ１００２がＮＯを返す）、プロセスは終了する（ステップＳ１００３）か、またはステップＳ１００１を後でまた繰り返す。
【０１６６】
しかし、オブジェクト・ステータス「ｎｅｅｄｓ  ｍｉｇｒａｔｉｏｎ」を有するファイルに関係する少なくとも１つのエントリが、仮想化管理情報テーブル３４１内に存在する場合（ステップＳ１００２がＹＥＳを返す）、この方法は、ステップＳ１００４において仮想化管理情報テーブル３４１内に存在するオブジェクト・ステータス「ｎｅｅｄｓ  ｍｉｇｒａｔｉｏｎ」を有するファイルに関係する１つまたは複数のエントリの次の１つで続行する。
【０１６７】
次のステップＳ１００５において、この方法は、ファイルのサイズ（すなわち、ファイルのリモート長）およびマイグレーション・データ・ブロックの所定のサイズに基づきマイグレーション・データ・ブロックのグループを決定することを続行する。いくつかの実施形態により、次いで、ファイルのデータは、丸ごと転送されるのではなく、ファイルコンテンツがマイグレーション・データ・ブロック毎に第１のストレージ装置３００から第２のストレージ装置４００に連続的に転送されるようにマイグレーション・データ・ブロック毎に転送される。
【０１６８】
いくつかの態様において、マイグレーション・データ・ブロックのサイズは、第１のファイル・システム管理ユニット３１０によってサポートされているような最大受信ブロック・サイズおよび／または第２のファイル・システム管理ユニット４１０によってサポートされているような最大受信ブロック・サイズに基づき決定され得る。特に、いくつかの実施形態において、マイグレーション・データ・ブロックのサイズは、第２のファイル・システム管理ユニット４１０によってサポートされているような最大受信ブロック・サイズおよび／または第１のファイル・システム管理ユニット３１０によってサポートされているような最大受信ブロック・サイズのうちの最小のサイズとして設定され得る。
【０１６９】
例えば、第１のファイル・システム管理ユニット３１０が、７５ｋＢ以上から１７５ｋＢ以下までのサイズのデータ・ブロックを（第１のファイル・システム管理ユニット３１０によってサポートされているような例示的な最大受信ブロック・サイズとして）受信するように適合され、第２のファイル・システム管理ユニット４１０が、５０ｋＢ以上から１５０ｋＢ以下までのサイズのデータ・ブロックを（第２のファイル・システム管理ユニット４１０によってサポートされているような例示的な最大送信ブロック・サイズとして）送信するように適合されているときに、マイグレーション・データ・ブロックのサイズは、１５０ｋＢと１７５ｋＢのうちの最小値として、すなわち１５０ｋＢとして決定され得る。
【０１７０】
実際のファイルのデータコンテンツが１５００ｋＢであるファイルが、例えば、１５０ｋＢのマイグレーション・データ・ブロックのサイズを使用することによってマイグレーションされるものとするときに、ファイルコンテンツは、ステップＳ１００５において決定された１０個のマイグレーション・データ・ブロックに分割される。
【０１７１】
次のステップＳ１００６において、それぞれのマイグレーション・ジョブが、ステップＳ１００５において決定されたマイグレーション・データ・ブロックの各々に対して作成され、ジョブ・キュー３４６Ｃに追加され、そこで、これはマイグレーション・ジョブを実行し、データを第２のストレージ装置４００から第１のストレージ装置３００に転送し、マイグレーション・データ・ブロックのデータをストレージ・ユニット３２０に記憶するためにマイグレーション・ユニット３４５によって取得され得る。好ましくは、１つの特定のファイルに関連付けられているマイグレーション・データ・ブロックのグループのマイグレーション・ジョブは正しい順序でジョブ・キュー３４６Ｃに追加され、これはマイグレーション・ブロックが正しい順序でマイグレーションされ、正しい順序でストレージ・ユニット３２０に記憶されるように特定のファイルに関連付けられているマイグレーション・データ・ブロックのグループの最初のブロックから始まり、最後のブロックで終わる。
【０１７２】
次のステップＳ１００７において、ステップＳ１００４において選択された１つの特定のファイルに関連付けられているマイグレーション・データ・ブロックのグループの各々に対してマイグレーション・ジョブを作成した後に、仮想化管理情報テーブル３４１内のそれぞれのエントリが更新され、オブジェクト・ステータスは、「ｍｉｇｒａｔｉｎｇ」に変更される。
【０１７３】
図９Ａの実施形態では、マイグレーション・ジョブは、特定のファイルに対してマイグレーションされるべき各データ・マイグレーション・ブロックに対して例示的に作成されている。しかしながら、特に、大きなファイルを有するファイル・システムについては、各ファイルに対する複数のマイグレーション・ジョブは、潜在的に多数のマイグレーション・データ・ブロックによりジョブ・キューに過剰に詰め込む可能性がある。そのような状況を回避するために、１つの単一のマイグレーション・ジョブが、例えば以下の図９Ｂを参照しつつ説明されているように各ファイルについて作成される一実施形態を提供することが望ましい場合がある。そのような実施形態は、ファイル・システムのすべてのファイルを考慮して、または特定の閾値を超えるファイル・サイズを有するファイルを考慮して実装され得る。
【０１７４】
図９Ｂは、１つの単一の仮想化ジョブが各ファイルについて作成されるバックグラウンド・マイグレーション管理の流れ図の別の例を示している。ステップＳ１００１、Ｓ１００２、Ｓ１００３、Ｓ１００４、およびＳ１００７は、図９Ａに関連して上で説明されているのと同様にして実行され得る。しかしながら、ステップＳ１００８において、各マイグレーション・データ・ブロックに対するマイグレーション・ジョブの代わりに単一のマイグレーション・ジョンがステップＳ１００４において選択された特定のファイルに対して作成される。ステップＳ１００４において、それぞれのマイグレーション・ジョブは、特定のファイルに対して作成され、ジョブ・キュー３４６Ｃに追加され、そこで、これはマイグレーション・ジョブを実行し、すべてのデータ・マイグレーション・ブロックのデータを第２のストレージ装置４００から第１のストレージ装置３００に連続的に転送し、マイグレーション・データ・ブロックのデータをストレージ・ユニット３２０に記憶するためにマイグレーション・ユニット３４５によって取得され得る。
【０１７５】
図１０Ａは、ファイル・データ・マイグレーションの流れ図の例を示している。マイグレーション・ユニット３４５は、ステップＳ１１０１において次のマイグレーション・ジョブがないかジョブ・キュー３４６Ｃをチェックし、ステップＳ１１０２において次のマイグレーション・ジョブを取得し、マイグレーション・ジョブは図９ＡのステップＳ１００５において決定されるように特定のマイグレーション・データ・ブロックに関連してマイグレーションの実行を命令する。
【０１７６】
次いで、マイグレーション・データ・ブロックのファイルのデータコンテンツへのユーザ・アクセスは、クライアントがマイグレーションの際にマイグレーション・データ・ブロックのファイルのデータコンテンツに一時的にアクセスできないように（すなわち、マイグレーション・データ・ブロックのファイルのデータコンテンツのクライアント・アクセスがそのマイグレーションの際に差し控えられるか、またはキューに入れられるように）ステップＳ１１０３において差し控えられる（キューに入れられる）。これは、同じファイルの他のデータ部分、すなわち、同じファイルの他のデータ・マイグレーション・データのデータ（すでに以前にマイグレーションされているか、またはまだマイグレーションを開始していない）が現在マイグレーションされているマイグレーション・データ・ブロックのマイグレーション中であってもクライアント１００のユーザによってそのままアクセスされ得るという利点を有する。
【０１７７】
以下で説明されているステップＳ１１０３およびＳ１１１１の実行の時間と時間との間でそれぞれのファイル・ブロックへのアクセスを試みるクライアント・アクセスは、クライアント・アクセスが再び可能にされたときに、好ましくは、ステップＳ１１１１が実行されるまでクライアントが遅延を観察するという意味で一時的にのみ差し控えられ（またはブロックされ、キューに入れられ）、キューに入れられているアクセスは、クライアントが書き込み要求の実行時にわずかな待ち時間のみを観察し、好ましくはアクセスを試みるクライアント側にエラー応答が返されないようにステップＳ１１１１の後に実行されることに留意されたい。すなわち、マイグレーション・ジョブのマイグレーション・データ・ブロックをターゲット・ブロックとして伴うステップＳ１１０３の後に受信された１つまたは複数の書き込み要求は、キューに入れられ、ステップＳ１１１１の後に実行される。
【０１７８】
代替的実施形態では、ステップＳ１１０３は、マイグレーションされるべきデータ・ブロックに関連付けられている特定のファイルのファイル・データへのユーザ・アクセスを差し控える（キューに入れる）ことができる。そのような実施形態において、他のすべてのファイルへの少なくともユーザ・アクセスは、特定のファイルのデータ・ブロックのマイグレーションにおいて可能にされたままにされ得る。次いで、以下で説明されているステップＳ１１１１は、そのような実施形態においてファイルへのユーザ・アクセスを再び可能にする。すなわち、ターゲット・ファイルのファイル・データを伴うステップＳ１１０３の後に受信された１つまたは複数の書き込み要求は、キューに入れられ、ステップＳ１１１１の後に実行される。
【０１７９】
ステップＳ１１０４において、特定のマイグレーション・データ・ブロックが特定のマイグレーション・データ・ブロックに関連付けられている特定のファイルに関連してマイグレーションされるべき第１のマイグレーション・ブロックであるかどうかがチェックされる。例えば、マイグレーション・ジョブ・データは、マイグレーション・データ・ブロックの総数および特定のマイグレーション・データ・ブロックの番号を示し得る。代替的に、マイグレーション・ユニット３４５は、対応するファイルが（その関連付けられている外部リンク・オブジェクトに加えて）第１のファイル・システム管理ユニット３１０のファイル・システム内にすでに存在しているかどうかをチェックすることができる。
【０１８０】
ステップＳ１１０４がＹＥＳを返した場合、マイグレーション・ユニット３４５は、マイグレーション・ジョブで示されているローカル・マイグレーション・パス内に対応するファイルを作成し、ステップＳ１１０７において、第２のストレージ装置４００から受信される、マイグレーション・データ・ブロックのデータコンテンツをローカル・マイグレーション・パス内のファイルにコピーする。そうでなければ、ステップＳ１１０４がＮＯを返した場合、マイグレーション・ユニット３４５は、ステップＳ１１０７において、第２のストレージ装置４００から受信される、マイグレーション・データ・ブロックのデータコンテンツをローカル・マイグレーション・パス内の（すでに存在している）ファイルに直接コピーする。
【０１８１】
ステップＳ１１０７においてマイグレーション・データ・ブロックのデータコンテンツをストレージ・ユニット３２０に書き込んだ後、ファイルに関係付けられているメタデータは、第１のファイル・システム内のファイルの（ローカル）オブジェクト・ストア長が、例えば、マイグレーションされるマイグレーション・データ・ブロックのブロック・サイズを前のオブジェクト・ストア長に加えることによって、ステップＳ１１１２において更新されるという点において更新される。原理上、オブジェクト・ストア長は、ステップＳ１１０７の書き込み操作内で更新され得る。また、マイグレーション手順は、マイグレーション書き込みがクライアントに対してシームレスなままでなければならないので、アクセスまたは修正時間（例えば、タイム・スタンプ）などの他のメタデータを更新することを伴わないことに留意されたい。
【０１８２】
その後マイグレーションされたマイグレーション・データ・ブロックは、同じファイルに関連付けられている他のすべてのマイグレーション・データ・ブロックが以前にすでにマイグレーションされていたのでマイグレーションされるべき最後のマイグレーション・データ・ブロックであったとき（ステップＳ１１０８がＹＥＳを返す）、同じファイルに関連付けられている外部リンク・オブジェクトは、ステップＳ１１０９においてそのローカル・パス・ロケーション内で削除される、すなわち、この特定のファイルに対する第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムと第１のファイル・システム管理ユニット３１０によって管理されるファイル・システムとの間のリンクが削除されることになる。次いで、仮想化管理情報テーブル３４１内の対応するファイルのオブジェクト・ステータスは、ステップＳ１１１０において「ｍｉｇｒａｔｅｄ」に更新され、ファイルのメタデータ内の１つまたは複数のフラグは、ファイルが完全にマイグレーションされていることを示すように更新され得る。
【０１８３】
上記のステップＳ１１０８において、特定のファイルのファイルコンテンツのすべてがファイルのデータコンテンツがストレージ・ユニット３２０上にすでに完全に保持されるようにすでにマイグレーションされており、特定のファイルのデータコンテンツが第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内に完全に存在するかどうかが基本的にチェックされる。いくつかの好ましい実施形態によれば、特定のファイルのファイル・データコンテンツが第２のストレージ装置４００から第１のストレージ装置３００に完全にマイグレーションされているかどうかに関するステップＳ１１０８の決定は、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内の特定のファイルのオブジェクト・ストア長と第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム内の特定のファイルのファイル長さとの比較結果に基づき実行される（図６Ａおよび上の説明を参照）。
【０１８４】
特に、いくつかの実施形態によれば、ステップＳ１１０８は、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内の特定のファイルのオブジェクト・ストア長が、第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム内の特定のファイルのファイル長よりも小さい限りＮＯを返し、ステップＳ１１０８は、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内の特定のファイルのオブジェクト・ストア長（ステップＳ１１１２において更新されたような）が、第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム内の特定のファイルのファイル長に等しいときにＹＥＳを返す。
【０１８５】
上記のステップＳ１１０９およびＳ１１１０を実行した後、対応するファイルは、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システムのレギュラー・ファイルを表し、ファイルへのすべてのユーザ・アクセスは、最終的なマイグレーションされたマイグレーション・データ・ブロックのデータへのユーザ・アクセスがステップＳ１１１１において再び可能にされるとすぐに第１のファイル・システム管理ユニット３１０によってローカルで処理されるものとしてよく、次いで、この方法は、ターゲット・ファイルのファイル・データを伴うステップＳ１１０３の後に受信された１つまたは複数のキューに入れられた書き込み要求がステップＳ１１１１の後に実行されることを許すために応じて、次いで、もしあれば、ステップＳ１１０１において次のマイグレーション・ジョブを続行する。
【０１８６】
そうでなければ、ステップＳ１１０８がＮＯを返した場合、すなわち、特定のファイルに対してマイグレーションされるべきなおもさらなるマイグレーション・データ・ブロックがあるときに、この方法は、特定のマイグレーションされたマイグレーション・データ・ブロックのデータへの再度のユーザ・アクセスを可能にするステップＳ１１１１を直接続行し、次いで、この方法は、ターゲット・ファイルのファイル・データを伴うステップＳ１１０３の後に受信された１つまたは複数のキューに入れられた書き込み要求がステップＳ１１１１の後に実行されることを許すために応じて、次いで、もしあれば、ステップＳ１１０１において次のマイグレーション・ジョブを続行する。
【０１８７】
図１０Ｂは、１つの単一のマイグレーション・ジョブがマイグレーションされるべき１つのファイルについて作成される例示的な一実施形態におけるファイルのデータのマイグレーションの流れ図の別の例を示している。マイグレーション・ユニット３４５は、ステップＳ１１０１において次のマイグレーション・ジョブがないかジョブ・キュー３４６Ｃをチェックし、ステップＳ１１１３において次のマイグレーション・ジョブを取得し、マイグレーション・ジョブは図９ＢのステップＳ１００４において決定されるようにマイグレーションされるべき特定のファイルに関連してマイグレーションの実行を命令する。
【０１８８】
ステップＳ１１０５において、マイグレーション・ユニット３４５は、マイグレーション・ジョブで示されたローカル・マイグレーション・パス内に対応するファイルを作成し、第１のファイル・システム内のファイルのメタデータ内でその（ローカル）オブジェクト・ストア長をゼロに設定する。
【０１８９】
次いで、マイグレーション・データ・ブロックのファイルのデータコンテンツへのユーザ・アクセス要求は、クライアントがマイグレーション・データ・ブロックのマイグレーションの際にマイグレーションされるべきファイルのファイル・データコンテンツを一時的にアクセスすることができないようにステップＳ１１０３においてキューに入れられる（一時的に差し控えられる）。ステップＳ１１０３およびＳ１１１１の実行の時間と時間との間でそれぞれのファイル・ブロックへのアクセスを試みるクライアント・アクセス要求は、クライアント・アクセスが再び可能にされたときに、好ましくは、ステップＳ１１１１が実行されるまでクライアントが遅延を観察するという意味でキューに入れられ（またはブロックされ、一時的に差し控えられ）、好ましくはアクセスを試みるクライアント側にエラー応答が返されないことに留意されたい。すなわち、現在のマイグレーション・データ・ブロックをターゲット・ブロックとして伴うステップＳ１１０３の後に受信された１つまたは複数のアクセス要求は、キューに入れられ、ステップＳ１１１１の後に実行される。
【０１９０】
次いで、ステップＳ１１１４において、この方法は、オブジェクト・ストア長に基づき決定される次のマイグレーション・データ・ブロックに進む。オブジェクト・ストア長がゼロである場合、第１のマイグレーション・データ・ブロックが選択される。データ・マイグレーション・ブロックおよびそのサイズの決定は、上で説明されている図９ＡのステップＳ１００５と同様に実行され得る。その一方で、オブジェクト・ストア長が、非ゼロであり、データ・マイグレーション・ブロック・サイズのＮ倍の長さを有する場合、データ・マイグレーション・ブロックＮ＋１が、ステップＳ１１１４において選択される。
【０１９１】
ステップＳ１１０７において、第２のストレージ装置４００から受信された、マイグレーション・データ・ブロックのデータコンテンツは、ローカル・マイグレーション・パス内のファイルにコピーされる。ステップＳ１１０７においてマイグレーション・データ・ブロックのデータコンテンツをストレージ・ユニット３２０に書き込むことに関連して、ファイルに関係付けられているメタデータは、第１のファイル・システム内のファイルの（ローカル）オブジェクト・ストア長が、例えば、マイグレーションされるマイグレーション・データ・ブロックのブロック・サイズを前のオブジェクト・ストア長に加えることによって、ステップＳ１１１２において更新されるという点において更新される。原理上、オブジェクト・ストア長は、ステップＳ１１０７の書き込み操作内で更新され得る。また、マイグレーション手順は、マイグレーション書き込みがクライアントに対してシームレスなままでなければならないので、アクセスまたは修正時間（例えば、タイム・スタンプ）などの他のメタデータを更新することを伴わないことに留意されたい。
【０１９２】
ステップＳ１１０７においてマイグレーション・データ・ブロックのデータコンテンツをストレージ・ユニット３２０に書き込み、ステップＳ１１１２においてオブジェクト・ストア長を更新した後、ユーザ・アクセスは、ステップＳ１１１１において可能にされ、ステップＳ１１０３以降に受信され、キューに入れられているファイル・ブロックへのすべてのユーザ・アクセス要求は、ステップＳ１１１７において実行される。これは、クライアントから送信されたキューに入れられているアクセス要求が、ブロックの各マイグレーションの後に実行される（サービスされる）ものとしてよく、ファイルの完全なマイグレーションまで差し控えられる必要はないという利点を有する。したがって、あまりにも長い期間にわたって、特に大きなファイルをマイグレーションするときに、ユーザ・アクセスを差し控えることが回避され得る。
【０１９３】
その後マイグレーションされたマイグレーション・データ・ブロックが、同じファイルに関連付けられている他のすべてのマイグレーション・データ・ブロックが以前にすでにマイグレーションされていたという理由でマイグレーションされるべき最後のマイグレーション・データ・ブロックであったときに（ステップＳ１１０８がＹＥＳを返す）、ステップＳ１１０９およびＳ１１１０は、上で説明されている図１０Ａと同様に実行される。そうでなければ、ステップＳ１１０８がＮＯを返した場合、すなわち、特定のファイルに対してマイグレーションされるべきなおもさらなるマイグレーション・データ・ブロックがあるときに、この方法は、ファイルへのユーザ・アクセス要求をキューに入れる（一時的に差し控える）ステップＳ１１０３およびこの方法がステップＳ１１１２において更新されるようなオブジェクト・ストア長に基づき決定される次のマイグレーション・データ・ブロックに進むステップＳ１１１４を繰り返すことを直接続行する。
【０１９４】
図１０Ａとは対照的に、図１０Ｂの方法は、例示的に、ステップＳ１１０３においてファイル全体でのクライアント・アクセスを差し控えるが、図１０ＡではステップＳ１１０３において実際にマイグレーションするデータ・マイグレーション・ブロックへのクライアント・アクセスを差し控えるのみであると想定し、そこでは他のブロックがシームレスにアクセス可能なままである。さらなる実施形態において、ステップＳ１１０３が、他のすべてのブロック（すでにマイグレーションされている、またまだマイグレーションされていない）へのクライアント・アクセスがシームレスに可能にされたままであるように現在のデータ・マイグレーション・ブロックへのクライアント・アクセス要求を一時的に差し控えるだけのためにステップＳ１１１４の後にデータ・ブロックに対してループで実行され得るという点において、図１０Ｂの方法におけるクライアント・アクセスをさらに改善することが可能である。次いで、ステップＳ１１１１は、その後マイグレーションされたデータ・マイグレーション・ブロックへのユーザ・クライアント・アクセスを再び可能にするためにステップＳ１１１２の後に実行され得る。
【０１９５】
図１０Ｃは、図１０Ａの方法と比較してマイグレーションおよび記憶効率を改善するファイルのデータのマイグレーションの流れ図の別の例を示している。図１０Ｃの方法は、上の図１０Ａを参照しつつ説明されている方法に類似しているが、マイグレーション・データ・ブロックがゼロのビットのみを含むかどうかに関して特定のマイグレーション・データ・ブロックをチェックする追加のステップＳ１１０６を有する。マイグレーション・データ・ブロックがそのビットに少なくとも１つの１を含む（非ゼロ・ビット）場合に限り、この方法は、それぞれのマイグレーション・データ・ブロックをローカル・マイグレーション・パスに実際にコピーするステップＳ１１０７およびオブジェクト・ストア長を更新するステップＳ１１１２を続行する。
【０１９６】
そうでなければ、マイグレーション・データ・ブロックがゼロのビットのみを含む場合、この方法は、マイグレーション・データ・ブロックをマイグレーションするのを控え、またマイグレーション・データ・ブロックをストレージ・ユニット３２０に実際に書き込むのを控え、ステップＳ１１０７は省かれる。その代わりに、この方法は、例えば、ゼロのみを含む実際のデータを書き込むことなくローカル・オブジェクト・ストア長（マイグレーションの終わり領域のインジケータとしてのｏｎｏｄｅ長）をデータ・ブロックのサイズだけインクリメントすることによって、オブジェクト・ストア長を直接更新することができる（ステップＳ１１１２）。これは、ストレージ・ユニット４１０内のデータのスパース率がストレージ・ユニット３１０内に反映されているときに、ストレージ・ユニット３１０内のスパース率の高いファイルのゼロのみを含むデータ部分を不効率に書き込むことが回避され得るという利点を有する。それぞれのブロックがゼロのビットのみを含むものとすることを示すために、ファイルまたはブロックのメタデータ内のフラグがセットされ、ブロックがゼロのみを含むことを示すことができる。
【０１９７】
好ましくは、ステップＳ１１０６は、第１のファイル・システム管理ユニット３１０の中央演算処理装置（ＣＰＵ）によって実行されず、第１のファイル・システム管理ユニット３１０のＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）にオフロードすることなどによる他の手段によって実行される。他の実施形態では、例えば、参照により本明細書に組み込まれている米国特許第７，４５７，８２２Ｂ１号において説明されているようなハードウェア・ベースのファイル・システムでは、第１のファイル・システム管理ユニット３１０のハードウェア・ネットワーク・スタックは、例えばＮＦＳなどのファイル・システム・プロトコルのリモート・プロシージャ・コール（ＲＰＣ）を再アセンブルしながらステップＳ１１０６に対してデータ・ブロックを検査し、ソフトウェアに、非ゼロのデータを含むＮＦＳヘッダの後の第１のオフセット、またはゼロが見つからないときには要求の終わりへのオフセットを受け渡すことができる。そのようなオフセットは、ＮＦＳなどのファイル・システム・プロトコルの応答のヘッダ内の第１の非ゼロ・ビットのインジケータであるものとしてよい。
【０１９８】
検査は、書き込みユーザ・データ（読み出し要求からのユーザ・データなど）でのバックグラウンド・マイグレーションの際に、ユーザ・データがＮＶＲＡＭにログインされたとき、ゼロのみが書き込まれていることを検出した場合に書き込みが特定のエラーとともに失敗したときにも行われ得る。次いで、それぞれのファイルのオブジェクト・ストア長は、ゼロのみを含むデータを実際に書き込む代わりにゼロのみを有するユーザ・データコンテンツのサイズに応じてインクリメントされ得る（すなわち、書き込みを試みたが失敗したゼロの個数に対応する量だけオブジェクト・ストア長をインクリメントする）。
【０１９９】
いくつかの実施形態では、ステップＳ１１０６のチェックは、マイグレーション・データ・ブロックのデータをビット毎に分析することによって実行され得るが、好ましくは、そのような完全な分析は、ファイル・システム管理ユニット３１０の処理ユニット３１３の中央演算処理装置によって実行されない。効率を改善するために、バイト毎の分析チェックは、非ゼロ・ビットが検出されるとすぐに中断されるものとしてよく、また非ゼロ・ビットが検出されるとすぐに、ステップＳ１１０６は、マイグレーション・データ・ブロックの残り部分のビットをチェックすることなくＮＯを返し得る。
【０２００】
また、マイグレーション・データ・ブロックのデータが、ビット毎に分析される場合、効率のさらなる改善のために、ステップＳ１１０６が、ブロックがゼロのビットのみを含む可能性が高いファイルのうちのいくつかについてのみ実行されることが望ましいことがある。例えば、この方法は、ステップＳ１１０６が特定のマイグレーション・データ・ブロックに対して実行されるものとするかどうかを決定するために特定のマイグレーション・データ・ブロックに関連付けられている特定のファイルの属性をチェックする別のステップを含み得る。
【０２０１】
いくつかの実施形態では、割り振られた記憶領域の記憶領域使用量のパーセンテージに関係するファイル属性が所定の閾値を下回ったとき（ファイルのデータコンテンツのスパース率が高いことを示す）、ステップＳ１１０６が実行され、割り振られた記憶領域の記憶領域使用量のパーセンテージが所定の閾値を超えたときに、ステップＳ１１０６は、実行されず、この方法は、ステップＳ１１０７を即座に続行する。これは、特定の基礎をなすファイルの割り振られた記憶領域の記憶領域使用量のパーセンテージが低いときに高いスパース率になるより高いリスクを有するマイグレーション・データ・ブロックに対してステップＳ１１０６が実行され、特定の基礎をなすファイルの割り振られた記憶領域の記憶領域使用量のパーセンテージが高いときに高いスパース率になるより低いリスクを有するマイグレーション・データ・ブロックに対してステップＳ１１０６が実行されないという利点を有する。
【０２０２】
記憶領域の使用量の特定のパーセンテージのファイルのデータのブロック内の高いスパース率のリスクは、ファイルの長さがより長いファイルに対してはより高いということに留意されたい。したがって、いくつかの実施形態では、割り振られた記憶領域の記憶領域使用量のパーセンテージとファイルの（リモート）長さとの比が所定の閾値を下回ったとき（ファイルのデータコンテンツのスパース率が高いことを示す）、ステップＳ１１０６が実行され、割り振られた記憶領域の記憶領域使用量のパーセンテージとファイルの（リモート）長さとの比が所定の閾値を超えたときに、ステップＳ１１０６は、実行されず、この方法は、ステップＳ１１０７を即座に続行する。これは、特定の基礎をなすファイルの割り振られた記憶領域の記憶領域使用量のパーセンテージとファイルの長さとの比が低いときに高いスパース率になるより高いリスクを有するマイグレーション・データ・ブロックに対してステップＳ１１０６が実行され、特定の基礎をなすファイルの割り振られた記憶領域の記憶領域使用量のパーセンテージとファイルの長さとの比が高いときに高いスパース率になるより低いリスクを有するマイグレーション・データ・ブロックに対してはステップＳ１１０６が実行されないという利点を有する。
【０２０３】
さらに、ＮＦＳベースの通信プロトコルなどのファイル・システム通信プロトコルでは、特定のファイルに対する読み出し応答が第１の非ゼロ・ビットの位置を示すメタデータを含み得るＮＦＳベースの通信プロトコルの読み出し応答の読み出し応答構造を使用することが可能である。ユーザ・データを含む応答／メッセージのセクション内の第１の非ゼロ・バイトのオフセットを示すメタデータをＮＦＳ読み出し応答（または他の任意のプロトコル・メッセージ、すなわち、ＮＦＳに限定されない）に追加することが可能である。そのような機能は、第１のファイル・システム管理ユニット３１０のハードウェア・ユニットによって（例えば、そのハードウェア・ネットワーク・スタックによって）実行され得る。
【０２０４】
したがって、いくつかの実施形態では、特定のファイルのファイルコンテンツにおける第１の非ゼロ・ビットの位置を示すデータに基づきステップＳ１１０６を実行することによってマイグレーション・データ・ブロックのデータの面倒なバイト毎の分析を回避することが可能である。例えば、ステップＳ１１０６が、特定のファイルのファイル・データコンテンツの前部分または中間部分のデータを含むマイグレーション・データ・ブロックに対して実行され、特定のファイルのファイル・データコンテンツにおける第１の非ゼロ・ビットの位置は、ファイルの終わりに近い特定のファイルのファイル・データコンテンツの終了位置にあることが示される場合、それぞれのマイグレーション・データ・ブロックは、ゼロのビットのみを含むことが容易に、効率的に決定されるものとしてよく、ステップＳ１１０６は、ＹＥＳを返す。
【０２０５】
図１０Ｄは、ファイル・データ・マイグレーションの流れ図の別の例を示している。図１０Ｄは、上の図１０Ｂと同様のファイルについて１つの単一のマイグレーション・ジョブが作成される方法に対応し、これはステップＳ１１１４とＳ１１０７との間のファイルのデータ・マイグレーション・ブロックを連続的にマイグレーションするループ内の図１０Ｃに関連して上で説明されているような追加のステップＳ１１０６を有する。
【０２０６】
図１０Ｅは、ファイル・データ・マイグレーションの流れ図の別の例を示している。図１０Ｅは、１つの単一のマイグレーション・ジョブが上の図１０Ｄと同様のファイルに対して作成される方法に対応している。しかしながら、図１０の方法は、ファイルのスパース率が決定される追加のステップＳ１１１５を含み、ステップＳ１１１６において、ステップＳ１１１５で決定されたファイルのスパース率が閾値を上回っているかどうかが決定される。
【０２０７】
いくつかの実施形態では、割り振られた記憶領域の記憶領域使用量のパーセンテージに関係するファイル属性が所定の閾値を下回ったとき（ファイルのデータコンテンツのスパース率が高いことを示す）、ステップＳ１１１６はＹＥＳを返すものとしてよく、割り振られた記憶領域の記憶領域使用量のパーセンテージが所定の閾値を超えたときに、ステップＳ１１０６はＮＯを返すものとしてよい。記憶領域の使用量の特定のパーセンテージのファイルのデータのブロック内の高いスパース率のリスクは、ファイルの長さがより長いファイルに対してはより高いということに留意されたい。したがって、いくつかの実施形態では、割り振られた記憶領域の記憶領域使用量のパーセンテージとファイルの（リモート）長さとの比が所定の閾値を下回ったとき（ファイルのデータコンテンツのスパース率が高いことを示す）、ステップＳ１１１６はＹＥＳを返すものとしてよく、割り振られた記憶領域の記憶領域使用量のパーセンテージとファイルの（リモート）長さとの比が所定の閾値を超えたときに、ステップＳ１１１６はＮＯを返すものとしてよい。
【０２０８】
ステップＳ１１１６がＮＯを返し、ファイルのスパース率が、特定の閾値より高くない場合、効率を高めるために、ステップＳ１１０６は実行されず、この方法は、データコンテンツをマイグレーションし、それをストレージ・ユニット３２０に書き込むステップＳ１１０７を直接続行する。ステップＳ１１１６がＹＥＳを返す場合、ステップＳ１１０６は、上の図１０Ｄと同様の特定のファイルのすべてのデータ・ブロックについて実行される。
【０２０９】
図１０Ｃから１０Ｅを参照する上記において、データ・マイグレーション・ブロックがゼロのビットのみを有する（すなわち、スパース・ブロック）かどうかを検出するために、または上記の特定のマイグレーション方法に関連してデータ・マイグレーション・ブロックがゼロのビットのみを有するかどうかをチェックするかどうかを決定するためデータ・マイグレーション・ブロックがゼロのビットのみを有する高い確率を有するかどうかを検出するための異なる有利なアプローチが説明されている。しかしながら、スパース・ブロックを検出する、およびデータ・ブロックがスパースである（すなわち、多数の連続するゼロ・ビットを有する、例えば、ゼロのみを有するブロック）確率をチェックする上で説明されているアプローチは、例えば、ユーザ・データの特定の領域がゼロのみ、もしくは少なくとも１つの非ゼロ・ビットを含むかどうかを検出／チェックする各ステップについて、ファイル・システム管理において１つまたは複数のデータ・ブロックを読み出すこと、書き込むこと、移動すること、送信すること、および／または分析することに関係する方法に対する上記のマイグレーション方法と無関係に適用され得ることに留意されたい。
【０２１０】
仮想化の際に（仮想化フェーズにおいて）、まだマイグレーションされていない仮想化されたファイル・システム・オブジェクト（マイグレーション・フェーズにおいて）について、第２のストレージ装置４００によって処理されるファイル・システム（複数可）へのユーザ・アクセスは、第１のストレージ装置３００を通じて間接的に可能にされ得る。仮想化されたオブジェクトへのユーザ・アクセスは、以下の図１１Ａから１１Ｈに関連して次に説明されているように可能にされ得る。
【０２１１】
特に、マイグレーション・フェーズにおいて、ユーザ・アクセスは、図１１Ａから１１Ｈに示されていように、まだマイグレーションを開始していないすべてのファイルについて（マイグレーション・ジョブがもう作成されたか作成されていないかに関係なく）、また新規ディレクトリおよび新規ファイルの作成が第１のファイル管理ユニット３１０のみによって管理されるファイル・システム上で実行され得る（第２のファイル管理ユニット４１０によって管理されるファイル・システム上では実行され得ない）ことを除き、まだマイグレーションされていないファイルを依然として含むすべてのディレクトリについて処理され得る。
【０２１２】
特定のファイルのデータが、特定のファイルに関連付けられているすべてのマイグレーション・データ・ブロックが第１のストレージ装置３００にマイグレーションされ、対応する外部リンク・オブジェクトが取り除かれているという点において完全にマイグレーションされた後、ファイルは、第１のファイル・システム管理ユニット３１０のファイル・システムのレギュラー・ファイルとなり、したがって、ファイルは、ファイル・システム管理ユニット３１０のファイル・システム上のローカルでのみ処理され得ることに留意されたい。第２のファイル・システム管理ユニット４１０のファイル・システム内の対応するファイルは、したがって、ファイルへのユーザ・アクセスにより第１のファイル・システム管理ユニット３１０のファイル・システム内のファイルと異なり始め得る。
【０２１３】
図１１Ａは、マイグレーションがまだ開始されていない仮想化されたファイルへの書き込みアクセスに対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。第１のファイル・システム管理ユニット３１０においてターゲット・ファイル（例えば、図４のｆｉｌｅ８）に対する書き込み要求が受信されたときに、書き込み要求は、ターゲット・ファイルに対する対応する書き込み要求を第１のファイル・システム管理ユニット３１０から第２のファイル・システム管理ユニット４１０に発行することによって対応する外部リンク・オブジェクト（例えば、図５のＸＬＯ８）を介してパススルーされる。
【０２１４】
第１のファイル・システム管理ユニット３１０において第２のファイル・システム管理ユニット４１０から書き込み確認応答を受信した後に、対応する外部リンク・オブジェクトのメタデータが更新され（例えば、ファイルの長さ、タイム・スタンプ、または書き込み操作によって変更される他のファイル属性を更新することによって）、次いで、クライアント１００に対して書き込み確認応答がなされる。
【０２１５】
図１１Ｂは、マイグレーションがまだ開始されていない仮想化されたファイルへの読み出しアクセスに対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。第１のファイル・システム管理ユニット３１０においてターゲット・ファイル（例えば、図４のｆｉｌｅ８）に対する読み出し要求が受信されたときに、読み出し要求は、ターゲット・ファイルに対する対応する読み出し要求を第１のファイル・システム管理ユニット３１０から第２のファイル・システム管理ユニット４１０に発行することによって対応する外部リンク・オブジェクト（例えば、図５のＸＬＯ８）を介してパススルーされる。
【０２１６】
第１のファイル・システム管理ユニット３１０において第２のファイル・システム管理ユニット４１０から読み出し応答（読み出しデータを含む）を受信した後に、読み出し要求に応答して受信された読み出しデータがクライアント１００に転送される。
【０２１７】
図１１Ｃは、マイグレーションがまだ開始されていない仮想化されたファイル、またはディレクトリへの属性アクセスに対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。同じ手順が、マイグレーションが進行中であるが、上のステップＳ１１０９はまだ実行されていない仮想化されたファイルへの属性アクセスについても適用され得ることに留意されたい。
【０２１８】
第１のファイル・システム管理ユニット３１０においてターゲット・ファイル（例えば、図４のｆｉｌｅ８）に対する属性読み出し要求が受信されたときに、対応する属性は、対応する外部リンク・オブジェクト（例えば、図５のＸＬＯ８）からローカルで読み出され、要求された属性は、第２のファイル・システム管理ユニット４１０との通信から遅延なくクライアントの属性読み出し要求に応答してクライアント１００に効率的に、都合よく返される。
【０２１９】
ディレクトリについては、属性読み出し要求は、ディレクトリ・メタデータから対応する属性を読み出すことによって第１のファイル・システム管理ユニット３１０においてローカルで同様に処理され、読み出された属性は、第２のファイル・システム管理ユニット４１０との通信から遅延なくクライアントの属性読み出し要求に応答してクライアント１００に効率的に、都合よく返される。
【０２２０】
ディレクトリのリンク・カウントに関する問い合わせがある場合、第１のファイル・システム管理ユニット３１０は、第１のファイル・システム管理ユニット３１０によって管理されるようなファイル・システム上の対応するディレクトリの実際のリンク・カウントを返さず、上で説明されているように実リンク・カウントとフェイク・リンク・カウントとの総和を返すことによって第２のファイル・システム管理ユニット４１０によって管理されるようなファイル・システム上の対応するディレクトリの実際のリンク・カウントを返す。
【０２２１】
図１１Ｄは、マイグレーションがまだ開始されていない仮想化されたファイルを削除することに対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。第１のファイル・システム管理ユニット３１０においてターゲット・ファイル（例えば、図４のｆｉｌｅ８）に対する削除要求が受信されたときに、削除要求は、ターゲット・ファイルに対する対応する削除要求を第１のファイル・システム管理ユニット３１０から第２のファイル・システム管理ユニット４１０に発行することによって対応する外部リンク・オブジェクト（例えば、図５のＸＬＯ８）を介してパススルーされる。
【０２２２】
第２のファイル・システム管理ユニット４１０によりターゲット・ファイル（例えば、ｆｉｌｅ８）を削除し、第１のファイル・システム管理ユニット３１０において第２のファイル・システム管理ユニット４１０から削除確認応答を受信した後に、対応する外部リンク・オブジェクト（例えば、ＸＬＯ８）が削除され、仮想化管理情報テーブル３４１内の対応するエントリは、削除されたファイルに対するマイグレーション・ジョブの作成を回避するために取り除かれ、次いで、クライアント１００に対して、ターゲット・ファイルの削除の確認応答がなされる。
【０２２３】
ユーザが、完全にはまだマイグレーションされていないが、１つまたは複数のマイグレーション・データ・ブロックがもうマイグレーションされているようにマイグレーションをすでに開始しているファイルを削除することを試みる場合、削除は、上で説明されているように実行され得るが、ストレージ・ユニット３１０内に存在するすでにマイグレーションされているマイグレーション・データ・ブロックのデータも削除され得る。
【０２２４】
図１１Ｅは、仮想化のみにおけるファイル作成に対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。
【０２２５】
ターゲット・パス・ロケーション内に新規ファイルを作成するために、第１のファイル・システム管理ユニット３１０においてファイル作成要求が受信されたときに、対応する新規外部リンク・オブジェクトが、ターゲット・パス・ロケーションに対応するローカル・パス内に作成され、ファイル作成要求は、ターゲット・パス・ロケーション内のターゲット・ファイルに対する対応するファイル作成要求を第１のファイル・システム管理ユニット３１０から第２のファイル・システム管理ユニット４１０に発行することによってパススルーされる。
【０２２６】
ターゲット・パス・ロケーションに対応するリモート・パス内に新規ファイルを作成し、第１のファイル・システム管理ユニット３１０において第２のファイル・システム管理ユニット４１０からファイル作成確認応答を受信した後に（および潜在的に、対応する外部リンク・オブジェクトのメタデータを更新した後に）クライアント１００に対して、ターゲット・ファイルのファイル作成の確認応答がなされる。
【０２２７】
マイグレーション中のファイル作成要求は、上で説明されているのと同様にして処理され得るが、マイグレーションの負担を軽減するために、マイグレーション・フェーズに対しては（すなわち、マイグレーションが、仮想化がまだ進行中であるか、またはすでに終了しているかに関係なく開始されている場合）、ファイル作成要求が異なる仕方で処理されること、およびファイルが第１のファイル・システム管理ユニット３１０によって管理されるファイル・システムにおいてのみファイル作成要求に応答して作成されるが、第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムにパススルーされないことが好ましい。
【０２２８】
図１１Ｆは、属性を変更する（まだ完全にはマイグレーションされていないファイルに対する、仮想化時およびマイグレーション時に）場合のクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。第１のファイル・システム管理ユニット３１０においてターゲット・ファイル（例えば、図４のｆｉｌｅ８）に対する属性変更要求が受信されたときに、属性変更要求は、ターゲット・ファイル（例えば、ｆｉｌｅ８）に対する対応する属性変更要求を第１のファイル・システム管理ユニット３１０から第２のファイル・システム管理ユニット４１０に発行することによって対応する外部リンク・オブジェクト（例えば、ＸＬＯ８）を介してパススルーされ、次いで、属性変更要求は、第１のファイル・システム管理ユニット３１０において、対応する外部リンク・オブジェクト（例えば、図５のＸＬＯ８）における属性が、属性変更要求に従って変更されるという点において実行される。第１のファイル・システムにおいて属性変更要求を適用するときに、属性変更が、ｆｉｌｅ−ｌｅｎｇｔｈからｎｅｗ−ｆｉｌｅ−ｌｅｎｇｔｈへの設定された長さである場合、オブジェクト・ストア長は、オブジェクト・ストア長がｎｅｗ−ｆｉｌｅ−ｌｅｎｇｔｈよりも大きい場合にのみ更新される。
【０２２９】
第２のファイル・システム管理ユニット４１０によりターゲット・ファイルの属性を変更し、第１のファイル・システム管理ユニット３１０において第２のファイル・システム管理ユニット４１０から属性変更確認応答を受信した後に、クライアント１００に対して、属性変更の確認応答がなされる。同様に、第１のファイル・システム管理ユニット３０１においてターゲット・ディレクトリに対する属性変更要求を受信したときに、仮想化されたディレクトリのディレクトリ・メタデータが、要求に従って属性を変更するように更新され、次いで、属性変更要求は、第２のファイル・システム管理ユニット４１０に転送される。
【０２３０】
図１１Ｇは、仮想化のみにおけるディレクトリ作成に対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。ターゲット・パス・ロケーション内に新規の空のディレクトリを作成するために、第１のファイル・システム管理ユニット３１０においてディレクトリ作成要求が受信されたときに、対応する新規の空のディレクトリおよびそのディレクトリ・メタデータが、ターゲット・パス・ロケーションに対応するローカル・パス内に作成され、新規ディレクトリは、ＣＯＭＰＬＥＴＥであるものとして示され、ディレクトリ作成要求は、ターゲット・パス・ロケーション内のターゲット・ディレクトリに対する対応するディレクトリ作成要求を第１のファイル・システム管理ユニット３１０から第２のファイル・システム管理ユニット４１０に発行することによってパススルーされる。
【０２３１】
ターゲット・パス・ロケーションに対応する第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムのリモート・パス内に新規の空のディレクトリを作成し、第１のファイル・システム管理ユニット３１０において第２のファイル・システム管理ユニット４１０からディレクトリ作成確認応答を受信した後に（および潜在的に、対応するディレクトリ・メタデータのメタデータを更新した後に）クライアント１００に対して、ターゲット・ディレクトリのディレクトリ作成の確認応答がなされる。
【０２３２】
マイグレーション中のディレクトリ作成要求は、上で説明されているのと同様にして処理され得るが、マイグレーションの負担を軽減するために、マイグレーション・フェーズに対しては（すなわち、マイグレーションが、仮想化がまだ進行中であるか、またはすでに終了しているかに関係なく開始されている場合）、ディレクトリ作成要求が異なる仕方で処理されること、およびディレクトリが第１のファイル・システム管理ユニット３１０によって管理されるファイル・システムにおいてのみディレクトリ作成要求に応答して作成されるが、第２のファイル・システム管理ユニット４１０によって管理されるファイル・システムにパススルーされないことが好ましい。
【０２３３】
図１１Ｈは、ディレクトリ名前変更に対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。既存のディレクトリの名前を変更するために、第１のファイル・システム管理ユニット３１０においてディレクトリ名前変更要求（ディレクトリの名前および／またはパス・ロケーションを変更する）が受信されたときに、対応するディレクトリは、第１のファイル・システム管理ユニット３１０によって管理されるようなファイル・システム内でディレクトリ名前変更要求に従って名前を変更され、ディレクトリ名前変更要求は、ターゲット・ディレクトリに対する対応するディレクトリ名前変更要求を第１のファイル・システム管理ユニット３１０から第２のファイル・システム管理ユニット４１０に発行することによってパススルーされる。
【０２３４】
第２のファイル・システム管理ユニット４１０によって管理されるようなファイル・システム内でディレクトリ名前変更要求に従ってターゲット・ディレクトリの名前を変更した後、また第２のファイル・システム管理ユニット４１０から第１のファイル・システム管理ユニット３１０において名前変更確認応答を受信した後に、クライアント１００に対して、ターゲット・ディレクトリのディレクトリ名前変更の確認応答がなされる。
【０２３５】
上の説明は、仮想化フェーズにおいて、またマイグレーションがまだ始まっていないファイル・システム・オブジェクトに対するマイグレーション・フェーズにおいて仮想化されたファイル・システムにおけるファイル・システム・オブジェクトへのユーザ・アクセスに関係するが、次の説明は、各々特定のファイルのファイルコンテンツに関連付けられているマイグレーション・データ・ブロックのグループのマイグレーション・データ・ブロックに向けられている、現在マイグレーション中のファイルを含む、すなわち、複数のマイグレーション・ジョブが存在するファイルを含む、ファイルへのユーザ・アクセスを可能にするより一般的な例に関係する。図１０Ａから１０Ｅに関連して上で説明されているように、現在マイグレーションされているファイルまたはデータ・マイグレーション・ブロックのデータへのユーザ・アクセスは一時的に差し控えられるが、すでにマイグレーションされた、またはまだマイグレーションを開始していない、他のすべてのファイルまたはマイグレーション・データ・ブロックは、依然としてユーザ・アクセス可能であり得る。このことは、すべてのクライアント・アクセスの試みが、それでも、最終的には処理（サービス）され、クライアント側に対する顕著な影響は、待ち時間が加わることのみであることを意味する。
【０２３６】
図１２Ａは、マイグレーションが開始されており、進行中であるファイルへのマイグレーション・フェーズにおけるクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。第１のファイル・システム管理ユニット３１０においてターゲット・ファイル（例えば、図４のｆｉｌｅ８）に対する書き込み要求が受信されたときに、ファイルのマイグレーションが開始し、進行中である間に、書き込み要求は、ターゲット・ファイルに対する対応する書き込み要求を第１のファイル・システム管理ユニット３１０から第２のファイル・システム管理ユニット４１０に発行することによって対応する外部リンク・オブジェクト（例えば、図５のＸＬＯ８）を介してパススルーされる。第１のファイル・システム管理ユニット３１０において第２のファイル・システム管理ユニット４１０から書き込み確認応答を受信した後に、書き込み要求が、それに加えて、第１のファイル・システム内のターゲット・ファイルのマイグレーションされた部分にも実行されるものとしてよく、対応する外部リンク・オブジェクトのメタデータが更新され（例えば、ファイルの長さ、タイム・スタンプ、または書き込み操作によって変更される他のファイル属性を更新することによって）、次いで、クライアント１００に対して書き込み確認応答がなされる。ファイルの領域が、すでにマイグレーションされているが、書き込みアクセスのターゲットである領域のすべてがまだマイグレーションされていない場合、書き込みアクセスは、いくつかの実施形態では図１２Ａに従って、または他の実施形態では図１１Ａに従って処理され得る。
【０２３７】
図１２Ｂは、マイグレーションが完了している進行中であるファイルへのマイグレーション・フェーズにおけるクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している（すなわち、ターゲット・ファイルのすべてのターゲット・ブロックがすでにマイグレーションされており、その実際のユーザ・データがストレージ・ユニット３２０に記憶されている第１のファイル・システム内に存在するとき）。書き込み要求が、第１のファイル・システム管理ユニット３１０においてターゲット・ファイルに対して受信され、ファイルのマイグレーションが完了しているときに、書き込み要求は、第１のファイル・システム内でのみ実行される。対応するファイルのメタデータが更新され（例えば、ファイルの長さ、タイム・スタンプ、または書き込み操作によって変更される他のファイル属性を更新することによって）、次いで、クライアント１００に対して書き込み確認応答がなされる。
【０２３８】
上の図１２Ａおよび１２Ｂの実施形態では、マイグレーション・フェーズにおいて、ターゲット・ファイルへの書き込み要求は、ファイルがまだ部分的にしかマイグレーションされていないか、もしくはまだマイグレーションを開始していない（図１２Ａ）場合に両方のファイル・システムに適用されるか、または書き込み要求は、ターゲット・ファイルがすでに完全にマイグレーションされた後に第１のファイル・システムにのみ適用される。ターゲット・ファイルが完全にマイグレーションされるまでターゲット・ファイルに対する書き込み要求を第２のファイル・システム管理ユニット４１０にパススルーすることで、ターゲット・ファイルが完全にマイグレーションされるまでターゲット・ファイルのカノニカル・バージョンを第２のファイル・システム内に保つ、すなわち、ファイルは、第２のファイル・システム内に参照用として保たれる。これは、ファイルが、完全にはマイグレーションされていない限り第２のファイル・システムのバックアップから完全に復元され得るので障害処理を簡素化するという利点を有する。
【０２３９】
図１３Ａおよび１３Ｂを参照しつつ以下でさらに説明されているような他の実施形態では、部分的にマイグレーションされたターゲット・ファイルに対して、書き込み要求のターゲット・ブロックがすでにマイグレーションされている場合に、書き込み要求は第１のファイル・システムでのみ実行され、書き込み要求のターゲット・ブロックがまだマイグレーションされていない場合、書き込み要求は、第２のファイル・システムでのみ実行され得る。そのような実施形態では、第１のファイル・システムも第２のファイル・システムも、ターゲット・ファイル全体のカノニカル・バージョンを有し得ないが、第１のファイル・システムは、オブジェクト・ストア長の前にブロックに対するカノニカル・データを有し、オブジェクト・ストア長の後にブロックに対するカノニカル・データを有する。そのような実施形態は、マイグレーションの際にユーザ書き込みアクセスを処理する効率を最適化するのに役立ち得るが、オブジェクト・ストア長の前のブロックが第１のファイル・システムのパックアップ・コピーから復元され、オブジェクト・ストア長の後のブロックが第２のファイル・システムのパックアップ・コピーから復元されるという点においてそのような条件はデータ復旧の場合に考慮される必要がある。
【０２４０】
図１２Ｃは、マイグレーション・フェーズにおけるマイグレーションされた（または部分的に）ファイルへの読み出しアクセスのための情報交換を示している。図１２Ｃは、マイグレーションの際のマイグレーションされた（または部分的に）ファイルへの読み出しアクセスに対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。第１のファイル・システム管理ユニット３１０においてターゲット・ファイル（例えば、図４のｆｉｌｅ８）に対する属性読み出し要求が受信され、ファイルのマイグレーションがすでに完了しているときに、読み出し要求は、ストレージ・ユニット３２０に記憶されているデータに基づき第１のファイル・システム管理ユニット３１０によってローカルで実行され、読み出しデータは、第２のファイル・システム管理ユニット４１０との通信を行うことなく、読み出し要求に応答してクライアント１００に転送される。また、ファイルが、複数のデータ・マイグレーション・ブロックがすでにマイグレーションされているという点において部分的にのみマイグレーションパスされているが、１つまたは複数のデータ・マイグレーション・ブロックは依然としてマイグレーションされる必要があり、読み出し要求では、すでにマイグレーションされたブロックのユーザ・データのみを扱う場合、読み出し要求は、好ましくは、図１２Ｃで説明されているように第１のファイル・システム管理ユニット３１０によってローカルで処理される。その一方で、読み出し要求が全体としてまたは部分的に依然としてマイグレーションされる必要があるデータ・マイグレーション・ブロックのユーザ・データを扱う場合、読み出し要求は、好ましくは、図１１Ｂで説明されていいように処理される。
【０２４１】
図１２Ｄは、マイグレーション・フェーズにおけるファイル作成に対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。ターゲット・パス・ロケーション内に新規ファイルを作成するために、第１のファイル・システム管理ユニット３１０においてファイル作成要求が受信されたときに、マイグレーションの負担を軽減するために、対応するファイルは、ファイル作成要求を第２のファイル・システム管理ユニット４１０に受け渡すことなく、第１のファイル・システム管理ユニット３１０によって第１のファイル・システム内のローカルでのみターゲット・パス・ロケーションに対応するローカル・パス内に作成される。ターゲット・パス・ロケーションに対応するローカル・パス内に新規ファイルを作成した後、クライアント１００に対してターゲット・ファイルのファイル作成の確認応答がなされる。
【０２４２】
このことは、新規ファイルが第２のファイル・システム内にも反映されることなく第１のファイル・システム内にのみ作成されるのでファイル・システムがマイグレーション・フェーズにおいて異なり始めることを意味する。
【０２４３】
図１２Ｅは、マイグレーション・フェーズにおけるディレクトリ作成に対するクライアント１００と、第１のファイル・システム管理ユニット３１０と、第２のファイル・システム管理ユニット４１０との間の情報交換の図を例示している。ターゲット・パス・ロケーション内に新規の空のディレクトリを作成するために、第１のファイル・システム管理ユニット３１０においてディレクトリ作成要求が受信されたときに、対応する空のディレクトリが、ファイル作成要求を第２のファイル・システム管理ユニット４１０に受け渡すことなく、第１のファイル・システム管理ユニット３１０によって第１のファイル・システム内のローカルでのみターゲット・パス・ロケーションに対応するローカル・パス内に作成される。ターゲット・パス・ロケーションに対応するローカル・パス内に新規の空のディレクトリを作成した後、クライアント１００に対してディレクトリ作成の確認応答がなされる。
【０２４４】
このことは、新規ディレクトリが第２のファイル・システム内にも反映されることなく第１のファイル・システム内にのみ作成されるのでファイル・システムがマイグレーション・フェーズにおいて異なり始めることを意味する。新規ファイルを第１のファイル・システムにのみ作成することは、オーバーヘッド処理が回避され得る、すなわち、ファイルのデータへのアクセスを第２のファイル・システムに伝えることによって引き起こされるオーバーヘッド、ファイルのマイグレーション、および第１のファイル・システムのハードウェア・アクセラレーションからの恩恵を受けないことが、回避され得るという利点を有する。
【０２４５】
図１３Ａは、マイグレーションの際の書き込みアクセス管理の流れ図の例を示している。ステップＳ１２０１において、特定のターゲット・ファイルに書き込むためのユーザ書き込み要求が受信され、ステップＳ１２０２において、特定のターゲット・ファイルがもうマイグレーションされたか、マイグレーションされていないかがチェックされ、ステップＳ１２０２がＹＥＳを返した場合、ステップＳ１２０６において第１のファイル・システム管理ユニット３１０のファイル・システム上で書き込み要求が実行される。ステップＳ１２０２では、オブジェクト・ステータス「ｍｉｇｒａｔｅｄ」を有するターゲット・ファイルに対してＹＥＳを返す。そうでなければ、ステップＳ１２０２がＮＯを返した場合、ステップＳ１２０４においてマイグレーション・データ・ブロックがターゲット・ファイルに対してもうマイグレーションされたかどうかがチェックされる。ステップＳ１２０４は、オブジェクト・ステータス「ｎｅｅｄｓ  ｍｉｇｒａｔｉｏｎ」を有するターゲット・ファイルに対して、またはオブジェクト・ステータス「ｍｉｇｒａｔｉｎｇ」を有するターゲット・ファイルに対してＮＯを返すが、すべての関連付けられているマイグレーション・ジョブは依然としてジョブ・キュー３４６Ｃ内に保持されている。
【０２４６】
ステップＳ１２０４がＮＯを返した場合、書き込み要求は、ステップＳ１２０７においてターゲット・ファイルに関連付けられている対応する外部リンク・オブジェクトを通じて第２のファイル・システム管理ユニット４１０のファイル・システム上で実行される（例えば、上の図１１Ａに従って）。そうでなければ、ステップＳ１２０４がＹＥＳを返した場合、すなわち、１つまたは複数のデータ・マイグレーション・ジョブがすでに実行されており、１つまたは複数のマイグレーション・データ・ブロックがすでにマイグレーションされているときに、ステップＳ１２０５において、書き込み要求に従ってデータ書き込みの影響を受ける、１つまたは複数のターゲット・ブロックのうちの少なくとも１つのデータ・マイグレーション・ブロックが、もうマイグレーションされているかどうかがチェックされる。
【０２４７】
ステップＳ１２０５がＮＯを返した場合（すなわち、書き込みは、まだマイグレーションされていないデータ・ブロックに影響を及ぼすのみである）、書き込み要求は、ステップＳ１２０６においてターゲット・ファイルに関連付けられている対応する外部リンク・オブジェクトを通じて第２のファイル・システム管理ユニット４１０のファイル・システム上で実行される（例えば、上の図１１Ａに従って）。そうでなければ、ステップＳ１２０５がＹＥＳを返した場合（すなわち、書き込みは、すでにマイグレーションされている少なくとも１つのデータ・ブロックにも影響を及ぼす）、ステップＳ１２０６において第１のファイル・システム管理ユニット３１０のファイル・システム上で書き込み要求が実行されるが、これは、破線矢印を介するなどしてステップＳ１２０７においてターゲット・ファイルに関連付けられている対応する外部リンク・オブジェクトを通じて第２のファイル・システム管理ユニット４１０のファイル・システム上で追加としてさらに実行され得る（以下の書き込みアクセス実行に対するより具体的な例を参照されたい）。
【０２４８】
ステップＳ１２０７およびＳ１２０６が両方とも実行される、実施形態において、ステップＳ１２０５がＹＥＳを返し（すなわち、書き込みは、すでにマイグレーションされている少なくとも１つのデータ・ブロックにも影響を及ぼす）、例えば、特に、書き込みが、すでにマイグレーションされているデータ・ブロックのみにも影響を及ぼすときであっても、第２のファイル・システムは、ファイルが完全にマイグレーションされるまでそれぞれのファイルのカノニカル・データを有したままであり、ファイルが完全にマイグレーションされる前に障害が発生した場合、ファイルは、第２のファイル・システムにおいてカノニカル・バージョンから完全に再マイグレーションされ（再びマイグレーションされ）得る（または切り捨てられて完全にマイグレーションされることすらあり得る）。
【０２４９】
図１３Ｂは、オンデマンド・マイグレーション開始を含むマイグレーションの際の書き込みアクセス管理の流れ図の別の例を示す図である。書き込み要求は、上の図１３Ａによる方法と同様に処理されるが、ステップＳ１２０２とＳ１２０４との間にステップＳ１２０３が１つ追加され、ターゲット・ファイルがすでにマイグレーションしているかどうか、すなわち、ターゲット・ファイルのオブジェクト・ステータスが「ｍｉｇｒａｔｉｎｇ」であるかどうかがチェックされる。ステップＳ１２０３がＹＥＳを返した場合、この方法は、上の図１３Ａの方法と同様に続行する。
【０２５０】
しかしながら、ステップＳ１２０３がＮＯを返した場合、ターゲット・ファイルのオンデマンド・マイグレーションは、書き込み要求によってトリガーされ、この方法は、ターゲット・ファイルのマイグレーション・データ・ブロックを決定するステップＳ１２０８、各決定されたマイグレーション・データ・ブロックに対するマイグレーション・ジョブ（または上で説明されている実施形態のようなファイルに対するただ１つのマイグレーション・ジョブ）を作成するステップＳ１２０９、および図９Ａについて上で説明されているステップＳ１００５、Ｓ１００６、およびＳ１００７と同様にターゲット・ファイルのオブジェクト・ステータスを「ｍｉｇｒａｔｉｎｇ」に更新するステップＳ１２１０を続行する。次いで、書き込み要求は、ステップＳ１２０７においてターゲット・ファイルに関連付けられている対応する外部リンク・オブジェクトを通じて第２のファイル・システム管理ユニット４１０のファイル・システム上で実行される（例えば、上の図１１Ａに従って）。
【０２５１】
図１４Ａは、マイグレーションの際の読み出しアクセス管理の流れ図の例を示している。ステップＳ１３０１において、特定のターゲット・ファイルを読み出すためのユーザ読み出し要求が受信され、ステップＳ１３０２において、特定のターゲット・ファイルがもうマイグレーションされたか、マイグレーションされていないかがチェックされ、ステップＳ１３０２がＹＥＳを返した場合、ステップＳ１３０６において第１のファイル・システム管理ユニット３１０のファイル・システム上で読み出し要求が実行される。ステップＳ１３０２では、オブジェクト・ステータス「ｍｉｇｒａｔｅｄ」を有するターゲット・ファイルに対してＹＥＳを返す。そうでなければ、ステップＳ１３０２がＮＯを返した場合、ステップＳ１３０４においてマイグレーション・データ・ブロックがターゲット・ファイルに対してもうマイグレーションされたかどうかがチェックされる。ステップＳ１３０４は、オブジェクト・ステータス「ｎｅｅｄｓ  ｍｉｇｒａｔｉｏｎ」を有するターゲット・ファイルに対して、またはオブジェクト・ステータス「ｍｉｇｒａｔｉｎｇ」を有するターゲット・ファイルに対してＮＯを返すが、すべての関連付けられているマイグレーション・ジョブは依然としてジョブ・キュー３４６Ｃ内に保持されている。
【０２５２】
ステップＳ１３０４がＮＯを返した場合、読み出し要求は、ステップＳ１３０７においてターゲット・ファイルに関連付けられている対応する外部リンク・オブジェクトを通じて第２のファイル・システム管理ユニット４１０のファイル・システム上で実行される（例えば、上の図１１Ｂに従って）。そうでなければ、ステップＳ１３０４がＹＥＳを返した場合、すなわち、１つまたは複数のデータ・マイグレーション・ジョブがすでに実行されており、１つまたは複数のマイグレーション・データ・ブロックがすでにマイグレーションされているときに、ステップＳ１３０５において、読み出し要求に従ってデータ読み出しのターゲットである、１つまたは複数のターゲット・ブロックが、もうマイグレーションされているかどうかがチェックされる。
【０２５３】
ステップＳ１３０５がＮＯを返した場合（すなわち、読み出しは、まだマイグレーションされていない少なくとも１つのターゲット・データ・ブロックである）、読み出し要求は、ステップＳ１３０６においてターゲット・ファイルに関連付けられている対応する外部リンク・オブジェクトを通じて第２のファイル・システム管理ユニット４１０のファイル・システム上で実行される（例えば、上の図１１Ｂに従って）。そうでなければ、ステップＳ１３０５がＹＥＳを返した場合（すなわち、読み出しは、すでにマイグレーションされているデータ・ブロックのみをターゲットとする）、ステップＳ１３０６において第１のファイル・システム管理ユニット３１０のファイル・システム上で読み出し要求が実行される。
【０２５４】
図１４Ｂは、オンデマンド・マイグレーション開始を含むマイグレーションの際の読み出しアクセス管理の流れ図の別の例を示している。読み出し要求は、上の図１４Ａによる方法と同様に処理されるが、ステップＳ１３０２とＳ１３０４との間にステップＳ１３０３が１つ追加され、ターゲット・ファイルがすでにマイグレーションしているかどうか、すなわち、ターゲット・ファイルのオブジェクト・ステータスが「ｍｉｇｒａｔｉｎｇ」であるかどうかがチェックされる。ステップＳ１３０３がＹＥＳを返した場合、この方法は、上の図１４Ａの方法と同様に続行する。
【０２５５】
しかしながら、ステップＳ１３０３がＮＯを返した場合、ターゲット・ファイルのオンデマンド・マイグレーションは、読み出し要求によってトリガーされ、この方法は、ターゲット・ファイルのマイグレーション・データ・ブロックを決定するステップＳ１３０８、各決定されたマイグレーション・データ・ブロックに対するマイグレーション・ジョブを作成するステップＳ１３０９、および図９Ａについて上で説明されているステップＳ１００５、Ｓ１００６、およびＳ１００７と同様にターゲット・ファイルのオブジェクト・ステータスを「ｍｉｇｒａｔｉｎｇ」に更新するステップＳ１３１０を続行する。次いで、読み出し要求は、ステップＳ１３０７においてターゲット・ファイルに関連付けられている対応する外部リンク・オブジェクトを通じて第２のファイル・システム管理ユニット４１０のファイル・システム上で実行される（例えば、上の図１１Ｂに従って）。
【０２５６】
いくつかの実施形態では、第２のストレージ装置４００のファイル・システムからの、削除されたファイル（またはディレクトリ）の偶発的復活を回避することがさらに望ましい。例えば、ファイルまたはディレクトリが第１のストレージ装置４００におけるファイル・システム内でユーザによって削除されたが、第２のストレージ装置４００のファイル・システムに残っているときに、それぞれのファイルまたはディレクトリが、ユーザによって削除されたけれども第２のストレージ装置４００から仮想化およびその後のマイグレーションによって偶発的に復活させられる可能性がある。したがって、以前に削除されているファイルまたはディレクトリのそのような偶発的復活を回避するために、ファイル削除要求およびディレクトリ削除要求は、仮想化、マイグレーションの最中に、またファイルおよびディレクトリのマイグレーション後も、第２のストレージ装置４００にパススルーされ得る。
【０２５７】
いくつかの実施形態では、第２のストレージ装置４００のファイル・システムからの、名前変更されたファイル（またはディレクトリ）の偶発的復活を回避することがさらに望ましい。例えば、ファイルまたはディレクトリが第１のストレージ装置４００におけるファイル・システム内でユーザによって名前変更されたが、第２のストレージ装置４００のファイル・システムでは変更されずに残っているときに、それぞれの名前変更されたファイルまたはディレクトリが、ユーザによって名前変更されたけれども第２のストレージ装置４００から仮想化およびその後のマイグレーションによって偶発的に復活させられる可能性がある。したがって、以前に名前変更されたファイルまたはディレクトリのそのような偶発的復活を回避するために、名前変更要求は、２つのハード・リンクされたオブジェクトのうちの１つのみで名前変更を実行する前にファイルまたはディレクトリへのハード・リンクを作成することで第１のファイル・システム管理ユニット３１０のファイル・システムにおいて実行され得る。
【０２５８】
いくつかの実施形態では、第２のストレージ装置４００のファイル・システムからの、以前に切り捨てられたファイルの終わり部分の偶発的復活を回避することがさらに望ましい。例えば、ファイルが第１のストレージ装置４００におけるファイル・システム内でユーザによって切り捨てられたが、第２のストレージ装置４００のファイル・システムでは変更されずに残っているときに、ファイルのそれぞれの切り捨てられた終わり部分が、ユーザによって切り捨てられたけれども第２のストレージ装置４００から仮想化およびその後のマイグレーションによって偶発的に復活させられる可能性がある。したがって、以前に切り捨てられたファイルの終わり部分のそのような偶発的復活を回避するために、ファイル切り捨て要求は、仮想化、マイグレーションの最中に、またファイルのマイグレーション後も、第２のストレージ装置４００にパススルーされ得る。
【０２５９】
図１５Ａおよび１５Ｂは、マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツの例示的な概略図を示している。図１５Ａにおいて、ファイルＦ１＿Ｉのファイルコンテンツは、左側に第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内に存在する通りに例示されており、対応するファイルＦ１＿Ｘのファイルコンテンツは、右側に第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム内に存在する通りに例示されている。
【０２６０】
対応するファイルは、上で説明されているように第２のストレージ装置４００から第１のストレージ装置３００に現在マイグレーションされている。ファイルコンテンツＦ１＿Ｘは、８個のマイグレーション・データ・ブロックＢ１からＢ８に分割され、マイグレーション・データ・ブロックＢ１からＢ８のコンテンツは、左側でファイルＦ１＿Ｉに連続的にマイグレーションされる。ハッチング（ユーザ・データが記憶されているブロックを示す斜線の入っているブロック）によって例示されているように、４個のマイグレーション・データ・ブロックＢ１からＢ４は、すでにマイグレーションされており、第１のファイル管理ユニット３１０によって管理されるようなファイル・システム内に存在し、実際にはストレージ・ユニット３１０上に記憶されるが、ブロックＢ５からＢ８は、まだマイグレーションされる必要がある。
【０２６１】
したがって、ファイルＦ１＿Ｉのオブジェクト・ストア長ＯＢＪは、ファイルＦ１＿Ｉのファイルコンテンツの中のマイグレーションの終わり位置ＥＯＭを示す。その一方で、ファイルＦ１＿Ｘの対応するファイルコンテンツにおいて、ファイルの終わり位置ＥＯＦが、ファイルの（リモート）長さＬＯＦによって示される。左側のファイルの（ローカル）長さは、オブジェクト・ストア長ＯＢＪに等しいか（例えば、ブロックＢ５からＢ８に対して割り振られている記憶領域がまだない場合）、またはファイルの（リモート）長さＬＯＦに等しい可能性がある（例えば、ブロックＢ５からＢ８に対して記憶領域がすでに割り振られている場合）。
【０２６２】
図１５Ｂにおいて、ファイルのファイルＦ１＿ＩおよびＦ１＿Ｘのファイルコンテンツは、コンテンツが完全にマイグレーションされた後のものとして例示されており、ファイルのデータコンテンツのすべてがストレージ・ユニット３１０上にも存在する。したがって、すべてのマイグレーション・データ・ブロックＢ１からＢ８のデータは、マイグレーションされ、ストレージ・ユニット３１０に記憶されている。その結果、ファイルＦ１＿Ｘのファイルの（リモート）長ＬＯＦは、ファイルＦ１＿Ｉのオブジェクト・ストア長ＯＢＪに等しく、ファイルＦ１＿Ｘのファイルの終わりＥＯＦは、ファイルＦ１＿Ｉのマイグレーションの終わり位置ＥＯＭに等しい。これは、ファイルが完全にマイグレーションされていることを効率的に検出するために使用され得る（上記のステップＳ１１０８を参照）。
【０２６３】
図１６Ａおよび１６Ｂは、マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツに対する例示的なデータ書き込み手順の概略を示している。図１６Ａおよび１６Ｂにおけるマイグレーションの状況は、ファイルＦ１＿ＩおよびＦ１＿Ｘに対する上記の図１５Ａにおけるマイグレーションの状況に類似しており、マイグレーション・データ・ブロックＢ１からＢ４がすでにマイグレーションされている時間に、Ｆ１＿ＩおよびＦ１＿Ｘのファイルコンテンツに関連付けられているファイルにデータ書き込みブロックＤＷＢを書き込むデータ書き込み要求が受信されると想定される。
【０２６４】
図１６Ａにおいて、データ書き込みブロックＤＷＢのオフセットＯＦＦは、ファイルＦ１＿Ｉの現在のオブジェクト・ストア長ＯＢＪよりも小さく、したがって、データ書き込みは、すでにマイグレーションされているターゲット・ブロックＢ４に影響を及ぼすことが検出され得る。次いで、ステップＳ１２０５およびＳ１２０６に従って、データ書き込みブロックＤＷＢによるデータ書き込みは、第１のファイル・システム管理ユニット３１０によって管理されるようなファイル・システムにおいてファイルＦ１＿Ｉのファイルコンテンツに実行され、好ましくは、第２のファイル・システム管理ユニット４１０によって管理されるようなファイル・システムにおけるファイルＦ１＿Ｘのファイルコンテンツでも実行されるか、または、そうでなければ、マイグレーション・データ・ブロックＢ６およびマイグレーション・データ・ブロックＢ７の、オフセット位置ＯＦＦまでの部分のマイグレーションはその後スキップされる。
【０２６５】
図１６Ｂにおいて、データ書き込みブロックＤＷＢのオフセットＯＦＦは、ファイルＦ１＿Ｉの現在のオブジェクト・ストア長ＯＢＪよりも大きく、したがって、データ書き込みは、すでにマイグレーションされているマイグレーション・データ・ブロックに影響を及ぼさない。次いで、ステップＳ１２０５およびＳ１２０７に従って、データ書き込みブロックＤＷＢによるデータ書き込みは、第２のファイル・システム管理ユニット４１０によって管理されるようなファイル・システムにおいてファイルＦ１＿Ｘのファイルコンテンツに実行される。また、第１のファイル・システム管理ユニット３１０によって管理されるようなファイル・システムにおけるファイルＦ１＿Ｉのファイルコンテンツでも実行され得る。
【０２６６】
図１７Ａおよび１７Ｂは、マイグレーション中、およびマイグレーション後のファイルのファイルコンテンツに対する例示的なデータ・マイグレーション手順の概略を示している。図１６Ａおよび１６Ｂにおけるマイグレーションの状況は、ファイルＦ１＿ＩおよびＦ１＿Ｘに対する上記の図１５Ａにおけるマイグレーションの状況に類似しており、マイグレーション・データ・ブロックＢ１からＢ４がすでにマイグレーションされている時間に、Ｆ１＿ＩおよびＦ１＿Ｘのファイルコンテンツに関連付けられているファイルにデータ書き込みブロックＤＷＢを書き込むデータ書き込み要求が受信されると想定される。データ書き込みは、第１のファイル・システム管理ユニット３１０によって管理されるようなファイル・システムにおけるファイルＦ１＿Ｉのファイルコンテンツで実行されており、マイグレーションの終わり位置は、マイグレーション・ブロックＢ６内の位置にシフトされている。
【０２６７】
マイグレーションを目的として、マイグレーション・データ・ブロックＢ６は、マイグレーション・データ・ブロックＢ６に対するマイグレーション・ジョブが図１７Ａに示されているようにマイグレーション・ユニット３４５によって実行されると、その後全体としてマイグレーションされ得るが、マイグレーション・データ・ブロックＢ６は、第１のファイル・システム管理ユニット３１０によって管理されるようなファイル・システムにおけるファイルＦ１＿Ｉのファイルコンテンツに全体として書き込まれ得る。代替的に、マイグレーション・ユニット３４５は、データ書き込みの実行の後にファイルＦ１＿Ｉのファイルコンテンツの現在のオブジェクト長をチェックし、切り取られ、データ書き込みの実行後にファイルＦ１＿Ｉのファイルコンテンツのオブジェクト・ストア長に対応するデータ書き込みの終わり位置の位置からマイグレーション・データ・ブロックＢ６の終わり位置まで延在する調整済みのより小さいマイグレーション・データ・ブロックＢ６’をマイグレーションすることができる。
【０２６８】
図１８は、マイグレーションの際のファイルのファイルコンテンツの例示的な概略図を示している。例示的に、ユーザ書き込み要求は、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内の位置Ｗ１においてオブジェクト・ストア長ＯＢＪ１よりも大きい位置Ｗ２に対応するオフセットを有するデータ書き込みブロックＤＷＢに関連して受信され（すなわち、マイグレーション・データ・ブロックＢ１からＢ４はすでにマイグレーションされている）、この場合第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内のファイルのファイルコンテンツに書き込まれる場合に図１８においてオブジェクト・ストア長をＯＢＪ２にシフトすることになる。
【０２６９】
いくつかの実施形態では、データ書き込みブロックＤＷＢは、マイグレーション・データ・ブロックＢ６からＢ８のマイグレーションするコンテンツと一緒にマイグレーションされるように第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム内のファイルファイルコンテンツにのみ書き込まれることもあり得る。他の実施形態では、マイグレーション効率を高めるために、データ書き込みブロックＤＷＢは、第１のファイル・システム管理ユニット３１０によって管理されるファイル・システム内のファイルのファイルコンテンツに書き込まれ、位置Ｗ１から位置Ｗ２の間に穴をもたらし得る。次いで、データ書き込みブロックＤＷＢのコンテンツは、図１７ＢのブロックＢ６’について上で説明されているのと同様の方式でマイグレーションされるときにマイグレーション・ブロックＢ７を完全にスキップし、ブロックＢ６およびＢ８のサイズを調整することによってマイグレーション・データ・ブロックＢ６からＢ８のマイグレーションにおいて後でスキップされ得る。
【０２７０】
しかしながら、後者の実施形態では、上記のいくつかの実施形態について説明されているようなスパース率の検出と組み合わされたとき、すなわち、マイグレーション・データ・ブロックがゼロのビットのみを有するかどうかを検出したときに、Ｗ１とＷ２との間の穴が、データがまだマイグレーションされていないという事実、またはＷ１からＷ２までの間の穴がユーザが意図するスパース率に従って故意に作成されているという点においてデータ書き込みブロックが実際にはＷ１から新規オブジェクト・ストア長ＯＢＪ２の終わり位置に及んでいるという事実によるものであるかどうかを決定することができることに問題が生じ得る。次いで、そのような問題は、新規データ書き込みに関係するデータ・ブロックが各新規データ書き込み要求に対して１だけインクリメントされるチェックポイント数を割り当てられたときに、チェックポイント数をデータのブロックに割り当てることによって解消され得る。
【０２７１】
次いで、Ｗ１とＷ２との間の穴が、ユーザの意図するスパース率によるものである（データ書き込みブロックＤＷＢの意図されたスパースである部分として）場合、Ｗ１とＷ２との間の穴は、より新しいチェックポイント数を割り当てられる。しかしながら、Ｗ１とＷ２との間の穴が、データがまだマイグレーションされていないという事実により単に穴を表している場合に、Ｗ１からＷ２への穴は、より古いチェックポイント数を割り当てられ、その後、チェックポイント数の比較結果に基づき第２のファイル・システム管理ユニット４１０によって管理されるファイル・システム内のファイルのファイルコンテンツからマイグレーションされるものとするかどうかについて決定される。
【０２７２】
そのようなチェックポイント数は、ユーザ・データのデータ・ブロックおよびデータ・ブロックを直接指し、および／またはデータ・ブロックへの１つまたは複数の間接的ノード・ポインタを介して間接的に指す１つまたは複数のノード・ポインタを含むファイル・システム・オブジェクトのツリー構造を使用するファイル・システム管理について知られているようなファイル・システム管理パラメータであってよい。
【０２７３】
チェックポイント数を使用する上記の態様に関して、ファイル・システムのユーザ・データがデータ・ブロックに記憶される第１のファイル・システム管理の知られている方法があり、ファイル・システムは、ポインタ・ノードが１つまたは複数の他の間接的ポインタ・ノードを介して間接的にデータ・ブロックを指し、および／またはデータ・ブロックを直接的に指すことができる複数のポインタ・ノード（ときにはポインタ・ブロック、ｏｎｏｄｅｓ、ｉｎｏｄｅｓなどと称される、ファイル・システム管理メタデータとして）を含むことに留意されたい。そのようなファイル・システム管理方法において、各ポインタ・ブロックを特定のチェックポイント数に関連付け、ファイル・システムのバージョンを示すチェックポイントを有するように関わっているデータ・ブロックおよびポインタ・ノードに対するファイル・システム修正アクセス毎にチェックポイント数をインクリメントすることが知られている。
【０２７４】
例えば、チェックポイント数のそのような例示的な使用は以下で説明され、また参照により本明細書に組み込まれている、米国特許第７，４５７，８２２Ｂ１号においてより詳しく説明されている。図１９Ａから１９Ｉは、米国特許第７，４５７，８２２Ｂ１号によるファイル・システム内の例示的なチェックポイント数メカニズムを例示的に示している（その図２３から３１に対応している）。
【０２７５】
オブジェクト・ストア・サブモジュールが、オブジェクトを修正する要求を受信すると必ず、最初に、ルートｏｎｏｄｅオブジェクト（ルート・ブロック・ポインタ）をチェックし、ルートｏｎｏｄｅオブジェクトが作成されたチェックポイント数を決定する。最後の保持されているチェックポイントの作成前に、ルートｏｎｏｄｅオブジェクトが作成された場合、ルートｏｎｏｄｅオブジェクトは、チェックポイントを最後に保持していた部分である。この場合、ルートｏｎｏｄｅオブジェクトは上で説明されているように修正され得ないが、このことが保持されているチェックポイントにおけるオブジェクトのバージョンを破損するからである。むしろ、オブジェクトは、以下で例によって説明されているような特別な方法で修正される。
【０２７６】
図１９Ａは、チェックポイント数１で作成された例示的なオブジェクトに対するオブジェクト構造を示している。オブジェクトは、４つのデータ・ブロック、すなわち、データ・ブロック０（２３１０）、データ・ブロック１（２３１２）、データ・ブロック２（２３１４）、およびデータ・ブロック３（２３１６）を含む。直接ｏｎｏｄｅ（直接ブロック・ポインタ）２３０６は、データ・ブロック０（２３１０）へのポインタと、データ・ブロック１（２３１２）へのポインタとを含む。直接ｏｎｏｄｅ２３０８は、データ・ブロック２（２３１４）へのポインタと、データ・ブロック３（２３１６）へのポインタとを含む。間接ｏｎｏｄｅ（間接ブロック・ポインタ）２３０４は、間接ｏｎｏｄｅ２３０６へのポインタと、直接ｏｎｏｄｅ２３０８へのポインタとを含む。ルートｏｎｏｄｅ２３０２は、間接ｏｎｏｄｅ２３０４へのポインタを含む。すべてのｏｎｏｄｅおよびすべてのデータ・ブロックは、チェックポイント１でマークされる。
【０２７７】
そこで、保持されているチェックポイントは、チェックポイント数２で取られ、データ・ブロック０（２３１０）は、チェックポイント数３において修正されると想定する。この場合、オブジェクト・ストア・サブモジュールは、最初に、オブジェクトに対するルートｏｎｏｄｅ２３０２をロードし、ルートｏｎｏｄｅ２３０２（チェックポイント数１で作成された）がチェックポイント数２で取られる最後に保持されているチェックポイントの前に作成されたことを認識する。オブジェクトの最新のバージョンへのアクセスを最適化するために、最新のルートｏｎｏｄｅは、オブジェクト番号によって示されるセクタ番号にあることが好ましい。したがって、他の何かをする前に、オブジェクト・ストア・サブモジュールは、古いルートｏｎｏｄｅ２３０２のコピーをディスク上の空き領域に保存し、保存されたルートｏｎｏｄｅへのポインタを更新されたルートｏｎｏｄｅに書き込み、更新されたルートｏｎｏｄｅへのポインタを保存されたルートｏｎｏｄｅに書き込む。
【０２７８】
図１９Ｂは、古いルートｏｎｏｄｅのコピーがディスク上の空き領域に保存された後のオブジェクト構造を示している。特に、ブロック２４０３は、ディスク上の空き領域に保存された古いルートｏｎｏｄｅ２３０２のコピーを表す。現在のルートｏｎｏｄｅ２４０２へのポインタは、保存されたルートｏｎｏｄｅ２４０３に書き込まれる。ブロック２４０２は、チェックポイント数３を持つ更新されたルート・ノードを表す。保存されたルートｏｎｏｄｅ２４０３へのポインタは、現在のルートｏｎｏｄｅ２４０２に書き込まれる。
【０２７９】
次いで、オブジェクト・ストア・サブモジュールは、データ・ブロック０（２３１０）に対するディスクリプタに到達するまでルートｏｎｏｄｅから始まるオブジェクト構造を横断する。データ・ブロック０（２３１０）は、サイドの保持されているチェックポイントが取られる前に作成されたので、収集され得ない。その代わりに、オブジェクト・ストア・サブモジュールは、データ・ブロック０（２３１０）のコピーを、必要なデータ修正を行った上、ディスク上の空き領域に書き込む。
【０２８０】
図１９Ｃは、データ・ブロック０の修正されたコピーがディスク上の空き領域に書き込まれた後のオブジェクト構造を示している。特に、ブロック２５１０は、ディスク上の空き領域に書き込まれたデータ・ブロック０の修正されたコピーを表す。ブロック２５１０は、チェックポイント数３（すなわち、それが作成されたチェックポイント）を含む。
【０２８１】
そこで、オブジェクト・ストア・サブモジュールは、新規データ・ブロック２５１０へのポインタを直接ｏｎｏｄｅに置く必要があるが、オブジェクト・ストア・サブモジュールは、直接ｏｎｏｄｅ２３０６が保持されているチェックポイントの一構成要素であるので新規データ・ブロック２５１０へのポインタを直接ｏｎｏｄｅ２３０６内に置くことができない。したがって、オブジェクト・ストア・モジュールは、新規データ・ブロック０（２５１０）および古いデータ・ブロック１（２３１２）へのポインタを有する新規直接ｏｎｏｄｅを作成する。
【０２８２】
図１９Ｄは、新規直接ｏｎｏｄｅが新規データ・ブロックに対して作成された後のオブジェクト構造を示している。特に、ブロック２６０６は、新規直接ｏｎｏｄｅを表す。ブロック２６０６は、チェックポイント数３、さらには新規データ・ブロック０（２５１０）および古いデータ・ブロック１（２３１２）へのポインタを含む。
【０２８３】
そこで、オブジェクト・ストア・サブモジュールは、新規データ・ブロック２６０６へのポインタを間接ｏｎｏｄｅに置く必要があるが、オブジェクト・ストア・サブモジュールは、間接ｏｎｏｄｅ２３０４が保持されているチェックポイントの一構成要素であるので新規データ・ブロック２６０６へのポインタを間接ｏｎｏｄｅ２３０４内に置くことができない。したがって、オブジェクト・ストア・モジュールは、新規直接ｏｎｏｄｅ２６０６および古い直接ｏｎｏｄｅ２３０８へのポインタを有する新規間接ｏｎｏｄｅを作成する。
【０２８４】
図１９Ｅは、新規間接ｏｎｏｄｅが新規直接ｏｎｏｄｅに対して作成された後のオブジェクト構造を示している。特に、ブロック２７０４は、新規間接ｏｎｏｄｅを表す。ブロック２７０４は、チェックポイント数３、さらには新規直接ｏｎｏｄｅ２６０６および古い直接ｏｎｏｄｅ２３０８へのポインタを含む。
【０２８５】
最後に、オブジェクト・ストア・サブモジュールは、新規間接ｏｎｏｄｅ２７０４へのポインタをオブジェクトのルートｏｎｏｄｅ２４０２の現在のバージョンに書き込む。
【０２８６】
図１９Ｆは、新規間接ｏｎｏｄｅ２７０４へのポインタがオブジェクトのルートｏｎｏｄｅ２４０２の現在のバージョンに書き込まれた後のオブジェクト構造を示している。
【０２８７】
データ・ブロック０の修正の後、ブロック２４０３、２３０４、２３０６、および２３１０は、保持されているチェックポイントの構成要素であるが、オブジェクトの現在のバージョンの構成要素ではなく、ブロック２３０８、２３１２、２３１４、および２３１６は、保持されているチェックポイントとオブジェクトの現在のバージョンの両方の構成要素であり、ブロック２４０２、２７０４、２６０６、および２５１０は、オブジェクトの現在のバージョンの構成要素であるが、保持されているチェックポイントの構成要素ではないことに留意されたい。
【０２８８】
そこで、保持されているチェックポイントは、チェックポイント数４で取られ、データ・ブロック３（２３１６）は、チェックポイント数５において削除されると想定する。手順は、ここでは、データ・ブロック０を修正するための上で説明されている手順に類似しており、データ・ブロック３を削除した後のオブジェクト構造を示す図１９Ｇを参照しつつ説明されている。
【０２８９】
この場合、オブジェクト・ストア・サブモジュールは、ブロック２９０３によって表される、チェックポイント数３からの古いルートｏｎｏｄｅのコピーをディスク上の空き領域に保存し、ルートｏｎｏｄｅオブジェクト２９０２をチェックポイント数５を含むように更新し、現在および保存されたルートｏｎｏｄｅ内のさまざまなポインタを更新する。特に、保存されたルートｏｎｏｄｅ２９０３は、本質的に、現在のルートｏｎｏｄｅ２９０２とそれ以前の保存されたルートｏｎｏｄｅ２４０３との間の二重連結リスト内に挿入される。現在のルートｏｎｏｄｅ２９０２において、より古いルートｏｎｏｄｅバージョンへのポインタは、それ以前の保存されたルートｏｎｏｄｅ２４０３ではなく保存されたルートｏｎｏｄｅ２９０３を指すように更新される。それ以前のルートｏｎｏｄｅ２４０３において、より新しいルートｏｎｏｄｅバージョンへのポインタは、現在のルートｏｎｏｄｅ２９０２ではなくより新しい保存されたルートｏｎｏｄｅ２９０３を指すように更新される。保存されたルートｏｎｏｄｅ２９０３において、より新しいルートｏｎｏｄｅバージョンへのポインタは、現在のルートｏｎｏｄｅ２９０２を指すように更新されるが、より古いルートｏｎｏｄｅバージョンへのポインタは、それ以前の保存されたルートｏｎｏｄｅ２４０３を指すように更新される。
【０２９０】
次いで、オブジェクト・ストア・サブモジュールは、データ・ブロック３（２３１６）に対するディスクリプタを含む、直接ｏｎｏｄｅ２３０８に到達するまでルートｏｎｏｄｅから始まるオブジェクト構造を横断する。直接ｏｎｏｄｅ２３０８およびデータ・ブロック３（２３１６）は、既存の保持されているチェックポイントの構成要素であるので、オブジェクト・ストア・サブモジュールは、単純に、データ・ブロック３（２３１６）を削除し、直接ｏｎｏｄｅ２３０８を修正して、データ・ブロック３（２３１６）に対するディスクリプタを取り除くことはできない。したがって、オブジェクト・ストア・サブモジュールは、チェックポイント数５、およびデータ・ブロック２（２３１４）へのポインタを有するが、データ・ブロック３（２３１６）へのポインタを有しない新規直接ｏｎｏｄｅ２９０８を作成する。オブジェクト・ストア・サブモジュールは、チェックポイント数５、および古い直接ｏｎｏｄｅ２６０６および新規直接ｏｎｏｄｅ２９０８へのポインタを有する新規間接ｏｎｏｄｅ２９０４も作成する。最後に、オブジェクト・ストア・サブモジュールは、新規間接ｏｎｏｄｅ２９０４へのポインタをルートｏｎｏｄｅ２９０２の現在のバージョンに書き込む。
【０２９１】
データ・ブロック３の削除の後、ブロック２９０３、２４０３、２３０４、２７０４、２３０６、２３０８、２３１０、および２３１６は、少なくとも１つの保持されているチェックポイントの構成要素であるが、オブジェクトの現在のバージョンの構成要素ではなく、ブロック２６０６、２５１０、２３１２、および２３１４は、オブジェクトの現在のバージョンおよび少なくとも１つの保持されているチェックポイントの構成要素であり、ブロック２９０２、２９０４、および２９０８は、オブジェクトの現在のバージョンの構成要素であるが、保持されているチェックポイントの構成要素ではないことに留意されたい。
【０２９２】
オブジェクト・ストア・サブモジュールが、オブジェクト上で操作を実行するように求められたときに、それはオブジェクトを識別することを可能にするハンドルを渡される。とりわけ、このハンドルは、要求されたオブジェクトのチェックポイント数を指定する。通常、これは、オブジェクトの現在のバージョンを示す値に設定される。しかしながら、異なるチェックポイント数が指定された場合、オブジェクト・ストア・サブモジュールは、オブジェクトの要求されたバージョン上でその操作を実行する。
【０２９３】
オブジェクト・ストア・サブモジュールは、要求されたチェックポイント数またはそれ以前のチェックポイント数を有するルートｏｎｏｄｅが見つかるまで、ルートｏｎｏｄｅのより新しいバージョンからルートｏｎｏｄｅのより古いバージョンへのポインタを使用して、現在および保存されたルートｏｎｏｄｅを１ステップずつ進むことによってオブジェクトの要求されたバージョンを見つけることを試みる。次いで、オブジェクト・ストア・サブモジュールは、そのルートｏｎｏｄｅからオブジェクト構造を横断する。これは、図１９Ｇを再び参照しつつ例によって示されている。
【０２９４】
オブジェクト・ストア・サブモジュールが、チェックポイント数５に対する要求を受信した場合、オブジェクト・ストア・サブモジュールは、最初に、ルートｏｎｏｄｅオブジェクト２９０２の現在のバージョンに進む。現在のルートｏｎｏｄｅ２９０２は、要求されたチェックポイント数である、チェックポイント数５を有する。したがって、オブジェクト・ストア・サブモジュールは、ルートｏｎｏｄｅ２９０２からオブジェクト構造を横断し、オブジェクトの要求されたバージョンを提供する。特に、ルートｏｎｏｄｅ２９０２は、間接ｏｎｏｄｅ２９０４を指す。間接ｏｎｏｄｅ２９０４は、直接ｏｎｏｄｅ２６０６および２９０８を指す。直接ｏｎｏｄｅ２６０６は、修正されたデータ・ブロック０（２５１０）およびデータ・ブロック１（２３１２）を指す。直接ｏｎｏｄｅ２９０８は、データ・ブロック２（２３１４）を指す。したがって、オブジェクトの現在のバージョンは、修正されたデータ・ブロック０を含み、削除されたデータ・ブロック３を除外する。
【０２９５】
オブジェクト・ストア・サブモジュールが、チェックポイント数４に対する要求を受信した場合、オブジェクト・ストア・サブモジュールは、最初に、ルートｏｎｏｄｅオブジェクト２９０２の現在のバージョンに進む。現在のルートｏｎｏｄｅ２９０２は、あまりにも最近すぎる、チェックポイント数５を有し、したがって、オブジェクト・ストア・サブモジュールは、保存されたルートｏｎｏｄｅ２９０３までポインタを辿る。ルートｏｎｏｄｅ２９０３は、オブジェクトの要求されたバージョンよりも時間的に早い、チェックポイント数３を有する。したがって、オブジェクト・ストア・サブモジュールは、ルートｏｎｏｄｅ２９０３からオブジェクト構造を横断し、オブジェクトの要求されたバージョンを提供する。特に、ルートｏｎｏｄｅ２９０３は、間接ｏｎｏｄｅ２７０４を指す。間接ｏｎｏｄｅ２７０４は、直接ｏｎｏｄｅ２６０６および２３０８を指す。直接ｏｎｏｄｅ２６０６は、修正されたデータ・ブロック０（２５１０）およびデータ・ブロック１（２３１２）を指す。直接ｏｎｏｄｅ２３０８は、データ・ブロック２（２３１４）およびデータ・ブロック３（２３１６）を指す。したがって、チェックポイント数４に対する保持されているチェックポイントは、修正されたデータ・ブロック０を含み、データ・ブロック３も含む。
【０２９６】
オブジェクト・ストア・サブモジュールが、チェックポイント数２に対する要求を受信した場合、オブジェクト・ストア・サブモジュールは、最初に、ルートｏｎｏｄｅオブジェクト２９０２の現在のバージョンに進む。現在のルートｏｎｏｄｅ２９０２は、あまりにも最近すぎる、チェックポイント数５を有し、したがって、オブジェクト・ストア・サブモジュールは、ルートｏｎｏｄｅ２９０２内のポインタを使用して保存されたルートｏｎｏｄｅ２９０３にアクセスする。保存されたルートｏｎｏｄｅ２９０３は、これもまたあまりにも最近すぎる、チェックポイント数３を有し、したがって、オブジェクト・ストア・サブモジュールは、ルートｏｎｏｄｅ２９０３内のポインタを使用して保存されたルートｏｎｏｄｅ２４０３にアクセスする。保存されたルートｏｎｏｄｅ２４０３は、オブジェクトの要求されたバージョンよりも時間的に早い、チェックポイント数１を有する。次いで、オブジェクト・ストア・サブモジュールは、保存されたルートｏｎｏｄｅ２４０３からオブジェクト構造を横断し、オブジェクトの要求されたバージョンを提供する。特に、ルートｏｎｏｄｅ２４０３は、間接ｏｎｏｄｅ２３０４を指す。間接ｏｎｏｄｅ２３０４は、直接ｏｎｏｄｅ２３０６および２３０８を指す。直接ｏｎｏｄｅ２３０６は、データ・ブロック０（２３１０）およびデータ・ブロック１（２３１２）を指す。直接ｏｎｏｄｅ２３０８は、データ・ブロック２（２３１４）およびデータ・ブロック３（２３１６）を指す。したがって、チェックポイント数２に対する保持されているチェックポイントは、元の４個のデータ・ブロックを含む。
【０２９７】
オブジェクト・ストア・サブモジュールが、オブジェクトの要求されたバージョンを見つけることができない場合、オブジェクト・ストア・サブモジュールは、典型的には、エラー・メッセージを生成することに留意されたい。例えば、図１９Ｇを再び参照すると、オブジェクト・ストア・サブモジュールが、チェックポイント数０に対する要求を受信した場合、オブジェクト・ストア・サブモジュールは、ルートｏｎｏｄｅオブジェクト２４０３に到達するまでルートｏｎｏｄｅを１ステップずつ進む。ルートｏｎｏｄｅ２４０３は、あまりにも最近すぎるが、それ以前のルートｏｎｏｄｅへのポインタを有することもなく、したがってオブジェクト・ストア・サブモジュールはオブジェクトの要求されたバージョンを見つけることができなかったことを示すエラー・メッセージを生成する。
【０２９８】
また、保持されているチェックポイントは、修正されることを許されず、オブジェクト・ストア・サブモジュールは、読み出し操作がそれらの上で実行されることのみを許すべきである。
【０２９９】
保持されているチェックポイントを削除するプロセスには２段階ある。第１の段階は、削除される保持されているチェックポイントにおいて作成されるかまたは修正されるかのいずれかであったオブジェクトのすべてのリストを取得することを伴う。これは、すべての保持されているチェックポイントについて生成される特別なオブジェクト（修正保持リスト・オブジェクト）を用いて達成される。このオブジェクトは、ボリュームが、全く初めて、または保持されているチェックポイントが取られた後に開かれるときに作成される。オブジェクトが作成されるか、または初めてオブジェクトが修正される毎に、それが以前の保持されているチェックポイント内に作成された場合、オブジェクト番号が、このオブジェクトに書き込まれる。この特別なオブジェクトに対するオブジェクト番号は、動的スーパーブロック内に記憶される。保持されているチェックポイントを作成する前に、ソフトウェアが、その保持されているチェックポイントを後で削除したいときのためにこの特別なオブジェクトのオブジェクト番号を記録する。
【０３００】
保持されているチェックポイントを削除する第２の段階は、保持されているチェックポイント内に作成されるか、または修正される各オブジェクトについて操作の次のシーケンスを伴う。
１．別の操作によって使用され得ないようにオブジェクトをロックする。これは、保持されているチェックポイントがライブ・ファイル・システム上で削除される場合にのみ必要である。
２．保持されているチェックポイントに対するルートｏｎｏｄｅ、以前の保持されているチェックポイント（もし存在すれば）に対するルートｏｎｏｄｅ、および次の保持されているチェックポイント（もし存在すれば）または最近の保持されているチェックポイントが削除されているが、オブジェクトは削除されていない場合にオブジェクトの現在のバージョンに対するルートｏｎｏｄｅを見つける。
３．削除される保持されているチェックポイントの構造を調べて、それによって使用されるすべての間接および直接ｏｎｏｄｅならびにデータ・ブロックを識別する。そのようなｏｎｏｄｅおよびデータ・ブロック毎に、アイテムが削除される保持されているチェックポイントによってのみ使用されるかどうかを決定する。これは、オブジェクトの以前のバージョンと次のバージョンの両方における同等のアイテムを見つけることによって行われ得る。同等のアイテムが、オブジェクトの以前のバージョンと次のバージョンとで異なる場合、アイテムは、保持されているチェックポイントに固有のものである。
４．アイテムが、削除される保持されているチェックポイントによってのみ使用される場合、それはもはや必要でなく、したがって空き領域に戻される。アイテムが、次の保持されているチェックポイントによって使用される場合、アイテムは、次の保持されているチェックポイントに対する更新された保持されているオブジェクトのリスト内にすでになければ、次のチェックポイントに対する更新された保持されているオブジェクトのリストに追加される。アイテムを更新された保持されているオブジェクトのリストに追加することによって、オブジェクト・ストア・サブモジュールは、その保持されているチェックポイントが削除されることになったときにまだ必要であるかどうかをチェックすることを知る。
５．最後に、この保持されているチェックポイントに対するルートｏｎｏｄｅが、この保持されているチェックポイントでのみ使用される場合、それもまたもはや必要なく、削除される。この場合、より古い保持されているチェックポイントがある場合、削除される保持されているチェックポイントのルートｏｎｏｄｅを以前に指していた、ルートｏｎｏｄｅ（もしあれば）の次のバージョンから逆向きのポインタが、以前の保持されているチェックポイントのルートｏｎｏｄｅを指すように更新される。
【０３０１】
ファイル・システムの完全性を維持するために、保持されているチェックポイントの削除がチェックポイントを取るプロセスとどのように結び付いているかに十分注意し、チェックポイントが常にファイル・システムの一貫したビューを表すこと、および保持されているチェックポイントを削除している最中に生じたクラッシュから回復できることを確認する必要がある。
【０３０２】
保持されているチェックポイントを削除することは、例によって示され得る。図１９Ｇを再び参照し、チェックポイント数４で作成された保持されているチェックポイントが削除されると想定する。この保持されているチェックポイントは、ルートｏｎｏｄｅ２９０３によって表される。この保持されているチェックポイントによってのみ使用される構造内のアイテムはルートｏｎｏｄｅ２９０３および間接ｏｎｏｄｅ２７０４だけである。これらのｏｎｏｄｅは、空き領域に戻される。ルートｏｎｏｄｅ２９０２は、削除されたルートｏｎｏｄｅ２９０３ではなくルートｏｎｏｄｅ２４０３を指すように更新される。図１９Ｈは、チェックポイント数４に対する保持されているチェックポイントが削除された後のオブジェクト構造を示している。
【０３０３】
そこで、図１９Ｈを再び参照して、オブジェクトの現在のバージョンが削除されるが、チェックポイント数２に対する保持されているチェックポイントは依然として存在すると想定する。これは、現在のバージョンに固有の構造内のアイテムのすべてを識別し、それらを空き領域に戻す必要があるという点において保持されているチェックポイントが削除される場合に類似している。この場合、ｏｎｏｄｅ２９０４、２６０６、および２９０８は、オブジェクトの現在のバージョンに使用されるが、残っている保持されているチェックポイントには使用されず、したがって、それらのｏｎｏｄｅは、空き領域に戻される。現在のルートｏｎｏｄｅ２９０２は、削除されたオブジェクトを現在参照しているが、少なくとも１つの有効な保持されているチェックポイントへのポインタを有することを示すように修正される。図１９Ｉは、オブジェクトの現在のバージョンが削除された後のオブジェクト構造を示している。
【０３０４】
このオブジェクトに対するすべての残っている保持されているチェックポイントが削除されたとき、ルートｏｎｏｄｅ２９０２の現在のバージョンは、空き領域にではなく空きルートｏｎｏｄｅキューに戻される。
【０３０５】
いくつかの条件の下で、ライブ・ファイル・システムを保持されているチェックポイントによって表されるバージョンに戻すことが必要であるか、または望ましい場合がある。ライブ・ファイル・システムを保持されているチェックポイントによって表されるバージョンに戻すことは、多数の異なる方法で遂行され得る。ライブ・ファイル・システムを保持されているチェックポイントに戻すことは、以下のようなことを伴い得る。
１．保持されているチェックポイントに関連付けられているルートｏｎｏｄｅの関連するコンテンツを現在のルートｏｎｏｄｅにコピーすること（例えば、直接および間接ｏｎｏｄｅおよびデータ・ブロックへのポインタ、それ以前の保持されているチェックポイントへのポインタなど）。
２．先行する保持されているチェックポイント（もし存在すれば）に関連付けられているルートｏｎｏｄｅを識別し、そのルートｏｎｏｄｅ内のポインタを、ライブ・ファイル・システムが戻されようとしている保持されているチェックポイントに関連付けられているルートｏｎｏｄｅではなく現在のルートｏｎｏｄｅを指すように修正すること。
３．保持されているチェックポイントに関連付けられているルートｏｎｏｄｅを削除すること。
４．更新されたチェックポイントのオブジェクトのリストをクリアすること（すなわち、ライブ・ファイル・システムを保持されているチェックポイントによって表されるバージョンに戻した後、事実上修正されたオブジェクトはない）。
５．ライブ・ファイル・システムが戻されようとしている保持されているチェックポイントの後に取られた保持されているチェックポイントに関連付けられているルートｏｎｏｄｅおよび他のオブジェクトを含む、保持されているチェックポイントの後に作成されたすべてのオブジェクトを削除すること。
【０３０６】
以前に保持されていたチェックポイントに関連付けられているルートｏｎｏｄｅ内のポインタを修正すること以外に、もし存在すれば、より古い保持されているチェックポイントは変更されることなく残されるべきである。しかしながら、すべてのより新しい保持されているチェックポイントは、事実上削除される。
【０３０７】
保持されているチェックポイントに通常関連付けられている他のすべての機能は、ここで説明されているメカニズムを使用して達成され得る。例えば、インクリメンタル・バックアップは、更新された保持されているオブジェクトのリストを使用して連続する保持されているチェックポイントの間で何が変わったかを見いだすことによって実行され得る。
【０３０８】
上述の実施形態の構造の特徴、コンポーネント、および特定の詳細は、それぞれのアプリケーションに合わせて最適化されたさらなる実施形態を形成するように交換されるか、または組み合わされ得る。これらの修正が、当業者にとって容易にはっきり理解できるものである限り、それらは、本発明の説明を簡潔にするために、可能なあらゆる組合せを明示的に指定することなく上記の説明によって暗黙のうちに開示されるものとする。
【図１Ａ】
2016527618.tif 000003
【図１Ｂ】
2016527618.tif 000004
【図１Ｃ】
2016527618.tif 000005
【図１Ｄ】
2016527618.tif 000006
【図２】
2016527618.tif 000007
【図３】
2016527618.tif 000008
【図４】
2016527618.tif 000009
【図５】
2016527618.tif 000010
【図６Ａ】
2016527618.tif 000011
【図６Ｂ】
2016527618.tif 000012
【図７】
2016527618.tif 000013
【図８Ａ】
2016527618.tif 000014
【図８Ｂ】
2016527618.tif 000015
【図８Ｃ】
2016527618.tif 000016
【図９Ａ】
2016527618.tif 000017
【図９Ｂ】
2016527618.tif 000018
【図１０Ａ】
2016527618.tif 000019
【図１０Ｂ】
2016527618.tif 000020
【図１０Ｃ】
2016527618.tif 000021
【図１０Ｄ】
2016527618.tif 000022
【図１０Ｅ】
2016527618.tif 000023
【図１１Ａ】
2016527618.tif 000024
【図１１Ｂ】
2016527618.tif 000025
【図１１Ｃ】
2016527618.tif 000026
【図１１Ｄ】
2016527618.tif 000027
【図１１Ｅ】
2016527618.tif 000028
【図１１Ｆ】
2016527618.tif 000029
【図１１Ｇ】
2016527618.tif 000030
【図１１Ｈ】
2016527618.tif 000031
【図１２Ａ】
2016527618.tif 000032
【図１２Ｂ】
2016527618.tif 000033
【図１２Ｃ】
2016527618.tif 000034
【図１２Ｄ】
2016527618.tif 000035
【図１２Ｅ】
2016527618.tif 000036
【図１３Ａ】
2016527618.tif 000037
【図１３Ｂ】
2016527618.tif 000038
【図１４Ａ】
2016527618.tif 000039
【図１４Ｂ】
2016527618.tif 000040
【図１５Ａ】
2016527618.tif 000041
【図１５Ｂ】
2016527618.tif 000042
【図１６Ａ】
2016527618.tif 000043
【図１６Ｂ】
2016527618.tif 000044
【図１７Ａ】
2016527618.tif 000045
【図１７Ｂ】
2016527618.tif 000046
【図１８】
2016527618.tif 000047
【図１９Ａ】
2016527618.tif 000048
【図１９Ｂ】
2016527618.tif 000049
【図１９Ｃ】
2016527618.tif 000050
【図１９Ｄ】
2016527618.tif 000051
【図１９Ｅ】
2016527618.tif 000052
【図１９Ｆ】
2016527618.tif 000053
【図１９Ｇ】
2016527618.tif 000054
【図１９Ｈ】
2016527618.tif 000055
【図１９Ｉ】
2016527618.tif 000056
【手続補正書】
【提出日】平成28年2月23日(2016.2.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータと第２のファイル・システムを管理する第２の装置とに接続される第１の装置であって、
前記コンピュータと前記第２の装置とに接続される通信手段と、
前記第２のファイル・システムの第２の構造情報に基づき、第１のファイル・システムの第１の構造情報を作成するファイル・システム仮想化プロセスを実行する制御手段と
を備え、
前記第２の構造情報は、前記第２のファイル・システム内に存在する１つまたは複数のディレクトリおよび１つまたは複数のファイル間をリンクし、
前記制御手段は、
ファイル・システム・マイグレーション・プロセスを開始する命令があった後、前記命令されたファイル・システム・マイグレーション・プロセスを実行して、前記第２のファイル・システム内に存在するそれぞれの関連付けられているファイルから前記第１のファイル・システムの前記第１の構造情報の１つまたは複数の仮想化されたファイルの各々についてファイルコンテンツデータをマイグレーションし、
前記コンピュータから前記第１のファイル・システム内の第１ファイルを修正する第１要求を受信したときに、
前記第１ファイルに対応する仮想化されたファイルが前記第１のファイル・システム内に存在する場合に前記第１要求に従い前記第１ファイルに対応する前記第２の構造情報のそれぞれのファイルを修正するために、前記第２の装置と通信し、
前記第１ファイルに対応するマイグレーションされたファイルが前記第１のファイル・システム内に存在する場合に、前記要求に従い、前記第１ファイルに対応する前記第１の構造情報のそれぞれのファイルを修正する前記第１要求を実行する、
装置。
【請求項２】
前記制御手段は、以下の（Ａ）及び（Ｃ）、
（Ａ）前記マイグレーション・プロセスを開始することがまだ命令されていない場合に、前記第１のファイル・システムの前記第１の構造情報の仮想化されたファイルについてのファイルコンテンツデータのマイグレーションを非実行とすること、
（Ｂ）前記ファイル・システム仮想化プロセスの実行を完了する前に前記ファイル・システム・マイグレーション・プロセスが命令された場合に、前記ファイル・システム仮想化プロセスを実行している間に前記命令されたファイル・システム・マイグレーション・プロセスの実行を開始すること、及び、
（Ｃ）前記ファイル・システム仮想化プロセスの実行を完了した後に前記ファイル・システム・マイグレーション・プロセスが命令された場合に、前記ファイル・システム仮想化プロセスの実行を完了した後に前記命令されたファイル・システム・マイグレーション・プロセスの実行を開始すること、
のうちの少なくとも１つを実行する、
請求項１に記載の装置。
【請求項３】
前記制御手段は、前記ファイル・システム仮想化プロセスの実行を完了する前に前記ファイル・システム・マイグレーション・プロセスが命令された場合に、前記ファイル・システム仮想化プロセスを実行することが完了したときに前記命令されたファイル・システム・マイグレーション・プロセスの実行を開始する、
請求項１に記載の装置。
【請求項４】
前記ファイル・システム仮想化プロセスを実行することは、完全な第１のファイル・システム構造が前記第２のファイル・システムの前記第２の構造情報に従って前記第１のファイル・システム内に作成されたときに完了し、それぞれの外部リンク・オブジェクトは、前記第２のファイル・システム内に存在する各ファイルに対して前記第１のファイル・システム内の仮想化されたファイルとして存在し、それぞれのディレクトリは、前記第２の構造情報に従って前記第２のファイル・システム内に存在する各ディレクトリに対して前記第１のファイル・システム内の仮想化されたファイル・システム・オブジェクトとして存在する、
請求項１乃至３のうちのいずれか１項に記載の装置。
【請求項５】
前記第１の構造情報の作成中に、前記コンピュータから前記第１要求を受信したときに、前記制御手段は、
前記第１ファイルが、仮想化されたファイルとしても、前記第１のファイル・システムにおけるマイグレーションされたファイルとしても存在しない場合に、前記第１ファイルに対応する仮想化されたファイルを前記第１のファイル・システム内に作成し、
前記第１要求に従い前記第１ファイルに対応する前記第２の構造情報のそれぞれのファイルを修正するために前記第２の装置と通信する、
請求項１乃至４のうちのいずれか１項に記載の装置。
【請求項６】
前記制御手段は、前記第１ファイルに対応する前記仮想化されたファイルが前記第１のファイル・システム内に存在するか、または前記第１のファイル・システム内に作成されている場合に、前記第１ファイルに対応する前記仮想化されたファイルの少なくともメタデータを更新する、
請求項１乃至５のうちのいずれか１項に記載の装置。
【請求項７】
前記第１の構造情報の作成中に、前記制御手段は、前記第１のファイル・システム内に仮想化されたファイル・システム・オブジェクトを作成し、前記第１のファイル・システムの各仮想化されたファイル・システム・オブジェクトは前記第２のファイル・システム内に存在するそれぞれのファイル・システム・オブジェクトに関連付けられる、
請求項１乃至６のうちのいずれか１項に記載の装置。
【請求項８】
前記第２のファイル・システム内に存在する前記それぞれのファイル・システム・オブジェクトがディレクトリであるときに、前記制御手段は、前記第１のファイル・システム内に仮想化されたファイル・システム・オブジェクトとしてそれぞれの関連付けられているディレクトリを作成し、
前記第２のファイル・システムに存在する前記それぞれのファイル・システム・オブジェクトがファイルであるときに、前記制御手段は、前記第１のファイル・システム内に仮想化されたファイルとしてそれぞれの関連付けられている外部リンク・オブジェクトを作成する、
請求項７に記載の装置。
【請求項９】
前記制御手段は、前記第２のファイル・システム内に存在する前記ファイルのファイルコンテンツデータが前記ファイル・システム・マイグレーション・プロセスにおいて前記第２のファイル・システムから前記第１のファイル・システムに完全にマイグレーションされるときに、前記第２のファイル・システム内に存在するファイルに関連付けられている作成された外部リンク・オブジェクトを削除する、
請求項８に記載の装置。
【請求項１０】
前記第１ファイルに対応するそれぞれの仮想化されたファイルについてのファイルコンテンツデータのマイグレーション中に、前記コンピュータから前記第１のファイル・システム内の第２ファイルを修正する第２要求を受信したときに、前記制御手段は、
前記第２要求に従い前記第２ファイルに対応する前記第２の構造情報の前記それぞれのファイルを修正するために前記第２の装置と通信し、
前記第２要求が、前記第２ファイルに対応する、前記第１の構造情報の前記部分的にマイグレーションされたファイル、にすでにマイグレーションされているファイルデータコンテンツに関係するときに、前記第２要求に従い前記第２ファイルに対応する前記第１の構造情報の前記それぞれの部分的にマイグレーションされたファイルを修正する前記第２要求を実行する、
請求項１乃至９のうちのいずれか１項に記載の装置。
【請求項１１】
前記コンピュータから前記第１のファイル・システム内の第３ファイルを読み出す第１読み出し要求を受信したときに、前記制御手段は、
前記第３ファイルに対応する仮想化されたファイルが前記ファイル・システム内に存在する場合に前記第１読み出し要求に従い前記第３ファイルに対応する前記第２の構造情報のそれぞれのファイルから読み出すために前記第２の装置と通信し、
前記第３ファイルに対応するマイグレーションされたファイルが前記第１のファイル・システム内に存在する場合に前記第１読み出し要求に従い前記第３ファイルに対応する前記第１の構造情報のそれぞれのファイルを修正する前記第１読み出し要求を実行する、
請求項１乃至１０のうちのいずれか１項に記載の装置。
【請求項１２】
前記第１ファイルに対応するそれぞれの仮想化されたファイルについてのファイルコンテンツデータをマイグレーション中に、前記コンピュータから前記第１のファイル・システム内の第４ファイルから読み出す第２読み出し要求を受信したときに、前記制御手段は、
前記第４ファイルのコンテンツデータが前記第１のファイル・システムにまだ完全にはマイグレーションされていない場合に前記第２読み出し要求に従い前記第４ファイルに対応する前記第２の構造情報のそれぞれのファイルから読み出すために前記第２の装置と通信し、
前記第２読み出し要求が、前記第４ファイルに対応する、前記第１の構造情報の前記部分的にマイグレーションされたファイル、にすでにマイグレーションされているファイルデータコンテンツに関係する場合に、前記第２読み出し要求に従い前記第４ファイルに対応する前記第１の構造情報の前記それぞれの部分的にマイグレーションされたファイルから前記第４ファイルのコンテンツデータを読み出す、
請求項１乃至１１のうちのいずれか１項に記載の装置。
【請求項１３】
前記コンピュータから前記第１のファイル・システム内の第５ファイルの属性を読み出す第３読み出し要求を受信したときに、前記制御手段は、
前記第５ファイルのファイルコンテンツデータが前記第２のファイル・システムから前記第１のファイル・システムにまだ完全にはマイグレーションされていない場合に、前記第５ファイルに対応する前記第１のファイル・システム内のそれぞれの仮想化されたファイルのメタデータに基づき前記第３読み出し要求に応答して属性を返し、
前記第５ファイルのファイルコンテンツデータが前記第２のファイル・システムから前記第１のファイル・システムに完全にマイグレーションされた場合に、前記第５ファイルに対応する前記第１のファイル・システム内のそれぞれのマイグレーションされたファイルの属性に基づき前記３読み出し要求に応答して属性を返し、
前記コンピュータから前記第１のファイル・システム内のディレクトリの属性を読み出す第４読み出し要求を受信したときに、前記制御手段は、その要求されたディレクトリに対応する前記第１のファイル・システム内のそれぞれのディレクトリのメタデータに基づき前記第４読み出し要求に応答して属性を返す、
請求項１乃至１２のうちのいずれか１項に記載の装置。
【請求項１４】
第１のファイル・システムを管理する第１の装置と、
第２のファイル・システムを管理する第２の装置と
を備え、
前記１の装置は、請求項１乃至１３のうちのいずれか１項に記載された第１の装置である、
データ・ストレージ・システム。
【請求項１５】
コンピュータと第２のファイル・システムを管理する第２の装置とに接続され第１のファイル・システムを管理する第１の装置に、
前記第２の装置から受信された、前記第２のファイル・システムの第２の構造情報に基づき、前記第１のファイル・システムの第１の構造情報を作成するファイル・システム仮想化プロセスを実行し、
前記第２の構造情報は、前記第２のファイル・システム内に存在する１つまたは複数のディレクトリおよび１つまたは複数のファイル間をリンクし、
前記ファイル・システム・マイグレーション・プロセスを開始する命令があった後、前記第２のファイル・システム内に存在するそれぞれの関連付けられているファイルから前記第１のファイル・システムの前記第１の構造情報の１つまたは複数の仮想化されたファイルの各々についてファイルコンテンツデータをマイグレーションし、
前記コンピュータから前記第１のファイル・システム内のファイルを修正する要求を受信したときに、
前記要求されたファイルに対応する仮想化されたファイルが前記第１のファイル・システム内に存在する場合に前記要求に従い前記要求されたファイルに対応する前記第２の構造情報のそれぞれのファイルを修正するために前記第２の装置と通信し、
前記要求されたファイルに対応するマイグレーションされたファイルが前記第１のファイル・システム内に存在する場合に前記要求に従い前記要求されたファイルに対応する前記第１の構造情報のそれぞれのファイルを修正する前記要求を実行する、
ことを実行させるコンピュータ・プログラム。
【国際調査報告】
2016527618.tif 000057
2016527618.tif 000058