以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の機能構成を示す図である。管理装置1は、複数のデータと、その複数のデータから生成した冗長コードとを分散格納する複数の記憶装置2〜6を管理する。例えば、記憶装置2〜6には、RAID5の技術により、複数のデータと冗長コードとが分散格納されている。なお、RAID5における冗長コードは、パリティデータと呼ばれる。
記憶装置2〜6のうちの1つに障害が発生した場合、障害が発生した記憶装置に格納されているデータまたは冗長コードを、他の記憶装置それぞれに格納されているデータまたは冗長コードを用いて復元することができる。このような処理は、リビルド処理と呼ばれる。リビルド処理では、例えば記憶装置3に障害が発生した場合、記憶装置3に格納されていたデータまたは冗長コードが復元される。復元されたデータまたは冗長コードは、予備として用意されている記憶装置7に格納される。
管理装置1は、このようなリビルド処理におけるデータまたは冗長コードの復元順を制御する。復元順の制御のために、管理装置1は、記憶手段1a、判断手段1b、決定手段1c、および復元手段1dを有している。
記憶手段1aは、複数の記憶装置2〜6の記憶領域をまとめた論理ディスクの単位記憶領域ごとに、使用中か否かが設定された管理テーブル1a−1を記憶する。
判断手段1bは、複数の記憶装置2〜6のうちの1つに障害が発生すると、障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断する。例えば、判断手段1bは、記憶手段1aを参照し、障害が発生した記憶装置内の記憶領域のうち、使用中の単位記憶領域に割り当てられた記憶領域が使用されていると判断する。
決定手段1cは、使用されている記憶領域内のデータまたは冗長コードの復元順を、使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する。
復元手段1dは、決定手段1cで決定された復元順に沿って、複数の記憶装置2〜6のうちの障害が発生した記憶装置以外の記憶装置それぞれからデータまたは冗長コードを読み出し、障害が発生した記憶装置内のデータまたは冗長コードを復元する。そして、復元手段1dは、復元したデータまたは冗長コードを予備の記憶装置7に格納する。
このような管理装置1によれば、複数の記憶装置2〜6のうちの1つに障害が発生すると、判断手段1bにより、障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とが判断される。図1の例では、記憶装置3に障害が発生している。また、管理テーブル1a−1には、論理ディスクの単位記憶領域のうち、「area#2」、「area#4」、「area#5」が使用中であり、「area#1」、「area#3」、「area#6」が使用中でない(不使用)であることが示されている。この場合、判断手段1bは、記憶装置3の記憶領域のうち、論理ディスクの「area#2」、「area#4」、および「area#5」に割り当てられた記憶領域が使用されていると判断する。
次に決定手段1cにより、障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順が決定される。決定される復元順では、使用されている記憶領域内のデータまたは冗長コードの復元順が、使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先となる。図1の例では、論理ディスクの「area#2」、「area#4」、および「area#5」に割り当てられた記憶領域内のデータまたは冗長コードの復元順が、「area#1」、「area#3」、「area#6」に割り当てられた記憶領域内のデータまたは冗長コードよりも先となる。
そして、復元手段1dにより、決定手段1cで決定された復元順に沿って、障害が発生した記憶装置内のデータまたは冗長コードが復元される。復元されたデータまたは冗長コードは、復元手段1dにより記憶装置7に格納される。図1に示す記憶装置7の第1の状態は、使用されている記憶領域内のデータまたは冗長コードの復元が完了後の状態である。第1の状態では、記憶装置3内の記憶領域のうち、論理ディスクの「area#2」、「area#4」、および「area#5」に割り当てられた記憶領域内のデータまたは冗長コードが復元され、記憶装置7に格納されている。図1に示す記憶装置7の第2の状態は、使用されていない記憶領域内のデータまたは冗長コードの復元が完了後の状態である。第2の状態では、記憶装置3内のすべての記憶領域内のデータまたは冗長コードが復元され、記憶装置7に格納されている。
このように、使用されている記憶領域内のデータまたは冗長コードを優先的に復元するようにしたことで、データ復元中に発生したリード要求に対するレスポンスの遅延を抑制することができる。例えば、記憶装置3に障害が発生した場合を想定する。このとき障害が発生した記憶装置3に格納されたデータへのリード要求が発生すると、対象のデータが復元前であれば、記憶装置2,4〜6それぞれに分散格納されているデータまたは冗長コードを用いて対象のデータが復元される。そして、復元されたデータが応答される。この場合、リード要求に応じた処理の課程でデータ復元処理が行われるため、単純に対象のデータを記憶装置から読み出して応答する場合に比べて、応答に時間がかかる。他方、リード要求の対象のデータが既に復元済であれば、記憶装置7からデータが読み出され、読み出しデータが応答される。この場合、データの復元処理が行われない分、迅速に応答することができる。
管理装置1では、使用中の記憶領域内のデータを優先的に復元しているため、データ復元中のリード要求の対象となるデータが、復元済みである可能性が高くなる。その結果、データ復元中のレスポンスの遅延が抑制される。
ところで、RAID5のようなパリティデータを含めたストライピングの技術と、RAID1のようなミラーリングの技術とを併用してデータを管理することも可能である。このとき、ミラーリングによって二重化されたデータのうち、ユーザからのアクセス対象を一方のデータに限定しておくことができる。アクセス対象のデータが一方に限定されている場合、アクセス対象のデータを優先的に復元させることで、その結果、データ復元中のレスポンスの遅延をさらに抑制できる。
二重化されたデータのうちのアクセス対象のデータを優先的に復元させるこの場合、判断手段1bは、障害が発生した記憶装置における使用されている記憶領域内のデータが、アクセス対象のデータかを判断する。すなわち、判断手段1bは、使用されている記憶領域内が、ユーザからのアクセス対象のデータの記憶に使用されているのか、アクセス対象のデータの複製データの格納に使用されているのかを判断する。そして、決定手段1cは、アクセス対象のデータの記憶に使用されている記憶領域内のデータまたは冗長コードの復元順を、複製データの格納に使用されている記憶領域よりも先にして、データまたは冗長コードの復元順を決定する。これにより、先にアクセス対象のデータが復元され、次に複製データが復元される。その結果、ユーザからのアクセス対象となるデータが迅速に復元され、リード要求に対するレスポンスの遅延が抑制される。
なお、決定手段1cは、記憶装置2〜6内に管理情報が記憶されている場合、管理情報が記憶された記憶領域内のデータまたは冗長コードの復元順を、使用されている記憶領域内のデータまたは冗長コードの復元順よりも先にすることができる。これにより、管理情報を迅速に復元し、システムの信頼性低下を抑制することができる。
また、記憶装置2〜6がRAID機能を有するストレージ装置に内蔵されている場合がある。この場合、障害が発生した記憶装置に格納されているデータの復元は、ストレージ装置において行うことができる。そこで、記憶装置2〜6がRAID機能を有するストレージ装置に内蔵されている場合、管理装置1には、復元手段1dに代えて、データの復元順をストレージ装置に指示する指示手段が設けられる。指示手段は、決定手段1cで決定された復元順に沿って、障害が発生した記憶装置内のデータまたは冗長コードの復元を、複数の記憶装置2〜6を有するストレージ装置に指示する。
[第2の実施の形態]
第2の実施の形態は、RAIDシステムとマルチノードストレージシステムとを組み合わせて、データの信頼性を向上させた場合における、リビルド処理中のレスポンス時間の遅延短縮の例である。
なお、RAIDシステムとマルチノードストレージシステムとを組み合わせた場合、論理ディスクが2段階の階層構造となる。すなわち、RAIDシステムのストレージ装置内で定義された複数の論理ディスクをまとめて、マルチノードストレージシステムにおいて定義された論理ディスクとすることができる。そこで以下の説明では、マルチノードストレージシステムにおいて定義された論理ディスクを特に「論理ボリューム」と呼び、RAIDシステムで定義された論理ディスクと区別することとする。
図2は、第2の実施の形態のマルチノードストレージシステム構成の一例を示す図である。本実施の形態では、ネットワーク10を介して、複数のディスクノード100,200,300,400、制御ノード500、およびアクセスノード600が接続されている。ディスクノード100,200,300,400それぞれには、ストレージ装置110,210,310,410が接続されている。
ストレージ装置110には、複数の物理ディスク111〜116が実装されている。物理ディスクは、例えば磁気によってデータの書き込みと読み出しを行うハードディスク装置(HDD:Hard Disk Drive)である。ストレージ装置210には、複数の物理ディスク211〜216が実装されている。ストレージ装置310には、複数の物理ディスク311〜316が実装されている。ストレージ装置410には、複数の物理ディスク411〜416が実装されている。各ストレージ装置110,210,310,410は、内蔵する物理ディスクを用いたRAIDシステムである。本実施の形態では、各ストレージ装置110,210,310,410のRAID5のディスク管理サービスを提供する。
ディスクノード100,200,300,400は、接続されたストレージ装置110,210,310,410に格納されたデータを管理し、管理しているデータをネットワーク10経由で端末装置21,22,23に提供する。また、ディスクノード100,200,300,400は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも2つのディスクノードで管理されている。
制御ノード500は、ディスクノード100,200,300,400を管理する。例えば、制御ノード500は、ディスクノード100,200,300,400から新たなストレージ装置の接続通知を受け取ると、論理ボリュームを介して接続されたストレージ装置にアクセスできるようにする。
アクセスノード600には、ネットワーク20を介して複数の端末装置21,22,23が接続されている。また、アクセスノード600には、論理ボリュームが定義されている。そして、アクセスノード600は、端末装置21,22,23からの論理ボリュームのデータのアクセス要求に応答して、ディスクノード100,200,300,400内の対応するデータへアクセスする。
図3は、本実施の形態に用いるディスクノードのハードウェアの一構成例を示す図である。ディスクノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス109を介してRAM(Random Access Memory)102と複数の周辺機器が接続されている。
RAM102は、ディスクノード100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
バス109に接続されている周辺機器としては、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、通信インタフェース107、およびストレージインタフェース108がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、ディスクノード100の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
通信インタフェース107は、ネットワーク10に接続されている。通信インタフェース107は、ネットワーク10を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
ストレージインタフェース108は、ストレージ装置110に接続されている。ストレージインタフェース108は、ストレージ装置110に対するデータの入出力を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3ではディスクノード100のハードウェア構成を示したが、他のディスクノード200,300,400、制御ノード500、およびアクセスノード600も同様のハードウェア構成で実現することができる。
図4は、ストレージ装置のハードウェア構成例を示す図である。ストレージ装置110は、物理ディスク111〜116を制御する制御部117を有している。制御部117は、例えば物理ディスク111〜116を用いたRAID5の制御を行うことができる。
制御部117は、ホストインタフェース(IF)117a、物理ディスクインタフェース(IF)117b,117c,117d,117e,117f,117g、RAIDコントローラ117h、CPU117i、およびメモリ117jを有している。
ホストIF117aは、ディスクノード100と通信を行うインタフェースである。物理ディスクIF117b,117c,117d,117e,117f,117gは、物理ディスク111〜116に対してデータの入出力を行うインタフェースである。
RAIDコントローラ117hは、ホストIF117aと、物理ディスクIF117b,117c,117d,117e,117f,117gそれぞれとに接続されている。RAIDコントローラ117hは、ディスクノード100からホストIF117aを介して入力された論理ディスクへのアクセス要求を、予め設定されたRAIDレベルに従って処理する。例えばRAIDコントローラ117hは、RAID5の技術を適用して、論理ディスクへのアクセス要求に応じて、アクセス対象の記憶領域を有する物理ディスクにアクセスする。
CPU117iとメモリ117jとは、内部バス117kを介して、ホストIF117a、物理ディスクIF117b,117c,117d,117e,117f,117g、およびRAIDコントローラ117hに接続されている。CPU117iは、故障検知や、故障検知時のリビルド処理におけるリビルド順番の制御などを行う。メモリ117jは、CPU117iに実行させる処理が記述されたプログラムや、各種データを記憶する。
なお、図4にはストレージ装置110のハードウェア構成を示したが、他のストレージ装置210,310,410も同様のハードウェア構成で実現できる。
次に、マルチノードストレージシステムにおいて定義される論理ボリュームのデータ構造について説明する。
図5は、論理ボリュームのデータ構造の一例を示す図である。第2の実施の形態では、論理ボリューム60には論理ボリューム識別子「LVOL−X」が付与されている。ネットワーク経由で接続された4台のディスクノード100,200,300,400には、個々のノードの識別用にそれぞれ「DP1」、「DP2」、「DP3」、「DP4」というディスクノードIDが付与されている。そして、各ディスクノード100,200,300,400に接続されているストレージ装置110,210,310,410内の論理ディスク71,72,73,74は、ディスクノードIDと、各ディスクノード内での論理ディスク名との組によってネットワーク10で一意に識別される。
各ディスクノード100,200,300,400が有するストレージ装置110,210,310,410それぞれにおいてRAID5のストレージシステムが構成されている。RAID5では、RAIDグループが作成される。RAIDグループそれぞれには、1以上の論理ディスク71,72,73,74が含まれる。
論理ディスク71,72,73,74は、それぞれ複数のスライス71a,71b,71c,・・・,72a,72b,72c,・・・、73a,73b,73c,・・・、74a,74b,74c,・・・に分割されて管理されている。
論理ボリューム60は、セグメント61〜64という単位で構成される。セグメント61〜64の記憶容量は、ストレージ装置110,210,310,410における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が1ギガバイトとするとセグメントの記憶容量も1ギガバイトである。論理ボリューム60の記憶容量はセグメント1つ当たりの記憶容量の整数倍である。セグメント61〜64は、それぞれプライマリスライス61a,62a,63a,64aとセカンダリスライス61b,62b,63b,64bとの組(スライスペア)で構成される。
同一セグメントに属する2つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
図5の例では、論理ボリューム60内のスライスの識別子を、「P」または「S」のアルファベットと数字との組合せで示している。「P」はプライマリスライスであることを示している。「S」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、1番目のセグメント61のプライマリスライスが「P1」で示され、セカンダリスライスが「S1」で示される。
なお、第2の実施の形態では、アクセスノード600は、プライマリスライスに対してアクセスを行う。すなわちアクセスノード600は、端末装置から論理ボリューム内のデータのアクセス要求を受け取ると、アクセス対象のデータが属するセグメントに割り当てられたプライマリスライスに対してアクセスを行う。
プライマリスライス内に書き込みが行われた場合には、ディスクノード100,200,300,400同士が連係動作を行い、同一のセグメントに割り当てられたスライス内のデータの同一性を保つ。例えば、データが更新されたプライマリスライスを管理するディスクノードが、同一のセグメントに割り当てられたセカンダリスライスを管理するディスクノードに対して、更新後のデータを送信する。更新後のデータを受信したディスクノードは、受信したデータをセカンダリスライスに書き込む。このようにして、論理ボリュームにおいてデータが二重化される。
図6は、論理ディスクのデータ構造の一例を示す図である。論理ディスク71には、RAIDシステム領域71−1、デバイス情報記憶領域71−2、スライス情報記憶領域71−3、および複数のスライス71a,71b,71c,・・・が設けられている。
RAIDシステム領域71−1は、RAID5などのRAIDシステムの管理に利用する情報を格納する記憶領域である。
デバイス情報記憶領域71−2とスライス情報記憶領域71−3とは、ディスクノード100が論理ディスク71の管理に利用する管理情報を格納する管理情報領域である。デバイス情報記憶領域71−2は、論理ディスク71内のデータの管理に利用する情報(デバイス情報)を格納する記憶領域である。スライス情報記憶領域71−3は、複数のスライス71a,71b,71c,・・・の管理に利用する情報(スライス情報)を格納する記憶領域である。複数のスライス71a,71b,71c,・・・は、論理ボリューム60のセグメントのデータを記憶するデータ領域である。
ディスクノード100から論理ディスク71内のデータにアクセスする場合、論理ブロックアドレス(LBA:Logical Block Address)によって、アクセス対象のデータを含むブロックが指定される。論理ディスク71では、デバイス情報記憶領域71−2の先頭の位置が、論理ディスク71の開始アドレス(LBA=0)である。すなわち、論理ディスク71のアドレスは、デバイス情報記憶領域71−2、スライス情報記憶領域71−3、および複数のスライス71a,71b,71c,・・・に対して付与されている。そのためディスクノード100からRAIDシステム領域71−1内のデータに直接アクセスすることはできない。他方、ディスクノード100は、論理ディスク71のアドレス(LBA)を指定することで、デバイス情報記憶領域71−2、スライス情報記憶領域71−3、および複数のスライス71a,71b,71c,・・・内の任意のデータにアクセスすることができる。
図7は、RAIDシステム領域のデータ構造例を示す図である。RAIDシステム領域71−1には、RAIDシステム情報81が格納されている。RAIDシステム情報81には、バージョン、RAIDグループID、RAIDレベル、RAIDデバイス数、スペアデバイス数、ステータス、初期化時刻、状態変化時刻、ボリューム対応表、およびその他の属性のフィールドが設けられている。
バージョンのフィールドには、RAIDシステムのバージョンが設定される。RAIDグループIDのフィールドには、RAIDグループを識別するための識別子(RAIDグループID)が設定される。RAIDレベルのフィールドには、適用されているRAIDレベル(例えばRAID5)が設定される。RAIDデバイス数のフィールドには、RAIDグループを構成する物理ディスクの数が設定される。スペアデバイス数のフィールドには、スペアとして用意された物理ディスクの数が設定される。ステータスのフィールドには、正常、リビルド中、縮退中(リビルドするためのスペアがない)などのRAIDシステムの現在の状態を示す情報が設定される。初期化時刻のフィールドには、RAIDグループを作成した時刻が設定される。状態変化時刻のフィールドには、ステータスが変化した最近の時刻が設定される。ボリューム対応表のフィールドには、論理ボリュームと論理ディスクとの対応関係を示すボリューム対応表が設定される。例えば、ボリューム対応表には、論理ボリュームの論理ディスク名(LD−ID)に対応付けて、論理ディスクのRAIDグループIDとRAIDグループ内での識別番号(LUN:Logical Unit Number)とが設定される。その他の属性のフィールドには、ストライプサイズやRAID5のパリティの作り方などの情報が設定される。
図8は、デバイス情報記憶領域のデータ構造例を示す図である。デバイス情報記憶領域71−2には、デバイス情報82が格納されている。デバイス情報82には、論理ディスク名(LD−ID)、ブロック長、ブロック数、スライスサイズ、スライス数、スライス情報記憶領域開始アドレス、スライス情報記憶領域サイズ、チェックコード種別、暗号化種別、初期化時刻、およびその他の情報のフィールドが設けられている。
論理ディスク名(LD−ID)のフィールドには、論理ディスク名が設定される。ブロック長のフィールドには、1ブロックのバイト数(例えば、512バイト)が設定される。ブロック数のフィールドには、ブロック数で表したディスク容量(例えば:488281250)が設定される。スライスサイズのフィールドには、1スライスの大きさ(例えば1ギガバイト)が設定される。スライス数のフィールドには、確保できるスライスの数(例えば230)が設定される。スライス情報記憶領域開始アドレスのフィールドには、スライス情報記憶領域71−3の先頭のアドレス(LBA)が設定される。例えばスライス情報記憶領域71−3の先頭のアドレスは、デバイス情報記憶領域71−2の先頭のアドレス(LBA=0)からの相対位置(例えば2048ブロック目)で示される。スライス情報記憶領域サイズのフィールドには、スライス情報記憶領域71−3の記憶容量(例えば1メガバイト)が設定される。チェックコード種別のフィールドには、エラーチェックコードの有無(例えばチェックあり)などが設定される。暗号化種別のフィールドには、暗号化の有無(例えば暗号化なし)や暗号化方式などが設定される。初期化時刻のフィールドには、スライス単位のディスクレイアウトにフォーマットした日時(例えば、2010年4月1日12時20分)が設定される。その他の情報のフィールドには、上記で説明した以外の論理ディスクの管理に使用される各種情報が設定される。
図9は、スライス情報記憶領域のデータ構造例を示す図である。スライス情報記憶領域71−3には、デバイス情報記憶領域71−2に書き込まれているスライス数分のスライス情報83a,83b,83c,・・・が格納される。各スライス情報83a,83b,83c,・・・には、スライスID、属性フラグ、論理ディスク名、スライス位置、スライスサイズ、およびその他の属性のフィールドが設けられている。
スライスIDのフィールドには、論理ディスク内でのスライスの識別番号が設定される。例えば、スライス情報83aのスライスIDのフィールドには、「1000」と設定されている。
属性フラグのフィールドには、セグメントへの割当状態を示すフラグ(属性フラグ)が設定される。属性フラグには、プライマリ、セカンダリ、フリーなどがある。スライスが、論理ボリュームのセグメントに対してプライマリスライスとして割り当てられている場合、「プライマリ」の属性フラグが設定される。スライスが、論理ボリュームのセグメントに対してセカンダリスライスとして割り当てられている場合、「セカンダリ」の属性フラグが設定される。スライスが、論理ボリュームのセグメントに対して割り当てられていない場合、「フリー」の属性フラグが設定される。例えば、スライス情報83aの属性フラグのフィールドには、「フリー」と設定されている。
論理ディスク名のフィールドには、スライスが属する論理ディスクの論理ディスク名(LD−ID)が設定される。例えば、スライス情報83aの論理ディスク名のフィールドには、「LD−10」と設定されている。
スライス位置のフィールドには、論理ディスク71内でのスライス位置を示すアドレスが設定される。例えば、スライス情報83aのスライス位置のフィールドには、「4096」と設定されている。
スライスサイズのフィールドには、ブロック数によって示されるスライスのサイズが設定される。例えば、スライス情報83aのスライスサイズのフィールドには、「2097152」と設定されている。
その他の属性のフィールド(attr)には、上記以外のスライス管理に利用される属性情報が設定される。例えば、その他の属性のフィールドには、スライスが割り当てられた論理ボリュームの識別子や、割り当てられたセグメントを示すセグメントIDが設定される。
図6〜図9に示した論理ディスク71内のデータは、複数の物理ディスク111〜115に分散格納される。
図10は、論理ディスク内のデータの格納例を示す図である。論理ディスク71のデータは、RAID5(パリティデータを含むストライピング)によって、5台の物理ディスク111〜115に分散格納される。図10では、RAIDシステム領域71−1に属するデータを「1−1」、「1−2」、・・・で示している。デバイス情報記憶領域71−2に属するデータを、「2−1」、「2−2」、・・・で示している。スライス情報記憶領域71−3に属するデータを、「3−1」、「3−2」、・・・で示している。スライス71aに属するデータを、「4−1」、「4−2」、・・・で示している。スライス71bに属するデータを、「5−1」、「5−2」、・・・で示している。
図10の例では、4つのデータを用いて1つのパリティデータが生成されている。なお、図10では、パリティデータについては、「−」の右側に「P」と表記している。例えば「1−1」、「1−2」、「1−3」、「1−4」のデータに基づいて、パリティデータ「1−P1」が生成されている。パリティデータの生成に使用した4つのデータと、生成されたパリティデータとは、それぞれ異なる物理ディスクに格納される。
このような論理ボリューム及び論理ディスクを用いてデータを管理するシステムにおいて、RAIDシステムを構成する物理ディスクの1つが故障すると、リビルド処理が行われる。以下にリビルド処理に関する機能について詳細に説明する。
図11は、第2の実施の形態に係るディスクノードとストレージ装置の機能を示すブロック図である。ディスクノード100は、管理情報記憶部120、管理情報制御部130、アクセス要求処理部140、およびリビルド指示部150を有する。
管理情報記憶部120は、ストレージ装置110内の論理ディスク71に格納されているデバイス情報とスライス情報とを含む管理情報のコピーを記憶する。例えば、RAM102またはHDD103の記憶領域の一部が、管理情報記憶部120として使用される。管理情報記憶部120が記憶するデバイス情報の内容は、ストレージ装置110内のデバイス情報記憶領域71−2内のデバイス情報と同じである。管理情報記憶部120が記憶するスライス情報の内容は、ストレージ装置110内のスライス情報記憶領域71−3内のスライス情報83a,83b,83c,・・・と同じである。
管理情報制御部130は、管理情報記憶部120に記憶される管理情報を制御する。例えば、管理情報制御部130は、ディスクノード100の起動時にストレージ装置110からデバイス情報とスライス情報とを取得し、管理情報記憶部120に格納する。また、管理情報制御部130は、論理ボリューム60のセグメントへのスライスの割り当て指示を制御ノード500から受け取ると、指示に従って管理情報記憶部120のスライス情報の内容を変更する。この際、管理情報制御部130は、ストレージ装置110内のスライス情報記憶領域71−3内のスライス情報も更新する。
アクセス要求処理部140は、アクセスノード600からのアクセス要求に従って、ストレージ装置110内のデータにアクセスする。例えばアクセス要求処理部140は、論理ボリュームのセグメント内のデータを指定したアクセス要求をアクセスノード600から受け取る。アクセス要求処理部140は、受け取ったアクセス要求に応じて管理情報記憶部120を参照し、指定されたセグメントに割り当てられているスライスのスライスIDと、そのスライスが属する論理ディスク名(LD−ID)とを特定する。次にアクセス要求処理部140は、特定した論理ディスク名とスライスIDとを指定して、ストレージ装置110に対して、指定したスライス内のデータのアクセス要求を出力する。
リビルド指示部150は、ストレージ装置110がリビルド処理を実行する際に、リビルドの対象とする情報をストレージ装置110に指示する。例えば、リビルド指示部150は、ストレージ装置110からリビルド通知91を受けることで、ストレージ装置110におけるリビルド処理の開始を認識する。リビルド通知91には、例えば、リビルド対象の論理ディスクの論理ディスク名(LD−ID)が含まれる。リビルド指示部150は、リビルド処理が開始されたことを認識すると、管理情報記憶部120を参照し、リビルド対象の論理ディスクの記憶領域を1つずつ選択し、選択した記憶領域を指定したリビルド指示92をストレージ装置110に送信する。リビルド指示92には、リビルド対象の論理ディスクの論理ディスク名(LD−ID)、選択した記憶領域の開始アドレス、選択した記憶領域のサイズが含まれる。
ストレージ装置110は、複数の物理ディスク111〜116に加え、管理情報記憶部118、データアクセス部119、およびリビルド制御部110aを有する。
管理情報記憶部118は、ストレージ装置110内の論理ディスク71に格納されているデバイス情報とスライス情報とを含む管理情報のコピーを記憶する。例えば、メモリ117jの記憶領域の一部が、管理情報記憶部118として使用される。管理情報記憶部118が記憶するデバイス情報の内容は、デバイス情報記憶領域71−2内のデバイス情報と同じである。管理情報記憶部120が記憶するスライス情報の内容は、スライス情報記憶領域71−3内のスライス情報83a,83b,83c,・・・と同じである。
データアクセス部119は、ディスクノード100からアクセス要求に応じて、物理ディスク111〜116に格納されたデータにアクセスする。そしてデータアクセス部119は、アクセス結果を、ディスクノード100に応答する。また、データアクセス部119は、ストレージ装置110の起動時に、論理ディスク71から管理情報を取得し、管理情報記憶部118に格納する。
データアクセス部119は、異常検知部119aを有している。異常検知部119aは、物理ディスク111〜116の異常を検知する。例えば異常検知部119aは、物理ディスク内のデータアクセスが連続して失敗した場合、アクセス先の物理ディスクに異常があると判断する。異常検知部119aは、異常を検出すると、異常が検出された物理ディスクの識別情報(物理ディスクID)を含む異常発生通知を、リビルド制御部110aに対して出力する。
リビルド制御部110aは、異常発生通知を受け取ると、異常が発生した物理ディスクに対するリビルド処理を行う。例えばリビルド制御部110aは、異常が発生した物理ディスク内のデータを、スペアとして用意されている他の物理ディスクにコピーする。具体的には、リビルド制御部110aは、異常が発生した物理ディスク内のデータのうち、最初の論理ディスク71のRAIDシステム領域71−1に属するデータをコピーする。RAIDシステム領域71−1に属するデータのコピーが完了すると、リビルド制御部110aは、リビルド通知をディスクノード100に対して出力する。その後、リビルド制御部110aは、ディスクノード100からのリビルド指示に従って、異常が発生した物理ディスク内のデータをコピーする。
以上のような機能により、異常が発生した物理ディスクのリビルド処理が行われる。
図12は、リビルド処理の手順を示すシーケンス図である。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS11]ストレージ装置110は、物理ディスクの故障を検出する。例えば、特定の物理ディスクへのアクセスが繰り返しエラーになると、異常検知部119aがその物理ディスクが故障していると判断する。そして異常検知部119aで故障と判断した物理ディスクの識別情報が、データアクセス部119からリビルド制御部110aに通知される。
[ステップS12]ストレージ装置110は、RAIDシステム領域71−1のリビルド処理を行う。例えば、リビルド制御部110aは、故障した物理ディスク以外の物理ディスクからRAIDシステム領域71−1のデータを読み出す。次にリビルド制御部110aは、読み出したデータを用いて故障した物理ディスクに格納されていたRAIDシステム領域71−1のデータを生成する。そしてリビルド制御部110aは、生成したデータをスペアとして用意されていた物理ディスク116に格納する。
その後、リビルド制御部110aは、ディスクノード100に対して、リビルド発生通知を送信する。
[ステップS13]ディスクノード100では、リビルド発生通知をリビルド指示部150が受信する。リビルド指示部150は、リビルド発生通知を受信すると、管理情報領域のリビルド指示をストレージ装置110に送信する。
[ステップS14]ストレージ装置110では、リビルド制御部110aが管理情報領域のリビルド指示を受信する。リビルド制御部110aは、管理情報領域のリビルド指示に従って、管理情報領域のリビルド処理を実行する。例えば、リビルド制御部110aは、故障した物理ディスク以外の物理ディスクからデバイス情報記憶領域71−2とスライス情報記憶領域71−3とのデータを読み出す。次にリビルド制御部110aは、読み出したデータを用いて故障した物理ディスクに格納されていたデバイス情報記憶領域71−2とスライス情報記憶領域71−3とのデータを生成する。そしてリビルド制御部110aは、生成したデータをスペアとして用意されていた物理ディスク116に格納する。
その後、リビルド制御部110aは、ディスクノード100に対して、管理情報領域のリビルド完了通知を送信する。
[ステップS15]ディスクノード100では、管理情報領域のリビルド完了通知をリビルド指示部150が受信する。リビルド指示部150は、管理情報領域のリビルド完了通知を受信すると、プライマリスライスのうちの1つを選択する。そして、リビルド指示部150は、選択したプライマリスライスのリビルド指示をストレージ装置110に送信する。
[ステップS16]ストレージ装置110では、リビルド制御部110aがプライマリスライスのリビルド指示を受信する。リビルド制御部110aは、プライマリスライスのリビルド指示に従って、指定されたプライマリスライスのリビルド処理を実行する。例えば、リビルド制御部110aは、故障した物理ディスク以外の物理ディスクから、指定されたプライマリスライスのデータを読み出す。次にリビルド制御部110aは、読み出したデータを用いて故障した物理ディスクに格納されていたプライマリスライスのデータを生成する。そしてリビルド制御部110aは、生成したデータをスペアとして用意されていた物理ディスク116に格納する。
その後、リビルド制御部110aは、ディスクノード100に対して、指定されたプライマリスライスのリビルド完了通知を送信する。その後、リビルド対象の論理ディスクのすべてのプライマリスライスのリビルドが完了するまで、プライマリスライスのリビルド処理が繰り返し実行される。
[ステップS17]すべてのプライマリスライスのリビルドが完了した場合、リビルド指示部150は、セカンダリスライスのうちの1つを選択する。そして、リビルド指示部150は、選択したセカンダリスライスのリビルド指示をストレージ装置110に送信する。
[ステップS18]ストレージ装置110では、リビルド制御部110aがセカンダリスライスのリビルド指示を受信する。リビルド制御部110aは、セカンダリスライスのリビルド指示に従って、指定されたセカンダリスライスのリビルド処理を実行する。例えば、リビルド制御部110aは、故障した物理ディスク以外の物理ディスクから、指定されたセカンダリスライスのデータを読み出す。次にリビルド制御部110aは、読み出したデータを用いて故障した物理ディスクに格納されていたセカンダリスライスのデータを生成する。そしてリビルド制御部110aは、生成したデータをスペアとして用意されていた物理ディスク116に格納する。
その後、リビルド制御部110aは、ディスクノード100に対して、指定されたセカンダリスライスのリビルド完了通知を送信する。その後、リビルド対象の論理ディスクのすべてのセカンダリスライスのリビルドが完了するまで、セカンダリスライスのリビルド処理が繰り返し実行される。
[ステップS19]すべてのセカンダリスライスのリビルドが完了した場合、リビルド指示部150は、フリースライスのうちの1つを選択する。そして、リビルド指示部150は、選択したフリースライスのリビルド指示をストレージ装置110に送信する。
[ステップS20]ストレージ装置110では、リビルド制御部110aがフリースライスのリビルド指示を受信する。リビルド制御部110aは、フリースライスのリビルド指示に従って、指定されたフリースライスのリビルド処理を実行する。例えば、リビルド制御部110aは、故障した物理ディスク以外の物理ディスクから、指定されたフリースライスのデータを読み出す。次にリビルド制御部110aは、読み出したデータを用いて故障した物理ディスクに格納されていたフリースライスのデータを生成する。そしてリビルド制御部110aは、生成したデータをスペアとして用意されていた物理ディスク116に格納する。
その後、リビルド制御部110aは、ディスクノード100に対して、指定されたフリースライスのリビルド完了通知を送信する。その後、リビルド対象の論理ディスクのすべてのフリースライスのリビルドが完了するまで、フリースライスのリビルド処理が繰り返し実行される。
このようにして、所定の順番で論理ディスク内のデータのリビルド処理が行われる。このとき、ディスクノード100では、管理情報記憶部120を参照してリビルド対象の記憶領域を判断し、リビルド指示を生成する。
図13は、リビルド指示処理の手順を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS31]リビルド指示部150は、ストレージ装置110からリビルド発生通知を受信する。リビルド発生通知には、リビルド対象の論理ディスクを示す論理ディスク名が示されている。
[ステップS32]リビルド指示部150は、管理情報記憶部120を参照し、論理ディスク71内における管理情報領域を示す情報を取得する。例えば、リビルド指示部150は、論理ディスク71の先頭のアドレス(LBA=0)から、デバイス情報82に含まれるスライス情報記憶領域開始アドレスまでの領域を、デバイス情報記憶領域71−2と認識する。そこで、リビルド指示部150は、論理ディスク71の先頭のアドレスからスライス情報記憶領域開始アドレスまでの記憶領域のサイズに、スライス情報記憶領域サイズを加算した値を、管理情報領域のサイズとする。
[ステップS33]リビルド指示部150は、ストレージ装置110に対して管理情報領域のリビルド指示を送信する。具体的には、リビルド指示部150は、リビルド対象の論理ディスクの論理ディスク名、管理情報領域の先頭のアドレス(LBA=0)、および管理情報領域のサイズを含むリビルド指示を、ストレージ装置110に送信する。
[ステップS34]リビルド指示部150は、管理情報領域のリビルド完了通知を受信したか否かを判断する。リビルド指示部150は、リビルド完了通知を受信した場合、処理をステップS35に進める。リビルド指示部150は、リビルド完了通知を受信していなければ、ステップS34の処理を繰り返し、リビルド完了通知を待つ。
[ステップS35]リビルド指示部150は、スライスを優先順に従って並び替える。具体的には、リビルド指示部150は、管理情報記憶部120を参照し、リビルド対象の論理ディスクに含まれる各スライスのスライスIDと属性フラグとを取得し、スライスリストを生成する。そして、リビルド指示部150は、各スライスのスライスIDを、所定の優先順に従って並べ替える。第2の実施の形態では、プライマリスライスの優先順が最も高く、次にセカンダリスライスの優先順が高く、フリースライスの優先順が最も低い。
[ステップS36]リビルド指示部150は、スライスリストの上位から順に、スライスを1つずつ選択する。すなわち、リビルド指示部150は、スライスリスト内の未選択のスライスのうち、最も上位のスライスを1つ選択する。
[ステップS37]リビルド指示部150は、ストレージ装置110に対して、選択したスライスのリビルドを指示する。
[ステップS38]リビルド指示部150は、スライスのリビルド完了通知を受信したか否かを判断する。リビルド指示部150は、リビルド完了通知を受信した場合、処理をステップS39に進める。リビルド指示部150は、リビルド完了通知を受信していなければ、ステップS38の処理を繰り返し、リビルド完了通知を待つ。
[ステップS39]リビルド指示部150は、リビルド未実施のスライスがあるか否かを判断する。リビルド指示部150は、未実施のスライスがあれば処理をステップS36に進める。リビルド指示部150は、すべてのスライスのリビルドが完了していれば、リビルド指示処理を終了する。
このようにして、所定の順番でリビルドが実行される。以下に、リビルド処理によるスペアの物理ディスク116内のデータの状態遷移を示す。
図14は、スペアの物理ディスク内のデータの状態遷移を示す第1の図である。図14には、物理ディスク112が故障した場合のリビルド処理によるスペアの物理ディスク116内のデータの状態が示されている。
第1の状態は、RAIDシステム領域内のデータのリビルド後の状態を示している。物理ディスク112が故障したため、他の物理ディスク111,113〜115内のデータおよびパリティデータを用いて、物理ディスク112に格納されていたデータが生成されている。そして、生成されたデータが、物理ディスク116に格納されている。
第2の状態は、管理情報領域内のデータのリビルド後の状態を示している。管理情報領域に含まれるデバイス情報記憶領域とスライス情報記憶領域とのデータが生成され、物理ディスク116に格納されている。
管理情報領域のリビルドが完了すると、リビルド指示部150によって、スライスリストが生成される。
図15は、スライスリストの例を示す図である。スライスリスト93には、論理ディスクの各スライスのスライスIDと属性フラグとの組が登録されている。スライスリスト内のスライスIDは、属性フラグに基づいて並べ替えられる。すなわち、プライマリスライスが最上位、その次にセカンダリスライス、その次にフリースライスとなるように、スライスIDが並べ替えられる。
そしてスライスIDの並べ替えを行ったスライスリスト93の上位のスライスから順に、リビルド処理が行われる。
図16は、スペアの物理ディスク内のデータの状態遷移を示す第2の図である。第3の状態は、プライマリスライス内のデータのリビルド後の状態を示している。故障した物理ディスク112以外の物理ディスク111,113〜115内のデータおよびパリティデータを用いて、物理ディスク112に格納されていたプライマリスライス内のデータが生成されている。そして、生成されたプライマリスライスのデータが、物理ディスク116に格納されている。
第4の状態は、セカンダリスライス内のデータのリビルド後の状態を示している。故障した物理ディスク112以外の物理ディスク111,113〜115内のデータおよびパリティデータを用いて、物理ディスク112に格納されていたセカンダリスライス内のデータが生成されている。そして、生成されたセカンダリスライスのデータが、物理ディスク116に格納されている。
第5の状態は、フリースライス内のデータのリビルド後の状態を示している。故障した物理ディスク112以外の物理ディスク111,113〜115内のデータおよびパリティデータを用いて、物理ディスク112に格納されていたフリースライス内のデータが生成されている。そして、生成されたフリースライスのデータが、物理ディスク116に格納されている。
以上のように、データが格納されている領域を優先的にリビルド処理によって復元することにより、リビルド対象の論理ディスクに対してデータリードのアクセスが行われた場合に、アクセス対象のデータが復元済みである可能性が高くなる。アクセス対象のデータが復元済みであれば、リード要求の延長でリジェネレートが行われることがなく、効率よくデータをリードできる。その結果、リビルド対象の論理ディスクへのアクセス効率が向上する。
またセカンダリスライスよりも先にプライマリスライスのリビルドを行うようにしたため、リビルド対象の論理ディスクに対してデータリードのアクセスが行われた場合に、アクセス対象のデータが復元済みである可能性がさらに向上している。
さらに、データ領域よりも先に管理情報領域のリビルドを行うようにしたことで、管理情報が失われることが抑止される。すなわちRAID5では、2台の物理ディスクが同時に故障すると、故障した物理ディスクに格納されていたデータを生成することができない。そこで、管理情報を優先的にリビルドすることで、管理情報が失われる危険性を抑止できる。
なお、上記の例ではフリースライス内のデータもリビルドしているが、フリースライスは論理ボリュームに割り当てられていないためリビルド処理を行わなくてもよい。
[第3の実施の形態]
第3の実施の形態は、ディスクノードによるソフトウェアRAIDを行うシステムにおけるリビルドの順番制御を行うものである。
図17は、第3の実施の形態に係るディスクノードとストレージ装置の機能を示すブロック図である。ソフトウェアRAIDを行う場合、ディスクノード700には、複数の物理ディスク711〜716が実装されたディスクアレイ710が接続される。
ディスクノード700は、管理情報記憶部720、管理情報制御部730、データアクセス部740、およびリビルド制御部750を有する。データアクセス部740とおよびリビルド制御部750とにより、ソフトウェアRAID制御部701が構成される。ソフトウェアRAID制御部701は、ソフトウェアに基づくCPUの処理によって、RAID技術を実現したものである。なお、管理情報記憶部720と管理情報制御部730との機能は、それぞれ図11に示した第2の実施の形態における管理情報記憶部120と管理情報制御部130との機能と同じである。
データアクセス部740は、図11に示した第2の実施の形態におけるアクセス要求処理部140とデータアクセス部119との機能を併せ持っている。例えば、データアクセス部740は、第2の実施の形態のデータアクセス部119と同様に、異常検知部741を有している。ただし、アクセス要求処理部140とデータアクセス部119との間で行われる通信機能については、データアクセス部740は有していない。また、第2の実施の形態のデータアクセス部119はRAIDコントローラ117hを用いてハードウェアによるRAIDを実現しているが、第3の実施の形態のデータアクセス部740はディスクノード700のCPUの演算によりRAIDを実現する。
リビルド制御部750は、図11に示した第2の実施の形態におけるリビルド指示部150とリビルド制御部110aとの機能を併せ持っている。ただし、リビルド指示部150とリビルド制御部110aとの間で行われる通信機能については、リビルド制御部750は有していない。
このように、ソフトウェアRAID制御部701にリビルド制御部750を含めることで、ソフトウェアによりRAID技術を実現したシステムにおいても、所定の順番でリビルド処理を実行することができる。
[その他の実施の形態]
第2の実施の形態では使用されているスライスのうちプライマリスライスのデータを優先的にリビルドしているが、他の基準でリビルドの優先順を制御してもよい。例えば、スライスに対するユーザからのアクセス頻度を基準にすることが考えられる。この場合、アクセス頻度が高いスライスほどリビルドの優先順を高くする。アクセス頻度が高いスライスのリビルドの優先順を高くすることで、リード対象のデータが既にリビルド済みである可能性が高くなり、リビルド処理による性能劣化を抑制できる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ディスクノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
(付記1) 複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理プログラムにおいて、
コンピュータに、
前記複数の記憶装置のうちの1つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断し、
前記使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する、
処理を実行させることを特徴とする管理プログラム。
(付記2) 記憶領域の判断の際には、前記複数の記憶装置の記憶領域をまとめた論理ディスクの単位記憶領域ごとに、使用中か否かが設定された管理テーブルを記憶する記憶手段を参照し、前記障害が発生した記憶装置内の記憶領域のうち、使用中の単位記憶領域に割り当てられた記憶領域を、使用されていると判断することを特徴とする付記1記載の管理プログラム。
(付記3) 記憶領域の判断の際には、前記使用されている記憶領域が、ユーザからのアクセス対象のデータの記憶に使用されているのか、該アクセス対象のデータの複製データの格納に使用されているのかを判断し、
復元順の決定の際には、前記アクセス対象のデータの記憶に使用されている記憶領域内のデータまたは冗長コードの復元順を、前記複製データの格納に使用されている記憶領域よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定することを特徴とする付記1または2のいずれかに記載の管理プログラム。
(付記4) 記憶領域の判断の際には、前記複数の記憶装置の記憶領域をまとめた論理ディスクの単位記憶領域ごとに、前記アクセス対象のデータの記憶に使用中か、前記複製データの記憶に使用中か、あるいは未使用かを示すフラグが設定された管理テーブルを記憶する記憶手段を参照し、前記アクセス対象のデータの記憶に使用中の単位記憶領域に割り当てられた前記障害が発生した記憶装置内の記憶領域を、前記アクセス対象のデータの記憶に使用されていると判断し、前記複製データの記憶に使用中の単位記憶領域に割り当てられた前記障害が発生した記憶装置内の記憶領域を、前記複製データの記憶に使用されていると判断することを特徴とする付記3記載の管理プログラム。
(付記5) 復元順の決定の際には、管理情報が記憶された記憶領域内のデータまたは冗長コードの復元順を、前記使用されている記憶領域内のデータまたは冗長コードの復元順よりも先にすることを特徴とする付記1乃至4のいずれかに記載の管理プログラム。
(付記6) 決定された復元順に沿った前記障害が発生した記憶装置内のデータまたは冗長コードの復元を、前記複数の記憶装置を有するストレージ装置に指示する指示手段をさらに有することを特徴とする付記1乃至5のいずれかに記載の管理プログラム。
(付記7) 決定された復元順に沿って、前記複数の記憶装置のうちの前記障害が発生した記憶装置以外の記憶装置それぞれからデータまたは冗長コードを読み出し、前記障害が発生した記憶装置内のデータまたは冗長コードを復元する復元手段をさらに有することを特徴とする付記1乃至6記載の管理プログラム。
(付記8) 複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理装置において、
前記複数の記憶装置のうちの1つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断する判断手段と、
前記使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する決定手段と、
を有することを特徴とする管理装置。
(付記9) 複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理方法において、
コンピュータが、
前記複数の記憶装置のうちの1つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断し、
前記使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する、
ことを特徴とする管理方法。