(57)【要約】      （修正有）【課題】スナップショットを運用するサーバ装置間でファイルレベルのデータの移行を行っても、スナップショットをクライアントに継続して提供する。【解決手段】複数の末端サーバ１０４と中間サーバ１０３およびクライアント１０１がネットワーク１０５を介して互いに接続されているストレージシステムにおいて、移行元の末端サーバ１０４から中間サーバ１０３を介して移行先の末端サーバ１０４にファイルレベルのデータを転送するときに、差分ボリュームのデータも同時に転送し、移行先の末端サーバ１０４において、転送されたデータを基にスナップショットボリュームのデータを再構成し、再構成されたデータに関する応答情報をクライアント１０１に転送する。【選択図】図１
2009217404.tif 000002
【特許請求の範囲】
【請求項１】
複数のボリュームに格納されたデータを管理する複数のサーバ装置がネットワークを介して接続され、前記各サーバ装置が前記ネットワークを介してデータの授受を行うストレージシステムにおいて、
前記各サーバ装置は、ファイルのデータを格納する第１のボリュームと前記ファイルに関連するデータを格納する第２のボリュームを備え、
前記サーバ装置のうち、前記ネットワークに接続されたクライアントからの要求の対象となるファイルを管理する移行元のサーバ装置は、前記第１のボリュームに格納されているファイルのデータと前記第２のボリュームに格納されているデータを移行先のサーバ装置に転送し、前記移行先のサーバ装置は、前記第１のボリュームに格納されたファイルのうち過去のある時点のファイルイメージを仮想的に構成したスナップショットボリュームのデータを前記転送されたデータを基に再構成し、前記クライアントからの要求を基に前記クライアントからの要求に対する応答情報を前記クライアントに転送してなる、ストレージシステム。
【請求項２】
前記各サーバ装置は、前記各ボリュームを管理するための管理表を備え、前記移行元のサーバ装置は、前記各ボリュームのデータを転送したときに、前記転送したデータの内容に合わせて前記管理表を更新し、前記移行先のサーバ装置は、前記転送されたデータを前記各ボリュームに格納するとともに、前記各ボリュームに格納されたデータの内容に合わせて前記管理表を更新してなる、請求項１に記載のストレージシステム。
【請求項３】
前記各サーバ装置の第１のボリュームは、ファイルシステムボリュームで構成され、前記各サーバ装置の第２のボリュームは、差分スナップショットボリュームで構成され、前記移行先のサーバ装置は、前記ファイルシステムボリュームのデータと前記差分スナップショットボリュームの差分データを基に前記スナップショットボリュームのデータを再構成してなる、請求項１に記載のストレージシステム。
【請求項４】
前記サーバ装置として、前記移行元のサーバ装置と前記移行先のサーバ装置との間のデータを中継するとともに、前記クライアントと情報の授受を行う中間サーバ装置を備え、
前記移行元のサーバ装置は、移行前のファイルレベルのデータの識別子を前記中間サーバ装置に送信し、
前記移行先のサーバ装置は、移行先のファイルレベルのデータの識別子を前記中間サーバ装置に送信し、
前記中間サーバ装置は、前記移行前のファイルレベルのデータの識別子と前記移行先のファイルレベルのデータの識別子との対応関係を示す情報を保持し、前記クライアントから前記移行前のデータの識別子に対応した要求があったときに、前記識別子の対応関係を示す情報から前記移行先のデータの識別子を取得し、当該移行先のデータの識別子を用いて前記移行先のサーバ装置へ前記クライアントからの要求を転送してなる、請求項１に記載のストレージシステム。
【請求項５】
前記サーバ装置として、前記移行元のサーバ装置と前記移行先のサーバ装置との間のデータを中継するとともに、前記クライアントと情報の授受を行う中間サーバ装置を備え、
前記移行元のサーバ装置は、移行前のファイルレベルのデータのスナップショットファイルの識別子を前記中間サーバ装置に送信し、
前記移行先のサーバ装置は、移行先のファイルレベルのデータのスナップショットファイルの識別子を前記中間サーバ装置に送信し、
前記中間サーバ装置は、前記移行前のファイルレベルのデータのスナップショットファイルの識別子と前記移行先のファイルレベルのデータのスナップショットファイルの識別子との対応関係を示す情報を保持し、前記クライアントから前記移行前のデータのスナップショットファイルの識別子に対応した要求があったときに、前記識別子の対応関係を示す情報から前記移行先のデータのスナップショットファイルの識別子を取得し、当該移行先のデータのスナップショットファイルの識別子を用いて前記移行先のサーバ装置へ前記クライアントからの要求を転送してなる、請求項１に記載のストレージシステム。
【請求項６】
前記移行元のサーバ装置は、移行前のファイルレベルのデータのスナップショットファイルの識別子を前記移行先のサーバ装置から取得し、当該取得した移行先のスナップショットファイルの識別子を移行元のスナップショットファイルのｉノード情報の拡張属性に格納し、前記クライアントから前記移行前のファイルレベルのデータのスナップショットファイルの識別子に対応した要求があったときには、前記移行元のスナップショットファイルのｉノード情報の拡張属性に格納された、前記移行先のスナップショットファイルの識別子を用いて前記移行先のサーバ装置へ前記クライアントからの要求を転送してなる、請求項１に記載のストレージシステム。
【請求項７】
複数のボリュームに格納されたデータを管理する複数のサーバ装置がネットワークを介して接続され、前記各サーバ装置が前記ネットワークを介してデータの授受を行うストレージシステムにおいて、
前記各サーバ装置は、ファイルのデータを格納する第１のボリュームと前記ファイルに関連するデータを格納する第２のボリュームを備え、
前記サーバ装置のうち、前記ネットワークに接続されたクライアントからの要求の対象となるファイルを管理する移行元のサーバ装置は、前記第１のボリュームに格納されているファイルのデータを移行先のサーバ装置に転送するとともに、前記第１のボリュームに格納されているファイルのデータを前記第２のボリュームに格納し、前記第１のボリュームに格納されたファイルのうち過去のある時点のファイルイメージを仮想的に構成したスナップショットボリュームのデータを前記第２のボリュームに格納されたデータを基に再構成し、前記クライアントからの要求を基に前記クライアントからの要求に対する応答情報を前記クライアントに転送してなる、ストレージシステム。
【請求項８】
前記各サーバ装置は、前記各ボリュームを管理するための管理表を備え、前記移行元のサーバ装置は、前記第１のボリュームのデータを前記第２のボリュームに格納したときに、前記第２のボリュームに格納されたデータの内容に合わせて前記管理表を更新し、前記移行先のサーバ装置は、前記転送されたデータを前記第１のボリュームに格納するとともに、前記第１のボリュームに格納されたデータの内容に合わせて前記管理表を更新してなる、請求項７に記載のストレージシステム。
【請求項９】
前記各サーバ装置の第１のボリュームは、ファイルシステムボリュームで構成され、前記各サーバ装置の第２のボリュームは、差分スナップショットボリュームで構成され、前記移行元のサーバ装置は、前記差分スナップショットボリュームに格納されたファイルのデータと差分データを基に前記スナップショットボリュームのデータを再構成してなる、請求項７に記載のストレージシステム。
【請求項１０】
前記サーバ装置として、前記移行元のサーバ装置と前記移行先のサーバ装置との間のデータを中継するとともに、前記クライアントと情報の授受を行う中間サーバ装置を備え、
前記移行元のサーバ装置は、移行前のファイルレベルのデータの識別子を前記中間サーバ装置に送信し、
前記移行先のサーバ装置は、移行先のファイルレベルのデータの識別子を前記中間サーバ装置に送信し、
前記中間サーバ装置は、前記移行前のファイルレベルのデータの識別子と前記移行先のファイルレベルのデータの識別子との対応関係を示す情報を保持し、前記クライアントから前記移行前のデータの識別子に対応した要求があったときに、前記識別子の対応関係を示す情報から前記移行先のデータの識別子を取得し、当該移行先のデータの識別子を用いて前記移行先のサーバ装置へ前記クライアントからの要求を転送してなる、請求項７に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに係り、特に、複数のサーバ装置が連携して一つの名前空間を提供するグローバルスペースにおけるサーバ装置でファイルレベルのデータの移行を行うときの技術に関する。
【背景技術】
【０００２】
グローバルネームスペース（Global Name Space、以下、GNS）は、複数のファイルサーバが公開する共有ディレクトリを統合し、擬似的に単一のファイルシステムを構築する技術である。GNSでは、特定のサーバに対するアクセス負荷や使用容量の平滑化し、または、アクセス頻度の高いデータを高速、高価、低容量のストレージに保管し、アクセス頻度の低いデータを低速、安価、大容量のストレージに保管する、階層ストレージ管理（Hierarchical Storage Management))等の目的で、ファイルレベルのデータの移行を行う。
【０００３】
ファイルサーバ間でデータ移行を行う方法としては、クライアントとファイルサーバとの間の通信を中継する装置（以下、中間サーバ）を用いる方法がある（例えば特許文献１）。
【０００４】
中間サーバは、あるクライアントからあるオブジェクト（ファイル）に対するファイルアクセス要求を受けた場合、当該オブジェクトが存在するファイルサーバに、そのファイルアクセス要求を、そのファイルサーバが理解できる形式に変換して転送する処理を行う。
【０００５】
また、中間サーバは、GNSを提供し、ファイルサーバ間でのデータ移行を行う際、クライアントに対して、データの移行を隠蔽したまま、移行前と同一の名前空間で移行後のファイルアクセスを可能にする。
【０００６】
一方、ファイルサーバには、ファイルやファイルシステムのバックアップやリカバリ等に使用する目的で、ファイルシステムのある時点でのイメージを取得するスナップショットと呼ばれる技術がある（例えば特許文献２や特許文献３）。定期的にスナップショットを取得し、適当な位置にマウントしておくことによって、万が一ファイルやファイルシステムに障害が発生しても、正常時に取得したスナップショットを参照することで、比較的容易にリカバリすることができる。
【０００７】
スナップショットは、データそのもののコピーではなく、更新されたデータブロックの差分データのみ保持する差分スナップショットが一般的であり、差分データとオリジナルのデータから、ブロックコピー管理テーブルや使用ブロック管理テーブル等を用いて、仮想的なファイルシステムのイメージを構成している。
【０００８】
【特許文献１】米国公開特許公報US2004/0267830 "TRANSPARENT FILE MIGRATION USING NAMESPACE REPLICATION"
【特許文献２】米国公開特許公報US2004/0186900 "METHOD OF MAINTAINING A PLURALITY OF SNAPSHOTS, SERVER APPARATUS AND STORAGE APPARATUS"
【特許文献３】米国公開特許公報US2006/0174075 "METHOD FOR CREATING AND PRESERVING SNAPSHOTS IN A STORAGE SYSTEM"
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前記スナップショットを提供するためのブロックコピー管理テーブル及び使用ブロック管理テーブルは、当該スナップショットを提供するサーバ内部でのみ管理されるため、外部のサーバやクライアントに対しては、ブロックの概念を隠蔽し、ファイルレベルでのデータのやり取りを提供する。即ち、ブロック単位でのデータのやり取りのインタフェースはない。そのため、GNSでファイルレベルのデータ移行を行うと、移行元のオリジナルのデータが削除され、当該ファイルのスナップショットの参照ができなくなる。
【００１０】
また、何らかの方法でオリジナルのデータとスナップショットのブロックデータを移行したとしても、データの移行前後で同じアドレスに配置されるとは限らないため、単にブロック管理表等をコピーしただけでは、スナップショットの再構成はできない。
【００１１】
本発明の目的は、スナップショットを運用するサーバ装置間でファイルレベルのデータの移行を行っても、スナップショットをクライアントに継続して提供することができるストレージシステムを提供することにある。
【課題を解決するための手段】
【００１２】
前記目的を達成するために、本発明は、サーバ装置間でデータの授受を行う過程で、クライアントからの要求を基に移行元のサーバ装置から移行先のサーバ装置にファイルレベルのデータを移行するに際して、クライアントからの要求に応答するサーバ装置において、第１のボリュームに格納されたファイルのデータと第２のボリュームに格納されたファイルに関連するデータを基にスナップショットボリュームのデータを再構成し、再構成されたスナップショットボリュームのデータを含む応答情報をクライアントに転送することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、スナップショットを運用するサーバ装置間でファイルレベルのデータの移行を行っても、スナップショットをクライアントに継続して提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態の一例について、図面に基づき具体的に説明する。
【実施例１】
【００１５】
本発明の実施例１について、図１乃至図１８、図２４、及び図２６乃至図３０を用いて説明する。実施例１は、本発明のサーバ装置がスナップショットの提供やファイルレベルのデータ及び当該ファイルの差分データの移行を行う末端サーバとして動作し、中間サーバがオブジェクトID対応管理テーブルを保持、移行元オブジェクトへのアクセスを移行先へ振り分ける形態である。
【００１６】
以下、図面の説明に続いて、実施例１の処理手順について説明する。図１は、本発明のサーバ装置を用いたストレージシステムの構成例を示す図である。ストレージシステムは、少なくとも１つのクライアント１０１と、少なくとも１つの管理端末１０２と、少なくとも１つの中間サーバ１０３と、少なくとも１つの末端サーバ１０４とが、ネットワーク１０５（例えばLAN(Local Area Network)）に接続される。中間サーバ１０３と末端サーバ１０４は、各々の機能を兼ねることで、同一のサーバ上で実現されていても良い。
【００１７】
クライアント１０１は、中間サーバ１０３または末端サーバ１０４が提供するファイルサービスを利用する装置である。管理端末１０２は、ストレージシステムの管理者が、末端サーバ１０４間のデータの移行やスナップショット取得指示等の各種管理を行う装置である。
【００１８】
中間サーバ１０３は、クライアント１０１と末端サーバ１０４との中間に位置し、クライアント１０１から末端サーバ１０４への要求や、末端サーバ１０４からクライアント１０１への応答を中継する。クライアント１０１から中間サーバ１０３及び末端サーバ１０４への要求は、何らかの処理（例えば、ファイルやディレクトリ等のオブジェクトの取得等）を要求するメッセージ信号であり、中間サーバ１０３及び末端サーバ１０４からクライアント１０１への応答は、要求に対して応答するメッセージ信号である。
【００１９】
なお、中間サーバ１０３は、クライアント１０１と末端サーバ１０４との通信を中継するようにそれらの間に論理的に位置すれば良い。クライアント１０１、中間サーバ１０３及び末端サーバ１０４が同一のネットワーク１０５に接続されているが、論理的には、中間サーバ１０３は、各クライアント１０１と各末端サーバ１０４との間に配置されており、クライアント１０１と末端サーバ１０４との通信を中継する。
【００２０】
中間サーバ１０３は、要求や応答の中継機能のみならず、クライアント１０１にファイルサービスを提供するファイルサーバ機能も備える。中間サーバ１０３は、ファイルサービスを提供する際、仮想化された名前空間を構築して、その仮想的な名前空間をクライアント１０１に提供する。仮想的な名前空間は、複数の中間サーバ１０３や末端サーバ１０４のファイルシステムのうち、共有可能な全部または一部を統合して、単一の擬似的なファイルシステムとしたものである。
【００２１】
具体的には、例えば、或るサーバ１０３または１０４が管理するファイルシステム（ディレクトリツリー）の一部(X)と他のサーバ１０３または１０４が管理するファイルシステム（ディレクトリツリー）の一部(Y)が共有可能であった場合に、中間サーバ１０３は、XとYとを含んだ単一の擬似的なファイルシステム（ディレクトリツリー）を構築して、クライアント１０１に提供することができる。この場合のXとYとを含んだ単一の擬似的なファイルシステム（ディレクトリツリー）が、仮想化された名前空間であり、一般に、GNS(Global Name Space)と呼ばれる。
【００２２】
一方、中間サーバ１０３や末端サーバ１０４の各々が管理しているファイルシステムを、「ローカルファイルシステム」と呼ぶことがある。また、以下の説明において、ローカルファイルシステムの全部または一部であり、共有可能な部分（上記の例ではXとY）を、すなわち、ローカルファイルシステムの論理的な公開単位を、「共有単位」と呼ぶことがある。
【００２３】
本実施形態では、各共有単位に共有単位を同定するための識別子である共有IDが割り当てられ、中間サーバ１０３は、共有IDを利用することにより、クライアント１０１からのファイルアクセス要求の転送を行うことができる。共有単位には、１つ以上のオブジェクト（例えばディレクトリやファイル）が含まれる。末端サーバ１０４は、クライアント１０１に、ファイルの作成や削除、読み出し、書き込み、移動等のファイルサービスを提供したり、スナップショットを提供したりする本発明のファイルサーバ装置である。
【００２４】
図２は、サーバ２０１（中間サーバ１０３または末端サーバ１０４）の構成例を示すブロック図である。
サーバ２０１は、少なくとも１つのプロセッサ（例えばCPU）２０２と、メモリ２０３と、メモリ２０３に対する入出力のバスである入出力バス２０６と、記憶装置２０８と、メモリ２０３、記憶装置２０８及びネットワーク１０５に対する入出力を制御する入出力コントローラ２０７とを備える。メモリ２０３は、プロセッサ２０２で実行されるプログラム２０５及び各種管理テーブル２０４を記憶する。これらプログラム２０５と管理テーブル２０４の詳細は後述する。
【００２５】
記憶装置２０８は、１つ以上の物理的な記憶装置（例えばハードディスク或いはフラッシュメモリ等）の記憶空間を基に形成された論理的な記憶装置（論理ボリューム）であっても良いし、物理的な記憶装置であっても良い。すなわち、記憶装置２０８は、外部のネットワーク（例えばSAN(Storage Area Network)等）を通して接続されたストレージ装置の提供する論理的なボリュームであっても良い。記憶装置２０８は、ファイル等のデータを管理するファイルシステム２０９や、スナップショットの差分データ等を格納する。
【００２６】
図３は、中間サーバ１０３のメモリ２０３に記憶されるプログラム２０５と管理テーブル２０４を示した図である。中間サーバ１０３のプログラム２０５は、ファイル共有プログラム３０１と、マイグレーションプログラム３０２と、GNS管理プログラム３０３から構成される。ファイル共有プログラム３０１は、クライアント１０１と末端サーバ１０４の間のデータのやり取りを処理する。
【００２７】
具体的には、クライアント１０１からの末端サーバ１０４へのファイルデータ処理要求を受信し、適切な末端サーバ１０４へ要求を送信する。その後、末端サーバ１０４からの応答を受信し、応答結果をクライアント１０１へ送信する。マイグレーションプログラム３０２は、オブジェクトID対応管理テーブル３０７の管理を行う。具体的には、データ移行時に、末端サーバ１０４から移行前後のオブジェクトIDを受信し、オブジェクトID対応管理テーブル３０７に追記する。
GNS管理プログラム３０３は、GNSパス名の解決等を行う。具体的には、ファイル共有プログラム３０１がクライアント１０１から受信したGNSパスの解決要求に対し、GNS管理テーブル３０６を参照して、適切な末端サーバ１０４と当該末端サーバ１０４のローカルパスを選択し、ファイル共有プログラム３０１を通してクライアント１０１へ返信する。
【００２８】
中間サーバ１０３の管理テーブル２０４は、共有情報管理テーブル３０４と、サーバ情報管理テーブル３０５と、GNS管理テーブル３０６と、オブジェクトID対応管理テーブル３０７から構成される。共有情報管理テーブル３０４は、共有に関する情報を管理するテーブルで、詳細は後述する。サーバ情報管理テーブル３０５は、サーバに関する情報を管理するテーブルで、詳細は後述する。GNS管理テーブル３０６は、GNSに関する情報を管理するテーブルで、詳細は後述する。オブジェクトID対応管理テーブル３０７は、オブジェクトIDの対応に関する情報を管理するテーブルで、詳細は後述する。
【００２９】
図４は、末端サーバ１０４のメモリ２０３に記憶されるプログラム２０５と管理テーブル２０４を示した図である。末端サーバ１０４のプログラム２０５は、ファイル共有プログラム４０１と、マイグレーションプログラム４０２と、スナップショットプログラム４０３から構成される。
【００３０】
ファイル共有プログラム４０１は、中間サーバ１０３からのデータの要求を処理する。具体的には、中間サーバ１０３からのファイルデータ処理要求を受信し、指定されたデータに対する要求を処理する。その後、処理結果を中間サーバ１０３へ送信する。マイグレーションプログラム４０２は、指定されたデータの移行処理を行う。具体的には、管理端末１０２等から指定されたファイルと移行先サーバの情報に基づき、ファイルデータと当該ファイルのスナップショットの差分データの移行処理を行う。また、移行先の末端サーバ１０４のマイグレーションプログラム４０２は、移行データを受信すると、当該データを順次格納し、その後移行されたファイルデータ及びスナップショットファイルのオブジェクトIDの作成及び中間サーバ１０３へのオブジェクトIDの送信を行う。
【００３１】
スナップショットプログラム４０３は、スナップショットに関する処理を行う。具体的には、スナップショットの取得や削除、オリジナルファイルデータに変更が発生した場合の差分データの退避、及びオリジナルデータと差分データからのスナップショットファイルの構成等を行う。
【００３２】
末端サーバ１０４の管理テーブル２０４は、共有情報管理テーブル３０４と、サーバ情報管理テーブル３０５と、ブロックコピー管理テーブル４０４と、使用ブロック管理テーブル４０５から構成される。ブロックコピー管理テーブル４０４は、スナップショットの差分ブロックに関する情報を管理するテーブルで、詳細は後述する。使用ブロック管理テーブル４０５は、スナップショットの差分ボリュームの使用ブロックに関する情報を管理するテーブルで、詳細は後述する。
【００３３】
図５は、スナップショットの構成例を示した図である。末端サーバ２０１において、あるファイルシステム（図５の例では"fs0"）が格納されたボリューム(P-Vol)５０１に対し、過去のある時点での当該ファイルシステムイメージを仮想的に構成したボリューム(V-Vol)５０３がスナップショットである。スナップショットでは、実際には、差分データは差分ボリューム(D-Vol)に格納され、P-VolのデータとD-Volのデータを用いてV-Volのデータを再構成する。
【００３４】
図６は、ブロックコピー管理テーブル４０４の例を示した図である。ブロックコピー管理テーブル４０４は、差分ボリューム５０２に格納され、メモリ２０３に読み込まれて使用される。また、メモリ２０３上で変更があった場合は、差分ボリューム５０２に書き戻される。
【００３５】
ブロックコピー管理テーブル４０４は、ブロックアドレス６０１と、１つ以上のスナップショット名６０２との組によって構成されたエントリを有するテーブルである。更に、スナップショット名６０２のエントリは、ボリュームフラグ６０３と、ブロックアドレス６０４との組によって構成される。ブロックアドレス６０１は、ファイルシステムボリュームのブロックアドレスを示す。スナップショット名６０２は、スナップショットを同定するための名称である。
【００３６】
ボリュームフラグ６０３は、当該スナップショットのあるブロックアドレス６０１に対応するデータブロックが、ファイルシステムボリュームに存在する（"0"の場合）か、あるいは差分ボリュームに存在する（"1"の場合）かを示す。ブロックアドレス６０４は、当該スナップショットのブロックアドレス６０１に対応するデータブロックが格納されるブロックアドレスを示す。ブロックアドレス６０４は、ブロックアドレス６０１に対応するボリュームフラグ６０３が"0"の場合は"0"が指定され、ファイルシステムボリューム５０１のブロックアドレス６０１のデータブロックを示し、ボリュームフラグ６０３が"1"の場合は、差分ボリューム５０２のブロックアドレスを示す。
【００３７】
例えば、図６で、スナップショット名６０２が"fs0-snap0"のエントリのボリュームフラグ６０３が"1"、ブロックアドレス６０４が"108"であることから、"fs0-snap0"で表されるスナップショット(V-Vol)のブロックアドレス６０１が"t"のデータは、差分ボリューム(D-Vol)のブロックアドレス６０４が"108"のブロックに格納されている。そのため、スナップショット"fs0-snap0"の当該ブロックアドレス６０１が"t"のデータブロックの参照要求があった場合、末端サーバ１０４は、差分ボリュームのブロックアドレス６０４が"108"のデータを応答する。
【００３８】
図２４は、使用ブロック管理テーブル４０５の例を示した図である。使用ブロック管理テーブル４０５は、差分ボリューム５０２に格納され、メモリ２０３に読み込まれて使用される。また、メモリ２０３上で変更があった場合は、差分ボリューム５０２に書き戻される。
【００３９】
使用ブロック管理テーブル４０５は、ブロックアドレス２４０１と、使用状態フラグ２４０２との組によって構成されたエントリを有するテーブルである。ブロックアドレス２４０１は、差分ボリュームのブロックアドレスを示す。使用状態フラグ２４０２は、差分ボリュームのブロックアドレス２４０１に差分データが格納されている（"1"の場合）か、そうでない（"0"の場合）かを示す。スナップショット取得後、ファイルシステム(P-Vol)のデータに変更が発生した場合、差分データを差分ボリュームに格納する。この際、使用ブロック管理テーブル４０５を参照し、使用状態フラグ２４０２が"0"、即ち、使用されていないブロックを選択し、当該ブロックに差分データを格納する。その後、当該ブロックアドレス２４０１に対応するエントリの使用状態フラグ２４０２を"1"に変更する。
【００４０】
図７は、GNSの構成例を示した図である。図７の例では、"NAS0"と"NAS1"の2つの末端サーバ１０４が管理するローカルファイルシステム（７０２及び７０３）を統合し、単一のファイルシステムであるGNS７０１として構成している。"NAS0"の"/mnt/fs0"以下、及び"/mnt/fs0-snap0"を共有単位として、各々GNS７０１の"/gns/node0"、及び"/gns/node0-snap0"に接続されている。同様に、"NAS1"の"/mnt/fs1"以下、及び"/mnt/fs1-snap0"を共有単位として、各々GNS７０１の"/gns/node1"、及び"/gns/node1-snap0"に接続されている。
【００４１】
図８は、本発明の実施形態における、ファイルデータ移行前後のローカルファイルシステムツリーの例を示した図である。図８(A)は、ファイルデータ移行前の"NAS0"及び"NAS1"のローカルファイルシステムツリー（８０１及び８０２）である。図８(B)は、ファイルデータ移行後の"NAS0"及び"NAS1"のローカルファイルシステムツリー（８０３及び８０４）である。
【００４２】
図８の例では、"NAS0"の管理する"/mnt/fs0/a"で示されるファイルが、"NAS1"の管理する"/mnt/migrate/fs0"配下に移行されている。当該ファイルのスナップショットである"/mnt/fs0-snap0/a"で示されるファイルも、"NAS1"の管理する"/mnt/migrate/fs0-snap0"配下に移行されている。
【００４３】
図９は、共有情報管理テーブル３０４の例を示した図である。共有情報管理テーブル３０４は、共有ID９０１と、サーバID９０２と、共有名９０３との組によって構成されたエントリを有するテーブルである。共有ID９０１は、共有単位を同定するためのIDである。サーバID９０２は、サーバを同定するためのIDである。共有名９０３は、共有単位を管理者が管理しやすいように設定される名称である。
【００４４】
図１０は、サーバ情報管理テーブル３０５の例を示した図である。サーバ情報管理テーブル３０５は、サーバID９０２と、サーバ名１００１と、IPアドレス１００２との組によって構成されたエントリを有するテーブルである。サーバ名１００１は、管理者が管理しやすいように設定されるサーバの名称である。IPアドレス１００２は、サーバに接続するためのIPアドレスである。
【００４５】
図９及び図１０の例では、共有情報管理テーブル３０４とサーバ情報管理テーブル３０５とを異なる管理テーブルとしているが、共有情報管理テーブル３０４のサーバID９０２に対応して、サーバ情報管理テーブル３０５のサーバ名１００１とIPアドレス１００２を追加し、１つの管理テーブルとするようにしても良い。
【００４６】
図１１は、GNS管理テーブル３０６の例を示した図である。図１１において、GNS管理テーブル３０６は、共有ID９０１と、GNSパス名１１０１と、サーバID９０２と、共有パス名１１０２との組によって構成されたエントリを有するテーブルである。GNSパス名１１０１は、図７のGNS７０１におけるパスを示す。共有パス名１１０２は、図７のローカルファイルシステム（７０２または７０３）におけるパスを示す。
【００４７】
例えば、共有ID９０１が"0"である共有単位は、サーバID９０２が"0"で同定されるサーバが管理するローカルファイルシステムの、共有パス名１１０２が"/mnt/fs0"の共有単位であり、GNSパス名１１０１"/gns/node0"に接続される。
【００４８】
図１２は、オブジェクトID対応管理テーブル３０７の例を示した図である。オブジェクトID対応管理テーブル３０７は、移行元オブジェクトID(OID)１２０１と、移行先オブジェクトID(OID)１２０２との組によって構成されたエントリを有するテーブルである。移行元オブジェクトID(OID)１２０１は、データ移行元の末端サーバ１０４で管理されるファイルを同定するためのオブジェクトIDを示す。移行先オブジェクトID(OID)１２０２は、データ移行先の末端サーバ１０４で管理されるファイルを同定するためのオブジェクトIDを示す。
【００４９】
クライアント１０１は、あるファイルにアクセスする場合、既述のGNSパス名の解決を行い、当該ファイルを同定するためのオブジェクトIDを取得する。オブジェクトIDは、末端サーバ１０４で作成され、ファイルやディレクトリ毎に異なるIDである。オブジェクトIDは、サーバ内で固有であるように作成されれば、形式は問わないが、通常は、サーバ内のファイルシステムの管理で使用する固有のIDであるiノード番号等を利用することが多い。以後、クライアント１０１は、当該オブジェクトIDを保持し、当該ファイルへのアクセスは保持しているオブジェクトIDを用いて行う。
【００５０】
図１３は、オブジェクトID１３０１の構成例を示した図である。オブジェクトID１３０１は、例えば、共有ID９０１と、ローカルオブジェクトID１３０２とからなるIDである。ローカルオブジェクトID１３０２は、各々の末端サーバ１０４が作成する、ファイルを同定するためのIDである。
【００５１】
図１４は、本発明の実施形態における、ファイルデータ移行前の移行先サーバのブロックコピー管理テーブル４０４の例を示した図である。詳細については、後述する。
【００５２】
図１５は、本発明の実施形態における、ファイルデータ移行後の移行先サーバのブロックコピー管理テーブル４０４の例を示した図である。詳細については、後述する。
【００５３】
以下、中間サーバ１０３の処理手順について説明する。本実施形態におけるストレージシステムでは、末端サーバ１０４が管理するファイルシステムのデータを、GNSを提供する中間サーバ１０３を介してクライアントに提供する。なお、既述したように、中間サーバ１０３と末端サーバ１０４は同一のサーバ上で動作していても良い。その場合は、当該サーバが、中間サーバ１０３と末端サーバ１０４の両方のプログラムと管理テーブルを保持する。
【００５４】
図１６は、本実施形態における、中間サーバ１０３が、クライアント１０１からの要求を処理するフローチャートの例を示した図である。本処理は、中間サーバ１０３のファイル共有プログラム３０１によって行われる。
【００５５】
まず、中間サーバ１０３のプロセッサ２０２は、クライアント１０１からオブジェクトIDを含む要求を受信すると、要求されたオブジェクトIDがオブジェクトID対応管理テーブル３０７の移行元オブジェクトID１２０１に存在するかどうかを調べる(s1601)。オブジェクトID対応管理テーブル３０７に存在する場合(s1601:Yes）、プロセッサ２０２は、クライアント１０１の要求するオブジェクトIDを、移行元オブジェクトID１２０１に対応する移行先オブジェクトID１２０２に置き換える(s1602)。
【００５６】
オブジェクトID対応管理テーブル３０７に存在しない場合(s1601:No)、プロセッサ２０２は、以下の処理に進む。
【００５７】
次に、プロセッサ２０２は、オブジェクトIDに含まれる共有ID９０１から、共有情報管理テーブル３０４を用いて、当該共有ID９０１に対応するサーバID９０２を取得する(s1603)。更に、プロセッサ２０２は、取得したサーバID９０２から、サーバ情報管理テーブル３０５を用いて、当該サーバID９０２に対応するサーバ名１００１、IPアドレス１００２等のサーバ情報を取得する(s1604)。その後、プロセッサ２０２は、取得したサーバ情報を用いて、クライアント１０１からの要求をオブジェクトIDと共に適切なサーバに送信する(s1605)。
【００５８】
次に、送信先サーバでの応答処理(s1606)が行われるが、これについては後述する。送信先サーバからの応答を受信する(s1607)と、プロセッサ２０２は、受信した結果をオブジェクトIDと共にクライアント１０１へ応答(s1608)して、処理が終了する。
【００５９】
図１７は、図１６におけるステップS1606の処理、すなわち、送信先サーバが行う応答処理のフローチャートの例を示した図である。本処理は、末端サーバ１０４のプロセッサ２０２がファイル共有プログラム４０１を起動して行われる。
【００６０】
送信先サーバである末端サーバ１０４は、中間サーバ１０３からオブジェクトIDと要求を受信する(s1701)と、当該オブジェクトIDから処理対象のファイルを同定し、当該ファイルに対して要求を処理する(s1702)。この際、当該ファイルに対する要求が書き込み等の、データの変更を伴う処理である場合、プロセッサ２０２は、処理中、他からの書き込みが行われないよう、当該ファイルに対するアクセスをロックし、その後、処理した結果をオブジェクトIDと共に中間サーバ１０３へ応答して(s1703)、処理が終了する。
【００６１】
次に、末端サーバ１０４のデータ移行の処理手順について説明する。図１８は、本実施例における、ファイルデータの移行処理のフローチャートの例を示した図である。
【００６２】
まず、管理者は、管理端末１０２の画面等から、移行対象のファイルを選択し、当該ファイルを管理する末端サーバ１０４のマイグレーションプログラム４０２に対して、移行先の末端サーバ１０４への移行の指示を行う(s1801)。指示を受けた末端サーバ１０４のプロセッサ２０２は、マイグレーションプログラム４０２を用いて、ファイル共有プログラム４０１に対して、当該ファイルへのアクセスをロックするよう指示する。指示を受けたファイル共有プログラム４０１は当該ファイルへのアクセスをロックする(s1802)。この際、マイグレーションプログラム４０２は、中間サーバ１０３のファイル共有プログラム３０１に対して、当該ファイルへのアクセスをロックするように指示しても良い。
【００６３】
次に、マイグレーションプログラム４０２は、移行先の末端サーバ１０４のマイグレーションプログラム４０２に対して指示し、移行対象のファイルデータのコピーをする(s1803)。この際、移行先の末端サーバ１０４において、プロセッサ２０２は、コピーされたファイルのオブジェクトIDを作成する。
【００６４】
次に、移行元の末端サーバ１０４のマイグレーションプログラム４０２は、中間サーバ１０３のマイグレーションプログラム３０２に対して、移行対象ファイルのオブジェクトIDを送信すると同時に、移行先の末端サーバ１０４のマイグレーションプログラム４０２は、中間サーバ１０３のマイグレーションプログラム３０２に対して、s1803で作成したオブジェクトIDを送信する。中間サーバ１０３のマイグレーションプログラム３０２は、移行元と移行先の末端サーバ１０４から受信したオブジェクトIDを、オブジェクトID対応管理テーブル３０７の移行元オブジェクトID１２０１と移行先オブジェクトID１２０２としてエントリを追加する(s1804)。
【００６５】
次に、プロセッサ２０２は、ある世代のスナップショットを選択し、移行対象ファイルの当該世代のスナップショットファイルのiノード情報を参照し、当該スナップショットファイルのデータブロックのアドレスを順次移行先の末端サーバ１０４へコピーし、移行先の末端サーバ１０４のブロックコピー管理テーブル４０４及び使用ブロック管理テーブル４０５を更新する(s1805)。詳細は図２７を用いて説明する。
【００６６】
図２７は、スナップショットファイルデータのコピー処理のフローチャートの例を示す図である。まず、移行元のサーバ装置１０４のプロセッサ２０２は、処理が行われていないスナップショットの１つを選択する（s2701）。例えば、プロセッサ２０２は、ブロックコピー管理テーブル４０４のスナップショット名６０２が“fs0‐snap0”のスナップショットを選択する。
【００６７】
次に、プロセッサ２０２は、選択したスナップショットにおける移行対象のファイルのiノード情報のブロックアドレス２０５部分のアドレス（図２０参照）を順次選択する（s2702）。このあとプロセッサ２０２は、ブロックコピー管理テーブル４０４と、選択したブロックアドレス６０１のエントリのスナップショットのボリュームフラグ６０３が“１”である場合（s2703；Yes）、ブロックアドレス６０４が示す、移行元の末端サーバ１０４の差分ボリュームのデータを、マイグレーションプログラム４０２にしたがって読み出す（s2704）。
【００６８】
例えば、プロセッサ２０２は、マイグレーションプログラム４０２を基に、選択したブロックアドレスが“t”である場合、ブロックコピー管理テーブル４０４の、ブロックアドレス６０１が“t”のエントリのスナップショット名６０２が“fs0‐snap0”のボリュームフラグ６０３を調べ、ボリュームフラグ６０３が“１”であり、ブロックアドレス６０４が“１０８”である場合、差分ボリュームのブロックアドレスが“１０８”のデータを読み出す。
【００６９】
次に、プロセッサ２０２は、読み出した差分ボリュームのデータを移行先の末端サーバ１０４に送信する。移行先の末端サーバ１０４のプロセッサ２０２は、マイグレーションプログラム４０２にしたがって、受信したデータを差分ボリュームにコピーする（s2705）。この際、プロセッサ２０２は、移行先の末端サーバ１０４の使用管理ブロック４０５を参照し、データ格納に使用されていないブロック、すなわち、使用状態フラグ２４０２が“０”であるブロックアドレス２４０１を選択し、当該アドレスのブロックデータを格納し、使用状態フラグ２４０２を“１”に設定する。
【００７０】
次に、移行先の末端サーバ１０４のプロセッサ２０２は、ブロックコピー管理テーブル１４０１を更新する（s2706）。詳細は図２８を用いて後述する。
【００７１】
この後、移行先の末端サーバ１０４のプロセッサ２０２は、ブロックコピー管理テーブル１４０１を更新した後の処理として、あるいは、s２７０３で、ボリュームフラグ６０３が“０”である場合、当該ブロックのデータはオリジナルのファイルシステムのデータを示していて、既にs1803でコピー済みであるため、当該ブロックに関する処理として、iノード情報のデータブロックを示す部分のブロックアドレスについて全て処理したか否かを判定する（s2707）。iノード情報のデータブロック２００５が示す全てのブロックアドレスについて処理されていれば(s2707:Yes)、プロセッサ２０２は、s1805の処理を終了する。全てのブロックアドレスについて処理されていなければ(s2707:No)、プロセッサ２０２は、s2702に戻って処理を繰り返す。
【００７２】
図２８は、図２７におけるs2706の処理、即ち、移行先のブロックコピー管理テーブルの更新処理のフローチャートの例を示す図である。ここでは、コピーしたデータブロックが、移行元の末端サーバ１０４で選択されたスナップショットに対応した、移行先の末端サーバ１０４のスナップショット上のどのアドレスのブロックであったかを決定して、更新する。
【００７３】
まず、移行先の末端サーバ１０４のプロセッサ２０２は、移行先のブロックコピー管理テーブル１４０１に、全てのスナップショットのボリュームフラグ６０３とブロックアドレス６０４が“０”または“なし”であるエントリがあるか否かを調べる（s2801）。該当するエントリがある場合（s2801；Yes）、プロセッサ２０２は、全ての該当エントリのブロックアドレス６０１にデータが格納されていて、且つ当該データブロックを含むファイルが削除されていないか否かを調べる（s2802）。全ての当該エントリにデータが格納されている場合（s2802；Yes）、あるいはs2801で、該当するエントリが無い場合（s2801；No）、プロセッサ２０２は、ブロック管理テーブル４０４に架空のブロックアドレス６０１のエントリを追加する（s2803）。
【００７４】
次に、プロセッサ２０２は、当該エントリの１つを選択し、当該スナップショットのボリュームフラグ６０３を“１”に設定し、ブロックアドレス６０４に、先のs2705でコピーしたデータの、移行先の差分ボリュームのコピー先のブロックアドレスを格納する（s2804）。例えば、図１４に示すように、プロセッサ２０２は、移行先の末端サーバ１０４のブロックコピー管理テーブル１４０１を参照し、全てのスナップショットのボリュームフラグ６０３とブロックアドレス６０４が“０”または“なし”であるエントリ、例えば、ブロックアドレス６０１が“v”のエントリを選択し、当該エントリの、スナップショット名６０２が“fs1−snap0”のボリュームフラグ６０３を“１”に設定し、ブロックアドレス６０４には、先ほど格納した差分ボリュームのブロックアドレス（図１５の例では“３２４”）を設定する。
【００７５】
もしくは、プロセッサ２０２は、図２６に示すように、架空のブロックアドレス６０１のエントリを追加し、上記と同様に、ブロックコピー管理テーブル４０４を更新する。
【００７６】
また、プロセッサ２０２は、s2802で、データが格納されていないエントリが１つでもあった場合も、s2804の処理に移行し、またs2801およびs2802の判定は行わず、s2803の処理から開始するようにしてもよい。以上でs2706の処理を終了する。
【００７７】
図１８に戻って、次に、移行先のスナップショットファイルのiノード情報を、移行先の末端サーバ１０４の差分ボリューム上に再構成する(s1806)。詳細は図２９を用いて説明する。
【００７８】
図２９は、スナップショットファイルのiノード情報を移行先の差分ボリューム上に再構成するフローチャートの例を示す図である。まず、移行元の末端サーバ１０４のプロセッサ２０２は、マイグレーションプログラム４０２にしたがって、移行元の末端サーバ１０４の当該スナップショットファイルのiノード情報が格納されたブロックのデータを読出し（s2901）、読み出したデータを移行先の末端サーバ１０４に送信する。移行先の末端サーバ１０４は、移行元の末端サーバ１０４から送信されたデータを受信し、受信したデータを、マイグレーションプログラム４０２の処理にしたがって、移行先の末端サーバ１０４の差分ボリュームの空きブロックにコピーする（s2902）。この際、移行先のマイグレーションプログラム４０２は、移行先の使用ブロック管理テーブル４０５を参照し、使用状態フラグ２４０２が“０”であるブロックを選択し、当該ブロックアドレス２４０１に受信データをコピーし、その後、当該ブロックアドレス２４０１の使用状態フラグ２４０２を“１”に設定する。
【００７９】
次に、移行先の末端サーバ１０４のプロセッサ２０２はブロックコピー管理テーブル１４０１を更新する（s2903）。具体的には、プロセッサ２０２は、コピーしたiノード情報のデータブロックに対応した、移行後のオリジナルのファイルのiノード情報のデータブロックのブロックアドレス６０１のエントリのうち、当該スナップショットのボリュームフラグ６０３を“１”に設定し、ブロックアドレス６０４には、対応するiノード情報をコピーした差分ボリュームでのブロックアドレスに格納する。
【００８０】
以上の処理を、当該スナップショットファイルのiノード情報が格納された、全てのブロックのデータについて処理されていれば(s2904:Yes)、当該スナップショットファイルのiノード情報のブロックアドレス２００５を更新し(s2905)、s1806の処理が終了する。S2905の処理の詳細は図３０を用いて後述する。S2904で、全てのブロックのデータについて処理されていなければ(s2904:No)、s2901に戻って処理を繰り返す。
【００８１】
図３０は、図２９におけるs2905の処理、即ち、移行先のスナップショットファイルのiノード情報のブロックアドレス２００５を更新する処理のフローチャートの例を示す図である。まず、移行元の末端サーバ１０４のプロセッサ２０２は、当該スナップショットファイルのiノード情報に格納されたブロックアドレス２００５を順に読出し（s3001）、次に、移行元の末端サーバ１０４のブロックコピー管理テーブル４０４を参照し、読み出したブロックアドレスに対応するエントリの当該スナップショットのボリュームフラグ６０３が“０”であるか否かを調べる（s3002）。
【００８２】
ボリュームフラグ６０３が“０”であった場合、当該スナップショットの当該ブロックデータは、オリジナルのファイルシステムのデータを示しているため、移行元のプロセッサ２０２は、移行先の末端サーバ１０４のオリジナルのファイルのiノード情報のうち、対応するブロックアドレス２００５を、移行先の末端サーバ１０４の差分ボリュームに格納したスナップショットファイルのiノード情報の、対応するブロックアドレス２００５に格納する（s3003）。
【００８３】
ボリュームフラグ６０３が“１”であった場合、当該スナップショットの当該ブロックデータは、差分ボリュームのデータを示しているため、移行元のプロセッサ２０２は、当該ブロックアドレス６０４が示す移行元の末端サーバ１０４の差分ボリュームのデータブロックがコピーされた、移行先の末端サーバ１０４の差分ボリュームのコピー先ブロックアドレスを、移行先の末端サーバ１０４の差分ボリュームに格納したスナップショットファイルのiノード情報の当該ブロックアドレス２００５に格納する（s3004）。
【００８４】
以上の処理を、当該スナップショットファイルのiノード情報の全てのブロックアドレス２００５について処理されていれば(s3005:Yes)、s2905の処理が終了する。全てのブロックアドレス２００５について処理されていなければ(s3005:No)、s3001に戻って処理を繰り返す。
【００８５】
図１８に戻って、次に、移行先の末端サーバ１０４に再構成したスナップショットファイルのiノード情報等からオブジェクトIDを作成する(s1807)。その後、s１８０４と同様にして、昼間サーバ１０３のプロセッサ２０２は、オブジェクトID対応管理テーブル３０７に、スナップショットのファイルの移行元オブジェクトID１２０１と移行先オブジェクトID１２０２の対応のエントリを追加する（s1808）。
【００８６】
以上のs1805からs1808までの処理を、全ての世代のスナップショットについて実行していれば（s1809；Yes）、中間サーバ１０３は、移行元の移行対象のファイルのデータおよび当該ファイルのスナップショットの差分データを削除し（s1810）、削除したデータブロックに対応する移行元のブロックコピー管理テーブル４０４のエントリおよび使用管理テーブル４０５の使用状態フラグ２４０２を更新する（s1811）。
【００８７】
具体的には、プロセッサ２０２は、ブロックコピー管理テーブル４０４のうち、削除されたブロックアドレス６０１に対応するそれぞれのスナップショット６０２のボリュームフラグ６０３およびブロックアドレス６０４を全て“０”に設定するとともに、使用ブロック管理テーブル４０５のうち、削除されたブロックアドレス２４０１に対応する使用状態フラグ２４０２を“０”に設定する。このあとプロセッサ２０２は、当該ファイルに対するアクセスロックを解除して（s1812）、データ移行処理を終了する。
【００８８】
S1809で、全ての世代のスナップショットについて実行していなければ(s1809:No)、s1805に戻り、処理が行われていないスナップショットを選択し、同様に処理を行う。
【００８９】
以上により、ファイルレベルのデータの移行を行っても、移行前後で当該ファイルのスナップショットへのアクセスを継続して提供することが可能となる。
【００９０】
また、本実施の形態では、s1802の処理において、末端サーバ１０４または中間サーバ１０３で移行対象ファイルをロックし、移行中はアクセスを保留するようにしているが、スナップショットファイルの容量に依っては、ロックされる期間が長くなってしまうことも考えられる。そのため、当該ファイルへの書き込み等の、変更を伴うアクセス要求が来た場合には、データの移行処理そのものを中止するようにし、途中のコピーによる変更を元に戻し、一定期間後、再度移行処理をやり直すようにしても良い。
【００９１】
本実施例によれば、オリジナルのファイルシステムボリュームのデータと差分ボリュームのデータを移行元の末端サーバ１０４から中間サーバ１０３を介して移行先の末端サーバ１０４に転送するとともに、移行先の末端サーバ１０４において、転送されたデータを基にスナップショットボリュームのデータを再構成し、再構成されたデータを含む応答情報をクライアント１０１に転送するようにしたため、ファイルレベルのデータの移行を行っても、データの移行前後で当該ファイルのスナップショットへのアクセスをクライアントは継続して行うことができる。
【実施例２】
【００９２】
本発明の実施例２について、図１乃至図１７、及び図１９、図２５を用いて説明する。
実施例２は、本発明のサーバ装置がスナップショットの提供やファイルレベルのデータの移行を行う末端サーバとして動作し、中間サーバがオブジェクトID対応管理テーブルを保持、移行元オブジェクトへのアクセスを移行先へ振り分ける形態である。
【００９３】
実施例１と異なる点は、オリジナルのファイルのデータのみ移行し、当該ファイルの差分データの移行は行わない点である。そのため、中間サーバ１０３が、クライアント１０１からの要求を処理する手順は図１６に示した手順と同様であり、ファイルデータの移行処理についてのみ異なる。実際には、移行されたオリジナルのファイルのデータへのアクセスは、実施例１と同様、中間サーバ１０３において、移行先の末端サーバ１０４へ転送されるが、当該ファイルのスナップショットファイルへのアクセスは、移行前と同様に移行元の末端サーバ１０４へ要求を転送して処理することになる。
【００９４】
以下、実施例２の処理手順について説明する。図１９は、本実施例における、ファイルデータの移行処理のフローチャートの例を示した図である。s1801からs1804までの処理は、図１８におけるs1801からs1804までの処理と同様である。
【００９５】
次に、中間サーバ１０３のプロセッサ２０２は、移行元の末端サーバ１０４の移行対象のファイルのデータを、使用ブロック管理テーブル４０５を参照し、移行元の末端サーバ１０４の差分ボリュームの空きブロック、即ち、使用状態フラグ２４０２が"0"であるブロックに順次格納し、使用状態フラグ２４０２を"1"に設定し(s1905)、その後、移行対象のファイルのデータを削除(s1906)し、移行元の末端サーバ１０４のブロックコピー管理テーブルを更新する(s1907)。
【００９６】
具体的には、削除したデータのブロックアドレス６０１に対応するエントリで、ボリュームフラグ６０３及びブロックアドレス６０４が共に"0"である全てのスナップショット６０３について、プロセッサ２０２は、ボリュームフラグ６０３を"1"に設定し、ブロックアドレス６０４に、当該データが格納された差分ボリュームのブロックアドレスを格納し、最後に、当該ファイルに対するアクセスロックを解除(s1812)して、データ移行処理が終了する。
【００９７】
以上により、ファイルレベルのデータの移行を行っても、移行前後で当該ファイルのスナップショットへのアクセスを継続して提供することが可能となる。
【００９８】
本実施例によれば、移行元の末端サーバ１０４から中間サーバ１０３を介して移行先の末端サーバ１０４にファイルレベルのデータを転送するときに、移行元の末端サーバ１０４は、ファイルレベルのデータを差分ボリューム５０２に格納し、差分ボリューム５０２に格納されたファイルレベルのデータと差分データを基にスナップショットボリュームのデータを再構成し、再構成されたデータに関する情報をクライアントに応答情報として転送するようにしたため、ファイルレベルのデータの移行を行っても、データの移行前後で当該ファイルのスナップショットへのアクセスをクライアントが継続して行うことができる。
【実施例３】
【００９９】
実施例３は、中間サーバはオブジェクトID対応管理テーブルを保持せず、本発明のサーバ装置がスナップショットの提供やファイルレベルのデータの移行を行う末端サーバとして動作し、更に、移行元の末端サーバの移行対象ファイルとそのスナップショットファイルのiノード情報の拡張属性情報領域に移行先のオブジェクトIDを格納し、移行元オブジェクトへのアクセスに対して、移行元の末端サーバが移行先の末端サーバから移行されたデータを取得し、中間サーバへ応答する形態である。
【０１００】
以下、図面の説明に続いて、実施例３の処理手順について説明する。図２０は、本実施形態における、ファイル移行元のファイルのiノード情報の構成例を示したブロック図である。
【０１０１】
図２０(A)は、ファイル２００１の構成例を示し、ファイル２００１は、属性情報２００２と、拡張属性情報２００３と、データ２００４とから構成される。iノード情報は、属性情報２００２と、拡張属性情報２００３とで構成される部分である。属性情報２００２には、iノード情報を識別するためのIDや、データ２００４ブロックが格納されているブロックアドレス２００５等が含まれる。拡張属性情報２００３は、属性情報２００２に含まれない情報を格納する場合等に用いる領域である。
【０１０２】
図２０(B)は、拡張属性情報２００３領域に移行先オブジェクトID２００７を格納した場合のファイル２００６の構成例を示している。属性情報２００２と、データ２００４部分は図２０(A)と同様で、拡張属性情報２００３領域は、移行先オブジェクトID２００７とその他の拡張属性情報２００８領域となる。
【０１０３】
図２１は、本実施形態における、中間サーバ１０３が、クライアント１０１からの要求を処理するフローチャートの例を示した図である。送信先サーバが行う応答処理(s2104)を除く、s1603からs1605までの処理、及び、s1607からs1608までの処理は、図１６における各々s1603からs1605までの処理、及び、s1607からs1608までの処理と同様である。そのため、ここでは、s2104の処理のみ記述する。
【０１０４】
図２２は、図２１におけるステップS2104の処理、すなわち、送信先サーバが行う応答処理のフローチャートの例を示した図である。本処理は、移行先の末端サーバ１０４のプロセッサ２０２がファイル共有プログラム４０１を処理することで行われる。
【０１０５】
送信先サーバである末端サーバ１０４は、中間サーバ１０３、または他の末端サーバ１０４からオブジェクトIDと要求を受信する(s2201)と、ファイル共有プログラム４０１は、当該オブジェクトIDから同定されるファイルのiノード情報の拡張属性情報２００３領域を参照し、移行先オブジェクトID２００７が格納されているかどうかを調べる(s2202)。移行先オブジェクトID２００７が格納されていない(s2202:No)場合は、ファイル共有プログラム４０１は、当該オブジェクトIDから処理対象のファイルを同定し、当該ファイルに対して要求を処理する(s1702)。この際、当該ファイルに対する要求が書き込み等の、データの変更を伴う処理である場合、ファイル共有プログラム４０１は、処理中、他からの書き込みが行われないよう、当該ファイルに対するアクセスをロックし、その後、処理した結果をオブジェクトIDと共に中間サーバ１０３、または他の末端サーバ１０４へ応答(s2210)して、処理が終了する。
【０１０６】
移行先オブジェクトID２００７が格納されている(s2202:Yes)場合は、ファイル共有プログラム４０１は、移行先オブジェクトID２００７に含まれる共有ID９０１から、共有情報管理テーブル３０４を用いて、当該共有ID９０１に対応するサーバID９０２を取得し(s2203)、更に、取得したサーバID９０２から、サーバ情報管理テーブル３０５を用いて、当該サーバID９０２に対応するサーバ名１００１、IPアドレス１００２等のサーバ情報を取得する(s1604)。その後、プロセッサ２０２は、取得したサーバ情報を用いて、受信した要求をオブジェクトIDと共に適切なサーバに送信する(s1605)。
【０１０７】
次に、本処理手順s2104に示した、送信先サーバの応答処理が行われる。プロセッサ２０２は、送信先サーバからの応答を受信する(s1607)と、送信先サーバから受信した結果を、s2201で受信したオブジェクトIDと共に送信元の中間サーバ１０３または末端サーバ１０４へ応答(s2208)して、処理が終了する。
【０１０８】
次に、末端サーバ１０４のデータ移行の処理手順について説明する。図２３は、本実施形態における、ファイルデータの移行処理のフローチャートの例を示した図である。s1801からs1803までの処理は、図１８におけるs1801からs1803までの処理と同様である。
【０１０９】
次に、移行元の末端サーバ１０４のマイグレーションプログラム４０２は、移行先の末端サーバ１０４のマイグレーションプログラム４０２に指示して、移行対象ファイルのオブジェクトIDを取得し、移行元の末端サーバ１０４のファイルのiノード情報２００１の拡張属性情報２００３領域に、当該オブジェクトID２００８を格納する(s2304)。次のs1805からs1807までの処理は、図１８におけるs1805からs1807までの処理と同様である。
【０１１０】
次に、移行元の末端サーバ１０４のマイグレーションプログラム４０２は、何れかのスナップショットを選択し、移行先の末端サーバ１０４のマイグレーションプログラム４０２に指示して、移行ファイルの当該スナップショットのファイルのオブジェクトIDを取得し、移行元の末端サーバ１０４の当該スナップショットのファイルのiノード情報２００１の拡張属性情報２００３領域に、当該オブジェクトID２００８を格納する(s2308)。
【０１１１】
以上のs1805からs2308までの処理を、全ての世代のスナップショットについて実行していれば(s2309:Yes)、移行元の末端サーバ１０４のマイグレーションプログラム４０２は、移行元の移行対象のファイルのデータ、及び当該ファイルのスナップショットの差分データを、iノード情報領域を残して削除(S2310)し、削除したデータブロックに対応する移行元のブロックコピー管理テーブルのエントリ及び使用ブロック管理テーブルの使用状態フラグ２４０２を更新する(s2311)。
【０１１２】
具体的には、移行元の末端サーバ１０４のマイグレーションプログラム４０２は、ブロックコピー管理テーブルの、削除されたブロックアドレス６０１に対応する各々のスナップショット６０２のボリュームフラグ６０３及びブロックアドレス６０４を全て"0"に設定し、使用ブロック管理テーブルの、削除されたブロックアドレス２４０１に対応する使用状態フラグ２４０２を"0"に設定、最後に、当該ファイルに対するアクセスロックを解除(s1812)して、データ移行処理が終了する。
【０１１３】
S2309で、全ての世代のスナップショットについて実行していなければ(s2309:No)、s1805に戻り、処理が行われていないスナップショットを選択し、同様に処理を行う。
【０１１４】
本実施例によれば、ファイルレベルのデータの移行を行っても、移行前後で当該ファイルのスナップショットへのクライアント１０１からのアクセスを透過的且つ、継続して提供することが可能となる。
【産業上の利用可能性】
【０１１５】
本発明は、ファイル共有サービスを提供する一般のサーバ装置、NAS(Network Attached Storage)の他、種々のストレージ装置に広く適用することができる。
【図面の簡単な説明】
【０１１６】
【図１】本発明の実施の形態のサーバ装置を備えたコンピュータシステムの構成例を示す図。
【図２】本発明の実施の形態のサーバ装置の構成例を示す図。
【図３】本発明の実施の形態の中間サーバのプログラムと管理テーブルの構成例を示す図。
【図４】本発明の実施の形態の末端サーバのプログラムと管理テーブルの構成例を示す図。
【図５】本発明の実施の形態のスナップショットの構成例を示す図。
【図６】本発明の実施の形態のブロックコピー管理テーブルの例を示す図。
【図７】本発明の実施の形態のGNSの構成例を示す図。
【図８】本発明の実施例１のファイルデータの移行前後の構成例を示す図。
【図９】本発明の実施の形態の共有情報管理テーブルの例を示す図。
【図１０】本発明の実施の形態のサーバ情報管理テーブルの例を示す図。
【図１１】本発明の実施の形態のGNS管理テーブルの例を示す図。
【図１２】本発明の実施の形態のオブジェクトID対応管理テーブルの例を示す図。
【図１３】本発明の実施の形態のオブジェクトIDの例を示す図。
【図１４】本発明の実施の形態のファイル移行先サーバのデータ移行前のブロックコピー管理テーブルの例を示す図。
【図１５】本発明の実施の形態のファイル移行先サーバのデータ移行後のブロックコピー管理テーブルの例を示す図。
【図１６】本発明の実施例１または実施例２における中間サーバがクライアントからの要求を処理するフローチャートの例を示す図。
【図１７】本発明の実施例１または実施例２における送信先サーバの応答処理のフローチャートの例を示す図。
【図１８】本発明の実施例１におけるデータ移行処理のフローチャートの例を示す図。
【図１９】本発明の実施例２におけるデータ移行処理のフローチャートの例を示す図。
【図２０】本発明の実施例３のiノード情報の移行前後の構成例を示す図。
【図２１】本発明の実施例３における中間サーバがクライアントからの要求を処理するフローチャートの例を示す図。
【図２２】本発明の実施例３における送信先サーバの応答処理のフローチャートの例を示す図。
【図２３】本発明の実施例３におけるデータ移行処理のフローチャートの例を示す図。
【図２４】本発明の実施の形態の使用ブロック管理テーブルの例を示す図。
【図２５】本発明の実施例２のファイルデータの移行前後の構成例を示す図。
【図２６】本発明の実施の形態のファイル移行先サーバのデータ移行後のブロックコピー管理テーブルの例を示す図。
【図２７】本発明の実施例１または実施例３におけるスナップショットファイルデータのコピー処理のフローチャートの例を示す図。
【図２８】本発明の実施例１または実施例３における移行先のブロックコピー管理テーブルを更新する処理のフローチャートの例を示す図。
【図２９】本発明の実施例１または実施例３における移行先のスナップショットファイルのiノード情報の再構成処理のフローチャートの例を示す図。
【図３０】本発明の実施例１または実施例３における移行先のスナップショットファイルのiノード情報のブロックアドレスを更新する処理のフローチャートの例を示す図。
【符号の説明】
【０１１７】
１０１…ストレージシステム
１０２…管理端末
１０３…中間サーバ
１０４…末端サーバ
１０５…ネットワーク
２０１…中間サーバまたは末端サーバ
５０１…ファイルシステムボリューム(P-Vol)
５０２…差分ボリューム(D-Vol)
５０３…スナップショットボリューム(V-Vol)
７０１…GNS
７０２…NAS0のローカルファイルシステム
７０３…NAS1のローカルファイルシステム
８０４…ファイル"a"移行後のNAS1のローカルファイルシステム
【図１】
2009217404.tif 000003
【図２】
2009217404.tif 000004
【図３】
2009217404.tif 000005
【図４】
2009217404.tif 000006
【図５】
2009217404.tif 000007
【図６】
2009217404.tif 000008
【図７】
2009217404.tif 000009
【図８】
2009217404.tif 000010
【図９】
2009217404.tif 000011
【図１０】
2009217404.tif 000012
【図１１】
2009217404.tif 000013
【図１２】
2009217404.tif 000014
【図１３】
2009217404.tif 000015
【図１４】
2009217404.tif 000016
【図１５】
2009217404.tif 000017
【図１６】
2009217404.tif 000018
【図１７】
2009217404.tif 000019
【図１８】
2009217404.tif 000020
【図１９】
2009217404.tif 000021
【図２０】
2009217404.tif 000022
【図２１】
2009217404.tif 000023
【図２２】
2009217404.tif 000024
【図２３】
2009217404.tif 000025
【図２４】
2009217404.tif 000026
【図２５】
2009217404.tif 000027
【図２６】
2009217404.tif 000028
【図２７】
2009217404.tif 000029
【図２８】
2009217404.tif 000030
【図２９】
2009217404.tif 000031
【図３０】
2009217404.tif 000032
【手続補正書】
【提出日】平成20年6月2日(2008.6.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項６
【補正方法】変更
【補正の内容】
【請求項６】
前記移行元のサーバ装置は、移行前のファイルレベルのデータのスナップショットファイルの識別子を前記移行先のサーバ装置から取得し、当該取得した移行先のスナップショットファイルの識別子を移行元のスナップショットファイルのｉノード情報の拡張属性に格納し、前記クライアントから前記移行後のファイルレベルのデータのスナップショットファイルの識別子に対応した要求があったときには、前記移行元のスナップショットファイルのｉノード情報の拡張属性に格納された、前記移行先のスナップショットファイルの識別子を用いて前記移行先のサーバ装置へ前記クライアントからの要求を転送してなる、請求項１に記載のストレージシステム。