(57)【要約】  複数のストレージデバイス内でデータ冗長性を提供するシステム、方法、及びコンピュータプログラム製品を提供する。動作中に、ストレージコマンドが、第１データ冗長性方式に従ってデータ冗長性を提供するために受け取られる。さらに、ストレージコマンドは、第２データ冗長性方式に従ってデータ冗長性を提供するために変換される。さらに、変換されたストレージコマンドは、複数のストレージデバイス内でデータ冗長性を提供するために出力される。【選択図】  図１
2010511963.tif 000002
【特許請求の範囲】
【請求項１】
第１データ冗長性方式に従ってデータ冗長性を提供するためにストレージコマンドを受け取る工程と、
第２データ冗長性方式に従って前記データ冗長性を提供するために前記ストレージコマンドを変換する工程と、
複数のストレージデバイス内で前記データ冗長性を提供するために前記変換されたストレージコマンドを出力する工程と
を含む方法。
【請求項２】
前記第１データ冗長性方式が、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−１データ冗長性方式を含む、請求項１に記載の方法。
【請求項３】
前記第２データ冗長性方式が、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−５データ冗長性方式を含む、請求項１に記載の方法。
【請求項４】
前記第２データ冗長性方式が、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−６データ冗長性方式を含む、請求項１に記載の方法。
【請求項５】
前記ストレージデバイスが、機械的ストレージデバイスを含む、請求項１に記載の方法。
【請求項６】
前記機械的ストレージデバイスが、ディスクドライブを含む、請求項５に記載の方法。
【請求項７】
前記ストレージデバイスが、ソリッドステートストレージデバイスを含む、請求項１に記載の方法。
【請求項８】
前記ソリッドステートストレージデバイスが、フラッシュメモリを含む、請求項７に記載の方法。
【請求項９】
前記フラッシュメモリが、ＮＡＮＤフラッシュメモリを含む、請求項８に記載の方法。
【請求項１０】
前記ＮＡＮＤフラッシュメモリが、単一レベルセル（ＳＬＣ）ＮＡＮＤフラッシュメモリを含む、請求項９に記載の方法。
【請求項１１】
前記ＮＡＮＤフラッシュメモリが、マルチレベルセル（ＭＬＣ）ＮＡＮＤフラッシュメモリを含む、請求項９に記載の方法。
【請求項１２】
前記ソリッドステートメモリが、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含む、請求項７に記載の方法。
【請求項１３】
前記ストレージデバイスの電源の切断を検出する工程をさらに含む、請求項１に記載の方法。
【請求項１４】
前記電源の前記切断の検出に応じて、前記ストレージデバイスに電力を供給する工程をさらに含む、請求項１３に記載の方法。
【請求項１５】
少なくとも、前記電源の切断の結果としてデータ消失が生じない時点まで、前記ストレージデバイスに電力が供給される、請求項１４に記載の方法。
【請求項１６】
前記電力が、キャパシタを利用して供給される、請求項１５に記載の方法。
【請求項１７】
前記電力が、バッテリを利用して供給される、請求項１５に記載の方法。
【請求項１８】
前記ストレージデバイスへの書込みの回数を減らす工程をさらに含む、請求項１に記載の方法。
【請求項１９】
前記変換する工程が、前記減らす工程の後に実行される、請求項１８に記載の方法。
【請求項２０】
前記第１データ冗長性方式又は前記第２データ冗長性方式の一方が、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−１０データ冗長性方式、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−５０データ冗長性方式、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−６０データ冗長性方式、及びスクエアパリティ冗長性方式のうちの１つを含む、請求項１に記載の方法。
【請求項２１】
第１データ冗長性方式を利用してデータ冗長性を提供するためにストレージコマンドを受け取るコンピュータコードと、
第２データ冗長性方式を利用して前記データ冗長性を提供するために前記ストレージコマンドを変換するコンピュータコードと、
複数のストレージデバイス内で前記データ冗長性を提供するために前記変換されたストレージコマンドを出力するコンピュータコードと
を含む、コンピュータ読み取り可能な媒体上で実行される、コンピュータコード。
【請求項２２】
第１データ冗長性方式を利用してデータ冗長性を提供するように適合されたストレージコマンドを、第２データ冗長性方式を利用して前記データ冗長性を提供するように適合されたストレージコマンドに変換する回路
を備える装置。
【請求項２３】
前記回路に結合された複数のストレージデバイスをさらに備える、請求項２２に記載の装置。
【請求項２４】
複数のストレージデバイスへの書込みの回数を減らす工程と、
前記減らす工程の後に、データ冗長性方式を利用してデータ冗長性を提供する工程と、
を含む方法。
【請求項２５】
前記データ冗長性方式が、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）データ冗長性方式を含む、請求項２４に記載の方法。
【請求項２６】
前記データ冗長性方式が、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−５データ冗長性方式を含む、請求項２５に記載の方法。
【請求項２７】
前記データ冗長性方式が、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−６データ冗長性方式を含む、請求項２５に記載の方法。
【請求項２８】
前記ストレージデバイスが、機械的ストレージデバイスを含む、請求項２４に記載の方法。
【請求項２９】
前記機械的ストレージデバイスが、ディスクドライブを含む、請求項２８に記載の方法。
【請求項３０】
前記ストレージデバイスが、ソリッドステートストレージデバイスを含む、請求項２４に記載の方法。
【請求項３１】
前記ソリッドステートストレージデバイスが、フラッシュメモリを含む、請求項３０に記載の方法。
【請求項３２】
前記フラッシュメモリが、ＮＡＮＤフラッシュメモリを含む、請求項３１に記載の方法。
【請求項３３】
前記ＮＡＮＤフラッシュメモリが、単一レベルセル（ＳＬＣ）ＮＡＮＤフラッシュメモリを含む、請求項３２に記載の方法。
【請求項３４】
前記ＮＡＮＤフラッシュメモリが、マルチレベルセル（ＭＬＣ）ＮＡＮＤフラッシュメモリを含む、請求項３２に記載の方法。
【請求項３５】
前記ソリッドステートメモリが、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含む、請求項３０に記載の方法。
【請求項３６】
前記ストレージデバイスの電源の切断を検出する工程をさらに含む、請求項２４に記載の方法。
【請求項３７】
前記電源の前記切断の検出に応じて、前記ストレージデバイスに電力を供給する工程をさらに含む、請求項３６に記載の方法。
【請求項３８】
少なくとも、前記電源の前記切断の結果としてデータ消失が生じない時点まで、前記ストレージデバイスに電力が供給される、請求項３７に記載の方法。
【請求項３９】
前記電力が、キャパシタを利用して供給される、請求項３８に記載の方法。
【請求項４０】
前記電力が、バッテリを利用して供給される、請求項３８に記載の方法。
【請求項４１】
前記減らす工程の後に、データ冗長性方式を利用してデータ冗長性を提供することによって、ランダム化が回避される、請求項２４に記載の方法。
【請求項４２】
複数のストレージデバイスへの書込みの回数を減らすコンピュータコードと、
前記減らす工程の後に、データ冗長性方式を利用してデータ冗長性を提供するコンピュータコードと
を含む、コンピュータ読み取り可能な媒体上で実行される、コンピュータプログラム製品。
【請求項４３】
複数のストレージデバイスへの書込みの回数を減らし、前記減らす工程の後に、データ冗長性方式を利用してデータ冗長性を提供する回路
を備える装置。
【請求項４４】
前記回路に結合された複数のストレージデバイスをさらに備える、請求項４３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、データストレージに関し、より具体的には、ストレージデバイス内のデータ冗長性に関する。
【背景】
【０００２】
[0002]ストレージシステムは、現代のエンタープライズコンピューティングシステムの性能に関する最も制限的な態様の１つである。ハードドライブに基づくストレージの性能は、シーク時間と１／２回転の時間とによって決定される。性能は、シーク時間を減らし、回転待ち時間を減らすことによって高められる。しかし、ドライブが回転できる速さには限度がある。最高速の現代のドライブは、１５０００ｒｐｍに達しようとしている。
【０００３】
[0003]図１に、従来技術によるシステム１００を示す。システム１００では、少なくとも１つのコンピュータ１０２〜１０８が、ホストコントローラ１１０、１１２に結合される。ホストコントローラ１１０、１１２は、複数のディスク１１４〜１２０に結合される。
【０００４】
[0004]しばしば、システム１００は、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）−１として構成され、ディスク１１４〜１１６のミラーリングされた内容をディスク１１８〜１２０に格納する。ディスク１１４〜１１６は、ディスク１１８〜１２０によってミラーリングされると言われる。
【０００５】
[0005]コンピュータシステムの高められた信頼性は、ディスク１１４〜１１６、ホストコントローラ１１０、及びそれらの間の接続を二重化することによって達成される。したがって、信頼できるコンピュータシステムは、少なくとも、ディスク１１４〜１２０、ＲＡＩＤコントローラ１１０、１１２、コンピュータ１０２〜１０８、並びにそれらの間の接続の一つに障害があるときでも動作することができる。しかし、ストレージシステム性能は、それでも、システム１００を使用して不適切である場合がある。さらに、そのようなシステムの性能を高めることは、現在、コストがかかり、しばしば、実現可能ではない。
【０００６】
[0006]したがって、従来技術に関連する上記及び／又は他の問題に対処する必要がある。
【概要】
【０００７】
[0007]複数のストレージデバイス内でデータ冗長性を提供するシステム、方法、及びコンピュータプログラム製品を提供する。動作中に、ストレージコマンドが、第１データ冗長性方式に従ってデータ冗長性を提供するために受け取られる。さらに、ストレージコマンドは、第２データ冗長性方式に従ってデータ冗長性を提供するために変換される。さらに、変換されたストレージコマンドは、複数のストレージデバイス内でデータ冗長性を提供するために出力される。
【図面の簡単な説明】
【０００８】
【図１】従来技術によるシステムを示す図である。
【図２Ａ】一実施形態による、複数のストレージデバイス内でデータ冗長性を提供するシステムを示す図である。
【図２Ｂ】一実施形態による、複数のストレージデバイス内でデータ冗長性を提供するストレージシステムを示す図である。
【図３】一実施形態による、ディスクアセンブリを示す図である。
【図４】別の実施形態による、ディスクアセンブリを示す図である。
【図５】一実施形態による、冗長ディスクコントローラを動作させる方法を示す図である。
【図６】別の実施形態による、冗長ディスクコントローラを動作させる方法を示す図である。
【図７】別の実施形態による、冗長ディスクコントローラを動作させるシステムを示す図である。
【図８】さまざまな前の実施形態のさまざまなアーキテクチャ及び／又は機能性を実施できる例示的システムを示す図である。
【詳細な説明】
【０００９】
[0017]図２Ａに、一実施形態による、複数のストレージデバイス内でデータ冗長性を提供するシステム２８０を示す。図示されているように、システム２８０は、少なくとも１つのコンピュータ２８５〜２８８を含む。コンピュータ２８５〜２８８は、少なくとも１つのコントローラ２９０〜２９１と通信する。さらに図示されているように、コントローラ２９０〜２９１は、ストレージシステム２９２と通信し、ストレージシステム２９２は、複数のディスクコントローラ２９３〜２９４及び複数のストレージデバイス２９６〜２９９を含む。コントローラ２９０〜２９１が、別々に図示されているが、別の実施形態では、そのようなコントローラ２９０〜２９１を１つのユニットにしてもよいことに留意されたい。さらに、複数のディスクコントローラ２９３〜２９４は、各種実施形態において、１つのユニット又は独立した複数のユニットにすることができる。
【００１０】
[0018]動作中に、ストレージコマンドが、第１データ冗長性方式に従ってデータ冗長性を提供するために受け取られる。さらに、そのストレージコマンドは、第２データ冗長性方式に従ってデータ冗長性を提供するために変換される。さらに、変換されたストレージコマンドは、複数のストレージデバイス２９６〜２９９内でデータ冗長性を提供するために出力される。
【００１１】
[0019]この説明の文脈では、ストレージコマンドは、データを格納するかデータのストレージを容易にする任意のコマンド、命令、又はデータを指す。さらに、この説明の文脈では、データ冗長性方式は、システム内で冗長データ又はフォールトトレランスを提供する任意のタイプの方式を指す。たとえば、各種実施形態で、データ冗長性方式は、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）  ０データ冗長性方式、ＲＡＩＤ  １データ冗長性方式、ＲＡＩＤ  １０データ冗長性方式、ＲＡＩＤ  ３データ冗長性方式、ＲＡＩＤ  ４データ冗長性方式、ＲＡＩＤ  ５データ冗長性方式、ＲＡＩＤ  ５０データ冗長性方式、ＲＡＩＤ  ６データ冗長性方式、ＲＡＩＤ  ６０データ冗長性方式、スクエアパリティ（ｓｑｕａｒｅ  ｐａｒｉｔｙ）データ冗長性スキーマ、任意の非標準ＲＡＩＤデータ冗長性方式、任意のネストされたＲＡＩＤデータ冗長性方式、及び／又は上の定義を満足する任意の他のデータ冗長性方式を含むことができるが、これらに限定はされない。
【００１２】
[0020]一実施形態で、第１データ冗長性方式は、ＲＡＩＤ  １データ冗長性方式を含むことができる。別の実施形態で、第２データ冗長性方式は、ＲＡＩＤ  ５データ冗長性方式を含むことができる。別の実施形態で、第２データ冗長性方式は、ＲＡＩＤ  ６データ冗長性方式を含むことができる。
【００１３】
[0021]さらに、この説明の文脈で、複数のストレージデバイス２９６〜２９９は、任意のタイプのストレージデバイスを表すことができる。たとえば、さまざまな実施形態で、ストレージデバイス２９６〜２９９は、機械的ストレージデバイス（たとえば、ディスクドライブなど）、ソリッドステートストレージデバイス（たとえば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリなど）、及び／又は任意の他のストレージデバイスを含むことができるが、これらに限定はされない。ストレージデバイス２９６〜２９９がフラッシュメモリを含む場合に、そのフラッシュメモリは、単一レベルセル（ＳＬＣ）デバイス、マルチレベルセル（ＭＬＣ）デバイス、ＮＯＲフラッシュメモリ、ＮＡＮＤフラッシュメモリ、ＭＬＣ  ＮＡＮＤフラッシュメモリ、ＳＬＣ  ＮＡＮＤフラッシュメモリなどを含むことができるが、これらに限定はされない。
【００１４】
[0022]ここで、ユーザの望みに応じて前述のフレームワークを実施してもしなくてもよいさまざまなオプションのアーキテクチャ及び特徴に関し、より例示的な情報を示す。次の情報が、例示のために示され、いかなる形でも限定的と解釈されてはならないことに強く留意されたい。次の特徴のいずれをも、説明される他の特徴の排除を伴って又は伴わずにオプションで組み込むことができる。
【００１５】
[0023]図２Ｂに、一実施形態による、複数のストレージデバイス内でデータ冗長性を提供するストレージサブシステム２５０を示す。オプションとして、ストレージサブシステム２５０を、図２Ａの詳細の文脈で見ることができる。しかし、もちろん、ストレージサブシステム２５０を、任意の所望の環境の文脈で実施することができる。前述の定義を、この説明中にあてはめることができることにも留意されたい。
【００１６】
[0024]図示されているように、ストレージサブシステム２５０は、複数の主ストレージデバイス２３１〜２３２及び冗長情報を含むために記憶容量を増やすのに利用される少なくとも１つの追加ストレージデバイス２３３〜２３４を含む。ストレージサブシステム２５０のデータストレージの量は、複数の主ストレージデバイス２３１〜２３２のストレージ容量の合計と考えてよい。オプションとして、ストレージ容量を、追加ストレージデバイス２３３〜２３４を介して拡張することもできる。もちろん、一実施形態で、追加ストレージデバイス２３３〜２３４を、格納されたデータから計算される冗長情報の格納だけに使用することができる。
【００１７】
[0025]さらに図示されているように、第１ディスクコントローラ２１０は、少なくとも１つのポート２０１を含む。動作中に、ポート２０１のうちの少なくとも１つが、ストレージサブシステム２５０の第１ポートとして働くことができる。さらに、ポート２０１のうちの少なくとも１つが、ディスクコントローラバス２０３、電源接続２７５、及び第１ディスクコントローラ２１０をストレージデバイス２３１〜２３４の対応するバス２４１〜２４４に結合する内部接続２１１〜２１４への第１ディスクコントローラ２１０のポートとして働くことができる。
【００１８】
[0026]バス２０３は、第１ディスクコントローラ２１０を第２ディスクコントローラ２２０に結合する。動作中に、バス２０３を使用して、第２ディスクコントローラ２２０を用いて第１ディスクコントローラ２１０の動作を監視することができる。第２ディスクコントローラ２２０が、第１ディスクコントローラ２１０の障害を検出する時に、ディスクコントローラ２２０は、ディスクコントローラバス２０３を介して第１ディスクコントローラ２１０に切断要求を発行することによって、内部接続２１１〜２１４を対応するバス２４１〜２４４から切断することができる。
【００１９】
[0027]第１ディスクコントローラ２１０を第２ディスクコントローラ２２０に結合するバス２０３を、第１ディスクコントローラ２１０を使用して第２ディスクコントローラ２２０の動作を監視するのに使用することもできる。第１ディスクコントローラ２１０が、第２ディスクコントローラ２２０の障害を検出する時に、第１ディスクコントローラ２１０は、ディスクコントローラバス２０３を介して第２ディスクコントローラ２２０に切断要求を発行することによって、内部接続２２１〜２２４を対応するバス２４１〜２４４から切断することができる。
【００２０】
[0028]一実施形態で、第１ディスクコントローラ２１０は、内部不正動作又は第１ディスクコントローラ２１０に関連する不正動作を検出することができる。この場合に、第１ディスクコントローラ２１０は、内部不正動作が検出される時に接続２１１〜２１４を対応するバス２４１〜２４４から切断することができる。同様に、第２ディスクコントローラ２２０は、内部不正動作又は第２ディスクコントローラ２２０に関連する不正動作を検出することができる。この場合に、第２ディスクコントローラ２２０は、内部不正動作が検出される時に接続２２１〜２２４を対応するバス２４１〜２４４から切断することができる。
【００２１】
[0029]さらに、一実施形態で、第１ディスクコントローラ２１０及び第２ディスクコントローラ２２０は、ディスクコントローラバス２０３の障害を検出することができる。この場合に、第２ディスクコントローラ２２０は、接続２２１〜２２４を対応するバス２４１〜２４４から切断することができ、第１ディスクコントローラ２１０は、アクティブのままであってもよい。別の実施形態で、第１ディスクコントローラ２１０は、接続２１１〜２１４を対応するバス２４１〜２４４から切断することができ、第２ディスクコントローラ２２０は、アクティブのままであってもよい。さらに別の実施形態では、アクティブのままになるディスクコントローラが、インアクティブになるコントローラの接続を切断することができる。
【００２２】
[0030]バス２１１〜２１４及び２２１〜２２４の切断を、三状態回路、マルチプレクサ、又はバス２１１〜２１４及び２２１〜２２４を切断する任意の他の回路を介して実施できることに留意されたい。たとえば、一実施形態で、ディスクコントローラ２１０又はディスクコントローラ２２０に関連する三状態バスドライバをハイインピーダンス状態にすることによって、切断を達成することができる。別の実施形態で、ストレージデバイス２３１〜２３４の入力のマルチプレクサを制御することによって、切断を達成することができる。
【００２３】
[0031]さらに図示されているように、第２ディスクコントローラ２２０は、少なくとも１つのポート２０２を含む。動作中に、ポート２０２のうちの少なくとも１つが、ストレージサブシステム２５０の第２ポートとして働くことができる。さらに、ポート２０２のうちの少なくとも１つが、ディスクコントローラバス２０３、電源接続２７６、及び第２ディスクコントローラ２２０をストレージデバイス２３１〜２３４の対応するバス２４１〜２４４に結合する内部接続２２１〜２２４への第２ディスクコントローラ２２０のポートとして働くことができる。
【００２４】
[0032]単一の冗長ストレージデバイス２３３が、追加の冗長ストレージデバイス２３４なしで設けられる場合に、ストレージサブシステム２５０は、ストレージデバイス２３１〜２３３のいずれかの単一の障害の存在の下でデータの消失なしで動作することができる。一実施形態で、データ及び冗長情報の編成は、ＲＡＩＤ  ５に従うものとしてよい。別の実施形態で、データ及び冗長情報の編成は、ＲＡＩＤ  ６、ＲＡＩＤ  １０、ＲＡＩＤ  ５０、ＲＡＩＤ  ６０、スクエアパリティ冗長性スキーマなどに従うものとしてよい。
【００２５】
[0033]２つの冗長ストレージデバイス２３３、２３４が設けられる場合に、ストレージサブシステム２５０は、ストレージデバイス２３１〜２３４のいずれか２つの障害の存在の下でデータの消失なしで動作し続けることができる。動作時に、ポート２０１、２０２は、２つの従来の独立のミラーリングされたディスクとして、ストレージサブシステム２５０内に格納されたデータを提示することができる。この場合に、そのような従来の独立のミラーリングされたディスクは、ＲＡＩＤ  １、ＲＡＩＤ  １０、ＲＡＩＤ  ５０、ＲＡＩＤ  ６０、スクエアパリティ冗長性スキーマなどに見えてもよい。
【００２６】
[0034]ストレージサブシステム２５０への電力を、電気接続２５２を介して第１電源ユニット２５３に結合された第１電力コネクタ２５１を通じて供給することができる。ストレージサブシステム２５０への電力を、接続２６２を介して第２電源ユニット２６３に結合された第２電力コネクタ２６１を通じて供給することもできる。オプションとして、第１電源２５３の出力及び第２電源２６３の出力を加え合わせて、電力分配網２７０を介して、ディスクコントローラ２１０、２２０とストレージデバイス２３１〜２３４とに分配することができる。ストレージデバイス２３１〜２３４は、対応する接続２７１〜２７４を介して電力分配網２７０に結合される。ディスクコントローラ２１０、２２０は、電源接続２７５、２７６を介して電力分配網２７０に結合される。
【００２７】
[0035]電力コネクタ２５１への電力に障害が発生する場合に、ストレージサブシステム２５０への電力を、電力コネクタ２６１を通じて供給することができる。同様に、電力コネクタ２６１への電力に障害が発生する場合に、ストレージサブシステム２５０への電力を、電力コネクタ２５１を通じて供給することができる。接続２５２に障害が発生する場合に、ストレージサブシステム２５０への電力を、接続２６２を通じて供給することができる。接続２６２に障害が発生する場合に、ストレージサブシステム２５０への電力を、接続２５２を通じて供給することができる。
【００２８】
[0036]電源２５３に障害が発生する場合に、ストレージサブシステム２５０への電力を、電源２６３によって供給することができる。電源２６３に障害が発生する場合に、ストレージサブシステム２５０への電力を、電源２５３によって供給することができる。同様に、接続２５４に障害が発生する時に、ストレージサブシステム２５０への電力を、接続２６４を通じて供給することができる。同様に、接続２６４に障害が発生する時に、ストレージサブシステム２５０への電力を、接続２５４を通じて供給することができる。したがって、ストレージサブシステム２５０は、ストレージサブシステム２５０を動作不能にすることなく、さまざまなコンポーネントの障害を許容する。
【００２９】
[0037]一実施形態で、ディスクコントローラ２１０及び／又はディスクコントローラ２２０は、電源２５３、２６３への電力が切断されたことを検出する回路を含んでよい。さらに、そのような回路が、データの消失が発生しないように、ディスクコントローラ２１０、２２０の状態をストレージデバイス２３１〜２３４に保存するための電力を供給することができる。たとえば、電源２５３及び／又は電源２６３の切断を検出することができる。
【００３０】
[0038]この場合に、電力を、電源２５３、２６３の切断の検出に応答して、ストレージデバイス２３１〜２３４に供給することができる。電源２５３、２６３は、電源２５３、２６３の両方への電力が切断された後に、ストレージデバイス２３１〜２３４へのディスクコントローラ２１０、２２０の状態の書込みを完了できるようにするのに十分な時間にわたってストレージサブシステム２５０に電力を供給することができる。したがって、少なくとも電源２５３、２６３の切断の結果としてデータ消失が発生しない時点まで、電力をストレージデバイス２３１〜２３４に供給することができる。さまざまな実施形態で、電源２５３、２６３は、バッテリ、キャパシタ、並びに／又は電源２５３、２６３への電力が切断された時にストレージサブシステム２５０に電力を供給する任意の他のコンポーネントを含むことができる。
【００３１】
[0039]ストレージサブシステム２５０が、図２Ｂに示された任意の要素のどのような単一の障害の存在の下であっても、データの消失なしに動作し続けることができることに留意されたい。また、さまざまな実施形態で、ストレージデバイス２３１〜２３４を、機械的ストレージデバイス、非機械的ストレージデバイス、揮発性ストレージ、又は不揮発性ストレージとすることができることに留意されたい。さらに、さまざまな実施形態で、ストレージデバイス２３１〜２３４は、ＤＲＡＭ又はフラッシュストレージ（たとえば、ＳＬＣデバイス、ＭＬＣデバイス、ＮＯＲゲートフラッシュデバイス、ＮＡＮＤゲートフラッシュストレージデバイスなど）を含むことができるが、これらに限定はされない。
【００３２】
[0040]さらに、一実施形態で、ディスクコントローラ２１０、２２０を、２つの独立のチップとして実施することができる。別の実施形態で、ディスクコントローラ２１０、２２０を、１つのチップ上またダイ上で実施することができる。そのような実施態様を、たとえば、パッケージング時の影響に基づいて決定してよい。
【００３３】
[0041]図３に、一実施形態によるディスクアセンブリ３００を示す。オプションとして、ディスクアセンブリ３００を、図１〜２の機能性及びアーキテクチャの文脈で実施することができる。しかし、もちろん、ディスクアセンブリ３００を、任意の所望の環境の文脈で実施することができる。前述の定義を、この説明中にあてはめることができることにも留意されたい。
【００３４】
[0042]図示されているように、ディスクアセンブリ３００は、ディスクドライブ（図示せず）を含むプリント回路基板３０２、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）コネクタ３０４の一部としてプライマリポートを有する電源コネクタ、及び第２ＳＡＴＡコネクタ３０６の一部としてセカンダリポートを有する電源コネクタを含んでいる。一実施形態で、ディスクアセンブリ３００は、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）コネクタを含んでもよい。たとえば、ディスクアセンブリ３００は、ディスクドライブ（図示せず）を含むプリント回路基板３０２、ＳＡＳコネクタ３０４の一部としてプライマリポートを有する電源コネクタ、及び第２ＳＡＳコネクタ３０６の一部としてセカンダリポートを有する電源コネクタを含んでよい。
【００３５】
[0043]オプションとして、コネクタ３０４、３０６は、ディスクアセンブリ３００を、あるデータ冗長性構成として公開することができる。たとえば、ＳＡＴＡインターフェースは、ＲＡＩＤ  １モードで構成されたディスクの対としてディスクアセンブリ３００を公開することができる。別の実施形態で、ＳＡＳインターフェースは、ＲＡＩＤ  １モードで構成されたディスクの対としてディスクアセンブリ３００を公開することができる。さらに別の実施形態で、ＳＡＴＡ及びＳＡＳインターフェースは、ＲＡＩＤ  ０モードで構成された複数のディスクとしてディスクアセンブリ３００を公開することができる。
【００３６】
[0044]図４に、別の実施形態によるディスクアセンブリ４００を示す。オプションとして、ディスクアセンブリ４００を、図１〜３の機能性及びアーキテクチャの文脈で実施することができる。しかし、もちろん、ディスクアセンブリ４００を、任意の所望の環境の文脈で実施することができる。前述の定義を、この説明中にあてはまめることができることにも留意されたい。
【００３７】
[0045]図示されているように、ディスクアセンブリ４００は、複数のディスクアセンブリ４１０、４２０を含む。オプションとして、ディスクアセンブリ４１０、４２０は、図３からのディスクアセンブリ３００を含むことができる。この場合に、各ディスクアセンブリ４１０、４２０は、プリント回路基板及びコネクタ４３０を含むことができる。
【００３８】
[0046]オプションで、各ディスクアセンブリ４１０、４２０を、電気接続４０１を介して相互接続することができる。この場合に、電気接続４０１は、たとえば図２Ｂのディスクコントローラバス２０３などのディスクコントローラバスを表すことができる。動作中に、ディスクアセンブリ４００は、複数のディスク（たとえば、ディスクアセンブリ４１０及びディスクアセンブリ４２０）が従来のストレージ又はプライマリストレージ（たとえば、ディスクドライブなど）のスペースを占めることを可能にすることによって、システムのストレージ性能を高めることができる。
【００３９】
[0047]図５に、一実施形態による、冗長ディスクコントローラを動作させる方法５００を示す。オプションとして、この方法５００を、図１〜４の機能性及びアーキテクチャの文脈で実施することができる。しかし、もちろん、方法５００を、任意の所望の環境で実行することができる。前述の定義を、この説明中にあてはめることができることにも留意されたい。
【００４０】
[0048]図示されているように、ストレージシステム（たとえば、ディスクアセンブリなど）の電源を入れる。工程５１０を参照されたい。ストレージシステムのディスクコントローラを監視する。工程５２０を参照されたい。オプションとして、ディスクコントローラを別のディスクコントローラによって監視することができる。そのような監視には、２つのディスクコントローラの間のバス（たとえば、図２Ｂのディスクコントローラバス２０３など）を介するディスクコントローラの監視、及び／又はストレージシステムのストレージデバイスに対応するバス（たとえば、ストレージデバイス２３１〜２３４の対応するバス２４１〜２４４など）上の動きの監視を含めることができる。
【００４１】
[0049]ストレージシステムは、監視されるディスクコントローラに障害が発生したと判定されるまで、ディスクコントローラを監視して動作し続ける。工程５３０を参照されたい。監視されているディスクコントローラに障害が発生する場合に、その監視されているディスクコントローラを切断する。工程５４０を参照されたい。
【００４２】
[0050]一実施形態で、ディスクコントローラの切断を、２つのディスクコントローラの間のバス（たとえば、図２Ｂのディスクコントローラバス２０３など）を介して切断コマンドを発行することによって実施することができる。この場合に、切断コマンドは、監視されるディスクコントローラをストレージデバイスにリンクするバス（たとえば、図２Ｂの接続２１１〜２１４又は接続２２１〜２２４）を切断することを含むことができる。一実施形態で、複数のディスクコントローラを、他のディスクコントローラによって監視してよい。この場合に、複数のディスクコントローラの各ディスクコントローラを、監視されるディスクコントローラと考えることができる。
【００４３】
[0051]図６に、別の実施形態による、冗長ディスクコントローラを動作させる方法６００を示す。オプションとして、この方法６００を、図１〜５の機能性及びアーキテクチャの文脈で実施することができる。しかし、もちろん、方法６００を、任意の所望の環境で実行することができる。前述の定義を、この説明中にあてはめることができることにも留意されたい。
【００４４】
[0052]図示されているように、ストレージシステム（たとえば、ディスクアセンブリなど）の電源を入れる。工程６１０を参照されたい。ストレージシステムの少なくとも２つのディスクコントローラの間のリンクを監視する。工程６２０を参照されたい。一実施形態で、ディスクコントローラの間のリンクは、図２Ｂのディスクコントローラバス２０３を含むことができる。さらに、ディスクコントローラの間のリンクを、ディスクコントローラのうちの少なくとも１つ（たとえば、図２Ｂの第１のディスクコントローラ２１０及び第２のディスクコントローラ２２０など）によって監視することができる。
【００４５】
[0053]リンクに障害が発生したと判定されるまで、ストレージシステムは、リンクを監視して動作し続ける。工程６３０を参照されたい。リンクに障害が発生する場合に、１つのディスクコントローラを切断する。工程６４０を参照されたい。
【００４６】
[0054]一実施形態で、切断は、ディスクコントローラをストレージデバイスにリンクするバス（たとえば、図２Ｂの接続２１１〜２１４又は接続２２１〜２２４など）を切断することを含むことができる。この場合に、切断されるコントローラに関連するポートによって受け取られるコマンドは、処理されないものとすることができる。一例として、２つのディスクコントローラのうちの第２のディスクコントローラは、第１のディスクコントローラ及び第２のディスクコントローラの間のリンクの障害時に切断され得る。この場合に、第１コントローラは、動作し続けることができ、第２ディスクコントローラのポートからのコマンドは、処理されなくてもよい。
【００４７】
[0055]図７に、別の実施形態による、冗長ディスクコントローラを動作させるシステム７００を示す。オプションとして、システム７００を、図１〜６の機能性及びアーキテクチャの文脈で実施することができる。しかし、もちろん、システム７００を、任意の所望の環境で実施することができる。前述の定義に、この説明中にあてはめることができることにも留意されたい。
【００４８】
[0056]図示されているように、少なくとも１つのコンピュータ７０２〜７０６が設けられる。コンピュータ７０２〜７０６は、複数のＲＡＩＤコントローラ７１２〜７１４に結合される。コントローラ７１２〜７１４は、複数のストレージデバイス７１６〜７２２と通信する。そのような通信には、ストレージデバイス７１６〜７２２に関連するポートを利用することを含めることができる。
【００４９】
[0057]システム７００の信頼性は、ドライブ内冗長性を有するストレージデバイス７１６〜７２２（たとえば、図２Ｂのストレージシステム２５０）を使用することによって達成することができる。さらに、すべての接続（たとえば、バスなど）を二重化して、システム７００の信頼性を保証することができる。オプションとして、ストレージデバイス７１６〜７２２が、それぞれ、デバイスあたり２つのポートを含み、単一ポートを有するストレージデバイスの使用と比較して２倍の帯域幅を提供することができる。さらに、各ストレージデバイス７１６〜７２２は、ＲＡＩＤ  ５、ＲＡＩＤ  ６、ＲＡＩＤ  １０、ＲＡＩＤ  ５０、ＲＡＩＤ  ６０、スクエアパリティ冗長性スキーマなどの冗長性システムを利用することによって、２台のディスクをシミュレートすることができる。
【００５０】
[0058]オプションとして、書込減少論理７０８〜７１０を利用して、ストレージデバイス７１６〜７２２への書込みの回数を減らすことができる。この場合に、データ冗長性を提供するためのストレージコマンドの変換は、減少の後に実行することができる。たとえば、ストレージコマンドを、コントローラ７１２〜７１４の第１データ冗長性方式（たとえば、ＲＡＩＤ  ５、ＲＡＩＤ  ６、ＲＡＩＤ  １０、ＲＡＩＤ  ５０、ＲＡＩＤ  ６０、スクエアパリティ冗長性スキーマなど）に従ってデータ冗長性を提供するために受け取ることができる。
【００５１】
[0059]次に、書込減少論理７０８〜７１０を利用して、ストレージデバイス７１６〜７２２への書込みの回数を減らすことができる。次に、ストレージコマンドを、ストレージデバイス７１６〜７２２に関連する第２データ冗長性方式に従ってデータ冗長性を提供するために変換する（たとえば、回路によって）ことができる。一実施形態で、第２データ冗長性方式は、第１データ冗長性方式と同一（たとえば、ＲＡＩＤ  ５、ＲＡＩＤ  ６、ＲＡＩＤ  １０、ＲＡＩＤ  ５０、ＲＡＩＤ  ６０、スクエアパリティ冗長性スキーマなど）とすることができる。別の実施形態で、第２データ冗長性方式は、第１データ冗長性方式と異なるもの（たとえば、ＲＡＩＤ  １、ＲＡＩＤ  ６、ＲＡＩＤ  １０、ＲＡＩＤ  ５０、ＲＡＩＤ  ６０、スクエアパリティ冗長性スキーマなど）とすることができる。
【００５２】
[0060]一実施形態で、書込減少論理７０８〜７１０を利用して、第１データ冗長性方式に従ってデータ冗長性を提供するために受け取られたストレージコマンドを、第２データ冗長性方式と互換のフォーマットにフォーマットすることができる。厳密にはオプションとして、ＲＡＩＤコントローラ７１２〜７１４は、ストレージデバイス７１６〜７２２の文脈で説明したドライブ内冗長性を有するシステムを含むことができる。この形で、ストレージデバイス７１６〜７２２への書込みの回数を減らすことができる。したがって、ストレージコマンドを、書込みの回数を減らした後に、ストレージデバイス７１６〜７２２に関連する第２データ冗長性方式に従ってデータ冗長性を提供するために変換することができる。この形で、データのランダム化を回避することができる。
【００５３】
[0061]図８に、前述のさまざまな実施形態のさまざまなアーキテクチャ及び／又は機能性を実施できる例示的システム８００を示す。図示されているように、システム８００は、通信バス８０２に接続された少なくとも１つの主処理装置８０１を含んで提供される。システム８００は、メインメモリ８０４をも含む。制御論理（ソフトウェア）及びデータが、メインメモリ８０４に格納され、メインメモリ８０４は、ランダムアクセスメモリ（ＲＡＭ）の形をとることができる。
【００５４】
[0062]システム８００は、グラフィックスプロセッサ８０６及びディスプレイ８０８すなわちコンピュータモニタをも含む。一実施形態で、グラフィックスプロセッサ８０６は、複数のシェーダモジュール、ラスタライゼーションモジュールなどを含むことができる。前述のモジュールのそれぞれを、グラフィックス処理ユニット（ＧＰＵ）を形成するために単一の半導体プラットフォーム上に配置することさえできる。
【００５５】
[0063]この説明では、単一の半導体プラットフォームが、ただ一つの単位の半導体ベースの集積回路又はチップを指すことができる。その意味での単一の半導体プラットフォームが、オンチップ動作をシミュレートする高められた接続性を有するマルチチップモジュールをも指すことができ、従来の中央処理装置（ＣＰＵ）及びバス実施態様の利用に対する実質的な改善を行うことができることに留意されたい。もちろん、さまざまなモジュールを、ユーザの望みに従って、別々に又は半導体プラットフォームのさまざまな組合せで配置することもできる。
【００５６】
[0064]システム８００は、二次ストレージ８１０をも含むことができる。二次ストレージ８１０は、たとえば、ハードディスクドライブ及び／又は、フロッピディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどを表すリムーバブルストレージドライブを含む。リムーバブルストレージドライブは、周知の形でリムーバブルストレージユニットから読み取り、及び／又はこれに書き込む。
【００５７】
[0065]コンピュータプログラム、又はコンピュータ制御論理アルゴリズムを、メインメモリ８０４及び／又は二次ストレージ８１０に格納することができる。そのようなコンピュータプログラムは、実行された時に、システム８００がさまざまな機能を実行することを可能にする。メモリ８０４、ストレージ８１０、及び／又は任意の他のストレージは、コンピュータ読み取り可能な媒体のあり得る例である。
【００５８】
[0066]一実施形態で、さまざまな前の図面のアーキテクチャ及び／又は機能性を、主処理装置８０１、グラフィックスプロセッサ８０６、二次ストレージ８１０、主処理装置８０１とグラフィックスプロセッサ８０６との両方の機能の少なくとも一部が可能な集積回路（図示せず）、チップセット（すなわち、関連する機能を実行するユニットとして働くように設計され、そのようなユニットとして販売される集積回路のグループなど）、並びに／或いはさらに言えば任意の他の集積回路の文脈で実施することができる。
【００５９】
[0067]さらに、前述のさまざまな図面のアーキテクチャ及び／又は機能性を、一般的コンピュータシステム、回路基板システム、エンターテイメント目的専用のゲーム機システム、特定用途向けシステム、及び／又は任意の他の所望のシステムの文脈で実施することができる。たとえば、システム８００は、デスクトップコンピュータ、ラップトップコンピュータ、及び／又は任意の他のタイプの論理の形をとることができる。さらに、システム８００は、携帯情報端末（ＰＤＡ）デバイス、携帯電話機デバイス、テレビジョンなどを含むがこれらに限定はされないさまざまな他のデバイスの形をとることができる。
【００６０】
[0068]さらに、図示されてはいないが、システム８００を、通信のためにネットワーク（たとえば、遠隔通信ネットワーク、ローカルエリアネットワーク（ＬＡＮ）、無線ネットワーク、インターネットなどの広域ネットワーク（ＷＡＮ）、ピアツーピアネットワーク、ケーブルネットワークなど）に結合することができる。
【００６１】
[0069]さまざまな実施形態を上で説明したが、これらが、限定ではなく例としてのみ提供されたことを理解されたい。したがって、好ましい実施形態の広がり及び範囲は、上で説明された例示的実施形態のいずれかによって限定されるのではなく、添付の特許請求の範囲及びその同等物に従ってのみ定義されなければならない。
【図１】
2010511963.tif 000003
【図２Ａ】
2010511963.tif 000004
【図２Ｂ】
2010511963.tif 000005
【図３】
2010511963.tif 000006
【図４】
2010511963.tif 000007
【図５】
2010511963.tif 000008
【図６】
2010511963.tif 000009
【図７】
2010511963.tif 000010
【図８】
2010511963.tif 000011
【国際調査報告】
2010511963.tif 000012