(57)【要約】【課題】本発明は、追加的および自律的な保護の機能を備えた複数の記憶装置からなるアレイにデータを記憶するための方法およびシステムを提供するものである。【解決手段】本発明の一つの側面は複数の記憶装置からなるアレイ中にデータを記憶する方法に関する。本発明の方法の実施例では、第１のストリップを、第１の記憶装置及び第２の記憶装置に書き込むステップを含む。更に第２のストリップを、第２の記憶装置及び第３の記憶装置に書き込むステップを含む。更には第３のストリップを、第３の記憶装置及び第４の記憶装置に書き込むステップを含む。【選択図】図１６
2007536658.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置からなるアレイにデータを記憶するための方法であって、
第１のストリップを、第１の記憶装置及び第２の記憶装置に書き込むステップと、
第２のストリップを、前記第２の記憶装置及び第３の記憶装置に書き込むステップと、
第３のストリップを、前記第３の記憶装置及び第４の記憶装置に書き込むステップと
を含む方法。
【請求項２】
前記第１のストリップ、前記第２のストリップ及び前記第３のストリップが、一つのストライドの構成要素である、請求項１に記載の方法。
【請求項３】
記憶装置の前記アレイのための最大のストリップＬＢＡを決定するステップと、
１次データのために利用可能なストリップＬＢＡの半分を確保するステップと、
データの循環コピーのために利用可能なストリップＬＢＡの半分を確保するステップと
を含む請求項１又は２に記載の方法。
【請求項４】
第１のストリップを、第１の記憶装置、第２の記憶装置及び第３の記憶装置に書き込むステップと、
第２のストリップを、前記第２の記憶装置、前記第３の記憶装置及び第４の記憶装置に書き込むステップと、
第３のストリップを、前記第３の記憶装置、前記第４の記憶装置及び第５の記憶装置に書き込むステップと
を含む請求項１又は２に記載の方法。
【請求項５】
記憶装置のアレイのために最大のストリップＬＢＡを決定するステップと、
１次データのために利用可能なストリップＬＢＡのうちの３３パーセントを確保するステップと、
データの循環コピーのために利用可能なストリップＬＢＡのうちの６６パーセントを確保するステップと
を更に含む請求項４に記載の方法。
【請求項６】
記憶装置のアレイ中の各記憶装置が少なくともＮ個のストリップＬＢＡを有するとして、そのパラメータＮのための値をセットするステップと、
記憶されるストライドの数ｊを識別するステップと、
２ｊがＮ−１以下であるか判断し、
もしそうであれば、
ストリップｓ１ｊを、前記アレイの前記第１の記憶装置中のＬＢＡ及び前記アレイの第２の記憶装置中のＬＢＡに書き込むステップと、
ストリップｓ２ｊを、前記第２の記憶装置中のＬＢＡ及び前記アレイの前記第３の記憶装置中のＬＢＡに書き込むステップと、
ストリップｓ３ｊを、前記第３の記憶装置中のＬＢＡ及び前記アレイの前記第４の記憶装置中のＬＢＡに書き込むステップと
を更に含む請求項１又は２に記載の方法。
【請求項７】
もし２ｊがＮ−１以下でないと判断されるなら、
ストリップｓ１ｊを、前記第１の記憶装置のＬＢＡに書き込むステップと、
ストリップｓ２ｊを、前記第２の記憶装置のＬＢＡに書き込むステップと、
ストリップｓ３ｊを、前記第３の記憶装置のＬＢＡに書き込むステップと
を含む、請求項６に記載の方法。 
【請求項８】
記憶装置のアレイ中の記憶装置ごとにその記憶装置のストリップＬＢＡの合計数を決定するステップと、
前記ストリップＬＢＡの最小の合計数を識別するステップとを更に含み、
パラメータＮのための値をセットする動作が、ストリップＬＢＡの最小の合計数に等しいＮをセットすることである、請求項６又は７に記載の方法。
【請求項９】
もし２ｊがＮ−１以下であると判断されるなら、
ストリップｓ４ｊを、前記第４の記憶装置中のＬＢＡ及び前記アレイ中の第５の記憶装置中のＬＢＡに書き込むステップと、
ストリップｓ５ｊを、前記第５の記憶装置中のＬＢＡ及び前記アレイ中の第６の記憶装置中のＬＢＡに書き込むステップと、
ストリップｓ６ｊを、前記第６の記憶装置中のＬＢＡ及び前記第１の記憶装置中のＬＢＡに書き込むステップと
を含む、請求項６乃至８のいずれか１項に記載の方法。
【請求項１０】
もし２ｊがＮ−１以下でないと判断されるなら、
ストリップｓ４ｊを、前記第４の記憶装置のＬＢＡに書き込むステップと、
ストリップｓ５ｊを、前記第５の記憶装置のＬＢＡに書き込むステップと、
ストリップｓ６ｊを、前記第６の記憶装置のＬＢＡに書き込むステップと
を含む、請求項６乃至８のいずれか１項に記載の方法。
【請求項１１】
ストリップｓ１ｊを、前記アレイ中の前記第１の記憶装置中のストリップＬＢＡｊ及び前記アレイの第２の記憶装置中のストリップＬＢＡｊ＋１に書き込むステップと、
ストリップｓ２ｊを、前記第２の記憶装置中のストリップＬＢＡｊ及び前記アレイ中の前記第３の記憶装置中のＬＢＡｊに書き込むステップと、
ストリップｓ３ｊを、前記第３の記憶装置中のストリップＬＢＡｊ及び前記アレイの前記第４の記憶装置中のストリップＬＢＡｊ＋１に書き込むステップと
を更に含む、請求項６乃至１０のいずれか１項に記載の方法。
【請求項１２】
もし２ｊがＮ−１以下ではないと判断されるなら、
ストリップｓ１ｊを、前記第１の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込むステップと、
ストリップｓ２ｊを、前記第２の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込むステップと、
ストリップｓ３ｊを、前記第３の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込むステップと
を更に含む請求項１１に記載の方法。
【請求項１３】
もし２ｊがＮ−１以下であると判断されるなら、
ストリップｓ４ｊを、前記アレイ中の前記第４の記憶装置中のストリップＬＢＡｊ及び第５の記憶装置中のＬＢＡｊ＋１に書き込むステップと、
ストリップｓ５ｊを、前記アレイ中の前記第５の記憶装置中のストリップＬＢＡｊ及び第６の記憶装置中のストリップＬＢＡｊ＋１に書き込むステップと、
ストリップｓ６ｊを、前記アレイ中の前記第６の記憶装置中のストリップＬＢＡｊ及び前記第１の記憶装置中のストリップＬＢＡｊ＋１に書き込むステップと
を含む、請求項１１に記載の方法。
【請求項１４】
もし２ｊがＮ−１以下ではないと判断されるなら、
ストリップｓ４ｊを、前記第４の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込むステップと、
ストリップｓ５ｊを、前記第５の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込むステップと、
ストリップｓ６ｊを、前記第６の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込むステップと
を更に含む請求項１１に記載の方法。
【請求項１５】
マッピング・テーブルを確立するステップと、
書き込みコマンドを受け取るステップと、
コピー・フラグがＹＥＳ値を有するか判断するステップと、
もしそうなら、ストライドの各ストリップを、前記マッピング・テーブルに従って、記憶装置のアレイ中の少なくとも一つの対応する記憶装置に書き込むステップと、
もしそうでないなら、前記ストライドの各ストリップを、前記マッピング・テーブルに従って、記憶装置のアレイ中の対応する記憶装置に書き込むステップと
を含む、請求項６乃至１４のいずれか１項に記載の方法。
【請求項１６】
前記マッピング・テーブルを更新するステップを更に含み、
前期更新するステップは、コピー・フラグがＮＯ値にセットされるべきであるか判断するステップを更に含む、請求項１５に記載の方法。
【請求項１７】
カウンタを初期値にセットするステップと、
書き込みコマンドを受け取った後に前記カウンタを歩進させるステップと
を更に含む、請求項１５又は１６に記載の方法。
【請求項１８】
コピー・フラグがＮＯ値にセットされるべきか判断する前記ステップは、カウンタが無コピー閾値よりも小さくない値を有するか判断するステップを含む、請求項１７に記載の方法。
【請求項１９】
無コピー閾値がマッピング・アルゴリズムの関数であるＮのパーセントである、請求項１５乃至１７のいずれか１項に記載の方法。
【請求項２０】
複数の記憶装置からなるアレイにデータを記憶するための記憶システムであって、
第１のストリップを、第１の記憶装置及び第２の記憶装置に書き込むステップと、
第２のストリップを、前記第２の記憶装置及び第３の記憶装置に書き込むステップと、
第３のストリップを、前記第３の記憶装置及び第４の記憶装置に書き込むステップと
を含む記憶システム。
【請求項２１】
前記第１のストリップ、前記第２のストリップ及び前記第３のストリップが一つのストライドの構成要素である、請求項２０に記載のシステム。
【請求項２２】
記憶装置の前記アレイのための最大のストリップＬＢＡを決定する手段と、
１次データのために利用可能なストリップＬＢＡの半分を確保する手段と、
データの循環コピーのために利用可能なストリップＬＢＡの半分を確保する手段と
を含む請求項２０又は２１に記載のシステム。
【請求項２３】
第１のストリップを、第１の記憶装置、第２の記憶装置及び第３の記憶装置に書き込む手段と、
第２のストリップを、前記第２の記憶装置、前記第３の記憶装置及び第４の記憶装置に書き込む手段と、
第３のストリップを、前記第３の記憶装置、前記第４の記憶装置及び第５の記憶装置に書き込む手段と
を含む請求項２０又は２１に記載のシステム。
【請求項２４】
記憶装置のアレイのために最大のストリップＬＢＡを決定する手段と、
１次データのために利用可能なストリップＬＢＡのうちの３３パーセントを確保する手段と、
データの循環コピーのために利用可能なストリップＬＢＡのうちの６６パーセントを確保する手段と
を更に含む請求項２３に記載のシステム。
【請求項２５】
記憶装置のアレイ中の各記憶装置が少なくともＮ個のストリップＬＢＡを有するとして、そのパラメータＮのための値をセットする手段と、
記憶されるストライドの数ｊを識別する手段と、
２ｊがＮ−１以下であるか判断する手段と、
もしそうであれば、
ストリップｓ１ｊを、前記アレイの前記第１の記憶装置中のＬＢＡ及び前記アレイの第２の記憶装置中のＬＢＡに書き込む手段と、
ストリップｓ２ｊを、前記第２の記憶装置中のＬＢＡ及び前記アレイの前記第３の記憶装置中のＬＢＡに書き込む手段と、
ストリップｓ３ｊを、前記第３の記憶装置中のＬＢＡ及び前記アレイの前記第４の記憶装置中のＬＢＡに書き込む手段と
を更に含む請求項２０又は２１に記載のシステム。
【請求項２６】
もし２ｊがＮ−１以下でないと判断されるなら、
ストリップｓ１ｊを、前記第１の記憶装置のＬＢＡに書き込む手段と、
ストリップｓ２ｊを、前記第２の記憶装置のＬＢＡに書き込む手段と、
ストリップｓ３ｊを、前記第３の記憶装置のＬＢＡに書き込む手段と
を含む、請求項２５に記載のシステム。 
【請求項２７】
記憶装置のアレイ中の記憶装置ごとにその記憶装置のストリップＬＢＡの合計数を決定する手段と、
前記ストリップＬＢＡの最小の合計数を識別する手段とを更に含み、
パラメータＮのための値をセットする手段が、ストリップＬＢＡの最小の合計数に等しいＮをセットする手段を含む、請求項２５又は２６に記載のシステム。
【請求項２８】
もし２ｊがＮ−１以下であると判断されるなら、
ストリップｓ４ｊを、前記第４の記憶装置中のＬＢＡ及び前記アレイ中の第５の記憶装置中のＬＢＡに書き込む手段と、
ストリップｓ５ｊを、前記第５の記憶装置中のＬＢＡ及び前記アレイ中の第６の記憶装置中のＬＢＡに書き込む手段と、
ストリップｓ６ｊを、前記第６の記憶装置中のＬＢＡ及び前記第１の記憶装置中のＬＢＡに書き込む手段と
を含む、請求項２５乃至２７のいずれか１項に記載のシステム。
【請求項２９】
もし２ｊがＮ−１以下でないと判断されるなら、
ストリップｓ４ｊを、前記第４の記憶装置のＬＢＡに書き込む手段と、
ストリップｓ５ｊを、前記第５の記憶装置のＬＢＡに書き込む手段と、
ストリップｓ６ｊを、前記第６の記憶装置のＬＢＡに書き込む手段と
を含む、請求項２５乃至２７のいずれか１項に記載のシステム。
【請求項３０】
ストリップｓ１ｊを、前記アレイ中の前記第１の記憶装置中のストリップＬＢＡｊ及び前記アレイの第２の記憶装置中のストリップＬＢＡｊ＋１に書き込む手段と、
ストリップｓ２ｊを、前記第２の記憶装置中のストリップＬＢＡｊ及び前記アレイ中の前記第３の記憶装置中のＬＢＡｊに書き込む手段と、
ストリップｓ３ｊを、前記第３の記憶装置中のストリップＬＢＡｊ及び前記アレイの前記第４の記憶装置中のストリップＬＢＡｊ＋１に書き込む手段と
を更に含む、請求項２５乃至２９のいずれか１項に記載のシステム。
【請求項３１】
もし２ｊがＮ−１以下ではないと判断されるなら、
ストリップｓ１ｊを、前記第１の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込む手段と、
ストリップｓ２ｊを、前記第２の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込む手段と、
ストリップｓ３ｊを、前記第３の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込む手段と
を更に含む請求項３０に記載のシステム。
【請求項３２】
もし２ｊがＮ−１以下であると判断されるなら、
ストリップｓ４ｊを、前記アレイ中の前記第４の記憶装置中のストリップＬＢＡｊ及び第５の記憶装置中のＬＢＡｊ＋１に書き込む手段と、
ストリップｓ５ｊを、前記アレイ中の前記第５の記憶装置中のストリップＬＢＡｊ及び第６の記憶装置中のストリップＬＢＡｊ＋１に書き込む手段と、
ストリップｓ６ｊを、前記アレイ中の前記第６の記憶装置中のストリップＬＢＡｊ及び前記第１の記憶装置中のストリップＬＢＡｊ＋１に書き込む手段と
を含む、請求項３０に記載のシステム。
【請求項３３】
もし２ｊがＮ−１以下ではないと判断されるなら、
ストリップｓ４ｊを、前記第４の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込む手段と、
ストリップｓ５ｊを、前記第５の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込む手段と、
ストリップｓ６ｊを、前記第６の記憶装置中のストリップＬＢＡ（２ｊ−Ｎ＋１）に書き込む手段と
を更に含む請求項３０に記載のシステム。
【請求項３４】
マッピング・テーブルを確立する手段と、
書き込みコマンドを受け取る手段と、
コピー・フラグがＹＥＳ値を有するか判断する手段と、
もしそうなら、ストライドの各ストリップを、前記マッピング・テーブルに従って、記憶装置のアレイ中の少なくとも一つの対応する記憶装置に書き込む手段と、
もしそうでないなら、前記ストライドの各ストリップを、前記マッピング・テーブルに従って、記憶装置のアレイ中の対応する記憶装置に書き込む手段と
を含む、請求項２５乃至３３のいずれか１項に記載のシステム。
【請求項３５】
前記マッピング・テーブルを更新する手段を更に含み、
前期更新する手段は、コピー・フラグがＮＯ値にセットされるべきであるか判断する手段を更に含む、請求項３４に記載のシステム。
【請求項３６】
カウンタを初期値にセットする手段と、
前記書き込みコマンドを受け取った後に前記カウンタを歩進させる手段と
を更に含む、請求項３４又は３５に記載のシステム。
【請求項３７】
コピー・フラグがＮＯ値にセットされるべきか判断する前記手段が、カウンタが無コピー閾値よりも小さくない値を有するか判断する手段を含む、請求項３６に記載のシステム。
【請求項３８】
無コピー閾値がマッピング・アルゴリズムの関数であるＮのパーセントである、請求項３４乃至３７のいずれか１項に記載のシステム。
【請求項３９】
前記プログラムがコンピュータで実行されるとき、請求項１乃至１９のいずれか１項に記載のステップ全てを実行するよう適用されたプログラム・コードを含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピューティング・システムにデータを記憶することに関する。特に本発明の幾つかの実施例は、データの損失からの保護を増進する態様で、複数の記憶装置からなるアレイにデータを記憶することに関する。
【背景技術】
【０００２】
コンピューティング・システムの記憶装置にはしばしば重要なデータが記憶されている。記憶装置はしばしば故障するし、故障した記憶装置にあるデータも失われるから、１個または複数個の記憶装置が故障するときにデータが失われないよう保護したりデータを復元したりするような技法が開発されてきた。
【０００３】
データの損失を防ぐためのひとつの技法として、記憶アレイを構成するある記憶装置（例えば、ディスク・ドライブ）にパリティ情報を記憶し、そしてそのアレイを構成する１個もしくは複数個の他の記憶装置上に顧客データを記憶するという技法がある。（ここではディスク・ドライブは「ディスク」とも呼ばれ、それは通常の用法では簡便化した用法である。）この技法の場合、もしも記憶装置が故障すると、その故障した記憶装置にあったデータを再構成するのにパリティ情報が使用される。更には、もしも十分なパリティ情報が他の記憶装置にも加えられるなら、その追加の情報は１個よりも多くの故障した記憶装置からデータを再構成するのに使用できる。データ損失を防ぐ他の技法として、別個の記憶装置の複製（a duplicate copy）を作る、データのミラーリングという技法がある。もしも記憶装置が故障するなら、どのデータの複製からからデータを復元することができる。
【０００４】
安価な（あるいは独立の）ディスクの冗長なアレイ（ＲＡＩＤ）はパフォーマンスと記憶容量が増加したデータ記憶システムを提供するのに使用できる。データ保護のために、ミラーリングやパリティ情報の記憶、あるいはその二つを組み合わせたものがＲＡＩＤアレイで実装される。また、ストライピングと呼ばれる技法も使用することができる。これはストリップ(strip)の数がアレイ中のディスクの数に等しくなるようにデータ・レコード及びパリティ情報を複数のストリップに分割する技法である。複数のディスクに亘る負荷をバランスさせてパフォーマンスを改良するために、各ストリップがＲＡＩＤアレイ中の異なるディスクの各々に書き込まれる即ち「ストライプされる」。 ＲＡＩＤアレイ中のすべてのドライブに亘る一つのパスを含む一群のストリップがストライドと呼ばれる。異なるミラーリング、パリティ及びストライピングが用いられるような幾つかのＲＡＩＤプロトコルが工夫されてきた。一例として、６枚のディスクよりなるＲＡＩＤ５のアレイでは、５個のデータ・ストリップ及び １個のパリティ・ストリップがその６枚のディスクに亘ってストライプされ、そのパリティ情報が複数のディスクに亘って循環（rotation）される。複数のディスクに亘りパリティを循環させることにより、そのアレイに対するパリティの更新が複数のディスクに亘って分散されるように確保する。ＲＡＩＤ５は冗長度１を提供し、このことはそのアレイ中の任意のそして唯一のディスクが故障した場合に全てのデータを復元できることを意味する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
１個以上の記憶装置の故障後にデータを復元できるようにするために、記憶装置にもっと大きな冗長度を提供する種々の技法が知られているが、これらの技法は追加の記憶装置（たとえば、上位の(higher)ハミング・コードによって）上に追加のパリティ情報を記憶したり、追加の記憶装置上に追加のミラーリングを必要としたりするのが一般的である。ＲＡＩＤ６はＲＡＩＤ５に似た構成であるが、冗長度２を提供するために各ストライドに２つのパリティ・ストリップを必要とする。同じデータ記憶能力を得るためのＲＡＩＤ６アレイの場合の記憶効率は、ＲＡＩＤ６アレイが追加のディスクを必要とする故に、ＲＡＩＤ５アレイの場合より低い。更に、パリティ情報から損失データを再構成するのは時間が余計にかかることがある。従って、向上したフォールト・トレランス（耐障害性）及び迅速なデータ復元の必要性に照らすと、既知の技法は記憶容量と性能のトレードオフの点で満足のいくものではない。
【課題を解決するための手段】
【０００６】
本発明の第１の側面(aspect)によれば、複数の記憶装置からなるアレイにデータを記憶するための方法であって、第１の記憶装置及び第２の記憶装置に第１のストリップを書き込むステップと、前記第２の記憶装置及び第３の記憶装置に第２のストリップを書き込むステップと、前記第３の記憶装置及び第４の記憶装置に第３のストリップを書き込むステップとを含む方法が提供される。
【０００７】
好適には、複数のストリップのうち少なくとも一つのストリップがパリティ・ストリップである。この方法の好適な実施例では記憶装置のアレイ中の各記憶装置が少なくともＮ個のストリップのＬＢＡを有する。記憶すべきストライドの数ｊを識別し、３ｊがＮ−１よりも少ないか判断する、そしてもしそうならアレイ中の第１の記憶装置のＬＢＡとアレイ中の第２の記憶装置のＬＢＡと、アレイ中の第３の記憶装置のＬＢＡにストリップｓ１ｊを書き込む。またアレイ中の第２の記憶装置のＬＢＡとアレイ中の第３の記憶装置のＬＢＡと、アレイ中の第４の記憶装置のＬＢＡとにストリップｓ２ｊを書き込む。またアレイ中の第３の記憶装置のＬＢＡとアレイ中の第４の記憶装置のＬＢＡと、アレイ中の第５の記憶装置のＬＢＡにストリップｓ３ｊを書き込む。好ましくは、もし３ｊがＮ−１よりも小さくないと判断されるなら、この動作は更に以下を含む。即ち第１の記憶装置のＬＢＡにストリップｓ１ｊを、第２の記憶装置のＬＢＡにストリップｓ２ｊを、そして第３の記憶装置のＬＢＡにストリップｓ３ｊを書き込む。もっと好ましくは、この動作は以下を含む。即ち複数の記憶装置のアレイ中、記憶装置毎にその記憶装置のストリップＬＢＡの合計数を判断し、そしてストリップＬＢＡの最小の合計数を識別する。そして、パラメータＮのための値を設定する動作はストリップＬＢＡの最小の合計数に等しいＮを設定することを含む。
【０００８】
好ましくは３ｊがＮ−１よりも小さいと判断されるなら、その動作は更に以下を含む。即ち前記アレイの第４の記憶装置のＬＢＡ及び第５の記憶装置のＬＢＡ及び第６の記憶装置のＬＢＡにストリップｓ４ｊを書き込む。また第５の記憶装置のＬＢＡ及び第６の記憶装置のＬＢＡ及び第１の記憶装置のＬＢＡにストリップｓ５ｊを書き込む。また第６の記憶装置のＬＢＡ及び第１の記憶装置のＬＢＡ及び第２の記憶装置のＬＢＡにストリップｓ６ｊを書き込む。更に好ましくは、３ｊがＮ−１よりも小さくないと判断されるなら、その動作は更に以下を含む。即ちそのアレイの第４の記憶装置のＬＢＡにストリップｓ４ｊを書き込み、第５の記憶装置のＬＢＡにストリップｓ５ｊを書き込み、第６の記憶装置のＬＢＡにストリップｓ６ｊを書き込む。
【０００９】
好ましい実施例では、この方法は、少なくともＮ個のストリップＬＢＡをアレイ状の記憶装置中の各記憶装置が備えるというように、パラメータＮのための値をセットするステップと、記憶されるストライドの数ｊを識別するステップと、３ｊがＮ−１よりも小さいか調べるステップと、もしそうであれば前記アレイの第１の記憶装置中のＬＢＡｊと前記アレイの第２の記憶装置中のＬＢＡｊ＋２と前記アレイの第３の記憶装置中のＬＢＡｊ＋１とにストリップｓ１ｊを書き込むステップと、前記第２の記憶装置中のＬＢＡｊと前記第３の記憶装置中のＬＢＡｊ＋２と前記アレイの第４の記憶装置中のＬＢＡｊ＋１とにｓ２ｊを書き込むステップと、前記第３の記憶装置中のＬＢＡｊと前記第４の記憶装置中のＬＢＡｊ＋２と前記アレイ中の第５の記憶装置中のＬＢＡｊ＋１とにストリップｓ３ｊを書き込むステップとを含む。
【００１０】
好ましくは、３ｊがＮ−１よりも小さくないと判断されるなら、前述の動作は更に以下の諸ステップを含む。即ち、前記第１の記憶装置中のＬＢＡ（３ｊ−Ｎ＋２）にストリップｓ１ｊを書き込むステップと、前記第２の記憶装置中のＬＢＡ（３ｊ−Ｎ＋２）にストリップｓ２ｊを書き込むステップと、前記第３の記憶装置中のＬＢＡ（３ｊ−Ｎ＋２）にストリップｓ３ｊを書き込むステップとを含む。より好ましくは以下の動作を含む。即ち、前記アレイ状の記憶装置中の記憶装置ごとにその記憶装置中の複数個のストリップＬＢＡの合計数を判断するステップと、ストリップＬＢＡの最小の合計数を識別するステップとを含む。特に前記パラメータＮのための値をセットするステップはストリップＬＢＡの最小数に等しいＮをセットすることを含む。
【００１１】
好ましくは、３ｊがＮ−１よりも小さいと判断されるなら、前記の動作は更に以下のステップを含む。即ち前記第４の記憶装置中のＬＢＡｊと前記第５の記憶装置中のＬＢＡｊ＋２と前記アレイの第６の記憶装置中のＬＢＡｊ＋１とにストリップｓ４ｊを書き込むステップと、前記第５の記憶装置中のＬＢＡｊと前記第６の記憶装置中のＬＢＡｊ＋２と前記第１の記憶装置中のＬＢＡｊ＋１とにストリップｓ５ｊを書き込むステップと、前記第６の記憶装置中のＬＢＡｊと前記第１の記憶装置中のＬＢＡｊ＋２と前記第２の記憶装置中のＬＢＡｊ＋１とにストリップｓ６ｊを書き込むステップとを含む。更に好ましくは、３ｊがＮ−１よりも小さくないと判断するなら、前記の動作は更に以下のステップを含む。即ち前記第４の記憶装置中のＬＢＡ（３ｊ−Ｎ＋２）にストリップｓ４ｊを書き込むステップと、前記第５の記憶装置中のＬＢＡ（３ｊ−Ｎ＋２）にストリップｓ５ｊを書き込むステップと、前記第６の記憶装置中のＬＢＡ（３ｊ−Ｎ＋２）とにストリップｓ６ｊを書き込むステップとを含む。
【００１２】
第２の側面によれば、複数の記憶装置からなるアレイにデータを記憶するための記憶システムであって、第１の記憶装置及び第２の記憶装置に第１のストリップを書き込む手段と、前記第２の記憶装置及び第３の記憶装置に第２のストリップを書き込む手段と、
前記第３の記憶装置及び第４の記憶装置に第３のストリップを書き込む手段とを含む記憶装置システムが提供される。
【００１３】
第３の側面によれば、前記の方法のすべてのステップを実行するように適用されたプログラム・コード手段を含むコンピュータ・プログラムが提供される。
【００１４】
本発明の一つの側面は、複数の記憶装置からなるアレイにデータを記憶する方法である。その方法の一例は、第１のストリップを第１の記憶装置及び第２の記憶装置に書き込むステップを含む。この例はまた第２のストリップを前記第２の記憶装置及び第３の記憶装置に書き込むステップを含む。この例は更に第３のストリップを前記第３の記憶装置及び第４の記憶装置に書き込むステップを含む。
【００１５】
本発明を方法の側面から見た幾つかの代替例は、ディスク・アレイに跨るデータ・ストライドをストライピングし、前記アレイ中の第１のディスク上に前記ストライドの第１のストリップを書き込むか又は更新し、第２のディスク上に第２のストリップを書き込むか更新し、追加のストリップ及びディスクについてもその他のことをするのを含む。この方法は更に、第１のディスクがそのアレイ中の最後のディスクのストリップのコピーを有し、第２のディスクが第１のディスクのストリップのコピーを有するという具合に、各ストリップのコピーを、一つのディスクによる循環（ローテーション）で作ることを含む。
【００１６】
本発明の他の側面は、以下で説明するが、例えばアレイ状の記憶装置にデータを記憶する動作を行うようにディジタル処理装置により実行可能である、機械読み取り可能な命令のプログラムを具体化する記憶システム及び信号担持媒体を含む。
【００１７】
本発明の幾つかの例は、基本ＲＡＩＤ構成の記憶装置以外の記憶装置を用いなくても、基本ＲＡＩＤ構成によって提供されるより高い、記憶装置フォールト・トレランス（耐障害性）を提供する。従って、本発明の幾つかの例は、そのＲＡＩＤで利用できるディスク・スペースのみを用いて、所与の数のディスクのための基本ＲＡＩＤコードの上に追加的な冗長度を加える。更には、故障率の高いことで特徴付けられる初期の記憶装置の使用中、高いフォールト・トレランスを効果的に提供する。更に、本発明の幾つかの例はデータを迅速に復元することができる。本発明は、以下の説明から明らかになるように他にも多くの利点がある。
【発明を実施するための最良の形態】
【００１８】
本発明の性質、目的及び効果は添付の図に関連する以下の詳細な説明を考慮すると当業者にはもっと理解できるようになるであろう。
【００１９】
Ｉ．ハードウエア・コンポーネンツ及び相互接続
本発明の一つの側面は、複数の記憶装置からなるアレイ中にデータを記憶するための記憶システムである。一例として、その記憶システムは図１に示す記憶システム１００の全部または一部によって具体化されても良い。一例として、その記憶システム１００は主としてインターネショナル・ビジネス・マシーンズ・コーポレーションにより製造されたモデル８００エンタープライズ記憶システム（ＥＳＳ）とともに具体化されても良い。
【００２０】
記憶システム１００は第１のクラスタ１０２及び第２のクラスタ１０４を含む。代替実施例では、記憶システム１００が単一のクラスタまたは２以上のクラスタを備えていても良い。各クラスタは少なくとも一つのプロセッサを備える。一例として、各クラスタは４個もしくは６個のプロセッサを備えていても良い。図１に示す例では、第１のクラスタ１０２が６個のプロセッサ１０６ａ、１０６ｂ、１０６ｃ、１０６ｄ、１０６ｅ及び１０６ｆを備え、第２のクラスタ１０４が１０８ａ、１０８ｂ、１０８ｃ、１０８ｄ、１０８ｅ及び１０８ｆを備える。十分な計算能力を備えたプロセッサなら任意の者が使用できる。一例として、各プロセッサ１０６ａ−ｆ、１０８ａ−ｆはインターナショナル・ビジネス・マシーンズ・コーポレーショが製造するパワーＰＣ  ＲＩＳＣプロセッサであっても良い。第１のクラスタ１０２もまた第１のメモリ１１０を備え、同様に第２のクラスタ１０４も第２のメモリ１１２を備える。一例として、メモリ１１０、１１２がＲＡＭであっても良い。メモリ１１０、１１２は、たとえばデータ、及びプロセッサ１０６ａ−ｆ、１０８ａ−ｆにより実行されるアプリケーション・プログラム及び他のプログラミング命令を記憶するのに使用することができる。この２個のクラスタ１０２、１０４は、単一の包囲体または別個の包囲体の中に位置づけられていても良い。代替実施例では、各クラスタ１０２、１０４がスーパー・コンピュータ、メインフレーム・コンピュータ、コンピュータ・ワークステーション、パーソナル・コンピュータと交換されても良い。
【００２１】
第１のクラスタ１０２は、第１グループの装置アダプタＤＡ１、ＤＡ３、ＤＡ５、ＤＡ７（後述）に含まれるＮＶＲＡＭ（不揮発性ランダム・アクセス・メモリ）１１４に結合される。同様に、第２のクラスタ１０４は、第２グループの装置アダプタＤＡ２、ＤＡ４、ＤＡ６、ＤＡ８（後述）に含まれるＮＶＲＡＭ１１６に結合される。更に、第１のクラスタ１０２はＮＶＲＡＭ１１６に、また第２のクラスタ１０４はＮＶＲＡＭ１１４に結合される。一例として、クラスタ１０２により操作されるデータはメモリ１１０に記憶され、ＮＶＲＡＭ１１６にも記憶される。その結果、もしもクラスタ１０２が操作不能になってもデータは失われず、クラスタ１０４によって操作可能である。同様に、一例として、クラスタ１０４により操作されるデータはメモリ１１２に記憶され、ＮＶＲＡＭ１１４にも記憶される。その結果、もしもクラスタ１０４が操作不能になってもデータは失われず、クラスタ１０２によって操作可能である。ＮＶＲＡＭ１１４、１１６は、電力がなくても例えば約４８時間までデータを保持することができる。 
【００２２】
第１のクラスタ１０２内では、２個またはそれ以上のプロセッサ１０６ａ−ｆが同じタスクについて作業するよう協働することができる。しかし、タスクはプロセッサ１０６ａ−ｆ相互間に分割（パーティション）してもよい。同様に、第２のクラスタ１０２内では、２個またはそれ以上のプロセッサ１０８ａ−ｆが同じタスクについて作業するよう協働することができる。代わりに、タスクはプロセッサ１０８ａ−ｆ相互間に分割（パーティション）されることも可能である。その２個のクラスタ１０２、１０４間の相互作用については、クラスタ１０２、１０４がタスクに対し独立に作用してもよい。しかし、異なるクラスタ１０２、１０４中のプロセッサ１０６ａ−ｆ、１０８ａ−ｆによって共有することもできる。
【００２３】
第１のクラスタ１０２は第１のブート装置、例えば第１のハードドライブ１１８に結合される。同様に、第２のクラスタ１０４は第２のブート装置、例えば第１のハードドライブ１２０に結合される。
【００２４】
各クラスタ１０２、１０４はその両者によって共有されるように共有アダプタ１２２に結合される。この共有アダプタ１２２はホスト・アダプタと呼ぶこともできる。この共有アダプタ１２２は、例えばＰＣＩスロットであってもよく、そのＰＣＩスロットにベイがつながれる。これはクラスタ１０２、１０４のいずれかによって操作されることが可能である。一例として、その共有アダプタ１２２はＳＣＳＩ、ＥＳＣＯＮ、ＦＩＣＯＮ或いはファイバ・チャネル・アダプタであっても良く、１個もしくはそれ以上のＰＣや、ホスト１２４などの他のホストと通信するのを促進しても良い。一例として、ホスト１２４はインターナショナル・ビジネス・マシーンズ・コーポレーションから入手できるＺシリーズ・サーバもしくはＮｅｔＮｉｆｔｙサーバであってよい。
【００２５】
更に、第１のクラスタ１０２は、第１のグループの装置アダプタＤＡ１、ＤＡ３、ＤＡ５、ＤＡ７（これらは専用アダプタとも呼ばれる）に結合され、第２のクラスタ１０４は、第２のグループの装置アダプタＤＡ２、ＤＡ４、ＤＡ６、ＤＡ８に結合される。各装置アダプタＤＡ１、ＤＡ３、ＤＡ５、ＤＡ７は、第１のクラスタ１０２と記憶装置グループ１２６ａ、１２６ｂ、１２６ｃ、１２６ｄのうちの一つとの間のインターフェースである。同様に、各装置アダプタＤＡ２、ＤＡ４、ＤＡ６、ＤＡ８は、第２のクラスタ１０４と記憶装置グループ１２６ａ、１２６ｂ、１２６ｃ、１２６ｄのうちの一つとの間のインターフェースである。より詳細には、装置アダプタＤＡ１及びＤＡ２が記憶装置グループ１２６ａに結合され、装置アダプタＤＡ３及びＤＡ４が記憶装置グループ１２６ｂに結合され、装置アダプタＤＡ５及びＤＡ６が記憶装置グループ１２６ｃに結合され、装置アダプタＤＡ７及びＤＡ８が記憶装置グループ１２６ｄに結合される。他の実施例では、装置アダプタＤＡ１−８及び記憶装置グループ１２６ａ−ｄのうちの大きな数又は小さな数が使用され得る。その記憶装置グループ１２６ａ−ｄはクラスタ１０２、１０４で共有される。代替実施例では、１個もしくは複数個の記憶装置グループが第１のクラスタ１０２及び第２のクラスタ１０４とは異なるサイトニ置かれることも可能である。
【００２６】
一例として、各（記憶）装置アダプタＤＡ１−８は、シリアル・ストレージ・アーキテクチャ（ＳＳＡ）アダプタであってよい。代替例として、１個もしくは複数個の装置アダプタＤＡ１−８が他の型のアダプタ、例えばＳＣＳＩ又はファイバ・チャネル・アダプタとともに用いられても良い。各アダプタＤＡ１−８は、本発明の１個もしくは複数個の実施例或いは本発明の部分を実施するための、ソフトウエア、ファームウエア、マイクロコードのうちの一つ又は複数の組み合わせであっても良い。一例として、コモン・パーツ・インターコネクト（ＣＰＩ）が各アダプタ１−８をそれぞれのクラスタ１０２、１０４に結合するのに使用されても良い。
【００２７】
装置アダプタの各対（ＤＡ１及びＤＡ２、ＤＡ３及びＤＡ４、ＤＡ５及びＤＡ６、並びにＤＡ７及びＤＡ８）記憶装置の２個のループに結合される。例えば、装置アダプタＤＡ１及びＤＡ２は記憶装置の第１のループに結合される。この第１のループは記憶装置Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８からなる第１のストリングと、記憶装置Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７、Ｂ８からなる第２のストリングとを備える。それらのループになった記憶装置の第１及び第２のストリングは、バランスしたループを維持するために通常は同じ数の記憶装置を備える。同様に、装置アダプタＤＡ１及びＤＡ２は記憶装置の第２のループにも結合される。この第２のループは記憶装置Ｃ１、Ｃ２、Ｃ３、ＣＡ４、Ｃ５、Ｃ６、Ｃ７、Ｃ８からなる第１のストリングと、記憶装置Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８からなる第２のストリングとを備える。８個の記憶装置、例えば記憶装置Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８などからなる集合体は８パックとも呼ばれる。必ずしも必要ではないが、１個のループは最少でも１６個の記憶装置を備える。代替実施例では、各ループにもっと多くの或いはもっと少ない数の記憶装置を含めることもできる。例えば、３２個、４８個又は他の数の記憶装置を書くループに含めることができる。通常は、１個のループになった記憶装置のストリングは同数の記憶装置を備える。記憶装置の各ループは、記憶装置のループが結合される各装置アダプタと連続したループ即ちシリアルなループを形成する。例えば、記憶装置Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８及びＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７、Ｂ８を含む記憶装置のループは装置アダプタＤＡ１とシリアルなループを形成し、また装置アダプタＤＡ２ともシリアルなループを形成する。この構成は、各々のシリアルなループがそのループ中の各記憶装置と各装置アダプタとの間で冗長な通信経路を提供するので、信頼性を増強する。
【００２８】
各々の記憶装置グループ１２６ａ、１２６ｂ、１２６ｃ、１２６ｄ中の記憶装置は、１個もしくは複数個の記憶装置アレイであって各記憶装置アレイが例えばＲＡＩＤ（Redundant Array of Inexpensive(Independent) Disks ）となるようにグループ化されてもよい。ＲＡＩＤアレイはＲＡＩＤランクとも呼ばれる。第１及び第２のクラスタ１０２、１０４から、（又はホスト１２４から）受け取った読み取りや書き込みの要求に応答して、その（記憶）装置アダプタＤＡ１−８はそれらが結合しているＲＡＩＤアレイ中の各記憶装置を個別にアドレスする。ある特定のＲＡＩＤアレイ中の記憶装置は１対の装置アダプタの間で同じループにあるかもしれないし、異なるループにあるかもしれない。ＲＡＩＤアレイが単一のループ中にある記憶装置同士から構成されている例として、第１のＲＡＩＤアレイが記憶装置Ａ１、Ａ２、Ａ３、Ａ４、Ｂ１、Ｂ２及びＢ３を含み、第２のＲＡＩＤアレイが記憶装置Ａ６、Ａ７、Ａ８、Ｂ５、Ｂ６、Ｂ７及びＢ８を含み、記憶装置Ｂ４及びＡ５がいずれかのＲＡＩＤアレイによって使用され得るようスペアとして指定されても良い場合がある。この例では、各ＲＡＩＤアレイがＡ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８という８パックから、並びにＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７、Ｂ８という８パックからの記憶装置を含み、各ＲＡＩＤアレイが装置アダプタＤＡ１、ＤＡ２のうちの１つに閉じている。ＲＡＩＤアレイが異なるループ中にある記憶装置から構成されている例として、第１のＲＡＩＤアレイが記憶装置Ａ１、Ａ２、Ｂ１、Ｂ２、Ｃ１、Ｃ２及びＤ１を含み、第２のＲＡＩＤアレイが記憶装置Ａ３、Ａ４、Ｂ３、Ｂ４、Ｃ３、Ｄ３及びＤ４を含み、第３のＲＡＩＤアレイが記憶装置Ａ５、Ａ６、Ｂ６、Ｃ５、Ｃ６、Ｄ５及びＤ６を含み、そして第４のＲＡＩＤアレイが記憶装置 Ａ８、Ｂ７、Ｂ８、Ｃ７、Ｃ８、Ｄ７及びＤ８を含み、記憶装置Ｄ２、Ｃ４、Ｂ５及びＡ７がこれら４つのＲＡＩＤアレイのいずれかによって使用され得るようスペアとして指定されても良い場合がある。これらの例では、ＲＡＩＤアレイ及びそれらのＲＡＩＤアレイのために利用できるスペアの記憶装置が、同じ対の装置アダプタに結合される。しかし、ＲＡＩＤアレイ及びそのＲＡＩＤアレイのために利用できるスペアの記憶装置が、 異なる対の装置アダプタに結合されることもできよう。またＲＡＩＤアレイ及びそのＲＡＩＤアレイのために利用できるスペアの記憶装置が、単一のループまたは異なるループ中にあっても良い。
【００２９】
一つのＲＡＩＤアレイ中の全て若しくは幾つかの記憶装置に跨るストライピングもしくはミラーリング又はその両方を含んでも良いような、任意の所望の構成におけるＲＡＩＤアレイの記憶装置上に、データ及び必要ならパリティ情報を記憶しても良い。一例として、ＲＡＩＤアレイ中の６個の記憶装置がデータを記憶するのに使用され、またそのＲＡＩＤアレイ中の第７の記憶装置がパリティ情報を記憶するのに使用されても良い。他の例では、ＲＡＩＤアレイ中の７個の記憶装置がデータを記憶し、そのＲＡＩＤアレイ中の第８の記憶装置がパリティ情報を記憶するのに使用されても良い。更に他の例では、ＲＡＩＤアレイ中の全ての記憶装置上にデータ及びパリティ情報が記憶されても良い。他の実施例では、ＲＡＩＤアレイが７個よりも少ない、若しくは８個よりも多い記憶装置を備えていても良い。例えば、ＲＡＩＤアレイがデータ及びパリティ情報の両方を記憶するのに夫々使用される５個若しくは６個の記憶装置からなっていても良い。また第１の故障後の再構築を終える前に起こる第２の記憶装置の故障からの復元も可能にするため、二重パリティ情報が記憶されても良い。例えば、データを記憶するのに６個の記憶装置を使用し、パリティ情報を記憶するのに２個の記憶装置を使用することもできよう。 他の例として、７個の記憶装置がデータのために使用され、他の７個の記憶装置が前述の７個の記憶装置上のデータをミラー（写像）するのに 使用され、そして更に２個の記憶装置がパリティ情報を記憶するのに使用されても良い。これらは全て一緒に９個の記憶装置の故障からの復元を提供することができよう（故障トレランス９）。
【００３０】
記憶装置グループ１２６ａ−ｄ中の記憶装置はデータを記憶するための任意の適当な装置であってよく、磁気的、光学的、光磁気的、電気的若しくはデータを記憶するための他の任意の適当な技法を使用することができる。例えば、記憶装置はハードディスク・ドライブ、光ディスク（例えば、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＷＯＲＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、若しくはＤＶＤ＋ＲＷ）、フロッピー・ディスク、磁気データ記憶ディスク若しくはディスケット、磁気テープ、ディジタル光学テープ、ＥＰＲＯＭ，ＥＥＰＲＯＭ若しくはフラッシュ・メモリであって良い。これらの記憶装置は同じタイプの装置でなくても、また同じタイプの技法を使用していなくても良い。一例として、各記憶装置はハードドライブで、例えば１４６ギガバイトの容量を持つものでも良い。一例では、各々の記憶装置グループ１２６ａ−ｄがインターナショナル・ビジネス・マシーンズ・コーポレーションで製造されたモデル２１０５エンタープライズ・ストレージ・サーバーという記憶システムであっても良い。
【００３１】
第１のクラスタ１０２若しくは第２のクラスタ１０４又はその両方に、少なくとも１個の装置アダプタＤＡ１−８及び少なくとも１個の記憶装置グループ１２６ａ−ｄを備えたものが、記憶装置システム若しくは記憶装置と呼ばれることがある。１個若しくは複数の装置アダプタＤＡ１−８は、少なくとも１個の装置グループ１２６ａ−ｄを備えている場合若しくは備えていない場合も、記憶システム若しくは記憶装置と呼ばれることもある。
【００３２】
図２に実施例のコンピューティング装置２００を示す。図１のホスト１２４、（及び代替実施例における） クラスタ１０２若しくは１０４又はその両方が図２のコンピューティング装置２００の実施例でもって実施され得る。このコンピューティング装置２００は１個のプロセッサ２０２（プロセシング装置とも呼ばれる）を含む。これは幾つかの例では複数個のプロセッサであっても良い。一例として、このプロセッサはインターナショナル・ビジネス・マシーンズ・コーポレーションから市販されているＰｏｗｅｒＰＣ  ＲＩＳＣプロセッサであっても、インテル・コーポレーションにより製造されているプロセッサであっても良い。このプロセッサ２０２は、Ｗｉｎｄｏｗｓ２０００、ＡＤＣ、Ｓｏｌａｒｉｓ（商標）、Ｌｉｎｕｘ、ＵＮＩＸ、ＨＰ−ＵＸ（商標）など、任意のオペレーティング・システムで稼動するものでよい。このコンピューティング装置２００はパーソナル・コンピュータ、ワークステーステーション、メインフレーム・コンピュータ、若しくはスーパーコンピュータなど、任意の適当なコンピュータ上で実施されても良い。コンピューティング装置２００は、全てプロセッサ２０２に結合されている記憶装置２０４、ネットワーク・インターフェース２０６、Ｉ／Ｏ（入出力装置）２０８を含む。記憶装置２０４は、例えばＲＡＭであっても良い１次メモリ２１０と、不揮発性メモリ２１２とを備えていて良い。不揮発性メモリ２１２は、ハードディスク・ドライブ、光学的若しくは光磁気的な媒体から読み書きできるドライブ、テープ・ドライブ、不揮発性ＲＡＭ（ＮＶＲＡＭ）若しくは任意の他の適当なタイプの記憶手段とすることができる。記憶装置２０４はプロセッサによって実行可能なアップリケーション・プログラムや他のプログラミング命令とデータとを記憶するのに使用できる。ネットワーク・インターフェース２０６は任意の適当な有線若しくは無線のネットワークや通信リンクにアクセスを与えることができる。
【００３３】
ＩＩ．動作  
前述のハードウエアの実施例に加えて、本発明の他の側面は記憶装置にデータを記憶装置するための動作に関するものである。
【００３４】
Ａ．単一担持媒体
図１及び図２のコンテキストでは本発明の方法の側面が、１個若しくは複数個の装置アダプタＤＡ１−８、を備えることによって具体化されるが、クラスタ１０２若しくはクラスタ１０４又はその両方（更にはホスト１２４も必要に応じ加えても良い）は例えばコードとも呼ぶことができる機械読み取り可能な命令のシーケンスを実行する。これらの命令は種々のタイプの信号担持媒体に駐在する。この点で、本発明の幾つかの側面は、アレイ状の記憶装置にデータを記憶する動作を実行するためにディジタル処理装置によって実行可能な機械読み取り可能な命令のプログラムを具現する１個若しくは複数個の信号担持媒体を含むプログラム製品に関するものである。
【００３５】
この信号担持媒体は、例えばＲＡＭ１１０、ＲＡＭ１１２、ＮＶＲＡＭ１１４、ＮＶＲＡＭ１１６、主メモリ２１０、不揮発性メモリ２１２、及び装置アダプタＤＡ１−８中のファームウエアのうちの一つ又は複数を含む。代わりに、図３に示す光学的データ記憶ディスク３００などの信号担持媒体に命令を含んでいても良い。光ディスクはＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＷＯＲＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、若しくはＤＶＤ＋ＲＷなど、任意のタイプの信号担持媒体ディスクであってよい。更には記憶システム１００に含まれるかまたは別のところで、命令は任意の多様な機械読み取り可能な１個若しくは複数個のデータ記憶媒体に記憶することができ、この媒体は例えば「ハードドライブ」、ＲＡＩＤアレイ、磁気データ記憶ディスケット（フロッピー・ディスクなど）、磁気テープ、ディジタル光学テープ、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、プログラマブル・ロジック、他の任意のタイプのファームウエア、光磁気記憶装置、紙のパンチカード或いは任意の他の適当な信号担持媒体を含む。任意の他の適当な信号担持媒体は、ディジタル若しくはアナログ又はその両方の電気的、光学的或いは無線であってもよい通信リンクなどの伝送媒体を含む。例えば、ある実施例では命令若しくはコードが、ファイル・サーバーからネットワークを介して、或いは他の伝送媒体からアクセスできる。また命令もしくはコードを含む信号担持媒体が、ネットワーク伝送ライン、無線伝送媒体、宇宙空間を通して伝播する信号、電波、赤外線信号などの伝送媒体を含んでも良い。代りに、信号担持媒体はハードウエア・ロジックで導入されても良い。例えば、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ）若しくはＡＳＩＣ（Application Specific Integrated Circuit）などである。一例として、機械読み取り可能な命令はマイクロコードを含んでも、「Ｃ＋＋」などの言語からコンパイルされたソフトウエア・オブジェクト・コードを含んでも良い。
【００３６】
Ｂ．動作の全体的なシーケンス
１．動作のシーケンスの第１の例  
説明を簡単にするために、しかし意図的な限定を付さずに、本発明の例示的な方法の側面を、図１に示す記憶システム１００に関して説明する。本発明のこの方法的な側面の例は図４であるが、これはアレイ状の記憶装置にデータを記憶するための方法のシーケンス４００を示す。
【００３７】
シーケンス４００の動作は、１個若しくは複数個の装置アダプタＤＡ１−８、クラスタ１０２及びクラスタ１０４の一方または両方（更に必要ならホスト１２４）によって実行されることができる。図４を参照すると、シーケンス４００は動作４０２でもって開始する。動作４０２はそのアレイのための値「Ｎ」を決定する。これはそのアレイ中の各記憶装置に記憶され得るストリップの最大数であり、複数のストリップに対応するロジカル・ブロック・アドレス（ＬＢＡ）によって識別される。一例として、アレイ状の記憶装置はその複数の記憶装置のうちの幾つか若しくは全てを１個ないし複数個の記憶装置グループ１２６ａ−ｄに含んでも良い。前述のとおり、その記憶装置は或る例ではハードディスクであってよい。
【００３８】
記憶装置のアレイの中の記憶装置に書き込まれ得るストリップの最大数Ｎを決定するために、記憶アダプタはそのアレイ中の各装置に問い合わせをし、そしてそのアレイ中の最少の容量の記憶装置がサポートできる最大値に等しいストリップの数Ｎをセットする。しかし、他の実施例ではその記憶アダプタがその最大値をもっと小さい値に制限しても良い。多くの例では、ＲＡＩＤ中の全ての記憶装置が同じ記憶容量を有するので、利用できるストリップＬＢＡの数も同じである。
【００３９】
各ストリップは多数のデータ・ブロックを含み、各データ・ブロックは対応するＬＢＡに記憶される。ストリップの最初のブロックのＬＢＡは、ストリップＬＢＡと呼ばれる。例えば、各ストリップは６４ブロックを含み、各ブロックが例えば５１２バイトのデータを含む。そのストリップ中の各データ・ブロックはその対応するストリップＬＢＡにブロックのオフセット（ずれ乃至差分）を足した位置でアドレスされても良い。但し、ストリップＬＢＡはそのストリップの最初のブロックのアドレスであり、そのオフセットはそのストリップＬＢＡからターゲットのデータ・ブロックＬＢＡまでのブロックの数である。典型的にはストリップが共通の長さを持つので、一つのストライドに於ける各ストリップの開始ＬＢＡはそのアレイ中の各記憶装置に対し同じ値を有する。従って、一つのストライドの全てのデータ・ブロックは、ターゲットの記憶装置（例えば、あるディスク）、そのストリップＬＢＡ及びオフセットを識別することによってアドレスすることができる。「ストリップＬＢＡへの書き込み」という語句は手短に言えば、所与のストリップＬＢＡで開始するそのストリップと関連するブロックの一部または前部への書き込みを説明するために使用することができる。
【００４０】
シーケンス４００はまた動作４０４を含んでも良い。これは記憶装置のアレイ中に、新しいＬＢＡへの書き込みの回数のカウントを維持するために、例えば１などの初期値にカウンタをセットすることを含む。
【００４１】
シーケンス４００には、ランダムに入来する書き込みＬＢＡと、アレイ中の記憶装置に書き込まれるようオーダーされたＬＢＡとの間で１対１のマッピング（写像）を確立することを含む動作４０６がある。動作４０６は、或るマッピング・アルゴリズムをベースにしたもので良いマッピング・テーブルを準備することを含む。マッピング・テーブルを準備することはマッピング・テーブルを指定するという言い方もあり、キャッシュ中にスペースを確保することを含んでも良い。一例として、マッピング・テーブルはアダプタ・メモリに記憶されても良い。このアダプタ・メモリは不揮発性であっても良い。従ってもし記憶装置（ディスクなど）がリセットされてもマッピング・テーブルは失われない。
【００４２】
ランダムに入来する書き込みＬＢＡと、アレイ中の記憶装置に書き込まれるようオーダーされたＬＢＡとの間で１対１のマッピングを確立するために、循環コピーのために隣接したＬＢＡを確保するアルゴリズムを使用してもよい。図５に示すアルゴリズムは、データとそのデータの１回循環コピーとを５個のディスク・アレイに書き込むためのアルゴリズムの例である。このようなアルゴリズムを用い、隣接するＬＢＡが循環コピーのために確保されると、読み取り及び書き込みの効率が改良される。しかし、一般的には任意の１対１マッピング・アルゴリズムが使用される。図５について、ｓ１ｊ、ｓ２ｊ、ｓ３ｊ、ｓ４ｊ及びｓ５ｊが、Ｓｊ＝ｓ１ｊ＋ｓ２Ｊ＋ｓ３ｊ＋ｓ４ｊ＋ｓ５ｊであるようなストライドＳｊの成分ストリップである。またＬＢＡｍはマッピング・アルゴリズム及びデーブル（図６参照）によって決定されるような、ストライドＳｊのためのマップされたＬＢＡである。図５において、ストライドＳｊを書き込むということは、各ディスクの２個のストリップＬＢＡに書き込むことを含む。但し第２のＬＢＡに書き込まれるのは他のディスクに書き込まれたデータの循環コピーである。例えば、ディスク１上にストライドＳｊを書き込むときは、ストリップｓ１ｊが書き込まれ、そのロジカル・ブロック・アドレスはＬＢＡｍで始まる。ストリップｓ５ｊのコピーが書き込まれるが、そのアドレスはＬＢＡｍ＋１で始まる。ディスク２には、ストリップｓ２ｊが、ＬＢＡｍで始まるアドレスに書き込まれ、ストリップｓ１ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれる。ディスク２には、ストリップｓ２ｊが、ＬＢＡｍで始まるアドレスに書き込まれ、ストリップｓ１ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれる。ディスク２には、ストリップｓ２ｊが、ＬＢＡｍで始まるアドレスに書き込まれ、ストリップｓ１ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれる。ディスク２には、ストリップｓ２ｊが、ＬＢＡｍで始まるアドレスに書き込まれ、ストリップｓ１ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれる。ディスク３には、ストリップｓ３ｊが、ＬＢＡｍで始まるアドレスに書き込まれ、ストリップｓ２ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれる。ディスク４には、ストリップｓ４ｊが、ＬＢＡｍで始まるアドレスに書き込まれ、ストリップｓ３ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれる。ディスク５には、ストリップｓ５ｊが、ＬＢＡｍで始まるアドレスに書き込まれ、ストリップｓ４ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれる。スターティングＬＢＡｍは、各ストリップのブロックの数の関数である。一例として、ストライド１がＬＢＡ０で開始し、ストライド２がＬＢＡ１２８で開始することもできよう。図６は、図５に示すようなアルゴリズムに基づくＬＢＡマッピング・テーブルを示す。これは各ストライドに於ける各ストリップの１回循環コピーを記憶するものであり、利用可能なストリップＬＢＡの全てに対し先入れ先出し（ＦＩＦＯ）技法を用いている。
【００４３】
他の例として、図７はマッピング・アルゴリズムを示し、また図８は対応するマッピング・テーブルを示す。ここでは５個のディスク・アレイで２回循環のデータのコピーを記憶するのに、ＦＩＦＯ方式が使用されている。（他の実施例では２回より多くの循環コピーも記憶できる。）図７を参照すると、ｓ１ｊ、ｓ２ｊ、ｓ３ｊ、ｓ４ｊ及びｓ５ｊが、Ｓｊ＝ｓ１ｊ＋ｓ２ｊ＋ｓ３ｊ＋ｓ４ｊ＋ｓ５ｊというようなストライドＳｊの構成要素である。またＬＢＡｍは、マッピング・アルゴリズム及びマッピング・テーブルによって決定されるようなストライド ＳｊのためのマップされたＬＢＡである。図８を参照すると、ストライド Ｓｊを書き込むことは、各ディスクに３個のＬＢＡを書き込むことからなる。ここでその第２、第３のＬＢＡに書き込まれるのは、他のディスクに書き込まれたストリップの循環コピーである。例えば、ディスク１では、ストライド Ｓｊを書き込むとき、ＬＢＡｍで始まるアドレスに ｓ１ｊが書き込まれ、ストリップｓ５ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれ、ストリップ ｓ４ｊがＬＢＡｍ＋２で始まるアドレスに書き込まれる。ディスク２では、ＬＢＡｍで始まるアドレスにｓ２ｊが書き込まれ、ストリップ ｓ１ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれ、ストリップ ｓ５ｊがＬＢＡｍ＋２で始まるアドレスに書き込まれる。ディスク３では、ＬＢＡｍで始まるアドレスにｓ３ｊが書き込まれ、ストリップ ｓ２ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれ、ストリップ ｓ１ｊがＬＢＡｍ＋２で始まるアドレスに書き込まれる。ディスク４では、ＬＢＡｍで始まるアドレスにｓ４ｊが書き込まれ、ストリップ ｓ３ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれ、ストリップ ｓ２ｊがＬＢＡｍ＋２で始まるアドレスに書き込まれる。ディスク５では、ＬＢＡｍで始まるアドレスにｓ５ｊが書き込まれ、ストリップ ｓ４ｊのコピーがＬＢＡｍ＋１で始まるアドレスに書き込まれ、ストリップ ｓ３ｊがＬＢＡｍ＋２で始まるアドレスに書き込まれる。
【００４４】
他の実施例では、マッピング・アルゴリズムが、１つのまたは一組の帯(band)の、入来する書き込みＬＢＡのために、マップされたセットのＬＢＡを確保しても良い。一例として、入来する書き込みＬＢＡ同士が互いに論理的に近いままになるような態様でＬＢＡが確保されても良い。幾つかの例では、そのアルゴリズムは、特定のアプリケーションや特定のオペレーティング・システムとともに動作するように修正されても良い。この例では、ＬＢＡの帯域が確保され、確保された帯域にないＬＢＡは例えばＦＩＦＯ技法を用いても良い。図９は、最初の１０個のＬＢＡのために確保されたＬＢＡ帯域マッピングの例を示す。図１０は、１回循環コピーのためのマッピング・テーブルを示す。そのテーブルでは図１０に示す１０個のＬＢＡの帯域の確保されたマッピングとＦＩＦＯマッピングが組み合わされている。この例では、入来するＬＢＡがすでにそのテーブルにないときだけマッピング・テーブルが更新される。このＦＩＦＯアルゴリズムは確保された帯域の外側にあるＬＢＡのために使用される。確保された帯域を使用するという概念は１よりも多くの帯域に一般化され拡張されてもよい。
【００４５】
各ストライドのオリジナルと一つのコピーが記憶されるような実施例では、１次データのために利用可能なＬＢＡの半分を確保(reserve)することと、データの循環コピーのために利用可能なＬＢＡの半分を確保することとをその動作に含んでも良い。各ストライドのオリジナル及び２つのコピーが記憶される実施例の場合、１次データのために利用可能なＬＢＡの三分の一を確保し、データの循環コピーのために利用可能なＬＢＡの三分の二を確保することをその動作に含んでも良い。記憶スペースの確保は、図５乃至図１０に示すアルゴリズム及びテーブルなど、１対１のマッピング・アルゴリズム及びテーブルを用いて装置アダプタＤＡ１−８によって陰で実行されてもよい。クラスタ１０２、１０４から受け取ったデータを書き込め、というリクエストに応じ、記憶装置アダプタＤＡ１−８はそのデータの１次コピー及び任意の２次コピーの書き込みを実行し、またそのマッピング・テーブルを利用して書き込まれたもの及び書き込まれたところを追跡することができる。
【００４６】
図４を再度参照すると、シーケンス４００は書き込みコマンドを受け取ったか判断する動作４０８を含むことができる。もし書き込みコマンドを受け取っていなければ、書き込みコマンドを受け取るまで、動作４０８を反復する。もし書き込みコマンドを受け取れば、シーケンス４００は、すでに書き込まれたことのないＬＢＡ（新しいＬＢＡ）にその書き込みがされるか判断することを含む動作４１０を含むことができる。すでに書き込まれたことのあるＬＢＡに書き込みがされると判断すると、シーケンス４００はマッピング・テーブルをチェックすることを含む動作４１２と、そのマッピング・テーブルに従ってそのストリップの書き込みをする、という書き込みの実行を含む動作４１３とを含むことができる。その書き込みの実行は、そのストライドに於けるストリップごとに、マッピング・テーブルに於いて指示されるＬＢＡにストリップを書き込むことお含み、そしてもしその対応するコピー・フラグの値が「イエス（ＹＥＳ）」であれば、各ストリップの１個若しくは複数個の循環コピーをそのマッピング・テーブルで指示されるとおりに書き込むことも含む。
【００４７】
動作４１０に於いて、以前に書き込まれたことがないＬＢＡに書き込みがされると判断されるなら、シーケンス４００はそのカウンタを歩進することを含む動作４１４を含むことができる。シーケンス４００は、入来するストリップＬＢＡとマップされるストリップＬＢＡとの間でそのマッピングを指示するようマッピング・テーブルを更新することを含む動作４１６を含むことができる。動作４１６はまたマッピング・テーブルでコピー・フラグのためのＹＥＳ又はＮＯの値を、マッピング・テーブル中のその対応するエントリにセットすることを含んでも良い。ＹＥＳ又はＮＯの値をセットすることは、どちらの値をセットすべきか判断することを含んでも良い。一例として、コピー・フラグをＮＯという値にセットすべきであると判断することは、カウンタが無コピー（ＮＯ  ＣＯＰＹ）閾値に等しいかそれよりも大きい（「以上」ともいえる）値を有するか判断することを含む。一例として、無コピー閾値は、パーセント（割合）がマッピング・アルゴリズムの関数であるようなＮというパーセントとなる値であっても良い。例えば、図６のマッピング・テーブルの場合、そのカウンタがＮ／２＋１という値に達するとコピー・フラグをＮＯにセットすることになろう。シーケンス４００は、そのコピー・フラグがそのカウンタの対応する値に対しＹＥＳかＮＯであるかを調べることを含む動作４１８を含んでも良い。もしコピー・フラグの値がＹＥＳであれば、そのシーケンス４００は、そのストライドに於けるストリップごとに、そのストリップ及びそのストリップの循環コピーを、そのマッピング・テーブルで指示されるＬＢＡに書き込むことを含む動作４２０を含むことができる。シーケンス４００はそのカウンタがＮに等しい値を有するか判断することを含むことができ、もしそうであれば、そのシーケンスは終了する。もしそうでなければ、動作４０８に続く。
【００４８】
動作４１８でコピー・フラグがそのカウンタの対応する値についてＮＯという値を有すると判断された場合、そのシーケンス４００は、そのストライドの各ストリップについてそのマッピング・テーブルで指示されるストリップを書き込むが、そのストリップのコピーは書き込まないことを含む動作４２４を含むことができる。シーケンス４００はそのカウンタがＮに等しい値を有するか調べ、もしそうならそのシーケンスが終了し、もしそうでなければそのシーケンスが動作４０８に続くことを含む動作４２６を含むこともできる。
【００４９】
２．動作シーケンスの第２の例  
図１１は、記憶装置のアレイにデータを記憶する方法のシーケンス１１００のフローチャートである。シーケンス１１００の動作は、１個若しくは複数個の装置アダプタＤＡ１−８、クラスタ１０２、クラスタ１０４（及びホスト１２４）のうちの１個又は複数個によって実行できる。図１１に言及すると、シーケンス１１００は動作１１０２を含み、ここから開始する。その動作１１０２は、記憶装置のアレイ中の各記憶装置について、それらの対応する論理ブロック・アドレス（ＬＢＡ）により識別され、その記憶装置に記憶できるストリップＬＢＡの合計数を調べることを含む。これはそのアレイにおける各記憶装置上のストリップＬＢＡの合計数を調べるものと説明される。一例として、記憶装置のアレイは、１個もしくは複数個の記憶装置グループ１２６ａーｄ中の幾つか又は全ての記憶装置を含むことができる。
【００５０】
シーケンス１１００は、最小容量のアレイ中の記憶装置に記憶され得るストリップの最大数を識別する動作１１０４を含むことができる。これはまた最小容量のアレイ中の記憶装置上のストリップＬＢＡの数を識別するとも説明できる。シーケンス１１００そのアレイ中の最小容量の記憶装置に記憶され得るストリップの最大数に等しいパラメータＮをセットすることを含む動作１１０６を含むことができる。これは、ストリップＬＢＡの数に等しいＮをセットする、とも説明できる。
【００５１】
各ストライドのオリジナル及び一つのコピーが記憶される幾つかの実施例では、１次データのために利用可能なストリップＬＢＡの半分を確保し、データの循環コピーのために利用可能なストリップＬＢＡの半分を確保する動作を含む。各ストライドのオリジナル及び２つのコピーが記憶される実施例の場合、１次データのために利用可能なストリップＬＢＡの三分の一を確保し、データの循環コピーのために利用可能なストリップＬＢＡの三分の二を確保する動作を含んでもよい。記憶装置スペースの確保は、例えば図５乃至図１０に示すような、１対１のマッピング・アルゴリズム及びマッピング・テーブルを用い記憶装置アダプタＤＡ１−８により陰で実行されることができる。一般的には、クラスタ１０２、１０４（又はホスト１２４）から受け取ったデータを書き込め、というリクエストに応じ、記憶装置アダプタＤＡ１−８はそのデータの１次コピー及び任意の２次コピーの書き込みを実行し、またそのマッピング・テーブルを利用して書き込まれたもの及び書き込まれたところを追跡することができる。
【００５２】
このシーケンス１１００は、記憶されるストライドＳｊの数ｊを識別する動作１１０８をも含んでよい。シーケンス１１００は各ストリップのオリジナル及び一つのコピーが記憶される例の場合、２ｊがＮ−１以下か調べるなどの動作１１１０を含む。シーケンス１１００に於いて２ｊがＮ−１以下であると決定されれば、そのシーケンス１１００は１個若しくは複数の動作１１１２，１１１４，１１１６及び１１１８を含むことができる。動作１１１２は、ストリップｓ１ｊを、アレイ中の第１の記憶装置のＬＢＡ、例えばＬＢＡｊ、及びアレイ中の第２の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込むことを含む。一例として第１及び第２の記憶装置を記憶装置グループ１２６ａ−ｄに含むことができる。動作１１１４は、ストリップｓ２ｊを、例えばＬＢＡｊ中の第２の記憶装置のＬＢＡ、例えばＬＢｊ＋１、及びそのアレイの第３の記憶装置中のＬＢＡ、例えばＬＢＡｊ＋１に書き込むことを含むことができる。動作１１１６は、ストリップｓ３ｊを、そのアレイ中の第３の記憶装置のＬＢＡ、例えばＬＢＡｊ、及びそのアレイ中の第４の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込むことを含むことができる。ストリップｓ１ｊ、ｓ２ｊ、ｓ３ｊは動作１１０８で識別されるストライドｊの構成要素であってよい。１個若しくは複数個のストリップｓ１ｊ、ｓ２ｊ、ｓ３ｊがパリティ・ストリップであっても良い。更に、もしストライドｊが追加のストリップを有していれば、そのストライドｊ中に追加のストリップが記憶されても良い。例えば、ストリップｓ４ｊが、アレイ中の第４の記憶装置、例えばＬＢＡｊ、及びそのアレイ中の第５の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込まれ、ストリップｓ５ｊが、そのアレイ中の第５の記憶装置、例えばＬＢＡｊ、及びアレイ中の第６の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込まれ、そしてストリップｓ６ｊが、そのアレイ中の第６の記憶装置、例えばＬＢＡｊ、及びそのアレイ中の第１の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込まれても良い。ストリップｓ１ｊ、ｓ２ｊ、ｓ３ｊ、ｓ４ｊ、ｓ５ｊ、ｓ６ｊのうちの１個若しくは複数個がパリティ・ストリップであってよい。他の実施例で、ストライドｊの３個のストリップより多かったる少なかったり、或いはストライドｊの６個のストリップより多かったり少なかったりというものも、同様な態様、即ち各ストリップが２個以上の記憶装置に書き込まれるというように、記憶装置への書き込みが行なわれ得る。
【００５３】
動作１１１８は、アレイに記憶すべき追加のストライドがあるか調べる動作を含み、もしあれば動作１１０８乃至１１１８のうちの１つ又は複数の動作が再度実行され得る。もし動作１１１８で記憶すべき追加のストライドがないと決定されれば、そのシーケンス１１００は終了することができる。
【００５４】
代替実施例で、動作１１１０は３ｊがＮ−１よりも小さいか調べてもよい。この代替実施例では、３ｊがＮ−１よりも小さいと判断されれば、シーケンス１１１０は動作１１１２、１１１４、１１１６、１１１８の代替実施例を含んでも良い。例えば、動作１１１２は、ストリップｓ１ｊを、そのアレイ中の第１の記憶装置のＬＢＡ、例えばＬＢＡｊに、そのアレイ中の第２の記憶装置のＬＢＡ、例えばＬＢＡｊ＋２に、そしてそのアレイ中の第３の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込むことを含んでも良い。この代替実施例では、動作１１１４が、ストリップｓ２ｊを、第２の記憶装置中のＬＢＡ、例えばＬＢＡｊに、第３の記憶装置のＬＢＡ、例えば、ＬＢＡｊ＋２、及びそのアレイ中の第４の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込むことを含んでも良い。この代替実施例では、動作１１１６が、ストリップｓ３ｊを、第３の記憶装置中のＬＢＡ、例えばＬＢＡｊに、第４の記憶装置のＬＢＡ、例えば、ＬＢＡｊ＋２に、そしてそのアレイ中の第５の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込まれることを含んでも良い。この代替実施例では、ストライドｊ中の追加のストリップを同様の態様で記憶しても良い。例えば、ストリップｓ４ｊが、そのアレイ中の第４の記憶装置のＬＢＡ、例えばＬＢＡｊに、及びそのアレイ中の第５の記憶装置のＬＢＡ、例えばＬＢＡｊ＋２に、そしてそのアレイ中の第６の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込まれ、ストリップｓ５ｊが、その第５の記憶装置のＬＢＡ、例えばＬＢＡｊに、及びそのアレイ中の第６の記憶装置のＬＢＡ、例えばＬＢＡｊ＋２に、そしてそのアレイ中の第１の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込まれ、そしてストリップｓ６ｊが、その第６の記憶装置のＬＢＡ、例えばＬＢＡｊに、その第１の記憶装置のＬＢＡ、例えばＬＢＡｊ＋２に、その第１の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に、そしてその第２の記憶装置のＬＢＡ、例えばＬＢＡｊ＋１に書き込まれても良い。他の実施例では、ストライドｊが有するストリップの数が３よりも大きかったり小さかったり（或いは６より大きかったり小さかったり）しても良い。そしてこれらの実施例ではストライドｊのストリップが、動作１１１２、１１１４、１１１６で説明したような、各ストリップが３つの記憶装置に書き込まれるような態様で記憶装置に書き込まれても良い。他の代替実施例では、各ストライドの追加のコピーを同様な態様で記憶することができよう。動作１１１８は、そのアレイに記憶すべき追加のストライドがあるか調べることを含む。もしあれば、動作１１０８乃至１１１８のうちの１つ若しくはそれ以上の動作がこの実施例のために説明したように再度実行される。もし動作１１１８で記憶すべき追加のストライドがないと判断されれば、そのシーケンス１１は終了しても良い。
【００５５】
各ストライドのオリジナルのコピー及び１個の追加のコピーが書き込まれることを説明した図１１及び図１２の主たる実施例に再度言及すると、もし動作１１１０で２ｊがＮ−１以下でないと判断するとき、そのシーケンス１１００は動作１１２０、１１２２、１１２４、１１２６のうちの一つ若しくは複数を含むことができる。図１２で、動作１１２０は、ストリップｓ１ｊを、第１の記憶装置のＬＢＡ、例えばＬＢＡ（２ｊ−Ｎ＋１）に書き込むことを含む。動作１１２２は、ストリップｓ２ｊを、第２の記憶装置のＬＢＡ、例えばＬＢＡ（２ｊ−Ｎ＋１）に書き込むことを含む。動作１１２４は、ストリップｓ３ｊを第３の記憶装置のＬＢＡ、例えばＬＢＡ（２ｊ−Ｎ＋１）に書き込むことを含む。もしストライドｊ中に追加のストリップがあれば、同様な態様で記憶されても良い。例えば、ストリップｓ４ｊが第４の記憶装置のＬＢＡ、例えばＬＢＡ（２ｊ−Ｎ＋１）に、ストリップｓ５ｊが第５の記憶装置のＬＢＡ、例えばＬＢＡ（２ｊ−Ｎ＋１）に、そしてｓ６ｊが第６の記憶装置のＬＢＡ、例えばＬＢＡ（２ｊ−Ｎ＋１）に書き込まれても良い。他の実施例では、ストライドｊが有するストリップの数が３よりも大きかったり小さかったり（或いは６より大きかったり小さかったり）しても良い。そしてこれらの実施例ではストライドｊのストリップが、動作１１２０、１１２２、１１２４で説明したような態様で記憶装置に書き込まれても良い。動作１１２６は、アレイに記憶すべき追加のストライドがあるか調べることを含む。もしあれば、動作１１０８−１１２６のうちの一つ又はそれ以上が再度実行される。もし記憶すべき追加のストライドがなければ、そのシーケンス１１００は終了する。
【００５６】
３ｊがＮ−１よりも小さいか調べることを含む、動作１１１０の代替実施例に於いて、もし３ｊがＮ−１よりも小さくないなら、そのシーケンス１１００は動作１１２０、１１２２、１１２４、１１２６の代替実施例を含むことができる。例えば、図１２で、動作１１２０は、ストリップｓ１ｊを、第１の記憶装置のＬＢＡ、例えばＬＢＡ（３ｊ−Ｎ＋２）に書き込むことを含む。また代替実施例での動作１１２２は、ストリップｓ２ｊを、第２の記憶装置のＬＢＡ、例えばＬＢＡ（３ｊ−Ｎ＋２）に書き込むことを含んでも良い。また代替実施例での動作１１２４は、ストリップｓ３ｊを第３の記憶装置のＬＢＡ、例えばＬＢＡ（３ｊ−Ｎ＋２）に書き込むことを含んでも良い。もしストライドｊ中に追加のストリップがあれば、同様な態様で記憶されても良い。
例えば、ストリップｓ４ｊが第４の記憶装置のＬＢＡ、例えばＬＢＡ（３ｊ−Ｎ＋２）に、ストリップｓ５ｊが第５の記憶装置のＬＢＡ、例えばＬＢＡ（３ｊ−Ｎ＋２）に、そしてストリップｓ６ｊが第６の記憶装置のＬＢＡ、例えばＬＢＡ（３ｊ−Ｎ＋２）に書き込まれても良い。他の実施例では、ストライドｊが有するストリップの数が３よりも大きかったり小さかったり（或いは６より大きかったり小さかったり）しても良い。そしてこれらの実施例ではストライドｊのストリップが、この代替実施例のための動作１１２０、１１２２、１１２４で説明したような態様で記憶装置に書き込まれても良い。動作１１２６は、アレイに記憶すべき追加のストライドがあるか調べることを含む。もしあれば、この代替実施例のための動作１１０８−１１２６のうちの一つ又はそれ以上が再度実行される。もし記憶すべき追加のストライドがなければ、そのシーケンス１１００は終了しても良い。
【００５７】
前述のシーケンスの一例を要約すると以下のとおりである。このプロセスは、Ｎ個の利用可能なＬＢＡを有するｍ個のディスク・ドライブのアレイで実施されることができる。ここで各ストライドＳは、パリティ・ストリップを含むｍ個のストリップ（ｓ１、ｓ２、．．．ｓｍ）からなり、Ｓｊ＝（ｓ１ｊ＋ｓ２ｊ＋．．．＋ｓｍｊ）である。新しいストライドＳｊはＬＢＡｊで始まるアドレスで書き込まれる。但しｊ＝０，１，２，．．．Ｎ−１であり、Ｎはメタデータを含む、記録のために利用可能なＬＢＡの数である。変数ｎが２ｊに等しくセットされても良い。そのデータを所望のパターンで記憶するために、もしｎがＮ−１以下であれば、ＬＢＡｎで始まって、ｓ１ｊ及びｓｍｊをディスク１に書き込み、ｓ２ｊ及びｓ１ｊをディスク２に、．．．そしてｓｍｊ及びｓ（ｍ−１）ｊをディスクｍに書き込む。もしｎがＮ−１よりも大きければ、ＬＢＡ（ｎ−Ｎ＋１）で始まって、ｓ１ｊをディスク１に、ｓ２ｊをディスク２に、．．．そしてｓｍｊをディスクｍに書き込む。このプロセスは単なる一例であり、データ及びそのデータのコピーを書き込むパターンは、１対１のマッピングを有する他の記憶パターンとともに一般化されよう。
【００５８】
Ｃ  補足説明  
本発明の異なる実施例で使用される２次のコピーは、種々の技法を用いて書き込むことができる。例えば、ＲＡＩＤアレイに取り付けられた１個若しくは複数個の装置アダプタＤＡ１−８がリアル・タイム・モードでそのアレイをコピーさせるのに使用されてもよい。リアル・タイムでは、装置アダプタ・バッファが従来のデータ・ストリップを保持し、そのアレイの構成要素（member)のためにターゲットとされるオリジナルのデータ・ストリップとともに対となるようにデステージするのに使用されても良い。新しい１次データ・ストライドは、新しいデータの二重のコピーを作る余分のスペースがないときは、そのコピーのストリップの最も古いものの上に書き込んだディスクも良い。更に各々の新しいストライドが逐次ＦＩＦＯ態様でそのコピーに以前に割り当てられていたスペースを侵略するのでもよい。コピーが重ね書きされた古いデータの１次ストライドには触れないままなので、基本ＲＡＩＤコードにより提供されるＲＡＩＤ保護が尚も保証される。まだ重ね書きされていないコピーを持つ１次ストライドはもっと高い冗長度の保護を持ち続ける。最終的には、全てのコピー・ストライドが重ね書きされ、最小の基本ＲＡＩＤ保護を残す。リアル・タイムでデータのコピーを書き込むよりは、ＲＡＩＤアレイに取り付けられた１個若しくは複数個の装置アダプタＤＡ１−８がバックグラウンド・モードでそのアレイをコピーさせるのに私用されても良い。バックグラウンド・モードでは、装置アダプタ１−８が各アレイの構成要素からストリップを読み取り、それらをオリジナルのストライドに対しシフト・シーケンスで書き込むことができる。
【００５９】
本発明の幾つかの例は、所与の数のディスクに跨るＲＡＩＤストライドの２個またはそれよりも高いセットのコピーをストライプピングすることを含む。各々の１次ストライドは、ｍ個のシーケンシャルなストリップからなり、各々のストリップはそのアレイ中のｍ個のドライブのうちの一つに書き込まれる。そのストリップのうちの少なくとも一つは、その残りのストリップを例えばＸＯＲすることによって構成されるパリティ・ストリップであっても良い。１次ストライド中のストリップの２次コピーは、そのアレイ中のディスクの２次の準物理的なミラー（quasi-physical mirror(s)）を提供するようにそのアレイ中のディスクに対し循環される。
【００６０】
図１３は、ＲＡＩＤ５がベース・アレイであるような６個のディスク・アレイのために各ストライドの一つのコピーが作られる本発明の実施例を示す。他のパリティＲＡＩＤスキーム（ＲＡＩＤ５１、ダブル・パリティなど）がこの冗長度を増進するよう強化されてもよい（或いは本発明の他の実施例に於ける二重または三重のミラーリングなどのようにもっと冗長度を上げても良い）。この１次の記憶ストライドはＡ、Ｂ、Ｃ．．．と指定され、そして１つのドライブによって循環されたストライドのコピーの、２次的なセットがＡ’、Ｂ、Ｃ．．．と指定される。従って、Ａ’、Ｂ、Ｃ．．．は、それらの準備ができていない対応物Ａ、Ｂ、Ｃのミラー・イメージである２次的なデータ・ストライドである。前述のとおり、追加のコピーを用いればもっと高い冗長度を得られる。例えば、第２（あるいは第３の）コピーはまた一つのドライブによって循環される（或いは他の幾つかの数のドライブによって循環される）。この例に於ける各ストライドは例えば、Ａｐといったパリティ・ストリップを有する。Ａｐはデータ・ストリップＡ１、Ａ２、Ａ３、Ａ４及びＡ５に関するパリティ・ストリップを表す。従って、ｉ＝１，２，３，４，５に対するＡ１、Ｂ１、Ｃ１．．．は１次のデータ・ストリップであり、Ａｐ、Ｂｐ、Ｃｐ．．．はこれに対応するパリティ・ストリップである。この例で、１次のストリップ、２次のストリップはともに、それぞれストレッチ１を有する（各々の連続するストライドは一つのディスクにより循環される）。しかし、例えばｉ＝１，２，３，４，５に対する他のストレッチも使用できよう。
【００６１】
図１４は、１個のディスクの故障後、喪失したデータを、パリティを用いずに再構成する例である。各喪失ストリップは、２次ストリップＡ’２、Ｂ’１、Ｃ’ｐ．．．．．から１次ストリップＡ２、Ｂ１、Ｃｐ、．．．を再構成しつつ隣接するドライブからコピーすることによってスペア・ドライブ上に再構成される。
【００６２】
図１５は、２個の隣接しないディスクの故障後、パリティ再構成を用いずに再構成する例を示す。この図は任意の２個の隣接しない故障から復旧する能力を示すものであり、ベースＲＡＩＤ５よりも高いトレランス（耐故障性）を有することを示す。各ストリップは、隣接するドライブからコピーすることによってスペア・ドライブ上に再構成される。例えば、最初の１次ストリップ  Ａ２、Ｂ１、Ｃｐ．．．は、２次ストリップＡ’２、Ｂ’１、Ｃ’ｐ．．．．．から再構成され、その後第２のスペア上に１次ストリップＡ４、Ｂ３、Ｃ２、．．．を再構成する。この例では、故障したドライブが隣接していないので、パリティ・ストリップＡｐ、Ｂｐ、Ｃｐを用いてのデータ再構成は必要とされない。
【００６３】
図１６は、２個の隣接するディスク故障後、パリティ再構成が使用される再構成の例である。この図は、故障が隣接する場合でさえ、任意の２個の故障から復旧する能力を示し、これは基本ＲＡＩＤ５よりも高いトレランスである。この再構成は１個のスペア・ディスク・ドライブの１次ストリップに最小化されたパリティ再構成を用いる。図１６に於ける説明（a）はアレイ中に２個の故障したドライブを示す。説明（ｂ）は、隣接するドライブからコピーすることによって再構成される１次ストリップを示す。説明（ｃ）は、パリティ再構成を用い、１次ストリップＡ２、Ｂ１、Ｃｐ．．．が再構成されることを示す。説明（ｄ）は、隣接するスペアの２次ストリップＡ１、Ｂｐ、Ｃ５、．．．からコピーすることによって、隣接するハード・ディスク・ドライブ上に復旧される２次ストリップＡ’１、Ｂ’ｐ、Ｃ’５、．．．を示す。説明（ｄ）はまた２次ストリップＡ’２、Ｂ’１、Ｃ’ｐ、．．．が，隣接するスペアの２次ストリップＡ２、Ｂ１、Ｃｐ、．．．を、隣接するハード・ディスク・ドライブ上にコピーすることによって普及されることを示す。
【００６４】
本発明の幾つかの例を、ＲＡＩＤアレイ中の所与の数のディスクについてここで説明したが、１次のＲＡＩＤストライドの循環コピーを使用すると、基本ＲＡＩＤよりも高いドライブ故障耐久性（冗長度）を提供する。本発明の幾つかの例はまた最適の冗長度を得るための自己チューニング・プロセスを提供する。これはドライブ・フォールト・トレランスを基本ＲＡＩＤアレイよりも悪くないレベルに革新的に減じる。何故なら１次ＲＡＩＤ記憶が２次コピー（他の実施例では３次または他の数のコピー）にオーバーラップするからである。本発明の幾つかの例は、基本ＲＡＩＤシステムの場合よりも顧客データのもっと大きな自己保護を所与の数のディスクが提供するようなまた使用されるディスクのスペースの量が増えるにつれ自己保護をチューニングするような、そしてまた１またはそれ以上のドライブが故障したときに効果的な自己修復するようなオートノミック（自律的）ＲＡＩＤシステムを提供する。
【００６５】
ＲＡＩＤアレイに於ける所与の数のディスク・ドライブに対し、本発明の幾つかの例は、その上に基本ＲＡＩＤコードにより提供される冗長度記録を通じてＲＡＩＤアレイの効果的なドライブ・フォールト・トレランスを増すように、自由ディスク・スペースを活用する。あるセット数のアレイ・ドライブに対しては、各ＲＡＩＤコピーは基本ＲＡＩＤよりも１つ多いドライブ・フォールト・トレランスを提供する。例えば、ＲＡＩＤ５の基本コードを有する６個の部材のアレイに対しては、本発明が使用されないとき、１個よりも多くないドライブ部材が故障したときのみデータが復元されても良い。これに対し、循環ＲＡＩＤストリップの一つのコピーがある本発明の例では、２個のドライブが故障するときでさえ、データを復元することができる。循環ＲＡＩＤストリップの２個のコピーがセーブされる本発明の例では、３個のディスク故障が同時に生じる場合でさえ、データを復元することができる。
【００６６】
本発明の幾つかの例は、保護がもっとも必要なときであり、またもっとも利用可能な自由スペースがあるＲＡＩＤアレイの初期の利用中、一層高度なＲＡＩＤ保護を提供する。これは新しいディスク・アレイの初期の利用はデータ損失を受けやすい。何故なら、新しいハード・ディスク・ドライブ（ＨＤＤ）の乳児死亡率は、そのドライブが多くのパワー・オン時間（ＰＯＨ）稼動して来た後のＨＤＤ故障率よりも高いからである。
【００６７】
本発明の幾つかの例は、そのアレイの所与の数のディスクに対し基本ＲＡＩＤアレイの効果的な容量の１００％の使用を許容する。このことは、基本ＲＡＩＤコードのフォールト・トレランスに古い（顧客）データを徐々に曝すという代償をもたらす。このアレイ・ディスクのフォールト・トレランスはディスク・スペースの利用が増えるとともに単調減少するが、１次ＲＡＩＤのフォールト・トレランスより下になることは決してない。従って、データの保護は、常に少なくとも基本ＲＡＩＤコードの保護のレベルにはある。
【００６８】
本発明の幾つかの例では、最も古いデータで始まるデータの循環コピーは最終的には新しい（顧客）データによって重ね書きされる。従ってその１次データだけが残る。そのような１次データだけが残るデータのサブセットに対し、例えばＲＡＩＤ５はデータ復元のために一つのディスク故障のみを許容する。新しいデータによってまだ重ね書きされていない循環コピーに対するアレイ中のデータは、高いディスク・フォールト・トレランスをまだ有している。１次データのみが残っているデータのサブセットは、アレイの全てのデータ容量が使用されてしまうまで、そのアレイ中に追加の顧客データが記憶されるにつれ増えてゆく。ある例では、存在する２次コピーの位置にオペレーティング・システムが書き込みたいなら、且つまたそのディスクが一杯でないなら、記憶装置アダプタＤＡ１−８がその存在する２次コピーを他の位置に移すか、又は記憶装置を、以前に記憶されていた２次コピーを読み出したり復元したりすることなく、あらかじめ記憶位置を割り当てし直すかもしれない。
【００６９】
ＲＡＩＤ５に対する「単一ミラー」（ストリップごとの１回循環コピー）の保護を図１７に示す。具体的には、図１７は単一のミラーが使用される本発明の例に従う「オートノミックＲＡＩＤ５」に対し、任意の２個のハード・ディスク故障のために保護されるデータの割合（％）を示す。一般に、本発明の幾つかの例は「オートノミック顧客データ保護のためのＲＡＩＤ記憶」と呼ばれることもある。ＲＡＩＤ５とともに使用されるとき、本発明の幾つかの例は「オートノミックＲＡＩＤ５」と呼ばれることもある。図１７に示すように、利用可能なディスク・スペースの５０％が使用されてしまうまで、すべてのデータのために２のディスク・フォールト・トレランスが存在する。これに対し、基本ＲＡＩＤ５の故障保護は図１７のゼロ％の水平線によって表されている。従って、この単一のミラーの例は最大２のディスク・フォールト・トレランスを提供する。これは基本ＲＡＩＤ５の単一ディスク・フォールト・トレランスに対し顕著な改良である。
【００７０】
「二重ミラー」（各ストリップの２回循環コピー）のための保護を図１８に示す。具体的には、図１７は二重ミラーが使用されている本発明の実施例に従う「オートノミックＲＡＩＤ５」に対し任意の３のハード・ディスク・ドライブ故障からデータを保護する割合（％）を示す。図１８に示すように、おおよそ３３．３％の利用可能なディスク・スペースが使用されてしまうまで、３のディスク・フォールト・トレランスが全てのデータのために存在する。これに対し、基本ＲＡＩＤ５の故障保護は図１８の底部のゼロ％の水平線によって表される。従って、この二重ミラーの例は、最大３のディスク・フォールト・トレランスを提供する。これは基本ＲＡＩＤ５の単一ディスク・フォールト・トレランスを顕著に越える改良である。
【００７１】
本発明の幾つかの例は、１個若しくはそれ以上の故障のイベントにおいて再構成時間を顕著に減らすことによって、再構成中の（顧客）データ損失に対して、更なるＲＡＩＤ堅牢性を提供する。一例として、データ損失は１個若しくはそれ以上のストリップの損失やアレイ損失の結果として生じることがある（これはキルストリップ(killstrip)とも呼ばれる）。本発明の実施例により提供される２次コピーは、パリティ復元を介して喪失した１次データを復元するのをなくすか、故障の回数に依存して、また故障が隣接するドライブで起こるかどうかに依存して、１次データを復元するのに使用されるパリティ復元の回数の必要性を顕著に減らす。本発明の幾つかの実施例は再構成時間を減らす。何故なら、ストライド中の生き残っているドライブの夫々のストリップを読み出し、そして喪失したストリップを復元するようＸＯＲすることによって、ホット・スペース上に生き残っているディスクからストリップをコピーするのに必要な時間が、パリティ再構成を介してそれぞれの喪失したストリップを再構成するのに必要な時間よりもはるかに短いからである。
【００７２】
本発明の幾つかの例はまた、読み出しリクエストに応答し、ドライブのうちの一つが遅い場合、データを読み出すために、プリエンプト再構成よりも早い。またデータの読み出しが早くなる。何故なら、１次ストリップとともに、ストライド中の残っているデータ・ストリップの全てを読み出し、その読み出したものと、応答の遅いストリップ中のデータを再構成するためのパリティ・ストリップとをＸＯＲするよりも早く、その喪失したストリップ中のデータのコピーを、隣接するドライブから読み出せるからである。
【００７３】
ＩＩＩ．他の実施例
前述の開示で本発明の種々の実施例を示してきたが、ここで特許請求の範囲で規定した本発明の範囲から外れずに多様な変更や修正を為し得ることが当業者には明らかであろう。更に本発明の構成要素を説明や特許請求の範囲では単数形で説明しているかもしれないが、単数形に明示的に限定していない限り、複数形も意図していることを理解されたい。
【図面の簡単な説明】
【００７４】
【図１】本発明の実施例に従う記憶システムのハードウエア・コンポーネンツ及び相互接続を示すブロック図である。
【図２】本発明の実施例に従うコンピューティング装置のハードウエア・コンポーネンツ及び相互接続を示すブロック図である。
【図３】本発明の実施例に従う信号担持媒体の例である。
【図４】本発明の実施例に従うバックアップ・データのための動作シーケンスのフローチャートである。
【図５】本発明の実施例に従うストライド中のストリップの循環コピーを提供するためのマッピング・アルゴリズムである。
【図６】本発明の実施例に従うストライド中のストリップの循環コピーを提供するためのマッピング・テーブルである。
【図７】本発明の実施例に従うストライド中のストリップの２回循環コピーを提供するためのマッピング・アルゴリズムである。
【図８】本発明の実施例に従うストライド中のストリップの２つの循環コピーを提供するためのマッピング・テーブルである。
【図９】本発明の実施例に従う、確保されたＬＢＡ帯域マッピングのコピーである。
【図１０】本発明の実施例に従うストライド中のストリップの循環コピーを提供するためのＦＩＦＯアルゴリズム及び確保された帯域を用いるマッピング・テーブルである。
【図１１】本発明の実施例に従うバックアップ・データの動作シーケンスのフローチャートである。
【図１２】本発明の実施例に従うバックアップ・データの動作シーケンスのフローチャートである。
【図１３】本発明の実施例に従うディスク・アレイにデータ及びデータのコピーを記憶することを示す図である。
【図１４】本発明の実施例に従うディスク・アレイにデータを再構築することを示す図である。
【図１５】本発明の実施例に従うディスク・アレイにデータを再構築することを示す図である。
【図１６】本発明の実施例に従うディスク・アレイにデータを再構築することを示す図である。
【図１７】１回循環コピーを備えた本発明の実施例に従う任意の２個のハードディスク・ドライブ故障のために保護されたデータのパーセンテージを示すグラフである。
【図１８】２回循環コピーを備えた本発明の実施例に従う任意の３個のハードディスク・ドライブ故障のために保護されたデータのパーセンテージを示すグラフである。
【図１】
2007536658.tif 000003
【図２】
2007536658.tif 000004
【図３】
2007536658.tif 000005
【図４】
2007536658.tif 000006
【図５】
2007536658.tif 000007
【図６】
2007536658.tif 000008
【図７】
2007536658.tif 000009
【図８】
2007536658.tif 000010
【図９】
2007536658.tif 000011
【図１０】
2007536658.tif 000012
【図１１】
2007536658.tif 000013
【図１２】
2007536658.tif 000014
【図１３】
2007536658.tif 000015
【図１４】
2007536658.tif 000016
【図１５】
2007536658.tif 000017
【図１６】
2007536658.tif 000018
【図１７】
2007536658.tif 000019
【図１８】
2007536658.tif 000020
【国際調査報告】
2007536658.tif 000021
2007536658.tif 000022
2007536658.tif 000023