(57)【要約】【課題】１つ又はそれ以上の専用パリティ・ディスクを有するＲＡＩＤアレイに拡張ディスクを付加する方法を提供すること。【解決手段】本発明は、１つ又はそれ以上の専用パリティ・ディスクを有するＲＡＩＤアレイに関する。具体的には、本発明は、拡張可能なＲＡＩＤアレイに関する。ストライピングされたデータをディスク間で再分散する必要なしに、拡張ディスクをＲＡＩＤアレイに付加することができる。【選択図】図１
2006244513.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの専用パリティ・ディスクを有するディスク・アレイに拡張ディスクを付加する方法であって、
第１のディスクにわたってデータをストライピングすることなく、前記ディスク・アレイの１つ又はそれ以上の第１のディスク上にデータを格納し、
前記ディスク・アレイ内のパリティ・ディスク上に前記第１のディスクについてのパリティ・データを格納し、
前記ディスク・アレイ内の前記第１のディスクについての前記パリティ・ディスク上に記録されたパリティ値の妥当性を保存する、拡張ディスク上の初期データ値を有する拡張ディスクを前記アレイに付加する、
ステップを含むことを特徴とする方法。
【請求項２】
前記拡張ディスク上の前記初期データ値が事実上ゼロであることを特徴とする請求項１に記載の方法。
【請求項３】
前記拡張ディスクを付加する前に前記パリティ・ディスク上に記録された前記パリティ値が、前記ディスク・アレイ内の前記第１のディスク上のデータ値のＸＯＲとして計算されることを特徴とする請求項２に記載の方法。
【請求項４】
前記拡張ディスクを付加する前に前記パリティ・ディスク上に記録された前記パリティ値が、前記ディスク・アレイ内の前記第１のディスク上のデータ値のＸＮＯＲとして計算されることを特徴とする請求項２に記載の方法。
【請求項５】
初期データ値としてゼロを前記拡張ディスク上に書き込むことによって、使用のために該拡張ディスクを準備するステップをさらに含む請求項２に記載の方法。
【請求項６】
要約テーブルにフラグを立て、事実上ゼロを有するものとして前記拡張ディスクのセクションを示すことによって、使用のために該拡張ディスクを準備し、
初期値としてゼロを前記セクションの上に書き込むことによって、データ値の受信のために前記拡張ディスクの少なくとも１つのセクションを準備する、
ステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項７】
請求項１に記載の方法を実行するように適合されたリソース、論理、及び入出力チャネルを含むことを特徴とするディスク・コントローラ。
【請求項８】
請求項２に記載の方法を実行するように適合されたリソース、論理、及び入出力チャネルを含むことを特徴とするディスク・コントローラ。
【請求項９】
請求項２に記載の方法を実行するように適合された論理を用いて記録される機械可読メモリを含むことを特徴とする製造物品。
【請求項１０】
少なくとも１つの専用パリティ・ディスクを有するディスク・アレイに拡張ディスクを付加する方法であって、
第１のディスクにわたってデータをストライピングすることなく、前記ディスク・アレイの１つ又はそれ以上の第１のディスク上にデータを格納し、
前記ディスク・アレイ内のパリティ・ディスク上に前記第１のディスクについてのパリティ・データを格納し、
前記拡張ディスクのセクションを有する前記アレイに拡張ディスクを付加し、前記パリティ・ディスク上のパリティ値の計算に含まれないものとして、前記拡張ディスクのセクションを追跡し、
バックグラウンド・リソースを用いて又は要求に応じて、前記拡張ディスクの対応するセクションを含むようにパリティ値の前記セクションを再計算し、前記パリティ・ディスク上のパリティ値の計算に含まれるものとして前記再計算されたセクションを追跡する、
ステップを含むことを特徴とする方法。
【請求項１１】
請求項１０に記載の方法を実行するように適合されたリソース、論理、及び入出力チャネルを含むことを特徴とするディスク・コントローラ。
【請求項１２】
請求項１１に記載の方法を実行するように適合されたリソース、論理、及び入出力チャネルを含むことを特徴とするディスク・コントローラ。
【請求項１３】
請求項１１に記載の方法を実行するように適合された論理を用いて記録される機械可読メモリを含むことを特徴とする製造物品。
【請求項１４】
パリティ値の前記セクションを再計算するステップが、前記第１のディスクから同時に読み取り、前記パリティ・ディスクに書き込むステップを含み、読み取り及び書き込みの両方について、前記ディスク・アレイ内のディスクにアクセスする必要がなくなることを特徴とする請求項１０に記載の方法。
【請求項１５】
２つ又はそれ以上の第１のディスク、少なくとも１つの専用パリティ・ディスク、及び１つ又はそれ以上の利用可能な拡張ディスク・アクセス・チャネルを有するディスク・アレイへの書き込み方法であって、
前記ディスク・アレイ内の前記第１のディスクの間で特定のディスクにストライピングすることなく、データを書き込み、
前記特定のディスク以外の前記ディスク・アレイ内の残りの第１のディスクから同時に読み取り、
前記残りの第１のディスクからのデータを用いて、前記特定のディスクに向けられた前記データを保護するパリティ値を計算し、
前記計算されたパリティ値を前記パリティ・ディスクに書き込む、
ステップを含み、
前記特定のディスクへの書き込みをサポートするために、読み取り及び書き込みの両方について、前記ディスク・アレイ内のディスクにアクセスする必要がなくなることを特徴とする方法。
【請求項１６】
前記特定のディスク以外の前記ディスク・アレイ内の第１のディスクから同時に読み取る前記ステップが、前記第１のディスクからの転送の際に著しい待ち時間をもたらさないように、十分な処理量を有する１つ又はそれ以上のディスク・アクセス・チャネルを用いることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記パリティ・ディスク上に記録された前記パリティ値が、前記ディスク・アレイ内の前記第１のディスク上のデータ値のＸＯＲとして計算されることを特徴とする請求項１５に記載の方法。
【請求項１８】
前記パリティ・ディスク上に記録された前記パリティ値が、前記ディスク・アレイ内の前記第１のディスク上のデータ値のＸＮＯＲとして計算されることを特徴とする請求項１５に記載の方法。
【請求項１９】
前記利用可能な拡張チャネルの１つを用いて、拡張ディスクを前記ディスク・アレイに付加し、
前記拡張ディスクを収容するために、前記パリティ・ディスク上の拡張前のパリティ値を再計算することなく、データ格納のために該拡張ディスクを利用可能にしながら前記第１のディスクを使い続ける、
ステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項２０】
前記パリティ・ディスク上に記録された前記パリティ値が、前記ディスク・アレイ内の前記第１のディスク上のデータ値のＸＯＲとして計算され、前記拡張ディスク上の初期データ値が事実上ゼロであることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記パリティ・ディスク上に記録される前記パリティ値が、前記ディスク・アレイ内の前記第１のディスク上のデータ値のＸＮＯＲとして計算され、前記拡張ディスク上の初期データ値が事実上ゼロであることを特徴とする請求項１９に記載の方法。
【請求項２２】
前記利用可能な拡張チャネルの１つを用いて、拡張ディスクを前記ディスク・アレイに付加し、
前記第１のディスクから前記拡張ディスクにデータを再配置することなく、データ格納のために該拡張ディスクを利用可能にしながら該第１のディスクを使い続ける、
ステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項２３】
請求項１５に記載の方法を実行するように適合されたリソース、論理、及び入出力チャネルを含むことを特徴とするディスク・コントローラ。
【請求項２４】
請求項１９に記載の方法を実行するように適合されたリソース、論理、及び入出力チャネルを含むことを特徴とするディスク・コントローラ。
【請求項２５】
請求項１５に記載の方法を実行するように適合された論理を用いて記録される機械可読メモリを含むことを特徴とする製造物品。
【請求項２６】
請求項１９に記載の方法を実行するように適合された論理を用いて記録される機械可読メモリを含むことを特徴とする製造物品。
【請求項２７】
前記利用可能な拡張チャネルの１つを用いて、拡張ディスクを前記ディスク・アレイに付加し、
前記拡張ディスク上のデータ値を考慮するために、前記パリティ・ディスク上のパリティ値を再計算し、パリティ値の再計算が完了した該拡張ディスクのセクションを追跡することによって、データ格納のために該拡張ディスクを利用可能にしながら前記第１のディスクを使い続ける、
ステップをさらに含むことを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つ又はそれ以上の専用パリティ・ディスクを有するＲＡＩＤアレイに関する。具体的には、本発明は、拡張可能なＲＡＩＤアレイに関する。
【背景技術】
【０００２】
頭文字ＲＡＩＤは、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｅｘｐｅｎｓｉｖｅ  ｄｉｓｋｓの略である。カリフォルニア大学バークリー校、電気工学及びコンピュータ・サイエンス学部のＤａｖｉｄ  Ｐａｔｔｅｒｓｏｎ及びその同僚が、ＲＡＩＤ１、ＲＡＩＤ２、ＲＡＩＤ３、ＲＡＩＤ４、及びＲＡＩＤ５と呼ばれる保護レベルを有するＲＡＩＤアレイについていち早く説明した。Ｄ．Ａ．Ｐａｔｔｅｒｓｏｎ，Ｇ．Ｇｉｂｓｏｎ，及びＲ．Ｈ．Ｋａｔｚ著、「Ａ  ｃａｓｅ  ｆｏｒ  ｒｅｄｕｎｄａｎｔ  ａｒｒａｙｓ  ｏｆ  ｉｎｅｘｐｅｎｓｉｖｅ  ｄｉｓｋｓ（ＲＡＩＤ）」、ＡＣＭ  ＳＩＧＭＯＤ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  Ｄａｔａ，１０９−１１６ページ、１９８８年６月１日−３日を参照されたい。ＲＡＩＤ保護レベルの中で、ＲＡＩＤ３及びＲＡＩＤ４は、専用パリティ・ディスクを提供するものであった。ＲＡＩＤ３及びＲＡＩＤ４は、ＲＡＩＤ３が、小さい塊内のディスクにわたってデータをストライプし、ＲＡＩＤ４が、わずかに大きい塊を用い、小さいブロックを単一のディスクに完全に書き込むことができるという点で、異なるものであった。Ｐａｔｔｅｒｓｏｎによって説明されるように、ＲＡＩＤ４の不利な点は、ＲＡＩＤ４は、読み取りの際に並行処理を達成するが、１つのグループへの書き込みごとにパリティ・ディスクを読み取り、書き込まなくてはならないので、書き込みが、依然としてグループごとに１回に制限されている点であった。この不利な点は、部分的には、単一のセクタへの書き込みのための新規パリティは、新規パリティ＝（旧データＸＯＲ新規データ）ＸＯＲ旧パリティとして計算されるという、Ｐａｔｔｅｒｓｏｎの教示に関連する。この計算は、新規パリティ値を計算するために、非パリティ・ディスクを多数回読み取る必要性を回避した。制限された又は共有の利用可能なディスク・アクセス・チャネル及び相対的に低速のディスク・アクセスを用いる場合、パリティ計算のためのデータのリードバック要件を最小に抑えることが不可欠であった。
【０００３】
専用パリティ・ディスクを有するＲＡＩＤの実際的な実施により、非パリティ・ディスクにわたってデータがストライピングされる。ストライピングとは、データを小さな塊に分割し、各々の書き込みを非パリティ・ディスクの全てにわたって分散させることである（パリティ・ディスクへの更新と共に）。Ｎｅｔｗｏｒｋ  Ａｐｐｌｉａｎｃｅ社が、現在のところ、ストライピングによりＲＡＩＤ４を実施するＮｅｔＡｐｐ  Ｆ５４０として識別される製品を説明する。Ｎｅｔｗｏｒｋ  Ａｐｐｌｉａｎｃｅ社、２００５年１月２９日付けで印刷された−ｈｔｔｐ：／／ｗｗｗ．ｎｅｔａｐｐ．ｃｏｍ／ｔｅｃｈ＿ｌｉｂｒａｒｙ／３０１３．ｈｔｍｌ？ｆｍｔでアクセスされたＮｅｔＡｐｐ  Ｆ５４０−〔ＴＲ３０１３〕でデータ可用性を最適化。同様に、ＮｅｔＣｅｌｌ社は、現在のところ、ＲＡＩＤ０の性能及びＲＡＩＤ５の信頼性を有するものとして、ＳｙｎｃＲＡＩＤハードウェア・ソリューションを説明する。製品の説明は、ＳｙｎｃＲＡＩＤが「ＲＡＩＤ  ＸＬ」を改鋳したＲＡＩＤ３プロトコルに従う非パリティ・ディスクにわたって、データをストライピングすることを完全に可能にする。２００５年１月２９日付けのｈｔｔｐ：／／ｗｗｗ．ｎｅｔｃｅｌｌ．ｃｏｍ／ｐｄｆ／ＳｙｎｃＲＡＩＤ％２０Ｓｏｌｕｔｉｏｎｓ．ｐｄｆでアクセスされたＳｙｎｃＲＡＩＤソフトウェア・ソリューションを参照されたい。ＮｅｔＣｅｌｌ  Ｃｏｒｐｏｒａｔｉｏｎ社に譲渡された米国特許第６，０１８，７７８号及び第６，７７２，１０８号も参照されたい。
【０００４】
状況次第で、データのストライピングにより並列アクセスが達成され、これにより処理量が改善されるが、付加的なディスクを付加することによってストライピングされたアレイを拡張することは非常に困難である。ストライピングされたアレイにディスクを付加することは、データを新旧ディスクの間に再分配するために、アレイ内のパリティ・ディスク及び非パリティ・ディスクの両方に再書き込みすることを必要とする。データの再配分により、パリティ・ディスク上に格納されたパリティ値が変わるので、該パリティ・ディスクにも再書き込みされる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
格納部の拡張のために、付加されたディスクを収容しながら、効率的なままであるＲＡＩＤのばらつきをもたらす可能性が生じる。
【課題を解決するための手段】
【０００６】
本発明は、１つ又はそれ以上の専用パリティ・ディスクを有するＲＡＩＤアレイに関する。具体的には、本発明は、拡張可能なＲＡＩＤアレイに関する。本発明の特定の態様は、添付の特許請求の範囲、明細書、及び図面に説明される。
【発明を実施するための最良の形態】
【０００７】
以下の詳細な説明が、図面を参照してなされる。好ましい実施形態は、本発明を例証するために説明されており、添付の特許請求の範囲によって定められる本発明の範囲を制限するために説明されるものではない。当業者であれば、次の説明において種々の均等な変形を認識するであろう。
【０００８】
図１は、コントローラ１３１、非パリティ・ディスク１１１、１１２、１１３、及びパリティ・ディスク１２１を含むＲＡＩＤアレイを示す。３つの非パリティ・ディスクが示されているが、以下の説明は、第２の非パリティ・ディスクが付加されたアレイなど、２つ又はそれ以上の非パリティ・ディスクを有するアレイにも適用される。ＳＣＳＩインタフェースがコンコントローラ１３１とディスクとの間に用いられるとき、ＳＣＳＩディスク間で同じチャネルを共有することができるが、このことは、コントローラを簡略化するもののアクセス速度を遅くする。ＡＴＡ／ＩＤＥ又はＥＩＤＥインタフェースが用いられるとき、２つのディスクが、マスター及びスレーブ・ドライブ又は一次及び二次ドライブとしてチャネルを共有することができ、或いは、各々のディスクが別個のインタフェースを用いることができる。より新しいＳＡＴＡドライブを用いる場合には、一般的に別個のチャネルが用いられる。ファイバ・チャネル及びＩｎｆｎｉＢａｎｄを用いる場合には、物理的媒体又はバスが共有され、チャネルは、論理的に構築され、壊される。
【０００９】
図１を参照することによって、Ｐａｔｔｅｒｓｏｎによって説明されるようなＲａｉｄ３及びＲＡＩＤ４プロトコルを理解することができる。ＲＡＩＤ３の実施において、データのビット又はバイトのような少量のデータが、非パリティ・ディスク１１１−１１３にわたってストライピングされる。パリティ・データは、パリティ・ディスク１２１上に格納される。ＲＡＩＤ４の実施において、データ・ブロックが、連続的に非パリティ・ディスク１１１−１１３に書き込まれる。ブロックが全ての非パリティ・ディスクに書き込まれる前に書き込みが中断された場合に備えて、現在のディスク１２１上の非パリティ・データを保持するように、注意を払う必要がある。Ｐａｔｔｅｒｓｏｎは、このことが、非パリティ・ディスクのいずれかに各ブロックを書き込んだ後にパリティ・ディスク１２１を更新することにつながり、そのことが処理量を妨げると教示する。
【００１０】
ＲＡＩＤ４の実施において、図２は、非パリティ・ディスク１１１への単一のデータ・ブロックの書き込みを示す。Ｐａｔｔｅｒｓｏｎは、付加的な非パリティ・ディスク１１２、１１３を読み込むことなく、ターゲット・ディスク１１１のデータに加えてパリティ・ディスク１２１からのデータの新旧の値を用いて、該パリティ・ディスク１２１に書き込まれることになるパリティ・データを再計算することによって、ＲＡＩＤ４を効率的に実施できることを教示する。バックグラウンド・セクションにおいて、論理式が与えられる。図２に示され、Ｐａｔｔｅｒｓｏｎによって教示されるように、非パリティ・ディスク１１１へのブロックの書き込みは、非パリティ・ディスク１１１及びパリティ・ディスク１２１の両方から読み取りを行うことに加えて、両ディスクを更新するために書き込みを行うことを必要とする。単一のブロック書き込みを達成するために、システムは、ターゲットの非パリティ・ディスク及びパリティ・ディスクからの連続的な読み取り及び書き込みを必要とする。
【００１１】
ＲＡＩＤ４の実施において、図３は、非パリティ・ディスク１１１、１１２、及び１１３へのデータ・ブロックの書き込みを示す。この図は、連続的な非パリティ・ディスクへのブロック書き込み間の中断に対する保護を示す。この図において、システムは、パリティ・ディスクを読み取る。図がごちゃごちゃするのを回避するために、この読み取りを１３１←１２１と表し、データがパリティ・ディスク１２１からコントローラ１３１に転送されることを示す。パリティ・ディスク上の更新されたパリティ値について既知のものを連続的に再利用するとき、システムは、非パリティ・ディスクとの間でブロックの読み取り及び書き込みを行い、パリティ・ディスクを更新し、個々の非パリティ・ディスクを更新する。例えば、１３１←１２１から既にキャッシュされた初期パリティ値を用いて、システムは、１３１←１１１を読み取り、次に、１３１→１１１及び１３１→１２１に書き込む。次のブロックについては、１３１→１２１から記憶された更新されたパリティ値を用いて、読み書きが、１３１←１１２、１３１→１１２、及び１３１→１２１に行われる。
【００１２】
ＲＡＩＤ３の実施において、図４は、ＰａｔｔｅｒｓｏｎがＲＡＩＤ４を用いて対処した小規模な書き込みの問題を示す。一般に、ディスクの入出力は、バイトごとではなく、ブロック・ベースで行われる。多くの入出力トランザクションは、特にＮ個のディスクにわたってストライピングされたブロックが、係数Ｎによってブロックサイズを事実上増大させるとき、データ・ブロック全体より少ない量を含む。データがアレイ内の非パリティ・ディスクの全てにわたってストライピングされるとき、小規模な書き込みは、少なくとも、部分的に更新されたブロックの全てを１３１←１１１、１３１←１１２、１３１←１１３に読み取り、１３１→１１１、１３１→１１２、１３１→１１３にブロックを更新し、１３１→１２１にパリティ・ディスクを書き込むことを必要とする。実際には、図３に示されるように、各々の非パリティ・ディスクの更新についてパリティ・ディスクを書き込む必要がある。アレイ内のディスクは、連続的な読み書き内に含まれる。
【００１３】
ＲＡＩＤ３及びＲＡＩＤ４とは対称的に、図５は、非パリティ・ディスクにわたってビット、バイト、又はブロックをストライピングすることなく、且つ、いずれか１つのディスクにも連続的な読み書きを行わない、読み書きの代替的な構成を示す。３つの非パリティ・ディスクが存在する場合には、ディスク１１１が一杯になり、その後、順にディスク１１２及び１１３に及ぶまでデータを書き込むことができる。後に示されるように、このことは、アレイへのディスクの付加を簡略化する。
【００１４】
上のバックグラウンド・セクションに説明され、図２に示されるように、Ｐａｔｔｅｒｓｏｎは、ターゲット・ディスク及びパリティ・ディスクのパリティを読み取り、次に、新規パリティ＝（旧データＸＯＲ新規データ）ＸＯＲ旧パリティを計算することを教示した。このことは、多数の非パリティ・ディスクを読み取ることを回避した。Ｐａｔｔｅｒｓｏｎとは反対に、この手法は、ターゲット・ディスク以外のアレイ内の非パリティ・ディスクの全てを読み取り、多数の非パリティ・ディスクを用いて新しいパリティ値を計算するステップを含む。ターゲット・ディスクのターゲット値は既知であるので、新しいパリティ値を計算することができ、データが非ターゲットの非パリティ・ディスクから到着し始めるとすぐに、パリティ・ディスクの書き込み・更新が開始可能である。パリティ・ディスクへのブロック出力を開始する前に、ブロック読み取りの完了を待つ必要はない。
【００１５】
一般に、並列式ディスク・アクセスは、ＲＡＩＤの読み書きを単一のディスクへのアクセスより迅速にすると考えられるが、図２乃至図４は、図５の手法が、実際には、書き込みがより迅速なものであることを示す。図５は、更新書き込みを行うときに、いずれかの単一のディスクから読み取り及び書き込みの両方を必要としない実施形態を示す。別個のディスク・アクセス・チャネル又は並列ディスク・アクセス・チャネル、及び並列ハードウェアを用いて、ターゲット・ディスクへの書き込み１３１→１１１及び非ターゲットの非パリティ・ディスクからの読み取り１３１←１１２、１３１←１１３が、同時に即ち並列に進むことができる。パリティ・ディスクへの書き込み１３１→１２１は、最初のバイトが非パリティ・ディスク１１２、１１３から到達するとすぐに開始することができる。ディスクは読み取り及び書き込みの両方を必要としないので、ターゲット・ディスクを書き込み、パリティ値の計算についてのデータを取り出し、パリティ値をパリティ・ディスクに書き込むプロセス全体は、ターゲット・ディスクに書き込むより僅かに長くかかるだけである。同時に読み取る際の別個の物理的チャネルに対する必要性は、単一のディスクのデータ処理量に対する物理的チャネルの帯域幅によって決まる。高い帯域幅のチャネルは、データ取得に遅れを引き起こすことなく、幾つかの論理チャネルを収容することができる。高い帯域幅のチャネルは、論理的なものであろうと、物理的なものであろうと、十分なチャネル帯域幅を有するためにストライピングすることなくＲＡＩＤを用いるときに有用であり、非パリティ・ディスクの全てから又は非パリティ・ディスクの１つを除く全てから同時に読み取ることが、チャネル可用性、チャネル処理量、又は他のディスク・アクセス・チャネル特性によって制限されない。
【００１６】
図６及び図７は、非パリティ・ディスクへのアレイの付加を示す。図１を参照すると、アレイは、データを有する２つの非パリティ・ドライブ１１１、１１２で始まり、第３の非パリティ・ドライブが付加されると想定される。図６は、ストライピングされたアレイへの第３の非パリティ・ドライブの付加を示す。ＲＡＩＤディスクがストライピングされるとき、データは、非パリティ・ディスクの中で拡散される。大文字がドライブ１１１上に格納されるデータを示し、小文字がドライブ１１２上に格納されるデータを示す場合、幾つかの語は、交互の文字を用いてディスク１１１、１１２上に格納することができる。或いは、異なる非パリティ・ディスク上に交互のビットを格納することができる。ストライピングは、パターン、典型的にはディスク全体のパターンに従って進む。別のドライブが付加されると、パターンが変わるので、データは、該データが最初に書き込まれたときに他のドライブがインストールされた場合にあった場所に移動される。２つの非パリティ・ディスク及び付加された第３の非パリティ・ディスクを有する図７のシステムは、１３１←１１１、１３１←１１２にデータを読み取り、１３１→１１１、拡張されたディスク・アレイにわたって１３１→１１２、１３１→１１３にデータを認識し、新しいパリティ値を計算し、１３１→１２１に書き込む。
【００１７】
図７は、データがストライピングされず、付加されたディスクが特別に準備されたときの拡張の容易さを示す。この図は、ディスクがストライピングなしで用いられ、新しいディスクが利用可能な空き領域になると想定する。新しいディスクは、パリティ値の妥当性をパリティ・ディスク１２１上に保持する方法で付加され、準備される。一般に、パリティ値は、ＸＯＲ演算子をアレイ内の非パリティ・ディスク上のデータに連続的に付加することによって計算することができる。代替的に、ＸＮＯＲ演算子を用いることもできる。ＸＯＲ演算子又はＸＮＯＲ演算子のいずれについても、事実上全てゼロに初期化される新しいディスクは、パリティ・ディスク１２１上のパリティ値を変えない。このことは、非パリティ・ディスクの数にも又は非パリティ・ディスク上の如何なる値にも関係なく、論理的にいえることである。演算子を適用した結果が「１」であろうと又は「０」であろうと、その結果を別の「０」と組み合わせることにより、結果は変わらないままである。事実上全てゼロに初期化された非パリティ・ディスクがアレイに付加されたとき、パリティ・ディスク上のパリティ値を再計算する必要はない。書き込み１３１→１１３は、ディスクを準備することになっている。実際のデータが書き込まれると、手順は、図５に示されるようになる。
【００１８】
付加される非パリティ・ディスクを効率的に準備することは、ゼロをディスクに物理的に書き込むステップか、又はゼロ値を有するものとしてディスクのセクタを論理的にマーク付けするステップを含み得る。例えば、予約されたデータ・トラック内のデータ領域は、ゼロが物理的に書き込まれたかのように該ディスクの特定のセクションを論理的に処理すべきかどうかを、単一のビットを用いて示すように用いられるビット文字列を含むことができる。この情報は、フラグ・ビット又はバイトとして、或いは別の形式で、ディスクの領域にわたって拡散させることができ、或いはディスクのセクション又はブロックにおけるヘッダ情報として適用することさえも可能である。代替的に、この情報は、拡張ディスクが最初に検知されたときに確立されるテーブルにおいて、ＲＡＩＤコントローラ上のメモリに格納することもできる。ＲＡＩＤコントローラに格納された場合、不揮発性メモリを用いることができる。
【００１９】
代替的に、データがストライピングされていないときに拡張ディスクを付加することは、どんなデータを保持しようと拡張ディスクを用いることを含み得る。ストライピング及び任意のデータ値を用いずに拡張ディスクを付加することは、拡張ディスク上のデータ値を考慮するために、パリティ・ディスク上に格納されたパリティ値を再計算することを必要とする。このことは、要求に応じて又はバックグラウンドにおいて行うことができる。更新されたパリティ値は、パリティ・ディスク及び拡張ディスク、又は拡張ディクスを含む非パリティ・ディスクのいずれかにより計算することができる。パリティ・ディスク及び拡張ディスクを用いることは、両方のディスクから読み取り、続いてパリティ・ディスクに書き込むことを必要とする。非パリティ・ディスクの全てを用いることは、これらのディスクの全てから読み取り、パリティ・ディスクに書き込むことを必要とする。このように、読み取り及び書き込みの両方にディスクを関与させる必要はない。要求に応じて又はパリティ値のバックグラウンド更新をサポートするために、システムは、拡張ディスクのセクションを利用可能なものとして論理的にマーク付けすることができる。例えば、予約されたディスク・トラック内のデータ領域は、該ディスクの特定のセクションが、パリティ・ディスクについてのパリティ計算に組み込まれたかどうかを、単一のビットを用いて示すように用いられるビット文字列を含むことができる。この情報は、フラグ・ビット又はバイトとして、或いは別の形式で、ディスクの領域にわたって拡散させることができ、或いはディスクのセクション又はブロックにおけるヘッダ情報として適用することさえも可能である。代替的に、この情報は、拡張ディスクが最初に検知されたときに確立されるテーブルにおいて、ＲＡＩＤコントローラ上のメモリに格納することもできる。ＲＡＩＤコントローラに格納された場合、不揮発性メモリを用いることもできる。要求に応じて、又はバックグラウンドにおいて、パリティ・ディスクのパリティ値は、セクションごとに、計算し、更新することができる。セクションが大きくなる程、該セクションが処理され、利用可能となるかどうかを追跡するのに必要なオーバーヘッドは少なくなる。
【００２０】
幾つかの特定の実施形態
本発明は、方法として又は該方法を実施するように適合された装置として実施することができる。コントローラ又はディスクをアレイに付加する人間の操作者によって実行される操作の観点から、同じ方法を見ることができる。本発明は、ＲＡＩＤアレイを制御するための論理を用いて記録された媒体のような製造物品とすることができる。
【００２１】
一実施形態は、少なくとも１つの専用パリティ・ディスクを有するディスク・アレイに拡張ディスクを付加する方法である。この方法は、ディスク・アレイの１つ又はそれ以上の第１の非パリティ・ディスク上にデータを格納するステップを含む。第１のディスクにわたってストライピングすることなく、データが格納される。すなわち、データが分散されるディスクの数に依存するストライピング・パターンは存在しない。この方法はさらに、第１のものについてのパリティ・データをディスク・アレイ内のパリティ・ディスク上に格納するステップを含む。パリティ・ディスク上に記録されたパリティ値の妥当性を保存する、拡張ディスク上の初期データ値を有する拡張ディスクが付加される。初期データ値は、拡張ディスク上に物理的に書き込むことができ、又は暗黙に示すこともできる。パリティ・ディスク上のパリティ値を再計算する必要なしに、且つ、第１の非パリティ・ディスクの中でデータを再構成する必要なしに、拡張ディスクを付加することができる。
【００２２】
この方法の一態様は、拡張ディスク上の初期データ値を事実上ゼロに設定することができる。初期データ値としてゼロを拡張ディスク上に書き込むことができ、或いは、１つ又はそれ以上のフラグを設定し、ディスク上の値をゼロと見なすべきことを示すこともできる。ビット又はバイトは、フラグとして適切に用いることができ、拡張ディスク上の１つの場所に集めるか、又は拡張ディスクにわたって分散させることができる。代替的に、ディスク上の１つ又はそれ以上の範囲の位置を、ゼロと見なすように示すこともできる。ディスクの部分が物理的に初期化されるときに、これらの位置範囲を更新することができる。パリティ・ディスク上に記録されたパリティ値は、第１のディスクにわたるデータ値のＸＯＲ又はＸＮＯＲを用いて計算することができる。異なるパリティ値の計算が用いられる場合、異なる初期値を適用することができる。フラグを用いて、まだ初期化されていない拡張ディスクのセクションをパリティ計算から除外し、事実上、これらをパリティ・ディスク上に記録されたパリティ値の妥当性を保存する値に設定することができる。
【００２３】
代替的な実施形態は、拡張ディスク上のどんな初期値をも用い、バックグラウンド・リソースを用いて、及び／又は、要求に応じて、パリティ・ディスク上のセクションを更新する。この実施形態は、拡張ディスクのセクションを有するアレイに拡張ディスクを付加し、パリティ・ディスク上のパリティ値の計算内に含まれないものとして該拡張ディスクのセクションを追跡し、バックグラウンド・リソース又は要求に応じて、拡張ディスクの対応するセクションを含むようにパリティ値のセクションを再計算することによってパリティ・ディスク上のパリティ値のセクションを更新し、パリティ・ディスク上のパリティ値の計算内に含まれるものとして再計算されたセクションを追跡するステップを含む。前述の方法に適用される他の態様及び選択肢も、本実施形態に随意的に適用される。
【００２４】
別の実施形態は、前述の３つの段落に記載された方法の実施形態を実行するように適合された、リソース、論理、及び入出力チャネルを含むディスク・コントローラである。方法の実施形態の選択肢の態様は、任意の形状のディスク・コントローラの実施形態である。
【００２５】
さらに別の実施形態は、２つ又はそれ以上の第１のディスク、少なくとも１つの専用パリティ・ディスク、及び１つ又はそれ以上の利用可能な拡張ディスク・アクセス・チャネルを有するディスク・アレイへの書き込み方法である。この方法は、ディスク・アレイ内の第１のディスクの間で特定のディスクにストライピングすることなく、データを書き込むステップを含む。この方法はさらに、特定のディスク以外のディスク・アレイ内の残りの第１のディスクから同時に読み取るステップを含む。随意的に、読み取り及び書き込みは、ディスクについて別個のディスク・アクセス・チャネルを用いる。別個のディスク・アクセス・チャネルが使用されるので、随意的に、特定のディスクにデータを書き込むこと及び残りのディスクから同時に読み取ることが、重複する。本方法はさらに、残りの第１のディスクからのデータを用いて、特定のディスクに向けられたデータを保護するパリティ値を計算し、計算されたパリティ値をパリティ・ディスクに書き込むステップを含む。別個のディスク・アクセス・チャネルが使用されるので、随意的に、計算されたパリティ値をパリティ・ディスクに書き込むことは、残りの第１のディスクから同時に読み取ることと重複することがある。さらに、特定のディスクにデータを書き込むことは、残りの第１のディスクからの読み取りに依存せず、データが残りの第１のディスクから到着し始めるとすぐにパリティ値の書き込みが開始でき、パリティ値を計算できるので、データを特定のディスクに書き込むこと、残りの第１のディスクから同時に読み取ること、及びパリティ値を書き込むことが重複することがある。この実施形態についての幾つかの変形の有用な態様は、特定のディスクへの書き込みをサポートするために、読み取り及び書き込みの両方について、ディスク・アレイ内のディスクにアクセスする必要がないことである。
【００２６】
本方法はさらに、利用可能な拡張チャネルの１つを用いて拡張ディスクをディスク・アレイに付加するステップと、拡張ディスクを収容するためにパリティ・ディスク上の拡張前のパリティ値を再計算することなく、データ格納のために拡張ディスクを利用可能にしながら第１のディスクを使い続けるステップとを含むことができる。
【００２７】
代替的に、本方法はさらに、利用可能な拡張チャネルの１つを用いて拡張ディスクをディスク・アレイに付加するステップと、第１のディスクから拡張ディスクにデータを再配置することなく、データ格納のために拡張ディスクを利用可能にしながら、第１のディスクを使い続けるステップとを含むことができる。拡張ディスクは、第１のディスクにわたるデータの如何なるストライピングにも含まれない。
【００２８】
前述の方法の実施形態と同様に、本方法の一態様は、拡張ディスク上の初期データ値を事実上ゼロに設定することができる。拡張ディスク上の初期データ値として、ゼロを書き込むことができ、或いは、１つ又はそれ以上のフラグを設定し、ディスク上の値をゼロと見なすように示すこともできる。ビット又はバイトは、フラグとして適切に用いることができ、拡張ディスク上の１つの場所に集めるか、又は拡張ディスクにわたって分散させることができる。代替的に、ディスク上の１つ又はそれ以上の範囲の位置を、ゼロと見なすように示すこともできる。ディスクの部分が物理的に初期化されるときに、これらの位置範囲を更新することができる。パリティ・ディスク上に記録されたパリティ値は、第１のディスクにわたるデータ値のＸＯＲ又はＸＮＯＲを用いて計算することができる。異なるパリティ値の計算が用いられる場合、異なる初期値を適用することができる。フラグを用いて、まだ初期化されていない拡張ディスクのセクションをパリティ計算から除外し、事実上、これらをパリティ・ディスク上に記録されたパリティ値の妥当性を保持する値に設定することができる。
【００２９】
別の実施形態は、前述の４つの段落に記載された方法の実施形態を実行するように適合された、リソース、論理、及び入出力チャネルを含むディスク・コントローラである。方法の実施形態の選択肢の態様は、任意の形状のディスク・コントローラ実施形態である。
【００３０】
本発明は、上に説明された好ましい実施形態及び例を参照して開示されたが、これらの例は、制限的な意味ではなく、例証的な意味となるように意図されることが理解される。コンピュータ支援の処理は、説明された実施形態に関係している。したがって、本発明は、専用パリティ・ディスクを用い、ストライピングを用いずにＲＡＩＤ構成を実装し、拡張する方法、専用パリティ・ディスクを用い、ストライピングを用いずにＲＡＩＤ構成を実装し、拡張するための論理及びリソースを含むシステム、専用パリティ・ディスクを用い、ストライピングを用いずにＲＡＩＤ構成を実装し、拡張するための論理を用いて記録される媒体、或いは専用パリティ・ディスクを用い、ストライピングを用いずにＲＡＩＤ構成を実装し、拡張するための論理を用いて記録されるデータ・ストリームにおいて、具体化することができる。当業者であれば、本発明の精神及び添付の特許請求の範囲内にある修正及び組み合わせを容易に思いつくであろうと考えられる。
【図面の簡単な説明】
【００３１】
【図１】コントローラ、非パリティ・ディスク、及びパリティ・ディスクを含むＲＡＩＤアレイを示す。
【図２】非パリティ・ディスクへの単一のデータ・ブロックの書き込みを示す。
【図３】非パリティ・ディスクへの複数のデータ・ブロックの書き込みを示す。
【図４】小規模な書き込みの問題を示す。
【図５】非パリティ・ディスクにわたってビット、バイト、又はブロックのストライピングを行わず、且つ、いずれか１つのディスクに連続的に読み取り及び書き込みを行わない、代替的な読み取り及び書き込みの構成を示す。
【図６】アレイへの非パリティ・ディスクの付加を示す。
【図７】アレイへの非パリティ・ディスクの付加を示す。
【符号の説明】
【００３２】
１１１、１１２、１１３：非パリティ・ディスク
１２１：パリティ・ディスク
１３１：ディスク・コントローラ
【図１】
2006244513.tif 000003
【図２】
2006244513.tif 000004
【図３】
2006244513.tif 000005
【図４】
2006244513.tif 000006
【図５】
2006244513.tif 000007
【図６】
2006244513.tif 000008
【図７】
2006244513.tif 000009
【外国語明細書】
2006244513.tif 000010
2006244513.tif 000011
2006244513.tif 000012
2006244513.tif 000013
2006244513.tif 000014
2006244513.tif 000015
2006244513.tif 000016
2006244513.tif 000017
2006244513.tif 000018
2006244513.tif 000019
2006244513.tif 000020
2006244513.tif 000021
2006244513.tif 000022
2006244513.tif 000023
2006244513.tif 000024
2006244513.tif 000025