(57)【特許請求の範囲】
【請求項１】
マスタデータから複製データを作成し、作成された複製データを複製データ格納領域に格納し、当該複製データの実データ格納領域への格納に際して、前記複製データ格納領域の前記複製データが前記実データ格納領域の何処に格納されているかを示す格納情報を生成し、生成された前記格納情報に基づいて前記実データ格納領域からの前記実データの読み出しを行う複製データ格納方法であって、
前記実データ格納領域からの前記実データの読み出しに際して、前記格納情報に基づいて前記実データ格納領域からの読み出し範囲を設定し、
前記格納情報を、前記複製データの実データ格納領域への格納時に生成して前記格納情報を管理するディレクトリに格納し、
前記マスタデータを、マスタボリュームに格納し、前記複製データを、スナップショットボリュームに格納し、前記実データを、共有プール・ボリュームに格納し、
前記読み出し範囲の設定では、
前記共有プール・ボリュームに対して設定されている共有プール読み出し範囲と現在検索中の前記ディレクトリの前記格納情報とを比較し、両者の値が１回の読み出しで読み出し可能な範囲にある場合、現在設定されている前記共有プール読み出し範囲と現在検索中の前記ディレクトリの前記格納情報とにより両方のデータの読み出しができるように前記共有プール読み出し範囲を再設定することを特徴とする複製データ格納方法。
【請求項２】
前記実データは、データキャッシュ部に読み出され、該読み出し後に発行される前記複製データ格納領域への読み出し命令に対する応答を前記データキャッシュ部から返すことを特徴とする請求項１記載の複製データ格納方法。
【請求項３】
前記データキャッシュ部に読み出されたデータの中に、前記読み出し命令による読み出し対象に指定されていない前記複製データ格納領域が使用しているデータが含まれているならば、当該データを前記データキャッシュ部から破棄することを特徴とする請求項１又は２記載の複製データ格納方法。
【請求項４】
マスタデータから複製データを作成する作成手段と、該作成手段によって作成された複製データを格納する複製データ格納領域と、実データ格納領域と、前記複製データの実データ格納領域への格納に際して、前記複製データ格納領域の前記複製データが前記実データ格納領域の何処に格納されているかを示す格納情報を生成する生成手段と、該生成手段によって生成された前記格納情報に基づいて前記実データ格納領域からの前記実データの読み出しを行う複製データ格納装置であって、
前記実データ格納領域からの前記実データの読み出しに際して、前記格納情報に基づいて前記実データ格納領域からの読み出し範囲を設定する設定手段を備え、
該設定手段は、
前記格納情報を、前記複製データの実データ格納領域への格納時に生成して前記格納情報を管理するディレクトリに格納し、
前記マスタデータを、マスタボリュームに格納し、前記複製データを、スナップショットボリュームに格納し、前記実データを、共有プール・ボリュームに格納し、
前記読み出し範囲の設定では、
前記共有プール・ボリュームに対して設定されている共有プール読み出し範囲と現在検索中の前記ディレクトリの前記格納情報とを比較し、両者の値が１回の読み出しで読み出し可能な範囲にある場合、現在設定されている前記共有プール読み出し範囲と現在検索中の前記ディレクトリの前記格納情報とにより両方のデータの読み出しができるように前記共有プール読み出し範囲を再設定する構成とされていることを特徴とする複製データ格納装置。
【請求項５】
前記実データは、データキャッシュ部に読み出され、該読み出し後に発行される前記複製データ格納領域への読み出し命令に対する応答を前記データキャッシュ部から返すことを特徴とする請求項４記載の複製データ格納装置。
【請求項６】
前記データキャッシュ部に読み出されたデータの中に、前記読み出し命令による読み出し対象に指定されていない前記複製データ格納領域が使用しているデータが含まれているならば、当該データを前記データキャッシュ部から破棄することを特徴とする請求項４又は５記載の複製データ格納装置。
【請求項７】
コンピュータに請求項１乃至３のいずれか一に記載の複製データ格納方法を実行させることを特徴とする制御プログラム。
【請求項８】
コンピュータに請求項４乃至６のいずれか一に記載の複製データ格納装置を制御させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ格納方法及びその装置、複製データ格納方法及びその装置並びにそれらの制御プログラムに関し、詳しくはスナップショット・ボリューム等への読み出しアクセス性能の改善に有用なデータ格納方法及びその装置、複製データ格納方法及びその装置並びにそれらの制御プログラムに関する。
【背景技術】
【０００２】
近年、コンピュータやインターネットが普及して情報化社会が進むにつれて、社会基盤がＩＴ（Information Technology）化されている。これに伴って、企業や、個人が保有するデータ量が急速に増加している。このようなデータの中には、データ自体の質や価値の高いものもある。その例は、電子商取引の普及や査証用データ保管等に見られる。
いずれのデータ利用分野においても、取り扱うデータの損失という事態が及ぼす影響は大きい。そして、それに対する認識も広く一般的となるにつれて、上記事態を救済する手段、すなわち、データ損失を未然に防ぐ手段としてのバックアツプ技術に大きな関心が寄せられている。
【０００３】
情報処理システムを構成する磁気ディスクアレイ・サブシステムにおいて従来から採用されているバックアツプ技術にミラーリング方式がある。このミラーリング方式は、次のようなものである。
先ず、バックアツプの対象となるボリューム（マスタ・ボリューム）の静止点を確保するために、マスタ・ボリュームに対してアクセス中の、データベース等のアプリケーションを停止する。次に、マスタ・ボリュームと同一容量のボリューム（バックアツプ・ボリューム）ほ作成し、マスタ・ボリュームの全データをバックアツプ・ボリュームにコピーする。このコピーが完了すると、停止していたデータベース等のアプリケーションを再開する一方、バックアツプ・ボリュームからデータを読み出し、テープ等のバックアツプ用装置にデータを保存する。
【０００４】
上述したバックアツプ手順では、アプリケーションを停止させてから、バックアツプ・ボリュームの作成と、マスタ・ボリュームからバックアツプ・ボリュームへのデータ・コピーとを実行するものではあるが、これとは異なって、アプリケーションが動作している最中に、バックアツプ・ボリュームを作成し、マスタ・ボリュームからバックアツプ・ボリュームへのデータ・コピーを起動しておくことにより、静止点を確保してから、マスタ・ボリュームとバックアツプ・ボリュームとの同期を取るまでの時間を短縮する方式も実現されている。
【０００５】
しかし、いずれの方式においても、静止点を確保してから、マスタ・ボリュームのデータをバックアツプ・ボリュームへ完全にコピーし終えるまでに、コピー量に応じた時間を費やしてしまう。
また、バックアツプ用途以外の、例えば、データ・マイニングなどのために、同一のマスタ・ボリュームに対して複数のバックアツプ・ボリュームを作成することがよくあるが、その場合にはマスタ・ボリュームの数倍のデータ容量を消費することになる。
【０００６】
このようなミラーリング方式の技術的問題を回避するために、最近では、スナップショット方式を採用したバックアツプが頻繁に使われるようになって来ている。
スナップショット方式を採用した従来のデータ複製システムの構成例（以下、従来システムという）を図９乃至図１１に示す。このデータ複製システム９０は、図９に示すように、マスタ・ボリューム９１（ＬＶ０）と、マスタ・ボリューム９１と同一容量で、実際には物理的容量を持たない仮想的なボリューム（以下、スナップショット・ボリューム（ＬＶ１）という）９２と、スナップショット・ボリューム９２のデータを格納するボリューム（以下、共有プール・ボリューム（ＬＶ２）という）９３と、スナップショット・ボリューム９２へのデータ・アクセスを管理するデータ複製制御手段９４と、複製データの実際の格納先を管理するアドレス変換手段９５とを有して構成される。
【０００７】
データ複製制御手段９４は、図１０に示すように、マスタ・ボリュームやスナップショット・ボリューム等の属性を管理する属性管理テーブル１０１と、ボリューム間のスナップショット関係を保持するボリューム対応管理テーブル１０２と、マスタ・ボリューム９１とスナップショット・ボリューム９２との差分を管理する差分管理テーブル１０３とを有して構成される。差分管理テーブル１０３は、スナップショット・ボリューム９２がデータを保持していないときには値０がセットされ、データを保持しているときには値１がセットされる。
アドレス変換手段９５は、図１に示すように、スナップショット・ボリューム９２の実際の格納アドレスを保持するディレクトリ１１１と、共有プール・ボリューム９３の使用状況を管理する割当管理テーブル１１２とを有して構成される。
【０００８】
このような構成のデータ複製システムの動作を図１２乃至図１４を参照して以下に説明する。
先ず、ボリューム複製手順について説明する。このボリューム複製手順が開始されると、磁気ディスクアレイ・サブシステム９０内に、共有プール・ボリューム９３が作成されると共に、属性管理テーブル１０１及び割当管理テーブル１１２が初期化される（図１２のステップＳ１２１）。すなわち、属性管理テーブル１０１のＬＶ２に共有属性を設定し、割当管理テーブル１０２に共有プール・ボリューム９３が未使用状態であることを示す値０を設定する。次いで、マスタ・ボリューム９１とスナップショット・ボリューム９２とを作成する（図１２のステップＳ１２２）。このときの様子を図９に示す。
【０００９】
そして、スナップショット・コマンドを磁気ディスクアレイ・サブシステム９０が受信すると（図１２のステップＳ１２３）、属性管理テーブル１０１と、ボリューム対応管理テーブル１０２と、差分管理テーブル１０３と、ディレクトリ１１１とが初期化される（図１２のステップＳ１２４）。
すなわち、属性管理テーブル１０１のＬＶ０にマスタ属性を、そしてＬＶ１にスナップショット属性を設定する。また、ボリューム対応管理テーブル１０２のＬＶ０とＬＶ１とがスナップショット関係にあることを示すように、スナップショットのＬＶ０にＬＶ１を設定し、ＬＶ１にＬＶ０を設定する（図１０）。また、差分管理テーブル１０３のスナップショット・ボリューム９２、この場合はＬＶ１に、該スナップショット・ボリューム９２がデータを保持していないことを示す値０を設定する。また、ディレクトリ１１１には、スナップショット・ボリューム９２に共有プール・ボリューム９３の格納空間が割り当てられていないことを示すnull値を設定する。
このときの各テーブルの状態を図１０及び図１１に示す。
【００１０】
次に、上述したボリューム複製処理が行われた状態の磁気ディスクアレイ・サブシステム９０が、書込みコマンド（ライト・コマンド）と読み出しコマンド（リード・コマンド）を受信したときの処理手順を図１３及び図１４を参照して以下に説明する。
先ず、書込みコマンドを受信したときの処理手順を図１３を参照して説明する。
書込みコマンドを受信した磁気ディスクアレイ・サブシステム９０のマイクロプロセッサ（以下、ＣＰＵという）（図９には図示せず）は、属性管理テーブル１０１を参照し、受信したコマンドがマスタ・ボリューム９１へのコマンド又はスナップショット・ボリューム９２へのコマンドのいずれへのものであるかの判断をする（図１３のステップＳ１３２）。
【００１１】
その判断がスナップショット・ボリューム９２へのコマンドであるとの判断であると（図１３のステップＳ１３２のno）、データの書込みは行わずに処理を終了する。このような処理は、スナップショット・ボリューム９２がスナップショット・コマンドを受信した時点でのマスタ・ボリューム９１の複製を維持するという運用に従った場合の処理、例えば、バックアツプ等の場合の処理であり、その他の運用形態においては書込みコマンドの要求通りにスナップショット・ボリューム９２へデータを書き込んでもよい。
【００１２】
ステップＳ１３２での判断がマスタ・ボリューム９１への書き込みコマンドであるとの判断になると（図１３のＳ１３２のyes）、ＣＰＵは、ボリューム対応管理テーブル１０２を参照し、このマスタ・ボリューム９１と対になるスナップショット・ボリューム９２を特定する（図１３のステップＳ１３３）。
特定したスナップショット・ボリューム９２の書き込み要求アドレスにデータがあるか否かの判断のため差分管理テーブル１０３を参照し（図１３のステップＳ１３４）、その判断を行う（図１３のステップＳ１３５）。
【００１３】
ステップＳ１３５の判断が肯定であると（図１３のステップＳ１３５のyes）、マスタ・ボリューム９１へデータを書き込み、処理を終了す（図１３のステップＳ１４０）。
ステップＳ１３５での判断が否定となると（図１３のステップＳ１３５のno）、割当管理テーブル１１２を探索し、共有プール・ボリューム９３の未使用領域の中から今回使用し得る領域を決定する（図１３のステップＳ１３６）。この決定された領域に、マスタ・ボリューム９１の書き込み要求アドレスにある既存のデータをコピーしてから図１３のステップＳ１３７）、このコピーに対応する割当管理テーブル１１２の箇所に、上記決定された領域が使用済みであることを示す値１を設定すると共に、ディレクトリ１１１の対応する箇所に、決定された上記未使用領域のアドレスを設定して割当管理テーブル１１２及びディレクトリ１１１の更新をする（図１３のステップＳ１３８）。
【００１４】
これに加えて、差分管理テーブル１０３の対応する箇所にデータがあることを示す値１を設定して差分管理テーブル１０３の更新を行う（図１３のステップＳ１３９）。
そして、マスタ・ボリューム９１へデータを書き込み（図１３のステップｓ１４０）、処理を終了する。
【００１５】
次に、読み出しコマンドを受信したときの処理手順を図１４を参照して説明する。
磁気ディスクアレイ・サブシステム９０で読み出しコマンドを受信すると、属性管理テーブル１０１を参照し（図１４のステップＳ１４１）、受信したコマンドがマスタ・ボリューム９１へのコマンド又はスナップショット・ボリューム９２へのコマンドのいずれへのコマンドであるかを判断する（図１４のステップＳ１４２）。
ステップＳ１４２での判断が、受信したコマンドがマスタ・ボリューム９１へのコマンドであるとの判断であると（図１４のステップＳ１４２のno）、マスタ・ボリューム９１からデータを読み出し（図１４のステップＳ１４６）、読み出し処理を終了する。
【００１６】
ステップＳ１４２での判断が、受信したコマンドがスナップショット・ボリューム９２へのコマンドであるとの判断であると（図１４のステップＳ１４２のyes）、差分管理テーブル１０３（図１０）を参照し、スナップショット・ボリューム９２への読み出し要求アドレスにデータがスナップショット・ボリューム９２にあるか否かを判断する（図１４のステップＳ１４４）。
ステップＳ１４４での判断が肯定であるならば（図１４のステップＳ１４４のyes）、ディレクトリ１１１を参照し、データが格納されている共有プール・ボリューム９３上のアドレスを取得する（図１４のステップＳ１４６）。取得したアドレスのデータを共有プール・ボリューム９３から読み出し（図１４のステップＳ１４７）、読み出し処理を終了する。
ステップＳ１４４での判断が否定であるならば（図１４のステップＳ１４４のno）、ボリューム対応管理テーブル１０２（図１０）を参照し、スナップショット・ボリューム９２と対となるマスタ・ボリューム９１からデータを読み出し（図１４のステップＳ１４７）、読み出し処理を終了する。
【００１７】
また、特許文献１には、上述の従来システムと同様のデータ複製システムが開示されている。このデータ複製システムは、データの削除処理に先行して未使用のディレクトリ領域に実データの格納場所を管理する情報を格納させるようにして、複製データの削除から新たな複製データの作成開始までの処理時間の短縮を図るものである。
【００１８】
特許文献２には、メモリ制御装置及びメモリ制御方法が開示されている。これらの装置及び方法は、一連のリード要求に対応するリードデータの順序に不整合が生ずる場合であっても、リード動作に係る実行時間の短縮を図る手段を開示している。すなわち、その手段は、不整合部分に対応する間隔読出範囲のリードデータをメモリに一時記憶させ、リード要求に応じてそのリードデータを情報機器（ＰＣ）へ転送することにある。これにより、リードデータの順序不整合を解消してリード動作に要する時間を短縮している。
【００１９】
また、特許文献３には、スナップショット高速化方法及びその装置が開示されている。これらの方法及び装置は、スナップショットの高速化のため、先書き及び先読みの機能が設けられている。この機能は、データ更新情報を分析し、その結果から先書き領域及び先読み領域を決定し、決定された先書き領域のデータを事前にスナップ側磁気ディスクにコピーし、また、決定された先読み領域のデータを事前にメモリに保存する手段を採用している。これにより、ソース側磁気ディスク又はメモリに新しいデータを書き込むまでの時間を短縮することができる。
そして、上記機能を実現するために、データ更新情報テーブルを使用している。このテーブルは、どの上位装置から書き込み要求があったかを示す上位装置番号、新しいデータを書き込んだ磁気ディスクを示すソース側磁気ディスク番号、及び新しいデータを書き込んだ領域と何セクタ分のデータを書き込んだのかを示すデータ書き込み領域情報を記録する。
【特許文献１】特開２００７−１７２３６５号公報
【特許文献２】特開２００７−１６４３４２号公報
【特許文献３】特開２００５−０５５９７２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
上述した従来システムにおけるスナップショット・ボリューム９２は仮想ボリュームであり、スナップショット・ボリューム９２の実データに辿り着くには、先ず、ディレクトリ１１１の検索を行い、実データが格納されている共有プール・ボリューム９３の格納場所を取得する。その上で、取得された共有プール・ボリューム９３の格納場所からデータを読み出しを行う必要がある。
このような実データの格納関係にあることから、スナップショット・ボリューム９２の実データの在処は、マスタ・ボリュームに書き込みコマンドを受信したときの共有プール・ボリューム９３の使用状況（格納済みのデータ格納関係）により決定される。
【００２１】
そのため、マスタ・ボリューム９１への書き込みコマンドの発行がシーケンシャルであったとしても、その時点において共有プール・ボリューム９３の空き領域が連続して残されていないならば、スナップショット・ボリューム９２の実データは、共有プール・ボリューム内の分散した格納領域に格納されることになる。
このようなデータ格納関係は、マスタ・ボリュームが複数作成される場合にも、生ずる事柄である。すなわち、複数のマスタ・ボリュームに対して同時に書き込みコマンドが発行されるときの、スナップショット・ボリューム９２の実データの在処は、マスタ・ボリュームに書き込みコマンドを受信したときの共有プール・ボリューム９３の使用状況（格納済みのデータ格納関係）により決定される。
【００２２】
したがって、それぞれのマスタ・ボリュームに対してシーケンシャルな書き込みを行なったときの、そのマスタ・ボリュームに書き込んだデータの複製データは、スナップショット・ボリュームにもシーケンシャルに書き込まれるが、そのスナップショット・ボリューム上の実データは、この場合にも、共有プール・ボリューム上では分散した格納領域に格納される、すなわち、ランダムに格納されることになる。
【００２３】
このような格納態様で実データが共有プール・ボリュームに格納される状態が生ずるので、このような格納状態において、スナップショット・ボリュームへの読み出しアクセスが行われたときの共有プール・ボリュームへの読み出しアクセスは、ランダムなアクセスとなってしまう。
したがって、スナップショット・ボリュームへの読み出しコマンドが、例えシーケンシャルで発行されたとしても、読み出しアクセスの性能は、ランダムアクセスの性能に依存した低い性能に落ち込む結果となる。
【００２４】
また、特許文献１乃至特許文献３にも、上述の従来システムと同様の技術的課題がある。
すなわち、特許文献１のデータ複製システムは、複製データの削除から新たな複製データの作成開始までの処理時間の短縮を図ってはいるものの、上述の従来システムで問題となる技術的課題は図れていないままにある。
また、特許文献２では、不整合部分に対応する間隔読出範囲のリードデータの読み出しをしてはいるものの、上述の従来システムで問題となる書き込んだデータがランダムになることについては、何ら触れられていないからである。
また、特許文献３にも、上述の従来システムや、特許文献１及び特許文献２と同様に、書き込み時に書き込んだデータが分散されることに対する技術的解決手段を示唆するところはないからである。
【００２５】
この発明は、上述の事情に鑑みてなされたもので、データ格納装置にデータが分散して書き込まれることがあったとしても、そのデータの読み出し性能の向上に寄与し得るデータ格納方法及びその装置、複製データ格納方法及びその装置並びにその制御プログラムを提供することを目的としている。
【課題を解決するための手段】
【００２６】
上記課題を解決するために、この発明の第１の構成は、マスタデータから複製データを作成し、作成された複製データを複製データ格納領域に格納し、当該複製データの実データ格納領域への格納に際して、前記複製データ格納領域の前記複製データが前記実データ格納領域の何処に格納されているかを示す格納情報を生成し、生成された前記格納情報に基づいて前記実データ格納領域からの前記実データの読み出しを行う複製データ格納方法に係り、前記実データ格納領域からの前記実データの読み出しに際して、前記格納情報に基づいて前記実データ格納領域からの読み出し範囲を設定し、前記格納情報を、前記複製データの実データ格納領域への格納時に生成して前記格納情報を管理するディレクトリに格納し、前記マスタデータを、マスタボリュームに格納し、前記複製データを、スナップショットボリュームに格納し、前記実データを、共有プール・ボリュームに格納し、前記読み出し範囲の設定では、前記共有プール・ボリュームに対して設定されている共有プール読み出し範囲と現在検索中の前記ディレクトリの前記格納情報とを比較し、両者の値が１回の読み出しで読み出し可能な範囲にある場合、現在設定されている前記共有プール読み出し範囲と現在検索中の前記ディレクトリの前記格納情報とにより両方のデータの読み出しができるように前記共有プール読み出し範囲を再設定することを特徴としている。
【００２７】
この発明の第２の構成は、マスタデータから複製データを作成する作成手段と、該作成手段によって作成された複製データを格納する複製データ格納領域と、実データ格納領域と、前記複製データの実データ格納領域への格納に際して、前記複製データ格納領域の前記複製データが前記実データ格納領域の何処に格納されているかを示す格納情報を生成する生成手段と、該生成手段によって生成された前記格納情報に基づいて前記実データ格納領域からの前記実データの読み出しを行う複製データ格納装置に係り、前記実データ格納領域からの前記実データの読み出しに際して、前記格納情報に基づいて前記実データ格納領域からの読み出し範囲を設定する設定手段を備え、該設定手段は、前記格納情報を、前記複製データの実データ格納領域への格納時に生成して前記格納情報を管理するディレクトリに格納し、前記マスタデータを、マスタボリュームに格納し、前記複製データを、スナップショットボリュームに格納し、前記実データを、共有プール・ボリュームに格納し、前記読み出し範囲の設定では、前記共有プール・ボリュームに対して設定されている共有プール読み出し範囲と現在検索中の前記ディレクトリの前記格納情報とを比較し、両者の値が１回の読み出しで読み出し可能な範囲にある場合、現在設定されている前記共有プール読み出し範囲と現在検索中の前記ディレクトリの前記格納情報とにより両方のデータの読み出しができるように前記共有プール読み出し範囲を再設定する構成とされていることを特徴としている。
【００２８】
この発明の第３の構成は、複製データ格納方法を実行する制御プログラムに係り、コンピュータに上記第１の構成に係る複製データ格納方法を実行させることを特徴としている。
【００２９】
この発明の第４の構成は、複製データ格納装置を制御する制御プログラムに係り、コンピュータに上記第２の構成に係る複製データ格納装置を制御させることを特徴としている。
【発明の効果】
【００３０】
この発明によれば、データ格納装置への読み出し命令が発行されてデータ格納装置からのデータの読み出しを行う場合に、上記データ格納装置へのデータの格納時にデータ格納装置に分散して格納されることがある当該データの格納情報を記憶し、データ格納装置からのデータの読み出し時に記憶された格納情報を参照し、参照された格納情報に基づいてデータ格納装置のデータ読み出し範囲を設定するようにしているから、上記データ格納装置への読み出しアクセス性能を向上させることができる。
また、上記読み出し範囲のデータをキャッシュ部へ読み出すことで、この読み出し後に発行される読み出し命令についてはディスクの読み出しを行わずにそのデータを読み出し要求部へ転送することができる。また、上記読み出し命令で指定されていないデータのキャッシュ部からの破棄をすることができる。
【発明を実施するための最良の形態】
【００３１】
この発明は、データ格納装置からのデータの読み出しを行う場合に、データ格納装置へのデータの格納時にデータ格納装置に分散して格納されることがある当該データの格納情報を記憶すること、データ格納装置からのデータの読み出し時に記憶された格納情報を参照すること、及び参照された格納情報に基づいてデータ格納装置のデータ読み出し範囲を設定することを含んで構成される。
【実施形態１】
【００３２】
図１は、この発明の実施形態１であるディスクアレイ・サブシステムのハードウェア構成を示す図、図２は、同ディスクアレイ・サブシステムの機能ブロック図、図３は、同機能ブロック図内のデータ複製制御手段の構成を示す図、図４は、同機能ブロック図内のアドレス変換手段の構成を示す図、図５は、同機能ブロック図内のプール読み出し制御手段の構成を示す図、図６は、上記ディスクアレイ・サブシステムの複製準備動作を示すフローチャート、図７は、同ディスクアレイ・サブシステムのスナップショット・ボリュームへの読み出しコマンドの処理手順を示すフローチャート、また、図８は、同ディスクアレイ・サブシステムのプール読み出し制御手段の処理手順を示すフローチャートである。
【００３３】
この実施例のディスクアレイ・サブシステム１０は、読み出し対象の実データ付近に同一スナップショット・ボリュームが使用している実データがあるとき、ディスク読み出し範囲を拡張して読み出すようにしたシステムに係り、図１に示すように、マイクロプロセッサ１１と、制御用メモリ１２と、ＲＡＩＤ（Redundant Array of Inexpensive Disk）制御部（ボリューム制御部）１３と、磁気ディスク装置１４ａ乃至１４ｆと、インターフェース制御部１５とを有するハードウェアから概略構成されている。
【００３４】
ディスクアレイ・サブシステム１０は、上位装置としてのホストコンピュータ（計算機）１６、管理端末装置（計算機）１７等に対して、複数の磁気ディス装置１４ａ乃至１４ｆを割り当ててデータのバックアップ等の処理を行うもので、ホストコンピュータ１６、管理端末装置１７等と、複数の磁気ディス装置１４ａ乃至１４ｆとはＲＡＩＤ制御部１４及びインターフェース制御部１５を介して接続される。
そして、ＲＡＩＤ制御部１４及びインターフェース制御部１５を介してのデータの入出力制御は、マイクロプロセッサ１１によって行われる。
【００３５】
マイクロプロセッサ（以下、ＣＰＵという）１１は、制御用メモリ１２に格納されている制御プログラムに基づいて作動されるように構成されている。制御用メモリ１２に格納される制御プログラムを書き換えることにより、ＣＰＵ１１を種種の機能遂行手段として構成することが可能である。例えば、この実施形態においては、図１及び図２に示すように、ＣＰＵ１１には、データ複製制御手段２６、アドレス変換手段２７、プール読み出し制御手段２８、プールデータ削除手段２９（図２には図示せず）等が構築される。
【００３６】
そして、複数の磁気ディス装置１４ａ乃至１４ｆには、ＲＡＩＤ制御部１４の制御の下に論理的に独立したボリューム、具体的な例としては、図２の機能ブロック図に示される２つのマスタ・ボリューム（ＬＶ０）２１，２４、２つのスナップショット・ボリューム（ＬＶ１）２２，２５、及び１つの共有プール・ボリューム（ＬＶ２）２３が構成される。
マスタ・ボリューム２１，２４は、複製元のデータを格納するボリュームであり、スナップショット・ボリューム２２，２５は、マスタ・ボリュームの複製ボリュームであり、そして共有プール・ボリューム２３は、複製データの実際の格納先のボリュームである。
【００３７】
ＣＰＵ１１にソフトウェア的に構築されるデータ複製制御手段２６は、データの複製や、複製したデータへのアクセスの制御、すなわち、マスタ・ボリューム２１，２４からスナップショット・ボリューム２２，２５への複製データを管理する手段である。アドレス変換手段２７は、複製したデータの格納先の制御、すなわち、スナップショット・ボリューム２２，２５から共有プール・ボリューム２３へのデータ記憶を管理する手段である。プール読み出し制御手段２８は、この発明の特徴部分を構成するもので、後述する共有プール・ボリューム２３に格納されたデータの読み出しの制御、すなわち、共有プール・ボリューム２３の読み出し範囲を決定する手段である。プールデータ削除手段２９は、共有プール・ボリューム２３に格納されたデータの削除を制御する手段である。
【００３８】
データ複製制御手段２６は、図３に示すように、属性管理テーブル３１、ボリューム対応管理テーブル３２、差分管理テーブル３３及び格納ディレクトリ管理テーブル３４を有し、これらのテーブルは、制御用メモリ１２に設定される（図１）。
属性管理テーブル３１は、マスタ属性、スナップショット属性等のボリュームの属性を管理するテーブルである。ボリューム対応管理テーブル３２は、ボリューム間のスナップショット関係を保持するテーブルである。差分分管理テーブル３３は、マスタ・ボリュームとスナップショット・ボリュームとの差分を管理するテーブルである。格納ディレクトリ管理テーブル３４は、スナップショット・ボリュームが使用しているディレクトリの格納場所を管理するテーブルである。
【００３９】
アドレス変換手段２７は、図４に示すように、ディレクトリ４１及び割当管理テーブル４２を有する。ディレクトリ４１は、スナップショット・ボリュームの実データの格納アドレスを保持するアドレス保持手段である。割当管理テーブル４２は、共有プールボリュームの使用状況を管理するテーブルである。
上述したディレクトリ４１は、アドレス変換手段２７を構成する１つの構成要素とされているが、ディレクトリ４１は、論理ボリュームの中にデータとして記録されていてもよい。この構成の下では、格納ディレクトリ管理テーブル３４（図３）には、ディレクトリ番号ではなく、ディレクトリ４１が格納されているボリューム番号とボリューム内のアドレスとが格納される。
【００４０】
プール読み出し制御手段２８は、図５に示すように、プール読み出し範囲制御テーブル５１を有し、プール読み出し範囲制御テーブル５１は、スナップショット・ボリュームの実データを共有プールボリューム２３（図２）から読み出す際に使用され、スナップショット・ボリュームに発行された読み出し対象のスナップショット・ボリュームのページ番号と、読み出し対象のページ番号と磁気ディスクアレイ・サブシステム１０（図１及び図２）のディスク読み出しアクセス性能とにより決定されるスナップショット・ボリュームのディレクトリ検索範囲と、スナップショット・ボリュームの検索範囲とディレクトリ４１の格納内容とにより決定される共有プール読み出し範囲とを有する。
図５に示す例は、磁気ディスクアレイ・サブシステム１０の仕組みにより、１回のディスク読み出しで読み出し得る範囲を最大１６ページとする例である。磁気ディスクアレイ・サブシステム１０における１回のディスク読み出し範囲により、ディレクトリ検索範囲を増減させてもよい。
【００４１】
次に、図１乃至図８を参照して、この実施形態の動作について説明する。
説明の都合上、ＬＶ０とＬＶ１とにスナップショット関係を持たせているものとする。
先ず、スナップショット動作の事前準備を図６の参照の下に説明する。
磁気ディスクアレイ・サブシステム１０内に、共有プールボリューム２３が作成され、属性管理テーブル３１と割当管理テーブル４２とが初期化される（図６のステップＳ６１）。すなわち、属性管理テーブル３１のＬＶ２に共有プール属性を設定し、割当管理テーブル４２のＬＶ２に共有プールボリューム２３が未使用状態にあることを示す値０を設定する。
共有プールボリューム２３の記憶容量は、任意に決めてもよいが、複数のスナップショット・ボリューム２１のデータ格納先になることを考慮し、当面必要となるデータ量を見積もった上で作成することが望ましい。
【００４２】
次に、マスタ・ボリューム２１、２４と、マスタ・ボリューム２１、２４と同一記憶容量のスナップショット・ボリューム２２、２５とを作成する（図６のステップＳ６２）。複製データ記憶領域として機能するスナップショット・ボリューム２２、２５は、見かけ上、マスタ・ボリューム２１、２４と同一記憶容量を有しているが、スナップショット・ボリューム２２、２５の実際のデータ格納先は共有プールボリューム２３になるので、スナップショット・ボリューム２２、２５自身が記憶領域を消費することはない。つまり、スナップショット・ボリューム２２、２５は、磁気ディスクアレイ・サブシステム１０内に仮想的に構築されたボリュームに過ぎず、実質的な記憶容量を持たない。
また、マスタ・ボリューム２１は、この段階で作成してもよいし、既に存在するボリュームを指定してもよい。既に存在するボリュームを指定するとき、スナップショット関係を持たないボリュームを指定してもよいし、既にスナップショット関係にあるマスタ・ボリューム２１、２４に対して、さらにスナップショット・ボリュームを関連付けてもよい。
【００４３】
次いで、スナップショット・コマンドを受信すると（図６のステップＳ６３）、格納ディレクトリ管理テーブル３４（図３）を参照して使用可能な空きディレクトリ４１（図４）を検索する（図６のステップＳ６４）。次いで、属性管理テーブル３１（図３）、ボリューム対応管理テーブル３２（図３）、差分管理テーブル３３（図３）、ディレクトリ４１（図４）及び格納ディレクトリ管理テーブル３４（図３）が初期化される（図６のステップＳ６５）。
すなわち、この初期化において、属性管理テーブル３１のＬＶ０にマスタ属性を設定し、ボリューム対応管理テーブル３２のＬＶ０とＬＶ１とがスナップショット関係にあることを示すように、ＬＶ０にＬＶ１を設定し、ＬＶ１にＬＶ０を設定する。差分管理テーブル３３の対応するＬＶに、スナップショット・ボリュームに格納するデータのイメージが、マスタ・ボリュームと同じであることを示す値０を設定する。
そして、ステップＳ６４で検索した使用可能なディレクトリを格納ディレクトリ管理テーブル３４に登録すると共に、ディレクトリ４１の初期化、すなわち、スナップショット・ボリュームに共有プールボリューム３４の割り当てがないことを示すｎｕｌｌ値（割り当てなし表示値）の設定を行う。
【００４４】
このような初期化処理後に、スナップショット・コマンドを受信すると、スナップショット・ボリュームは、その時点でのボリュームイメージを保持（格納）する。
【００４５】
スナップショット・コマンド開始コマンドを受信した後に発生するスナップショット・ボリュームへの読み出し処理について図７を参照して説明する。
読み出しコマンド（リード・コマンド）の処理が開始されると、属性管理テーブル３１（図３）を参照し（図７のＳ７１）、受信したコマンドがマスタ・ボリューム２１，２４へのコマンドであるのか又はスナップショット・ボリューム２２，２５へのコマンドであるのかを判断する（図７のＳ７２）。
【００４６】
そのコマンドがマスタ・ボリューム２１，２４へのものであると（図７のＳ７２のno）、マスタ・ボリューム２１，２４からデータを読み出し、処理を終了する（図７のステップＳ７６）。
受信したコマンドがスナップショット・ボリューム２２，２５へのものであると（図７のＳ７２のyes）、差分管理テーブル３３を参照し（図７のステップＳ７３）、スナップショット・ボリューム２２，２５の読み出し要求アドレスに共有プールボリューム２３に追い出されたデータがあるか否かを判断する（図７のステップＳ７４）。
スナップショット・ボリューム２２，２５にデータがあると判断されるならば（図７のステップＳ７４のyes）、ディレクトリ４１（図４）を参照し（図７のステップＳ７７）、データが格納されている共有プールボリューム２３（図２）のアドレスを取得する。ステップＳ７４の判断が否定となるときの処理については後述する。
【００４７】
取得されたアドレスに対応する読み出し対象のデータであって当該データが共有プールボリューム２３にあり、しかもそのデータが制御用メモリ１２（図１）上のキャッシュ部１２１に既に存在しているか否かを判断する（図７のステップＳ７８）。
その判断において、読み出し対象のデータが既にキャッシュ部１２１に既に存在しているとの判断となると（図７のステップＳ７８のyes）、当該データをキャッシュ部１２１から読み出して（図７のステップＳ８０）開始された読み出し処理を終了する。
【００４８】
上述のステップＳ７８の判断が否定となる、すなわち、読み出し対象となっている共有プールボリュームのデータがキャッシュ部１２１に存在しないならば（図７のステップＳ７８のno）、プール読み出し範囲テーブル５１（図５）の作成を行い、共有プールボリューム２３（図２）の読み出し範囲を決定する（図７のステップＳ７９）。この決定については詳細に後述する。
スナップショット・ボリューム２２，２５のディレクトリ検索範囲が決まったら、読み出し対象のスナップショット・ボリューム２２，２５が使用しているディレクトリ４１（図４）を参照し、共有プール読み出し範囲を決定する。この共有プール読み出し範囲の決定方法についても後述する。
【００４９】
こうして共有プール読み出し範囲が決まったら、その範囲のデータを共有プールボリューム２３から読み出して開始された読み出し処理を終了する（図７のステップＳ７６）。このとき読み出される上記範囲のデータは、キャッシュ部（図１）に格納される。これにより、その後に発行される読み出しコマンドについてのディスクの読み出しを行うことなく、キャッシュ部１２１にあるデータを上位装置（ホスト）へ転送するだけで読み出し処理を終了することができる。
また、上記範囲のデータの中に、上位装置から読み出し対象に指定されていないが、スナップショット・ボリューム２２、２５の複製データに対応するデータがあるならば、そのデータを破棄する。
【００５０】
上述した処理ステップＳ７４の判断において、データがスナップショット・ボリューム２２，２５にないとの判断になるときは（図７のステップＳ７４のno）、ボリューム対応管理テーブル３２（図３）を参照し、スナップショット・ボリューム２２，２５と対になるマスタ・ボリューム２１，２４からデータを読み出し、開始された読み出し処理を終了する。
【００５１】
上述したステップＳ７９での共有プールボリューム２３の読み出し範囲の決定について以下に説明する。
共有プールボリューム２３の読み出し範囲を決定する処理が開始されると、格納ディスプレイ管理テーブル３４（図３）及びディレクトリ４１（図４）を参照して読み出し対象となるスナップショット・ボリューム２２，２５の実データが格納されている共有プールボリューム２３（図２）のアドレスを取得し、それをプール読み出し範囲制御テーブル５１（図５）の共有プール読み出し範囲に設定する（図８のステップＳ８１）。
【００５２】
次に、読み出しコマンドの対象となっているスナップショット・ボリュームのページ番号と磁気ディスクアレイ・サブシステム１０のディスク読み出し能力とからスナップショット・ボリューム２２，２５のディレクトリ検索範囲を定め、プール読み出し範囲テーブル５１に設定する。この実施形態では、一回のディスク読み出し能力を１６ページとしている。
【００５３】
次に、プール読み出し範囲制御テーブル５１のスナップショット・ボリュームのディレクトリ検索範囲の領域に対して１ページずつ図８のステップＳ８２乃至ステップＳ８４の処理を行い、共有プール読み出し範囲の再設定を行う。
この処理において、先ず、ディレクトリ検索範囲の検索に入ってそのディレクトリに値が設定されているか又はその値がnullとなっているかを判断する（図８のステップＳ８２）。ディレクトリの値がnullであるならば（図８のステップＳ８２のyes）、ステップＳ８５へ進む。
ディレクトリに値が設定されていると（図８のステップＳ８２のno）、検索中のディレクトリの値と既に設定されている共有プール読み出し範囲とを比較し、両者の値が１回のディスク読み出しで読み出し得る範囲にあるか否かを判断する（図８のステップＳ８３）。例えば、１回のディスク読み出しにおいて、１６ページの範囲の読み出しができる磁気ディスクアレイ・サブシステム１０であれば、隣接した１６ページ以内に両者の値が設定されていることを判定の材料とする。
【００５４】
ステップＳ８３において、１回のディスク読み出しで両者のデータの読み出しが不可能であると判断されると（図８のステップＳ８３のno）、ステップＳ８５へ進む。
ステップＳ８３において、１回のディスク読み出しで両者のデータの読み出しが可能であると判断されると（図８のステップＳ８３のyes）、現在設定されている共有プール読み出し範囲と現在検索中のディレクトリの値とにより両方のデータの読み出しができるように共有プール読み出し範囲を再設定（拡張）する（図８のステップＳ８４）。
【００５５】
この再設定後に、上述したステップＳ８２及びステップＳ８３から処理が進んだときと同様に、ステップＳ８５の処理を行う。このステップＳ８５の処理では、検索範囲に指定されたディレクトリ領域（規定ページ分）の検索が終了したか否かの判断を行う。
検索が行われていないディレクトリがあれば（図８のステップＳ８５のno）、ステップＳ８２へ戻り、次のディレクトリに対する検索を行う。ステップＳ８５において、すべてのディレクトリについての検索が終了したと判断されると（図８のステップＳ８５のyes）、読み出し処理を終了する。
【００５６】
上述したように、スナップショット・ボリュームへの読み出しコマンドが発行されて共有プール・ボリュームからの実データの読み出しを行う場合に、従来においては、ディレクトリにより読み出し対象の実データのみを特定し、その実データのみを共有プール・ボリュームから読み出してホストへ転送していたのをこの実施形態では次のようにしたことにその特徴がある。
すなわち、プール読み出し制御手段２８により読み出し対象の実データ付近に同一スナップショット・ボリュームが使用している実データがあるか否かを調べ、その結果その実データがあることが判明すれば、ディスク読み出しの読み出し範囲を拡張する。拡張された読み出し範囲にある上記両方のデータを１回のディスク読み出し処理でディスクからキャッシュ部に読み出す。
【００５７】
このようにして、上記拡張された読み出し範囲内の、読み出しコマンドで指定された実データを含む実データがキャッシュ部に読み出されているから、この読み出し後に発行される読み出しコマンドについてはディスクの読み出しを行うことなく、キャッシュ部にあるデータをホストへ転送することができる。
【００５８】
このように、この実施形態の構成によれば、スナップショット・ボリュームへの読み出しコマンドが発行されて共有プール・ボリュームからの実データの読み出しを行う場合に、プール読み出し制御手段により読み出し対象の実データ付近に同一スナップショット・ボリュームが使用している実データがあるか否かを調べ、その実データがあるならば、ディスク読み出しの読み出し範囲を拡張して１回のディスク読み出し処理で両方のデータをディスクからキャッシュ部に読み出すようにしているから、上記読み出し範囲のデータを１回で読み出すことができ、スナップショット・ボリュームへの読み出しアクセス性能を向上させることができる。
また、上記読み出し範囲のデータをキャッシュ部へ読み出すことで、この読み出し後に発行される読み出しコマンドについてはディスクの読み出しを行わずにそのデータを読み出し要求部へ転送することができる。
【００５９】
以上、この発明の実施例を、図面を参照して詳述してきたが、この発明の具体的な構成は、これらの実施例に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもそれらはこの発明に含まれる。
例えば、上記実施形態では、複数の磁気ディス装置１４ａ乃至１４ｆに、ＲＡＩＤ制御部１４の制御の下に２つのマスタ・ボリューム２１，２４、２つのスナップショット・ボリューム２２，２５、及び１つの共有プール・ボリューム２３が構成される例について説明したが、これらのボリュームの個数には制限はない。例えば、ＲＡＩＤ制御部１４の制御の下に、複数の磁気ディス装置に跨って見かけ上単一のボリュームを設けることも、また、１つの磁気ディスク装置にパーティションを設定し、見かけ上複数のボリュームを１つの磁気ディスク装置内に設けることもできる。
【００６０】
また、ディスク読み出しの読み出し範囲を拡張して上記読み出し範囲内のデータをディスクからキャッシュ部に１回のディスク読み出し処理で読み出す例について説明したが、これに限らず、その回数を増やしてもよい。
また、各ボリュームを磁気ディスクに作成する例を示したが、それらを半導体ディスクに作成するようにしてもよい。
【産業上の利用可能性】
【００６１】
ここに開示しているデータ格納方法及びその装置は、データの格納時にそのデータが分散されて格納されることがある各種のデータ格納装置で利用し得る。
【図面の簡単な説明】
【００６２】
【図１】この発明の実施形態１であるディスクアレイ・サブシステムのハードウェア構成を示す図である。
【図２】同ディスクアレイ・サブシステムの機能ブロック図である。
【図３】同機能ブロック図内のデータ複製制御手段の構成を示す図である。
【図４】同機能ブロック図内のアドレス変換手段の構成を示す図である。
【図５】同機能ブロック図内のプール読み出し制御手段の構成を示す図である。
【図６】上記ディスクアレイ・サブシステムの複製準備動作を示すフローチャートである。
【図７】同ディスクアレイ・サブシステムのスナップショット・ボリュームへの読み出しコマンドの処理手順を示すフローチャートである。
【図８】同ディスクアレイ・サブシステムのプール読み出し制御手段の処理手順を示すフローチャートである。
【図９】従来のディスクアレイ・サブシステムにおけるスナップショット動作の従来例の機能ブロックである。
【図１０】従来例のデータ複製制御手段の機能ブロック図である。
【図１１】従来例のアドレス変換手段の機能ブロックである。
【図１２】従来例の複製準備の動作手順を示すフローチャートである。
【図１３】従来例の書込みコマンドの動作手順を示すフローチャートである。
【図１４】従来例の読み出しコマンドの動作手順を示すフローチャートである。
【符号の説明】
【００６３】
１０      ディスクアレイ・サブシステム（データ処理システムの一部）
１４a乃至１４f      磁気ディスク装置（データ格納装置の例）
１７      ホストコンピュータ（データ処理システムの残部）
２２、２５      スナップショット・ボリューム（データ格納装置の例、複製データ格納領域）
２３      共有プール・ボリューム（データ格納装置の例、実データ格納領域）
２６      データ複製制御手段（作成手段）
２７      アドレス変換手段（記憶手段の一部、生成手段）
２８      プール読み出し制御手段（参照手段、設定手段）
４１      ディレクトリ（記憶手段の残部）
【図１】
0004915365.tif 000002
【図２】
0004915365.tif 000003
【図３】
0004915365.tif 000004
【図４】
0004915365.tif 000005
【図５】
0004915365.tif 000006
【図６】
0004915365.tif 000007
【図７】
0004915365.tif 000008
【図８】
0004915365.tif 000009
【図９】
0004915365.tif 000010
【図１０】
0004915365.tif 000011
【図１１】
0004915365.tif 000012
【図１２】
0004915365.tif 000013
【図１３】
0004915365.tif 000014
【図１４】
0004915365.tif 000015