(57)【特許請求の範囲】
【請求項１】
ＲＡＩＤストレージ・システムでパリティ値を生成する方法であって、ストレージ・システムがＲＡＩＤアダプタと、対応する組のＲＡＩＤストレージ・ドライブを管理する複数のディスク・アレイ・プロセッサと、接続ファブリックを有し、前記方法が、
故障したＲＡＩＤストレージ・ドライブのディスク・データを再構築する場合に、ＲＡＩＤアダプタによりパリティ生成操作を開始するステップと、
各アレイ・プロセッサが管理すべき各ＲＡＩＤストレージ・ドライブのデータ・ブロックおよびパリティ・ブロックを読み出し、前記データ・ブロックおよびパリティ・ブロックをＸＯＲ演算して部分的なパリティ値を生成するための並列命令をディスパッチするステップと、
ＲＡＩＤアダプタが前記部分的なパリティ値を各アレイ・プロセッサから受信するステップと、
ＲＡＩＤアダプタが前記部分的なパリティ値をＸＯＲ演算することにより、前記故障したＲＡＩＤストレージ・ドライブの失われたディスク・データを生成するステップと、
前記故障したＲＡＩＤストレージ・ドライブを管理するディスク・アレイ・プロセッサが管理すべきＲＡＩＤストレージ・ドライブに、前記失われたディスク・データを書き込むことにより、前記故障したＲＡＩＤストレージ・ドライブのディスク・データを再構築するステップと
を有する、方法。
【請求項２】
さらに、アレイ・プロセッサにより非ブロッキングに命令を実行し、それによってストレージ・システムで他の操作が続けられるステップを有する、請求項１の方法。
【請求項３】
ディスク・アレイ・プロセッサがＳＣＳＩエンクロージャ・サービス（ＳＥＳ）プロセッサである、請求項１の方法。
【請求項４】
各ディスク・アレイ・スイッチが各グループのＲＡＩＤディスクを制御するとともに対応のアレイ・プロセッサに連結される、複数のディスク・アレイ・スイッチに連結されるファブリック・インターフェースと、
故障したＲＡＩＤディスクのディスク・データを再構築する場合に、パリティ生成機能を開始する手段と、
各アレイ・プロセッサに各グループのディスク上のデータ・ブロックおよびパリティ・ブロックを読み出し、前記データ・ブロックおよびパリティ・ブロックをＸＯＲ演算して部分的なパリティ値を生成するよう指示する命令を、スイッチから対応のアレイ・プロセッサにディスパッチする手段と、
生成した部分的なパリティ値をアレイ・プロセッサから受信する手段と、
受信した部分的なパリティ値をＸＯＲ演算することにより、前記故障したＲＡＩＤディスクの失われたディスク・データを生成する手段と、
前記故障したＲＡＩＤディスクを管理するアレイ・プロセッサが管理すべきＲＡＩＤディスクに、前記失われたディスク・データを書き込むことにより、前記故障したＲＡＩＤディスクのディスク・データを再構築する手段と
を有する、ＲＡＩＤストレージ・アダプタ。
【請求項５】
ディスク・アレイ・プロセッサがＳＣＳＩエンクロージャ・サービス（ＳＥＳ）プロセッサである、請求項４のＲＡＩＤアダプタ。
【請求項６】
ＲＡＩＤアダプタと、
ＲＡＩＤアダプタに連結される複数のディスク・アレイ・スイッチと、
各々がディスク・アレイ・スイッチの各１つに連結される、複数のストレージ・ディスクのグループと、
各々が１つのディスク・アレイ・スイッチに連結される、複数のサービス・プロセッサと、
故障したストレージ・ディスクのディスク・データを再構築する場合に、選択的なデータ・ブロックおよびパリティ・ブロックを読み出し、前記データ・ブロックおよびパリティ・ブロックをＸＯＲ演算して部分的なパリティ値を生成して、ＲＡＩＤコントローラに送信するように構成された、各サービス・プロセッサに対応付けられる生成器と、
生成した部分的なパリティ値をＸＯＲ演算することにより、前記故障したストレージ・ディスクの失われたディスク・データを生成するように構成された、ＲＡＩＤアダプタに対応付けられる生成器と、
前記故障したストレージ・ディスクを管理するサービス・プロセッサが管理すべきストレージ・ディスクに、前記失われたディスク・データを書き込むことにより、前記故障したストレージ・ディスクのディスク・データを再構築する手段と
有する、ＲＡＩＤストレージ・システム。
【請求項７】
サービス・プロセッサがＳＣＳＩエンクロージャ・サービス（ＳＥＳ）プロセッサである、請求項６のＲＡＩＤストレージ・システム。
【請求項８】
さらに、完全なパリティ値をディスクに格納する命令を選択的なディスク・アレイ・プロセッサにディスパッチする、ＲＡＩＤアダプタに対応付けられる手段を有する、請求項６のＲＡＩＤストレージ・システム。
【請求項９】
ＲＡＩＤストレージ・システムでパリティ値を生成するコンピュータ読み取り可能コードが実装されるコンピュータ・プログラムであって、ストレージ・システムがＲＡＩＤアダプタと、対応する組のＲＡＩＤストレージ・ドライブを管理する複数のディスク・アレイ・プロセッサと、接続ファブリックとを有し、前記コンピュータ読み取り可能コードが、
故障したＲＡＩＤストレージ・ドライブのディスク・データを再構築する場合に、ＲＡＩＤアダプタによりパリティ生成操作を開始する命令と、
各アレイ・プロセッサが管理すべき各ＲＡＩＤストレージ・ドライブのドライブ上のデータ・ブロックおよびパリティ・ブロックを読み出し、前記データ・ブロックおよびパリティ・ブロックをＸＯＲ演算して部分的なパリティ値を生成するための並列命令をディスパッチする命令と、
ＲＡＩＤアダプタが前記部分的なパリティ値を各アレイ・プロセッサから受信する命令と、
ＲＡＩＤアダプタが前記部分的なパリティ値をＸＯＲ演算することにより、前記故障したＲＡＩＤストレージ・ドライブの失われたディスク・データを生成する命令と、
前記故障したＲＡＩＤストレージ・ドライブを管理するディスク・アレイ・プロセッサが管理すべきＲＡＩＤストレージ・ドライブに、前記失われたディスク・データを書き込むことにより、前記故障したＲＡＩＤストレージ・ドライブのディスク・データを再構築する命令と
を有する、コンピュータ・プログラム。
【請求項１０】
コンピュータ読み取り可能コードがさらに、ストレージ・システムで他の操作が継続できるように非ブロッキングに、アレイ・プロセッサで命令を実行する命令を有する、請求項９のコンピュータ・プログラム。
【請求項１１】
ディスク・アレイ・プロセッサがＳＣＳＩエンクロージャ・サービス（ＳＥＳ）プロセッサである、請求項９のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にＲＡＩＤストレージ・システムに関係し、具体的には、このようなシステム内でのパリティ生成の管理に関係する。
【背景技術】
【０００２】
ＲＡＩＤストレージ・システムにおけるパリティ値の生成は、プロセッサ集約的かつ帯域幅集約的でもある。例えば、大型のＲＡＩＤシステムは冗長対のＲＡＩＤアダプタまたはコントローラ、複数対の冗長ディスク・アレイ・スイッチ、同じ数のハードディスク・ドライブ（ＨＤＤ）の組、および同じ数のサブプロセッサを含むことがある。これらコンポーネントは「ファブリック」で相互接続される。アダプタは第１対のスイッチと相互接続し、第１対のスイッチは第２対と相互接続する等、以下連鎖状に相互接続する。各サブプロセッサは１対のスイッチに連結され、同様に各ＨＤＤの組は１組のスイッチに連結される。命令をアダプタからスイッチに送信するためには、上流のファブリックおよびスイッチのいずれかを通過しなければならない。同様に、データはいずれかのスイッチから上流にアダプタまで渡さなければならない。
【特許文献１】本出願は本発明の譲受人に譲渡された、同時係属出願の「診断操作のためのディスク・アレイからのドライブの分離」と題する米国出願番号第１１／３８５３８８号［ＩＢＭ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）文書番号ＴＵＣ９２００５０１４１］および
【特許文献２】「交換ドライブ接続ネットワーク・エンクロージャにおけるＲＡＩＤアダプタから分散サービス・プロセッサへのディスク関連タスクのオフローディング」と題する米国出願番号第１１／３８６０２５号［ＩＢＭ文書番号ＴＵＣ９２００５０１４２］  に関連し、ともに本出願日に申請され、本明細書に関連する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
パリティ値を生成する従来のプロセスは、アダプタ・リソースおよびファブリックの帯域幅を実質的に使用する必要がある。ＲＡＩＤアダプタはあるグループのＨＤＤ全体のデータのブロックで排他的ＯＲ（ＸＯＲ）を行って、パリティ・ブロックを生成する。すなわち、Ａｐがパリティ・ブロックで、「＋」がＸＯＲ演算を表す場合、Ａｐ＝Ａ１＋Ａ２＋…＋Ａｎである。例えば、代表的なＲＡＩＤレベル５のアレイでは、６つのデータが入ったＨＤＤとパリティＨＤＤからなるグループのデータ・ブロック・パリティを生成する場合、アダプタは６回の読み出し操作を行ってパリティ値を生成し、１回の書き込み操作を行ってパリティを７番目のＨＤＤに格納しなければならない。加えて、書き込みがあるグループのドライブ全体に及ばないデータからなる場合、ドライブ上のデータ・ブロックの読み出しを行わなければならないか、または新しいパリティ・ブロックを生成するために前のデータおよび前のパリティが必要になる。これら操作のすべてがアダプタ・リソースを消費し、ファブリック全体にわたるトラフィックを生じる。故障ドライブを再構築（リビルド）する場合には、リソースの消費がさらに大きくなる。ここでも、アダプタはデータ・ブロックおよびパリティ・ブロックを他のドライブから読み出して、パリティ・ブロックをデータ・ブロックに適用し、失われたデータ・ブロックを再生する。ストレージ・システムを所要レベルの冗長度に戻すには再構築時間が速いことが重要であるが、アダプタが他の機能を行える能力が減じられるため、システム性能が犠牲となり低下する。
【０００４】
そのため、必要なアダプタ・リソースがより少なく、ファブリックの帯域幅がより少ない、効率的なパリティの生成とドライブの再構築の操作の必要性がある。
【課題を解決するための手段】
【０００５】
本発明は、ＲＡＩＤストレージ・システムのパリティ値を生成する方法を提供する。ストレージ・システムはＲＡＩＤアダプタと、対応する組のＲＡＩＤストレージ・ドライブを管理する複数のディスク・アレイ・プロセッサと、接続ファブリックを含む。方法は、ＲＡＩＤアダプタによりパリティ生成操作を開始するステップと、アレイ・プロセッサに並列命令をディスパッチして、管理される各ＲＡＩＤストレージ・ドライブのドライブ上のデータ・ブロックから部分的なパリティ値を各々生成するステップと、各アレイ・プロセッサからＲＡＩＤアダプタの部分的なパリティ値を受信するステップと、ＲＡＩＤアダプタの部分的なパリティ値を結合して、完全なパリティ値を生成するステップとを含む。パリティ値はハードディスク・ドライブに格納する実際のパリティ・ブロックでも、または故障ドライブの場合再構成されたデータ・ブロックでもよい。
【０００６】
本発明はまた、ＲＡＩＤストレージ・アダプタとＲＡＩＤストレージ・アダプタを内蔵するＲＡＩＤストレージ・システムも提供する。アダプタは、各ディスク・アレイ・スイッチがＲＡＩＤディスクの各グループを制御するとともに対応付けられるアレイ・プロセッサに連結される、複数のディスク・アレイ・スイッチに連結されるファブリック・インターフェースと、パリティ生成機能を開始する手段と、各アレイ・プロセッサに各ディスクのグループのディスク上のデータ・ブロックから部分的なパリティ値を生成するように指示する命令をスイッチから対応のアレイ・プロセッサにディスパッチする手段と、生成された部分的なパリティ値をアレイ・プロセッサから受信する手段と、受信した部分的なパリティ値を完全なパリティ値に結合するように構成されるパリティ生成器とを含む。
【０００７】
本発明はさらに、プログラム可能なコンピュータとともに使えるコンピュータ読み取り可能媒体にも記憶可能なコンピュータ・プログラムを含み、コンピュータ・プログラムはＲＡＩＤストレージ・システムでパリティ値を生成するコンピュータ読み取り可能コードを内部に埋め込んでおり、ストレージ・システムはＲＡＩＤアダプタと、対応する組のＲＡＩＤストレージ・ドライブを管理する複数のディスク・アレイ・プロセッサと、接続ファブリックとを有する。コンピュータ読み取り可能コードは、ＲＡＩＤアダプタによりパリティ生成操作を開始する命令と、管理される各ＲＡＩＤストレージ・ドライブのドライブ上のデータ・ブロックから各々部分的なパリティ値を生成する並列命令をアレイ・プロセッサにディスパッチする命令と、ＲＡＩＤアダプタの部分的なパリティ値を各アレイ・プロセッサから受信する命令と、ＲＡＩＤアダプタの部分的なパリティ値を結合して、完全なパリティ値を生成する命令とを含む。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明を実施できるＲＡＩＤストレージ・システム１００のブロック図である。システム１００は、一又は複数のサーバーに連結される冗長対のＲＡＩＤアダプタまたはコントローラ１１０Ａ、１１０Ｂ（集合的に、１１０と呼ぶ）を含む。システム１００はさらに冗長対のディスク・アレイ・スイッチ１２０を含み、図では、その３対の１２２Ａと１２２Ｂ、１２４Ａと１２４Ｂ、１２６Ａと１２６Ｂが示されている。システム１００はハードディスク・ドライブ（ＨＤＤ）１３０Ａ、１３０Ｂ、１３０Ｃの組も含み（集合的に、１３０と呼ぶ）、各組が１対のスイッチに対応付けられる。システム１００はまた、各対のスイッチ１２０に対応付けられるサービス・プロセッサ１４０Ａ、１４０Ｂ、１４０Ｃも含む（集合的に、１４０と呼ぶ）。典型的には、１対のスイッチ１２０、１組のＨＤＤ１３０、およびサービス・プロセッサ１４０をエンクロージャ（図示せず）に収容する。図示するシステム１００では、サービス・プロセッサ１４０は、スイッチ機能とエンクロージャ環境を管理するＳＣＳＩエンクロージャ・サービス（ＳＥＳ）プロセッサである。
【０００９】
ＲＡＩＤアダプタ１１０Ａおよび１１０Ｂは各々、通信ネットワークもしくはファブリック１５０を介して、第１組のスイッチ１２２Ａおよび１２２Ｂの両方の冗長ポートに連結される。第１組のスイッチ１２２Ａおよび１２２Ｂはさらに、ファブリック１５０を介して、第２組のスイッチ１２４Ａおよび１２４Ｂの両方の冗長ポートに順に連結される。さらに、第２組のスイッチ１２４Ａおよび１２４Ｂがさらに、ファブリック１５０を介して、第３組のスイッチ１２６Ａおよび１２６Ｂの両方の冗長ポートに順に連結される。こうして、アダプタ１１０と第３エンクロージャ内のスイッチまたはＨＤＤとのあらゆる通信が、第１および第２組のスイッチを通過する。
【００１０】
図２のフローチャートを参照すると、パリティを生成するとき、ＲＡＩＤアダプタ１１０は、指定されるデータ・ブロックでＸＯＲを実行して、その結果をアダプタ１１０に返すコマンド（ステップ２００）をサービス・プロセッサ１４０にディスパッチする。サービス・プロセッサ１４０は対応のＨＤＤ１３０から指定されるデータ・ブロックを読み取り（ステップ２０２）、さらに各々がＸＯＲ演算を実行して（ステップ２０４）、指定されるデータ・ブロックのパリティ値を生成する（ステップ２０６）。各々がグループ全体の部分的なパリティ値であるパリティ値がアダプタ１１０に戻される（ステップ２０８）。アダプタ１１０はＸＯＲ演算を行うことによって（ステップ２１０）、部分的なパリティ値を結合して、完全なパリティ・ブロックを生成する（ステップ２１２）。さらに完全なパリティ値を指定されるスイッチ１２０に送信して（ステップ２１４）、指定されるＨＤＤ１３０に格納する（ステップ２１６）。こうして、アダプタ１１０で６回の個別の読み出し操作と１回の書き込み操作を行う代わりに、アダプタは２回の読み出し（サービス・プロセッサ１４０から部分的なパリティ値を受信する）と１回の書き込みだけの同等の操作を行えばよく、アダプタ・リソースおよびファブリックの帯域幅の大幅な節約になる。
【００１１】
故障ドライブからデータを再構築するのも同様な手順である。図３のブロック図は、第３エンクロージャ内のＨＤＤ  Ａ１、Ａ２、およびＡ５（第３サービス・プロセッサ１４０Ｃとスイッチ１２６Ａ、１２６Ｂが管理）、第２エンクロージャ内のＨＤＤ  Ａ３およびＡ４（第２サービス・プロセッサ１４０Ｂとスイッチ１２４Ａ、１２４Ｂが管理）、第１エンクロージャ内のＨＤＤ  Ａ６（第１サービス・プロセッサ１４０Ａとスイッチ１２２Ａ、１２２Ｂが管理）、および第２エンクロージャ内のパリティ・ドライブＡｐが１ドライブ・グループを構成すると想定している。ドライブＡ６が故障した場合、そのデータは再構築して復元しなければならない。ＲＡＩＤアダプタ１１０は、各々部分的なパリティ値を生成するよう、第２および第３エンクロージャ内の第２および第３サービス・プロセッサ１４０Ｂ、１４０Ｃにコマンドをディスパッチする。第２サービス・プロセッサ１４０ＢはＨＤＤ  Ａ３、Ａ４、およびＡｐからデータとパリティ・ブロックを読み出して、ＸＯＲ演算、Ａ３４ｐ＝Ａ３＋Ａ４＋Ａｐを行う。同様に、第３サービス・プロセッサ１４０ＣはＨＤＤ  Ａ１、Ａ２、およびＡ５からデータとパリティ・ブロックを読み込んで、ＸＯＲ演算、Ａ１５２＝Ａ１１＋Ａ５＋Ａ２を行う。それからこの２つの部分的なパリティ値をＲＡＩＤアダプタ１１０に送信し、ＲＡＩＤアダプタ１１０がそれらを結合して、失われたデータ・ブロックＡ６：Ａ６＝Ａ３４ｐ＋Ａ１５２を生成する。次に失われたブロックＡ６を第１エンクロージャ内のディスク・アレイ・スイッチ１２２に送信してＨＤＤの１つに書き込み、故障ＨＤＤを置き換える。ここでも、アダプタは２回の読み出し（サービス・プロセッサ１４０から部分的なパリティ値を受信する）と１回の書き込みだけの同等の操作を行えばよく、アダプタ・リソースとファブリックの帯域幅の大幅な節約になる。
【００１２】
さらに、アダプタ１１０とスイッチ１２０は非ブロッキングモードで操作するために、部分的なパリティ演算中に大量のデータ移動を１度に１ドライブずつスイッチ・ドメインにローカライズする。このため、サービス・プロセッサ１４０があるドライブで部分的なＸＯＲ演算を行いながら、他のすべてのドライブへのファブリック・ポートと隣接するエンクロージャ間のファブリック・ポートは、依然としてアダプタ１１０およびスイッチ１２０が他のタスクを行うために利用できる状態のままである。
【００１３】
本発明は完全な機能をもつデータ処理システムの状況で説明してきたが、当業者には、本発明のプロセスが命令のコンピュータ読み取り可能媒体、読み取り可能コードの形態および多様な形態に分散できること、並びに本発明が特定な種類の信号搬送媒体を実際に分散を行うために使用するのと関係なく適用できることは理解されることに留意するのが重要である。コンピュータ読み取り可能媒体、プログラムの例には、ディスケット、ハードディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭなどの記録型の媒体、並びにデジタル通信リンクおよびアナログ通信リンクなどの伝送型の媒体、プログラムが含まれる。
【００１４】
本発明の説明は例示と説明のために提示してきたが、すべてを網羅しているもしくは発明を開示した形態に制限するつもりはない。数多くの変更および変型が当業者には明らかであろう。実施例は発明の原理、実用的な用途を最善に説明するため、また当業者が意図される特定の用途に適した様々な変更を加えた様々な実施例について発明を理解できるように選び、記述した。さらに、方法およびシステムに関して以上説明してきたが、技術上のニーズはＲＡＩＤストレージ・システムでパリティ値を生成する命令を含むコンピュータ・プログラムとも一致しているであろう。
【図面の簡単な説明】
【００１５】
【図１】本発明を実施できるＲＡＩＤストレージ・システムのブロック図である。
【図２】本発明の方法のフローチャートである。
【図３】故障ドライブからデータを再構築するプロセスを表すＲＡＩＤシステムのブロック図である。
【図１】
0005241117.tif 000002
【図２】
0005241117.tif 000003
【図３】
0005241117.tif 000004