(57)【要約】【課題】  ストレージのデータコピーの際に必要な、サーバ装置とストレージ装置間のデータ転送を削減し、運用中のストレージのデータアクセス性能の低下を抑えることができるスナップショット機能の実現技術を提供する。【解決手段】  ストレージシステムにおいて、ストレージ装置１１１のＣＰＵ１１２が処理するコマンドには、あらかじめ定めた順序に従ってデータコピー処理とデータ格納処理とを行うＣｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドを含み、サーバ装置１０１は、このコマンドをストレージ装置１１１に発行し、ストレージ装置１１１は、このコマンドを受け取ると、まずディスクドライブ１１７からディスクドライブ１１８へのデータコピー処理を実行して、次にディスクドライブ１１７へのデータ格納処理を実行して、ディスクドライブ１１８に格納したデータのスナップショットを維持する。【選択図】  図１
2006113927.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置と、外部の機器と接続するための接続装置と、制御部とを含むストレージ装置であって、
前記複数の記憶装置は、前記接続装置を通して外部の機器から受け取ったデータを格納する機能を有し、
前記制御部は、前記接続装置を通して受け取った前記複数の記憶装置に格納したデータにアクセスするコマンドを処理する機能を有し、
前記制御部が処理するコマンドには、あらかじめ定めた順序に従って第１の記憶装置から第２の記憶装置へのデータコピー処理と前記第１の記憶装置へのデータ格納処理とを行う第１のコマンドを含むことを特徴とするストレージ装置。
【請求項２】
請求項１記載のストレージ装置において、
前記制御部は、前記第１のコマンドを受け取ると、まず前記第１の記憶装置から前記第２の記憶装置へのデータコピー処理を実行して、次に前記第１の記憶装置へのデータ格納処理を実行する機能を有することを特徴とするストレージ装置。
【請求項３】
複数の記憶装置と、外部の機器と接続するための接続装置と、制御部とを含むストレージ装置と、
前記ストレージ装置に接続されたサーバ装置とからなるストレージシステムであって、
前記ストレージ装置の前記複数の記憶装置は、前記接続装置を通して前記サーバ装置から受け取ったデータを格納する機能を有し、
前記ストレージ装置の前記制御部は、前記接続装置を通して受け取った前記複数の記憶装置に格納したデータにアクセスするコマンドを処理する機能を有し、
前記ストレージ装置の前記制御部が処理するコマンドには、あらかじめ定めた順序に従って第１の記憶装置から第２の記憶装置へのデータコピー処理と前記第１の記憶装置へのデータ格納処理とを行う第１のコマンドを含み、
前記サーバ装置は、前記第１のコマンドを前記ストレージ装置に発行する機能を有し、
前記ストレージ装置の前記制御部は、前記第１のコマンドを受け取ると、まず前記第１の記憶装置から前記第２の記憶装置へのデータコピー処理を実行して、次に前記第１の記憶装置へのデータ格納処理を実行する機能を有することを特徴とするストレージシステム。
【請求項４】
複数の記憶装置と、外部の機器と接続するための接続装置と、制御部とを含むストレージ装置と、
前記ストレージ装置に接続されたサーバ装置とからなるストレージシステムのスナップショット維持方法であって、
前記サーバ装置は、第１の記憶装置上で運用しているデータについて書き込みが生じた場合に、該書き込み対象のアドレスを指定してあらかじめ定めた順序に従って前記第１の記憶装置から第２の記憶装置へのコピー処理と前記第１の記憶装置へのデータ格納処理とを行わせる第１のコマンドを前記ストレージ装置に発行し、
前記ストレージ装置の前記制御部は、前記第１のコマンドを受け取ると、まず前記第１の記憶装置の前記書き込み対象のアドレスのデータを前記第２の記憶装置へコピーし、次に前記第１の記憶装置の前記書き込み対象のアドレスへ書き込みデータを格納する処理を実行し、もって前記第１の記憶装置上で運用しているデータとスナップショット作成時点のデータとの差分を前記第２の記憶装置に格納して前記第１の記憶装置上で運用しているデータのスナップショットを維持することを特徴とするスナップショット維持方法。
【請求項５】
複数の記憶装置と、外部の機器と接続するための接続装置と、制御部とを含むストレージ装置であって、
前記複数の記憶装置は、前記接続装置を通して外部の機器から受け取ったデータを格納する機能を有し、
前記制御部は、前記接続装置を通して受け取った前記複数の記憶装置に格納したデータにアクセスするコマンドを処理する機能を有し、
前記制御部が処理するコマンドには、第１の記憶装置のデータと第２の記憶装置のデータとの配置を入れ換える処理を行う第２のコマンドを含むことを特徴とするストレージ装置。
【請求項６】
請求項５記載のストレージ装置において、
前記第１の記憶装置のデータと前記第２の記憶装置のデータとの配置を入れ換える処理は、データの論理的な配置を交換することによって実現することを特徴とするストレージ装置。
【請求項７】
請求項６記載のストレージ装置において、
前記第１の記憶装置のデータと前記第２の記憶装置のデータで論理的な配置を交換したデータを、第１の記憶装置のデータと第２の記憶装置のデータを再び物理的なデータの配置に変換する機能を有することを特徴とするストレージ装置。
【請求項８】
複数の記憶装置と、外部の機器と接続するための接続装置と、制御部とを含むストレージ装置と、
前記ストレージ装置に接続されたサーバ装置とからなるストレージシステムであって、
前記ストレージ装置の前記複数の記憶装置は、前記接続装置を通して前記サーバ装置から受け取ったデータを格納する機能を有し、
前記ストレージ装置の前記制御部は、前記接続装置を通して受け取った前記複数の記憶装置に格納したデータにアクセスするコマンドを処理する機能を有し、
前記ストレージ装置の前記制御部が処理するコマンドには、第１の記憶装置のデータと第２の記憶装置のデータとの配置を入れ換える処理を行う第２のコマンドを含み、
前記サーバ装置は、前記第２のコマンドを前記ストレージ装置に発行する機能を有し、
前記ストレージ装置の前記制御部は、前記第２のコマンドを受け取ると、前記第１の記憶装置のデータと前記第２の記憶装置のデータとの配置を入れ換える処理を実行する機能を有することを特徴とするストレージシステム。
【請求項９】
複数の記憶装置と、外部の機器と接続するための接続装置と、制御部とを含むストレージ装置と、
前記ストレージ装置に接続されたサーバ装置とからなるストレージシステムのスナップショット維持方法であって、
前記サーバ装置は、第１の記憶装置上で運用しているデータについて書き込みが生じた場合に、該書き込み対象のアドレスを指定して第１の記憶装置のデータと第２の記憶装置のデータとの配置を入れ換える処理を行わせる第１のコマンドを前記ストレージ装置に発行し、次に前記書き込み対象のアドレスを指定して書き込みデータを格納させる第２のコマンドを前記ストレージ装置に発行し、
前記ストレージ装置の前記制御部は、前記第１のコマンドを受け取ると、前記第１の記憶装置の前記書き込み対象のアドレスのデータと前記第２の記憶装置のデータとの配置を入れ換える処理を実行し、前記第２のコマンドを受け取ると前記書き込みデータを前記第１の記憶装置の前記書き込み対象アドレスに格納し、もって前記第１の記憶装置上で運用しているデータとスナップショット作成時点のデータとの差分を前記第２の記憶装置に格納して前記第１の記憶装置上で運用しているデータのスナップショットを維持することを特徴とするスナップショット維持方法。
【請求項１０】
あらかじめ定めた順序に従って第１の記憶装置から第２の記憶装置へのデータコピー処理と前記第１の記憶装置へのデータ格納処理とを行うコマンドであって、
前記データコピー処理および前記データ格納処理の制御の種別を表す識別子と、データコピー元の前記第１の記憶装置を表す識別子と、データコピー元の前記第１の記憶装置のデータ位置と、データコピー先の前記第２の記憶装置を表す識別子と、データコピー先の前記第２の記憶装置のデータ位置と、データコピーの容量と、データ格納先の前記第１の記憶装置と、データ格納先の前記第１の記憶装置のデータ位置と、データ格納するサイズと、格納するデータの識別子とを情報として含むことを特徴とするコマンド。
【請求項１１】
請求項１０記載のコマンドにおいて、
前記情報を一組として、複数からなることを特徴とするコマンド。
【請求項１２】
第１の記憶装置のデータと第２の記憶装置のデータとの配置を入れ換える処理を行うコマンドであって、
前記入れ換える処理の制御の種別を表す識別子と、データ入れ換えの前記第１の記憶装置を表す識別子と、データ入れ換えの前記第１の記憶装置のデータ位置と、データ入れ換えの前記第２の記憶装置を表す識別子と、データ入れ換えの前記第２の記憶装置のデータ位置と、データ入れ換えの容量とを情報として含むことを特徴とするコマンド。
【請求項１３】
請求項１２記載のコマンドにおいて、
前記情報を一組として、複数からなることを特徴とするコマンド。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、およびこのストレージ装置を含むストレージシステムにおけるスナップショット機能の実現技術に関し、特に、スナップショットを作成し維持する方法に適用して有効な技術に関するものである。
【背景技術】
【０００２】
本発明者が検討したところによれば、従来のストレージシステムにおけるスナップショット機能の実現技術に関しては、以下のような技術が考えられる。
【０００３】
例えば、情報システムの利用が拡大するにつれ、そのデータを保存するストレージの容量も拡大を続けている。また、ストレージに保存されたデータの価値も高まり、データへの不正アクセスや誤操作によるデータの破壊は、情報システムを運営する上で大きな損失となる。そのため、データの破壊を防止する目的で、またデータを破壊した場合の復旧を行えるようにする目的でデータ保護機能が重要になっている。
【０００４】
スナップショット機能は、ストレージのデータ保護機能の一つとして使用する。スナップショット機能を用いれば、運用中のストレージのデータをある時点で静止化したイメージであるスナップショットを作成し維持することができる。スナップショットは、運用中のストレージとは別の手段でアクセス可能であり、作成した時点のデータを参照することができる。そのため、運用中のストレージのデータを破壊してしまった場合、スナップショット作成時点のデータを復元することができる。
【０００５】
スナップショット機能を実現する方法として、データの処理や制御を行うサーバ装置の機能を利用する方法、データを保存するストレージ装置の機能を利用する方法の二つに区別できる。
【０００６】
サーバ装置の機能を利用する方法の場合、サーバ装置上で動作するソフトウェアを利用する。例えば、ＯＳの機能を用いてスナップショットを作成する方法がある（例えば、非特許文献１参照）。運用中のストレージボリューム（運用ボリューム）と、それとは別のスナップショット作成用のストレージボリューム（差分ボリューム）を用意する。そして、ＯＳに運用ボリュームのスナップショット作成を指示すると、その時点の運用ボリュームのイメージであるスナップショットが参照可能になる。スナップショット作成以後、運用ボリュームに更新が発生した場合、運用ボリュームの更新前のデータを差分ボリュームにコピーする。そして、スナップショットのあるデータアドレスを参照した場合、そのデータが差分ボリュームにコピーされていればそのデータを、コピーされていなければ運用ボリュームのデータを返す。このように、スナップショット作成時のデータを差分ボリュームに保存しておくことで、スナップショットのイメージを維持する。
【０００７】
また、ストレージ装置の機能を利用する方法もある（例えば、特許文献１参照）。この場合も、運用中のストレージと、それとは別のスナップショット作成用のストレージを用意する。そして、ストレージに接続するサーバ装置やストレージの制御コンソールなどから、運用中のストレージのスナップショット作成をストレージ装置に指示する。それ以後、運用中のストレージに更新が発生した場合、ストレージ装置が更新前の運用中のストレージにあるデータを、スナップショット作成用のストレージにコピーする。そして、ストレージ装置にスナップショットのあるデータのアドレス参照を行うと、スナップショット作成用のストレージにコピーされていればそのデータを、コピーされていなければ運用中のストレージからデータを返す。このように、ストレージ装置内でスナップショット作成時のデータをスナップショット作成用のストレージに保存しておくことで、スナップショット作成時の運用中のストレージのイメージを維持する。
【特許文献１】特開２００４−１１８４１３号公報
【非特許文献１】ＡＪ  Ｌｅｗｉｓ著  「ＬＶＭ  ＨＯＷＴＯ」  ｈｔｔｐ：／／ｉｂｉｂｌｉｏ．ｏｒｇ／ｐｕｂ／Ｌｉｎｕｘ／ｄｏｃｓ／ＨＯＷＴＯ／ｏｔｈｅｒ−ｆｏｒｍａｔｓ／ｐｄｆ／ＬＶＭ−ＨＯＷＴＯ．ｐｄｆ
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、前記のような従来のストレージシステムにおけるスナップショット機能の実現技術に関して、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００９】
例えば、サーバ装置上で動作するソフトウェアを利用してスナップショットを作成する場合、データをコピーする際に運用中のストレージからサーバ装置に読み込み、さらにスナップショット作成用のストレージに書き込みを実行する。そのため、スナップショットを作成していない場合と比較して、サーバ装置とストレージ装置との間でコマンド発行やストレージデータの読み込みと書き込みのために多くのデータ転送が必要になり、運用中のストレージへのデータアクセス性能が低下するという課題がある。
【００１０】
また、ストレージ装置の機能を利用してスナップショットを作成する場合、運用中のストレージの使用状況やアクセス特性に関係なく、ストレージ装置内で更新前のデータを差分としてコピーする。そのため、スナップショット作成用のストレージを無駄に消費することがある。例えば、サーバ装置から見て、運用中のストレージのあるアドレスに存在するデータは使用していないのに、スナップショット作成用ストレージにデータをコピーしたとする。このとき、スナップショットを参照する際、それまで使用していなかったアドレスのデータにサーバ装置からアクセスしても、そのデータは意味が無い。
【００１１】
さらに、ストレージ装置の機能を利用してスナップショットを作成する場合、サーバ装置からのデータアクセス特性とは無関係に、ストレージ装置内で更新前のデータをコピーする。そのため、例えば、ディスクドライブのデータ管理単位でデータのコピーを行うことになる。サーバ装置からのデータアクセス特性がシーケンシャルアクセスの場合、一括してデータコピーをすればストレージ装置内でコピーコマンドを１回実行することで済むはずが、データ管理単位ごとに多数のコマンドを処理する必要が生じる。つまり、サーバ装置からのデータアクセス特性に応じた柔軟なデータコピーを実行できないという課題が発生する。
【００１２】
そこで、本発明は、ストレージのデータコピーの際に必要な、サーバ装置とストレージ装置間のデータ転送を削減し、運用中のストレージのデータアクセス性能の低下を抑えることができるスナップショット機能の実現技術を提供することを目的とするものである。
【００１３】
また、本発明の他の目的は、スナップショット作成用のストレージの無駄な消費を抑えることができ、さらに、データアクセス特性に応じたスナップショット維持処理を可能とすることができるスナップショット機能の実現技術を提供するものである。
【００１４】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１６】
（１）本発明は、複数の記憶装置と、外部の機器と接続するための接続装置と、制御部とを含むストレージ装置に適用される。さらには、このストレージ装置と、ストレージ装置に接続されたサーバ装置とからなるストレージシステムに適用される。さらには、このストレージシステムのスナップショット維持方法に適用される。
【００１７】
ストレージ装置の制御部は、接続装置を通して受け取った複数の記憶装置に格納したデータにアクセスするコマンドを処理する機能を有する。ストレージ装置の制御部が処理するコマンドには、あらかじめ定めた順序に従って第１の記憶装置から第２の記憶装置へのデータコピー処理と第１の記憶装置へのデータ格納処理とを行う第１のコマンドを含む。
【００１８】
サーバ装置は、第１のコマンドをストレージ装置に発行する機能を有する。ストレージ装置の制御部は、第１のコマンドを受け取ると、まず第１の記憶装置から第２の記憶装置へのデータコピー処理を実行して、次に第１の記憶装置へのデータ格納処理を実行する機能を有する。そして、第１の記憶装置に格納したデータと第２の記憶装置に格納したデータを用いて、第１の記憶装置に格納したデータのスナップショットを維持するものである。
【００１９】
第１のコマンドは、データコピー処理およびデータ格納処理の制御の種別を表す識別子と、データコピー元の第１の記憶装置を表す識別子と、データコピー元の第１の記憶装置のデータ位置と、データコピー先の第２の記憶装置を表す識別子と、データコピー先の第２の記憶装置のデータ位置と、データコピーの容量と、データ格納先の第１の記憶装置と、データ格納先の第１の記憶装置のデータ位置と、データ格納するサイズと、格納するデータの識別子とを情報として含む。さらに、これらの情報を一組として、複数からなるものである。
【００２０】
（２）本発明は、複数の記憶装置と、外部の機器と接続するための接続装置と、制御部とを含むストレージ装置に適用される。さらには、このストレージ装置と、ストレージ装置に接続されたサーバ装置とからなるストレージシステムに適用される。さらには、このストレージシステムのスナップショット維持方法に適用される。
【００２１】
ストレージ装置の制御部は、接続装置を通して受け取った複数の記憶装置に格納したデータにアクセスするコマンドを処理する機能を有する。ストレージ装置の制御部が処理するコマンドには、第１の記憶装置のデータと第２の記憶装置のデータとの配置を入れ換える処理を行う第２のコマンドを含む。
【００２２】
サーバ装置は、第２のコマンドをストレージ装置に発行する機能を有する。ストレージ装置の制御部は、第２のコマンドを受け取ると、第１の記憶装置のデータと第２の記憶装置のデータとの配置を入れ換える処理を実行する機能を有する。この第１の記憶装置のデータと第２の記憶装置のデータとの配置を入れ換える処理は、データの論理的な配置を交換することによって実現する。そして、第１の記憶装置に格納したデータと第２の記憶装置に格納したデータを用いて、第１の記憶装置に格納したデータのスナップショットを維持するものである。
【００２３】
第２のコマンドは、入れ換える処理の制御の種別を表す識別子と、データ入れ換えの第１の記憶装置を表す識別子と、データ入れ換えの第１の記憶装置のデータ位置と、データ入れ換えの第２の記憶装置を表す識別子と、データ入れ換えの第２の記憶装置のデータ位置と、データ入れ換えの容量とを情報として含む。さらに、これらの情報を一組として、複数からなるものである。
【発明の効果】
【００２４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２５】
本発明によれば、ストレージのデータコピーの際に必要な、サーバ装置とストレージ装置間のデータ転送を削減し、運用中のストレージのデータアクセス性能の低下を抑えることが可能となる。
【００２６】
また、本発明によれば、サーバ装置が運用中のストレージの使用状況に応じてデータのコピーを指示するのを可能にすることで、スナップショット作成用のストレージの無駄な消費を抑えることが可能となる。
【００２７】
さらに、本発明によれば、サーバ装置がデータコピー実行を指示するのを可能にすることで、データアクセス特性に応じたスナップショット維持処理が可能となる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２９】
本発明は、スナップショットの維持に必要な差分データを保存する処理による運用ボリュームのデータアクセスの性能低下を抑えることの目的を、サーバ装置からの指示をストレージ装置で実行することで実現可能とするものである。サーバ装置が、データのコピーとデータの更新を同時にストレージ装置に指示するコマンドインタフェースを用いて、スナップショットの維持を行うことを特徴とする。また、サーバ装置上で動作するソフトウェアがこのコマンドインタフェースを使用すること、および、ストレージ装置がコマンドインタフェースにより指示された処理を実行することを特徴とする。
【００３０】
本発明において、サーバ装置からストレージ装置への指示は、第１の記憶装置から第２の記憶装置へのデータコピー処理と第１の記憶装置へのデータ格納処理とを行う方法、すなわち運用ボリュームから差分ボリュームへのデータコピーと運用ボリュームへのデータ格納とによる、差分データのコピーとデータ更新を同時に発行する方法（実施の形態１）と、第１の記憶装置のデータと第２の記憶装置のデータとの配置を入れ換える処理を行う方法、すなわち運用ボリュームと差分ボリュームのデータを入れ換える方法（実施の形態２）とがあり、以下において具体的に説明する。
【００３１】
（実施の形態１）
本実施の形態は、サーバ装置からデータのコピーと書き込みを同時に指示するコマンド（ここでは、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドと称する）をストレージ装置に発行し、そのコマンドをストレージ装置が実行することで、スナップショットを維持する例である。
【００３２】
図１は、本発明の実施の形態１におけるストレージシステムのシステム構成の一例を示す構成図である。
【００３３】
本実施の形態におけるストレージシステムは、サーバ装置１０１と、ストレージ装置１１１から構成される。
【００３４】
サーバ装置１０１は、処理を行う制御部としての機能を持つＣＰＵ１０２、サーバ装置１０１の処理に必要なデータおよびＣＰＵ１０２が実行するソフトウェアを保持するメモリ１０３、サーバ装置１０１とストレージ装置１１１を接続してそれぞれの間でデータ転送を行うための接続装置としての機能を持つインタフェース１０４を備える。
【００３５】
サーバ装置１０１で動作するソフトウェアとして、メモリ１０３上には、ファイルシステム処理プログラム１０５およびスナップショット管理プログラム１０６がある。ファイルシステム処理プログラム１０５は、サーバ装置１０１が提供するサービスで使用するデータ管理に使用する。例えば、サーバ装置１０１上でファイルサーバプログラムを実行している場合、そのファイルを管理する。あるいは、データベースを実行している場合、データベースマネージメントシステムプログラムが扱うデータをファイルとして扱う場合に用いる。ファイルシステム処理プログラム１０５は、運用ボリュームやスナップショットにアクセスする際に、スナップショット管理プログラム１０６に読み出しや書き込みの要求を発行してディスクドライブとの間でデータ転送を行う。スナップショット管理プログラム１０６は、運用ボリュームと差分ボリュームの組でスナップショットを作成して維持し、ボリュームへのアクセスを可能にする。
【００３６】
ストレージ装置１１１は、データを保持するための記憶装置としての機能を持つディスクドライブ１１７，１１８、ストレージ装置１１１内の処理を行う制御部としての機能を持つＣＰＵ１１２、ストレージ装置１１１の処理に必要なデータやＣＰＵ１１２が実行するソフトウェアを保持するメモリ１１３、ストレージ装置１１１とサーバ装置１０１を接続してそれぞれの間でデータ転送を行うための接続装置としての機能を持つインタフェース１１４、ＣＰＵ１１２が実行する処理に伴うディスクドライブ１１７とディスクドライブ１１８との間でデータ転送を行うための接続装置としての機能を持つインタフェース１１６を備える。
【００３７】
それぞれのディスクドライブ１１７，１１８は、一定のサイズをデータの管理単位であるブロックとして、ブロック単位でアクセス可能である。つまり、データの読み出しや書き込み、さらに他のデータに関するアクセス時には、ブロック単位で指定をする必要がある。
【００３８】
ストレージ装置１１１で動作するソフトウェアとして、メモリ１１３上には、Ｉ／Ｏコマンド制御プログラム１１５がある。Ｉ／Ｏコマンド制御プログラム１１５は、インタフェース１１４を通じてサーバ装置１０１から要求されたＩ／Ｏコマンドを実行する。例えば、インタフェース１１４がＳＣＳＩインタフェースである場合には、ＳＣＳＩコマンドをＩ／Ｏコマンドとして受け取り、ストレージ装置１１１がＣＰＵ１１２によってＩ／Ｏコマンド制御プログラム１１５を実行し、サーバ装置１０１の要求であるＩ／Ｏコマンドを処理する。
【００３９】
データを保存する媒体であるディスクドライブ１１７とディスクドライブ１１８は、それぞれ単体のディスクドライブ装置や、ディスクドライブ装置を複数のパーティションと呼ばれる領域に分割したものである。あるいは、複数のディスクドライブ装置を統合して管理するＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）を用いる方法もある。また、複数のディスクドライブ装置を論理的にディスクドライブとして用いる方法もある。
【００４０】
サーバ装置１０１は、ストレージ装置１１１内のディスクドライブ１１７を、ファイルシステムを作成してサーバ装置１０１で提供するサービスに使用するボリューム（運用ボリューム）として用いる。また、ディスクドライブ１１８はスナップショットを維持するためにスナップショットと運用ボリュームの差分であるデータを保存するボリューム（差分ボリューム）として使用する。そして、スナップショットは、ボリュームとして物理的なディスクドライブを用いるのではなく、運用ボリュームと差分ボリュームにあるデータを、サーバ装置１０１のスナップショット管理プログラム１０６によって組み合わせて形成する仮想ボリュームである。以下では、スナップショットへの書き込みはできず、読み出し専用ボリュームとして説明する。ただし、スナップショット管理プログラム１０６を変更することで、スナップショットへの書き込みを可能にすることもできる。
【００４１】
次に、サーバ装置１０１で動作するスナップショット管理プログラム１０６について、図２と図３および図４を用いて説明する。
【００４２】
図２は、スナップショット管理プログラム１０６の構成の一例を示す説明図である。スナップショット管理プログラム１０６は、サーバ装置１０１で動作するソフトウェアから、スナップショットおよび運用ボリュームへのアクセスを制御する。スナップショット管理プログラム１０６を構成するソフトウェアモジュールおよびデータを図２を用いて説明する。スナップショット管理プログラム１０６は、運用ボリュームやスナップショットのデータへのアクセスを制御する読み出し処理サブプログラム２０１や書き込み処理サブプログラム２０２および、スナップショットを用いた処理を行うためのスナップショット作成サブプログラム２０３およびスナップショット削除サブプログラム２０４、および、スナップショットを維持するのに必要なブロックコピー管理テーブル２１１および使用ブロック管理テーブル２１２からなる。
【００４３】
読み出し処理サブプログラム２０１は、運用ボリュームとスナップショットからのデータ読み出しを実行する。スナップショットからのデータ読み出しを実行する場合、運用ボリュームと差分ボリュームのいずれかからのデータを読み出して、スナップショット作成時のボリュームイメージを構成する必要がある。そのため、データの配置を記憶しておくテーブルが必要になる。このテーブルの構成については、図３と図４を用いて後に説明する。
【００４４】
書き込み処理サブプログラム２０２は、運用ボリュームへのデータ書き込みを実行する。運用ボリュームへの書き込みを実行する場合、スナップショットを構成するため、運用ボリューム上にあるデータを差分ボリュームに退避する処理を考慮する必要がある。また、本実施の形態では、スナップショットは保護されるべきデータであるとして、書き込みは行わないものとしている。スナップショットへの書き込みを許す場合、書き込み処理サブプログラム２０２を変更し、差分ボリューム上のブロックにデータを書き込むようにする必要がある。
【００４５】
スナップショット作成サブプログラム２０３は、スナップショットを作成するときに実行するプログラムである。スナップショットを構成して維持するために必要なテーブルの内容を初期化する処理を行う。
【００４６】
スナップショット削除サブプログラム２０４は、スナップショットを削除するときに実行するプログラムである。スナップショット作成サブプログラム２０３を実行後、スナップショットを構成して維持する上で使用していたテーブルの内容を破棄する処理を行う。
【００４７】
ブロックコピー管理テーブル２１１は、運用ボリュームと差分ボリュームのデータから、仮想ボリュームであるスナップショットを構成するための情報を保存するテーブルである。使用ブロック管理テーブル２１２は、スナップショットを維持するために差分ボリュームで使用しているブロックを管理するためのテーブルである。
【００４８】
図３は、ブロックコピー管理テーブル２１１の一例を示す説明図である。本実施の形態では、運用ボリュームがｍ個のブロックからなるものとし、ブロックアドレスが０である３２１行からｍ−１である３２４行までのｍ行を持つテーブルとなっている。このテーブルでは、スナップショットのブロックアドレス３１１とそのデータの配置を保存している。スナップショットのブロックアドレス３１１とそのデータの配置を知るためには、ブロックコピー管理テーブル２１１のコピー先アドレス３１２を参照すればよい。
【００４９】
例えば、スナップショットのブロックアドレス０のデータを読み込む場合、スナップショット管理プログラム１０６から、このテーブルを参照する。このとき、ブロックアドレス３１１の列と、スナップショットのブロックアドレス０に相当するのは、ブロックコピー管理テーブル２１１の３２１で示した行である。つまり、３２１行のコピー先アドレス３１２を参照すると、差分ボリュームアドレス１００にデータが存在することが分かる。一方、ブロックコピーを実施していない場合は、スナップショットのブロックアドレス１を参照した場合になる。ブロックコピー管理テーブル２１１の３２２行は、スナップショットのブロックアドレス１を表しているが、そのコピー先アドレス３１２を参照するとその値が「なし」であることが分かる。つまり、スナップショットのためにデータをコピーしていないので運用ボリュームのブロックアドレス１からデータを読み出せば良いことが分かる。３２３行、３２４行も同様である。
【００５０】
図４は、使用ブロック管理テーブル２１２の一例を示す説明図である。本実施の形態では、差分ボリュームがｎ個のブロックからなるものとし、ブロックアドレスが０である４２１行からｎ−１である４２３行までのｎ行を持つテーブルとなっている。このテーブルでは、差分ボリュームのブロック使用状態を保存している。スナップショットのために差分データを管理するのが差分ボリュームであるが、運用ボリュームの異なるブロックのデータを、差分ボリュームの同一ブロックに保存しないように、一貫して管理するために必要になるのが、使用ブロック管理テーブル２１２である。
【００５１】
差分ボリュームのブロックアドレス４１１を使用中であるかを、状態フラグ４１２で表している。例えば、差分ボリュームのブロックアドレス０は、使用ブロック管理テーブル２１２でブロックアドレス４１１が０である４２１行を参照することで表現されている。４２１行の状態フラグ４１２を見ると、使用中となっているため、スナップショットのブロックアドレス０は、すでにスナップショットのためにデータを退避するブロックとして使用していることが分かる。一方、４２２行にあるブロックアドレスｐは状態フラグ４１２を参照すると未使用であることが分かるので、スナップショット維持のために運用ボリュームからデータをコピーする先として使用することができることが分かる。４２３行も同様である。
【００５２】
図５〜図８は、スナップショット管理プログラム１０６の各サブプログラムがどのように動作するかを詳細化したものである。以降、それぞれについて説明する。
【００５３】
図５は、読み出し処理サブプログラム２０１の動作の一例を示すフロー図である。このサブプログラムは、ファイルシステム処理プログラム１０５から運用ボリュームやスナップショットの読み出しを行う場合に実行する。
【００５４】
読み出し処理サブプログラム２０１では、まず、読み出す対象のボリュームがスナップショットからの読み出しかを判定する（Ｓ５０１）。スナップショットからの読み出しでない場合（ＮＯ）は、運用ボリュームの指定されたブロックからデータ読み出しを行う（Ｓ５０３）。スナップショットからの読み出しの場合（ＹＥＳ）は、ブロックコピー管理テーブル２１１を参照して、読み出すブロックのコピー先アドレスの値は「なし」かを判定する（Ｓ５０２）。「なし」である場合（ＹＥＳ）、差分ボリュームにデータはコピーされていないため、運用ボリュームの指定されたブロックからデータを読み出して（Ｓ５０３）、処理を終了する。コピー先アドレスの値が「なし」でなく、数値だった場合（ＮＯ）は、スナップショットのデータは差分ボリュームにコピーされたものであるので、差分ボリュームのコピー先アドレスで指定されたブロックからデータを読み出して（Ｓ５１１）、処理を終了する。
【００５５】
図６は、書き込み処理サブプログラム２０２の動作の一例を示すフロー図である。このサブプログラムは、ファイルシステム処理プログラム１０５から運用ボリュームへのデータ書き込みを行う場合に実行する。
【００５６】
書き込み処理サブプログラム２０２は、まず、ブロックコピー管理テーブル２１１の書き込みを指定されたブロックの行を参照して、書き込むブロックのコピー先アドレスは「なし」であるかを判定する（Ｓ６０１）。もし「なし」でなければ（ＮＯ）、運用ボリュームへの書き込みを実行して（Ｓ６１１）、処理を終了する。もし「なし」であれば（ＹＥＳ）、運用ボリュームから差分ボリュームにデータをコピーしてから書き込みを行う必要がある。そこでまず、使用ブロック管理テーブル２１２を参照し、差分ボリュームの状態フラグが「未使用」のブロックを選択する（Ｓ６０２）。そして、運用ボリュームの書き込みを行うブロックから差分ボリュームの未使用ブロックへのデータコピーと、運用ボリュームへの書き込みを同時に行うように、コピーと書き込みを実行する（Ｓ６０３）。そして、差分ボリュームの使用状態に合わせるため、コピーを実行したブロックについて、使用ブロック管理テーブルの状態フラグを「使用中」に変更する（Ｓ６０４）。さらに、スナップショットのデータ整合性を保つため、ブロックコピー管理テーブルのコピー先アドレスを差分ボリュームのブロック番号に変更することで（Ｓ６０５）、処理を終了する。
【００５７】
図７は、スナップショット作成サブプログラム２０３の動作の一例を示すフロー図である。このサブプログラムは、スナップショットの運用を開始する際に実行する。そして、スナップショットを維持する上で必要なブロックコピー管理テーブル２１１と使用ブロック管理テーブル２１２とを初期化する処理を行う。まず、ブロックコピー管理テーブル２１１のコピー先アドレスを「なし」に設定する（Ｓ７０１）。そして、使用ブロック管理テーブル２１２の状態フラグを「未使用」に設定する（Ｓ７０２）。このとき、ブロックコピー管理テーブル２１１については、０からｍ−１行目までの全ての行を、また使用ブロック管理テーブル２１２については、０からｎ−１行目までの全ての行について設定を行う。
【００５８】
図８は、スナップショット削除サブプログラム２０４の動作の一例を示すフロー図である。このサブプログラムは、スナップショットの運用を終了する際に実行する。そして、ブロックコピー管理テーブル２１１と使用ブロック管理テーブル２１２の内容を破棄する処理を行う。まず、ブロックコピー管理テーブル２１１のコピー状態を「未」に設定する（Ｓ８０１）。そして、使用ブロック管理テーブル２１２の状態フラグを「未使用」に設定する（Ｓ８０２）。このとき、ブロックコピー管理テーブル２１１については、０からｍ−１行目までの全ての行を、また使用ブロック管理テーブル２１２については、０からｎ−１行目までの全ての行について設定を行う。
【００５９】
このように、サーバ装置１０１で動作するソフトウェアによってスナップショットを維持する。このソフトウェアの処理においてデータの読み出しや書き込み、そしてコピーと書き出しを実行する際に、ストレージ装置１１１にＩ／Ｏコマンドを発行する。これにより、サーバ装置１０１がディスクドライブ１１７とディスクドライブ１１８にあるデータにアクセスする。
【００６０】
次に、図９〜図１３を用いて、ストレージ装置１１１で動作するＩ／Ｏコマンド制御プログラム１１５について説明する。サーバ装置１０１からのデータ読み出しにはＲｅａｄコマンド、データ書き出しにはＷｒｉｔｅコマンド、コピーと書き出し実行にはＣｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドを使用するものとする。また、ストレージ装置１１１で実行可能なコマンドには、他にもデバイスの接続状態を取得するコマンドやディスクドライブの容量情報を取得するコマンドなどもあるが、スナップショット維持に使用しないものの説明は省略している。
【００６１】
図９は、Ｉ／Ｏコマンド制御プログラム１１５の構成の一例を示す説明図である。Ｉ／Ｏコマンド制御プログラム１１５は、コマンド別のサブプログラムとコマンドの種別を判定するサブプログラムとで構成される。コマンド解析処理サブプログラム９０１は、サーバ装置１０１から発行されたコマンドを受け取り、その内容に応じてコマンド別の処理サブプログラムを呼び出す処理を行う。Ｒｅａｄ処理サブプログラム９０２は、Ｒｅａｄコマンドの処理を行い、ディスクドライブからサーバ装置１０１へのデータ転送を行う。また、Ｗｒｉｔｅ処理サブプログラム９０３は、Ｗｒｉｔｅコマンドの処理を行い、サーバ装置１０１からディスクドライブ上へのデータ転送を実行する。Ｃｏｐｙ処理サブプログラム９０４は、ディスクドライブのあるブロックに格納されたデータを別のブロックに複製する処理を行う。複製先のブロックは、複製元のブロックがあるディスクドライブでも、それとは別のディスクドライブでもよい。
【００６２】
図１０〜図１３は、Ｉ／Ｏコマンド制御プログラム１１５を構成するサブプログラムの詳細な動作を示したものである。順に説明する。
【００６３】
図１０は、コマンド解析処理サブプログラム９０１の動作の一例を示すフロー図である。サーバ装置１０１からインタフェース１０４とインタフェース１１４を通じて受け取ったＩ／Ｏコマンドは、まずコマンド解析処理サブプログラム９０１に渡る。そして、コマンドの種別を判定し、コマンドに対応するサブプログラムを呼び出す。
【００６４】
まず、コマンドはＲｅａｄかを判定し（Ｓ１００１）、そうであれば（ＹＥＳ）、Ｒｅａｄ処理サブプログラムを実行する（Ｓ１０１１）。そうでなければ（ＮＯ）、コマンドはＷｒｉｔｅかを判定し（Ｓ１００２）、Ｗｒｉｔｅであれば（ＹＥＳ）、Ｗｒｉｔｅ処理サブプログラムを実行する（Ｓ１０１２）。Ｗｒｉｔｅでない場合（ＮＯ）には、コマンドはＣｏｐｙ  ａｎｄ  Ｗｒｉｔｅかを判定し（Ｓ１００３）、そうであれば（ＹＥＳ）、まずＣｏｐｙ処理サブプログラムを実行して（Ｓ１００４）、Ｗｒｉｔｅ処理サブプログラムを実行する（Ｓ１００５）。
【００６５】
このように、コマンド解析処理サブプログラム９０１が各コマンドに応じたサブプログラムを実行してＩ／Ｏコマンドが処理される。また、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドを処理する際には、まずＣｏｐｙコマンドを実行してからＷｒｉｔｅコマンドを実行する順序を守ることによって、スナップショットの整合性が維持可能となる。
【００６６】
図１１は、Ｒｅａｄ処理サブプログラム９０２の動作の一例を示すフロー図である。コマンド解析処理サブプログラム９０１から呼び出されると、コマンドの内容で指定されたディスクドライブから指定されたデータを読み出す（Ｓ１１０１）。コマンドでは、ディスクドライブを識別する情報、ディスクドライブ上のブロックアドレス、読み出すデータ量、データを転送する先であるサーバ装置１０１のメモリ１０３のアドレスを指定する必要がある。
【００６７】
図１２は、Ｗｒｉｔｅ処理サブプログラム９０３の動作の一例を示すフロー図である。コマンド解析処理サブプログラム９０１から呼び出されると、コマンドの内容で指定されたディスクドライブに指定されたデータを書き込む（Ｓ１２０１）。そのため、コマンドにはディスクドライブを識別する情報、ディスクドライブ上のブロックアドレス、書き込むデータ量、書き込むデータを指定するためにサーバ装置１０１のメモリ１０３のアドレスを指定する必要がある。
【００６８】
図１３は、Ｃｏｐｙ処理サブプログラム９０４の動作の一例を示すフロー図である。コマンドの内容から、コピー元で指定されたディスクドライブからメモリにデータを読み出す（Ｓ１３０１）。そして、メモリに読み出したデータをコピー先のディスクドライブに書き込むことで（Ｓ１３０２）、データをコピーする。そのため、コマンドにはコピー元とコピー先それぞれについて、ディスクドライブを識別する情報、ディスクドライブ上のブロックアドレスを指定する必要がある。さらに、コピーするデータ量を指定する必要がある。また、データをコピーするために、メモリ上にデータを一時保存する方法を記述しているが、ディスクドライブ同士の連携でデータコピーを実行することが可能であれば、その機能を使用する方法もある。
【００６９】
図１４は、サーバ装置１０１からストレージ装置１１１にＣｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドを発行する際の、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドのフォーマットの一例を示す説明図である。コマンドで指示すべき情報は、コマンドを区別するための情報であるＣｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンド１４０１の識別子が必要である。また、データのコピーを実行するために、コピー元ディスクドライブ１４０２を表す識別子と、データの配置を表すコピー元ブロックアドレス１４０３と、コピーするデータ量を表すためにコピーするブロック数１４０４を含める。また、コピー先を指定する情報として、コピー先ディスクドライブ１４０５と、コピー先ブロックアドレス１４０６を指定する。また、書き込み処理を行うための情報として、書き込み先ディスクドライブ１４０７と、書き込み先ブロックアドレス１４０８と、書き込みするブロック数１４０９、そして書き込むデータはサーバ装置１０１で保持しているため、書き込みデータ保持メモリアドレス１４１０を指定する。これらのデータを指定してコマンドを発行することで、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドが実行される。
【００７０】
図１４の例では、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドで、コピーするデータ量と書き込みデータ量をそれぞれ指定しているが、同一のデータ量でのみ実行することにすれば、どちらか一方を指定するだけでよい。さらに、ブロック単位でのみコピーと書き込みを許す場合には、データ量を指定しないコマンドフォーマットを用いる方法もある。
【００７１】
また、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドにおいて、複数のデータコピーを同時に１個のコマンドに指定するフォーマットや、複数の書き込みを同時に１個のコマンドに指定するフォーマット、さらにこれらを組み合わせたフォーマットにも容易に拡張可能である。この場合、サーバ装置１０１とストレージ装置１１１の間のデータ転送を削減する効果は、より大きくなる。
【００７２】
また、図１４の例では、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドを１個の連続したコマンドとしているが、複数の領域を用いてコマンドとする方法もある。例えば、ＳＣＳＩインタフェースを使用する場合には、コマンドとそれに伴うパラメータリストとして必要な情報を指定する方法がある。
【００７３】
このように、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドを使用して、サーバ装置からストレージ装置に指示するインタフェースを利用してスナップショットを維持することができる。また、サーバ装置とストレージ装置間のデータ転送が削減可能なため、運用ボリュームへのデータアクセス性能の低下を抑えることができる。また、ストレージ装置でなく、サーバ装置から差分データの管理を行うインタフェースを設けている。
【００７４】
（実施の形態２）
本実施の形態は、サーバ装置が、ストレージ装置内のディスクドライブのブロック配置を入れ換えるコマンド（ここでは、Ｓｗａｐコマンドと称する）を発行し、そのコマンドをストレージ装置が実行することで、スナップショットを維持する例である。
【００７５】
本実施の形態では、ストレージ装置内のディスクドライブのブロックは、ストレージ装置内で論理的に構成されていることを前提とする。すなわち、物理的なディスクドライブ上のデータ配置に関わらず、サーバ装置からは論理的に１台のディスクドライブとしてアクセス可能とする。
【００７６】
本実施の形態におけるストレージシステムは、前記実施の形態１と同様の構成となっている。ただし、図２のスナップショット管理プログラム１０６の書き込み処理サブプログラム２０２の処理フローが異なる。また、Ｉ／Ｏコマンド制御プログラム１１５の構成が異なる。以下、これら実施の形態１と異なる処理について説明する。
【００７７】
図１５は、スナップショット管理プログラム１０６の書き込み処理サブプログラム２０２の動作の一例を示すフロー図である。本実施の形態では、データのコピーをストレージ装置１１１内で実行するのではなく、運用ボリュームのブロックと差分ボリュームの未使用ブロックとの入れ換えを実行する（Ｓ１５０３）、点が異なる。また、前記実施の形態１においては、コピーと書き込みを同時に実行することでサーバ装置１０１の負荷を低減していたが、本実施の形態ではブロックの入れ換えと書き込みは別のコマンドとして実行している。それ以外の処理（Ｓ１５０１，Ｓ１５０２，Ｓ１５０４〜Ｓ１５０６）は、実施の形態１と同一である。
【００７８】
また、前記実施の形態１でコピーと書き込みを同時に実行したように、ブロックの入れ換えとデータの書き込みを同時に実行するコマンドとして実施することも可能である。いずれの方法を選んだとしても、運用ボリュームのデータを差分ボリュームにコピーするのと同様の効果をブロックを入れ換えることで実現できる。そのため、前記実施の形態１と同様に、ブロックコピー管理テーブル２１１と使用ブロック管理テーブル２１２を使ってスナップショットを構成することが可能である。
【００７９】
図１６〜図１９は、ストレージ装置１１１で動作するＩ／Ｏコマンド制御プログラム１１５の構成と処理および処理に必要なデータを説明した図である。これらを用いてストレージ装置１１１の動作を説明する。
【００８０】
図１６は、Ｉ／Ｏコマンド制御プログラム１１５の構成の一例を示す説明図である。前記実施の形態１と異なる点は、Ｃｏｐｙ処理サブプログラムではなく、Ｓｗａｐ処理プログラム１６０４とブロックマッピングテーブル１６０５を持つ点である。Ｓｗａｐ処理サブプログラム１６０４は、サーバ装置１０１から要求されるＳｗａｐコマンドを処理する。ブロックマッピングテーブル１６０５は、サーバ装置１０１から参照されるディスクドライブは論理ディスクドライブとして管理し、物理ディスクドライブのデータとの対応関係を保持するためのテーブルである。それ以外の構成（１６０１〜１６０３）は、実施の形態１と同一である。
【００８１】
図１７は、ブロックマッピングテーブル１６０５の一例を示す説明図である。図１７に示したのは運用ボリュームについてのブロックマッピングテーブル１６０５であるが、差分ボリュームについても同様のテーブルを用意する必要がある。ブロックマッピングテーブル１６０５は、論理ブロックアドレス１７０１を表す列と、その論理ブロックアドレスのデータが存在する物理ディスク番号１７０２を表す列、およびその物理ディスク上でのデータの位置を表す物理ブロックアドレス１７０３を表す列から構成される。
【００８２】
ブロックマッピングテーブル１６０５は、まず物理ディスクドライブのデータ配置をそのまま表す状態で初期化する。図１７の例では、ブロック数がｍ個の論理ディスクドライブを、物理ディスク番号０のディスクドライブのブロックアドレス０からブロックアドレスｍ−１までの領域を用いて初期化した状態である。ただし、論理ブロックアドレスｑのデータは、Ｓｗａｐコマンドの実行により物理ディスク番号１のディスクドライブのブロックアドレス１００のデータと入れ換えが行われた状態となっている。このとき、差分ボリュームのブロックマッピングテーブルでは、論理ブロックアドレス１００のデータは、物理ディスク番号０のブロックアドレスｑのデータを表す状態である。このように、論理ディスクドライブと物理ディスクドライブのデータの対応関係を管理し、サーバ装置１０１のスナップショット管理プログラムの動作を補助する。
【００８３】
図１８は、コマンド解析処理サブプログラム１６０１の動作の一例を示すフロー図である。前記実施の形態１の動作と異なる点は、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドの実行処理を省き、Ｓｗａｐコマンドの処理を行うために、コマンドはＳｗａｐかを判定し（Ｓ１８０３）、そうであれば（ＹＥＳ）、Ｓｗａｐ処理サブプログラムを実行する（Ｓ１８０４）、制御が含まれる点である。それ以外の処理（Ｓ１８０１，Ｓ１８０２，Ｓ１８１１，Ｓ１８１２）は、実施の形態１のコマンド解析処理サブプログラムと同様である。
【００８４】
Ｒｅａｄ処理サブプログラム１６０２とＷｒｉｔｅ処理サブプログラム１６０３は、前記実施の形態１の処理と同様である。ただし、論理ディスクドライブを構成するブロックマッピングテーブル１６０５を使用しているため、要求されたディスクドライブとブロックアドレスを物理ディスク番号と物理ブロックアドレスに変換してから処理を行う必要がある。
【００８５】
図１９は、Ｓｗａｐ処理サブプログラム１６０４の動作の一例を示すフロー図である。Ｓｗａｐ処理サブプログラムは、ブロックマッピングテーブルの値を操作することで、論理ディスクドライブのデータ配置を変換する処理を行う。コマンドの処理は、指定されたディスクドライブのブロックマッピングテーブルの値を入れ換えることで（Ｓ１９０１）、終了する。そのためコマンドには、入れ換える対象となるディスクドライブとそのブロックアドレスを２組指定する。また、連続した複数のブロックを入れ換えるために、入れ換えるブロック数を指定することもできる。
【００８６】
図２０は、Ｓｗａｐコマンドのフォーマットの一例を示す説明図である。コマンドには、他のコマンドと区別するためにＳｗａｐコマンド２００１を表す識別子と、入れ換えの対象である入れ換えディスクドライブ１（２００２）と、入れ換えブロックアドレス１（２００３）と、入れ換えるブロック数（２００４）を指定する。さらにもう一方の、入れ換え対象である入れ換えディスクドライブ２（２００５）と、入れ換えブロックアドレス２（２００６）を指定する。入れ換えディスクドライブは、本実施の形態では論理ディスクドライブを区別するための識別子を表す。また、入れ換えブロックアドレスは論理ディスクドライブのブロックアドレスを表す。そして、コマンド実行時にはストレージ装置１１１で保持する、ディスクマッピングテーブルの値を入れ換えることで、マッピングを変更することができる。
【００８７】
また、データ入れ換えを行うコマンドフォーマットにおいては、一組のデータ入れ換えを指定するだけでなく、複数のデータ入れ換えを同時に記述するフォーマットも可能である。さらに、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドと同様に、データの書き込みを同一コマンドフォーマットで記述するように拡張することもできる。これらの場合、Ｓｗａｐコマンドを使用するよりも、サーバ装置１０１とストレージ装置１１１の間のデータ転送が削減できるので、本発明の効果はより大きくなる。
【００８８】
このように、Ｓｗａｐコマンドを処理するストレージ装置と、サーバ装置１０１上のスナップショット管理プログラムがＳｗａｐコマンドを実行してスナップショットを維持する処理を行うことで、スナップショットを維持することができる。また、サーバ装置１０１とストレージ装置１１１との間のデータ転送を削減することで、運用ボリュームへのデータアクセス性能の低下を抑えることが可能である。
【００８９】
Ｓｗａｐコマンドを用いる場合、論理ディスクドライブのデータ配置が複数の物理ディスクドライブに分散するため、データアクセス性能が低下するおそれがある。例えば、論理ディスクドライブの各ディスクブロックが１ブロックアドレスずつ、２個の物理ディスクドライブに交互に配置されていたとする。この場合、連続したデータの読み出しをサーバ装置から行うと、１ブロックアドレスずつ異なる物理ディスクドライブからデータを転送する必要がある。これは、ディスクドライブのデータシークなどに時間がかかることなどから、読み出し性能が低下する。同様に、書き込みを行う場合にも書き込み性能が低下する。
【００９０】
この性能低下を、できる限り少なくするため、Ｓｗａｐしたディスクブロックを定期的に同一物理ディスクドライブの元のブロックアドレスに書き戻す方法がある。つまり、ブロックマッピングデータを入れ換えるだけでなく、データも入れ換える処理を行う。これにより、データの並びが整えられて性能低下が抑えられる。
【００９１】
図２１は、性能低下を抑えるためのマッピングテーブルを整列するマッピング整列プログラムの動作の一例を示すフロー図である。このプログラムをストレージ装置１１１上で実行することで、データの配置を上で述べた望ましい状態に変更することができる。このプログラムは、サーバ装置１０１からストレージ装置１１１に開始を指示する方法や、ストレージ装置１１１内で定期的に実行する方法、ストレージ装置１１１の処理負荷が低いときに実行する方法などを用いて開始することができる。
【００９２】
マッピング整列プログラムは、整列を行う対象である論理ボリュームのマッピングテーブルを参照して、マッピングテーブルの初期化時の物理ブロックアドレスと異なる論理ブロックアドレスを選択する（Ｓ２１０１）。これは、マッピングテーブルに付随する情報として、初期化時の物理ディスク番号を保存しておいて、それと比較することで実行できる。次に、Ｓ２１０１で選択した論理ブロックアドレスが初期化時に保持していたはずの、初期化時の物理ブロックアドレスを持つ論理ブロックアドレスを選択する（Ｓ２１０２）。これは、ストレージ装置１１１内で保持しているブロックマッピングテーブルを順に検索することで実行できる。そして、Ｓ２１０１とＳ２１０２で選択した２個のブロックのデータを入れ換える（Ｓ２１０３）。これにより、Ｓ２１０１で選択した論理ディスクドライブのブロック１個分のデータを整列して配置したことになる。データの入れ換えは、各ブロックにあるデータを一時的にメモリに読み出して、書き込み先をそれぞれもう一方のブロックにすることで実行できる。最後に、ブロックマッピングテーブルの値を入れ換えることで（Ｓ２１０４）、論理ディスクドライブのデータ整列が終了する。
【００９３】
このマッピング整列プログラムを、運用ボリュームの論理ディスクドライブに対して繰り返し実行することで、物理ディスクドライブのデータ配置を整列することができる。
【００９４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００９５】
本発明による、Ｃｏｐｙ  ａｎｄ  ＷｒｉｔｅコマンドとＳｗａｐコマンドは、ファイルシステムやボリュームのデータが連続しないで分散してしまうフラグメント状態を解消する処理であるデフラグメント処理に用いることができる。また、Ｓｗａｐコマンドはボリューム上でデータの配置入れ換えが高速に実行できるため、広く利用可能である。Ｓｗａｐコマンドにより、ストレージ装置のディスクドライブに格納された情報と外部に接続されたストレージ装置の情報と入れ換えることができるため、参照されることが少なくなったデータを外部に退避し、参照が頻繁に行われる情報を高速なストレージ装置に集めるなど、情報の適正な配置とデータアクセス性能の適正化を可能にする場合に利用可能である。
【図面の簡単な説明】
【００９６】
【図１】本発明の実施の形態１におけるストレージシステムのシステム構成の一例を示す構成図である。
【図２】本発明の実施の形態１において、スナップショット管理プログラムの構成の一例を示す説明図である。
【図３】本発明の実施の形態１において、ブロックコピー管理テーブルの一例を示す説明図である。
【図４】本発明の実施の形態１において、使用ブロック管理テーブルの一例を示す説明図である。
【図５】本発明の実施の形態１において、読み出し処理サブプログラムの動作の一例を示すフロー図である。
【図６】本発明の実施の形態１において、書き込み処理サブプログラムの動作の一例を示すフロー図である。
【図７】本発明の実施の形態１において、スナップショット作成サブプログラムの動作の一例を示すフロー図である。
【図８】本発明の実施の形態１において、スナップショット削除サブプログラムの動作の一例を示すフロー図である。
【図９】本発明の実施の形態１において、Ｉ／Ｏコマンド制御プログラムの構成の一例を示す説明図である。
【図１０】本発明の実施の形態１において、コマンド解析処理サブプログラムの動作の一例を示すフロー図である。
【図１１】本発明の実施の形態１において、Ｒｅａｄ処理サブプログラムの動作の一例を示すフロー図である。
【図１２】本発明の実施の形態１において、Ｗｒｉｔｅ処理サブプログラムの動作の一例を示すフロー図である。
【図１３】本発明の実施の形態１において、Ｃｏｐｙ処理サブプログラムの動作の一例を示すフロー図である。
【図１４】本発明の実施の形態１において、Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンドのフォーマットの一例を示す説明図である。
【図１５】本発明の実施の形態２において、書き込み処理サブプログラムの動作の一例を示すフロー図である。
【図１６】本発明の実施の形態２において、Ｉ／Ｏコマンド制御プログラムの構成の一例を示す説明図である。
【図１７】本発明の実施の形態２において、ブロックマッピングテーブルの一例を示す説明図である。
【図１８】本発明の実施の形態２において、コマンド解析処理サブプログラムの動作の一例を示すフロー図である。
【図１９】本発明の実施の形態２において、Ｓｗａｐ処理サブプログラムの動作の一例を示すフロー図である。
【図２０】本発明の実施の形態２において、Ｓｗａｐコマンドのフォーマットの一例を示す説明図である。
【図２１】本発明の実施の形態２において、マッピング整列プログラムの動作の一例を示すフロー図である。
【符号の説明】
【００９７】
１０１…サーバ装置、１０２…ＣＰＵ、１０３…メモリ、１０４…インタフェース、１０５…ファイルシステム処理プログラム、１０６…スナップショット管理プログラム、１１１…ストレージ装置、１１２…ＣＰＵ、１１３…メモリ、１１４…インタフェース、１１５…Ｉ／Ｏコマンド制御プログラム、１１６…インタフェース、１１７，１１８…ディスクドライブ、２０１…読み出し処理サブプログラム、２０２…書き込み処理サブプログラム、２０３…スナップショット作成サブプログラム、２０４…スナップショット削除サブプログラム、２１１…ブロックコピー管理テーブル、２１２…使用ブロック管理テーブル、３１１…ブロックアドレス、３１２…コピー先アドレス、４１１…ブロックアドレス、４１２…状態フラグ、９０１，１６０１…コマンド解析処理サブプログラム、９０２，１６０２…Ｒｅａｄ処理サブプログラム、９０３，１６０３…Ｗｒｉｔｅ処理サブプログラム、９０４…Ｃｏｐｙ処理サブプログラム、１４０１…Ｃｏｐｙ  ａｎｄ  Ｗｒｉｔｅコマンド、１４０２…コピー元ディスクドライブ、１４０３…コピー元ブロックアドレス、１４０４…コピーするブロック数、１４０５…コピー先ディスクドライブ、１４０６…コピー先ブロックアドレス、１４０７…書き込み先ディスクドライブ、１４０８…書き込み先ブロックアドレス、１４０９…書き込みするブロック数、１４１０…書き込みデータ保持メモリアドレス、１６０４…Ｓｗａｐ処理サブプログラム、１６０５…ブロックマッピングテーブル、１７０１…論理ブロックアドレス、１７０２…物理ディスク番号、１７０３…物理ブロックアドレス、２００１…Ｓｗａｐコマンド、２００２…入れ換えディスクドライブ１、２００３…入れ換えブロックアドレス１、２００４…入れ換えるブロック数、２００５…入れ換えディスクドライブ２、２００６…入れ換えブロックアドレス２。
【図１】
2006113927.tif 000003
【図２】
2006113927.tif 000004
【図３】
2006113927.tif 000005
【図４】
2006113927.tif 000006
【図５】
2006113927.tif 000007
【図６】
2006113927.tif 000008
【図７】
2006113927.tif 000009
【図８】
2006113927.tif 000010
【図９】
2006113927.tif 000011
【図１０】
2006113927.tif 000012
【図１１】
2006113927.tif 000013
【図１２】
2006113927.tif 000014
【図１３】
2006113927.tif 000015
【図１４】
2006113927.tif 000016
【図１５】
2006113927.tif 000017
【図１６】
2006113927.tif 000018
【図１７】
2006113927.tif 000019
【図１８】
2006113927.tif 000020
【図１９】
2006113927.tif 000021
【図２０】
2006113927.tif 000022
【図２１】
2006113927.tif 000023