(57)【要約】      （修正有）【課題】高速なデータ回復、高容量効率、自己回復機能を実現する。【解決手段】ストレージシステムは、第１の複数のハードディスクドライブを有する第１のストレージ装置および第１の制御装置を備える。第１の制御装置はストライプ状に第１の複数のハードディスクドライブにデータを格納する。各ストライプは、第１の複数のハードディスクドライブのＭ＋Ｎハードディスクドライブに割り付けられたＭデータおよびＮパリティデータを有する。第１のハードディスクドライブは第１のストライプおよび第２のストライプの両方のデータあるいはパリティデータを含むが、第２のハードディスクドライブは第１のストライプか第２のストライプのうちの１つだけのデータあるいはパリティデータを含む。障害のあるハードディスクドライブのデータは、各ストライプの他のハードディスクドライブのデータおよびパリティデータを用いた計算によって回復される。【選択図】図１
2010102695.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数のハードディスクドライブを有する第１のストレージ装置と、該第１の複数のハードディスクドライブを制御する第１の制御装置と、を備え、
前記第１の制御装置は、整数たるＭとＮに対して、それぞれＭデータおよびＮパリティデータを含むストライプ状に前記第１の複数のハードディスクドライブにデータを格納し、前記第１の制御装置は前記Ｍデータを使用して、各ストライプに対して前記Ｎパリティデータを計算し、
前記各ストライプの前記Ｍデータおよび前記Ｎパリティデータは前記第１の複数のハードディスクドライブのＭ＋Ｎハードディスクドライブに割り付けられ、
前記第１の複数のハードディスクドライブの第１のハードディスクドライブは、前記ストライプの第１のストライプ、および前記ストライプの第２のストライプの両方のデータあるいはパリティデータを含み、一方、前記第１の複数のハードディスクドライブの第２のハードディスクドライブは、前記ストライプの前記第１のストライプあるいは前記ストライプの前記第２のストライプのうちの片方だけのデータあるいはパリティデータを含み、
前記第１の複数のハードディスクドライブの１台のハードディスクドライブの障害に関わるデータ回復において、前記障害ハードディスクドライブの前記データは、前記各ストライプに対応する前記第１の複数のハードディスクドライブの他のハードディスクドライブのデータおよびパリティデータを用いた計算によって、各ストライプに対して、回復される、
ことを特徴とするストレージシステム。
【請求項２】
前記第１の複数のハードディスクドライブの前記第２のハードディスクドライブは、前記ストライプの前記第１のストライプのデータあるいはパリティデータを含み、
前記第１の複数のハードディスクドライブの第３のハードディスクドライブは、前記ストライプの前記第２のストライプのデータあるいはパリティデータを含み、前記ストライプの前記第１のストライプのデータあるいはパリティデータを含まない、
ことを特徴とする請求項１によるストレージシステム。
【請求項３】
前記Ｍが３であり前記Ｎが１であって、
前記第１の複数のハードディスクドライブの数は４の倍数であり、
前記第１のストライプのデータおよびパリティデータは、前記第１の複数ハードディスクドライブの前記第１と第２のハードディスクドライブ、および前記第１の複数のハードディスクドライブの第４と第５のハードディスクドライブに含まれ、
前記第２のストライプのデータおよびパリティデータは、前記第１の複数のハードディスクドライブの前記第１、第３、第４、第５のハードディスクドライブに含まれる、
ことを特徴とする請求項２によるストレージシステム。
【請求項４】
第２の複数のハードディスクドライブを有する第２のストレージ装置と、該第２の複数のハードディスクドライブを制御する第２の制御装置と、をさらに備え、
前記第１の制御装置により保存される前記データは、前記第２のストレージ装置から受信され、
前記第１の制御装置は複数のプロセッサを有し、
データが前記第２のストレージ装置から前記第１のストレージ装置へ移行する時、前記第２のハードディスクドライブおよび前記第３のハードディスクドライブは、前記複数のプロセッサの異なるプロセッサによって同時にアクセスされる、
ことを特徴とする請求項２によるストレージシステム。
【請求項５】
前記第１の複数の前記ハードディスクドライブの未割り付けのハードディスクドライブを有する容量プールボリュームを、さらに有し、
前記ストライプは前記容量プールボリュームから割り付けられる、
ことを特徴とする請求項２によるストレージシステム。
【請求項６】
第２の複数のハードディスクドライブを有する第２のストレージ装置と、該第２の複数のハードディスクドライブを制御する第２の制御装置と、をさらに備え、
各ストライプの前記割り付けは、前記第２のストレージ装置からの前記データの受信を契機に実行される、
ことを特徴とする請求項５によるストレージシステム。
【請求項７】
各ストライプの前記Ｎパリティデータは、異なるバスを経由して前記第１の制御装置に接続される、
ことを特徴とする請求項２によるストレージシステム。
【請求項８】
第２の複数のハードディスクドライブを有する第２のストレージ装置と、該第２の複数のハードディスクドライブを制御する第２の制御装置と、をさらに備え、
前記第１の制御装置によって保存される前記データは、前記第２のストレージ装置から受信され、
前記第１と第２のストライプのデータおよびパリティデータは前記第１の制御装置によって並列に処理される、
ことを特徴とする請求項１によるストレージシステム。
【請求項９】
前記第１の制御装置は、前記各ストライプの前記第１の複数のハードディスクドライブへの割り付けの情報を含むテーブルを有する、
ことを特徴とする請求項１によるストレージシステム。
【請求項１０】
前記Ｍは６で、前記Ｎは２であり、
前記第１の複数のハードディスクドライブの数は８の倍数であり、
前記第１の複数のハードディスクドライブのうちの１台の障害を含む前記ストライプのうちの１つからデータを読み出す場合には、前記第１の制御装置は、障害のあるハードディスクドライブへのアクセスはせず、前記第１の複数のハードディスクドライブの７台のハードディスクドライブのみにアクセスするように制御される、
ことを特徴とする請求項１によるストレージシステム。
【請求項１１】
前記第１の複数の前記ハードディスクドライブの未割り付けのハードディスクドライブを有する容量プールボリュームを、さらに有し、
前記ストライプは前記容量プールボリュームから割り付けられる、
ことを特徴とする請求項１０によるストレージシステム。
【請求項１２】
第２の複数ハードディスクドライブを有する第２のストレージ装置と、該第２の複数のハードディスクドライブを制御する第２の制御装置と、をさらに備え、
各ストライプの前記割り付けは、前記第２のストレージ装置からの前記データの受信を契機に実行される、
ことを特徴とする請求項１１によるストレージシステム。
【請求項１３】
第１の複数のハードディスクドライブを有する第１のストレージ装置と、該第１の複数のハードディスクドライブを制御する第１の制御装置と、を備えるストレージシステムにおけるデータ回復の方法において、
ＭとＮとは整数であって、それぞれＭデータおよびＮパリティデータを含むストライプ状に、前記第１の制御装置の前記第１の複数のハードディスクドライブにデータを格納し、前記第１の制御装置は前記Ｍデータを使用して、各ストライプに対して前記Ｎパリティデータを計算するステップと、
前記第１の複数のハードディスクドライブの第１のハードディスクドライブは、前記ストライプの第１のストライプ、および前記ストライプの第２のストライプの両方のデータあるいはパリティデータを含むが、前記第１の複数のハードディスクドライブの第２のハードディスクドライブは、前記ストライプの前記第１のストライプ、または前記ストライプの前記第２のストライプのうちの片方だけのデータあるいはパリティデータを含むように、前記各ストライプの前記Ｍデータおよび前記Ｎパリティデータを、前記第１の複数のハードディスクドライブのＭ＋Ｎハードディスクドライブに割り付けるステップと、
前記第１の複数のハードディスクドライブの１台のハードディスクドライブの障害に関わるデータ回復において、前記各ストライプに対応する前記第１の複数のハードディスクドライブの他のハードディスクドライブのデータおよびパリティデータを用いた計算によって、各ストライプに対して、前記障害ハードディスクドライブのデータを回復するステップと、
を有することを特徴とするデータ回復の方法。
【請求項１４】
前記第１の複数のハードディスクドライブの前記第２のハードディスクドライブは、前記ストライプの前記第１のストライプのデータあるいはパリティデータを含み、
前記第１の複数のハードディスクドライブの第３のハードディスクドライブは、前記ストライプの前記第２のストライプのデータあるいはパリティデータを含み、前記ストライプの前記第１のストライプのデータあるいはパリティデータは含まない、
ことを特徴とする請求項１３による方法。
【請求項１５】
前記Ｍは３であって、前記Ｎは１であり、
前記第１の複数のハードディスクドライブの数は４の倍数であり、
前記第１のストライプのデータおよびパリティデータは、前記第１の複数のハードディスクドライブの前記第１と第２のハードディスクドライブ、および前記第１の複数のハードディスクドライブの第４と第５のハードディスクドライブに含まれ、
前記第２のストライプのデータおよびパリティデータは、前記第１の複数のハードディスクドライブの前記第１、第３、第４、第５のハードディスクドライブに含まれる、
ことを特徴とする請求項１４による方法。
【請求項１６】
前記第１のストレージ装置は、さらに、前記第２のハードディスクドライブの前記第１の複数の、未割り付けのハードディスクドライブを持つ容量プールボリュームを有し、前記ストライプは前記容量プールボリュームから割り付けられ、前記ストレージシステムは、さらに、第２の複数のハードディスクドライブと、該複数のハードディスクドライブを制御する第２の制御装置と、を有する第２のストレージ装置を備えており、
前記第２のストレージ装置からの前記データの受信を契機に、各ストライプの前記割り付けを実行するステップを、
さらに有することを特徴とする請求項１４による方法。
【請求項１７】
前記Ｍは６であり、前記Ｎは２であり、前記第１の複数のハードディスクドライブの数は８の倍数であって、
前記第１の複数のハードディスクドライブのうちの１台の障害を含む前記ストライプのうちの１つからデータを読み出す場合には、前記第１の制御装置を、前記障害のあるハードディスクドライブへのアクセスはせず、前記第１の複数のハードディスクドライブの７台のハードディスクドライブのみにアクセスするように制御するステップを、
さらに有することを特徴とする請求項１３による方法。
【請求項１８】
前記第１のストレージ装置は、さらに前記第１の複数の前記ハードディスクドライブの未割り付けのハードディスクドライブをもつ容量プールボリュームを有し、
前記容量プールボリュームから、各前記ストライプを割り付けるステップを、
さらに有することを特徴とする請求項１７による方法。
【請求項１９】
前記ストレージシステムは、さらに、第２の複数のハードディスクドライブを持つ第２のストレージ装置と、該第２の複数のハードディスクドライブを制御する第２の制御装置とを有し、
前記第２のストレージ装置からの前記データの受信を契機に各ストライプの前記割り付けを実行するステップを、
さらに有することを特徴とする請求項１８による方法。
【請求項２０】
第１の複数のハードディスクドライブを有する第１のストレージ装置と、該第１の複数のハードディスクドライブを制御する第１の制御装置とを備えるストレージシステムにおいて、データ回復を行うためにデータ処理装置を制御するための複数の命令を格納するコンピュータ可読媒体であって、
ＭとＮとは整数であって、それぞれＭデータおよびＮパリティデータを含むストライプ状に、前記第１の制御装置の前記第１の複数のハードディスクドライブに、前記データ処理装置にデータを格納させ、前記第１の制御装置は前記Ｍデータを使用して、各ストライプに対して前記Ｎパリティデータを計算する、命令と、
前記第１の複数のハードディスクドライブの第１のハードディスクドライブは、前記ストライプの第１のストライプ、および前記ストライプの第２のストライプの両方のデータあるいはパリティデータを含み、前記第１の複数のハードディスクドライブの第２のハードディスクドライブは、前記ストライプの前記第１のストライプあるいは前記ストライプの前記第２のストライプのうちの片方だけのデータあるいはパリティデータを含むように、前記各ストライプの前記Ｍデータおよび前記Ｎパリティデータを、前記第１の複数のハードディスクドライブのＭ＋Ｎハードディスクドライブに割り付ける命令と、
前記第１の複数のハードディスクドライブの１台のハードディスクドライブの障害に関わるデータ回復において、前記各ストライプに対応する前記第１の複数のハードディスクドライブの他のハードディスクドライブのデータおよびパリティデータを用いた計算によって、前記各ストライプに対して、前記障害ハードディスクドライブの前記データを回復する命令と、
を格納することを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１  本発明は、一般的にはストレージシステムにおけるデータ回復に関するものであり、特にＨＤＤ（ハードディスクドライブ）障害のような、ストレージ装置の障害時における高速なデータ回復のための方法および装置に関するものである。本発明は、ディスク障害時におけるストレージデータ回復の迅速さ、およびディスク保守の容易さを実証する。
【背景技術】
【０００２】
０００２  現在、ＲＡＩＤ（Redundant Array of Independent Disks）構成が、ディスク障害からデータを保護するために一般的に使用されている。例えば、ＲＡＩＤ５とＲＡＩＤ６では、各々、ＲＡＩＤグループの１台のディスク障害から回復することが可能である。ＲＡＩＤ５とＲＡＩＤ６は、各々、ＲＡＩＤ１またはＲＡＩＤ１０より容量に関し、より効率的である。ディスク障害が生じた場合、ストレージシステムは予約済の“予備ディスク”にデータを回復する。データを回復するためには、正常なディスクの全領域にアクセスする必要がある。データ回復に要する時間は、ディスクの容量およびディスクのスループット性能に依存する。一般的に言えば、容量の技術成長率はスループットのそれよりも大きい。その結果として、ＲＡＩＤ手法はディスク障害から回復するのが遅く、年々より遅くなって行くであろう。データ回復に、長い時間がかかると、再構成のためのディスクのＩ/Ｏ（入／出力）と通常のディスクのＩ/Ｏの間の干渉によって、長時間の性能低下を引き起こす可能性がある。データ回復に長時間がかかると、さらにデータ回復中に次のディスク障害に遭遇する可能性もある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
０００３  ＲＡＩＮ（Redundant Array of Independent Nodes：独立したノードの冗長アレイ）に基づいた別のアプローチのもとでは、ストレージシステムは複数のノード（ディスク、ストレージサブシステムなど）を有している。ストレージシステムは、適切に選ばれた２つ以上のノードにデータを格納する。ノード障害が生じた時には、ストレージシステムは冗長データから別のノードにデータをコピーする。この特化プロセスにより回復の性能は改善され得る。ＲＡＩＤ手法は１つ以上の予備ディスクを保有する必要があるので、ＲＡＩＮ手法のもとでの回復時間は、ＲＡＩＤ手法より高速になるであろう。ＲＡＩＮ手法においては、空きスペースへ冗長データを自動的に格納するので、予備のディスクを保持する必要が無い（自己回復）。一方、ＲＡＩＮ手法のもとでの容量効率は、ＲＡＩＤ手法のそれより低くなる。
【０００４】
０００４  本発明の実施形態は、ＨＤＤ障害のようなストレージ装置障害からの高速なデータ回復のための方法と装置を提供する。複数のディスクにデータを分散し、分散したデータにＲＡＩＤ技術を使用し、仮想ボリュームと物理ディスクの間のページマッピング管理を行い、ページからページへのコピーによる並列アクセスによるデータ回復により、本発明は高速データ回復、高容量効率、自己回復機能を実現する。
【課題を解決するための手段】
【０００５】
０００５  本発明の一つの態様によれば、ストレージシステムは、第１の複数のハードディスクドライブを持つ第１のストレージ装置と、第１の複数のハードディスクドライブを制御する第１の制御装置とを有する。第１の制御装置は、ストライプ（縞模様）状にデータを第１の複数のハードディスクドライブに格納する。各ストライプはそれぞれＭデータおよびＮパリティデータを含む。ここでＭとＮは整数である。また、第１の制御装置はＭデータを使用して、各ストライプに対してＮパリティデータを計算する。各ストライプのＭデータおよびＮパリティデータは、第１の複数のハードディスクドライブのＭ＋Ｎ台のハードディスクドライブに割り付けられる。第１の複数のハードディスクドライブ内の、第１のハードディスクドライブは、ストライプの内の第１のストライプおよび第２のストライプの両方のデータまたはパリティデータを有するが、第１の複数のハードディスクドライブ内の、第２のハードディスクドライブは、ストライプの内第１のストライプか第２のストライプのどちらか１つだけのデータまたはパリティデータを有する。第１の複数のハードディスクドライブのうちの１台に障害が生じ、この障害に関わるデータ回復においては、障害ハードディスクドライブのデータは、各ストライプに対して、第１の複数のハードディスクドライブの他のハードディスクドライブのデータおよびパリティデータを使用した計算によって回復される。
【０００６】
０００６  ある実施例においては、第１の複数のハードディスクドライブの第２のハードディスクドライブは、ストライプの内の第１のストライプのデータあるいはパリティデータを有する。第１の複数のハードディスクドライブの第３のハードディスクドライブは、ストライプの内の第２のストライプのデータまたはパリティデータを有しており、第１のストライプのデータまたはパリティデータを有してはいない。さらに、Ｍは３でありＮは１である。第１の複数のハードディスクドライブの数は、４の倍数である。第１のストライプのデータとパリティデータは、第１の複数のハードディスクドライブの第１と第２のハードディスクドライブ、および第４と第５のハードディスクドライブに含まれる。第２のストライプのデータおよびパリティデータは、第１の複数のハードディスクドライブの第１、第３、第４、第５のハードディスクドライブに含まれる。
【０００７】
０００７  特定の実施例においては、ストレージシステムは、更に、第２の複数のハードディスクドライブを有する第２のストレージ装置、および第２の複数のハードディスクドライブを制御する第２の制御装置を有する。第１の制御装置により保存されるデータは、第２のストレージ装置から受診される。第１の制御装置は複数のプロセッサを有する。データが第２のストレージ装置から第１のストレージ装置へ移行する時、第２のハードディスクドライブおよび第３のハードディスクドライブは、複数のプロセッサの異なるプロセッサによって同時にアクセスされる。ストレージシステムは、さらに、第１の複数のハードディスクドライブの未割り付けのハードディスクドライブを持つ容量プールボリュームを有する。ストライプは容量プールボリュームから割り付けられる。各ストライプの割り付けは、第２のストレージ装置からのデータの受信を契機に行われる。各ストライプのＮパリティデータは異なるバスを経由して第１の制御装置に接続される。
【０００８】
０００８  ある実施例においては、ストレージシステムは、さらに、第２の複数のハードディスクドライブを有する第２のストレージ装置と、第２の複数のハードディスクドライブを制御する第２の制御装置とを有する。第１の制御装置によって保存されるデータは、第２のストレージ装置から受信される。第１および第２のストライプのデータおよびパリティデータは、第１の制御装置によって並列に処理される。第１の制御装置は、第１の複数のハードディスクドライブへの、各ストライプの割り付け情報を含むテーブルを有する。Ｍは６であり、Ｎは２である。第１の複数のハードディスクドライブの数は、８の倍数である。第１の複数のハードディスクドライブのうちの１つが障害を持つストライプからデータを読み出す場合には、第１の制御装置は障害のあるハードディスクドライブへはアクセスをせず、第１の複数のハードディスクドライブの７台のハードディスクドライブにのみアクセスするように制御される。ストレージシステムは、さらに、第１の複数のハードディスクドライブの内、未割り付けのハードディスクドライブを持つ容量プールボリュームを有する。ストライプは容量プールボリュームから割り付けられる。ストレージシステムは、さらに、第２の複数ハードディスクドライブを持つ第２のストレージ装置と、第２の複数のハードディスクドライブを制御する第２の制御装置とを有する。各ストライプの割り付けは、第２のストレージ装置からのデータの受信を契機に行われる。
【０００９】
０００９  本発明の別の態様は、第１の複数ハードディスクドライブを有する第１のストレージ装置と、第１の複数のハードディスクドライブを制御する第１の制御装置と、を有するストレージシステムにおけるデータ回復のための方法に向けられる。本方法は、第１の制御装置の第１の複数のハードディスクドライブにデータをストライプ状に格納し、各ストライプは、整数のＭとＮに対して、それぞれＭデータおよびＮパリティデータを含み、第１の制御装置はＭデータを使用して、各ストライプに対してＮパリティデータを計算するステップと、各ストライプのＭデータおよびＮパリティデータを、第１の複数のハードディスクドライブのＭ＋Ｎハードディスクドライブへ割り付け、第１の複数のハードディスクドライブの第１のハードディスクドライブは、ストライプのうちの第１のストライプおよび第２のストライプの両方のデータあるいはパリティデータを含み、第１の複数のハードディスクドライブの第２のハードディスクドライブは、第１のストライプまたは第２のストライプのうちの１つだけのデータあるいはパリティデータを含むようにするステップと、第１の複数のハードディスクドライブの１台に障害を生じ、データ回復を行う場合、第１の複数のハードディスクドライブの他のハードディスクドライブのデータおよびパリティデータを使用して計算することによって、各ストライプに対し障害ハードディスクドライブのデータを回復するステップと、を有することを特徴とする。
【００１０】
００１０  本発明の別の態様は、第１の複数のハードディスクドライブを持つ第１のストレージ装置と、第１の複数のハードディスクドライブを制御する第１の制御装置とを有するストレージシステムにおいて、データ回復を行うようデータ処理装置を制御するための複数の命令を格納するコンピュータ可読媒体に向けられる。コンピュータ可読媒体は、データ処理装置に、第１の制御装置の第１の複数のハードディスクドライブに、データを、整数のＭとＮに対して、各々ＭデータおよびＮパリティデータを含むストライプ状に格納させ、第１の制御装置がＭデータを使用して、各ストライプに対しＮパリティデータを計算するようにさせる命令と、各ストライプのＭデータおよびＮパリティデータを、第１の複数のハードディスクドライブのＭ＋Ｎハードディスクドライブへ割り付け、そこでは第１の複数のハードディスクドライブの第１のハードディスクドライブは、ストライプのうちの第１のストライプおよび第２のストライプの両方のデータあるいはパリティデータを含み、第１の複数のハードディスクドライブの第２のハードディスクドライブは、第１のストライプまたは第２のストライプのうちの１つだけのデータあるいはパリティデータを含むようにする命令と、第１の複数のハードディスクドライブの１台に障害を生じ、データ回復を行う場合、第１の複数のハードディスクドライブの他のハードディスクドライブのデータおよびパリティデータを使用して計算することによって、各ストライプに対し障害ハードディスクドライブのデータを回復させる命令と、を有することを特徴とする。データ処理装置は第１の制御装置に存在してもよい。
【００１１】
００１１  本発明の、これらの、および他の特徴および利点は、以下の具体的な実施例の詳細な説明の参照により、同業者には明白になるであろう。
【図面の簡単な説明】
【００１２】
【図１】００１２    図１は、本発明の方法および装置が適用されるシステムのハードウエア構成を示す。
【図２】００１３    図２は、本発明の第１の実施例による図１のストレージサブシステムにおけるメモリの例を示す。
【図３】００１４    図３は、図２のメモリにあるＲＡＩＤグループ管理テーブルの例を示す。
【図４】００１５    図４は、図２のメモリにある仮想ボリューム管理テーブルの例を示す。
【図５】００１６    図５は、図２のメモリにある仮想ボリュームページ管理テーブルの例を示す。
【図６】００１７  図６は、図２のメモリにある容量プールチャンク管理テーブルの例を示す。
【図７】００１８  図７は、図２のメモリにある容量プールページ管理テーブルの例を示す。
【図８】００１９  図８は、図２のメモリにあるキャッシュ管理テーブルの例を示す。
【図９】００２０  図９は、各々複数のパーセルを有する８つのＨＤＤを持つ、５ｘ２  ＲＡＩＤグループの例を示す。
【図１０】００２１  図１０は、各々複数のストライプを有する複数のパーセルを持つチャンクの例を示す。
【図１１】００２２  図１１は、複数のページを持つチャンクの例を示す。
【図１２】００２３  図１２は、複数のページを持つ仮想ボリュームの例を示す。
【図１３】００２４  図１３は、複数のスロットを持つページの例を示す。
【図１４】００２５  図１４は、仮想ボリュームおよびその仮想ボリューム管理テーブルおよび仮想ボリュームページ管理テーブルの例を示す。
【図１５】００２６  図１５は、図１４の仮想ボリュームにおける容量プールへのテーブルを参照する構成例を示す。
【図１６】００２７  図１６は、仮想ボリュームへのテーブル参照の構造例を示す。
【図１７】００２８  図１７は、図２のメモリにある書き込みＩ／Ｏ制御の処理フローの例を示す。
【図１８】００２９  図１８は、図２のメモリにある読み出しＩ／Ｏ制御の処理フローの例を示す。
【図１９】００３０  図１９は、図２のメモリにあるステージング制御の処理フローの例を示す。
【図２０】００３１  図２０は、図２のメモリにあるデステージング制御の処理フローの例を示す。
【図２１】００３２  図２１は、図２のメモリにあるコピー制御の処理フローの例を示す。
【図２２】００３３  図２２は、図２のメモリにあるパリティ計算制御の処理フローの例を示す。
【図２３】００３４  図２３は、図２のメモリにある物理ディスクアドレス制御の処理フローの例を示す。
【図２４】００３５  図２４は、図２のメモリにあるフラッシュ制御の処理フローの例を示す。
【図２５】００３６  図２５は、図２のメモリにあるキャッシュ制御の処理フローの例を示す。
【図２６】００３７  図２６は、図２のメモリにあるページ検出制御（Ａ）の処理フローの例を示す。
【図２７】００３８  図２７は、図２のメモリにあるページ検出制御（Ｂ）の処理フローの例を示す。
【図２８】００３９  図２８は、図２のメモリにあるページ移行制御の処理フローの例を示す。
【図２９】００４０  図２９は、チャンクとページのコピーによるデータ回復の例を示す。
【図３０】００４１  図３０は、図２９のデータ回復の要約およびシーケンスを示す。
【図３１】００４２  図３１は、チャンクとページのコピーによるデータ回復の全体的なシーケンスを示す。
【図３２】００４３  図３２は、本発明の第２の実施例による図１のストレージサブシステムのメモリの例を示す。
【図３３】００４４  図３３は、図３２のメモリにあるＨＤＤ管理テーブルの例を示す。
【図３４】００４５  図３４は、図３２のメモリにある仮想ボリューム管理テーブルの例を示す。
【図３５】００４６  図３５は、図３２のメモリにある仮想ボリュームページ管理テーブルの例を示す。
【図３６】００４７  図３６は、図３２のメモリにある容量プールチャンク管理テーブルの例を示す。
【図３７】００４８  図３７は、仮想ボリュームおよびその仮想ボリューム管理テーブルおよび仮想ボリュームページ管理テーブルの例を示す。
【図３８】００４９  図３８は、図３７の仮想ボリュームにおける容量プールへのテーブル参照の構造例を示す。
【図３９】００５０  図３９は、図３２のメモリにあるページ検出制御（Ａ）の処理フローの例を示す。
【図４０】００５１  図４０は、図３２のメモリにあるページ移行制御の処理フローの例を示す。
【発明を実施するための形態】
【００１３】
００５２    本発明の以下の詳細な説明において、添付図面を参照するが、これらの図面は開示の一部を形成するものであり、その図面には発明が実行される典型的な実施例を説明のために図示するが 、本発明の実施はこれらに限定されるものではない。これらの図面の中で、同じ数字はいくつかの画面を通して実質的に同様の構成部分を記述している。さらに、以下に記述され、図面の中で例証されるように、様々な典型的な実施例について詳細な説明がなされるが、本発明は、ここに記述され図示されている実施例に制限されるものではなく、むしろ、当業者が知ることとなり、あるいは知ることになるであろうことに従い、他の実施例にまで拡張できることに注意願いたい。明細書の中において、「１つの実施例」、「この実施例」あるいは「これらの実施例」などの参照がなされるが、これは実施例に関して記述された特別の特徴、構成あるいは特性が発明の少なくとも１つの実施例に含まれることを意味するものであって、明細書の中の様々な場面でこの言葉が用いられても、必ずしもすべて同じ実施例を指しているわけではない。さらに、以下の詳細な説明において、本発明についての完全な理解を得るために、多くの具体的な詳細な事項が述べられる。しかしながら、同業者には、本発明を実施するために、これらの具体的な詳細事項が必ずしもすべてが必要ではないことは明白であろう。あるいはまた、本発明を必ずしも不明瞭にしない範囲で、公知の構成、材料、回路、プロセスおよびインターフェースなどは詳細には記述せず、そして／またはブロック図の形で説明する場合がある。
【００１４】
００５３    更に、以下の詳細な説明のある部分は、コンピュータの動作のアルゴリズムに関わる表現や記号表現で示されている。これらのアルゴリズム的な記述および記号表現は、データ処理技術に関わる専門の人々によって、彼らの新技術のエッセンスを、最も有効に他の専門家に伝えるために使用される手段である。アルゴリズムとは、望ましい最終状態または結果に導いて行く、一連の定義されたステップである。本発明においては、実行されるステップは、有形の結果を得るために有形の物理量の操作を必要とする。通常、必ずという訳ではないが、これら物理量は、格納され、転送され、組み合わせられ、比較され、あるいは他の操作を受けることが出来る、電気的または磁気的な信号または命令の形態をとる。主に一般的に良く使われているという理由から、時にはこれらの信号を、ビット、値、要素、記号、文字、用語、数、命令などと呼ぶことが便利であると分かっている。しかしながら、これらとこれらの同類語の総ては、適切な物理量に関連付けられており、これらの量に適用された単に便利なラベルに過ぎないということは心に留めておかねばならない。特に具体的記述がない限り、以下の説明からも明白なように、本記述の全体を通して、“処理"、“コンピューティング”、“計算”、“決定する”、“表示する”、などのような用語を用いた議論は、コンピュータシステム内のレジスタやメモリ内で物理的な（電子）量として表わされるデータを操作し、他の同じようなコンピュータシステムのメモリ、レジスタ、他の情報ストレージ、表示装置において同じように物理量として表現される他のデータへ変換するコンピュータシステムあるいは他の情報処理装置の動作および処理を含むことがあることを理解願いたい。
【００１５】
００５４    以下に、より詳細に記述するように、本発明の典型的な実施例は、ストレージ装置障害からの高速なデータ回復のための装置、方法およびコンピュータープログラムを提供する。
【００１６】
００５５    図１は、本発明の方法および装置が適用されるシステムのハードウエア構成を示す。ストレージサブシステム１００はＳＡＮ（ストレージエリアネットワーク）を経由してホストコンピュータ３００に接続される。ストレージサブシステム１００はストレージ制御装置１１０およびディスク装置１２０を有する。ストレージ制御装置１１０は、ストレージサブシステム１００を制御し、プログラムを実行し、メモリ１１２に格納されたテーブルを使用するＣＰＵ（中央処理装置）１１１を有する。メモリ１１２はプログラムとテーブルに加えてデータを格納する。チャネルインターフェース１１３はＳＡＮ２００と接続するために用意される。ストレージ制御装置１１０は、ディスク装置１２０の中のディスク１２１ａから１２１ｄに接続されるディスクインターフェース１１５ａから１１５ｄを有する。ストレージ制御装置１１０は、さらに、メモリ１１２とディスク１２１の間のデータ転送を行い、パリティデータまたは回復データを生成するためにデータを計算するように構成されたデータ転送制御装置１１６ａから１１６ｄを備える。ディスク装置１２０はデータの格納のために不揮発性のディスク１２１を備える。
第１の実施例
【００１７】
００５６    図２は、本発明の第１の実施例による図１のストレージサブシステム１００のメモリ１１２の例を示す。メモリ１１２は、ディスク１２１およびそれらのグループの物理構造管理のためのＲＡＩＤグループ管理テーブル１１２−１１−１（図３）、およびボリューム構成管理のための仮想ボリューム管理テーブル１１２−１１−２（図４）を持つ、ボリューム管理テーブル１１２−１１を有する。キャッシュ管理テーブル１１２−１４（図８）は、キャッシュデータ領域１１２−３０を管理するためとＬＲＵ／ＭＲＵ管理のために配備される。シンプロビジョニング管理テーブル１１２−１５は、仮想ボリュームのパーテイションから容量プールのパーテイションへの参照管理のための仮想ボリュームページ管理テーブル１１２−１５−１（図５）と、容量プールのリソース管理および容量プールページから仮想ボリュームページへの参照管理のための容量プールチャンク管理テーブル１１２−１５−２（図６）と、容量プールチャンクのリソース管理のための容量プールページ管理テーブル１１２−１５−３（図７）と、を有する。ボリュームＩ／Ｏ制御１１２−２１は、書き込みＩ／Ｏ要求によって動作し、チャネルインターフェース１１３経由で書き込みデータを受信しキャッシュデータ領域１１２−３０への書き込みを行う書き込みＩ／Ｏ制御１１２−２１−１（図１７）、および読み出しＩ／Ｏ要求によって動作しチャネルインターフェース１１３経由でキャッシュデータ領域１１２−３０から読み出したデータを送信する読み出しＩ／Ｏ制御１１２−２１−２（図１８）を有する。物理ディスク制御１１２−２２は、ディスク１２１からキャッシュデータ領域１１２−３０へデータを転送するステージング制御１１２−２２−１（図１９）と、キャッシュデータ領域１１２−３０からディスク１２１へデータを転送するデステージング制御１１２−２２−２（図２０）と、キャッシュデータ領域１１２−３０のデータをコピーするコピー制御１１２−２２−３（図２１）と、ディスク１２１に保存された冗長データを計算し失われたデータを回復するパリティ計算制御１１２−２２−４（図２２）と、容量プールデータの物理アドレスを計算し決定する物理ディスクアドレス制御１１２−２２−５（図２３）と、を有する。メモリ１１２は、さらに、周期的にキャッシュデータ領域１１２−３０からディスク１２１にダーテイデータを吐き出すフラッシュ制御１１２−２３（図２４）、またキャッシュデータ領域１１２−３０のキャッシュにキャッシュされたデータを検出しキャッシュデータ領域１１２−３０に新しいキャッシュ領域を割り付けるキャッシュ制御１１２−２４（図２５）を有する。シンプロビジョニング制御１１２−２５は、仮想ボリュームページによって参照された容量プールページを検索する（容量プールページが仮想ボリュームページに割り付けられていない場合には、仮想ボリュームページに対して新しい容量プールページを割り付ける）ページ検出制御１１２−２５−１（図２６）と、仮想ボリュームページによって参照された容量プールページを検索する（容量プールページが仮想ボリュームページに割り付けられていない場合、“ゼロ保有ページ”のアドレスを答える）ペー��検出制御１１２−２５−２（図２７）と、ディスク障害が生じた場合、容量プールページを他の容量ページに移動させるページ移行制御１１２−２５−３（図２８）と、を有している。メモリ１１２は、実行プログラムのスケジュールを制御し、マルチタスク環境を支援するカーネル１１２−４０を備える。プログラム、がack応答（acknowledgement：確認応答）を待つ場合、ＣＰＵ１１１は別のタスクを実行するように変わる（例えばディスク１２１からキャッシュデータ領域１１２−３０へのデータ転送待ち）。キャッシュデータ領域１１２−３０は読み出しあるいは書き込みキャッシュデータを格納し、複数のキャッシュスロットに分割されている。
【００１８】
００５７    図３は、図２のメモリ１１２にあるＲＡＩＤグループ管理テーブル１１２−１１−１の例を示す。ＲＡＩＤグループ管理テーブル１１２−１１−１は、ＲＡＩＤグループのＩＤとしてのＲＡＩＤグループ番号１１２−１１−１−１と、ＲＡＩＤグループの構成を表わすＲＡＩＤレベル１１２−１１−１−２との欄を有する。例えば、“５ｘＮ”（Ｎは数である）は、“ＲＡＩＤレベルは５（３Ｄ＋１Ｐ）である”、ことと“８Ｎ  ＨＤＤから成る”ことを意味する。“Ｎ／Ａ”は、該当ＲＡＩＤグループが存在しないことを意味する。ＲＡＩＤグループ管理テーブル１１２−１１−１は、さらにＲＡＩＤグループに属するＨＤＤのＩＤリストを表わすＨＤＤ番号１１２−１１−１−３と、冗長領域以外のＲＡＩＤグループの総容量を表わすＲＡＩＤグループ容量１１２−１１−１−４と、未使用のシンプロビジョニングチャンクを管理するための未使用チャンクキューインデックス１１２−１１−１−５と、使用シンプロビジョニングチャンクを管理するための使用チャンクキューインデックス１１２−１１−１−６と、の欄を有する。
【００１９】
００５８    図４は、図２のメモリ１１２にある仮想ボリューム管理テーブル１１２−１１−２の例を示す。仮想ボリューム管理テーブル１１２−１１−２は、仮想ボリュームのＩＤを表わす仮想ボリューム番号１１２−１１−２−１と、仮想ボリュームの容量を表わす（“Ｎ／Ａ”は仮想ボリュームが存在しないことを意味する）仮想ボリューム容量１１２−１１−２−２と、仮想ボリュームが現在使用しているチャンクのＲＡＩＤグループＩＤを表わす使用ＲＡＩＤグループ番号１１２−１１−２−３と、仮想ボリュームが現在使用しているチャンクＩＤを表わす使用チャンク番号あるいは使用容量プールチャンク番号１１２−１１−２−４との欄を有している。
【００２０】
００５９    図５は、図２のメモリ１１２にある仮想ボリュームページ管理テーブル１１２−１５−１の例を示す。仮想ボリュームページ管理テーブル１１２−１５−１は、仮想ボリュームページのトップアドレスを表わす仮想ボリュームページインデックス１１２−１５−１−１と、仮想ボリュームページが属するＲＡＩＤグループＩＤを表わすＲＡＩＤグループ番号１１２−１５−１−２（“Ｎ／Ａ”は、容量プールページが仮想ボリュームページに割り付けられていないことを意味する）と、仮想ボリュームページが参照する容量プールページのトップアドレスを表わす容量プールページインデックス１１２−１５−１−３と、の欄を有する。
【００２１】
００６０    図６は、図２のメモリ１１２にある容量プールチャンク管理テーブル１１２−１５−２の例を示す。容量プールチャンク管理テーブル１１２−１５−２は、容量プールチャンクのＩＤを表わす容量プールチャンク番号１１２−１５−２−１と、容量プールチャンクを参照するのに使用する仮想ボリュームのＩＤを表わす仮想ボリューム番号１１２−１５−２−２と、容量プールチャンクの使用容量を表わす使用容量１１２−１５−２−３と、一旦その領域が使用し容量プールチャンクの削除された容量を表わす削除容量１１２−１５−２−４と、キュー管理のための前のチャンクポインタを表わす前チャンク番号１１２−１５−２−５と、キュー管理のための次のチャンクポインタを表わす次チャンク番号１１２−１５−２−６（“ＮＵＬＬ”は、キューの終端を意味する）と、の欄を有する。
【００２２】
００６１    図７は、図２のメモリ１１２にある容量プールページ管理テーブル１１２−１５−３の例を示す。容量プールページ管理テーブル１１２−１５−３は、容量プールページのＩＤを表わす容量プールページインデックス１１２−１５−３−１と、容量プールページを参照するのに使用する仮想ボリュームページのＩＤを表わす仮想ボリュームページ番号１１２−１５−３−２（“ＮＵＬＬ”は容量プールページが使用されていないことを意味する）と、の欄を有する。
【００２３】
００６２    図８は、図２のメモリ１１２にあるキャッシュ管理テーブル１１２−１４の例を示す。キャッシュ管理テーブル１１２−１４は、キャッシュデータ領域１１２−３０のキャッシュスロットのＩＤを表わすキャッシュスロット番号１１２−１４−１と、キャッシュスロットがデータを格納するディスク１２１のＩＤを表わすディスク番号１１２−１４−２と、キャッシュスロットがデータを格納するディスクアドレスを表わすディスクアドレス１１２−１４−３と、キュー管理のための次のキャッシュスロット番号を表わす次スロットポインター１１２−１４−４（“ＮＵＬＬ”は、キューの終端を意味する）と、キャッシュスロットキューの種類を表わすキューの種類情報１１２−１４−５（表の“未使用”は、未使用のキャッシュスロットがあるキューを意味する、“クリーン”は、ディスクスロットと同じデータを格納するキューを意味する、“ダーティ”はディスクスロットとは異なったデータを格納するキャッシュスロットがあるキューを意味し、従って、ストレージ制御装置１１０は、将来キャッシュスロットデータをディスクスロットへフラッシュする必要がある）と、キャッシュスロットキューのインデックスを表わすキューインデックスポインター１１２−１４−６と、の欄を有する。
【００２４】
００６３    図９〜図１１はデータの配置を示すために用意した。図９は、各々複数の“パーセル”を持つ８つのＨＤＤより成る５ｘ２ＲＡＩＤグループの例を示す。パーセルは同じＨＤＤの連続の複数ストライプから成る。図１０は、各々複数のストライプを有する複数のパーセルより成るチャンクの例を示す。ディスク１２１ａ、１２１ｂ、１２１ｃ、１２１ｄ、１２１ｅ、１２１ｆ、１２１ｇおよび１２１ｈがＲＡＩＤグループを構成する。このＲＡＩＤグループのＲＡＩＤレベルはＲＡＩＤレベル２−１１−１−２で“５ｘ２”として表現している。各ディスクは複数のパーセル１２１−４に分割される。各パーセル１２１−４は複数の容量プールストライプ１２１−３に分割される。４つのパーセル１２１−４がチャンク１２１−１を構成する。チャンク１２１−１中の４つのパーセル１２１−４の各々は、二重障害発生を回避するために異なるディスクインターフェース１１５ａ−１１５ｄに接続された１つのディスク１２１に所属する。これらの４つのパーセル１２１−４の選択は、均等に分配するアルゴリズム(evenly-distributed algorithm)に従う。各チャンク１２１−１には、冗長アレイを構築する複数の容量プールストライプ１２１−３がある。図１１に示すように、各チャンク１２１−１はそれぞれ複数の容量プールページ１２１−２に分割される。容量プールページ１２１−２はそれぞれシンプロビジョニング割り付け単位である。各容量プールページ１２１−２は複数の容量プールストライプ１２１−３を有する。
【００２５】
００６４    一般に、ストレージ制御装置はストライプ状にハードディスクドライブにデータを格納し、ＭとＮが整数であって、ストライプはそれぞれＭデータおよびＮパリティデータを含み、また、ストレージ制御装置はＭデータを使用して、各ストライプに対してＮパリティデータを計算する。各ストライプのＭデータおよびＮパリティデータはＭ＋Ｎハードディスクドライブに割り付けられる。第１のハードディスクドライブは、ストライプの第１のストライプおよび第２のストライプの両方のデータあるいはパリティデータを含むが、第２のハードディスクドライブは、第１のストライプか第２のストライプのうちの１つだけのデータあるいはパリティデータを含む。ハードディスクドライブのうちの１台の障害に関わるデータ回復においては、故障したハードディスクドライブのデータは、各ストライプの第１の複数のハードディスクドライブの他のハードディスクドライブのデータおよびパリティデータを用いて計算することによって、各ストライプに対して回復される。これらは、図２９〜図３１に関蓮して詳細に以下で議論される。
【００２６】
００６５    ある事例では、第２のハードディスクドライブは、ストライプ群の第１のストライプのデータあるいはパリティデータを有する。第３のハードディスクドライブは、ストライプ群の第２のストライプのデータあるいはパリティデータを有し、第１のストライプのデータあるいはパリティデータを有してはいない。さらに、Ｍは３であり、Ｎは１である。ハードディスクドライブの数は４の倍数である。第１のストライプのデータおよびパリティデータは、第１および第２のハードディスクドライブ、および第４と第５のハードディスクドライブに含まれる。第２のストライプのデータおよびパリティデータは第１、第３、第４、第５のハードディスクドライブに含まれる。データが別のストレージ装置から緊急のストレージ装置に移行する場合、第２のハードディスクドライブおよび第３のハードディスクドライブは、異なるプロセッサによって同時にアクセスされる。各ストライプのＮパリティデータは異なるバスを経由して第１の制御装置に接続している。
【００２７】
００６６    図１２は、複数の仮想ボリュームページ１４１−２を持つ仮想ボリューム１４１の例を示す。仮想ボリュームページ１４１−２のサイズは、冗長容量を除いて容量プールページ１２１−２のサイズに等しい。図１３に見るように、仮想ボリュームページ１４１−２は仮想ボリュームスロット１４１−３に分割される。１つの仮想ボリュームページ１４１−２の仮想ボリュームスロット１４１−３の数は、冗長ストライプを除いて１つの容量プールページ１２１−２の容量プールストライプ１２１−３の数と同じである。
【００２８】
００６７    図１４は、仮想ボリューム１４１、その仮想ボリューム管理テーブル１１２−１１−２、および仮想ボリュームのページ管理テーブル１１２−１５−１の例を示す。
実線の矢印は、対象をポインターで示すことを意味する（仮想ボリュームページ管理テーブル１１２−１５−１から容量プールチャンク１２１−１および容量プールページ１２１−２へ）、一方、点線の矢印は対象を計算により示すことを意味する（仮想ボリューム１４１、管理テーブル１１２−１１−２および１１２−１５−１の間で）。仮想ボリューム１４１および仮想ボリューム管理テーブル１１２−１１−２は、１対１の関係にある。仮想ボリューム管理テーブル１１２−１１−２は、現在の容量プールチャンク１２１−１を使用している容量を示す。仮想ボリュームページ１４１−２および仮想ボリュームページ管理テーブル１１２−１５−１は、１対１の関係にある。ページが割り付け済の場合、仮想ボリュームページ管理テーブル１１２−１５−１は容量プールページ１２１−２を参照する。
【００２９】
００６８    図１５は、図１４の仮想ボリューム１４１における容量プールへのテーブル参照の構成例を示す。実線の矢印は、対象をポインターで示すことを意味する（容量プールページ管理テーブル１１２−１５−３およびＲＡＩＤグループ管理テーブル１１２−１１−１から仮想ボリューム１４１および仮想ボリュームページ１４１−２へ、更にＲＡＩＤグループ管理テーブル１１２−１１−１から容量プールチャンク１２１−１へ）。点線の矢印は対象の参照を計算により示すことを意味する（容量プールページ管理テーブル１１２−１５−３、容量プールチャンク管理テーブル１１２−１５−２、ＲＡＩＤグループ管理テーブル１１２−１１−１およびＲＡＩＤグループ（容量プールチャンク１２１−１および容量プールページ１２１−２を含む）の間で）。ＲＡＩＤグループとＲＡＩＤグループ管理テーブル１１２−１１−１は１対１の関係にある。ＲＡＩＤグループ管理テーブル１１２−１１−１は、使用又は未使用の容量プールチャンク１１２−１を参照する。容量プールチャンク１２１−１と容量プールチャンク管理テーブル１１２−１５−２は、１対１の関係にある。容量プールチャンク管理テーブル１１２−１５−２は仮想ボリューム１４１を参照する。容量プールページ１２１−２と容量プールページ管理テーブル１１２−１５−３は、１対１の関係にある。容量プールページ管理テーブル１１２−１５−３は仮想ボリュームページ１４１−２を参照する。
【００３０】
００６９    図１６は、仮想ボリューム１４１へのテーブルを参照する構成例を示す。
実線の矢印は、対象をポインターで示すことを意味する（キャッシュ管理テーブル１１２−１４から、仮想ボリュームスロット１４１−３および容量プールストライプ１２１−３へ）。点線の矢印は対象を計算により示すことを意味する（キャッシュ管理テーブル１１２−１４とキャッシュスロット１１２−３０−１の間で）。キャッシュデータエリア１１２−３０は複数のキャッシュスロット１１２−３０−１に分割される。キャッシュスロット１１２−３０−１のサイズは、容量プールストライプ１２１−３のサイズ、および仮想ボリュームスロット１４１−３のサイズに等しい。キャッシュ管理テーブル１１２−１４とキャッシュスロット１１２−３０−１は１対１の関係にある。キャッシュ管理テーブル１１２−１４は仮想ボリュームスロット１４１−３および容量プールストライプ１２１−３を参照する。
【００３１】
００７０    図１７は、図２のメモリ１１２にある書き込みＩ／Ｏ制御１１２−２１−１の処理フローの例を示す。プログラムは１１２−２１−１−１から開始する。ステップ１１２−２１−１−２で、プログラムはキャッシュスロット１１２−３０−１を検索するためキャッシュ制御１１２−２４をコールする。ステップ１１２−２１−１−３で、プログラムはホストコンピュータ３００から書き込みＩ／Ｏデータを受け取り、前述のキャッシュスロット１１２−３０−１へデータを格納する。プログラムは１１２−２１−１−４で終了する。
【００３２】
００７１    図１８は、図２のメモリ１１２にある、読み出しＩ／Ｏ制御１１２−２１−２の処理フローの例を示す。プログラムは１１２−２１−２−１から開始する。ステップ１１２−２１−２−２において、プログラムは、キャッシュスロット１１２−３０−１を検索するためにキャッシュ制御１１２−２４をコールする。ステップ１１２−２１−２−３において、プログラムは、データが既にそこに存在するか否かを確認するために、前述のキャッシュスロット１１２−３０−１の状態をチェックする。データがキャッシュスロット１１２−３０−１に存在しない場合、プログラムは、ステップ１１２−２１−２−４でステージング制御１１２−２２−１をコールする。ステップ１１２−２１−２−５において、プログラムは、キャッシュスロット１１２−３０−１のデータをホストコンピュータ３００に転送する。プログラムは１１２−２１−２−６で終了する。
【００３３】
００７２    図１９は、図２のメモリ１１２にあるステージング制御１１２−２２−１の処理フローの例を示す。プログラムは１１２−２２−１−１から開始する。ステップ１１２−２２−１−２で、プログラムは、物理ディスクおよびデータのアドレスを検出するために物理ディスクアドレス制御１１２−２２−５をコールする。ステップ  １１２−２２−１−３で、プログラムは、ディスク１２１からデータを読み出し、キャッシュデータ領域１１２−３０へ格納することをデータ転送制御装置１１６に要求する。ステップ１１２−２２−１−４で、プログラムは、データ転送が終了するのを待つ。メモリ１１２中のカーネル１１２−４０は、コンテキストスイッチを行う命令を出す。プログラムは１１２−２２−１−５で終了する。
【００３４】
００７３    図２０は、図２のメモリ１１２にあるデステージング制御１１２−２２−２の処理フローの例を示す。プログラムは、１１２−２２−２−１から開始する。ステップ１１２−２２−２−２で、プログラムは、物理ディスクおよびデータのアドレスを検出するため、物理ディスクアドレス制御１１２−２２−５をコールする。ステップ１１２−２２−２−３で、プログラムは、データ転送制御装置１１６に、キャッシュデータ領域１１２−３０からデータを読み出し、ディスク１２１に保存するよう要求する。ステップ１１２−２２−２−４で、プログラムは、データ転送が終了するのを待つ。メモリ１１２にあるカーネル１１２−４０は、コンテキストスイッチを行う命令を出す。プログラムは１１２−２２−２−５で終了する。
【００３５】
００７４    図２１は、図２のメモリ１１２にあるコピー制御１１２−２２−３の処理フローの例を示す。プログラムは１１２−２２−３−１から開始する。ステップ１１２−２２−３−２で、プログラムは、物理ディスクおよびデータのアドレスを検出する為、物理ディスクアドレス制御１１２−２２−５をコールする。ステップ１１２−２２−３−３で、プログラムはキャッシュデータ領域１１２−３０のデータをコピーするようデータ転送制御装置１１６に要求する。ステップ１１２−２２−３−４で、プログラムは、データ転送が終了するのを待つ。メモリ１１２中のカーネル１１２−４０は、コンテキストスイッチを行う命令を出す。プログラムは１１２−２２−３−５で終了する。
【００３６】
００７５    図２２は、図２のメモリ１１２にあるパリティ計算制御１１２−２２−４の処理フローの例を示す。プログラムは１１２−２２−４−１から開始する。ステップ１１２−２２−４−２で、プログラムは、物理ディスクおよびデータのアドレスを検出するため物理ディスクアドレス制御１１２−２２−５をコールする。ステップ１１２−２２−４−３で、プログラムは、キャッシュデータ領域１１２−３０のデータを生成／回復することをデータ転送制御装置１１６に要求する。ステップ１１２−２２−４−４で、プログラムは、データ転送が終了するのを待つ。メモリ１１２にあるカーネル１１２−４０は、コンテキストスイッチを行う命令を出す。プログラムは１１２−２２−４−５で終了する。
【００３７】
００７６    図２３は、図２のメモリ１１２にある物理ディスクアドレス制御１１２−２２−５の処理フローの例を示す。プログラムは１１２−２−５−１から開始する。ステップ１１２−２２−５−３で、プログラムは、ＲＡＩＤグループの構成をチェックするためにＲＡＩＤグループ管理テーブル１１２−１１−１を読む。ステップ１１２−２２−５−４で、プログラムは、均等分配アルゴリズムにより物理アドレスを計算する。プログラムは１１２−２２−５−５で終了する。
【００３８】
００７７    図２４は、図２のメモリ１１２にあるフラッシュ制御１１２−２３の処理フローの例を示す。プログラムは１１２−２３−１から開始する。ステップ１１２−２３−２で、プログラムは、キャッシュ管理テーブル１１２−１４の“ダーティキュー”を読み出す。ダーティキャッシュ領域が検出されたら、プログラムは、ステップ１１２−２３−３で、検出されたダーティキャッシュスロット１１２−３０−１に対し、デステージング制御１１２−２２−２をコールする。プログラムは１１２−２３−４で終了する。
【００３９】
００７８    図２５は、図２のメモリ１１２にあるキャッシュ制御１１２−２４の処理フローの例を示す。プログラムは１１２−２４−１から開始する。ステップ１１２−２４−２で、プログラムはキャッシュ管理テーブル１１２−１４を読み出し、指定の仮想ボリュームスロット１４１−１あるいは容量プールストライプ１２１−３のアドレスを検索する。Ｉ／Ｏアドレスのためのキャッシュ領域がない場合、プログラムは、ステップ１１２−２４−３で、“空き”または“クリーン”キューから指定のアドレスに対して新しいキャッシュスロット１１２−３０−１を取得する。ステップ１１２−２４−４で、プログラムは、キャッシュスロット１１２−３０−１のアドレスを返す。プログラムは１１２−２４−５で終了する。
【００４０】
００７９    図２６は、図２のメモリ１１２にある、ページ検出制御（Ａ）１１２−２５−１の処理フローの例を示す。プログラムは１１２−２５−１−１から開始する。ステップ１１２−２５−１−２で、プログラムは仮想ボリュームページ管理テーブル１１２−１５−１を読み、ＲＡＩＤグループ番号１１２−１５−１−２をチェックし、容量プールページインデックス１１２−１５−１−３が容量プールページ情報を保存しているか否か（すなわち、仮想ボリュームページ１４１−２へ容量プールページ１２１−２が割り付けられているか否か）を判定する。ステップ１１２−２５−１−３で、プログラムは仮想ボリューム管理テーブル１１２−１１−２を読み、使用ＲＡＩＤグループ番号１１２−１１−２−３をチェックし、使用容量プールチャンク番号１１２−１１−２−４が容量プールチャンク情報を保存しているか否か（すなわち、仮想ボリューム１１４は容量プールチャンク１２１−１を保持しているか否か）を決定する。ステップ１１２−２５−１−４で、プログラムは容量プールチャンク管理テーブル１１２−１５−２を読み、使用容量１１２−１５−２−３が容量プールチャンクのザイズより小さいか否か（つまり、容量プールチャンク１２１−１には１つ以上の空きページ１２１−２があるか否か）を判定するためにチェックする。ステップ１１２−２５−１−５で、プログラムは、使用ＲＡＩＤグループ番号１１２−１１−２−３および使用容量プールチャンク番号１１２−１１−２−４を変更し、参照を解消する。前チャンク番号１１２−１５−２−５および次チャンク番号１１２−１５−２−６を変更し、使用チャンクキューインデックス１１２−１１−１−６上の使用キューにいれ、これによって、容量プールチャンク１２１−１を使用キューに移動させる。ステップ１１２−２５−１−６において、プログラムは、空きチャンクキューインデックス１１２−１１−１−５上の空きキューからキューを外すために、前チャンク番号１１２−１５−２−５および次チャンク番号１１２−１５−２−６を変更する。さらに、照合のため、使用ＲＡＩＤグループ番号１１２−１１−２−３、および使用容量プールチャンク番号１１２−１１−２−４を変更し、これによって、障害チャンクを除いた新しい容量プールチャンクを得る。ステップ１１２−２５−１−７で、プログラムは、仮想ボリュームページ１４１−２の情報を容量プールページ管理テーブル１１２−１５−３へ保存し、また、容量プールページ１２１−２の情報を仮想ボリュームページ管理テーブル１１２−１５−１へ保存する。これによって、容量プールチャンク１２１−１からの新しい容量プールページ１２１−２を仮想ボリュームページ１４１−２へ割り付ける。ステップ１１２−２５−１−８において、プログラムは容量プールページ１２１−２へアドレスを返し終了する。
【００４１】
００８０    図２７は、図２のメモリ１１２にあるページ検出制御（Ｂ）１１２−２５−２の処理フローの例を示す。プログラムは１１２−２５−２−１から開始する。ステップ１１２−２５−２−２で、プログラムは仮想ボリュームページ管理テーブル１１２−１５−１を読み、ＲＡＩＤグループ番号１１２−１５−１−２をチェックし、容量プールページインデックス１１２−１５−１−３が容量プールページ情報を保存しているか否か（すなわち、仮想ボリュームページ１４１−２は容量プールページ１２１−２を割り付けられているか否か）を決定する。ステップ１１２−２５−２−３で、プログラムは（フォーマット済データを格納している）予備の容量プールページを検出する。ステップ１１２−２５−２−４で、プログラムは、容量プールページ１２１−２のアドレスを返す。プログラムは１１２−２５−２−５で終了する。
【００４２】
００８１    図２８は、図２のメモリ１１２にあるページ移行制御１１２−２５−３の処理フローの例を示す。プログラムは１１２−２５−３−１にて開始する。ステップ１１２−２５−３−２で、障害ＲＡＩＤグループに属するページが無くなる（すなわち、障害ＲＡＩＤグループの中のチャンクはすべて移行済となる）までプログラムはこのプロセスを繰り返す。ステップ１１２−２５−３−３で、プログラムは、障害ＲＡＩＤグループ以外のＲＡＩＤグループを選択し、空きチャンクキューインデックス１１２−１１−１−５上の空きキューからキューを外すために、前チャンク番号１１２−１５−２−５および次チャンク番号１１２−１５−２−６を変更する。ステップ１１２−２５−３−４で、プログラムは、障害チャンクから新しいチャンクにチャンクデータをコピーするために、コピー制御１１２−２２−３をコールする。ステップ１１２−２５−３−５で、プログラムは、損失データを生成するか回復するために、パリティ計算制御１１２−２２−４をコールする。ステップ１１２−２５−３−６で、新しく割り付けた容量プールチャンクの新しいぺ−ジを参照するために、プログラムは、仮想ボリュームページ管理テーブル１１２−１５−１を変更して、割り付け情報を変更する。ステップ１１２−２５−３−７で、プログラムは、参照を解消するために、使用中ＲＡＩＤグループ番号１１２−１１−２−３および使用容量プールチャンク番号１１２−１１−２−４を変更し、使用チャンクキューインデックス１１２−１１−１−６上の使用キューに、キューを入れるために前チャンク番号１１２−１５−２−５および次チャンク番号１１２−１５−２−６を変更して障害チャンクを切り離す。プログラムは１１２−２５−３−８で終了する。
【００４３】
００８２    図２９は、チャンクおよびページコピーによるデータ回復の例を示す。図２９は２つのＲＡＩＤグループを示す。第１のＲＡＩＤグループはディスク１２１ａ、１２１ｂ、１２１ｃ、１２１ｄ、１２１ｅ、１２１ｆ、１２１ｇおよび１２１ｈを含む。第２のＲＡＩＤグループはディスク１２１ｉ、１２１ｊ、１２１ｋ、１２１ｍ、１２１ｎ、１２１ｐ、１２１ｑおよび１２１ｒを含む。ディスク１２１ｃで障害が発生する。実線の矢印は、対象をポインターで参照することを意味し、一方、点線の矢印は対象を計算により参照することを意味する（より具体的にはパリティ計算による）。データ回復プロセスにおいて、障害ディスク１２１ｃを使用している第１のＲＡＩＤグループのチャンク（Ｆ１、Ｆ２、Ｆ３、Ｆ４）を検索して正常な第２のＲＡＩＤグループ（Ｄ’１、Ｄ’２、Ｄ’３、Ｄ’４）中の未使用のチャンクを選択する。次いで、チャンク部分Ｆ３を有する障害ディスク１２１ｃを除いて、チャンクデータを、第１のＲＡＩＤグループ中のチャンク（Ｆ１、Ｆ２、Ｆ３、Ｆ４）から、第２のＲＡＩＤグループにコピーする（すなわち、ディスク１２１ａのＦ１、ディスク１２１ｆのＦ２、ディスク１２１ｈのＦ４、をディスク１２１ｉのＦ１’、ディスク１２１ｊのＦ２’ディスク１２１ｒのＦ４’としてコピーする）。点線の矢印線で示すように、障害ディスク１２１ｃにあるチャンク部分Ｆ３のデータは、パリティ計算によって他のディスク（ディスク１２１ａの中のＦ１、ディスク１２１ｆのＦ２、ディスク１２１ｈのＦ４）から回復され、ディスク１２１ｑの中にチャンク部分Ｆ３’を形成する。図３０は、図２９のデータ回復の要約およびシーケンスを示す。
【００４４】
００８３    図３１は、チャンクならびにページコピーによるデータ回復の全体的なシーケンスを示す。図２９および３０は１つのチャンクでのデータ回復を示すが、図３１は複数のチャンクでのデータ回復を示す。ディスク読み出し／書き込み動作の競合の回避によって、データ回復スキームは移行プロセスを最適化し並列化させることができる。
【００４５】
００８４    上記の例において、グループ中のハードディスクドライブの数は、８の倍数である（Ｍは、ストライプのデータをもつハードディスクドライブの数で６であり、また、Nはストライプのパリティデータを持つハードディスクドライブの数で２である）。グループのハードディスクドライブのなかの１つに障害があるストライプからのデータを読み出す場合には、ストレージ制御装置は、障害のあるハードディスクドライブへはアクセスせず、７台のハードディスクドライブのみにアクセスするように制御される。ストレージシステムは、未割り付けのハードディスクドライブを持つ容量プールボリュームを有している。ストライプは容量プールボリュームから割り付けられる。各ストライプの割り付けは別のストレージ装置からのデータの受信に応じて行われる。
【００４６】
第２の実施例
００８５    図３２は、本発明の第２の実施例による図１のストレージサブシステム１００の中のメモリ１１２の例を示す。図２の第１の実施例からの変更分のみを取り上げる。図３２においては、ディスク管理テーブル１１２−１１−３（図３３）は、ディスク１２１の物理的構成管理のために、図２のＲＡＩＤグループ管理テーブル１１２−１１−１の代わりに提供される。図３２はさらに、１１２−１１−２の代わりの仮想ボリューム管理テーブル１１２−１１−２’（図３４）、１１２−１５−１の代わりの仮想ボリュームページ管理１１２−１５−１’（図３５）、１１２−１５−２の代わりの容量プールチャンク管理テーブル１１２−１５−２’（図３６）、１１２−２５−１の代わりのページ検出制御１１２−２５−１’（図３９）、１１２−２５−３の代わりのページ移行制御１１２−２５−３’（図４０）などの代わりの実施例を示す。
【００４７】
００８６    図３３は、図３２のメモリ１１２にあるディスクまたはＨＤＤの管理テーブル１１２−１１−３の例を示す。ディスク管理テーブル１１２−１１−３は、ディスク１２１のＩＤを表わすディスク番号１１２−１１−３−１、ディスク１２１の容量を表わすディスク容量１１２−１１−３−４、および使用済容量プールパーセルのリストを表わす使用パーセル番号１１２−１１−３−３の欄を有している。
【００４８】
００８７    図３４は、図３２のメモリ１１２にある仮想ボリューム管理テーブル１１２−１１−２’の例を示す。仮想ボリューム管理テーブル１１２−１１−２’は、（第１の実施例による図４のうちの１１２−１１−２と同じ）２つの欄を有し、仮想ボリュームのＩＤを表わす仮想ボリューム番号１１２−１１−２−１と、仮想ボリュームの容量を表わす仮想ボリューム容量１１２−１１−２−２（“Ｎ／Ａ”は、仮想ボリュームが存在しないことを意味する）とを有する。さらに、仮想ボリュームが現在使用中の容量プールチャンクに属すディスク１２１のＩＤリストを表わすディスク番号１１２−１１−２’−３の欄、および、仮想ボリュームが現在使用中の容量プールチャンクに属す容量プールパーセルのＩＤリストを表わすパーセル番号１１２−１１−２’−４の欄を有する。
【００４９】
００８８    図３５は、図３２のメモリ１１２にある仮想ボリュームページ管理テーブル１１２−１５−１’の例を示す。第１の実施例による図５の１１２−１５−１と同じように、仮想ボリュームページ管理テーブル１１２−１５−１’は仮想ボリュームページのトップアドレスを表わす、仮想ボリュームページインデックス１１２−１５−１−１の欄を有する。１１２−１５−１と異なり、仮想ボリュームページ管理テーブル１１２−１５−１’は、仮想ボリュームページが参照する容量プールページに属するディスク１２１のＩＤリストを表わすディスク番号１１２−１５−１’−２の欄、および仮想ボリュームページが参照する容量プールページに属するアドレスのＩＤリストを表わす容量プールページインデックス１１２−１５−１’−３の欄を有している。
【００５０】
００８９    図３６は、図３２のメモリ１１２にある容量プールチャンク管理テーブル１１２−１５−２’の例を示す。図６の第１の実施例中のテーブル１１２−１５−２と比較して、図３２の容量プールチャンク管理テーブル１１２−１５−２’は、容量プールチャンク１２１−１を構築するディスク１２１のＩＤリストを表わすディスクまたはＨＤＤの数１１２−１５−２’−５の欄、および容量プールチャンクを構築する容量プールパーセル１２１−４のＩＤリストを表わすパーセル番号１１２−１５−２’−６の欄を有している。
【００５１】
００９０    図３７は、仮想ボリューム１４１、およびその仮想ボリューム管理テーブル１１２−１１−２’、仮想ボリュームページ管理テーブル’１１２−１５−１の例を示す。実線の矢印は、対象をポインターで示すことを意味する（仮想ボリューム管理テーブル１１２−１１−２’および仮想ボリュームページ管理テーブル１１２−１５−１’から容量プールパーセル１２１−４および容量プールストライプ１２１−３へ）、一方、点線の矢印は対象が計算により示されることを意味する（仮想ボリューム１４１、管理テーブル１１２−１１−２および１１２−１５−１間、およびディスク管理テーブル１１２−１１−３とディスク１２１の間で）。仮想ボリューム１４１および仮想ボリューム管理テーブル１１２−１１−２’は、１対１の関係にある。仮想ボリューム管理テーブル１１２−１１−２’は現状の容量プールパーセル１２１−４を使用している容量を示す。仮想ボリュームページ１４１−２および仮想ボリュームページ管理テーブル１１２−１５−１’は、１対１の関係にある。もし、ページが割り付け済なら、仮想ボリュームページ管理テーブル１１２−１５−１’は容量プールページ１２１−２の部分を参照する。
【００５２】
００９１    図３８は、図３７の仮想ボリューム１４１の中の容量プールへのテーブル参照の構成例を示す。実線の矢印は、対象をポインターで示すことを意味する（容量プールチャンク管理テーブル１１２−１５−２’から容量プールパーセル１２１−４へ）。
点線の矢印は対象を計算により示すことを意味する（容量プールページ管理テーブル１１２−１５−３’、容量プールチャンク管理テーブル１１２−１５−２’ディスク１２１、容量プールストライプ１２１−３の間で）。ディスク１２１およびディスク管理テーブル１１２−１１−３は１対１の関係にある。ディスク管理テーブル１１２−１１−３は、使用又は未使用容量プールパーセル１１２−４を参照する。容量プールパーセル１２１−４および容量プールチャンク管理テーブル１１２−１５−２’は、１対１の関係にある。容量プールチャンク管理テーブル１１２−１５−２’は仮想ボリューム１４１を参照する。容量プールページ管理テーブル１１２−１５−３’と容量プールパーセル１２１−４とは、１対多数の関係にある。容量プールページ管理テーブル１１２−１５−３’は仮想ボリュームページ１４１−２を参照する。
【００５３】
００９２    図３９は、図３２のメモリ１１２にあるページ検出制御（Ａ）１１２−２５−１’の処理フローの例を示す。プログラムは、ステップ１１２−２５−１’−６（１１２−２５−１−６の置き換え）および１１２−２５−１’−７（１１２−２５−１−７の置き換え）を除いて、図２６の第１の実施例の１１２−２５−１と同じステップを実行する。ステップ１１２−２５−１’−６において、プログラムは使用パーセル番号１１２−１１−３−３を加え、新しい容量プールチャンク管理のプログラムとなり、参照のためにディスク番号１１２−１１−２’−３および容量プールパーセル番号１１２−１１−２’−４を変更する。ステップ１１２−２５−１’−７において、プログラムは、仮想ボリュームページ１４１−２の情報を容量プールページ管理テーブル１１２−１５−３’に保存し、容量プールパーセル１２１−４情報の部分を仮想ボリュームページ管理テーブル１１２−１５−１’に保存する。これによって新しい容量プールページを仮想ボリュームページに割り付ける。
【００５４】
００９３    図４０は、図３２のメモリ１１２にあるページ移行制御１１２−２５−３’の処理フローの例を示す。プログラムはステップ１１２−２５−３’−３（ステップ１１２−２５−３−３の置き換え）を除いて、図２８の第１の実施例の中の１１２−２５−３と同じステップを実行する。ステップ１１２−２５−３’−３において、プログラムは、障害ディスクを除いてディスク１２１を選択し、使用パーセル番号１１２−１１−３−３を加えて、新しい容量プールチャンク管理の行を取得する。
【００５５】
００９４    前述から、本発明が、ＨＤＤ障害のようなストレージ装置障害から高速でのデータ回復のための方法、装置およびコンピュータ読み取り可能な媒体上に格納されたプログラムを提供することは明白である。さらに、この明細書においては、特定の実施例を図示し記述してあるが、同業者においては、同じ目的を達成すると意図されるどのような構成も、ここに開示された特定の実施例の代わりに用いられ得ることは認識されよう。この開示は、本発明のいかなる、そして全ての修正あるいは変化をも包含するように意図されている。また、次の請求項の中で使用される用語は、本発明を明細書に示された特定の実施例に制限するように解釈されるべきでないことは理解されよう。さらに、発明の範囲はすべて以下の請求項によって決定されるが、それは、そのような請求項に権利がある総ての範囲の等価物の全領域に対して請求項解釈の確立している理論に従って解釈されるべきである。
【図１】
2010102695.tif 000003
【図２】
2010102695.tif 000004
【図３】
2010102695.tif 000005
【図４】
2010102695.tif 000006
【図５】
2010102695.tif 000007
【図６】
2010102695.tif 000008
【図７】
2010102695.tif 000009
【図８】
2010102695.tif 000010
【図９】
2010102695.tif 000011
【図１０】
2010102695.tif 000012
【図１１】
2010102695.tif 000013
【図１２】
2010102695.tif 000014
【図１３】
2010102695.tif 000015
【図１４】
2010102695.tif 000016
【図１５】
2010102695.tif 000017
【図１６】
2010102695.tif 000018
【図１７】
2010102695.tif 000019
【図１８】
2010102695.tif 000020
【図１９】
2010102695.tif 000021
【図２０】
2010102695.tif 000022
【図２１】
2010102695.tif 000023
【図２２】
2010102695.tif 000024
【図２３】
2010102695.tif 000025
【図２４】
2010102695.tif 000026
【図２５】
2010102695.tif 000027
【図２６】
2010102695.tif 000028
【図２７】
2010102695.tif 000029
【図２８】
2010102695.tif 000030
【図２９】
2010102695.tif 000031
【図３０】
2010102695.tif 000032
【図３１】
2010102695.tif 000033
【図３２】
2010102695.tif 000034
【図３３】
2010102695.tif 000035
【図３４】
2010102695.tif 000036
【図３５】
2010102695.tif 000037
【図３６】
2010102695.tif 000038
【図３７】
2010102695.tif 000039
【図３８】
2010102695.tif 000040
【図３９】
2010102695.tif 000041
【図４０】
2010102695.tif 000042
【外国語明細書】
2010102695000001.pdf