| 【発明の名称】 |
ディスクアレイのディスク障害復旧方法 |
| 【発明者】 |
【氏名】八木沢 育哉
【氏名】味松 康行
【氏名】松並 直人
【氏名】萬年 暁弘
【氏名】▲高▼本 賢一
|
| 【要約】 |
【課題】高可用性が求められるディスクアレイシステムにおいては、障害ディスク交換後のパリティ再構築を通常運用と並行して行う必要がある。パリティ再構築時には、交換したディスク以外の同パリティグループの全ディスクからデータを読み出す必要があるため通常アクセス性能が低下する。また、パリティグループを形成するRAID5などの構成を表すnD+1Pにおいて、データドライブ数nが増加すると性能がさらに悪化する。
【解決手段】障害ディスクの復旧時に行うパリティ再構築を、パリティ冗長性を用いたパリティ生成に代えて、スナップショット用ミラー構成の同じ位置にあるディスクからのデータコピーによって実施する。nD+1Pのnにかかわらず1台のディスクからデータを読み出すことで、パリティ再構築中の通常アクセス性能低下を抑止できる効果がある。 |
【特許請求の範囲】
【請求項1】 コンピュータと、複数の記憶媒体を持つ外部記憶装置とを備える計算機システムであって、外部記憶装置が、ミラー元LUと、ミラー先LUと、コンピュータがデータ書き込みを要求したときにミラー元LUとミラー先LUに書き込んで二重化するLUミラーサブプログラムと、ミラー元LUとミラー先LUの二重化を停止しているときにミラー元LUに対するデータ更新を監視する非ミラー時更新監視サブプログラムと、ミラー元LUに対する前記データ更新の更新位置を記録する非ミラー時更新位置管理サブプログラムと、障害ディスクの復旧を行うディスク障害復旧サブプログラムと、前記記録された更新位置のデータをミラー元LUからミラー先LUにコピーすることで内容を一致させるミラー再同期サブプログラムとを備え、ディスク障害復旧サブプログラムは、ミラー先LUのディスク交換時にはミラー元LUの同じ位置にあるディスクからのデータコピーによって交換したディスクの内容を復元するよう動作することを特徴とする計算機システム。 【請求項2】 コンピュータと、複数の記憶媒体を持つ外部記憶装置とを備える計算機システムであって、外部記憶装置が、ミラー元LUと、ミラー先LUと、コンピュータがデータ書き込みを要求したときにミラー元LUとミラー先LUに書き込んで二重化するLUミラーサブプログラムと、ミラー元LUとミラー先LUの二重化を停止しているときにミラー元LUに対するデータ更新を監視する非ミラー時更新監視サブプログラムと、ミラー元LUに対する前記データ更新の更新位置を記録する非ミラー時更新位置管理サブプログラムと、障害ディスクの復旧を行うディスク障害復旧サブプログラムと、前記記録された更新位置のデータをミラー元LUからミラー先LUにコピーすることで内容を一致させるミラー再同期サブプログラムとを備え、ディスク障害復旧サブプログラムは、ミラー元LUのディスク交換時にはミラー先LUの同じ位置にあるディスクからのデータコピーによって交換したディスクの内容を復元するよう動作することを特徴とする計算機システム。 【請求項3】 請求項1記載において、ミラー先LUは複数であることを特徴とする計算機システム。 【請求項4】 請求項2記載において、ミラー先LUは複数であることを特徴とする計算機システム。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は主として、コンピュータの外部記憶装置システムにおけるディスク障害復旧方法に関するものである。 【0002】 【従来の技術】(1)ディスクアレイのディスク障害復旧方法ディスクアレイシステムは、RAID(Redundant Arrays of Inexpensive Disks)とも呼ばれ、複数のディスク装置をアレイ状に配置した構成をとり、ホスト装置(以下ホストと略する)からのリード要求(データの読み出し要求)およびライト要求(データの書き込み要求)をディスク装置の並列動作によって高速に処理するとともに、データに冗長データを付加することによって信頼性を向上させた記憶装置である。ディスクアレイシステムは、冗長データの種類と構成により5つのレベルに分類されている(論文:"A Case for Redundant Arrays of Inexpensive Disks (RAID)", David A.Patterson, Garth Gibson, and Randy H.Katz, Computer Science Division Department of Electrical Engineering and Computer Sciences, University of California Berkeley)。 【0003】上記のようなディスクアレイを実現するためには、ホストからのリード/ライト要求を各ディスク装置へのリード/ライト要求に変換し、ライト時にはデータを各ディスク装置へ分散し、リード時には各ディスク装置からデータを集合するデータ分散・集合制御を行う必要がある。このような制御をディスクアレイ制御と呼ぶこととする。 【0004】ディスクアレイのうちパリティを付加している例えばRAID5レベルでは、1台のディスク障害が発生しても他のディスクとのパリティ保証により、ディスクの内容を復旧することができる。ディスクを復旧する場合、障害があったディスクを交換し、パリティグループを構成する他のディスクからデータを読み出し、XOR演算(排他的論理和)を施した後、演算結果を交換したディスクに書き込む。 【0005】(2)スナップショットのための二重化一般にハードディスクなどのコンピュータの外部記憶装置に記録されたデータは、装置の障害、ソフトウェアの欠陥、誤操作などによりデータを喪失した場合に、喪失したデータを回復できるように定期的にテープなどにコピーして保存しておくバックアップが必要である。その際、コピー作業中にデータが更新され、データに不整合が生じるとバックアップとして意味をなさないため、コピー作業中はデータの整合性を保証する必要がある。 【0006】バックアップされるデータの整合性を保証するためには、データにアクセスするバックアッププログラム以外のプログラムを停止すればよいが、高可用性が要求されるシステムではプログラムを長時間停止させることができない。そのため、バックアップ中にプログラムがデータを更新することを妨げず、なおかつバックアップ開始時点でのデータの記憶イメージを作成する仕組みを提供する必要がある。ここで、ある時点でのデータの記憶イメージをスナップショットと呼び、指定された時点のスナップショットを作成しつつデータの更新が可能な状態を提供する仕組みをスナップショット管理方法と呼ぶ。また、スナップショット管理方法によりスナップショットを作成することをスナップショットの取得と呼び、スナップショット取得の対象となったデータをオリジナルデータと呼ぶ。また、スナップショットを作成した状態をやめることをスナップショットの削除と呼ぶ。 【0007】従来のスナップショット管理方法の一つとして、データの二重化による方法が挙げられる。 【0008】この方法では、スナップショットを取得していない通常の状態において、コンピュータ上のプログラムがすべてのデータを2つの記憶領域に二重化(ミラー)する。スナップショットを取得する時は二重化を停止して2つの記憶領域を独立な領域に分離し、1つの領域をオリジナルデータ、もう1つの領域をスナップショットとして提供する。 【0009】スナップショットを取得し二重化を停止している間は、オリジナルデータの記憶領域に対するデータの更新を許可するとともに、データ更新が発生した場合は更新した位置を記録しておく。スナップショット削除時には、データの二重化を再開するとともに、2つの記憶領域の間で内容が一致していない更新データを更新位置の記録をもとにオリジナルデータの記憶領域からスナップショットとして提供していた記憶領域にコピーする(ミラー再同期化)。コンピュータ上のプログラムでデータを二重化する方法は、例えば米国特許5,051,887に示されている。 【0010】 【発明が解決しようとする課題】ディスク交換後のパリティ再構築時には、交換したディスク以外の同パリティグループの全ディスクからデータを読み出す必要があるため通常アクセス性能が低下するという課題がある。また、パリティグループを形成するRAID5などの構成を表すnD+1Pにおいて、データドライブ数nが増加すると性能がさらに悪化するという課題がある。 【0011】データの二重化によるスナップショット管理方法では、ミラー再同期化時において、更新/参照をする通常アクセスと更新データのコピーアクセスがオリジナルデータの記憶領域に集中し、通常アクセスの性能が低下する。ミラー再同期化にかかる時間は、スナップショットを取得して二重化を停止している間に更新されたデータ量に比例するので、更新アクセスが単位時間あたり同じ回数発生すると仮定した場合、ミラー再同期化にかかる時間は二重化の停止時間に比例して大きくなる。ディスク交換後のパリティ再構築と並行してバックアップをとる場合、スナップショットを取得して二重化を停止している時間が長く、通常アクセスの性能が低下するミラー再同期化時間が長くなるという課題がある。 【0012】本発明の第1の目的は、スナップショット取得のために二重化運用しているディスクアレイにおいて、ディスク交換後のパリティ再構築時の通常アクセス性能低下を抑止するディスク障害復旧方法を提供することである。 【0013】本発明の第2の目的は、スナップショット取得のために二重化運用しているディスクアレイにおいて、二重化を停止している期間におけるディスク交換後のパリティ再構築時間を短縮することで、ミラー再同期化中の更新データのコピー量を削減し、性能が低下するミラー再同期化時間を短縮するディスク障害復旧方法を提供することである。 【0014】本発明の第3の目的は、第1、第2の目的に加えて、パリティグループを形成するRAID5などのディスク構成を表すnD+1Pにおいて、データドライブ数nの増加による性能低下を抑止するディスク障害復旧方法を提供することである。 【0015】 【課題を解決するための手段】前記第1の目的を達成するために本発明は、スナップショット取得のために二重化運用しているディスクアレイにおいて、障害ディスクの復旧時に行うパリティ再構築を、パリティ冗長性を用いたパリティ生成に代えて、スナップショット用ミラー構成の同じ位置にあるディスクからのデータコピーによって実施するディスク障害復旧サブプログラムを設ける。ディスク交換後のパリティ再構築に関わるディスクアクセス回数を削減することで、通常アクセス性能の低下を抑止することができる。 【0016】また、前記第2の目的を達成するために本発明は、スナップショット取得のために二重化運用しているディスクアレイにおいて、前記同様のディスク障害復旧サブプログラムを設ける。二重化を停止している期間におけるディスク交換後のパリティ再構築時間を短縮することで、ミラー再同期化中の更新データのコピー量を削減し、性能が低下するミラー再同期化時間を短縮することができる。 【0017】また、前記第2の目的を達成するために本発明は、スナップショット取得のために二重化運用しているディスクアレイにおいて、前記同様のディスク障害復旧サブプログラムを設ける。パリティグループを形成するRAID5などのディスク構成を表すnD+1Pにおいて、nの数によらず1台のディスクからのコピーとなるため、データドライブ数nの増加による性能低下を抑止することができる。 【0018】 【発明の実施の形態】本発明の第1の実施形態は、スナップショット取得のために二重化運用しているディスクアレイにおいて、ディスク交換後のパリティ再構築に関わるディスクアクセス回数を削減することで、通常アクセス性能の低下を抑止するためのものである。 【0019】また、二重化を停止している期間におけるディスク交換後のパリティ再構築時間を短縮することで、ミラー再同期化中の更新データのコピー量を削減し、性能が低下するミラー再同期化時間を短縮するためのものである。 【0020】また、ディスク交換後のパリティ再構築に関わるディスクアクセス回数を削減することで、パリティグループを形成するRAID5などのディスク構成を表すnD+1Pでのデータドライブ数nの増加による性能低下を抑止するためのものである。 【0021】なお、本発明ではスナップショットの利用例として、バックアップをとりあげるが、OLAP(OnLine Analytical Processing)やシステムテスト等の他の目的においても利用が可能である。 【0022】(1)構成の説明本発明の第1の実施形態のシステム構成を図1を用いて説明する。図1において、コンピュータ100とディスクアレイ200が、SCSIインタフェース140、240を介してSCSIバス300で接続されている。コンピュータ100のメモリ120には、データベースプログラム126、バックアッププログラム127があり、コンピュータ100を制御するCPU110によって実行される。ディスクアレイ200には、ディスクコントローラ250によって制御されるディスク群251〜252があり、またメモリ220内にはスナップショット管理プログラム221があり、CPU210によって実行される。ディスク群251はディスク271〜275を有し、ディスク群252はディスク281〜282を有し、各ディスク群は各々がパリティ付きのストライピングされたアレイ構成をとる。本実施形態では、ディスク群251〜252内のディスク数を5としているが、それぞれ3つ以上のディスクから構成されていればよい。 【0023】各ディスク群251〜252内の記憶領域は、SCSIの論理ユニットであるLU(Logical Unit)としてコンピュータ100からアクセスされる。各ディスク群251〜252に対応する各記憶領域をそれぞれLU261〜262とする。各ディスク群251〜252内のLUはそれぞれ複数であってもよい。本実施形態では、ディスクアレイ220内のスナップショット管理プログラム221が、LU261とLU262を二重化して管理し、LU261をオリジナルデータを持ったミラー元LUとし、LU262をオリジナルデータのミラーであるミラー先LUとする。LU262が、スナップショットとして使用するLUである。 【0024】次に、コンピュータ100内のプログラムについて説明する。 【0025】データベースプログラム126は、実行中にミラー元LUであるLU261にアクセスし、また、データ更新を制御してLU261内のデータの整合性を保証するバックアップモードに切替える機能を持つ。バックアップモードへはユーザまたはバックアッププログラム127からの指示により遷移する。バックアッププログラム127は、ユーザからの指示によってスナップショットを保存したLU262からテープ等にバックアップするためのデータを読み出す機能と、ディスクアレイ200にSCSIのModeSelectコマンドを発行する機能と、データベースプログラム126にバックアップモードの有効化、無効化を指示する機能を持つ。 【0026】次に、ディスクアレイ200内のプログラム、および、管理表について説明する。 【0027】ディスクアレイ200のスナップショット管理プログラム221は、コンピュータ100からの要求に応じてディスクコントローラ250にディスクアクセスを指示するディスクアクセスサブプログラム230と、1つのLUに対する更新を二重化してあらかじめ指定された別のLUにも適用し、2つのLUに同じ内容を書き込むLUミラーサブプログラム231を持つ。ディスクアクセスサブプログラム230は、コンピュータ100からのリード/ライト要求を各ディスク271〜275、281〜285へのリード/ライト要求に変換するディスクアレイ制御を行う。LUミラーサブプログラム231は、LU261に対するアクセスをLU262に二重化する。 【0028】また、スナップショット管理プログラム221は、二重化を停止しているとき(非ミラー時)にミラー元LUに対する更新を検出する非ミラー時更新監視サブプログラム234と、その更新位置を後述する更新/不整合位置管理表222に記録する非ミラー時更新位置管理サブプログラム235と、ミラー再同期化を行う際にミラー元LUの更新部分をミラー先LUにコピーするミラー再同期サブプログラム232と、障害ディスクを交換した後にパリティ付きのストライピングされたアレイ構成に復旧するディスク障害復旧サブプログラム233とを持つ。更新/不整合位置管理表222は、ミラー元LUとミラー先LUのデータ内容の管理に用い、非ミラー時に更新されたミラー元LUの更新位置と、ディスク障害後の交換したディスクにおいて同一LU内でのパリティが不整合となっている位置を記録するものである。 【0029】更新/不整合位置管理表222は、図2に示すようなビットマップとし、ミラー元LU内のすべてのLBAセット番号、および、LBAセット番号に付随する更新ビット、ミラー元不整合ビット、ミラー先不整合ビットから成る。LBAセットは、LUの全領域に対して、1個以上の同数のLBA(Logical Block Address)を単位として先頭から分割していったときの個々の集合であり、LBAセット番号は、LBAの先頭側から各LBAセットに通し番号をつけたものである。 【0030】ディスクアレイのデータ分散により、LBAセットは各ディスクに対し先頭側から1個ずつ分配されていくものとし、各ディスク内の同じ位置におけるLBAセットの組に対してパリティグループ番号を付記する。図2の例では、パリティグループ番号0は、LBAセット番号0〜4により構成されている。また、本実施形態ではディスク5台に対してデータ分散を行うものとし、各ディスクのLBAセットの組を表すディスクセット番号を付記する。図2の例では、ディスクセット0は、LBAセット番号0、5、10、15により構成されている。 【0031】更新ビットは、非ミラー時にミラー元LUのLBAセットが更新されたかどうかを示し、「更新」、「非更新」に応じてそれぞれ1、0を指定する。更新ビットの初期設定値は0である。図2の例では、LBAセット番号1の領域のみが非ミラー時に更新されている状態を示す。 【0032】ミラー元不整合ビットは、ミラー元LUが交換されたときに同一LU内の他のディスクとパリティの整合性がとれているかどうかを示し、「不整合」「整合」に応じてそれぞれ1、0を指定する。ミラー元不整合ビットの式設定値は0である。 【0033】ミラー先不整合ビットは、ミラー先LUが交換されたときに同一LU内の他のディスクとパリティの整合性がとれているかどうかを示し、「不整合」「整合」に応じてそれぞれ1、0を指定する。ミラー先不整合ビットの式設定値は0である。図2の例では、ミラー先LUにおいて、パリティグループ番号1〜3のディスクセット0の領域が他のディスクとのパリティ不整合となっている状態を示す。パリティグループ番号0のディスクセット0の領域は、後述するディスク障害復旧方法により他のディスクとのパリティ整合性がとれていることを示す。 【0034】(2)スナップショットの取得/削除ミラー元LUであるLU261のスナップショットをミラー先LUであるLU262として提供する場合を例にとり、スナップショット取得/削除時におけるバックアッププログラム127とスナップショット管理プログラム221の動作を図3のフローチャートを用いて説明する。 【0035】まず、コンピュータ100のバックアッププログラム127がデータベースプログラム126に指示を与え、バックアップモードを有効化してスナップショットを取得するデータの整合性を保証する(ステップ2000)。次に、バックアッププログラム127は、ディスクアレイ200にスナップショットを取得するためのModeSelectコマンドを発行する(ステップ2001)。ディスクアレイ200のスナップショット管理プログラム221は、ModeSelectコマンドを受信すると(ステップ3000)、非ミラー時更新監視サブプログラム234と非ミラー時更新位置管理サブプログラム235を有効化し、LU261の更新位置記録を開始する(ステップ3001)。以降、LU261が更新されると、更新/不整合位置管理表222における更新されたLBAを含むLBAセットの更新ビットに1を設定し、更新があったことを記録する。次に、スナップショット管理プログラム221は、LUミラーサブプログラム231を無効化し、LU261とLU262の二重化を停止する(ステップ3002)。これにより、ミラー元LUであるLU261に対する更新がミラー先LUであるLU262に反映されなくなる。次に、スナップショット管理プログラム221は、ModeSelectコマンドの終了ステータスをコンピュータ100のバックアッププログラム127に送信する(ステップ3003)。バックアッププログラム127は、ModeSelectコマンドの終了ステータスを受信すると(ステップ2002)、データベースプログラム126に指示を与え、バックアップモードを無効化する(ステップ2003)。 【0036】次に、バックアッププログラム127は、ディスクアレイ200に対し、LU263にスナップショット削除を指示するModeSelectコマンドを発行する(ステップ2004)。ディスクアレイ200のスナップショット管理プログラム221は、ModeSelectコマンドを受信すると(ステップ3005)、LUミラーサブプログラム231を有効化し、LU261とLU262の二重化を再開する(ステップ3006)。これにより、LU261に対する更新がLU262にも反映される。次に、スナップショット管理プログラム221は、非ミラー時更新監視サブプログラム234と非ミラー時更新位置管理サブプログラム235を無効化し、LU261の更新位置記録を停止する(ステップ3007)。以降、更新/不整合位置管理表222の更新ビットを非ミラー時更新位置管理サブプログラム235が変更しなくなる。次に、スナップショット管理プログラム221は、ミラー再同期サブプログラム232を有効化し、更新/不整合位置管理表222を参照して、LU261とLU262で内容が一致しない部分をLU261からLU262にコピーする(ステップ3008)。次に、スナップショット管理プログラム221は、ミラー再同期サブプログラム232を無効化し(3009)、ModeSelectコマンドの終了ステータスをコンピュータ100のバックアッププログラム127に送信する(ステップ3010)。バックアッププログラム127は、ModeSelectコマンドの終了ステータスを受信し動作を終了する(ステップ2005)。 【0037】ここで、ステップ3008でLU261からLU262へのデータコピーを行うミラー再同期サブプログラム232の動作を図4のフローチャートを用いて説明する。まず、ミラー再同期サブプログラム232が、更新/不整合位置管理表222の更新ビットに更新記録として1があるかどうかを調べる(ステップ1001)。もし、更新記録である1がなければミラー再同期化が完了したので処理を終了する(ステップ1002)。更新記録があれば、該当記録位置の更新を抑止し(ステップ1003)、該当記録位置のデータをミラー元LUであるLU261からミラー先LUであるLU262にコピーする(ステップ1004)。データのコピーは、LU261を含むディスク群251のディスク271〜275のいずれかにREADコマンドを発行して指定したLBAのデータを読み出し、LU262を含むディスク群252のうちディスク群251のREADコマンドを発行したディスクに対応するディスク281〜285のいずれかにWRITEコマンドを発行してLU261に指定したLBAと同じLBAに読み出したデータを書きこむことで実施する。データのコピーは、COPYコマンドを用いてもよい。次に、ミラー再同期サブプログラム232は、該当記録位置の更新抑止を解除し(ステップ1005)、更新/不整合位置管理表222の該当する更新ビットに0を設定して更新記録を削除し(ステップ1006)、ステップ1001に戻る。 【0038】以上が、スナップショット取得/削除時におけるバックアッププログラム127とスナップショット管理プログラム221の動作である。コンピュータ100のバックアッププログラム127は、ステップ2003〜ステップ2004の間でスナップショットを取得したLU262の読み出しを行うことができる。 【0039】(3)ディスク障害復旧方法本発明では、障害ディスクを交換して新しくセットしたディスクに対するパリティ再構築を、パリティの冗長性を利用して行うことに代えて、ミラー化された対となるディスクからコピーすることで行う。対となるディスクとは、例えば、図1のディスク271〜275とディスク281〜285がこの順番でディスク群を形成していると想定するとディスク271とディスク281の関係が該当する。 【0040】本実施形態では、障害ディスクを交換した後のパリティ再構築について、スナップショット取得/削除動作のどの段階で行ったかにより、ミラーフェーズ、非ミラーフェーズ、再同期化フェーズの3フェーズに分けて説明する。非ミラーフェーズは、ミラー化がされていない図3のステップ3002開始からステップ3007終了までとする。再同期化フェーズは、更新されたデータをミラー元LUからミラー先LUにコピーしている図3のステップ3008開始からステップ3009終了までとする。ミラーフェーズは、ミラー化されている段階とし、非ミラーフェーズと再同期化フェーズ以外の全範囲とする。 【0041】また、各フェーズの間に、ミラー元LUとミラー先LUのどちらのディスクを交換したかについても場合分けする。 【0042】なお、障害ディスクを交換した後のパリティ再構築は、ディスクアレイ200のスナップショット管理プログラム221がディスク障害復旧サブプログラム233を有効化することによって行い、コンピュータ100からの指示とは独立して実施することができる。 【0043】(3−1)ミラーフェーズミラーフェーズにおけるディスク障害復旧サブプログラム233の動作を図5のフローチャートを用いて説明する。ミラーフェーズにおいては、ミラー元LUとミラー先LUの内容が同じであり、ミラー元LUとミラー先LUのどちらのディスクを交換した場合でもディスク障害復旧サブプログラム233の動作が同じであるので、ミラー先LUのディスクを交換した場合を例にとる。ここで、障害で交換したディスクを図1のミラー先LUであるディスク群252のディスク281と想定する。ミラー化されている場合は、ミラー元LUであるディスク群251のディスク271と同じデータがディスク281に格納されることになる。まず、ディスクが交換されると、ディスク障害復旧サブプログラム233が、交換したディスク281に対応する更新/不整合位置管理表222のミラー先不整合ビットをすべて1に設定する(ステップ4001)。次に、ディスク障害復旧サブプログラム233は、更新/不整合位置管理表222のミラー先不整合ビットに不整合記録として1があるかどうかを調べる(ステップ4002)。もし、不整合記録である1がなければディスク281の障害復旧が完了しディスク群252のパリティは整合性がとれたので処理を終了する(ステップ4003)。不整合記録があれば、該当記録位置の更新を抑止し(ステップ4004)、更新/不整合位置管理表222のミラー元不整合ビットに不整合記録として1があるかどうかを調べる(ステップ4005)。もし、不整合記録である1がなければミラー元LUのパリティ整合性はとれているので、該当位置のデータをディスク271からディスク281にコピーする(ステップ4007)。不整合記録である1があればミラー元LUも障害復旧中でありパリティの整合性はとれていないので、ディスク281と同一ディスク群252の他のディスク282〜285からデータを読み出しパリティ演算によってデータを復元し、ディスク281の該当位置に書き込む(ステップ4006)。ステップ4007、または、ステップ4006終了後、ディスク障害復旧サブプログラム233は、更新/不整合位置管理表222のディスク281に該当する不整合ビットを0に設定して不整合記録を削除し(ステップ4008)、該当記録位置の更新抑止を解除し(ステップ4009)、ステップ4002に戻る。 【0044】以上が、ミラーフェーズにおけるディスク障害復旧サブプログラム233の動作である。 【0045】なお、ステップ4007におけるデータのコピーは、ディスク271にREADコマンドを発行して指定したLBAのデータを読み出し、ディスク281にWRITEコマンドを発行してディスク271に指定したLBAと同じLBAに読み出したデータを書きこむことで実施する。データのコピーは、COPYコマンドを用いてもよい。 【0046】スナップショット管理プログラム221は、ディスク障害復旧サブプログラム233動作中にコンピュータ100からデータ更新要求が来た場合、ミラー元LUとミラー先LUの両方に反映させるものとし、交換したディスクの不整合ビットを0にする。また、コンピュータ100からデータ読み出し要求が来た場合は、不整合ビットが0であるLUからデータを読み出す。両方のLUの不整合ビットが1である場合は、交換したディスク以外の全ディスクからデータを読み出しパリティ演算によって要求されたデータを復元し、コンピュータ100に送信する。 【0047】(3−2)非ミラーフェーズ非ミラーフェーズにおけるディスク障害復旧サブプログラム233の動作を図6のフローチャートを用いて説明する。非ミラーフェーズにおいては、ミラー元LUとミラー先LUの内容は一致していないが、ミラー元LUとミラー先LUのどちらのディスクを交換した場合でもディスク障害復旧サブプログラム233の動作が同じであるので、ミラー元LUのディスクを交換した場合を例にとる。ここで、障害で交換したディスクを図1のミラー元LUであるディスク群251のディスク271と想定する。 【0048】まず、ディスクが交換されると、ディスク障害復旧サブプログラム233が、交換したディスク271に対応する更新/不整合位置管理表222のミラー元不整合ビットをすべて1に設定する(ステップ5001)。次に、ディスク障害復旧サブプログラム233は、更新/不整合位置管理表222のミラー元不整合ビットに不整合記録として1があるかどうかを調べる(ステップ5002)。もし、不整合記録である1がなければディスク271の障害復旧が完了しディスク群251のパリティは整合性がとれたので処理を終了する(ステップ5003)。不整合記録があれば、該当記録位置の更新を抑止し(ステップ5004)、更新/不整合位置管理表222のミラー先不整合ビットに不整合記録として1があるかどうかを調べる(ステップ5005)。もし、不整合記録である1があればミラー先LUも障害復旧中でありパリティの整合性はとれていないので、ディスク271と同一ディスク群251の他のディスク272〜275からデータを読み出しパリティ演算によってデータを復元し、ディスク271の該当位置に書き込む(ステップ5006)。もし、不整合記録である1がなければ、更新/不整合位置管理表222の該当する更新ビットに更新記録として1があるかどうかを調べる(ステップ5007)。もし、更新記録である1があれば、該当位置のディスク271とディスク281のデータは異なるので、ディスク障害復旧サブプログラム233はディスク271と同一ディスク群251の他のディスク272〜275からデータを読み出しパリティ演算によってデータを復元し、ディスク271の該当位置に書き込む(ステップ5006)。もし、更新記録である1がなければ、該当位置のディスク271とディスク281のデータは同一となるべきなので、該当位置のデータをディスク281からディスク271にコピーする(ステップ5008)。 【0049】ステップ5006、または、ステップ5008終了後、ディスク障害復旧サブプログラム233は、更新/不整合位置管理表222のディスク271に該当する不整合ビットを0に設定して不整合記録を削除し(ステップ5009)、該当記録位置の更新抑止を解除し(ステップ5010)、ステップ5002に戻る。以上が、非ミラーフェーズにおけるディスク障害復旧サブプログラム233の動作である。 【0050】なお、ステップ5008におけるデータのコピーは、ディスク281にREADコマンドを発行して指定したLBAのデータを読み出し、ディスク271にWRITEコマンドを発行してディスク281に指定したLBAと同じLBAに読み出したデータを書きこむことで実施する。データのコピーは、COPYコマンドを用いてもよい。 【0051】スナップショット管理プログラム221は、ディスク障害復旧サブプログラム233動作中にコンピュータ100からデータ読み出し要求が来た場合、通常はミラー元LUからデータを読み出すが、更新ビットが0、ミラー先不整合ビットが0であるLBAセットに関してはミラー先LUから読み出してもよい。 【0052】 (3−3)再同期化フェーズ(ミラー先LU復旧) 再同期化フェーズにおけるミラー先LUに関わるディスク障害復旧サブプログラム233の動作を図7のフローチャートを用いて説明する。ここで、障害で交換したディスクを図1のミラー先LUであるディスク群252のディスク281と想定する。 【0053】まず、ディスクが交換されると、ディスク障害復旧サブプログラム233が、交換したディスク281に対応する更新/不整合位置管理表222のミラー先不整合ビットをすべて1に設定する(ステップ6001)。次に、ディスク障害復旧サブプログラム233は、更新/不整合位置管理表222のミラー先不整合ビットに不整合記録として1があるかどうかを調べる(ステップ6002)。もし、不整合記録である1がなければディスク281の障害復旧が完了しディスク群252のパリティは整合性がとれたので処理を終了する(ステップ6003)。不整合記録があれば、該当記録位置の更新を抑止し(ステップ6004)、更新/不整合位置管理表222のミラー元不整合ビットに不整合記録として1があるかどうかを調べる(ステップ6005)。もし、不整合記録である1がなければミラー元LUのパリティ整合性はとれているので、該当位置のデータをディスク271からディスク281にコピーし(ステップ6007)、更新/不整合位置管理表222の該当する更新ビットに0を設定して更新の有無にかかわらず更新記録を削除する(ステップ6008)。もし、不整合記録である1があればミラー元LUも障害復旧中でありパリティの整合性はとれていないので、ディスク281と同一ディスク群252の他のディスク282〜285からデータを読み出しパリティ演算によってデータを復元し、ディスク281の該当位置に書き込む(ステップ6006)。ステップ6008、または、ステップ6006終了後、ディスク障害復旧サブプログラム233は、更新/不整合位置管理表222のディスク281に該当する不整合ビットを0に設定して不整合記録を削除し(ステップ6006)、該当記録位置の更新抑止を解除し(ステップ6010)、ステップ6002に戻る。 【0054】以上が、再同期化フェーズにおけるミラー先LUに関わるディスク障害復旧サブプログラム233の動作である。 【0055】なお、ステップ6007におけるデータのコピーは、ディスク271にREADコマンドを発行して指定したLBAのデータを読み出し、ディスク281にWRITEコマンドを発行してディスク271に指定したLBAと同じLBAに読み出したデータを書きこむことで実施する。データのコピーは、COPYコマンドを用いてもよい。 【0056】 (3−4)再同期化フェーズ(ミラー元LU復旧) 再同期化フェーズにおけるミラー元LUに関わるディスク障害復旧サブプログラム233の動作を図8のフローチャートを用いて説明する。ここで、障害で交換したディスクを図1のミラー元LUであるディスク群251のディスク271と想定する。 【0057】まず、ディスクが交換されると、ディスク障害復旧サブプログラム233が、交換したディスク271に対応する更新/不整合位置管理表222のミラー元不整合ビットをすべて1に設定する(ステップ7001)。次に、ディスク障害復旧サブプログラム233は、更新/不整合位置管理表222のミラー元不整合ビットに不整合記録として1があるかどうかを調べる(ステップ7002)。もし、不整合記録である1がなければディスク271の障害復旧が完了しディスク群251のパリティは整合性がとれたので処理を終了する(ステップ7003)。不整合記録があれば、該当記録位置の更新を抑止し(ステップ7004)、更新/不整合位置管理表222のミラー先不整合ビットに不整合記録として1があるかどうかを調べる(ステップ7005)。もし、不整合記録である1があればミラー先LUも障害復旧中でありパリティの整合性はとれていないので、ディスク271と同一ディスク群251の他のディスク272〜275からデータを読み出しパリティ演算によってデータを復元し、ディスク271の該当位置に書き込む(ステップ7006)。もし、不整合記録である1がなければ、更新/不整合位置管理表222の該当する更新ビットに更新記録として1があるかどうかを調べる(ステップ7007)。もし、更新記録である1があれば、該当位置のディスク271とディスク281のデータは異なるので、ディスク障害復旧サブプログラム233はディスク271と同一ディスク群251の他のディスク272〜275からデータを読み出しパリティ演算によってデータを復元し、ディスク271の該当位置に書き込む(ステップ7006)。もし、更新記録である1がなければ、該当位置のディスク271とディスク281のデータは同一でよいので、該当位置のデータをディスク281からディスク271にコピーする(ステップ7008)。 【0058】ステップ7006、または、ステップ7008終了後、ディスク障害復旧サブプログラム233は、更新/不整合位置管理表222のディスク271に該当する不整合ビットを0に設定して不整合記録を削除し(ステップ7009)、該当記録位置の更新抑止を解除し(ステップ7010)、ステップ7002に戻る。以上が、再同期化フェーズにおけるミラー元LUに関わるディスク障害復旧サブプログラム233の動作である。 【0059】なお、ステップ7008におけるデータのコピーは、ディスク281にREADコマンドを発行して指定したLBAのデータを読み出し、ディスク271にWRITEコマンドを発行してディスク281に指定したLBAと同じLBAに読み出したデータを書きこむことで実施する。データのコピーは、COPYコマンドを用いてもよい。 【0060】スナップショット管理プログラム221は、ディスク障害復旧サブプログラム233動作中にコンピュータ100からデータ読み出し要求が来た場合、通常はミラー元LUからデータを読み出すが、更新ビットが0、ミラー先不整合ビットが0であるLBAセットに関してはミラー先LUから読み出してもよい。 【0061】(4)データ読み出しと書きこみ、および、スナップショット読み出しの際のコンピュータ動作まず、コンピュータ100が、ディスクアレイ200にあるLU261のデータにアクセスする場合のデータベースプログラム126の動作を説明する。データベースプログラム126は、スナップショット取得の有無に関係なく、同じ動作を行う。 【0062】データベースプログラム126がLU261のデータを読み出す場合、データベースプログラム126はディスクアレイ200に対し、LU261のデータを読み出すREADコマンドを発行する。最後に、データベースプログラム126は、ディスクアレイ200からデータとステータスを受信し動作を終了する。また、データベースプログラム126がLU261にデータを書きこむ場合、データベースプログラム126はディスクアレイ200に対し、LU261にデータを書きこむWRITEコマンドを発行し、データを送信する。最後に、データベースプログラム126は、ディスクアレイ200からステータスを受信し動作を終了する。 【0063】次に、コンピュータ100が、ディスクアレイ200にあるLU261のスナップショットを読み出す場合のバックアッププログラム127の動作を説明する。 【0064】バックアッププログラム127がLU261のスナップショットを読み出す場合、バックアッププログラム127はディスクアレイ200に対し、LU261のミラー先LUであるLU262のデータを読み出すREADコマンドを発行する。最後に、バックアッププログラム127は、ディスクアレイ200からデータとステータスを受信し動作を終了する。 【0065】(5)データ読み出しと書きこみ、および、スナップショット読み出しの際のディスクアレイ動作まず、コンピュータ100が、ディスクアレイ200にあるLU261のデータにアクセスする場合のスナップショット管理プログラム221の動作を説明する。 【0066】コンピュータ100がLU261のデータを読み出す場合、スナップショット管理プログラム221がLU261に対するREADコマンドを受信する。次に、LUミラーサブプログラム231が有効で、かつ、ミラー再同期サブプログラム232による更新部分のコピーが終了していれば、LU261、もしくは、ミラー先LUであるLU262からデータを読み出す。そうでなければ、LU261からデータを読み出す。最後に、読み出したデータとステータスをコンピュータ100に送信する。LU261とミラー先LUであるLU262の内容が一致している場合は、両者のいずれかからデータを読み出すことにより負荷を分散させることができる。 【0067】コンピュータ100がLU261にデータを書きこみ記憶内容を更新する場合、スナップショット管理プログラム221がLU261に対するWRITEコマンドとデータを受信する。次に、LUミラーサブプログラム231が有効であればLU261とミラー先LUであるLU262にデータを書きこみ、無効であればLU261にデータを書きこむ。次に、非ミラー時更新監視サブプログラム234と非ミラー時更新位置管理サブプログラム235が有効であれば、LU261の更新/不整合位置管理表222に対して更新したLBAを含むLBAセットの更新ビットを1に設定し、無効であれば何もしない。最後に、ステータスをコンピュータ100に送信する。 【0068】次に、コンピュータ100が、ディスクアレイ200にあるLU261のスナップショットを読み出す場合のスナップショット管理プログラム221の動作を説明する。 【0069】コンピュータ100がLU261のスナップショットを読み出す場合、スナップショット管理プログラム221がLU261のミラー先LUであるLU262に対するREADコマンドを受信する。次に、スナップショット管理プログラム221は、ミラー先LUであるLU262からデータを読み出す。最後に、読み出したデータとステータスをコンピュータ100に送信する。 【0070】なお、ミラー再同期サブプログラム232による更新部分のコピー中は、コピー処理とコンピュータ100によるLU261へのデータアクセス処理が同じLU261に集中するため、データアクセス性能が低下する。 【0071】(6)効果本実施形態によれば、スナップショット取得のために二重化運用しているディスクアレイにおいて、ディスク交換後のパリティ再構築に関わるディスクアクセス回数を削減することで、通常アクセス性能の低下を抑止することができるという効果がある。 【0072】また、本実施形態によれば、二重化を停止している期間におけるディスク交換後のパリティ再構築時間を短縮することで、ミラー再同期化中の更新データのコピー量を削減し、性能が低下するミラー再同期化時間を短縮できるという効果がある。 【0073】たとえば、RAID5の5D+1Pの構成を想定し、ミラーフェーズにおいてディスク障害を復旧する場合、パリティの冗長性によるディスク復旧をした場合、4回のディスク読み出しと1回のディスク書き込みが発生する。本発明を適用することで、1回のディスク読み出しと1回のディスク書き込みにすることができ、通常のアクセス性能の低下を抑止できる。非ミラーフェーズにおいても同様のディスクアクセス回数の削減効果が期待でき、スナップショットを取得してバックアップ等をとる際の読み出し性能低下を抑止でき、読み出し時間の増加も抑止できることから二重化停止時間、および、性能が低下するミラー再同期化時間を短縮できる。 【0074】また、ディスク交換後のパリティ再構築に関わるディスクアクセス回数を削減することで、パリティグループを形成するRAID5などのディスク構成を表すnD+1Pでのデータドライブ数nの増加による性能低下を抑止できるという効果がある。nD+1Pの場合、パリティの冗長性によるディスク復旧をした場合、n回のディスク読み出しと1回のディスク書き込みが発生する。本発明を適用することで、1回のディスク読み出しと1回のディスク書き込みにすることができる。 【0075】なお、本発明ではコンピュータ100とディスクアレイ200を接続するインターフェースをSCSIバス300としたが、FibreChannel等の他のインターフェースであってもよい。 【0076】また、本実施形態では、スナップショット取得のためミラー元LUとミラー先LUで二重化しているが、ミラー先LUを複数設けた多重ミラーにおいても本発明は適用可能である。この場合、更新/不整合位置管理表222のミラー先不整合ビットをミラー先LU分だけ設け、ディスク障害復旧サブプログラム233がそれぞれのミラー先LUとミラー元LUに対し二重化の場合と同様の動作をし、LUミラーサブプログラム231がミラー元LUに対するアクセスを複数のミラー先LUに多重化する動作をすればよい。 【0077】 【発明の効果】以上述べたように、本発明によれば、スナップショット取得のために二重化運用しているディスクアレイにおいて、ディスク交換後のパリティ再構築に関わるディスクアクセス回数を削減することで、通常アクセス性能の低下を抑止することができるという効果がある。 【0078】また、本実施形態によれば、二重化を停止している期間におけるディスク交換後のパリティ再構築時間を短縮することで、ミラー再同期化中の更新データのコピー量を削減し、性能が低下するミラー再同期化時間を短縮できるという効果がある。 【0079】また、ディスク交換後のパリティ再構築に関わるディスクアクセス回数を削減することで、パリティグループを形成するRAID5などのディスク構成を表すnD+1Pでのデータドライブ数nの増加による性能低下を抑止できるという効果がある。
|
| 【出願人】 |
【識別番号】000005108 【氏名又は名称】株式会社日立製作所
|
| 【出願日】 |
平成12年9月26日(2000.9.26) |
| 【代理人】 |
【識別番号】100075096 【弁理士】 【氏名又は名称】作田 康夫
|
| 【公開番号】 |
特開2002−108571(P2002−108571A) |
| 【公開日】 |
平成14年4月12日(2002.4.12) |
| 【出願番号】 |
特願2000−297066(P2000−297066) |
|