(57)【要約】【課題】複数の差分スナップショットを含むストレージ装置に記録されているデータ全体をバックアップすると、記録容量の利用効率が低い。【解決手段】制御プログラムを記憶するメモリと、クライアントから送られたデータが格納される運用ボリュームと、前記運用ボリュームのスナップショットの差分データを格納する差分ボリュームと、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとの関係を管理するマッピング情報とが設けられるディスク装置と、前記ディスク装置へのデータの読み書きを制御する制御プロセッサと、を有するストレージシステムにおいて用いられるバックアップ方法であって、前記マッピング情報を参照して、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとを合成して前記バックアップ装置に送信する。【選択図】      図１
2005284609.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが使用するクライアントと、
前記クライアントにファイル共有サービスを提供するネットワークストレージ装置と、
前記ネットワークストレージ装置に記録されたデータをバックアップするメディアサーバと、
前記ネットワークストレージ装置に前記バックアップを要求する管理クライアントと、
前記クライアント、前記ネットワークストレージ装置、前記メディアサーバ及び前記管理クライアントを接続するネットワークと、を備え、
前記ネットワークストレージ装置は、
前記ネットワークに接続されるネットワークインターフェースと、
制御プログラムを記憶するメモリと、
前記クライアントから送られたデータが格納される運用ボリュームと、前記運用ボリュームのスナップショットの差分データを格納する差分ボリュームと、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとの関係を管理するマッピングテーブルとが設けられるディスク装置と、
前記ディスク装置に接続され、前記クライアントから送られたデータ入出力要求に基づいて前記ディスク装置へとの間のデータ転送を制御するディスクインターフェースと、
前記ディスク装置の記憶領域を用いて生成される運用ボリュームへのデータの読み書きを制御し、前記運用ボリュームに過去に格納されていたデータを世代毎の差分データとして差分ボリュームに書き込むように制御し、前記マッピングテーブルによって前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとのアドレスの関係を前記世代毎に管理し、前記マッピングテーブルを参照して前記運用ボリュームのデータと前記差分データとを合成して前記世代毎の仮想ボリュームを生成する制御プロセッサと、を有するストレージシステムにおいて用いられるバックアップ方法であって、
前記管理クライアントが、バックアップ可能な世代の一覧を前記制御プロセッサに要求する手順と、
前記制御プロセッサが、前記マッピングテーブルを参照して、前記バックアップ可能な世代の一覧を取得し、当該取得した一覧を前記管理クライアントに送信する手順と、
前記管理クライアントが、当該取得した一覧から選択した世代のバックアップを前記制御プロセッサに要求する手順と、
前記制御プロセッサが、当該指定された世代について前記マッピングテーブルを参照して前記仮想ボリュームを構成するデータのアドレスを取得する手順と、
前記制御プロセッサが、当該取得したアドレスに格納されているデータを読み出す手順と、
前記制御プロセッサが、当該取得した仮想ボリュームのデータを前記メディアサーバに送信する手順と、を備えることを特徴とするバックアップ方法。
【請求項２】
ユーザが使用するクライアントにファイル共有サービスを提供するネットワークストレージ装置と、
前記ネットワークストレージ装置に記録されたデータをバックアップするバックアップ装置と、
前記ネットワークストレージ装置に前記バックアップを要求する管理クライアントと、を備え、
前記ネットワークストレージ装置は、
制御プログラムを記憶するメモリと、
前記クライアントから送られたデータが格納される運用ボリュームと、前記運用ボリュームのスナップショットの差分データを格納する差分ボリュームと、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとの関係を管理するマッピング情報とが設けられるディスク装置と、
前記ディスク装置へのデータの読み書きを制御する制御プロセッサと、を有するストレージシステムにおいて用いられるバックアップ方法であって、
前記制御プロセッサが、
前記マッピング情報を参照して、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとを合成する第１手順と、
当該合成されたデータを前記バックアップ装置に送信する第２手順と、を含むことを特徴とするバックアップ方法。
【請求項３】
前記マッピング情報は、前記運用ボリュームにデータが格納されているアドレスと該アドレスに対応する差分データが格納されている前記差分ボリュームのアドレスとの関係を管理しており、
前記第１手順は、
前記マッピング情報を参照して、前記運用ボリュームにデータが格納されているアドレスに対応する差分データが格納されている前記差分ボリュームのアドレスを取得し、
当該取得した差分ボリュームのアドレスに格納されているデータを差分ボリュームから読み出す手順と、
前記運用ボリュームに格納されているデータと、前記差分ボリュームに格納されている差分データとを合成する手順と、を含むことを特徴とする請求項２に記載のバックアップ方法。
【請求項４】
前記差分ボリュームは、スナップショットの世代毎の差分データを格納し、前記マッピング情報は、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとの関係を前記世代毎に管理しており、
前記管理クライアントが、バックアップ可能な前記世代の情報を前記制御プロセッサに要求する第３手順と、
前記制御プロセッサが、前記マッピング情報を参照して、前記バックアップ可能な世代の情報を取得し、前記管理クライアントに送信する第４手順と、
前記管理クライアントが、当該取得した情報から選択した世代のスナップショットのデータのバックアップを前記制御プロセッサに要求する第５手順と、を含み、
前記第１手順は、前記バックアップ要求において指定された世代について、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとを合成することを特徴とする請求項２に記載のバックアップ方法。
【請求項５】
前記第１手順は、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとを合成して、前記世代毎に仮想ボリュームを構成し、
前記第２手順は、前記世代毎の仮想ボリュームのデータを送信することを特徴とする請求項４に記載のバックアップ方法。
【請求項６】
ユーザが使用するクライアントにファイル共有サービスを提供するネットワークストレージ装置と、
前記ネットワークストレージ装置に記録されたデータをバックアップするバックアップ装置と、
前記ネットワークストレージ装置に前記バックアップを要求する管理クライアントと、
前記クライアント、前記ネットワークストレージ装置及び前記メディアサーバを接続するネットワークと、を備え、
前記ネットワークストレージ装置は、
制御プログラムを記憶するメモリと、
前記クライアントから送られたデータが格納される運用ボリュームと、前記運用ボリュームのスナップショットの差分データを格納する差分ボリュームと、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとの関係を管理するマッピング情報とが設けられるディスク装置と、
前記ディスク装置へのデータの読み書きを制御する制御プロセッサと、を有するストレージシステムにおいて、
前記制御プロセッサは、前記マッピング情報を参照して、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されているデータとを合成し、
前記合成されたデータを前記バックアップ装置に送信することを特徴とするストレージシステム。
【請求項７】
前記差分ボリュームは、スナップショットの世代毎の差分データを格納し、前記マッピング情報は、前記運用ボリュームにデータが格納されているアドレスと該アドレスに対応する差分データが格納されている前記差分ボリュームのアドレスとの関係を前記世代毎に管理しており、
前記管理クライアントは、バックアップ可能な前記世代の情報を前記制御プロセッサに要求し、
前記制御プロセッサは、前記マッピング情報を参照して、前記バックアップ可能な世代の情報を取得し、前記管理クライアントに送信し、
前記管理クライアントは、当該取得した情報から選択した世代のスナップショットのデータのバックアップを前記制御プロセッサに要求し、
前記制御プロセッサは、
前記マッピング情報を参照して前記バックアップ要求において指定された世代について、前記運用ボリュームにデータが格納されているアドレスに対応する差分データが格納されている前記差分ボリュームのアドレスを取得し、
当該取得した差分ボリュームのアドレスに格納されているデータを差分ボリュームから読み出し、
前記運用ボリュームに格納されているデータと、前記差分ボリュームに格納されている差分データとを合成して、前記世代毎に仮想ボリュームを構成し、
前記世代毎の仮想ボリュームのデータを送信することを特徴とする請求項６に記載のストレージシステム。
【請求項８】
ユーザが使用するクライアントとネットワークで通信可能に接続され、
制御プログラムを記憶するメモリと、
前記クライアントから送られたデータが格納される運用ボリュームと、前記運用ボリュームのスナップショットの差分データを格納する差分ボリュームと、前記運用ボリュームにデータが格納されているアドレスと該アドレスに対応する差分データが格納されている前記差分ボリュームのアドレスとの関係を管理するマッピング情報とが設けられるディスク装置と、
前記ディスク装置へのデータの読み書きを制御する制御プロセッサと、を有するストレージ装置において、
前記制御プロセッサは、
前記マッピング情報を参照して、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されているデータとを合成して生成される仮想ボリュームを構成するデータのアドレスを取得する差分スナップショット管理部と、
当該取得した差分ボリュームのアドレスに格納されている差分データを読み出すファイルシステム処理部と、
当該読み出した仮想ボリュームのデータを前記バックアップ装置に送信するバックアップ処理部と、を備えることを特徴とするストレージ装置。
【請求項９】
前記差分ボリュームは、スナップショットの世代毎の差分データを格納し、前記マッピング情報は、前記運用ボリュームにデータが格納されているアドレスと該アドレスに対応する差分データが格納されている前記差分ボリュームのアドレスとの関係を前記世代毎に管理しており、
前記バックアップ処理部は、前記管理クライアントからバックアップ可能な前記世代の情報の要求があると、前記マッピング情報を参照して、前記バックアップ可能な世代の情報を取得し、前記管理クライアントに送信し、
前記差分スナップショット管理部は、前記管理クライアントからスナップショットのデータのバックアップ要求があると、前記マッピング情報を参照して前記バックアップ要求において指定された世代について、前記運用ボリュームにデータが格納されているアドレスに対応する差分データが格納されている前記差分ボリュームのアドレスを取得し、
前記ファイルシステム処理部は、処理部当該取得した差分ボリュームのアドレスに格納されているデータを差分ボリュームから読み出すと共に、前記運用ボリュームに格納されているデータと前記差分データとを合成して、前記世代毎に仮想ボリュームを構成し、
前記バックアップ処理部は、前記世代毎の仮想ボリュームのデータを送信することを特徴とする請求項８に記載のストレージ装置。
【請求項１０】
ユーザが使用するクライアントとネットワークで通信可能に接続され、
制御プログラムを記憶するメモリと、
前記クライアントから送られたデータが格納される運用ボリュームと、前記運用ボリュームのスナップショットの差分データを格納する差分ボリュームと、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとの関係を管理するマッピング情報とが設けられるディスク装置と、
前記ディスク装置へのデータの読み書きを制御する制御プロセッサと、を有するストレージ装置を制御するプログラムにおいて、
前記マッピング情報を参照して、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとを合成する第１手順と、
当該合成されたデータを前記バックアップ装置に送信する第２手順と、を前記制御プロセッサに実行させることを特徴とするプログラム。
【請求項１１】
前記差分ボリュームは、スナップショットの世代毎の差分データを格納し、前記マッピング情報は、前記運用ボリュームにデータが格納されているアドレスと該アドレスに対応する差分データが格納されている前記差分ボリュームのアドレスとの関係を前記世代毎に管理しており、
前記管理クライアントが、バックアップ可能な前記世代の情報を前記制御プロセッサに要求する第３手順と、
前記制御プロセッサが、前記マッピング情報を参照して、前記バックアップ可能な世代の情報を取得し、前記管理クライアントに送信する第４手順と、
前記管理クライアントが、当該取得した情報から選択した世代のスナップショットのデータのバックアップを前記制御プロセッサに要求する第５手順と、を含み、
前記第１手順は、
前記バックアップ要求において指定された世代について、前記マッピング情報を参照して、前記運用ボリュームにデータが格納されているアドレスに対応する差分データが格納されている前記差分ボリュームのアドレスを取得し、
当該取得した差分ボリュームのアドレスに格納されているデータを差分ボリュームから読み出す手順と、
前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとを合成して、前記世代毎に仮想ボリュームを構成する手順と、を含み、
前記第２手順は、前記世代毎の仮想ボリュームのデータを送信することを特徴とする請求項１０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置のデータバックアップ方法に関し、特に、差分スナップショットのデータを効率的に保存する方法に関する。
【背景技術】
【０００２】
ストレージ装置のデータを保護する機能の一つとして、スナップショット機能が知られている。スナップショット機能とは、ユーザの操作に応じて、指定された時点のストレージ装置のデータ（スナップショット）を保持し、その保持されたデータをユーザに提供する機能である。このスナップショット機能を実現する方法として、ストレージ装置の記録領域（主ボリューム）全体を別の領域（副ボリューム）に複写するボリュームミラーがある（例えば、特許文献１参照。）。
【０００３】
また、主ボリュームに記録されたデータが更新されるときに、更新される部分のデータのみを、別のボリューム（差分ボリューム）に複写して保存する差分スナップショット提案されている。この差分スナップショットは、更新されるデータのみを複写するため、ボリューム全体を複写するボリュームミラーと比較して、消費されるディスク容量が少ない。また、スナップショットにユーザがアクセスしているときにデータの書き込み要求がある場合にユーザへのレスポンスを改善する方法が提案されている（例えば、特許文献２参照。）。その結果、ユーザは、多数のスナップショットを容易に取得することができるようになった。
【特許文献１】特開２００２−３７３０９３号公報
【特許文献２】特開２００３−２８０８２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
多数の差分スナップショットを含むストレージ装置に記録されているデータを、他のストレージ装置（例えば、磁気テープ装置）にバックアップする場合、ストレージ装置に記録されている主ボリュームと差分ボリュームの全体が複写され、特定のスナップショットのデータのみをバックアップすることは考慮されていなかった。
【課題を解決するための手段】
【０００５】
本発明は、ユーザが使用するクライアントにファイル共有サービスを提供するネットワークストレージ装置と、前記ネットワークストレージ装置に記録されたデータをバックアップするバックアップ装置と、前記ネットワークストレージ装置に前記バックアップを要求する管理クライアントと、を備え、前記ネットワークストレージ装置は、制御プログラムを記憶するメモリと、前記クライアントから送られたデータが格納される運用ボリュームと、前記運用ボリュームのスナップショットの差分データを格納する差分ボリュームと、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとの関係を管理するマッピング情報とが設けられるディスク装置と、前記ディスク装置へのデータの読み書きを制御する制御プロセッサと、を有するストレージシステムにおいて用いられるバックアップ方法であって、前記制御プロセッサが、前記マッピング情報を参照して、前記運用ボリュームに格納されているデータと前記差分ボリュームに格納されている差分データとを合成する第１手順と、当該合成されたデータを前記バックアップ装置に送信する第２手順と、を含むことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、ストレージ装置の特定のスナップショットのデータのみをバックアップすることができる。
【発明を実施するための最良の形態】
【０００７】
図１は、本発明の実施の形態のストレージシステムのブロック図である。
【０００８】
このストレージシステムは、ネットワーク１５１によって相互に通信可能に接続されたクライアント１３１、管理クライアント１３２、メディアサーバ１３３及びネットワークストレージ装置（ＮＡＳ）１００からなる。
【０００９】
ネットワーク１５１は、例えば、ＴＣＰ／ＩＰ等のプロトコルで通信を行い、ネットワーク１５１に接続された装置間で制御信号やデータを転送する。
【００１０】
クライアント１３１は、ユーザが操作するコンピュータ装置であり、ＮＡＳ１００にアクセスし、データの読み出し及び書き込みを行う。このクライアント１３１は、ネットワーク１５１に複数接続されていてもよい。
【００１１】
管理クライアント１３２は、当該コンピュータシステムの管理者が操作するコンピュータ装置であり、ＮＡＳ１００の管理に使用する。この管理クライアント１３２は、少なくとも、ＣＰＵ（図示省略）、メモリ（図示省略）及びインターフェース（図示省略）を備える。このメモリには、少なくとも、ＣＰＵによって実行されるバックアップ要求プログラム１２６が格納される。このバックアップ要求プログラム１２６は、ＮＡＳ１００に記録されたデータをメディアサーバ１３３にバックアップする際に実行される。このバックアップ要求プログラム１２６については、後に図５で詳述する。
【００１２】
メディアサーバ１３３は、ＮＡＳ１００に記録されたデータをテープ等の記録媒体にバックアップする装置であり、例えば、磁気テープ装置であっても、大容量の磁気ディスク装置であってもよい。
【００１３】
ＮＡＳ１００は、クライアント１３１にファイル共有サービスを提供する。このＮＡＳ１００は、コントローラ１０１及びディスク装置１１５によって構成される。
【００１４】
ディスク装置１１５は、単独のディスクドライブであってもよいし、複数のディスクドライブによって構成されるＲＡＩＤ等のディスクアレイであってもよい。ディスク装置１１５には、クライアント１３１から書き込みを要求されたファイルがブロック単位に分割されて記録される。
【００１５】
ディスク装置１１５には、プライマリボリューム（Ｐ−ＶＯＬ）１４１及び差分ボリューム（Ｄ−ＶＯＬ）１４２が設定されている。これらのボリュームは、オペレーティングシステム（図示省略）が一つのディスクとして認識できる単位であり、論理的には、それぞれが独立したディスクであるが、物理的には、一つのディスクの一部でもよいし、複数のディスクの一部の集合でもよい。
【００１６】
プライマリボリューム１４１は、通常の運用に供されるボリュームであり、クライアント１３１からの書き込み要求を受けて、ブロック単位にデータが書き込まれる。また、クライアント１３１からの通常の読み出し要求を受けて、ブロック単位にデータが読み出される。
【００１７】
差分ボリューム１４２は、差分スナップショットのコピーオンライト（copy on write）時にプライマリボリューム１４１に記録されていたブロックが複写される。すなわち、クライアント１３１又は管理クライアント１３２から差分スナップショットの作成要求を受けると、以後、プライマリボリューム１４１のブロックが上書きされるとき、上書きされる前のデータが差分ボリューム１４２に複写される。プライマリボリューム１４１に記録されたブロックと差分ボリューム１４２に記録されたブロックとを組み合わせることによって、差分スナップショットの作成要求を受けた時点のプライマリボリューム１４１を復元することができる。
【００１８】
仮想ボリューム（Ｖ−ＶＯＬ）１４３は、クライアント１３１又は管理クライアント１３２から差分スナップショットの合成要求を受けたときに、当該差分スナップショットの作成要求を受けた時点のプライマリボリューム１４１を復元して当該要求元に提供するために生成される仮想的なボリュームであり、プライマリボリューム１４１の一部のブロックと差分ボリューム１４２の一部のブロックとからなる。これらのボリュームについては、後で詳細に説明する。
【００１９】
マッピングテーブル１４４は、ディスク装置１１５に記録される。このマッピングテーブル１４４は、作成されたスナップショットごとに、プライマリボリューム１４１のブロックアドレスと、そのアドレスのブロックがコピーされた差分ボリューム１４２のブロックアドレスとの対応が記録されるテーブルであり、仮想ボリューム１４３を生成する際に参照される。マッピングテーブル１４４については、後で詳細に説明する。
【００２０】
コントローラ１０１は、ＣＰＵ１１１、ネットワークインターフェース（Ｉ／Ｆ）１１２、ストレージインターフェース（Ｉ／Ｆ）１１３及びメモリ１１４によって構成される。
【００２１】
ＣＰＵ１１１は、メモリ１１４に格納された各種のプログラムを実行し、ネットワークストレージ装置を制御する。
【００２２】
メモリ１１４には、ＮＡＳ＿ＯＳ（図示省略）の管理下で稼動するファイルサーバプログラム１２１、ファイルシステム処理プログラム１２３、差分スナップショット管理プログラム１２４及びバックアップ処理プログラム１２５が格納されている。
【００２３】
ファイルサーバプログラム１２１は、クライアント１３１からのデータアクセス要求に応じて、ファイルシステム処理プログラム１２３に対して、ファイルやディレクトリの読み出し処理又は書き込み処理の実行を要求し、その実行結果を要求元のクライアント１３１に返送する。また、ファイルサーバプログラム１２１は、ユーザ認証を行い、ユーザに対してアクセス権限を付与することによって、複数のユーザが存在する場合のファイル共有を管理する。
【００２４】
図２は、本発明の実施の形態のファイルシステム処理プログラム１２３の構成の説明図である。
【００２５】
ファイルシステム処理プログラム１２３は、少なくとも、ファイル読み出し要求処理サブプログラム２０１及びファイル書き込み要求処理サブプログラム２０２を含む。ファイルシステム処理プログラム１２３は、ファイルサーバプログラム１２１や差分スナップショット管理プログラム１２４が発行するファイルやディレクトリの読み出し要求及び書き込み要求に応じて、ファイルやディレクトリを格納しているボリューム、アクセスするブロックの位置及びサイズを指定し、データの読み出し処理や書き込み処理をスナップショット管理プログラム１２４に発行する。ファイル読み出し要求処理サブプログラム２０１については、図１１で詳細に説明する。
【００２６】
図３は、本発明の実施の形態の差分スナップショット管理プログラム１２４の構成の説明図である。
【００２７】
差分スナップショット管理プログラム１２４は、少なくとも、差分スナップショット作成処理サブプログラム３０１、コピーオンライト処理サブプログラム３０２及び差分スナップショット合成処理サブプログラム３０３を含む。
【００２８】
差分スナップショット作成処理サブプログラム３０１は、プライマリボリューム１４１に対するスナップショットを生成する。このスナップショットは、コピーオンライト処理サブプログラム３０２が、後述するマッピングテーブル１４４を用いて、スナップショットの生成時にプライマリボリューム１４１に格納されていたデータにアクセス可能となるように、プライマリボリューム１４１及び差分ボリューム１４２に記憶されたデータを管理し、生成されたプライマリボリューム１４１のスナップショットを提供するための仮想ボリューム１４３をアクセス可能にする。このため、差分スナップショット作成処理サブプログラム３０１は、クライアント１３１からのスナップショット取得要求に対して、マッピングテーブル１４４の領域を設定する。
【００２９】
コピーオンライト処理サブプログラム３０２は、スナップショットの維持に必要な差分データを格納する差分ボリューム１４２を管理し、ファイルシステム処理プログラム１２３の要求に応じたデータ書き込み処理に伴うスナップショットを維持する処理を行う。具体的には、マッピングテーブル１４４を用いて、プライマリボリューム１４１にデータを書き込む際に、プライマリボリューム１４１に記憶されていた更新前データを差分ボリューム１４２にコピーした後、プライマリボリューム１４１の記憶内容を更新する。
【００３０】
差分スナップショット合成処理サブプログラム３０３は、プライマリボリューム１４１及び差分ボリューム１４２を使用して、ファイルシステム処理プログラム１２３やバックアップ処理プログラム１２５の要求に応じた仮想ボリューム１４３の読み出し処理（すなわち、スナップショットを利用可能にする処理）を行う。具体的には、差分スナップショット合成処理サブプログラム３０３は、マッピングテーブル１４４を参照して、プライマリボリューム１４１又は差分ボリューム１４２のいずれからデータを読み出すかを決定し、決定されたボリュームのアドレスから、スナップショットの作成要求時にプライマリボリューム１４１に記憶されていたデータを提供する仮想ボリューム１４３を合成する。
【００３１】
なお、差分スナップショット管理プログラム１２４によって生成及び管理されるスナップショットについては、図６及び図７で詳細に説明する。また、差分スナップショット合成処理サブプログラム３０３の動作については、図１２で詳細に説明する。
【００３２】
図４は、本発明の実施の形態のバックアップ処理プログラム１２５の構成の説明図である。
【００３３】
バックアップ処理プログラム１２５は、管理クライアント１３２から、特定のスナップショットを指定したバックアップ要求を受けると、ディスク装置１１５に記録されているデータのうち、当該スナップショットのデータをメディアサーバ１３３に転送してバックアップする。バックアップ処理プログラム１２５は、少なくとも、バックアップ要求等を処理する要求受付処理サブプログラム４０１を含む。この要求受付処理サブプログラム４０１の動作については、図１０で詳細に説明する。
【００３４】
図５は、本発明の実施の形態のバックアップ要求プログラム１２６の構成の説明図である。
【００３５】
バックアップ要求プログラム１２６は、管理クライアント１３２がディスク装置１１５に記録されているデータのバックアップをバックアップ処理プログラム１２５に要求する際に実行され、少なくとも、バックアップ対象一覧取得要求処理サブプログラム５０１及びバックアップ要求処理サブプログラム５０２を含む。これらのサブプログラムの動作については、図８及び図９で詳細に説明する。
【００３６】
図６及び図７は、本発明の実施の形態のスナップショットの管理の説明図である。
【００３７】
図６及び図７において、＜Ｐ−ＶＯＬ＞及び＜Ｄ−ＶＯＬ＞は、それぞれ、プライマリボリューム１４１及び差分ボリューム１４２の内容を表示する。ここで、「格納位置」欄は、それぞれのボリュームに格納されているブロックのアドレスを表示し、「データ」欄は、格納されているブロックの内容を表示する。また、＜マッピングテーブル＞は、マッピングテーブル１４４の内容を表示する。ここで、「プライマリボリューム格納位置」欄は、プライマリボリューム１４１に格納されているブロックのアドレスを表示し、「変更有無ビットマップ」欄は、プライマリボリューム１４１に格納されているブロックがどのスナップショットを作成した後に変更されたかを表示し、「スナップショット１差分ボリューム格納位置」欄及び「スナップショット２差分ボリューム格納位置」欄は、プライマリボリューム１４１に格納されていたブロックが複写された差分ボリューム１４２のアドレスが格納される。
【００３８】
差分スナップショット作成処理サブプログラム３０１は、スナップショットの生成要求を受信すると、マッピングテーブル１４４に新しい仮想ボリューム１４３の識別情報（図６の＜マッピングテーブル＞の「スナップショット１差分ボリューム格納位置」欄）を登録する。スナップショット作成時点では、マッピングテーブル１４４の差分ボリューム格納位置欄にデータの格納位置（ブロックアドレス）が登録されていないので、仮想ボリューム１４３のブロックはプライマリボリューム１４１のブロックと一対一で対応付けられている。
【００３９】
その後、プライマリボリューム１４１内のデータが更新される際に、コピーオンライト処理サブプログラム３０２は、プライマリボリューム１４１内の更新前のデータを差分ボリューム１４２に複写し、この複写後にプライマリボリューム１４１の記憶内容を更新する。更に、コピーオンライト処理サブプログラム３０２は、データが更新されたプライマリボリューム１４１内のブロックに対応する仮想ボリューム１４３内のブロックを、スナップショット作成時点でプライマリボリューム１４１に格納されていたデータ（すなわち更新前のデータ）が格納されている差分ボリューム１４２のブロックと対応付けるようマッピングテーブル１４４を更新する。
【００４０】
例えば、図７において、スナップショット１の作成からスナップショット２作成までの間に、プライマリボリューム１４１の格納位置（アドレス）Ｐ１のブロックの内容（データ）が”ＡＡＡＡＡ”から”ａａａａａ”に書き換えられる際に、書き換えられる前のデータ”ＡＡＡＡＡ”が差分ボリューム１４２の格納位置Ｄ１に複写された後、プライマリボリューム１４１の格納位置Ｐ１にデータ”ａａａａａ”が格納される。このとき、マッピングテーブル１４４のプライマリボリューム格納位置Ｐ１に対応するスナップショット１差分ボリューム格納位置欄には、更新前データの格納位置Ｄ１が記憶される。さらに、マッピングテーブル１４４の変更有無ビットマップの上位第１ビットには、スナップショット１に対して差分データが記憶されていることを示す”１”が記憶される。
【００４１】
また、スナップショット２の作成から現時点までの間に、プライマリボリューム１４１の格納位置Ｐ２のブロックのデータが”ＢＢＢＢＢ”から”ｂｂｂｂｂ”に書き換えられる際に、書き換えられる前のデータ”ＢＢＢＢＢ”が差分ボリューム１４２の格納位置Ｄ２に複写された後、プライマリボリューム１４１の格納位置Ｐ２にデータ”ｂｂｂｂｂ”が格納される。このとき、マッピングテーブル１４４のプライマリボリューム格納位置Ｐ２に対応するスナップショット２差分ボリューム格納位置欄には更新前データの格納位置Ｄ２が記憶される。このとき、スナップショット２の差分ボリューム格納位置欄だけでなく、この更新前データを必要とするスナップショット１の差分ボリューム格納位置欄にもＤ２が記憶される。
【００４２】
さらに、マッピングテーブル１４４のプライマリボリューム格納位置Ｐ２に対応する変更有無ビットマップ欄には、スナップショット１及び２に対して差分データが記憶されていることを示す”１１”が記憶される（すなわち、マッピングテーブルの変更有無ビットマップの第１ビット及び第２ビットの各々には、”１”が記憶される）。一方、マッピングテーブル１４４のプライマリボリューム格納位置Ｐ１に対応する変更有無ビットマップ欄には、スナップショット１のみに対して差分データが記憶されていることを示す”１０”が記憶される。すなわち、変更有無ビットマップ欄に表示されているビットのうち、最上位ビット（左側に表示されているビット）が”１”のとき、スナップショット１に対して差分データが記憶されており、最下位ビット（右側に表示されているビット）が”１”のとき、スナップショット２に対して差分データが記憶されている。
【００４３】
ファイルシステム処理プログラム１２３が仮想ボリューム１４３に対するアクセス要求を差分スナップショット合成処理サブプログラム３０３に発行すると、差分スナップショット合成処理サブプログラム３０３は、マッピングテーブル１４４を参照して、仮想ボリューム１４３のブロックと対応付けられているプライマリボリューム１４１のブロック又は差分ボリューム１４２のブロックにアクセスして、データを読み出す。従って、ファイルシステム処理プログラム１２３は、仮想ボリューム１４３にアクセスすることによって、スナップショット生成要求が発行された時点においてプライマリボリューム１４１に記憶されていた情報を利用できるので、クライアント１３１又は管理クライアント１３２にファイルシステムのスナップショットイメージを提供することができる。
【００４４】
すなわち、仮想ボリューム１４３は、一又は複数のディスク装置内の記憶領域からなる仮想的なボリュームであって、実際にはプライマリボリューム１４１のブロックの一部と差分ボリューム１４２のブロックの一部とから構成されている。
【００４５】
例えば、図７において、スナップショット１作成時のプライマリボリューム１４１に対応する仮想ボリューム１４３は、Ｐ１に対応する差分データであるＤ１の”ＡＡＡＡＡ”、Ｐ２に対応する差分データであるＤ２の”ＢＢＢＢＢ”、Ｐ３に対応する差分データはないのでプライマリボリューム１４１に記憶された”ＣＣＣＣＣ”が合成されたものとなる。
【００４６】
図８は、本発明の実施の形態のバックアップ対象一覧取得要求処理サブプログラム５０１のフローチャートである。
【００４７】
バックアップ対象一覧取得要求処理サブプログラム５０１は、ディスク装置１１５に記録されたデータのうち、バックアップ可能なファイルシステム（ファイルシステムとしてマウントされたスナップショットを含む）の検索をバックアップ処理プログラム１２５に要求するものであり、管理クライアント１３２によって実行される。
【００４８】
バックアップ対象一覧取得要求処理が開始すると、バックアップ処理プログラム１２５の要求受付処理サブプログラム４０１に対して、バックアップ対象一覧取得を要求する（８０１）。次に、要求受付処理サブプログラム４０１からの応答を出力し（８０２）、処理を終了する（８０３）。
【００４９】
管理クライアント１３２を操作する管理者は、バックアップ対象一覧取得要求処理サブプログラム５０１を実行することによって、ディスク装置１１５に記録されたデータのうち、どのファイルシステムがバックアップ可能であるかを知ることができる。
【００５０】
図９は、本発明の実施の形態のバックアップ要求処理サブプログラム５０２のフローチャートである。
【００５１】
バックアップ要求処理サブプログラム５０２は、ディスク装置１１５に記録されたファイルシステムのバックアップをバックアップ処理プログラム１２５に要求するものであり、管理クライアント１３２によって実行される。
【００５２】
管理クライアント１３２を操作する管理者は、バックアップ対象一覧取得要求処理サブプログラム５０１を実行して得られたバックアップ可能なファイルシステム名（スナップショット名）又はファイルサーバプログラム１２１によってアクセス権限が与えられたファイルシステム名（スナップショット名）を指定して、バックアップ要求処理サブプログラム５０２を実行する。バックアップ要求処理が開始すると、バックアップ処理プログラム１２５の要求受付処理サブプログラム４０１に対して、バックアップを要求し（９０１）、処理を終了する（９０２）。
【００５３】
管理クライアント１３２を操作する管理者は、バックアップ要求処理サブプログラム５０２を実行することによって、ディスク装置１１５に記録されたファイルシステムをメディアサーバ１３３にバックアップすることができる。このとき、スナップショット名を指定することによって、任意のスナップショットのみをメディアサーバ１３３にバックアップすることができる。
【００５４】
図１０は、本発明の実施の形態の要求受付処理サブプログラム４０１のフローチャートである。
【００５５】
要求受付処理サブプログラム４０１は、ＣＰＵ１１１によって実行され、管理クライアント１３２からの要求を処理する。
【００５６】
要求受付処理サブプログラム４０１は、管理クライアント１３２からの要求が到着すると（１００１）、その要求がバックアップ対象一覧取得要求であるか否かを判定する（１００２）。その要求がバックアップ対象一覧取得要求であるときは、ディスク装置１１５から、バックアップ可能なファイルシステム（ファイルシステムとしてマウントされたスナップショットを含む）を検索する（１００３）。具体的には、スナップショットを検索する際には、マッピングテーブル１４４を参照し、格納されているスナップショット名を検索する。例えば、図７のマッピングテーブルを参照した場合、スナップショット１とスナップショット２がバックアップ可能である。
【００５７】
次に、この検索の結果得られたファイルシステム名（スナップショット名）を要求元の管理クライアント１３２に返送し（１００４）、ステップ１００１に戻る。
【００５８】
一方、その要求がバックアップ対象一覧取得要求でないときは、その要求がバックアップ要求であるか否かを判定する（１００５）。その要求がバックアップ要求であるときは、バックアップを実行する。すなわち、ファイルシステム処理プログラム１２３のファイル読み出し要求処理サブプログラム２０１（図１１）を呼び出し、バックアップ要求において指定されたファイルシステムに含まれるブロックを特定し、ファイルシステムに含まれるファイルのデータを取得する（１００６）。次に、得られたファイルのデータをメディアサーバ１３３に送信する（１００７）。
【００５９】
次に、当該ファイルシステムに含まれる全てのファイルのデータを送信したか否かを判定し（１００８）、送信していない場合は、当該ファイルシステムに含まれる他のファイルのデータを送信するために、ステップ１００６に戻る。一方、当該ファイルシステムに含まれる全てのファイルのデータを送信した場合は、メディアサーバ１３３に完了通知を送信し（１００９）、ステップ１００１に戻る。
【００６０】
図１１は、本発明の実施の形態のファイル読み出し要求処理サブプログラム２０１のフローチャートである。
【００６１】
ファイル読み出し要求処理サブプログラム２０１は、要求受付処理サブプログラム４０１から呼び出され、指定されたファイルのデータを取得し、そのデータを要求元に返送する。
【００６２】
ファイル読み出し要求処理サブプログラム２０１は、要求受付処理サブプログラム４０１からファイルパス名を指定して呼び出されると、そのファイルパス名から、読み出しを要求されたファイルのデータが格納されたプライマリボリューム１４１のブロックアドレスを取得する（１１０１）。このブロックアドレスの取得については、図１３で詳細に説明する。
【００６３】
次に、差分スナップショット合成処理サブプログラム３０３を呼び出し、取得したプライマリボリューム１４１のブロックアドレスに対応する仮想ボリューム１４３のブロックアドレスの取得を要求する（１１０２）。
【００６４】
次に、取得した仮想ボリューム１４３のブロックアドレスに格納されているデータを読み出す（１１０３）。
【００６５】
次に、要求されたファイルの全てのブロックアドレスについてデータを取得したか否かを判定し（１１０４）、取得していない場合は、要求されたファイルの全てのブロックアドレスについてデータを取得するために、ステップ１１０２に戻る。
【００６６】
一方、要求されたファイルの全てのブロックアドレスについてデータを取得した場合は、取得したデータを呼び出し元に返送して（１１０５）、処理を終了する（１１０６）。
【００６７】
図１０及び図１１に示すように、バックアップ処理プログラム１２５は、管理クライアント１３２からのバックアップ要求を受けると、ファイルシステム処理プログラム１２３と連携して、ファイルごとに、そのファイルを構成するデータ（ブロック）を取得し、バックアップする。従って、管理クライアント１３２が、バックアップする対象のスナップショットを指定すれば、そのスナップショットについて生成された仮想ボリューム１４３を構成するファイルのデータ（ブロック）のみをバックアップすることができる。
【００６８】
図１２は、本発明の実施の形態の差分スナップショット合成処理サブプログラム３０３のフローチャートである。
【００６９】
差分スナップショット合成処理サブプログラム３０３は、ファイル読み出し要求処理サブプログラム２０１によって呼び出され、指定されたファイルシステム（ファイルシステムとしてマウントされたスナップショットを含む）のを構成するブロックアドレスを要求元に返送する。スナップショットが指定された場合は、そのスナップショットの仮想ボリュームを構成するブロックアドレスを返送する。
【００７０】
差分スナップショット合成処理サブプログラム３０３は、ファイル読み出し要求処理サブプログラム２０１からブロックアドレスを指定して呼び出されると、そのブロックアドレスでマッピングテーブル１４４を検索する（１２０１）。
【００７１】
次に、そのブロックアドレスに対応するブロックの内容（データ）が変更されているか否かを判定するため、マッピングテーブル１４４の変更有無ビットマップ欄の、指定されたスナップショットに対応するビットを参照する（１２０２）。その結果、対応するビットが「１」である場合は、ブロックのデータが変更されていると判定し、指定されたスナップショットの差分ボリューム格納位置欄に表示されたアドレスを取得する（１２０３）。
【００７２】
一方、対応するビットが「０」であるか、又は、変更有無ビットマップ欄の表示が「なし」である場合は、ブロックのデータが変更されていないと判定し、指定されたアドレスを取得する（１２０４）。
【００７３】
次に、取得したアドレスを呼び出し元に返送して（１２０５）、処理を終了する（１２０６）。
【００７４】
図１３は、本発明の実施の形態のファイルパス名とそのファイルのブロックアドレスとの対応関係の説明図である。
【００７５】
この図１３を用いて、図１１のステップ１１０１における、ファイルパス名からブロックアドレスを取得する手順を説明する。
【００７６】
図１３の例では、ファイルシステム処理プログラム１２３が運用するファイルシステムにおいて、ルートディレクトリ（図１３の「／」）の下に、ディレクトリ「ｅｔｃ」、「ｈｏｍｅ」及び「ｕｓｒ」が存在する。このファイルシステムは、ディスク装置１１５のプライマリボリューム１４１に格納されている。なお、ファイルシステム処理プログラム１２３がスナップショットをマウントするまでは、ディレクトリ「ｍｎｔ」以下のディレクトリは存在しない。
【００７７】
ディレクトリ「ｕｓｒ」の下には、ＮＡＳ１００を共有するユーザごとに割り当てられたユーザディレクトリがある。このうち、ユーザ「００１」に割り当てられたディレクトリ「ｕｓｅｒ００１」の下には、ユーザ「００１」が所有するファイル「ａ．ｔｘｔ」が格納されている。このファイル「ａ．ｔｘｔ」は、ファイルシステム処理プログラム１２３によって、プライマリボリューム１４１のブロックアドレス「Ｐ１」、「Ｐ２」及び「Ｐ３」と対応付けられており、これらのアドレスのブロックにファイル「ａ．ｔｘｔ」を構成するデータが格納されている。
【００７８】
この例では、図７に示すように、二つのスナップショットが作成され、ファイル「ａ．ｔｘｔ」を構成するブロックアドレス「Ｐ１」、「Ｐ２」及び「Ｐ３」のデータは、図７のマッピングテーブルに示すように更新されているものとする。
【００７９】
図１１のステップ１１０１において、ファイルパス名からブロックアドレスを取得する前に、ファイルシステム処理プログラム１２３は、指定されたスナップショットを、マウントポイントを指定して、ファイルシステムにマウントする。例えば、スナップショット１をマウントポイント「／ｍｎｔ／ｓｓ０１」にマウントするように指定する。
【００８０】
その後、例えば、スナップショット１のファイル「ａ．ｔｘｔ」のブロックアドレスを取得するとき、クライアント１３１又は管理クライアント１３２は、ファイルパス名「／ｍｎｔ／ｓｓ０１／ｕｓｒ／ｕｓｅｒ００１／ａ．ｔｘｔ」を指定する。
【００８１】
ファイルシステム処理プログラム１２３は、ファイルパス名に「／ｍｎｔ／ｓｓ０１」が含まれていることから、クライアント１３１又は管理クライアント１３２がスナップショット１のファイルを取得しようとしていると判断し、図７のマッピングテーブルの「変更有無ビットマップ」及び「スナップショット１差分ボリューム格納位置」の列を参照して、「／ｕｓｒ／ｕｓｅｒ００１／ａ．ｔｘｔ」を検索する。その結果、スナップショット１のディレクトリ構造が、図１３の「／ｍｎｔ／ｓｓ０１」の下に示すように、仮想的に再現される。
【００８２】
ここで、図７のマッピングテーブルを参照すると、スナップショット１において、ファイル「ａ．ｔｘｔ」を構成するブロックのうち、「Ｐ１」と「Ｐ２」の差分データが存在するため、「Ｐ１」と「Ｐ２」を、それぞれ、差分ボリューム１４２のブロック「Ｄ１」と「Ｄ２」で置き換える。その結果、スナップショット１のファイル「ａ．ｔｘｔ」を構成するブロックのアドレス「Ｄ１」、「Ｄ２」及び「Ｐ３」を取得する。
【００８３】
このようにして、マッピングテーブル１４４によってスナップショット１と関連付けられたブロックの集合が、スナップショット１の仮想ボリューム１４３である。
【００８４】
同様にして、スナップショット２を指定してファイルパス名からブロックアドレスを取得する場合は、スナップショット２をマウントポイント「／ｍｎｔ／ｓｓ０２」にマウントする。
【００８５】
その後、スナップショット２のファイル「ａ．ｔｘｔ」のブロックアドレスを取得するとき、クライアント１３１又は管理クライアント１３２は、ファイルパス名「／ｍｎｔ／ｓｓ０２／ｕｓｒ／ｕｓｅｒ００１／ａ．ｔｘｔ」を指定する。
【００８６】
ファイルシステム処理プログラム１２３は、ファイルパス名に「／ｍｎｔ／ｓｓ０２」が含まれていることから、クライアント１３１又は管理クライアント１３２がスナップショット２のファイルを取得しようとしていると判断し、図７のマッピングテーブルの「変更有無ビットマップ」及び「スナップショット２差分ボリューム格納位置」の列を参照して、「／ｕｓｒ／ｕｓｅｒ００２／ａ．ｔｘｔ」を検索する。その結果、スナップショット２のディレクトリ構造が、図１３の「／ｍｎｔ／ｓｓ０２」の下に示すように、仮想的に再現される。
【００８７】
ここで、図７のマッピングテーブルを参照すると、スナップショット２において、ファイル「ａ．ｔｘｔ」を構成するブロックのうち、「Ｐ２」の差分データが存在するため、「Ｐ２」を差分ボリューム１４２のブロック「Ｄ２」で置き換える。その結果、スナップショット２のファイル「ａ．ｔｘｔ」を構成するブロックのアドレス「Ｐ１」、「Ｄ２」及び「Ｐ３」を取得する。
【００８８】
このようにして、マッピングテーブル１４４によってスナップショット２と関連付けられたブロックの集合が、スナップショット２の仮想ボリューム１４３である。
【００８９】
以上説明した本発明の実施の形態では、スナップショットの世代を指定して、当該スナップショットのデータのみをバックアップするが、ファイル名を指定することによって、同一ファイルの複数世代のデータをバックアップすることもできる。
【００９０】
以上説明した本発明の実施の形態によれば、管理クライアント１３２からのスナップショットを指定したバックアップ要求に対して、ＮＡＳ１００のコントローラ１０１は、ファイルシステム処理プログラム１２３とバックアップ処理プログラム１２５とを連携させることによって、指定されたスナップショットのデータのみをバックアップすることができる。その結果、不要なデータをバックアップしないため、バックアップ時間を短縮することができ、バックアップ装置の記憶容量を効率的に利用することができる。
【図面の簡単な説明】
【００９１】
【図１】本発明の実施の形態の差分スナップショットのバックアップ方法を適用したコンピュータシステムのブロック図である。
【図２】本発明の実施の形態のファイルシステム処理プログラムの構成の説明図である。
【図３】本発明の実施の形態の差分スナップショット管理プログラムの構成の説明図である。
【図４】本発明の実施の形態のバックアップ処理プログラムの構成の説明図である。
【図５】本発明の実施の形態のバックアップ要求プログラムの構成の説明図である。
【図６】本発明の実施の形態のスナップショットの管理の説明図である。
【図７】本発明の実施の形態のスナップショットの管理の説明図である。
【図８】本発明の実施の形態のバックアップ対象一覧取得要求処理サブプログラムのフローチャートである。
【図９】本発明の実施の形態のバックアップ要求処理サブプログラムのフローチャートである。
【図１０】本発明の実施の形態の要求受付処理サブプログラムのフローチャートである。
【図１１】本発明の実施の形態のファイル読み出し要求処理サブプログラムのフローチャートである。
【図１２】本発明の実施の形態の差分スナップショット合成処理サブプログラムのフローチャートである。
【図１３】本発明の実施の形態のファイルパス名とそのファイルのブロックアドレスとの対応関係の説明図である。
【符号の説明】
【００９２】
１００  ネットワークストレージ装置（ＮＡＳ）
１０１  コントローラ
１１１  ＣＰＵ
１１２  ネットワークインターフェース（Ｉ／Ｆ）
１１３  ストレージインターフェース（Ｉ／Ｆ）
１１４  メモリ
１１５  ディスク装置
１２１  ファイルサーバプログラム
１２３  ファイルシステム管理プログラム
１２４  差分スナップショット管理プログラム
１２５  バックアップ処理プログラム
１２６  バックアップ要求プログラム
１３１  クライアント
１３２  管理クライアント
１３３  メディアサーバ
１４１  プライマリボリューム（Ｐ−ＶＯＬ）
１４２  差分ボリューム（Ｄ−ＶＯＬ）
１４３  仮想ボリューム（Ｖ−ＶＯＬ）
１４４  マッピングテーブル
１５１  ネットワーク
【図１】
2005284609.tif 000003
【図２】
2005284609.tif 000004
【図３】
2005284609.tif 000005
【図４】
2005284609.tif 000006
【図５】
2005284609.tif 000007
【図６】
2005284609.tif 000008
【図７】
2005284609.tif 000009
【図８】
2005284609.tif 000010
【図９】
2005284609.tif 000011
【図１０】
2005284609.tif 000012
【図１１】
2005284609.tif 000013
【図１２】
2005284609.tif 000014
【図１３】
2005284609.tif 000015