(57)【特許請求の範囲】
【請求項１】
上位装置からの要求を処理するプロセッサと、
前記プロセッサに接続され、情報を格納するメモリと、
前記上位装置からアクセスの対象となる第１の論理ユニットと、
前記第１の論理ユニットのデータが格納される第２の論理ユニットと、
データが一時的に格納される第３の論理ユニットと、
を有し、
前記メモリは、前記第１の論理ユニットに書き込まれたデータの更新された位置が格納される第１の更新位置管理表と、
前記第２の論理ユニットから前記第３の論理ユニットに書き込まれたデータの更新された位置が格納される第２の更新位置管理表と、
前記上位装置からスナップショットを取得する要求から次のスナップショットを取得する要求までの間に、前記第１の論理ユニットに書き込まれたデータの更新された位置が格納される第３の更新位置管理表と、を備え、
前記プロセッサは、前記上位装置から送信された書き込みデータを前記第１の論理ユニットに書き込むとともに、前記書き込みデータを前記第２の論理ユニットに書き込み、
前記上位装置からスナップショットを取得する第１の要求を受領した際、前記プロセッサは、前記第１の論理ユニットに更新された位置を前記第１の更新位置管理表と前記第３の更新位置管理表に記録するとともに、前記第２の論理ユニットにデータを書き込むことを停止し、
前記プロセッサは、前記第２の論理ユニットのデータを前記第３の論理ユニットに書き込むとともに、前記第２の更新位置管理表に前記書き込んだ位置を記録し、
前記第３の論理ユニットにデータの書き込みが終了した後、前記プロセッサは、前記第１の更新位置管理表に基づいて、前記第１の論理ユニットから前記第２の論理ユニットに対して、更新されたデータを書き込み、
さらに、前記上位装置からスナップショットを取得する第２の要求を受領した場合に前記第２の論理ユニットから前記第３の論理ユニットにデータを書き込む際、前記プロセッサは、前記第２の更新管理表を利用してデータを書き込むか、または、前記第３の更新管理表に基づいてデータを書き込むか、を選択する記憶システム。
【請求項２】
請求項１記載の記憶システムにおいて、
前記上位装置が前記第１の要求に対するスナップショットのデータを読み込む場合、前記プロセッサは、前記第２の更新位置管理表又は前記第３の更新位置管理表により、前記第２の論理ユニット又は前記第３の論理ユニットから前記スナップショットのデータを読み出す記憶システム。
【請求項３】
請求項１記載の記憶システムにおいて、
前記プロセッサと前記第１乃至３の論理ユニットと、に接続され、前記プロセッサの指示によって、前記第１乃至３の論理ユニットにアクセスするディスクコントローラを有する記憶システム。
【請求項４】
請求項３記載の記憶システムにおいて、
前記コンピュータからの要求に応じて、前記プロセッサが前記ディスクコントローラに前記第１乃至３の論理ユニットにアクセスする指示するディスクアクセスプログラムと、
前記プロセッサが前記第１の論理ユニットに更新されたデータを前記第２の論理ユニットに書き込むＬＵミラーサブプログラムと、
前記プロセッサが前記第２の論理ユニットから前記第３の論理ユニットにデータを書き込むスナップショット管理プログラムと、
前記プロセッサが前記第１の論理ユニットから前記第２の論理ユニットに更新されたデータを書き込むことを停止している際、前記第１の論理ユニットに対する更新を検出する非ミラー時更新監視プログラムと、
前記第１の論理ユニットに対する更新された位置を前記メモリに格納する非ミラー時更新位置管理プログラムと、
前記プロセッサが前記第１の論理ユニットから前記第２の論理ユニットに対して、再度、同期化を行うミラー再同期プログラムと、
を前記メモリに有する記憶システム。
【請求項５】
請求項１記載の記憶システムにおいて、
前記メモリは、前記第１の論理ユニットに対する前記第３の更新管理表を複数有し、
前記上位装置からスナップショットを取得する第３の要求を受領した場合、
前記プロセッサは、前記第３の更新管理表を確定した後、前記第３の要求からの更新の位置を記録する新たな第３の更新管理表を作成する記憶システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は主として、コンピュータの外部記憶装置システムにおけるスナップショット管理方法に関するものである。
【０００２】
【従来の技術】
一般にハードディスクなどのコンピュータの外部記憶装置に記録されたデータは、装置の障害、ソフトウェアの欠陥、誤操作などによりデータを喪失した場合に、喪失したデータを回復できるように定期的にテープなどにコピーして保存しておくこと（バックアップ）が必要である。その際、コピー作業中にデータが更新され、データに不整合が生じるとバックアップとして意味をなさないため、コピー作業中はデータの整合性を保証する必要がある。
【０００３】
バックアップされるデータの整合性を保証するためには、データにアクセスするバックアッププログラム以外のプログラムを停止すればよいが、高可用性が要求されるシステムではプログラムを長時間停止させることができない。そのため、バックアップ中にプログラムがデータを更新することを妨げず、なおかつバックアップ開始時点でのデータの記憶イメージを作成する仕組みを提供する必要がある。ここで、ある時点でのデータの記憶イメージをスナップショットと呼び、指定された時点のスナップショットを作成しつつデータの更新が可能な状態を提供する仕組みをスナップショット管理方法と呼ぶ。また、スナップショット管理方法によりスナップショットを作成することをスナップショットの取得と呼び、スナップショット取得の対象となったデータをオリジナルデータと呼ぶ。また、スナップショットを作成した状態をやめることをスナップショットの削除と呼ぶ。
【０００４】
従来のスナップショット管理方法の一つとして、データの二重化による方法が挙げられる。
【０００５】
この方法では、スナップショットを取得していない通常の状態において、コンピュータ上のプログラムがすべてのデータを２つの記憶領域に二重化（ミラー）する。スナップショットを取得する時は二重化を停止して２つの記憶領域を独立な領域に分離し、１つの領域をオリジナルデータ、もう１つの領域をスナップショットとして提供する。
【０００６】
スナップショットを取得し二重化を停止している間は、オリジナルデータの記憶領域に対するデータの更新を許可するとともに、データ更新が発生した場合は更新した位置を記録しておく。スナップショット削除時には、データの二重化を再開するとともに、２つの記憶領域の間で内容が一致していない更新データを更新位置の記録をもとにオリジナルデータの記憶領域からスナップショットとして提供していた記憶領域にコピーする（ミラー再同期化）。
【０００７】
コンピュータ上のプログラムでデータを二重化する方法は、例えば米国特許５，０５１，８８７に示されている。
【０００８】
【発明が解決しようとする課題】
データの二重化によるスナップショット管理方法では、ミラー再同期化時において、更新／参照をする通常アクセスと更新データのコピーアクセスがオリジナルデータの記憶領域に集中し、通常アクセスの性能が低下する。ミラー再同期化にかかる時間は、スナップショットを取得して二重化を停止している間に更新されたデータ量に比例するので、更新アクセスが単位時間あたり同じ回数発生すると仮定した場合、ミラー再同期化にかかる時間は二重化の停止時間に比例して大きくなる。スナップショットからバックアップをとる場合、コンピュータが介在して比較的低速なテープなどにコピーを行うため、スナップショットを取得して二重化を停止している時間が長く、通常アクセスの性能が低下するミラー再同期化時間が長くなるという課題がある。
【０００９】
また、スナップショットの利用後にスナップショット削除を指示する必要があるため、バックアップの終了を契機としてスナップショット削除プログラムを起動するようなタイミングを管理するプログラムが必要となり、バックアッププログラムが複雑化する。複雑化に対応してプログラムの開発期間が長くなるため価格も上昇し、構成するシステムが高価になるという課題がある。
【００１０】
本発明の第１の目的は、スナップショットを取得して二重化を停止している時間を短縮することで、ミラー再同期化中の更新データのコピー量を削減し、性能が低下するミラー再同期化時間を短縮したスナップショット管理方法を提供することである。
【００１１】
本発明の第２の目的は、スナップショット利用後のスナップショット削除指示を省略することでバックアッププログラムを簡略化し、安価なシステムでスナップショット管理方法を提供することである。
【００１２】
【課題を解決するための手段】
前記第１の目的を達成するために本発明は、データの二重化によるスナップショット管理方法において、一時的なテンポラリ領域としてディスクアレイ内にテンポラリＬＵを設ける。テンポラリＬＵは高速なディスクであり、スナップショットを取得して二重化を停止している時間を短縮することができる。
【００１３】
また、前記第２の目的を達成するために本発明は、データの二重化によるスナップショット管理方法において、一時的なテンポラリ領域としてディスクアレイ内にテンポラリＬＵを設ける。テンポラリＬＵにスナップショットを保存することにより、スナップショット削除処理を不要とする。
【００１４】
【発明の実施の形態】
〔第１の実施形態〕
本発明の第１の実施形態は、データの二重化によるスナップショット管理方法において、二重化を停止している時間を短縮することにより、ミラー再同期化をする際のオリジナルデータのコピー量を削減し、データベースプログラムからのデータアクセス性能が低下するミラー再同期化時間を短縮するためのものである。
【００１５】
また、スナップショット利用後のスナップショット削除指示を省略することでバックアッププログラムを簡略化するためのものである。
【００１６】
なお、本発明ではスナップショットの利用例として、バックアップをとりあげるが、ＯＬＡＰ（ＯｎＬｉｎｅ  Ａｎａｌｙｔｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ）やシステムテスト等の他の目的においても利用が可能である。
【００１７】
（１）構成の説明
本発明の第１の実施形態のシステム構成を図１を用いて説明する。図１において、コンピュータ１００とディスクアレイ２００が、ＳＣＳＩインタフェース１４０、２４０を介してＳＣＳＩバス３００で接続されている。コンピュータ１００のメモリ１２０には、データベースプログラム１２６、バックアッププログラム１２７があり、コンピュータ１００を制御するＣＰＵ１１０によって実行される。ディスクアレイ２００には、ディスクコントローラ２５０によって制御されるディスク２５１〜２５３があり、またメモリ２２０内にはスナップショット管理プログラム２２１があり、ＣＰＵ２１０によって実行される。なお、ディスク２５１〜２５３は仮想的なディスクであってもよく、おのおのが２つ以上のディスクから構成されたアレイであってもよい。
【００１８】
各ディスク２５１〜２５３内の記憶領域は、ＳＣＳＩの論理ユニットであるＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）としてコンピュータからアクセスされる。各ディスク２５１〜２５３に対応する各記憶領域をそれぞれＬＵ２６１〜２６３とする。本実施形態では、ディスクアレイ２２０内のスナップショット管理プログラム２２１が、ＬＵ２６１とＬＵ２６２を二重化して管理し、ＬＵ２６１をオリジナルデータを持ったミラー元ＬＵとし、ＬＵ２６２をオリジナルデータのミラーであるミラー先ＬＵとする。また、ＬＵ２６３は、スナップショットを取得する際に一時的なコピー先となるテンポラリＬＵとし、コピー元はＬＵ２６２である。
【００１９】
次に、コンピュータ１００内のプログラムについて説明する。
【００２０】
データベースプログラム１２６は、実行中にミラー元ＬＵであるＬＵ２６１にアクセスし、また、データ更新を制御してＬＵ２６１内のデータの整合性を保証するバックアップモードに切替える機能を持つ。バックアップモードへはユーザまたはバックアッププログラム１２７からの指示により遷移する。バックアッププログラム１２７は、ユーザからの指示によってスナップショットを保存したテンポラリＬＵであるＬＵ２６３からテープ等にバックアップするためのデータを読み出す機能と、ディスクアレイ２００にＳＣＳＩのＭｏｄｅＳｅｌｅｃｔコマンドを発行する機能と、データベースプログラム１２６にバックアップモードの有効化、無効化を指示する機能を持つ。
【００２１】
次に、ディスクアレイ２００内のプログラム、および、管理表について説明する。
【００２２】
ディスクアレイ２００のスナップショット管理プログラム２２１は、コンピュータ１００からの要求に応じてディスクコントローラ２５０にディスクアクセスを指示するディスクアクセスサブプログラム２３０と、１つのＬＵに対する更新を二重化してあらかじめ指定された別のＬＵにも適用し、２つのＬＵに同じ内容を書き込むＬＵミラーサブプログラム２３１を持つ。例えば本実施形態では、ＬＵ２６１に対するアクセスをＬＵ２６２に二重化する。また、スナップショット管理プログラム２２１は、スナップショットを取得する際にミラー先ＬＵからテンポラリＬＵにオリジナルデータを一時的にコピー（テンポラリコピー）し、コピーが完了した位置を後述するコピー位置管理表２２３に記録するするテンポラリコピーサブプログラム２３３と、二重化を停止しているとき（非ミラー時）にミラー元ＬＵに対する更新を検出する非ミラー時更新監視サブプログラム２３４と、その更新位置を後述する非ミラー時更新位置管理表２２２に記録する非ミラー時更新位置管理サブプログラム２３５と、ミラー再同期化を行う際にミラー元ＬＵの更新部分をミラー先ＬＵにコピーするミラー再同期サブプログラム２３２を持つ。
【００２３】
非ミラー時更新位置管理表２２２は、非ミラー時に更新されたミラー元ＬＵの更新位置を記録するもので、ミラー元ＬＵにつき一つ設置する。非ミラー時更新位置管理表２２２は、図２に示すようなビットマップとし、ミラー元ＬＵ内のすべてのＬＢＡセット番号、更新状態から成る。ＬＢＡセットは、ＬＵの全領域に対して、１個以上の同数のＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）を単位として先頭から分割していったときの個々の集合であり、ＬＢＡセット番号は、ＬＢＡの先頭側から各ＬＢＡセットに通し番号をつけたものである。更新状態は、ＬＢＡセットが更新されたかどうかを示し、「更新」、「非更新」に応じてそれぞれ１、０を指定する。更新状態の初期設定値は０である。図２の例では、ＬＢＡセット番号１の領域のみが非ミラー時に更新されている状態を示す。
【００２４】
コピー位置管理表２２３は、テンポラリコピー時にミラー先ＬＵからテンポラリＬＵへのコピーが済んだ更新位置を記録するもので、ミラー先ＬＵにつき一つ設置する。コピー位置管理表２２３は、図３に示すようなビットマップとし、ミラー先ＬＵ内のすべてのＬＢＡセット番号、コピー状態から成る。ＬＢＡセット番号の定義は、非ミラー時更新位置管理表２２２と同様である。コピー状態は、ＬＢＡセットがコピーされたかどうかを示し、「コピー未完」、「コピー完」に応じてそれぞれ１、０を指定する。コピー状態の初期設定値は１である。図３の例では、ＬＢＡセット番号０、１の領域がコピー完であることを示す。なお、非ミラー時更新位置管理表２２２の更新状態と、コピー位置管理表２２３のコピー状態の指定値は、比較しているＬＵ間でデータが一致している場合を０、一致していない場合を１と言い換えることもできる。
【００２５】
（２）スナップショットの取得
ミラー元ＬＵであるＬＵ２６１のスナップショットをテンポラリＬＵであるＬＵ２６３として提供する場合を例にとり、スナップショット取得時におけるバックアッププログラム１２７とスナップショット管理プログラム２２１の動作を図４のフローチャートを用いて説明する。
【００２６】
まず、コンピュータ１００のバックアッププログラム１２７がデータベースプログラム１２６に指示を与え、バックアップモードを有効化してスナップショットを取得するデータの整合性を保証する（ステップ２０００）。次に、バックアッププログラム１２７は、ディスクアレイ２００にスナップショットを取得するためのＭｏｄｅＳｅｌｅｃｔコマンドを発行する（ステップ２００１）。ディスクアレイ２００のスナップショット管理プログラム２２１は、ＭｏｄｅＳｅｌｅｃｔコマンドを受信すると（ステップ３０００）、非ミラー時更新監視サブプログラム２３４と非ミラー時更新位置管理サブプログラム２３５を有効化し、ＬＵ２６１の更新位置記録を開始する（ステップ３００１）。以降、ＬＵ２６１が更新されると、非ミラー時更新位置管理表２２２における更新されたＬＢＡを含むＬＢＡセットの更新状態に１を設定し、更新があったことを記録する。次に、スナップショット管理プログラム２２１は、ＬＵミラーサブプログラム２３１を無効化し、ＬＵ２６１とＬＵ２６２の二重化を停止する（ステップ３００２）。これにより、ミラー元ＬＵであるＬＵ２６１に対する更新がミラー先ＬＵであるＬＵ２６２に反映されなくなる。次に、スナップショット管理プログラム２２１は、ＭｏｄｅＳｅｌｅｃｔコマンドの終了ステータスをコンピュータ１００のバックアッププログラム１２７に送信する（ステップ３００３）。バックアッププログラム１２７は、ＭｏｄｅＳｅｌｅｃｔコマンドの終了ステータスを受信すると（ステップ２００２）、データベースプログラム１２６に指示を与え、バックアップモードを無効化する（ステップ２００３）。
【００２７】
次に、バックアッププログラム１２７は、ディスクアレイ２００に対し、ＬＵ２６３にスナップショットを保存するためのテンポラリコピー開始を指示するＭｏｄｅＳｅｌｅｃｔコマンドを発行する（ステップ２００４）。ディスクアレイ２００のスナップショット管理プログラム２２１は、ＭｏｄｅＳｅｌｅｃｔコマンドを受信すると（ステップ３００４）、テンポラリコピーサブプログラム２３３を有効化し、ミラー先ＬＵであるＬＵ２６２からテンポラリＬＵであるＬＵ２６３にデータのコピーを行うとともに、コピーが完了したＬＢＡセットについて、コピー位置管理表２２３におけるコピー状態を０に設定し、コピーが済んだことを記録する（ステップ３００５）。データのコピーは、ＬＵ２６２を含むディスク２５２にＲＥＡＤコマンドを発行して指定したＬＢＡのデータを読み出し、ＬＵ２６３を含むディスク２５３にＷＲＩＴＥコマンドを発行してＬＵ２６２に指定したＬＢＡと同じＬＢＡに読み出したデータを書きこむことで実施する。これをＬＵ２６２とＬＵ２６３の全領域に対して行う。データのコピーは、ＣＯＰＹコマンドを用いてもよい。データコピーが完了すると、スナップショット管理プログラム２２１は、ＬＵミラーサブプログラム２３１を有効化し、ＬＵ２６１とＬＵ２６２の二重化を再開する（ステップ３００６）。これにより、ＬＵ２６１に対する更新がＬＵ２６２にも反映される。次に、スナップショット管理プログラム２２１は、非ミラー時更新監視サブプログラム２３４と非ミラー時更新位置管理サブプログラム２３５を無効化し、ＬＵ２６１の更新位置記録を停止する（ステップ３００７）。以降、非ミラー時更新位置管理表２２２は変更されなくなる。次に、スナップショット管理プログラム２２１は、ミラー再同期サブプログラムを有効化し、非ミラー時更新位置管理表２２２を参照して、ＬＵ２６１とＬＵ２６２で内容が一致しない部分をＬＵ２６１からＬＵ２６２にコピーする（ステップ３００８）。次に、スナップショット管理プログラム２２１は、ＭｏｄｅＳｅｌｅｃｔコマンドの終了ステータスをコンピュータ１００のバックアッププログラム１２７に送信する（ステップ３００９）。バックアッププログラム１２７は、ＭｏｄｅＳｅｌｅｃｔコマンドの終了ステータスを受信し動作を終了する（ステップ２００５）。
【００２８】
ここで、ステップ３００８でＬＵ２６１からＬＵ２６２へのデータコピーを行うミラー再同期サブプログラム２３２の動作を図５のフローチャートを用いて説明する。まず、ミラー再同期サブプログラム２３２が、非ミラー時更新位置管理表２２２に更新記録として１があるかどうかを調べる（ステップ１００１）。もし、更新記録である１がなければミラー再同期化が完了したので処理を終了する（ステップ１００２）。更新記録があれば、該当記録位置の更新を抑止し（ステップ１００３）、該当記録位置のデータをミラー元ＬＵであるＬＵ２６１からミラー先ＬＵであるＬＵ２６２にコピーする（ステップ１００４）。データのコピーは、ＬＵ２６１を含むディスク２５１にＲＥＡＤコマンドを発行して指定したＬＢＡのデータを読み出し、ＬＵ２６２を含むディスク２５２にＷＲＩＴＥコマンドを発行してＬＵ２６１に指定したＬＢＡと同じＬＢＡに読み出したデータを書きこむことで実施する。データのコピーは、ＣＯＰＹコマンドを用いてもよい。次に、ミラー再同期サブプログラム２３２は、該当記録位置の更新抑止を解除し（ステップ１００５）、非ミラー時更新位置管理表２２２の該当する更新記録に０を設定して更新記録を削除し（ステップ１００６）、ステップ１００１に戻る。
【００２９】
以上が、スナップショット取得時におけるバックアッププログラム１２７とスナップショット管理プログラム２２１の動作である。
【００３０】
（３）データ読み出しと書きこみ、および、スナップショット読み出しの際のコンピュータ動作
まず、コンピュータ１００が、ディスクアレイ２００にあるＬＵ２６１のデータにアクセスする場合のデータベースプログラム１２６の動作を説明する。データベースプログラム１２６は、スナップショット取得の有無に関係なく、同じ動作を行う。
【００３１】
データベースプログラム１２６がＬＵ２６１のデータを読み出す場合、データベースプログラム１２６はディスクアレイ２００に対し、ＬＵ２６１のデータを読み出すＲＥＡＤコマンドを発行する。最後に、データベースプログラム１２６は、ディスクアレイ２００からデータとステータスを受信し動作を終了する。また、データベースプログラム１２６がＬＵ２６１にデータを書きこむ場合、データベースプログラム１２６はディスクアレイ２００に対し、ＬＵ２６１にデータを書きこむＷＲＩＴＥコマンドを発行し、データを送信する。最後に、データベースプログラム１２６は、ディスクアレイ２００からステータスを受信し動作を終了する。
【００３２】
次に、コンピュータ１００が、ディスクアレイ２００にあるＬＵ２６１のスナップショットを読み出す場合のバックアッププログラム１２７の動作を説明する。
【００３３】
バックアッププログラム１２７がＬＵ２６１のスナップショットを読み出す場合、バックアッププログラム１２７はディスクアレイ２００に対し、ＬＵ２６１のテンポラリＬＵであるＬＵ２６３のデータを読み出すＲＥＡＤコマンドを発行する。最後に、バックアッププログラム１２７は、ディスクアレイ２００からデータとステータスを受信し動作を終了する。なお、スナップショットのデータをディスクアレイ２００が送信できない場合、ディスクアレイ２００からエラーステータスのみを受信する。
【００３４】
（４）データ読み出しと書きこみ、および、スナップショット読み出しの際のディスクアレイ動作
まず、コンピュータ１００が、ディスクアレイ２００にあるＬＵ２６１のデータにアクセスする場合のスナップショット管理プログラム２２１の動作を説明する。
【００３５】
コンピュータ１００がＬＵ２６１のデータを読み出す場合、スナップショット管理プログラム２２１がＬＵ２６１に対するＲＥＡＤコマンドを受信する。次に、ＬＵミラーサブプログラム２３１が有効で、かつ、ミラー再同期サブプログラム２３２による更新部分のコピーが終了していれば、ＬＵ２６１、もしくは、ミラー先ＬＵであるＬＵ２６２からデータを読み出す。そうでなければ、ＬＵ２６１からデータを読み出す。最後に、読み出し
たデータとステータスをコンピュータ１００に送信する。ＬＵ２６１とミラー先ＬＵであるＬＵ２６２の内容が一致している場合は、両者のいずれかからデータを読み出すことにより負荷を分散させることができる。
【００３６】
コンピュータ１００がＬＵ２６１にデータを書きこみ記憶内容を更新する場合、スナップショット管理プログラム２２１がＬＵ２６１に対するＷＲＩＴＥコマンドとデータを受信する。次に、ＬＵミラーサブプログラム２３１が有効であればＬＵ２６１とミラー先ＬＵであるＬＵ２６２にデータを書きこみ、無効であればＬＵ２６１にデータを書きこむ。次に、非ミラー時更新監視サブプログラム２３４と非ミラー時更新位置管理サブプログラム２３５が有効であれば、ＬＵ２６１の非ミラー時更新位置管理表２２２に対して更新したＬＢＡを含むＬＢＡセットの更新状態を１に設定し、無効であれば何もしない。最後に、ステータスをコンピュータ１００に送信する。
【００３７】
次に、コンピュータ１００が、ディスクアレイ２００にあるＬＵ２６１のスナップショットを読み出す場合のスナップショット管理プログラム２２１の動作を説明する。
【００３８】
コンピュータ１００がＬＵ２６１のスナップショットを読み出す場合、スナップショット管理プログラム２２１がＬＵ２６１のテンポラリＬＵであるＬＵ２６３に対するＲＥＡＤコマンドを受信する。次に、スナップショット管理プログラム２２１はコピー位置管理表２２３を参照し、ＲＥＡＤコマンドで指定されたＬＢＡを含むＬＢＡセットのコピー状態を調べる。コピー状態が０、すなわち、テンポラリＬＵであるＬＵ２６３にＬＵ２６１のスナップショットが保存されている場合は、ＬＵ２６３からデータを読み出す。コピー状態が１、すなわち、テンポラリＬＵであるＬＵ２６３にＬＵ２６１のスナップショットが保存されていない場合は、ミラー先ＬＵであるＬＵ２６２からデータを読み出す。最後に、読み出したデータとステータスをコンピュータ１００に送信する。スナップショットのデータを送信できない場合、ディスクアレイ２００にエラーステータスのみを送信する。
【００３９】
なお、ミラー再同期サブプログラム２３２による更新部分のコピー中は、コピー処理とコンピュータ１００によるＬＵ２６１へのデータアクセス処理が同じＬＵ２６１に集中するため、データアクセス性能が低下する。
【００４０】
（５）効果
本実施形態によれば、スナップショット取得時に二重化を停止して片方の記憶領域をスナップショットとして提供するスナップショット管理方法において、スナップショットを保存するのための一時的なテンポラリ領域としてテンポラリＬＵであるＬＵ２６３を設けることにより、ミラー元ＬＵであるＬＵ２６１とミラー先ＬＵであるＬＵ２６２の二重化停止時間を短縮することができ、非ミラー時更新位置管理表２２２に記録される更新位置の量を削減することができる。したがって、ミラー再同期化をする際に、更新されたオリジナルデータをミラー元ＬＵからミラー先ＬＵにコピーする量を削減することができ、コンピュータ１００からのデータアクセス性能が低下するミラー再同期化時間を短縮できるという効果がある。
【００４１】
スナップショットのデータ量が同じ場合、二重化停止時間はミラー先ＬＵからスナップショットを送り、受け手側に取込むときの転送速度に反比例する。ミラー再同期化時間は、二重化停止中に更新されたデータ量に比例するので、更新アクセスが単位時間あたり同じ回数発生すると仮定した場合、ミラー再同期化時間は二重化停止時間に比例する。したがって、ミラー再同期化時間は、ミラー先ＬＵからスナップショットを送り、受け手側に取込むときの転送速度に反比例する。
【００４２】
たとえば、試算として、本実施形態におけるディスクコントローラ２５０の転送能力に十分に余裕があるとした場合、ＬＵ２６１〜２６３の読み出し・書き込み性能をともに８０メガバイト／秒とすると、８０メガバイト／秒でミラー先ＬＵからテンポラリＬＵにスナップショットをコピーすることができる。したがって、本実施形態では、ミラー先ＬＵからスナップショットを送り、受け手側に取込むときの転送速度は、８０メガバイト／秒となる。ここで、バイト／秒とは、１秒あたりに転送できるデータのバイト数である。
【００４３】
一方、従来の方法でバックアップをテープにとる場合、ミラー先ＬＵからスナップショットを読み出して、コンピュータに転送し、さらに、そこからテープに書き込む。全体の転送性能は、ミラー先ＬＵの読み出し性能、ディスクアレイからコンピュータへの転送性能、コンピュータ内部の転送性能、コンピュータからテープへの転送性能、テープの書き込み性能のうち一番低い値になる。ミラー先ＬＵの読み出し性能は同様に８０メガバイト／秒であるが、巻き取り性能の観点から見てもテープの書き込み性能は低く、たとえば４０メガバイト／秒の性能であるならば、全体の転送性能は４０メガバイト／秒となる。よって、従来の方法では、ミラー先ＬＵからスナップショットを送り、受け手側に取込むときの転送速度は、４０メガバイト／秒となる。また、他の部位の転送性能が低いことも考えられる。
【００４４】
したがって、ＬＵ２６１〜２６３の読み出し・書き込み性能をともに８０メガバイト／秒、テープの書き込み性能を４０メガバイト／秒とする試算では、本実施形態は従来の方法に対して、ミラー先ＬＵからスナップショットを送り、受け手側に取込むときの転送速度が２倍となる。ミラー再同期化時間は、ミラー先ＬＵからスナップショットを送り、受け手側に取込むときの転送速度に反比例することから、本実施形態は従来の方法に対してミラー再同期化時間を半分にすることができる。
【００４５】
また、本実施形態によれば、スナップショットを保存するのための一時的なテンポラリ領域としてテンポラリＬＵであるＬＵ２６３を設けることにより、スナップショットの利用後にスナップショット削除を指示する必要がないため、バックアップを実施するプログラムを簡素化できる。したがって、プログラムの開発期間を短縮できるので、安価なシステムを構成できるという効果がある。
【００４６】
なお、本発明ではコンピュータ１００とディスクアレイ２００を接続するインターフェースをＳＣＳＩバス３００としたが、ＦｉｂｒｅＣｈａｎｎｅｌ等の他のインターフェースであってもよい。
【００４７】
また、スナップショット取得時点のＬＵ２６１のオリジナルデータをリストアしたい場合は、テンポラリＬＵであるＬＵ２６３にスナップショットを保存しているので、ＬＵ２６３をミラー元ＬＵに切り替えればよい。
【００４８】
また、スナップショット取得時において、図４のステップ２００４のテンポラリコピー開始を指示するＭｏｄｅＳｅｌｅｃｔコマンド発行を省略することもできる。この場合、ステップ３００５からステップ３００８は、スナップショット管理プログラム２２１がステップ３００３の終了後に実施すればよい。ステップ３００５からステップ３００８の実行した結果のステータスがエラーとなった場合は、以降にコンピュータ１００から発行された任意のコマンドに対するステータスをＣｈｅｃｋＣｏｎｄｉｔｉｏｎとし、それを受けてコンピュータ１００が発行したＲｅｑｕｅｓｔＳｅｎｓｅコマンドに対して、エラーを伝えるセンスデータを送信すればよい。
【００４９】
〔第２の実施形態〕
本発明の第２の実施形態は、第１の実施形態と同様に、データの二重化によるスナップショット管理方法において、二重化を停止している時間を短縮することにより、ミラー再同期化をする際のオリジナルデータのコピー量を削減し、データベースプログラムからのデータアクセス性能が低下するミラー再同期化時間を短縮するためのものである。
【００５０】
また、第１の実施形態と同様に、スナップショット利用後のスナップショット削除指示を省略することでバックアッププログラムを簡略化するためのものである。
【００５１】
第１の実施形態との違いは、テンポラリＬＵにスナップショットを保存する際に、ミラー先ＬＵ全体のコピーではなく、前回のテンポラリＬＵに保存したスナップショットとの差分をテンポラリＬＵにコピーすることである。
【００５２】
なお、本発明ではスナップショットの利用例として、バックアップをとりあげるが、ＯＬＡＰ（ＯｎＬｉｎｅ  Ａｎａｌｙｔｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ）やシステムテスト等の他の目的においても利用が可能である。
【００５３】
（１）構成の説明
本発明の第２の実施形態のシステム構成を図６を用いて説明する。簡略化のため、第１の実施形態との違いについてのみ説明する。
【００５４】
図６において、ＬＵ２６３は、第１の実施形態と同様に一時的なスナップショットを保存するテンポラリＬＵであると同時に、前回のスナップショットが保存してあるテンポラリＬＵである。
【００５５】
ディスクアレイ２００のスナップショット管理プログラム２２１は、第１の実施形態に加え、スナップショット取得時点から次回のスナップショット取得時点まで、ミラー元ＬＵに対する更新を検出する常時更新監視サブプログラム２３７と、その更新位置を後述する常時更新位置管理表２２４に記録する常時更新位置管理サブプログラム２３８を持つ。
【００５６】
また、テンポラリコピーサブプログラム２３３は、スナップショットを取得する際にミラー先ＬＵからテンポラリＬＵにオリジナルデータを一時的にコピー（テンポラリコピー）するという第１の実施形態の機能に加え、スナップショットを取得する際にミラー先ＬＵから前回のスナップショットが保存してあるテンポラリＬＵに対して前回のスナップショットとの差分をコピーする機能を持つ。また、テンポラリコピーサブプログラム２３３は、コピーが完了した位置をスナップショット取得時点で確定した常時更新位置管理表２２４に記録する機能を持つ。テンポラリコピー時において、スナップショット取得時点で確定した常時更新位置管理表２２４は第１の実施形態のコピー位置管理表２２３に代わりをするものであり、コンピュータ１００がディスクアレイ２００にあるＬＵ２６１のスナップショットを読み出す場合、スナップショット管理プログラム２２１は第１の実施形態のコピー位置管理表２２３に代わりスナップショット取得時点で確定した常時更新位置管理表２２４を参照する。
【００５７】
また、常時更新位置管理表２２４は、スナップショット取得時点から次回のスナップショット取得時点までに更新されたミラー元ＬＵの更新位置を記録するものであり、更新状況の記録を停止し確定させた後も次回のスナップショット取得に備えて更新位置の監視を続けて行う必要があるため、常時更新位置管理表２２４は、ミラー元ＬＵにつき２つ以上設置する。常時更新位置管理表２２４は、図７に示すようなビットマップとし、ミラー元ＬＵ内のすべてのＬＢＡセット番号、更新状態から成る。ＬＢＡセット番号、更新状態の定義は、非ミラー時更新位置管理表２２２と同様である。更新状態の初期設定値は、１回目のスナップショット取得では１、２回目以降のスナップショットでは０である。図７の例では、ＬＢＡセット番号１の領域のみがスナップショット取得時点から次回のスナップショット取得時点までの間に更新されている状態を示す。なお、常時更新位置管理表２２４の更新状態の指定値は、ミラー元ＬＵであるＬＵ２６１と前回のスナップショットを保存してあるテンポラリＬＵのＬＵ２６３の間でデータが一致している場合を０、一致していない場合を１と言い換えることもできる。
【００５８】
（２）スナップショットの取得
第２の実施形態では、第１の実施形態と異なり、スナップショットの取得時において、前回スナップショットを保存したテンポラリＬＵに対してスナップショット取得以降の差分データをコピーすることで、新たなスナップショットをテンポラリＬＵに保存する。１回目のスナップショット取得では、前回のスナップショットを保存したテンポラリＬＵが存在しないため、第１の実施形態と同様の手順となる。ただし、次回のスナップショット保存の際に差分コピーを実施するため、スナップショット管理プログラム２２１は図４のステップ３００１の次のステップにおいて、常時更新位置管理表２２４を作成するための常時更新監視サブプログラム２３７および常時更新位置管理サブプログラム２３８を有効化する。以降、データベースプログラム１２６からのデータの書き込み要求があった場合は、常時更新位置管理表２２４における更新されたＬＢＡを含むＬＢＡセットの更新状態に１を設定し、更新があったことを記録する。
【００５９】
次に、２回目以降のスナップショット取得とテンポラリＬＵへのスナップショット保存手順について説明する。
【００６０】
２回目以降のスナップショット取得の際も、常時更新位置管理表２２４には、スナップショット取得から次のスナップショット取得までの間の更新状況を記録する。スナップショット管理プログラム２２１は図４のステップ３００１の次のステップにおいて、前回のスナップショットから今回のスナップショットまでの更新を記録した常時更新位置管理表２２４を確定させ、今回のスナップショットから次回のスナップショットまでの常時更新位置管理表２２４の記録を開始する。以降、スナップショット管理プログラム２２１は図４のステップ３００１の次のステップにおいて、常時更新位置管理表２２４を確定し、次の常時更新位置管理表２２４の記録を開始する。
【００６１】
また、テンポラリＬＵであるＬＵ２６３には前回のスナップショットが保存されたままとなっている。
【００６２】
テンポラリコピーの際は、スナップショット管理プログラム２２１が、テンポラリコピーサブプログラム２３３により、スナップショット取得時点で確定した常時更新位置管理表２２４を参照し、ミラー先ＬＵであるＬＵ２６２からテンポラリＬＵであるＬＵ２６３に前回のスナップショットとの差分コピーを行う。それ以外の動作は、第１の実施形態と同様である。
【００６３】
ここで、差分をコピーするテンポラリコピー時のテンポラリコピーサブプログラム動作を図８のフローチャートを用いて説明する。まず、スナップショット管理プログラム２２１は、常時更新位置管理表２２４に更新記録として更新状態に１があるかどうかを調べる（ステップ１２０１）。もし、更新記録である１がなければ処理完了として終了する（ステップ１２０２）。そうでなければ、該当記録位置のデータをミラー先ＬＵである２６２からテンポラリＬＵであるＬＵ２６３にコピーする（ステップ１２０３）。データのコピーは、ＬＵ２６２を含むディスク２５２にＲＥＡＤコマンドを発行して指定したＬＢＡのデータを読み出し、ＬＵ２６３を含むディスク２５３にＷＲＩＴＥコマンドを発行してＬＵ２６２に指定したＬＢＡと同じＬＢＡに読み出したデータを書きこむことで実施する。データのコピーは、ＣＯＰＹコマンドを用いてもよい。最後に、常時更新位置管理表２２４の該当する更新記録に０を設定して更新記録を削除し（ステップ１２０４）、ステップ１２０１に戻る。
【００６４】
（３）データ読み出しと書きこみ、および、スナップショット読み出しの際のコンピュータ動作
コンピュータ１００が、ディスクアレイ２００にあるＬＵ２６１のデータにアクセスする場合のデータベースプログラム１２６の動作、および、コンピュータ１００が、ディスクアレイ２００にあるＬＵ２６１のスナップショットを読み出す場合のバックアッププログラム１２７の動作は、第１の実施形態と同様である。
【００６５】
（４）データ読み出しと書きこみ、および、スナップショット読み出しの際のディスクアレイ動作
まず、コンピュータ１００が、ディスクアレイ２００にあるＬＵ２６１のデータにアクセスする場合のスナップショット管理プログラム２２１の動作を説明する。
【００６６】
コンピュータ１００がＬＵ２６１のデータを読み出す場合のスナップショット管理プログラム２２１の動作は、第１の実施形態と同様である。
【００６７】
コンピュータ１００がＬＵ２６１にデータを書きこみ記憶内容を更新する場合、スナップショット管理プログラム２２１がＬＵ２６１に対するＷＲＩＴＥコマンドとデータを受信する。次に、ＬＵミラーサブプログラム２３１が有効であればＬＵ２６１とミラー先ＬＵであるＬＵ２６２にデータを書きこみ、無効であればＬＵ２６１にデータを書きこむ。次に、更新記録をとっているミラー元ＬＵの常時更新位置管理表２２４に対して、更新したＬＢＡを含むＬＢＡセットの更新状態を１に設定する。次に、非ミラー時更新監視サブプログラム２３４と非ミラー時更新位置管理サブプログラム２３５が有効であれば、ＬＵ２６１の非ミラー時更新位置管理表２２２に対して更新したＬＢＡを含むＬＢＡセットの更新状態を１に設定し、無効であれば何もしない。最後に、ステータスをコンピュータ１００に送信する。
【００６８】
次に、コンピュータ１００が、ディスクアレイ２００にあるＬＵ２６１のスナップショットを読み出す場合のスナップショット管理プログラム２２１の動作を説明する。
【００６９】
コンピュータ１００がＬＵ２６１のスナップショットを読み出す場合、スナップショット管理プログラム２２１がＬＵ２６１のテンポラリＬＵであるＬＵ２６３に対するＲＥＡＤコマンドを受信する。次に、スナップショット管理プログラム２２１は、スナップショット取得時に確定し、かつ、テンポラリコピー時に第１の実施形態におけるコピー位置管理表２２３の代わりとして用いられる常時更新位置管理表２２４を参照し、ＲＥＡＤコマンドで指定されたＬＢＡを含むＬＢＡセットの更新状態を調べる。更新状態が０、すなわち、テンポラリＬＵであるＬＵ２６３にＬＵ２６１のスナップショットが保存されている場合は、ＬＵ２６３からデータを読み出す。コピー状態が１、すなわち、テンポラリＬＵであるＬＵ２６３にＬＵ２６１のスナップショットが保存されていない場合は、ミラー先ＬＵであるＬＵ２６２からデータを読み出す。最後に、読み出したデータとステータスをコンピュータ１００に送信する。スナップショットのデータを送信できない場合、ディスクアレイ２００にエラーステータスのみを送信する。
【００７０】
（５）効果
第２の実施形態では、第１の実施形態と同様に、スナップショットを保存するのための一時的なテンポラリ領域としてテンポラリＬＵであるＬＵ２６３を設けることにより、ミラー元ＬＵであるＬＵ２６１とミラー先ＬＵであるＬＵ２６２の二重化停止時間を短縮することができ、非ミラー時更新位置管理表２２２に記録される更新位置の量を削減することができる。さらに第２の実施形態では、テンポラリＬＵに前回のスナップショットを保存しておき、テンポラリコピー時に前回のスナップショットとの差分のみをコピーするので、さらにＬＵ２６１とＬＵ２６２の二重化停止時間を短縮することができる。したがって、ミラー再同期化をする際に、更新されたオリジナルデータをミラー元ＬＵからミラー先ＬＵにコピーする量を削減することができ、コンピュータ１００からのデータアクセス性能が低下するミラー再同期化時間を短縮できるという効果がある。
【００７１】
また、第２の実施形態では、第１の実施形態と同様に、スナップショットを保存するのための一時的なテンポラリ領域としてテンポラリＬＵであるＬＵ２６３を設けることにより、スナップショットの利用後にスナップショット削除を指示する必要がないため、バックアップを実施するプログラムを簡素化できる。したがって、プログラムの開発期間を短縮できるので、安価なシステムを構成できるという効果がある。
【００７２】
また、テンポラリコピー時のコピー方法として、第１の実施形態におけるＬＵ２６２全体をコピーする方法と、第２の実施形態のＬＵ２６２とＬＵ２６３の差分のみをコピーする方法とを選択できるコピー方法選択サブプログラムをスナップショット管理プログラム２２１に追加することも考えられる。これは、前回のスナップショットからの更新がＬＵ２６１内のほぼ全領域に実施されたときに、ＬＵ２６２全体をＬＢＡセットの先頭から連続的にコピーする方がコピー時間を短縮できる場合があることを想定してのものである。これにより、前回のスナップショットからの更新データの量に応じて、テンポラリコピーの方法をユーザが選択することができテンポラリコピーを効率よく行える。したがって、ＬＵ２６１とＬＵ２６２の二重化停止時間を短縮することができることから、ミラー再同期化をする際に、更新されたオリジナルデータをミラー元ＬＵからミラー先ＬＵにコピーする量を削減することができ、コンピュータ１００からのデータアクセス性能が低下するミラー再同期化時間を短縮できるという効果がある。
【００７３】
なお、本発明ではコンピュータ１００とディスクアレイ２００を接続するインターフェースをＳＣＳＩバス３００としたが、ＦｉｂｒｅＣｈａｎｎｅｌ等の他のインターフェースであってもよい。
【００７４】
また、スナップショット取得時点のＬＵ２６１のオリジナルデータをリストアしたい場合は、テンポラリＬＵであるＬＵ２６３にスナップショットを保存しているので、ＬＵ２６３をミラー元ＬＵに切り替えればよい。
【００７５】
また、スナップショット取得時において、図４のステップ２００４のテンポラリコピー開始を指示するＭｏｄｅＳｅｌｅｃｔコマンド発行を省略することもできる。この場合、ステップ３００５からステップ３００８は、スナップショット管理プログラム２２１がステップ３００３の終了後に実施すればよい。ステップ３００５からステップ３００８の実行した結果のステータスがエラーとなった場合は、以降にコンピュータ１００から発行された任意のコマンドに対するステータスをＣｈｅｃｋＣｏｎｄｉｔｉｏｎとし、それを受けてコンピュータ１００が発行したＲｅｑｕｅｓｔＳｅｎｓｅコマンドに対して、エラーを伝えるセンスデータを送信すればよい。
【００７６】
【発明の効果】
以上述べたように、本発明によれば、データを２つの記憶領域に二重化し、スナップショット取得時に二重化を停止して片方の記憶領域をスナップショットとして提供するスナップショット管理方法において、スナップショットを保存するのための一時的なテンポラリ領域として、ディスクアレイ内に高速なディスクからなるテンポラリＬＵを設けることにより、スナップショット取得のために二重化を停止している時間を短縮することができる。したがって、ミラー再同期化をする際に、更新されたオリジナルデータをミラー先ＬＵにコピーする量を削減することができ、データベースプログラムからのデータアクセス性能が低下するミラー再同期化時間を短縮できるという効果がある。
【００７７】
また、本実施形態によれば、スナップショットを保存するのための一時的なテンポラリ領域としてテンポラリＬＵを設けることにより、スナップショットの利用後にスナップショット削除を指示する必要がないため、バックアップを実施するプログラムを簡素化できる。したがって、プログラムの開発期間を短縮できるので、安価なシステムを構成できる
という効果がある。
【図面の簡単な説明】
【図１】第１の実施形態におけるシステム構成図である。
【図２】第１の実施形態における非ミラー時更新位置管理表の説明図である。
【図３】第１の実施形態におけるコピー位置管理表の説明図である。
【図４】第１の実施形態におけるスナップショット取得フローである。
【図５】第１の実施形態におけるミラー再同期サブプログラムの動作フローである。
【図６】第２の実施形態におけるシステム構成図である。
【図７】第２の実施形態における常時更新位置管理表の説明図である。
【図８】第２の実施形態におけるテンポラリコピーサブプログラムの動作フローである。
【符号の説明】
１００…コンピュータ、１２６…データベースプログラム、１２７…バックアッププログラム、２００…ディスクアレイ、２２１…スナップショット管理プログラム、２２２…非ミラー時更新位置管理表。
【図１】
0003882467.tif 000002
【図２】
0003882467.tif 000003
【図３】
0003882467.tif 000004
【図４】
0003882467.tif 000005
【図５】
0003882467.tif 000006
【図６】
0003882467.tif 000007
【図７】
0003882467.tif 000008
【図８】
0003882467.tif 000009