(57)【要約】【課題】スナップショット実行時、ソース側磁気ディスクの古いデータをスナップ側磁気ディスクへコピーするのは、上位装置から書き込み要求がきてからであるため、実際にソース側磁気ディスクに新しいデータを書くまでに時間がかかる。【解決手段】データ更新情報を分析して、分析結果からデータ書き込みが要求される可能性の高い領域を決定して、その領域のデータを予めスナップ側磁気ディスクにコピーしておくことにより、スナップショットの高速化を図る。【選択図】  図１
2005055972.tif 000002
【特許請求の範囲】
【請求項１】
上位装置がスイッチを介してソース側磁気ディスクとスナップ側磁気ディスクに接続されている計算機システムにおいて、次にデータが書き込まれる可能性が高い領域のデータを検出し、前記データを予めスナップ側磁気ディスクにコピーすることを特徴とするスナップショット高速化方法。
【請求項２】
上位装置がスイッチを介してソース側磁気ディスクとスナップ側磁気ディスクに接続されている計算機システムにおいて、予め定めた値よりも、書き込みの可能性が高い領域のデータを検出し、前記データをメモリにコピーすることを特徴とするスナップショット高速化方法。
【請求項３】
上位装置からソース側磁気ディスクへのデータ書き込み要求により、ある時刻のソース側磁気ディスクの内容を、前記時刻以降新しいデータによって変更された領域について、スナップ側磁気ディスクにコピーするスナップショット制御装置は、
上位装置からの要求に従ってデータの読み／書きを行う磁気ディスク読み／書き実行部、
ソース側磁気ディスクのデータを先書き／先読みする先書き／先読み実行部、
必要な情報をメモリから読み書きするメモリ制御部、及び
必要な情報を保存するメモリを有することを特徴とするスナップショット制御装置。
【請求項４】
前記メモリが、磁気ディスク情報テーブル、先書き情報テーブル、先読み情報テーブル、及びデータ更新情報テーブルを有することを特徴とする請求項３記載のスナップショット制御装置。
【請求項５】
前記磁気ディスク情報テーブルが、どの上位装置から読み／書きの要求があったのかを示す上位装置情報、スナップショットを行う磁気ディスクのペアを示す磁気ディスクペア情報、どの領域に何セクタ分のデータを読み／書きするのかを示す領域情報、及び、データの読み込みを行うのか、書き込みを行うのかを示す読み込み／書き込み情報を有することを特徴とする請求項４記載のスナップショット制御装置。
【請求項６】
前記先書き情報テーブルが、どの磁気ディスクのデータを先書きするのかを示すソース側磁気ディスク番号情報、及び、どの領域のデータを何セクタ分先書きするのかを示すデータ先書き領域情報を有することを特徴とする請求項４記載のスナップショット制御装置。
【請求項７】
前記先読み情報テーブルが、どの磁気ディスクのデータを先読みするのかを示すソース側磁気ディスク番号情報、どの領域のデータを何セクタ分先読みするのかを示すデータ先読み領域情報、及び、先読みしたデータを示す先読みデータを有することを特徴とする請求項４記載のスナップショット制御装置。
【請求項８】
前記データ更新情報テーブルが、どの上位装置から書き込み要求があったのかを示す上位装置番号情報、新しいデータを書き込んだ磁気ディスクを示すソース側磁気ディスク番号情報、及び、新しいデータを書き込んだ領域と何セクタ分のデータを書き込んだのかを示すデータ書き込み領域情報を有することを特徴とする請求項４記載のスナップショット制御方法。
【請求項９】
前記磁気ディスク読み／書き実行部が、スナップ側磁気ディスクにデータを先書きしてある領域の情報を取得する手段と、上位装置がデータ書き込みを要求している領域と、既に先書き、または先読みしてある領域が一致するかの先書き／先読み状況判定を行う手段とを有することを特徴とする請求項３記載のスナップショット制御装置。
【請求項１０】
前記先書き／先読み実行部が、前記先読み情報テーブルに先読みデータが保存されているかどうかを判定する手段と、先読みデータが先読み情報テーブルに保存されている場合には、先読みデータをスナップ側磁気ディスクにコピーする手段と、コピーしたデータの領域を先書き領域として、前記先書き情報テーブルに記録する手段とを有することを特徴とする請求項４記載のスナップショット制御装置。
【請求項１１】
前記先書き／先読み実行部が、前記データ更新情報テーブルから、ソース側磁気ディスクへのデータ書き込み履歴情報を取得する手段、取得した情報を分析して先書き領域、及び先書きするデータ容量を決定する手段、及び決定した先書き領域のデータをスナップ側磁気ディスクへデータを先書きする手段とを有することを特徴とする請求項４記載のスナップショット制御装置。
【請求項１２】
前記先書き／先読み実行部が、前記データ更新情報テーブルから、ソース側磁気ディスクへのデータ書き込み履歴情報を取得する手段、取得した情報を分析して先読み領域、及び先読みするデータ容量を決定する手段、及び決定した先読み領域のデータを前記先読み情報テーブルに保存する手段を有することを特徴とする請求項４記載のスナップショット制御装置。
【請求項１３】
ソース側磁気ディスクへのデータ書き込み要求により、ある時刻のソース側磁気ディスクの内容を、その時刻以降新しいデータによって変更された領域について、スナップ側磁気ディスクにコピーする上位装置は、
データの読み／書き要求に従ってデータの読み／書きを行う磁気ディスク読み／書き実行部、
ソース側磁気ディスクのデータを先書き／先読みする先書き／先読み実行部、
必要な情報をメモリから読み書きするメモリ制御部、及び
必要な情報を保存するメモリを有することを特徴とする上位装置。
【請求項１４】
上位装置からソース側磁気ディスクへのデータ書き込み要求により、ある時刻のソース側磁気ディスクの内容を、その時刻以降新しいデータによって変更された領域について、スナップ側磁気ディスクにコピーするスイッチは、
前記上位装置からの要求に従ってデータの読み／書きを行う磁気ディスク読み／書き実行部、
ソース側磁気ディスクのデータを先書き／先読みする先書き／先読み実行部、
必要な情報をメモリから読み書きするメモリ制御部、及び
必要な情報を保存するメモリを有することを特徴とするスイッチ。
【請求項１５】
上位装置からソース側磁気ディスクへのデータ書き込み要求により、ある時刻のソース側磁気ディスクの内容を、その時刻以降新しいデータによって変更された領域について、スナップ側磁気ディスクにコピーするストレージ装置は、
前記上位装置からの要求に従ってデータの読み／書きを行う磁気ディスク読み／書き実行部、
ソース側磁気ディスクのデータを先書き／先読みする先書き／先読み実行部、
必要な情報をメモリから読み書きするメモリ制御部、及び
必要な情報を保存するメモリを有することを特徴とするストレージ装置。
【請求項１６】
ソース側磁気ディスクの古いデータをスナップ側磁気ディスクにコピーする場合に、２種類のフラグを使い分けて、上位装置からのデータ書き込み要求によりコピーが実行された領域と先書きによりコピーが実行された領域とを区別する手段を有することを特徴とするスナップショット制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ある時刻のソース側磁気ディスクの内容を、その時刻以降新しいデータによって変更された領域について、スナップ側磁気ディスクにコピーするスナップショット機能の高速化の方法、及び、スナップショット高速化方法を実現する上位装置、スイッチ、ストレージ装置に関する。
【０００２】
【従来の技術】
スナップショットの従来技術では、上位装置からソース側磁気ディスクへ新しいデータの書き込み要求があると、その領域のデータがスナップ側磁気ディスクへコピーされる。スナップ側へデータコピーが終わった後、新しいデータがソース側磁気ディスクに書き込まれる。再び、上位装置からソース側磁気ディスクへの新しいデータの書き込み要求があると、同様に、その領域のデータがスナップ側磁気ディスクにコピーされ、その後、新しいデータがソース側磁気ディスクに書き込まれる（例えば、特許文献１参照）。
【０００３】
また、前述のようなスナップショットは、上位装置、ストレージ装置のいずれかで制御することができる。
【０００４】
スナップショットを管理する方法としては、スナップショットをとっていない時は、上位装置から外部記憶装置へのデータ書き込みを異なる複数の記憶媒体上の領域に二重化して記憶しておき、スナップショットを採る際、二重化された領域のうち１つの領域を通常のアクセス用の記憶領域として提供し、もう一つの領域をスナップショット用として提供する技術がある（例えば、特許文献２参照）。
【０００５】
【特許文献１】
米国特許第５６４９１５２号
【特許文献２】
特開２００１−３０６４０７号公報
【０００６】
【発明が解決しようとする課題】
前述の従来技術では、ソース側磁気ディスクの古いデータをスナップ側磁気ディスクへコピーするのは、上位装置からの書き込み要求が来てからであるため、実際にソース側磁気ディスクに新しいデータを書くまでに時間がかかっていた。
また、上記特許文献２は、上位装置でのスナップショット管理方法であり、スイッチ、ストレージ装置ではスナップショットを管理することができなかった。
【０００７】
本発明ではこのような問題を解決するため、スナップショットの高速化方法、またスナップショットを制御する上位装置、スイッチ、ストレージ装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
スナップショットを制御する上位装置やスイッチやストレージ装置に、スナップショット高速化のための先書き／先読み機能を付加する。具体的には、データ書き込み履歴を分析する手段、分析した結果から先書き／先読み領域を自動的に決定する手段、決定した先書き領域のデータを事前にスナップ側磁気ディスクにコピーする手段、及び決定した先読み領域のデータを事前にメモリに保存しておく手段を提供する。
【０００９】
【発明の実施の形態】
本発明の一実施例を、図１〜図１８を用いて説明する。
【００１０】
データが書き込まれる可能性が高い領域（以下、先書き領域と記述）のデータを予めスナップ側磁気ディスクにコピーしておく機能を以下、先書きと記述する。また、上記先書き領域に次いで、書き込みの可能性が高い領域（以下、先読み領域と記述）のデータをメモリにコピーしておく機能を以下、先読みと記述する。
【００１１】
この実施例では、スナップショットの制御はスイッチで行い、先書き／先読みは、ホストコンピュータなどの上位装置からの書き込み要求により、ソース側磁気ディスクに新しいデータが書き込まれた後に実行する場合を考える。
【００１２】
先ず、図１を用いて、本発明の構成を説明する。
【００１３】
上位装置１１０は、ソース側磁気ディスク１５０とスナップ側磁気ディスク１６０とスイッチ１２０で接続されている。上位装置１１０は、スイッチ１２０を介して、ソース側磁気ディスク１５０、スナップ側磁気ディスク１６０のデータにアクセスできる。スイッチ１２０は、本発明を実施するスナップショット制御装置であり、上位装置１１０からの要求により、ソース側磁気ディスク１５０のデータを読み出したり、データを書き込む領域の古いデータをスナップ側磁気ディスク１６０にコピーする。スイッチ１２０は、上位装置からの要求に従ってデータの読み／書きを行う磁気ディスク読み／書き実行部１２１、ソース側磁気ディスク１５０のデータを先書き／先読みする先書き／先読み実行部１２４、必要な情報をメモリから読み書きするメモリ制御部１２２、及び必要な情報を保存しておくメモリ１２３で構成されている。メモリ１２３は、磁気ディスク情報テーブル１２５、先書き情報テーブル１２６、先読み情報テーブル１２７、及びデータ更新情報テーブル１２８から構成されている。
【００１４】
図２は磁気ディスク情報テーブル１２５を示す。このテーブルは、どの上位装置から読み／書きの要求があったのかを示す上位装置情報２０１、スナップショットを行う磁気ディスクのペアを示す磁気ディスクペア情報２０２、どの領域に何セクタ分のデータを読み／書きするのかを示す領域情報２０３、及びデータの読み込みを行うのか、書き込みを行うのかを示す読み込み／書き込み情報２０４から成る。
【００１５】
図３は先書き情報テーブル１２６を示す。このテーブルは、どの磁気ディスクのデータを先書きするのかを示すソース側磁気ディスク番号３０１と、どの領域のデータを何セクタ分先書きするのかを示すデータ先書き領域情報３０２から成る。
【００１６】
図４は先読み情報テーブル１２７を示す。このテーブルは、どの磁気ディスクのデータを先読みするのかを示すソース側磁気ディスク番号４０１、どの領域のデータを何セクタ分先読みするのかを示すデータ先読み領域情報４０２、及び先読みしたデータを示す先読みデータ４０３から成る。
【００１７】
図５はデータ更新情報テーブル１２８を示す。このテーブルは、どの上位装置から書き込み要求があったのかを示す上位装置番号５０１、新しいデータを書き込んだ磁気ディスクを示すソース側磁気ディスク番号５０２、及び新しいデータを書き込んだ領域と何セクタ分のデータを書き込んだのかを示すデータ書き込み領域情報５０３から成る。このテーブルに記録されているデータ更新履歴を分析することにより、先書き／先読み領域を決定できる。
【００１８】
次に、図６を用いて、本発明のスナップショット高速化方法の概略手順を説明する。
【００１９】
上位装置１１０はスイッチ１２０を介してソース側磁気ディスク１５０とスナップ側磁気ディスク１６０と接続されている。スイッチ１２０は、上位装置１１０からソース側磁気ディスク１５０の領域Ａへのデータ書き込み要求（Ｓ６０１）があると、ソース側磁気ディスク１５０の古いデータをスナップ側磁気ディスク１６０にコピーして（Ｓ６０２）、新しいデータをソース側磁気ディスク１５０の領域Ａに書き込む（Ｓ６０３）。その後、スイッチ１２０は、スナップショット高速化のための処理を行う。スイッチ１２０は、今までにデータが書かれた領域についての分析を行い、先書き領域と先読み領域を決定する。この例では、先書き領域を、新しいデータを書き込んだ領域Ａに連続する領域Ｂと決定したとする。また、先読み領域を、先書き領域Ｂに連続する領域Ｃと決定したとする。スイッチ１２０は、決定した先書き領域Ｂのデータを、あらかじめスナップ側磁気ディスクにコピーする（Ｓ６０４）。先読み領域Ｃのデータは、スイッチ１２０内のメモリ１２３に保存しておく（Ｓ６０５）。
【００２０】
再び、上位装置１１０からソース側磁気ディスク１５０の領域Ｂへのデータ書き込み要求（Ｓ６０６）があったときには、ステップＳ６０４で既にその領域のデータはスナップ側磁気ディスク１６０へコピー済みのため、スイッチ１２０は、すぐに新しいデータをソース側磁気ディスク１５０の領域Ｂに書き込むことができる（Ｓ６０７）。
【００２１】
さらに、再び、上位装置１１０からソース側磁気ディスク１５０の領域Ｃへのデータ書き込み要求（Ｓ６０８）があったときには、ステップＳ６０５で既にその領域のデータはスイッチ１２０内のメモリ１２３に保存されているため、スイッチ１２０は、ソース側磁気ディスク１５０の領域Ｃにアクセスすることなく、メモリ１２３内のデータをスナップ側磁気ディスク１６０へ高速にコピーし（Ｓ６０９）、新しいデータをソース側磁気ディスク１５０の領域Ｃへ書き込むことができる（Ｓ６１０）。
【００２２】
次に、図１、図７〜図１２を用いて、各処理の詳細について説明する。
【００２３】
図７は、図１の磁気ディスク読み／書き実行部１２１における先書き／先読み状況判定とデータ書き込み処理のフローチャートを示す。
【００２４】
上位装置１１０からデータ書き込み要求があると、スイッチ１２０は先書き情報テーブル１２６から、既にスナップ側磁気ディスク１６０にデータを先書きしてある領域の情報を取得する（Ｓ７０１）。上位装置１１０がデータ書き込みを要求している領域と、既に先書きしてある領域が一致するか判定を行う（Ｓ７０２）。判定の結果、データ書き込み領域と先書き領域が一致している場合には、新しいデータをソース側磁気ディスク１５０に書き込んで（Ｓ７０７）終了する。
【００２５】
判定の結果、領域が一致していない場合には、更に先読み情報テーブル１２７から先読みしてデータをメモリ内に保存してある領域の情報を取得する（Ｓ７０３）。上位装置１１０がデータ書き込みを要求している領域と、既に先読みしてある領域が一致するか判定を行う（Ｓ７０４）。判定の結果、データ書き込み領域と先読み領域が一致している場合には、予めメモリ１２３内の先読み情報テーブル１２７に記録してある先読みデータをスナップ側磁気ディスク１６０にコピーして（Ｓ７０６）、新しいデータをソース側磁気ディスク１５０に書き込んで（Ｓ７０７）、終了する。
【００２６】
判定の結果、データ書き込み領域が先書き領域にも先読み領域にも一致しなかった場合は、通常どおり、先ず、ソース側磁気ディスク１５０のデータをスナップ側磁気ディスク１６０にコピーしてから（Ｓ７０５）、新しいデータをソース側磁気ディスク１５０に書き込んで（Ｓ７０７）、終了する。
【００２７】
図８は、図１の先書き／先読み実行部１２４における先書き／先読み処理のフローチャートを示す。図７に示した、新しいデータのソース側磁気ディスク１５０への書き込み後、先書き及び先読み領域をテーブルに登録する。
【００２８】
本実施例では、上位装置１１０からの書き込み要求により新しいデータをソース側磁気ディスク１５０に書き込んだ後（Ｓ８０１）、先書き／先読みを実行する場合について説明する。磁気ディスク情報テーブル１２５から、スナップショットのペアとなっている磁気ディスクの情報を取得する（Ｓ８０２）。その後、先書き／先読み領域を決定する（Ｓ８０３）。先読み情報テーブル１２７からソース側磁気ディスク番号、先読み領域情報、及び先読みデータを取得する（Ｓ８０４）。取得した情報を用いて、ステップＳ８０３で決定した先書き領域のデータが既にメモリ１２３内に保存されているかどうかを判定する（Ｓ８０５）。
【００２９】
判定の結果、ステップＳ８０３で決定した先書き領域のデータが既にメモリ１２３内に保存されている場合には、メモリ１２３内のデータをスナップ側磁気ディスク１６０にコピーし（Ｓ８０６）、コピーしたデータの領域を先書き領域として、先書き情報テーブル１２６に記録する（Ｓ８０８）。判定の結果、ステップＳ８０３で決定した先書き領域のデータがメモリ１２３内に保存されていない場合には、先書き領域のデータをスナップ側磁気ディスク１６０にコピーし（Ｓ８０７）、先書きした領域を先書き情報テーブル１２６に記録する（Ｓ８０８）。その後、ステップＳ８０３で決定した先読み領域情報に関する、ソース側磁気ディスク番号、先読み領域、及び先読み領域のデータ等を先読み情報テーブル１２７に記録する（Ｓ８０９）。
【００３０】
図９〜図１６を用いて、先書き／先読み領域の決定方法の詳細について説明する。
【００３１】
図９〜図１２は、図８の先書き／先読み処理における先書き／先読み領域決定（Ｓ８０３）のフローチャートを示す。
【００３２】
先書き／先読み領域を決定するために、データ更新情報テーブル１２８から、ソース側磁気ディスク１５０へのデータ書き込み履歴情報を取得する（Ｓ９０１）。履歴情報とは具体的には、上位装置番号、ソース側磁気ディスク番号、及びデータ書き込み領域などの情報である。上位装置番号は、どのホストが書き込み要求をしたのかを示す。ソース側磁気ディスク番号は、データを書き込むソース側磁気ディスクの番号を示す。データ書き込み領域は、データの書き始め位置をＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）、及びデータ書き込み容量をセクタ単位で示される。ＬＢＡ情報を用いて、上位装置１１０のアプリケーション固有の磁気ディスクアクセス方法を分析する（Ｓ９０２）。
【００３３】
分析の結果、シーケンシャルアクセスによるデータ書き込みの場合には（Ｓ９０３）、データを書き込んだ最新の領域に連続する次の領域を先書き領域と決定する（Ｓ９０７）。また、先書き領域に連続する次の領域を先読み領域と決定する（Ｓ９０８）。ランダムアクセスによるデータ書き込みの場合には（Ｓ９０４）、データを書き込んだ領域から、次にデータを書き込んだ領域までの間隔を計算する（Ｓ９０９）。計算した結果を用いて、「データを書き込んだ最新の領域＋Ｓ９０９の計算結果」の領域を先書き領域と決定する（Ｓ９１０）。また、「先書き領域＋Ｓ９０９の計算結果」を先読み領域と決定する（Ｓ９１１）。
【００３４】
アクセス頻度分析によるデータ書き込み方法の分析の場合には（Ｓ９０５）、先ず、ＬＢＡ情報を利用して、データ書き込み頻度の高い領域を検索する（Ｓ９１２）。さらに、書き込み頻度が予め定めた値よりも高い領域内でのデータ書き込み方法を分析し（Ｓ９１３）、シーケンシャルアクセスによるデータ書き込みの場合には（Ｓ９１４）、ステップＳ９０７〜Ｓ９０８の処理を行い、ランダムアクセスによるデータ書き込みの場合には（Ｓ９１５）、ステップＳ９０９〜Ｓ９１１の処理を行う。その後、取得した書き込み容量情報を用いて、何セクタ分のデータを先書き／先読みするか決定する（Ｓ９０６）。例えば、データ更新情報テーブル１２８のデータ書き込み領域情報の書き込み容量情報が、２０セクタ、２０セクタ、２０セクタ、２０セクタ、２０セクタとなっていたとすると、次に書き込むデータ容量もこれらの平均値である２０セクタである可能性が高いと分析し、先書き／先読みするデータ容量を２０セクタとする。
【００３５】
図１３は、シーケンシャルアクセスによるデータ書き込み例を示す。
【００３６】
１回目のデータ書き込み（Ｓ１００１）は領域１００１、２回目のデータ書き込み（Ｓ１００２）は領域１００２、３回目のデータ書き込み（Ｓ１００３）は領域１００３、４回目のデータ書き込み（Ｓ１００４）は領域１００４に対してそれぞれ実行されている。データを書き込んだ最新の領域は、領域１００４であるので、先書き領域は、領域１００４に連続する次の領域である、領域１００５と決定する。また、先読み領域は、先書き領域に連続する次の領域である、領域１００６と決定する。
【００３７】
図１４は、ランダムアクセスによるデータ書き込み例を示す。
【００３８】
１回目のデータ書き込み（Ｓ１１０１）は領域１１０１、２回目のデータ書き込み（Ｓ１１０２）は領域１００５、３回目のデータ書き込み（Ｓ１１０３）は領域１１０９、４回目のデータ書き込み（Ｓ１１０４）は領域１１０２に対してそれぞれ実行されている。データを書き込んだ最新の領域は、領域１１０２であるので、先書き領域は、領域１１０２から４つの領域先の領域１１０６であると決定する。また、先読み領域は、先書き領域から４つの領域先の領域領域１１１０であると決定する。
【００３９】
図１５は、アクセス頻度分析によるデータ書き込み例を示す。
【００４０】
１回目のデータ書き込み（Ｓ１２０１）は領域１２０１、２回目のデータ書き込み（Ｓ１２０２）は領域１２０２、３回目のデータ書き込み（Ｓ１２０３）は領域１２０３、４回目のデータ書き込み（Ｓ１２０４）は領域１２０４、５回目のデータ書き込み（Ｓ１２０５）は領域１２０１、６回目のデータ書き込み（Ｓ１２０６）は領域１２０２、に対してそれぞれ実行されている。アクセス頻度の高い領域は領域１２０１〜領域１２０４であり、データを書き込んだ最新の領域は領域１２０２である。また、領域１２０１〜領域１２０４内でのデータアクセス方法はシーケンシャルアクセスである。よって、先書き領域は、領域１２０２に連続する次の領域である領域１２０３、先読み領域は、先書き領域に連続する次の領域である領域１２０４であると決定する。
【００４１】
図１６は、先書き／先読みの実行例を示す。上位装置１１０から、ソース側磁気ディスクのセクタ０番と１番に書き込み要求があると（Ｓ１３０１）、この領域のデータをスナップ側磁気ディスクのセクタ０番と１番にコピー（Ｓ１３０２）した後、新しいデータを書き込む（Ｓ１３０３）。その後、先書き領域であるソース側磁気ディスクのセクタ２番と３番のデータを、スナップ側磁気ディスクのセクタ２番と３番にコピーする（Ｓ１３０４）。そして、先読み領域であるソース側磁気ディスクのセクタ４番と５番のデータをスイッチ１２０内のメモリ１２３にコピーする（Ｓ１３０５）。
【００４２】
先書き／先読み領域決定について、上記以外の方法も考えられる。図１７〜図１８を用いて説明する。
【００４３】
図１７では、データ更新情報テーブル１２８の書き込み容量は、バイト単位で保存している。例えば、書き込み容量情報が、２０バイト、２０バイト、２０バイト、２０バイト、２０バイトとなっていたとすると、先書き／先読みするデータ容量はこれらの平均値である２０バイトと決定する。
【００４４】
図１８では、先書き／先読みのデータ容量は固定で、先書き／先読み領域のみ決定する場合を示している。取得したＬＢＡ情報を用いて、図９〜１２に示すように先書き／先読み領域を決定し、決められた容量のデータを先書き／先読みする。
【００４５】
さて、本実施例では、スナップショットの制御はスイッチ１２０が行ったが、上位装置１１０、またはストレージ装置が行うこともできる。
【００４６】
上位装置１１０がスナップショットの制御を行う手順を説明する。上位装置１１０は、先書き領域・先読み領域を決定した後、スイッチ１２０を介して、ソース側磁気ディスク１５０の先書き及び、先読み領域のデータを読む。そして、先書き領域のデータは、再びスイッチ１２０を介して、スナップ側磁気ディスク１６０にコピーされる。先読みデータについては、上位装置１１０のメモリ内に保存しておく。その後、スイッチ１２０を介してソース側磁気ディスク１５０に新しいデータを書き込む。
【００４７】
ストレージ装置がスナップショットの制御を行う手順を説明する。上位装置１１０から、スイッチ１２０を介してデータの書き込み位置情報や、書き込むデータを受け取る。その後、先書き領域・先読み領域を決定した後、先書き領域のデータを、スナップ側磁気ディスク１６０にコピーし、先読みデータを、ストレージ装置のキャッシュに保存しておく。そして、上位装置１１０から受け取っていた新しいデータをソース側磁気ディスク１５０に書き込む。
【００４８】
ストレージ装置でスナップショットの制御を行う場合であって、ストレージ装置にキャッシュがない場合でも、先読みデータは、スイッチ１２０のメモリ、又は上位装置１１０のメモリに保存しておくことにより、先読み処理を実行できる。
【００４９】
また、本実施例では、先書き／先読み処理を、ソース側磁気ディスク１５０に新しいデータが書き込まれた後に実行したが、先書き／先読み処理実行のタイミングは他にも様々な場合が考えられる。例えば、上位装置１１０からのデータ入出力要求待ち状態のとき、上位装置１１０から先書き／先読み実行要求があったときなどに、先書き／先読み処理を実行できる。
【００５０】
また、本実施例では、記憶装置として磁気ディスクを例に採って説明したが、その他、磁気テープや光ディスクなどにも適用できる。
【００５１】
その他の実施例としては、ソース側磁気ディスクの状態をデータコピー前の状態に戻す（以下、コピー戻しと記述）場合に本発明を適用できる。
【００５２】
図１９は、コピー戻しの実施例を示す。
【００５３】
ビットマップ１６３０は、スナップ側磁気ディスクの領域毎に「１」又は「２」の２種類のフラグを使用する。これらのフラグを使い分けることによって、コピー戻しを容易に行う例を説明する。
【００５４】
上位装置１１０からのデータ書き込み要求により、ソース側磁気ディスク１６１０の古いデータをスナップ側磁気ディスク１６２０にコピーし（Ｓ１６０１）、ソース側磁気ディスク１６１０に新しいデータを書き込んだ場合には、ビットマップ１６３０には「１」のフラグを立てる。先書き実行（Ｓ１６０２）により、ソース側磁気ディスク１６１０の先書き領域データをスナップ側磁気ディスク１６２０にコピーした場合には、ビットマップ１６３０には「２」のフラグを立てる。
【００５５】
その後、コピー戻しを実行（Ｓ１６０３）する必要がある場合には、フラグ「１」に対応する領域のデータのみを、ソース側磁気ディスク１６４０に戻す。フラグに対応する「２」領域のデータは、先書きによりスナップ側磁気ディスク１６２０にコピーされたデータであるため、実際にはソース側磁気ディスク１６１０に新しいデータは書き込まれていない。このため、フラグ「２」に対応する領域のデータを、ソース側磁気ディスク１６４０に戻す必要はない。
【００５６】
このような方法により、ソース側磁気ディスク１６１０をコピー前の状態１６４０に戻す処理を容易に行うことができる。
【００５７】
以上に述べた本発明のスナップショットの高速化方法を実行するためのプログラムを、計算機で読み取り可能な記憶媒体に格納し、あるいは、通信手段を介して他の計算機に転送し、このプログラムを計算機のメモリに読み込んで実行することもできる。
【００５８】
【発明の効果】
データ更新情報を分析して、分析結果からソース側磁気ディスクへの書き込み要求がされる可能性が高い領域を決定して、事前にその領域のデータをスナップ側磁気ディスクに書き込む先書き処理を実行することにより、上位装置からの書き込み要求がきたときにはすぐにデータをソース側磁気ディスクに書くことができる。また、データ更新情報を分析して、分析結果からソース側磁気ディスクへの書き込み要求がある程度高い領域を決定して、事前にその領域のデータを読んでメモリに保存しておく先読み処理を実行することにより、上位装置からの書き込み要求がきたときにはメモリ内のデータを高速にスナップ側磁気ディスクにコピーすることができる。これらの先書き処理・先読み処理を組み合わせることで、スナップショットの高速化が図られる。また、ビットマップに２種類のフラグを使用することによって、ソース側磁気ディスクを容易にコピー前の状態に戻すことができる。
【図面の簡単な説明】
【図１】スナップショット高速化を実現するための構成図である。
【図２】磁気ディスク情報テーブルを示す。
【図３】先書き情報テーブルを示す。
【図４】先読み情報テーブルを示す。
【図５】データ更新情報テーブルを示す。
【図６】スナップショット高速化の概略手順を示す。
【図７】先書き／先読み状況の判定とデータ書き込み処理を示すフローチャートである。
【図８】先書き／先読み処理を示すフローチャートである。
【図９】先書き／先読み領域決定の処理を示すフローチャート（その１）である。
【図１０】先書き／先読み領域決定の処理を示すフローチャート（その２）である。
【図１１】先書き／先読み領域決定の処理を示すフローチャート（その３）である。
【図１２】先書き／先読み領域決定の処理を示すフローチャート（その４）である。
【図１３】シーケンシャルアクセスによるデータ書き込み例を示す。
【図１４】ランダムアクセスによるデータ書き込み例を示す。
【図１５】アクセス頻度分析によるデータ書き込み例を示す。
【図１６】先書き／先読みの実行例を示す。
【図１７】データ更新情報テーブルの一例を示す。
【図１８】データ更新情報テーブルの一例を示す。
【図１９】コピー戻しの実施例を示す。
【符号の説明】
１１０：上位装置、１２０：スナップショット制御スイッチ、１２１：磁気ディスク読み／書き実行部、１２２：メモリ制御部、１２３：メモリ、１２４：先書き／先読み実行部、１２５：磁気ディスク情報テーブル、１２６：先書き情報テーブル、１２７：先読み情報テーブル、１２８：データ更新テーブル、１５０：ソース側磁気ディスク、１６０：スナップ側磁気ディスク
【図１】
2005055972.tif 000003
【図２】
2005055972.tif 000004
【図３】
2005055972.tif 000005
【図４】
2005055972.tif 000006
【図５】
2005055972.tif 000007
【図６】
2005055972.tif 000008
【図７】
2005055972.tif 000009
【図８】
2005055972.tif 000010
【図９】
2005055972.tif 000011
【図１０】
2005055972.tif 000012
【図１１】
2005055972.tif 000013
【図１２】
2005055972.tif 000014
【図１３】
2005055972.tif 000015
【図１４】
2005055972.tif 000016
【図１５】
2005055972.tif 000017
【図１６】
2005055972.tif 000018
【図１７】
2005055972.tif 000019
【図１８】
2005055972.tif 000020
【図１９】
2005055972.tif 000021