(57)【要約】【課題】ライト処理に伴うパリティ更新の処理を改善する。【解決手段】本発明の一態様において、ホスト・コントローラ２が、ＨＤＤ−Ｂ１ｂにライト・コマンド及び新データを送信する。ＨＤＤ−Ｂ１ｂは、新データを書き込むべき領域（０，Ｂ）の旧データを読み出す。ＨＤＤ−Ｂ１ｂは、さらに、新データと旧データとのＸＯＲ演算を行い、仮パリティを生成する。ＨＤＤ−Ｂ１ｂは、仮パリティを、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａ及び斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆの双方を宛先とするデータ・フレームに入れて送信する。ＨＤＤ−Ａ１ａ及びＨＤＤ−Ｆ１ｆは、仮パリティを使用してパリティの更新を行う。【選択図】図３
2008097053.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された第１のデータ記憶装置と第２のデータ記憶装置とを含むシステムであって、
前記第１のデータ記憶装置は、指定するアドレスのデータの書き換えを指示する第１のコマンドと、その第１のコマンドに対応するデータ・フレームとを受信し、
前記データ・フレームは、前記第１のコマンドが指示するデータ書き換えに使用する第１のデータと、第２のコマンド及びその第２のコマンドの送信先と、を含み、
前記第１のデータ記憶装置は、前記第１のコマンドに従って前記第１のデータを使用して前記指定されたアドレスのデータを書き換え、さらに、前記第２のコマンドと、前記アドレスのデータと関連付けられているパリティの書き換えに使用する第２のデータと、を前記送信先である前記第２のデータ記憶装置に送信し、
前記第２のデータ記憶装置は、前記第１のデータ記憶装置から受信した前記第２のコマンドに従って、前記第２のデータを使用して前記アドレスのデータと関連付けられているパリティの書き換えを行う、システム。
【請求項２】
前記ネットワークを介して接続された第３のデータ記憶装置をさらに含み、
前記データ・フレームは、第３のコマンド及びその第３のコマンドの送信先をさらに含み、
前記第３のデータ記憶装置は、前記第１のデータ記憶装置から送信された前記第３のコマンドと前記第２のデータを取得し、前記第３のコマンドに従って前記第２のデータを使用して前記アドレスの記録データと関連付けられているパリティの書き換えを行う、
請求項１に記載のシステム。
【請求項３】
前記第１のデータ記憶装置は、前記データ・フレームから取得した前記第３のコマンドと前記第２のデータとを、前記第３のデータ記憶装置に送信し、
前記第３のデータ記憶装置は、前記第１のデータ記憶装置から送信された前記第３のコマンドと前記第２のデータとを取得して前記パリティの書き換えを行う、
請求項２に記載のシステム。
【請求項４】
前記第１のデータ記憶装置は、前記第３のコマンドと前記第３のコマンドの送信先と前記第２のデータとを含むデータ・フレームを、前記第２の装置に送信し、
前記第２のデータ記憶装置は、受信した前記データ・フレーム内の前記第３のコマンドと前記第２のデータとを、前記第３のデータ記憶装置に送信し、
前記第３のデータ記憶装置は、前記第２のデータ記憶装置から送信された前記第３のコマンドと前記第２のデータとを取得して前記パリティの書き換えを行う、
請求項２に記載のシステム。
【請求項５】
前記第１のデータ記憶装置は、前記第２のデータを、前記指定されたアドレスに書き込む前記第１のデータと、そのアドレス記憶されていた旧データとの排他的論理和によって生成し、
前記第２のデータ記憶装置は、前記第２のデータと予め記憶していた旧パリティとの排他的論理和によって新パリティを生成する、
請求項１に記載のシステム。
【請求項６】
ネットワークを介して接続された複数のデータ記憶装置を有するシステムに使用されるデータ記憶装置であって、
指定するアドレスのデータの書き換えを指示する第１のコマンドと、その第１のコマンドに対応し、前記第１のコマンドが指示するデータ書き換えに使用する第１のデータと、第２のコマンド及びその第２のコマンドの送信先とを含むデータ・フレームと、を受信する受信部と、
前記第１のコマンドに従って前記第１のデータを使用して前記指定されたアドレスのデータを書き換える制御部と、
前記第２のコマンドと、前記アドレスのデータと関連付けられているパリティの書き換えに使用する第２のデータと、を前記送信先に送信する送信部と、
を有するデータ記憶装置。
【請求項７】
前記コントローラは、前記第２のデータを、前記指定されたアドレスに書き込む前記第１のデータと、そのアドレス記憶されていた旧データとの排他的論理和によって生成する、
請求項６に記載のデータ記憶装置。
【請求項８】
ネットワークを介して接続された複数のデータ記憶装置を含み、各データ記憶装置の単位データ・ブロックを異なる２方向においてそれぞれ排他的論理和演算することによって二重のパリティを生成し保存するシステムであって、
ライト・コマンドと新データとを取得し、旧データを前記新データで書き換え、前記新データと前記旧データとの排他的論理和演算を行って仮パリティを生成し、前記仮パリティを含む一つのデータ・フレームを前記旧データが対応するパリティを記憶する二つのデータ記憶装置に向けて送信する、第１のデータ記憶装置と、
前記データ・フレームを受信し、そのデータ・フレームに含まれる前記仮パリティを取得し、前記旧データに対応する第１の旧パリティと前記仮パリティとの排他的論理和演算を行って第１の新パリティを生成し、前記第１の新パリティを保存する第２のデータ記憶装置と、
前記データ・フレームを受信し、そのデータ・フレームに含まれる前記仮パリティを取得し、前記旧データに対応する第２の旧パリティと前記仮パリティとの排他的論理和演算を行って第２の新パリティを生成し、その第２の新パリティを保存する第３のデータ記憶装置と、
を有するシステム。
【請求項９】
前記第１のデータ記憶装置は、前記新データと第２のコマンドとその第２のコマンドの送信先とを含むデータ・フレームを受信し、
前記第２のデータ記憶装置は、第２のコマンドの送信先であり、前記第１のデータ記憶装置から転送された前記第２のコマンドに従って、前記新パリティの生成及び保存を実行する、
請求項８に記載のシステム。
【請求項１０】
前記第１のデータ記憶装置が受信する前記データ・フレームは、第３のコマンドとその第３のコマンドの送信先とをさらに含み、
前記第３のデータ記憶装置は、第３のコマンドの送信先であり、前記第１のデータ記憶装置から転送された前記第３のコマンドに従って、前記新パリティの生成及び保存を実行する、
請求項９に記載のシステム。
【請求項１１】
ネットワークを介して接続された複数のデータ記憶装置を含み、各データ記憶装置の単位データ・ブロックを異なる２方向においてそれぞれ排他的論理和演算することによって二重のパリティを生成し保存するシステムに使用されるデータ記憶装置であって、
ライト・コマンドと新データとを受信する受信部と、
旧データを前記新データで書き換え、前記新データと前記旧データとの排他的論理和演算を行って仮パリティを生成する制御部と、
前記仮パリティを含む一つのデータ・フレームを前記旧データが対応するパリティを記憶する二つのデータ記憶装置に向けて送信する送信部と、
を有するデータ記憶装置。
【請求項１２】
前記受信部は、前記新データと第２のコマンドとその第２のコマンドの送信先とを含むデータ・フレームを受信し、
前記送信部は前記第２のコマンドを前記送信先に送信して、前記仮パリティによるパリティ更新を指示する、
請求項１１に記載のデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して接続された複数のデータ記憶装置を含むシステム及びそれに使用されるデータ記憶装置に関し、特に、システムにおけるパリティの更新手法に関する。
【背景技術】
【０００２】
現在、複数のハードディスク・ドライブ（ＨＤＤ）を組み合わせてデータに冗長性を持たせ、信頼性の向上を図ると共に性能の向上を図るシステムとして、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムが知られている。ＲＡＩＤシステムの中でも、ＲＡＩＤ−５は、信頼性と性能とのバランスから広く普及している（例えば特許文献１を参照）。
【０００３】
ＲＡＩＤ−５システムでは、複数台のディスク・アレイからなるＲＡＩＤグループを、ストライプに切り、ストライプ毎に、ＲＡＩＤグループのドライブのデータのＸＯＲ（排他的論理和）を計算し、パリティとして、ＲＡＩＤグループ内の1台のドライブに記録する。ＲＡＩＤグループ内の1台のドライブの当該ＬＢＡが後発バッドで読み出し不可となっても、残りのドライブのデータとパリティとをＸＯＲを計算することにより、当該データを再現(Regenerate)することができる。また、１台がダウンしても残りのドライブのデータをＸＯＲすることにより、データ・ロストとはならず、ＸＯＲ結果を予備のスタンバイ・ディスクに書き込むこと(Rebuild)により、ＲＡＩＤが回復できる。
【０００４】
ＲＡＩＤ−５は、上記の通り１台ダウンしても回復できるので、高信頼性の高価な専用ディスク装置でなく、ＯＥＭ向けＳＣＳＩ（Small Computer System Interface）／ＦＣ−ＡＬ（Fibre Channel Arbitrated Loop）ディスク装置でシステム構成できることが特徴の一つであった。しかしながら、近年、さらに安価なＳＡＴＡ（Serial ATA）のＨＤＤを使用したエントリーサーバでは、エラー・レートがエンタープライズ向けディスク装置よりも1桁高い。従って、1台ダウンして残りのディスク装置で回復中に残りのうちの1台で回復不能リードエラーセクタが発生すると、回復不可能となりシステムダウンに繋がる。このような問題に対応するため、近年、パリティを二重化したＲＡＩＤ−６が用いられている。
【０００５】
ＲＡＩＤ−６に関しては、図８に示す様なＰ＋Ｑ方式（例えば特許文献２を参照）と、図９に示すような２Ｄ−ＸＯＲ方式がある。図８に示すように、Ｐ＋Ｑ方式では、ＲＡＩＤ−５で用いられていたＸＯＲのＰパリティに加えて、リードソロモンのガロア体を付加したＱパリティを作成する。
【０００６】
例えば、Ｐパリティの一つであるＰ−０は、
P-0=(0,A) xor (0,B) xor (0,C) xor (0,D)
によって計算される。また、Ｑパリティの一つであるＱ−０は、
Q-0 =a(0)*(0,A) xor a(1)*(0,B)xor a(2)*(0,C) xor a(3)*(0,D)
によって計算される。一つのエラーについては、Ｐパリティを使用して修正することができる。２つのエラーが存在する場合は、Ｐ、Ｑから連立１次方程式を立てて２変数を解く。
【０００７】
これに対して、図９に示すように、２Ｄ−ＸＯＲ方式では、ＲＡＩＤ−５の従来の横ＸＯＲパリティに加えて、斜めＸＯＲパリティを生成する。具体的には、図９における横パリティＰの各値は以下のようになる。
Ph-0 = (0,B) xor (0,C) xor (0,D) xor (0,E)
Ph-1 = (1,A) xor (1,C) xor (1,D) xor (1,E)
Ph-2 = (2,0) xor (2,1) xor (2,3) xor (2,4)
Ph-3 = (3,A) xor (3,B) xor (3,C) xor (3,D)
Ph-4 = (4,A) xor (4,B) xor (4,C) xor (4,D)
【０００８】
また、斜めパリティＰｄの各値は以下のようになる。
Pd-0 = (1,A) xor (2,B) xor (3,C) xor (4,D) xor (0,E)
Pd-1 = (2,A) xor (3,B) xor (4,C) xor (0,D) xor (1,E)
Pd-2 = (3,A) xor (4,B) xor (0,C) xor (1,D) xor (2,E)
Pd-3 = (3,A) xor (4,B) xor (0,C) xor (1,D) xor (2,E)
Pd-4 = Ph-0 xor Ph-1 xor Ph-2 xor Ph-3 xor Ph-4
【特許文献１】特開平８−７６９４１号公報
【特許文献２】特開平１０−２４１１２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
Ｐ＋Ｑ方式は、Ｑパリティの計算が複雑であり、例えば、バグなどでパリティ・エラー誤検出や、メモリ不良でパリティ・エラーを検出しても、不良位置を計算するには人手では不可能となった。これに対して、２Ｄ−ＸＯＲ方式は回路的には簡単であり、データの整合性を確認する際にもＸＯＲ計算でできるので人手でも可能である。しかしながら、２個のパリティの位置が別ドライブなので、データ・ライトにおけるパリティ更新のためのドライブへのアクセスが、ＲＡＩＤ−５あるいは、Ｐ＋Ｑ方式の４回に比べて６回に増える。
【００１０】
具体的には、ＲＡＩＤ−５におけるライト時の新パリティは、旧データ、新データ、旧パリティそれぞれのＸＯＲ演算を行うことによって算出することができる。この演算をホスト・コントローラが実行する場合、ライト対象ドライブからの旧データ読み出し及び新データの書きこみ、パリティ・ディスク・ドライブからの旧パリティ読み出し及び新パリティ書き込み、の合計４回のアクセスが発生する。
【００１１】
ＲＡＩＤ−６の場合は、さらに、斜めパリティ・ディスク・ドライブからの、旧パリティ読み出し及び新パリティ書き込みのさらに２回が加わり、合計６回のアクセスが発生する。具体的な例を、図１０、図１１を用いて説明する。図１０に示すように、ＲＡＩＤ−６システムは、ホスト・コントローラ２、ディスク・アレイを構成するＨＤＤ−Ａ１ａ、ＨＤＤ−Ｂ１ｂ、ＨＤＤ−Ｃ１ｃ、ＨＤＤ−Ｄ１ｄ、ＨＤＤ−Ｅ１ｅ、ＨＤＤ−Ｆ１ｆ、それらを接続するファイバーチャネル・アービトレイテッド・ループ・ネットワーク（ＦＣ−ＡＬネットワーク）３を有する。
【００１２】
図１０は、２Ｄ−ＸＯＲ方式において、ＨＤＤ−Ｂ１ｂが、ＲＡＩＤグループ０のブロック（０，Ｂ）においてライトを実行するケースを示す。図１１は、図１０の場合において処理に参加するホスト・コントローラ２及びＨＤＤ−Ａ１ａ、ＨＤＤ−Ｂ１ｂ、ＨＤＤ−Ｆ１ｆの処理を示すシーケンス図である。
【００１３】
まずホスト・コントローラ２が、ＨＤＤ−Ｂ１ｂに対して、ライトすべきブロック（０，Ｂ）の旧データの読み出し命令を送信する（Ｓ２０１）。また、ＨＤＤ−Ａ１ａに対して、更新すべき横パリティ（Ｐｈ−０）の読み出し命令を送信する（Ｓ２０２）。ＨＤＤ−Ｂ１ｂは、Ｓ２０１の読み出し命令に従って、旧データを読み出し（Ｓ２０３）、ホスト・コントローラ２に対して旧データを送信する（Ｓ２０４）。また、ＨＤＤ−Ａ１ａは、Ｓ２０２の読み出し命令に従って、旧横パリティを読み出し（Ｓ２０５）、ホスト・コントローラ２に対して旧横パリティを送信する（Ｓ２０６）。
【００１４】
ホスト・コントローラ２は、新データ、旧データ及び旧横パリティから新横パリティを生成する（Ｓ２０７）。そして、ＨＤＤ−Ｂ１ｂに対しては新データ及びその書き込み命令を送信し（Ｓ２０８）、ＨＤＤ−Ａ１ａに対しては新横パリティ及びその書き込み命令を送信する（Ｓ２０９）。ＨＤＤ−Ｂ１ｂ、ＨＤＤ−Ａ１ａでは、上記命令に従って、それぞれ新データ、新横パリティを書き込む（Ｓ２１０、Ｓ２１１）。
【００１５】
更に、ホスト・コントローラ２は、ＨＤＤ−Ｆ１ｆに対して、更新すべき斜めパリティ（Ｐｄ−３）の読み出し命令を送信する（Ｓ２１２）。ＨＤＤ−Ｆ１ｆは、Ｓ２１２の読み出し命令に従って、旧斜めパリティを読み出し（Ｓ２１３）、ホスト・コントローラ２に対して旧斜めパリティを送信する（Ｓ２１４）。ホスト・コントローラ２は、新データ、旧データ及び旧斜めパリティから新斜めパリティを生成する（Ｓ２１５）。そして、ＨＤＤ−Ｆ１ｆに対して新斜めパリティの書き込み命令を送信する（Ｓ２１６）。ＨＤＤ−Ｆ１ｆは、上記命令に従って、新斜めパリティを書き込む（Ｓ２１７）。
【００１６】
上述のように、パリティが増加するに従ってパリティ更新のための各ドライブへのアクセスによるオーバーヘッドが増加する。従って、処理時間を短縮しパフォーマンスを向上するため、データ・ライトに伴うパリティ更新のためのアクセス回数を低減することが望ましい。例えば、特許文献１は、ＲＡＩＤ−５において、その手法の一つを提案している。特許文献１において、新データを書き込むドライブが新データと旧データのＸＯＲ演算によってパリティ更新のためのデータ（仮パリティと呼ぶ）を生成する。パリティ・ディスク・ドライブは、上記の仮パリティを受信し、その仮パリティと旧パリティとのＸＯＲ演算によって新パリティを生成する。これによって、パリティ更新のためのドライブへのアクセス回数を低減している。
【００１７】
しかし、特許文献１の技術は、ＲＡＩＤ−５のように一つのパリティを使用するアレイ・システムを対象としており、ＲＡＩＤ−６のように二つのパリティを使用するシステムについて十分な考慮がなされていない。あるいは、特許文献１において、新データを書き込むドライブがコマンドと仮パリティを生成し、自ら特定した、あるいはホスト・コントローラがライト・コマンド内で指示したパリティ・ディスク・ドライブに対して、そのコマンドと仮パリティとを送信する。しかし、システムの信頼性を向上するためには、各ドライブの処理は単純化されていることが好ましい。あるいは汎用性を維持するためには、ホスト・コントローラは、通常のライト・コマンドに新たなデータを付加することなく、新データを書き込むドライブに指示を行えることが好ましい。
【課題を解決するための手段】
【００１８】
本発明の一態様は、ネットワークを介して接続された第１のデータ記憶装置と第２のデータ記憶装置とを含むシステムである。前記第１のデータ記憶装置は、指定するアドレスのデータの書き換えを指示する第１のコマンドと、その第１のコマンドに対応するデータ・フレームとを受信する。前記データ・フレームは、前記第１のコマンドが指示するデータ書き換えに使用する第１のデータと、第２のコマンド及びその第２のコマンドの送信先とを含む。前記第１のデータ記憶装置は、前記第１のコマンドに従って前記第１のデータを使用して前記指定されたアドレスのデータを書き換え、さらに、前記第２のコマンドと、前記アドレスのデータと関連付けられているパリティの書き換えに使用する第２のデータと、を前記送信先である前記第２のデータ記憶装置に送信する。前記第２のデータ記憶装置は、前記第１のデータ記憶装置から受信した前記第２のコマンドに従って、前記第２のデータを使用して前記アドレスのデータと関連付けられているパリティの書き換えを行う。データ・フレームに第１のデータの他に、第２のコマンド及びその第２のコマンドの送信先を含むことで、第２のコマンドのコマンドを生成する装置を限定し、システムの信頼性と汎用性を高めることができる。なお、第１のデータは、第１のデータ記憶装置がそのまま記憶するライト・データあるいはパリティ更新に使用するデータであってもよい。
【００１９】
前記システムが、前記ネットワークを介して接続された第３のデータ記憶装置をさらに含む場合、前記データ・フレームは、第３のコマンド及びその第３のコマンドの送信先をさらに含むことが好ましい。前記第３のデータ記憶装置は、前記第１のデータ記憶装置から送信された前記第３のコマンドと前記第２のデータを取得し、前記第３のコマンドに従って前記第２のデータを使用して前記アドレスの記録データと関連付けられているパリティの書き換えを行う。前記データ・フレームが第２のコマンドと第３のコマンドを含むので、コマンドを生成する装置を限定し、システムの信頼性と汎用性を高めることができる。なお、前記第３のコマンドは、コマンドとして前記第１のデータ記憶装置から前記第３のデータ記憶装置に送信される、あるいは、データ・フレームに含まれて他のデータ記憶装置に送信され、その他のデータ記憶装置が前記前記第３のデータ記憶装置に送信するようにしてもよい。
【００２０】
例えば、前記第１のデータ記憶装置は、前記データ・フレームから取得した前記第３のコマンドと前記第２のデータとを、前記第３のデータ記憶装置に送信し、前記第３のデータ記憶装置は、前記第１のデータ記憶装置から送信された前記第３のコマンドと前記第２のデータとを取得して前記パリティの書き換えを行う。
【００２１】
あるいは、前記第１のデータ記憶装置は、前記第３のコマンドと前記第３のコマンドの送信先と前記第２のデータとを含むデータ・フレームを、前記第２の装置に送信し、前記第２のデータ記憶装置は、受信した前記データ・フレーム内の前記第３のコマンドと前記第２のデータとを、前記第３のデータ記憶装置に送信し、前記第３のデータ記憶装置は、前記第２のデータ記憶装置から送信された前記第３のコマンドと前記第２のデータとを取得して前記パリティの書き換えを行う。
【００２２】
好ましくは、前記第１のデータ記憶装置は、前記第２のデータを、前記指定されたアドレスに書き込む前記第１のデータと、そのアドレス記憶されていた旧データとの排他的論理和によって生成し、前記第２のデータ記憶装置は、前記第２のデータと予め記憶していた旧パリティとの排他的論理和によって新パリティを生成する。前記第２のデータによって、パリティ更新の処理を効率化することができる。
【００２３】
本発明の他の態様は、ネットワークを介して接続された複数のデータ記憶装置を有するシステムに使用されるデータ記憶装置である。このデータ記憶装置は、指定するアドレスのデータの書き換えを指示する第１のコマンドと、その第１のコマンドに対応し、前記第１のコマンドが指示するデータ書き換えに使用する第１のデータと、第２のコマンド及びその第２のコマンドの送信先とを含むデータ・フレームと、を受信する受信部と、前記第１のコマンドに従って前記第１のデータを使用して前記指定されたアドレスのデータを書き換える制御部と、前記第２のコマンドと、前記アドレスのデータと関連付けられているパリティの書き換えに使用する第２のデータと、を前記送信先に送信する送信部を有する。データ・フレームに第１のデータの他に、第２のコマンド及びその第２のコマンドの送信先を含むことで、第２のコマンドのコマンドを生成する装置を限定し、システムの信頼性と汎用性を高めることができる。
【００２４】
好ましくは、前記コントローラは、前記第２のデータを、前記指定されたアドレスに書き込む前記第１のデータと、そのアドレス記憶されていた旧データとの排他的論理和によって生成する。これによって、パリティ更新の処理を効率化することができる。
【００２５】
本発明の他の態様は、ネットワークを介して接続された複数のデータ記憶装置を含み、各データ記憶装置の単位データ・ブロックを異なる２方向においてそれぞれ排他的論理和演算することによって二重のパリティを生成し保存するシステムである。このシステムは、第１のデータ記憶装置と第２のデータ記憶装置と第３のデータ記憶装置とを有する。前記第１のデータ記憶装置は、ライト・コマンドと新データとを取得し、旧データを前記新データで書き換え、前記新データと前記旧データとの排他的論理和演算を行って仮パリティを生成し、前記仮パリティを含む一つのデータ・フレームを前記旧データが対応するパリティを記憶する二つのデータ記憶装置に向けて送信する。前記第２のデータ記憶装置は、前記データ・フレームを受信し、そのデータ・フレームに含まれる前記仮パリティを取得し、前記旧データに対応する第１の旧パリティと前記仮パリティとの排他的論理和演算を行って第１の新パリティを生成し、前記第１の新パリティを保存する。前記第３のデータ記憶装置は、前記データ・フレームを受信し、そのデータ・フレームに含まれる前記仮パリティを取得し、前記旧データに対応する第２の旧パリティと前記仮パリティとの排他的論理和演算を行って第２の新パリティを生成し、その第２の新パリティを保存する。前記仮パリティを含む一つのデータ・フレームを前記旧データが対応するパリティを記憶する二つのデータ記憶装置に向けて送信することで、処理を効率化することができる。
【００２６】
好ましくは、前記第１のデータ記憶装置は前記新データと第２のコマンドとその第２のコマンドの送信先とを含むデータ・フレームを受信する。そして、前記第２のデータ記憶装置は、第２のコマンドの送信先であり、前記第１のデータ記憶装置から転送された前記第２のコマンドに従って、前記新パリティの生成及び保存を実行する。データ・フレームに第２のコマンドとその第２のコマンドの送信先とを含めることで、システムの信頼性と汎用性を高めることができる。
【００２７】
好ましくは、前記第１のデータ記憶装置が受信する前記データ・フレームは、第３のコマンドとその第３のコマンドの送信先とをさらに含む。そして、前記第３のデータ記憶装置は、第３のコマンドの送信先であり、前記第１のデータ記憶装置から転送された前記第３のコマンドに従って、前記新パリティの生成及び保存を実行する。
【００２８】
本発明の他の態様は、ネットワークを介して接続された複数のデータ記憶装置を含み、各データ記憶装置の単位データ・ブロックを異なる２方向においてそれぞれ排他的論理和演算することによって二重のパリティを生成し保存するシステムに使用されるデータ記憶装置である。このデータ記憶装置は、ライト・コマンドと新データとを受信する受信部と、旧データを前記新データで書き換え、前記新データと前記旧データとの排他的論理和演算を行って仮パリティを生成する制御部と、前記仮パリティを含む一つのデータ・フレームを前記旧データが対応するパリティを記憶する二つのデータ記憶装置に向けて送信する送信部とを有する。前記仮パリティを含む一つのデータ・フレームを前記旧データが対応するパリティを記憶する二つのデータ記憶装置に向けて送信することで、処理を効率化することができる。
【００２９】
好ましくは、前記受信部は、前記新データと第２のコマンドとその第２のコマンドの送信先とを含むデータ・フレームを受信し、前記送信部は前記第２のコマンドを前記送信先に送信して、前記仮パリティによるパリティ更新を指示する。データ・フレームに第２のコマンドとその第２のコマンドの送信先とを含めることで、システムの信頼性と汎用性を高めることができる。
【発明の効果】
【００３０】
本発明によれば、複数のデータ記憶装置を有するアレイ・システムにおいて、データ・ライトに伴うパリティの更新処理を改善することができる。
【発明を実施するための最良の形態】
【００３１】
以下に、本発明を適用可能な実施の形態が説明される。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。以下においては、データ記憶装置の一例であるハードディスク・ドライブ（ＨＤＤ）を例として、本発明の実施形態を説明する。
【００３２】
本形態の特徴点は、複数のデータ記憶装置を有するアレイ・システムにおけるパリティの更新手法にある。以下においては、アレイ・システムの好ましい一例として、ＨＤＤを使用したＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムの例について説明する。最初に、ＨＤＤの構成を説明する。図１は、ＨＤＤ１の全体構成を模式的に示すブロック図である。図１に示すように、ＨＤＤ１は、エンクロージャ１０内に、データを記憶するディスクの一例である磁気ディスク１１、ヘッド素子部１２、アーム電子回路（アームエレクトロニクス：ＡＥ）１３、スピンドル・モータ（ＳＰＭ）１４、ボイス・コイル・モータ（ＶＣＭ）１５、そしてアクチュエータ１６を備えている。
【００３３】
ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（以下、ＨＤＣ／ＭＰＵ）２３、ＲＡＭ２４及びＥＥＰＲＯＭ２５などの各回路を備えている。ＳＰＭ１４は、そこに固定されている磁気ディスク１１を、所定の角速度で回転する。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。
【００３４】
本例の磁気ディスク１１は、データを記録する記録面を両面に備え、各記録面に対応するヘッド素子部１２が設けられている。各ヘッド素子部１２はスライダ（不図示）に固定されている。また、スライダは、ヘッド移動機構の一例であるアクチュエータ１６に固定されている。データのリード及びライト時において、スライダは回転する磁気ディスク１１上を浮上する。アクチュエータ１６はＶＣＭ１５に連結され、回動軸を中心に回動することによって、ヘッド素子部１２を磁気ディスク１１上において半径方向に移動する。
【００３５】
モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。ヘッド素子部１２には、典型的には、ライト・データに応じて電気信号を磁界に変換するライト素子及び磁気ディスク１１からの磁界を電気信号に変換するリード素子を備えている。なお、磁気ディスク１１は１枚以上あればよく、記録面は磁気ディスク１１の片面あるいは両面に形成することができる。
【００３６】
ＡＥ１３は、複数のヘッド素子部１２の中からデータ・アクセスが行われる１つのヘッド素子部１２を選択し、選択されたヘッド素子部１２により再生される再生信号を一定のゲインで増幅し、ＲＷチャネル２１に送る。また、ＲＷチャネル２１からの記録信号を選択されたヘッド素子部１２に送る。ＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、更にコード変調されたライト・データをライト信号に変換してＡＥ１３に供給する。リード処理において、ＲＷチャネル２１は取得したリード信号からデータを抽出し、デコード処理を行う。読み出されるデータは、ユーザ・データとサーボ・データを含む。デコード処理されたリード・データは、ＨＤＣ／ＭＰＵ２３に供給される。
【００３７】
ＨＤＣ／ＭＰＵ２３において、ＭＰＵはＲＡＭ２４にロードされたマイクロ・コードに従って動作する。ＨＤＤ１の起動に伴い、ＲＡＭ２４には、ＭＰＵ上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク１１あるいはＨＤＣ／ＭＰＵ２３内のＲＯＭなどからロードされる。また、必要な各パラメータが、ＥＥＰＲＯＭ２５からＲＡＭ２４にロードされる。
【００３８】
ＨＤＣはロジック回路として構成され、ＭＰＵと一体的に様々な処理を実行する。例えば、ＨＤＣ／ＭＰＵ２３は、コマンド実行順序の管理、ヘッド素子部１２のポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理を行う。従って、ＨＤＣ／ＭＰＵ２３はデータの送信部及び受信部として機能すると共に、制御部として機能する。本形態のＨＤＣ／ＭＰＵ２３は、特に、ＨＤＤ１が参加するＲＡＩＤシステムにおけるインターフェース処理及び内部処理を実行する。ＲＡＭ２４は、外部からのデータ及び磁気ディスク１１から読み出したデータを一時的に保存するバッファ（キャッシュ）として機能する。
【００３９】
次に、本発明のアレイ・システムの例として、ＲＡＩＤ−６システムを利用したシステムを説明する。図２に示すように、本実施形態に係るアレイ・システムは、ホスト・コントローラ２、ＲＡＩＤグループを構成するＨＤＤ−Ａ１ａ、ＨＤＤ−Ｂ１ｂ、ＨＤＤ−Ｃ１ｃ、ＨＤＤ−Ｄ１ｄ、ＨＤＤ−Ｅ１ｅ、ＨＤＤ−Ｆ１ｆ、それらを接続するファイバーチャネル・アービトレイテッド・ループ・ネットワーク（ＦＣ−ＡＬネットワーク）３を有する。
【００４０】
図２は、ＲＡＩＤ−６システムのパリティ構成を示しており、本形態に係るＲＡＩＤ−６システムは、図２に示すように、２Ｄ−ＸＯＲ方式のパリティ構成を有する。ここで、Ｐｈが横パリティ（Horizontal Parity）、Ｐｄが斜めパリティ（Diagonal Parity）を示す。各ＨＤＤ−Ａ１ａ〜ＨＤＤ−Ｅ１ｅは、図２に模式的に示すようにストライプに切られており、各ＨＤＤ−Ａ１ａ〜ＨＤＤ−Ｅ１ｅのデータ記憶領域は、単位ブロックに分割されている。
【００４１】
図２において、行方向のブロックのグループがストライプである。ＨＤＤ−Ｆ１ｆは斜めパリティを格納する斜めパリティ・ディスク・ドライブであり、このＲＡＩＤグループにおけるユーザ・データを格納してはいない。ＨＤＤ−Ｆ１ｆのデータ記憶領域も同様に単位ブロックに分割されている。データの書き込み／読み出し及びパリティ計算はブロック単位で実行される。
【００４２】
ユーザ・データのブロックは、ストライプ番号とＨＤＤのＩＤによって示されている。例えば、ＨＤＤ−Ｂ１ｂにおけるストライプ０のブロックは、（０，Ｂ）と示されている。横パリティＰｈは、Ｐｈの符号とストライプ番号によって示されている。例えば、ストライプ０の横パリティＰｈはＰｈ−０である。また、斜めパリティＰｄも、Ｐｄの符号と対応するストライプ番号によって示されている。例えば、ストライプ０に対応する斜めパリティＰｄはＰｄ−０である。横パリティは、同一ストライプ内のデータを使用して生成されるが、斜めパリティは異なる各ストライプのデータから生成される。また、各ストライプの横パリティＰｈは、それぞれ異なるＨＤＤが保持している。
【００４３】
具体的には、各横パリティＰｈの値は以下のようになる。
Ph-0 = (0,B) xor (0,C) xor (0,D) xor (0,E)
Ph-1 = (1,A) xor (1,C) xor (1,D) xor (1,E)
Ph-2 = (2,0) xor (2,1) xor (2,3) xor (2,4)
Ph-3 = (3,A) xor (3,B) xor (3,C) xor (3,D)
Ph-4 = (4,A) xor (4,B) xor (4,C) xor (4,D)
【００４４】
また、斜めパリティＰｄの各値は以下のようになる。
Pd-0 = (1,A) xor (2,B) xor (3,C) xor (4,D) xor (0,E)
Pd-1 = (2,A) xor (3,B) xor (4,C) xor (0,D) xor (1,E)
Pd-2 = (3,A) xor (4,B) xor (0,C) xor (1,D) xor (2,E)
Pd-3 = (3,A) xor (4,B) xor (0,C) xor (1,D) xor (2,E)
Pd-4 = Ph-0 xor Ph-1 xor Ph-2 xor Ph-3 xor Ph-4
【００４５】
次に、図３、図４を用いて本形態のアレイ・システムにおけるデータ・ライト及びパリティ更新処理の好ましい一例ついて説明する。図３は、ＨＤＤ−Ｂ１ｂのデータ（０，Ｂ）を書き換える処理を示している。図４は、図３の場合において処理に参加するホスト・コントローラ２及びＨＤＤ−Ａ１ａ、ＨＤＤ−Ｂ１ｂ、ＨＤＤ−Ｆ１ｆの処理を示す処理シーケンス図である。
【００４６】
図４において、ｈｄは、ホスト・コントローラ２からＨＤＤへのアクセスを示している。ｈｐは、ホスト・コントローラ２の内部処理を示している。ｄｐは、データ・ディスク・ドライブ（本例においてＨＤＤ−Ｂ１ｂ）から、横パリティ・ディスク・ドライブ（本例においてＨＤＤ−Ａ１ａ）及び斜めパリティ・ディスク・ドライブ（本例においてＨＤＤ−Ｆ１ｆ）へのアクセスを示している。ｄｄは、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂの内部処理を示している。ｐｈは、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａの内部処理を示している。ｐｄは、斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆの内部処理を示している。
【００４７】
図３、図４に示すように、まずホスト・コントローラ２が、ＨＤＤ−Ｂ１ｂにライト・コマンドおよび書き換えを行うための新データを送信する（Ｓ１０１：ｈｐ）。ライト・コマンドは、ドライブのＩＤ（本例においてＨＤＤ−Ｂ１ｂ）のほか、書き込み位置を指定するＬＢＡとデータ・レングスを含む。ＨＤＤ−Ｂ１ｂはライト・コマンド及び新データを受信すると（Ｓ１０２：ｄｐ）、当該新データを書き込むべき領域（０，Ｂ）の旧データを読み出す（Ｓ１０３：ｄｐ）。ＨＤＤ−Ｂ１ｂは、さらに、受信した新データと読み出した旧データとのＸＯＲ演算を行う。この新データと旧データとのＸＯＲ演算の結果を、仮パリティと呼ぶ（Ｓ１０４：ｄｐ）。
【００４８】
次に、ＨＤＤ−Ｂ１ｂは、Ｓ１０４にて生成した仮パリティを、パリティ更新を指示するコマンドと共に、横パリティ・ディスク・ドライブであるＨＤＤ−Ａ１ａ及び斜めパリティ・ディスク・ドライブであるＨＤＤ−Ｆ１ｆに送信する（Ｓ１０５：ｄｄ）。コマンドは、ドライブＩＤのほか、更新すべきパリティのアドレスＬＢＡを含む。その後、ＨＤＤ−Ｂ１ｂは、新データを磁気ディスク１１に書き込み、（０，Ｂ）のデータを書き換える（Ｓ１１２：ｄｐ）。
【００４９】
横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａは、仮パリティを受信すると（Ｓ１０６：ｐｈ）、コマンドに従ってパリティを更新すべき旧横パリティＰｈ−０を読み出し（Ｓ１０８：ｐｈ）、受信した仮パリティと旧横パリティとのＸＯＲ演算によって新横パリティを生成する（Ｓ１１０：ｐｈ）。その後、ＨＤＤ−Ａ１ａは、新横パリティを自身の磁気ディスク１１に書き込み、Ｐｈ−０のデータを書き換える（Ｓ１１３：ｐｈ）。このように、仮パリティを使用して横パリティの更新ができることは、ＸＯＲ演算による横パリティの定義から明らかだろう。
【００５０】
また、斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆは、仮パリティを受信すると（Ｓ１０７：ｐｄ）、コマンドに従って更新すべき旧斜めパリティＰｄ−３を読み出し（Ｓ１０９：ｐｄ）、受信した仮パリティと旧斜めパリティとのＸＯＲ演算によって新斜めパリティを生成する（Ｓ１１１：ｐｄ）。その後、ＨＤＤ−Ｆ１ｆは、新斜めパリティを自身の磁気ディスク１１に書き込み、Ｐｄ−３のデータを書き換える（Ｓ１１４：ｐｄ）。このように、仮パリティを使用して斜めパリティの更新ができることは、ＸＯＲ演算による斜めパリティの定義から明らかだろう。
【００５１】
以上のように、データ・ディスク・ドライブが仮パリティを生成して各パリティ・ディスク・ドライブに送信し、各パリティ・ディスク・ドライブがその仮パリティを使用してパリティ更新を行うことで、ホスト・コントローラ２はＳ１０１のデータ・ディスクへのライト・コマンド実行のみと負荷が軽減され、ＲＡＩＤ−６を意識しないアクセスとなる。
【００５２】
これによって、データ・ディスク・ドライブブＨＤＤ−Ｂ１ｂ、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａ及び斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆへの付加的な負荷は発生する。しかし、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂの内部処理と横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａの内部処理、そして斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆの内部処理は、それぞれ図４に示すとおり同時並行しての実行が可能であので、ホスト・コントローラ２がシーケンシャルにパリティ計算を実行するのに比べ、システム性能が向上する。
【００５３】
また、各ＨＤＤへのアクセス回数が、ホスト・コントローラ２がパリティ計算を実行するのに比べて、低減される。つまり、ホスト・コントローラ２が、データ・ディスク・ドライブブＨＤＤ−Ｂ１ｂ、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａ及び斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆからデータの読み出しを行う必要がないため、アクセス回数が低減される。
【００５４】
ここで重要なことは、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａ及び斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆに送信される仮パリティが、同一のデータであるという点である。このため、データ・ディスク・ドライブブＨＤＤ−Ｂ１ｂは、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａと斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆとに、仮パリティを同時に送信することができる。
【００５５】
データ・ディスク・ドライブＨＤＤ−Ｂ１ｂは、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａと斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆとを宛先に含む一つのフレームを生成し、そのフレームをネットワーク上に送信する。各パリティ・ディスク・ドライブＨＤＤ−Ａ１ａ、ＨＤＤ−Ｆ１ｆは、それぞれフレームを受信して処理を行う。
【００５６】
本例のアレイ・システムはＦＣ−ＡＬネットワーク３を使用している。例えば、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂは、処理を行うドライブとして横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａと斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆとを上位のレイヤで指定して、ブロード・キャストによって、更新すべき二つパリティの各アドレスを含むコマンドと、仮パリティを含むデータ・フレームとを、ＦＣ−ＡＬネットワーク３に送信する。なお、このように一つのブロード・キャスト・コマンドで各ドライブにコマンドを送ることが好ましいが、それぞれ別にコマンドを送信するようにしてもよい。
【００５７】
ＦＣ−ＡＬネットワーク３は一方向のループ状ネットワークであり、図４の例においては、ＨＤＤ−Ｂ１ｂから送信されたコマンド及びデータ・フレームは、ＨＤＤ−Ｃ１ｃ〜ＨＤＤ−Ｅ１ｅを介して、ＨＤＤ−Ｆ１ｆに到達する。ＨＤＤ−Ｃ１ｃ〜ＨＤＤ−Ｅ１ｅは、受信したコマンド及びデータ・フレームを転送し、内部処理としてはそれらを破棄する。ＨＤＤ−Ｆ１ｆは受信したコマンドが指定したアドレスのパリティについて、受信した仮パリティを使用した書き換え処理を行う。さらに、ＨＤＤ−Ｆ１ｆから転送されたコマンド及びデータ・フレームは、ホスト・コントローラ２を介してＨＤＤ−Ａ１ａに到達する。ＨＤＤ−Ａ１ａは受信したコマンドが指定したアドレスのパリティについて、受信した仮パリティを使用した書き換え処理を行う。
【００５８】
以上のように、ＦＣ−ＡＬネットワーク３によって各ドライブを接続した場合に、Ｓ１０４で仮パリティを生成した後、その仮パリティをループ上を１周させれば、横パリティ・ディスク・ドライブと斜めパリティ・ディスク・ドライブとに仮パリティを送信することができ、後の処理はそれぞれのドライブに任せることができる。
【００５９】
ここで、それぞれのステップにおける具体的な処理について説明する。Ｓ１０１において、ホスト・コントローラ２は、ライト・コマンド及びライトすべき新データに加えて、横パリティ及び斜めパリティを更新すべきディスク・ドライブのアドレス及び各ドライブにおけるアドレスを送信する。即ち、上記の場合においては、更新すべき横パリティのアドレスとして（Ｐｈ−０）が、更新すべき斜めパリティのアドレスとして（Ｐｄ−３）が、それぞれ通知される。本実施形態においては、ＦＣ−ＡＬネットワーク３を介して各ドライブが接続されているため、ディスク・アレイ上のドライブのアドレスはＡＬ＿ＰＡ（Arbitrated Loop Physical Address）として通知される。
【００６０】
ここで、新データのライト位置（０，Ｂ）に対応する横パリティ及び斜めパリティが格納されたディスク・ドライブのＡＬ＿ＰＡ及びアドレスは、パリティの構成情報としてホスト・コントローラ２内に格納されている。ホスト・コントローラ２では、新データを書き込むドライブ及びアドレスと、パリティの構成情報とに基づいて、横パリティ及び斜めパリティのＡＬ＿ＰＡ及びアドレスを決定する。
【００６１】
Ｓ１０３において、ＨＤＤ−Ｂ１ｂの内部では、ＨＤＣ／ＭＰＵ２３が、Ｓ１０２において受信したライト命令に従って、新データの書き込み対象となる（０，Ｂ）の旧データを磁気ディスク１１から読み出し、ＲＡＭ２４にキャッシュする。そして、Ｓ１０４において、ＨＤＣ／ＭＰＵ２３は、Ｓ１０２において受信し、ＲＡＭ２４にキャッシュした新データとＳ１０３においてＲＡＭ２４にキャッシュした旧データとのＸＯＲ演算を実行し、仮パリティを生成する。
【００６２】
更に、Ｓ１０５において、ＨＤＣ／ＭＰＵ２３は、Ｓ１０２において受信した横パリティ及び斜めパリティを更新すべきディスク・ドライブのＡＬ＿ＰＡに従って、パリティ更新のコマンド及びＳ１０４において生成した仮パリティを送信する。この時、横パリティ・ディスク・ドライブ及び斜めパリティ・ディスク・ドライブにおいて、パリティを更新すべきアドレス、即ち（Ｐｈ−０）、（Ｐｄ−３）も同時に通知される。また、Ｓ１１２において、ＨＤＣ／ＭＰＵ２３は、磁気ディスク１１の（０，Ｂ）に新データを書き込む。
【００６３】
Ｓ１０８、Ｓ１０９において、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａ及び斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆの各内部では、ＨＤＣ／ＭＰＵ２３が、それぞれＳ１０６、Ｓ１０７において受信したパリティ更新命令に従って、パリティの更新対象となる（Ｐｈ−０）、（Ｐｄ−３）の旧パリティを読み出し、ＲＡＭ２４に保持する。
【００６４】
そして、Ｓ１１０、Ｓ１１１において、各パリティ・ディスク・ドライブのＨＤＣ／ＭＰＵ２３は、それぞれＳ１０６、Ｓ１０７において受信してＲＡＭ２４に保持した仮パリティとそれぞれＳ１０８、Ｓ１０９においてＲＡＭ２４に保持した旧パリティとのＸＯＲ演算を実行し、新横パリティ及び新斜めパリティを生成する。さらに、Ｓ１１３、Ｓ１１４において、ＨＤＣ／ＭＰＵ２３は、新パリティを、（Ｐｈ−０）、（Ｐｄ−３）の位置に書き込む。
【００６５】
なお、上記の説明においては、仮パリティを送信する横パリティ・ディスク及び斜めパリティ・ディスクのＡＬ＿ＰＡ並びにパリティを更新すべきＬＢＡを、ホスト・コントローラ２がライト命令を与えるドライブに指定する例を説明した。しかしながら、それぞれのドライブ（上記実施形態においてはＨＤＤ−Ｂ１ｂ）がパリティの構成情報を有しており、受信したライト命令に係るライト位置とパリティの構成情報とに基づいて、横パリティ及び斜めパリティを送信すべき宛先を決定しても良い。
【００６６】
上述の態様は、データの書き換えを行うデータ・ディスク・ドライブＨＤＤ−Ｂ１ｂが、パリティ更新のコマンドを生成して、パリティの書き換えを行うドライブＨＤＤ−Ａ１ａ、ＨＤＤ−Ｆ１ｆのそれぞれに送信する。以下の態様は、ホスト・コントローラ２がパリティ更新のコマンドを生成し、それをライト・データともに一つのデータ・フレーム内に収めてデータ・ディスク・ドライブＨＤＤ−Ｂ１ｂに送信する。データ・ディスク・ドライブＨＤＤ−Ｂ１ｂは、受信したデータ・フレームを展開してパリティ更新のコマンドを取得し、そのパリティ更新のコマンドを仮パリティと共にパリティの書き換えを行うドライブＨＤＤ−Ａ１ａ、ＨＤＤ−Ｆ１ｆに送信する。
【００６７】
図５は、ホスト・コントローラ２が、ユーザ・データの書き換えを行うデータ・ディスク・ドライブＨＤＤ−Ｂ１ｂに送信するライト・コマンド５１及びそのライト・コマンドに対応するデータ・フレーム５２の構成を模式的に示している。ライト・コマンド５１は、コマンド種別を示すコマンドＩＤ（COMMAND ID）、コマンドの送信先のアドレス（NETWROK ADDRESS）、ライト・データを書き込む領域を示すＬＢＡとデータ長（LENGTH）を含んでいる。本例においては、コマンド種別はライト・コマンドであり、コマンドの送信先のアドレスは、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂのアドレスとなる。
【００６８】
データ・フレーム５２は、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂが新たに書き込む新データ（DATA）５２１に加えて、パリティの更新を指示するコマンド５２２、５２３を含んでいる。パリティの更新を指示するコマンド５２２、５２３は、それぞれ、コマンド種別を示すコマンドＩＤ（COMMAND ID）、コマンドの送信先のアドレス（NETWROK ADDRESS）、更新するパリティのアドレスを示すＬＢＡとデータ長（LENGTH）を含んでいる。
【００６９】
コマンド５２２、５２３のコマンド種別は、パリティ更新である。パリティ更新コマンド５２２の送信先（NETWROK ADDRESS）は、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａであり、パリティ更新コマンド５２３の送信先（NETWROK ADDRESS）は、斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆである。横パリティと斜めパリティとが記憶されているアドレスはそれぞれ異なるので、コマンド５２２のＬＢＡとデータ長はＰｈ−０のアドレスを示し、コマンド５２３のＬＢＡとデータ長は、Ｐｄ−３のアドレスを示す。
【００７０】
データ・ディスク・ドライブＨＤＤ−Ｂ１ｂは、ホスト・コントローラ２からデータ・フレーム５２を受信すると、それを展開して、パリティ更新コマンド５２２とパリティ更新コマンド５２３とを取得する。データ・ディスク・ドライブＨＤＤ−Ｂ１ｂは、パリティ更新コマンド５２２と仮パリティとを横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａに向けて送信し、パリティ更新コマンド５２３と仮パリティとを斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆに送信する。
【００７１】
図６は、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂがパリティ・ディスク・ドライブＨＤＤ−Ａ１ａ、ＨＤＤ−Ｆ１ｆに送信するデータを示している。図６（ａ）及び（ｂ）は、図５に対応しており、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂが、ＨＤＤ−Ａ１ａ、ＨＤＤ−Ｆ１ｆのそれぞれに、パリティ更新コマンド５２２、５２３と仮パリティ（PSEUDO PARITY）６１１、６１２を送信するケースを示している。上述のように、仮パリティ６１１、６１２は同一内容のデータである。
【００７２】
横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａは、パリティ更新コマンド５２２と仮パリティ６１１をデータ・ディスク・ドライブＨＤＤ−Ｂ１ｂから取得すると、それに従ってＰｈ−０の横パリティを書き換える。また、斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆは、パリティ更新コマンド５２３と仮パリティ６１１をデータ・ディスク・ドライブＨＤＤ−Ｂ１ｂから取得すると、それに従ってＰｈ−０の横パリティを書き換える。
【００７３】
データ・ディスク・ドライブＨＤＤ−Ｂ１ｂは、図６（ｃ）に示すように、ＨＤＤ−Ａ１ａ、ＨＤＤ−Ｆ１ｆの双方を宛先に含む一つのパリティ更新コマンド５２５を、ＨＤＤ−Ａ１ａ、ＨＤＤ−Ｆ１ｆに同時に送信してもよい。この場合、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂによるパリティ更新コマンドとそれに対応する仮パリティ６１３の送信は一回となる。
【００７４】
上記の態様は、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂが、パリティ・ディスク・ドライブＨＤＤ−Ａ１ａ、ＨＤＤ−Ｆ１ｆの双方にコマンドを送信するが、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂが送信するデータ・フレームにパリティ更新コマンドを含めることができる。図７（ａ）は、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂが斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆに対して送信するデータ（この言葉はコマンドを含む）を示している。データ・ディスク・ドライブＨＤＤ−Ｂ１ｂを始点として、斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆは、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａよりも上流側に位置する。
【００７５】
図７（ａ）に示すように、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂは、ＨＤＤ−Ｆ１ｆを宛先とするパリティ更新コマンド７１と対応するデータ・フレーム７２を送信する。データ・フレーム７２は、仮パリティ７２１に加えて、ＨＤＤ−Ａ１ａを宛先とするパリティ更新コマンド７２２を含む。斜めパリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆは、データ・フレーム７２を展開してパリティ更新コマンド７２２を取得し、図７（ｂ）に示すように、そのパリティ更新コマンド７２２と仮パリティ７２１とを、横パリティ・ディスク・ドライブＨＤＤ−Ａ１ａに転送する。パリティ・ディスク・ドライブＨＤＤ−Ｆ１ｆ、ＨＤＤ−Ａ１ａは、それぞれ、仮パリティ７２１を使用したパリティ更新を行う。
【００７６】
以上のように、データ・フレームがパリティ更新コマンドを含むことによって、コマンド生成を行う装置を限定し、システムの汎用性と信頼性を向上することができる。なお、データ・フレームにパリティ更新コマンドを含める手法は、ＲＡＩＤ−６のように多重化されたパリティを有するシステムに特に有効であるが、ＲＡＩＤ−５のように単一のパリティを使用するシステムに適用することもできる。また、コマンドはホスト・コントローラ２が生成することが好ましいが、設計によっては、データ・ディスク・ドライブＨＤＤ−Ｂ１ｂが二つのコマンドを生成することも考えられる。データ・フレームにパリティ更新コマンドを含める手法は、仮パリティと共に使用することが好ましいが、これらをそれぞれ別に利用することもできる。
【００７７】
以上、本発明を好ましい実施形態を例として説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本発明は、ＦＣ＿ＡＬのようなループ状ネットワーク以外の他のネットワークを使用するシステムに適用することができる。上述の説明においては、ＲＡＩＤ−６システムという、二重化されたパリティ情報を有するディスク・アレイ・システムを例として説明したが、三重以上の多重化されたパリティを有するディスク・アレイ・システムにおいて適用することができる。また、上述のように、仮パリティを送信することによって、送信するデータ量を低減することが好ましい。しかし、設計によっては、仮パリティ生成の基になるデータ、即ちライト命令に係る新データと旧データとをセットにしてそのまま送信する方法考えられる。なお、本発明を他のパリティ方式に適用することができる。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施形態に係るＨＤＤの全体構成を模式的に示すブロック図である。
【図２】本発明の実施形態に係るディスク・アレイ・システムを表した図である。
【図３】本発明の実施形態に係るディスク・アレイ・システムにおけるライト・コマンドの処理を示す図である。
【図４】本発明の実施形態に係るディスク・アレイ・システムにおけるライト・コマンドの処理を示すフローチャートである。
【図５】本発明の実施形態に係るホスト・コントローラが、ユーザ・データの書き換えを行うデータ・ディスク・ドライブに送信するライト・コマンド及びそのライト・コマンドに対応するデータ・フレームの構成を模式的に示す図である。
【図６】本発明の実施形態に係るデータ・ディスク・ドライブがパリティ・ディスク・ドライブに送信するデータを示す図である。
【図７】本発明の実施形態に係るデータ・ディスク・ドライブ送信するデータ・フレームに、パリティ更新コマンドを含む例を示している。
【図８】従来技術に係るＰ＋Ｑ方式のディスク・アレイ・システムを示す図である。
【図９】従来技術に係る斜めパリティ方式にかかるディスク・アレイ・システムを示す図である。
【図１０】従来技術に係るディスク・アレイ・システムにおけるライト・コマンドの処理を示す図である。
【図１１】従来技術に係るディスク・アレイ・システムにおけるライト・コマンドの処理を示すフローチャートである。
【符号の説明】
【００７９】
１、１ａ、１ｂ、１ｃ、１ｄ  ＨＤＤ、２  ホスト・コントローラ
３  ＦＣ−ＡＬネットワーク、１０  エンクロージャ、１１  磁気ディスク
１２  ヘッド素子部、１３  アーム・エレクトロニクス、１４  スピンドル・モータ
１５  ボイス・コイル・モータ、１６  アクチュエータ、２０  回路基板
２１  リード・ライト・チャネル、２２  モータ・ドライバ・ユニット
２３  ハードディスク・コントローラ／ＭＰＵ２４  ＲＡＭ、２５  ＥＥＰＲＯＭ
【図１】
2008097053.tif 000003
【図２】
2008097053.tif 000004
【図３】
2008097053.tif 000005
【図４】
2008097053.tif 000006
【図５】
2008097053.tif 000007
【図６】
2008097053.tif 000008
【図７】
2008097053.tif 000009
【図８】
2008097053.tif 000010
【図９】
2008097053.tif 000011
【図１０】
2008097053.tif 000012
【図１１】
2008097053.tif 000013