(57)【要約】【課題】費用及び複雑度を減らしながら、データの保護機能を搭載したストレージシステムを提供する。【解決手段】本発明によるストレージシステムは、ＦＰＧＡに連結されたソリッドステートドライブの第１グループを備え、ＦＰＧＡは、データ保護の構成によりＳＳＤの第１グループへの、及びＳＳＤの第１グループからの入力／出力要請を管理し、データ保護の構成によりパリティービットを生成し、ソリッドステートドライブの第１グループからのパリティービットを少なくとも一つのパリティーソリッドステートドライブに格納する第１データ保護コントローラーを含む。【選択図】図１
2019153308.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムであって、
ソリッドステートドライブの第１グループと、
前記ソリッドステートドライブの第１グループに連結された第１ＦＰＧＡ（フィールドプラグラマブルゲートアレイ）と、を備え、
前記第１ＦＰＧＡは、第１データ保護コントローラーを含み、
前記第１データ保護コントローラーは、
データ保護の構成に従って、前記ソリッドステートドライブの第１グループへの、及び前記ソリッドステートドライブの第１グループからの入力／出力要請を管理し、
前記データ保護の構成に従って、パリティービットを生成し、
前記パリティービットを、前記ソリッドステートドライブの第１グループから少なくとも一つのパリティーソリッドステートドライブに格納することを特徴とするストレージシステム。
【請求項２】
高速バスを介して前記第１ＦＰＧＡに連結されたプロセッサと、
前記高速バスを介して前記第１ＦＰＧＡに連結されたＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）と、をさらに含み、
前記ＢＭＣは、前記データ保護の構成を提供することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
高速バスを介して前記第１ＦＰＧＡに連結されたプロセッサと、
低速バスを介して前記第１ＦＰＧＡに連結されたＢＭＣと、をさらに含み、
前記ＢＭＣは、前記データ保護の構成を提供することを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記第１ＦＰＧＡを前記ソリッドステートドライブの第１グループに連結する第１スイッチをさらに含むことを特徴とする請求項１に記載のストレージシステム。
【請求項５】
ソリッドステートドライブの第２グループと、
第２スイッチによって前記ソリッドステートドライブの第２グループに連結された第２ＦＰＧＡと、をさらに含み、
前記第２ＦＰＧＡは、第２データ保護コントローラーを含み、
前記第１ＦＰＧＡ及び前記第２ＦＰＧＡは、前記第１スイッチと前記第２スイッチとの間の連結によって連結されることを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記第１データ保護コントローラーは、前記第１スイッチ及び前記第２スイッチを介して前記第２データ保護コントローラーに複製データを伝送することを特徴とする請求項５に記載のストレージシステム。
【請求項７】
前記第１データ保護コントローラーは、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）コントローラーを含むことを特徴とする請求項１に記載のストレージシステム。
【請求項８】
前記第１データ保護コントローラーは、イレイジャーコード（ｅｒａｓｕｒｅ  ｃｏｄｅ）コントローラーを含むことを特徴とする請求項１に記載のストレージシステム。
【請求項９】
ストレージシステムであって、
ソリッドステートドライブの第１グループと、
ソリッドステートドライブの第２グループと、
前記ソリッドステートドライブの第１グループに連結され、第１ＲＡＩＤコントローラーを含む第１ＦＰＧＡ（フィールドプログラマブルゲートアレイ）と、
前記ソリッドステートドライブの第２グループに連結され、第２ＲＡＩＤコントローラーを含む第２ＦＰＧＡと、を備え、
前記第１及び第２ＦＰＧＡは、
データ保護の構成に従って、前記ソリッドステートドライブの前記第１及び第２グループへの、及び前記ソリッドステートドライブの前記第１及び第２グループからの入力／出力要請を管理し、
前記データ保護の構成に従って、格納されたデータに対するパリティービットを生成し、
前記パリティービットを、前記ソリッドステートドライブの前記第１グループから少なくとも一つのパリティーソリッドステートドライブに格納し、
前記ソリッドステートドライブの前記第１グループを前記ソリッドステートドライブの前記第２グループに複製することを特徴とするストレージシステム。
【請求項１０】
バスを介して前記第１ＦＰＧＡ及び前記第２ＦＰＧＡに連結されたプロセッサと、
前記バスを介して前記第１ＦＰＧＡ及び前記第２ＦＰＧＡに連結されたＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）と、を含み、
前記ＢＭＣは、前記データ保護の構成を提供することを特徴とする請求項９に記載のストレージシステム。
【請求項１１】
前記バスは、ＰＣＩｅ（登録商標）バスを含むことを特徴とする請求項１０に記載のストレージシステム。
【請求項１２】
前記第１ＦＰＧＡを前記ソリッドステートドライブの前記第１グループに連結する第１ＰＣＩｅ（登録商標）スイッチと、
前記第２ＦＰＧＡを前記ソリッドステートドライブの前記第２グループに連結する第２ＰＣＩｅ（登録商標）スイッチと、を含み、
前記第１及び第２ＰＣＩｅ（登録商標）スイッチは、前記第１ＦＰＧＡを前記第２ＦＰＧＡに連結することを特徴とする請求項９に記載のストレージシステム。
【請求項１３】
前記データ保護の構成は、ハイブリッドＲＡＩＤ構成を含むことを特徴とする請求項９に記載のストレージシステム。
【請求項１４】
ストレージシステムであって、
ソリッドステートドライブの第１グループと、
前記ソリッドステートドライブの第１グループに連結された第１ＦＰＧＡ（フィールドプログラマブルゲートアレイ）と、
高速バスを介して前記第１ＦＰＧＡに連結されたプロセッサと、
低速バスを介して前記第１ＦＰＧＡに連結されて、前記第１ＦＰＧＡにデータ保護の構成を提供するＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）と、を備え、
前記第１ＦＰＧＡは、第１データ保護コントローラーを含み、
前記第１データ保護コントローラーは、
前記データ保護の構成に従って、前記ソリッドステートドライブの第１グループへの、及び前記ソリッドステートドライブの第１グループからの入力／出力要請を管理し、
前記データ保護の構成に従って、前記ソリッドステートドライブの第１グループに格納されたデータに対するパリティービットを生成し、
前記パリティービットを、前記ソリッドステートドライブの第１グループから少なくとも一つのパリティーソリッドステートドライブに格納することを特徴とするストレージシステム。
【請求項１５】
前記第１データ保護コントローラーは、ＲＡＩＤコントローラーを含むことを特徴とする請求項１４に記載のストレージシステム。
【請求項１６】
前記データ保護の構成は、ＲＡＩＤ１、ＲＡＩＤ５、又はＲＡＩＤ６構成の中の少なくとも一つを含むことを特徴とする請求項１５に記載のストレージシステム。
【請求項１７】
前記第１データ保護コントローラーは、前記ソリッドステートドライブの第１グループの第１部分にデータをストライプ（ｓｔｒｉｐｅ）し、前記ソリッドステートドライブの第１グループの第２部分に、前記データによるイレイジャーコード（ｅｒａｓｕｒｅ  ｃｏｄｅ）を生成するイレイジャーコーディングコントローラーを含むことを特徴とする請求項１４に記載のストレージシステム。
【請求項１８】
ソリッドステートドライブの第２グループと、
前記高速バスを介して前記プロセッサに連結され、前記低速バスを介して前記ＢＭＣに連結され、そして前記ソリッドステートドライブの第２グループに連結された第２ＦＰＧＡと、をさらに備え、
前記第２ＦＰＧＡは、第２データ保護コントローラーを含み、
前記第２データ保護コントローラーは、
前記データ保護の構成に従って、前記ソリッドステートドライブの第２グループへの、及び前記ソリッドステートドライブの第２グループからの入力／出力要請を管理し、
前記データ保護の構成に従って、前記ソリッドステートドライブの第２グループに格納されたデータに対するパリティービットを生成し、
前記パリティービットを、前記ソリッドステートドライブの第２グループから少なくとも一つのパリティーソリッドステートドライブに格納することを特徴とする請求項１４に記載のストレージシステム。
【請求項１９】
ソリッドステートドライブの第２グループと、
前記第１ＦＰＧＡを第１ダウンストリームＰＣＩｅ（登録商標）スイッチ及び第２ダウンストリームＰＣＩｅ（登録商標）スイッチに連結する第１ＰＣＩｅ（登録商標）スイッチと、をさらに備え、
前記第１ダウンストリームＰＣＩｅ（登録商標）スイッチは、前記ソリッドステートドライブの第１グループに連結されて、前記ソリッドステートドライブの第１グループを前記第１ＰＣＩｅ（登録商標）スイッチを介して前記第１ＦＰＧＡに連結し、
前記第２ダウンストリームＰＣＩｅ（登録商標）スイッチは、前記ソリッドステートドライブの第２グループに連結されて、前記ソリッドステートドライブの第２グループを前記第１ＰＣＩｅ（登録商標）スイッチを介して前記第１ＦＰＧＡに連結することを特徴とする請求項１４に記載のストレージシステム。
【請求項２０】
前記データ保護の構成は、ハイブリッドＲＡＩＤ構成を含むことを特徴とする請求項１４に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＶＭｅ（登録商標）ソリッドステートドライブ（ＳＳＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、及びＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）に関する。
【背景技術】
【０００２】
データの急速な成長は、これに対応するデータセンタの成長及びクラウドコンピューティングの使用の増加をもたらしている。１Ｕ及び２Ｕサーバーは、有限のデータセンタ空間の使用を最大化するために、急激に普及している。クラウドコンピューティングを支援するには、データセンタが容易なシステム構成を許容しながら、高いレベルの信頼度を維持することが必要である。多くの事例において、クラウドコンピューティングは、比較的高性能なサーバーの使用を含み、高性能サーバーのそれぞれは、多数の仮想機械を駆動する。仮想機械は、自身が動作するサーバーの資源を分割する。
【０００３】
ＲＡＩＤは、データの保護を提供し、全体的なシステム性能を向上するための重要な道具である。今日のＮＶＭｅ（登録商標）に基づくＳＳＤでＲＡＩＤを具現するには、一般的に、外付け型ＰＣＩｅ（登録商標）アドインカード（ＡＩＣ：ａｄｄ−ｉｎ  ｃａｒｄ）（例えば、ＲＡＩＤコントローラー）を使用する必要がある。ＡＩＣを１Ｕ及び２Ｕサーバーに追加することは、ＰＣＩｅ（登録商標）カードの標準フォームファクターの物理的制限や、利用可能な連結（例えば、Ｕ．２連結）の数が限定されることが問題になる。例えば、各ＲＡＩＤコントローラーは、４つのＮＶＭｅ（登録商標）ＳＳＤを支援するように構成される。通常の２Ｕシャーシは、２４個のＮＶＭｅ（登録商標）ＳＳＤを含み、言い換えると、６つのＡＩＣを必要とし、６つのＲＡＩＤドメインを生成する。これらのＡＩＣ及びドメインの包含は、全体的な費用（例えば、ハードウエア費用及び電力消費）を増加させ、システムを構成して、使用する複雑度を増大させる。
【０００４】
ＲＡＩＤアドインカードを１Ｕシャーシに追加することは、空間及び複雑度において追加的な問題を提起する。例えば、限定された数のＲＡＩＤアドインカードのみが１Ｕシャーシに物理的に追加される。従って、全てのドライブがＲＡＩＤ設定で構成されるようにする唯一の方法は、完全にソフトウェアに基づくシステムを使用するか、又はハードウェア及びソフトウェアに基づいたＲＡＩＤの組み合わせを使用することである。このような設定は、ともに性能の低下及び複雑度の増大を誘発する。
【０００５】
イレイジャーコーディング（ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）は、その設定性（ｃｏｎｆｉｇｕｒａｂｉｌｉｔｙ）のために、急激に一般化されているもう一つのデータ保護技術である。イレイジャーコーディングは、データが複数のより小さなエンコーディングされたブロックに分割されるようにし、元のデータは、エンコーディングされたブロックの部分集合から復元される。システム管理者は、データがいくつのピース（ｐｉｅｃｅ）に分割されるか、そしてデータの破損が検出された後に元のデータを復元するのに必要なピース（例えば、パリティー）の数を定義する。ストレージシステムにおいて、ピースは対応するドライブに分散される。例えば、イレイジャーコードが１０／１６システムとして構成されると、データは１６個のピースに分割され、１０個のピースを利用して再構成される。ストレージシステムは、１６個のピースを１６個のドライブ／ノードなどに分散させる。イレイジャーコーディングは向上した柔軟性を提供するが、演算に費用がかかり、また追加のネットワーク使用を誘発する。さらに、イレイジャーコーディングを具現することは、システム構成の複雑度をより増加させる。
【０００６】
上記の情報は、本明細書における実施形態の背景の理解向上のためのものであり、先行技術を形成しない情報を含む。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第７１１０３０１号明細書
【特許文献２】米国特許第８７６２６４８号明細書
【特許文献３】米国特許第９２２３６９３号明細書
【特許文献４】米国特許第９３０４９０２号明細書
【特許文献５】米国特許第９４１７８２１号明細書
【特許文献６】米国特許第９４５４４９２号明細書
【特許文献７】米国特許第９５７５９０２号明細書
【特許文献８】米国特許第９８８７００８号明細書
【特許文献９】米国特許出願公開第２００４／０１７７２１８号明細書
【特許文献１０】米国特許公開第２０１１／００１０４９９号明細書
【特許文献１１】米国特許公開第２０１１／０１６１５６０号明細書
【特許文献１２】米国特許公開第２０１４／０１８９２１２号明細書
【特許文献１３】米国特許公開第２０１５／０１６０８７１号明細書
【特許文献１４】米国特許公開第２０１７／０１０２９５２号明細書
【特許文献１５】米国特許公開第２０１７／０１５５５７３号明細書
【特許文献１６】米国特許公開第２０１８／００８２０６６号明細書
【特許文献１７】国際公開第２００８／０７０１９１号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、費用及び複雑度を減らしながら、データの保護機能を備えたストレージシステムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するためになされた本発明の一態様によるストレージシステムは、ソリッドステートドライブの第１グループと、前記ソリッドステートドライブの第１グループに連結された第１ＦＰＧＡ（フィールドプラグラマブルゲートアレイ）と、を備え、前記第１ＦＰＧＡは、第１データ保護コントローラーを含み、前記第１データ保護コントローラーは、データ保護の構成に従って、前記ソリッドステートドライブの第１グループへの、及び前記ソリッドステートドライブの第１グループからの入力／出力の要請を管理し、前記データ保護の構成に従って、パリティービットを生成し、前記パリティービットを、前記ソリッドステートドライブの第１グループから少なくとも一つのパリティーソリッドステートドライブに格納することを特徴とする。
【００１０】
前記ストレージシステムは、高速バスを介して前記第１ＦＰＧＡに連結されたプロセッサと、前記高速バスを介して前記第１ＦＰＧＡに連結されたＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）と、をさらに含み、前記ＢＭＣは、前記データ保護の構成を提供し得る。
また、前記ストレージシステムは、高速バスを介して前記第１ＦＰＧＡに連結されたプロセッサと、低速バスを介して前記第１ＦＰＧＡに連結されたＢＭＣと、をさらに含み、前記ＢＭＣは、前記データ保護の構成を提供し得る。
【００１１】
前記ストレージシステムは、前記第１ＦＰＧＡを前記ソリッドステートドライブの第１グループに連結する第１スイッチをさらに含み得る。
また、前記ストレージシステムは、ソリッドステートドライブの第２グループと、第２スイッチによって前記ソリッドステートドライブの第２グループに連結された第２ＦＰＧＡと、をさらに含み、前記第２ＦＰＧＡは第２データ保護コントローラーを含み、前記第１ＦＰＧＡ及び前記第２ＦＰＧＡは、前記第１スイッチと前記第２スイッチとの間の連結によって連結され得る。
【００１２】
前記第１データ保護コントローラーは、前記第１スイッチ及び前記第２スイッチを介して前記第２データ保護コントローラーに複製データを伝送し得る。
前記第１データ保護コントローラーは、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）コントローラーを含み得る。
前記第１データ保護コントローラーは、イレイジャーコード（ｅｒａｓｕｒｅ  ｃｏｄｅ）コントローラーを含み得る。
【００１３】
上記目的を達成するためになされた本発明の他の態様によるストレージシステムは、ソリッドステートドライブの第１グループと、ソリッドステートドライブの第２グループと、前記ソリッドステートドライブの第１グループに連結され、第１ＲＡＩＤコントローラーを含む第１ＦＰＧＡ（フィールドプログラマブルゲートアレイ）と、前記ソリッドステートドライブの第２グループに連結され、第２ＲＡＩＤコントローラーを含む第２ＦＰＧＡと、を備え、前記第１及び第２ＦＰＧＡは、データ保護の構成に従って、前記ソリッドステートドライブの前記第１及び第２グループへの、及び前記ソリッドステートドライブの前記第１及び第２グループからの入力／出力要請を管理し、前記データ保護の構成に従って、格納されたデータに対するパリティービットを生成し、前記パリティービットを、前記ソリッドステートドライブの前記第１グループから少なくとも一つのパリティーソリッドステートドライブに格納し、前記ソリッドステートドライブの前記第１グループを前記ソリッドステートドライブの前記第２グループに複製することを特徴とする。
【００１４】
前記ストレージシステムは、バスを介して前記第１ＦＰＧＡ及び前記第２ＦＰＧＡに連結されたプロセッサと、前記バスを介して第１ＦＰＧＡ及び前記第２ＦＰＧＡに連結されたＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）と、を含み、前記ＢＭＣは、前記データ保護の構成を提供し得る。
前記バスは、ＰＣＩｅ（登録商標）バスを含むことが好ましい。
【００１５】
前記ストレージシステムは、前記第１ＦＰＧＡを前記ソリッドステートドライブの前記第１グループに連結する第１ＰＣＩｅ（登録商標）スイッチと、前記第２ＦＰＧＡを前記ソリッドステートドライブの前記第２グループに連結する第２ＰＣＩｅ（登録商標）スイッチと、を含み、前記第１及び第２ＰＣＩｅ（登録商標）スイッチは、前記第１ＦＰＧＡを前記第２ＦＰＧＡに連結し得る。
前記データ保護の構成は、ハイブリッドＲＡＩＤ構成を含むことが好ましい。
【００１６】
上記目的を達成するためになされた本発明のさらに他の態様によるストレージシステムは、ソリッドステートドライブの第１グループと、前記ソリッドステートドライブの第１グループに連結された第１ＦＰＧＡ（フィールドプログラマブルゲートアレイ）と、高速バスを介して第１ＦＰＧＡに連結されたプロセッサと、低速バスを介して第１ＦＰＧＡに連結されて、前記第１ＦＰＧＡにデータ保護の構成を提供するＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）と、を備え、前記第１ＦＰＧＡは、第１データ保護コントローラーを含み、前記第１データ保護コントローラーは、前記データ保護の構成に従って、前記ソリッドステートドライブの第１グループへの、及び前記ソリッドステートドライブの第１グループからの入力／出力要請を管理し、前記データ保護の構成に従って、前記ソリッドステートドライブの第１グループに格納されたデータに対するパリティービットを生成し、前記パリティービットを、前記ソリッドステートドライブの第１グループから少なくとも一つのパリティーソリッドステートドライブに格納することを特徴とする。
【００１７】
前記第１データ保護コントローラーは、ＲＡＩＤコントローラーを含み得る。
前記データ保護の構成は、ＲＡＩＤ１、ＲＡＩＤ５、又はＲＡＩＤ６構成の中の少なくとも一つを含むことが好ましい。
前記第１データ保護コントローラーは、前記ソリッドステートドライブの第１グループの第１部分にデータをストライプ（ｓｔｒｉｐｅ）し、前記ソリッドステートドライブの第１グループの第２部分に、前記データによるイレイジャーコードを生成するイレイジャーコーディングコントローラーを含み得る。
【００１８】
前記ストレージシステムは、ソリッドステートドライブの第２グループと、前記高速バスを介してプロセッサに連結され、前記低速バスを介して前記ＢＭＣに連結され、前記ソリッドステートドライブの前記第２グループに連結された第２ＦＰＧＡと、をさらに備え、前記第２ＦＰＧＡは、前記第２データ保護コントローラーを含み、第２データ保護コントローラーは、前記データ保護の構成に従って、前記ソリッドステートドライブの第２グループへの、及び前記ソリッドステートドライブの第２グループからの入力／出力要請を管理し、前記データ保護の構成に従って、前記ソリッドステートドライブの第２グループに格納されたデータに対するパリティービットを生成し、前記パリティービットを、前記ソリッドステートドライブの前記第２グループから少なくとも一つのパリティーソリッドステートドライブに格納し得る。
【００１９】
また、前記ストレージシステムは、ソリッドステートドライブの第２グループと、前記第１ＦＰＧＡを第１ダウンストリームＰＣＩｅ（登録商標）スイッチ及び第２ダウンストリームＰＣＩｅ（登録商標）スイッチに連結する第１ＰＣＩｅ（登録商標）スイッチと、をさらに備え、前記第１ダウンストリームＰＣＩｅ（登録商標）スイッチは、前記ソリッドステートドライブの前記第１グループに連結されて、前記ソリッドステートドライブの第１グループを第１ＰＣＩｅ（登録商標）スイッチを介して第１ＦＰＧＡに連結し、前記第２ダウンストリームＰＣＩｅ（登録商標）スイッチは、前記ソリッドステートドライブの第２グループに連結されて、前記ソリッドステートドライブの第２グループを第１ＰＣＩｅ（登録商標）スイッチを介して第１ＦＰＧＡに連結し得る。
前記データ保護の構成は、ハイブリッドＲＡＩＤ構成を含むことが好ましい。
【発明の効果】
【００２０】
本発明によれば、データ保護機能を備えたフィールドプログラマブルゲートアレイを搭載し、これらを、スイッチを利用して連結することにより、費用及び複雑度を低減しながらデータ保護機能を提供するストレージシステムが提供される。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態によるＦＰＧＡ及びＳＳＤを備えるストレージシステムを示すブロック図である。
【図２】本発明の実施形態によるＦＰＧＡ及びＳＳＤを備えるストレージシステムを示すブロック図である。
【図３】本発明の一実施形態によるＰＣＩｅ（登録商標）スイッチを有するＦＰＧＡを備えるストレージシステムを示す概略図である。
【図４】本発明の一実施形態によるＳＳＤに連結された複数のＦＰＧＡを備えるストレージシステムを示す図である。
【図５】本発明の一実施形態による複数のＰＣＩｅ（登録商標）スイッチを備えたストレージシステムの一例を示す図である。
【図６】本発明の一実施形態による複数ティア（ｔｉｅｒ）のスイッチを備えたストレージシステムの一例を示す図である。
【図７】本発明の一実施形態によるストレージシステムの初期化を遂行する方法を示すフローチャートである。
【図８】本発明の一実施形態によるＳＳＤを事前調整する方法を示すフローチャートである。
【図９】本発明の一実施形態によるパリティー生成とともに入力／出力を遂行する方法を示すフローチャートである。
【図１０】本発明の一実施形態によるドライブフェイル後にホット除去及び追加を遂行する方法を示すフローチャートである。
【発明を実施するための形態】
【００２２】
本発明の技術的思想の特徴及びそれを達成するための方法は、図面及び後述する実施形態の詳細な説明を参照して、容易に理解される。以下、本発明の実施形態を図面を参照しながら詳細に説明する。同じ参照符号は本明細書全体に亘って同じ要素を示す。しかし、本発明は多様な他の形態で具現され、本明細書で説明する実施形態のみに限定されない。このような実施形態は、本明細書の記載が完全になるための例として提供され、本発明の機能及び特性を当業者に完全に伝えるものである。従って、本発明の機能及び特性の完全な理解のために、本発明の技術分野における通常の技術を有する者に必須でないプロセス、要素、及び技術は説明しない。特に記載しない限り、図面及び本明細書に記載された説明において、同じ参照符号は同じ要素を示し、従って、それらの説明は繰り返さない。図面において、要素、階層、及び領域の相対的なサイズは、明確性のために強調される。
【００２３】
後述する説明において、説明目的のために、多数の具体的な詳細が多様な実施形態を理解するために提示される。しかしながら、多様な実施形態は、これらの具体的な詳細を省いて、又は一つ以上の等価的な配列で実施される。他の例において、よく知られた構造及びデバイスは、多様な実施形態を不必要に曖昧にすることを回避するためにブロック図の形態で示される。
【００２４】
要素、階層、領域、又は構成要素が、もう一つの要素、階層、領域、又は構成要素の上に存在するか、連結されるか、又は結合される場合、これは他の要素、階層、領域、又は構成要素の直上に存在するか、直接連結されるか、又は直接結合されるか、又は一つ以上の割り込みの要素、階層、領域、又は構成要素が存在する。しかしながら、直接連結されるか、又は直接結合される場合、一つの構成要素が中間要素なしにもう一つの構成要素に直接連結されるか、又は直接結合されることを示す。また、「間に」、「直ぐ間に」、「隣接して」、及び「直ぐ隣接して」のような構成要素の間の関係を記述する、他の表現も同様に理解される。さらに、要素又は階層が、２つの要素又は階層の間にあると記載される場合、これは、２つの要素又は階層の間の唯一の要素又は階層であるか、又はそれより多い割り込みの要素又は階層が存在し得る。
【００２５】
本明細書で使用される用語は、特定の実施形態を説明するためのものであり、本発明の限定を意図しない。単数の形態は、文脈上明確に異なると示さない限り、複数の形態も含む。「含む（ｃｏｍｐｒｉｓｅ）」、「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｅ）」、「有している（ｈａｖｉｎｇ）」、「備える（ｉｎｃｌｕｄｅ）」、「備えている（ｉｎｃｌｕｄｉｎｇ）」という用語は、本明細書で使用される場合、記載された特性、整数、ステップ、動作、要素、及び／又は構成要素の存在を記述し、一つ以上の他の特性、整数、ステップ、動作、要素、構成要素、及び／又はこれらのグループの存在又は追加を排除しない。本明細書で使用される「及び／又は」という用語は、関連して羅列された項目の任意のもの、又は一つ以上の全ての組み合わせを含む。
【００２６】
本明細書で使用される「実質的に」、「約」、「近似に」という用語、及び同様の用語は、近似の用語として使用され、程度の用語として使用されず、測定された又は計算された値からこの分野における通常の技術を有する者により理解される、内在的な偏差を説明するものである。本明細書で使用される「約」又は「近似に」は、問題の測定及び特定の量の測定に関連したエラー（即ち、測定システムの制限）を考慮して、この分野における通常の技術を有する者により判断されるように、言及された値を含み、特定の値についての偏差の収容可能な範囲内を意味する。例えば、「約」は、一つ以上の標準偏差内又は言及された値の±３０％、±２０％、±１０％、±５％内を意味する。なお、「できる（ｍａｙ）」の使用は、本発明の実施形態を記載する時に本発明の一つ以上の実施形態を示す。本明細書で使用される「使用する（ｕｓｅ）」、「使用する（ｕｓｉｎｇ）」、及び「使用された（ｕｓｅｄ）」という用語は、「活用する（ｕｔｉｌｉｚｅ）」、「活用する（ｕｔｉｌｉｚｉｎｇ）」、及び「活用された（ｕｔｉｌｉｚｅｄ）」という用語とそれぞれ同意語である。なお、「模範的な（ｅｘｅｍｐｌａｒｙ）」という用語は、例示又は事例を示す。
【００２７】
特定の実施形態が異なって具現される時、具体的なプロセス順序は、記載された順序とは異なるように遂行される。例えば、２つの連続的に記載されたプロセスは、実質的に同時に行われるか又は記載された順序とは反対の順序で遂行される。
【００２８】
本明細書で多様な実施形態が、実施形態及び／又は中間構造の概略図である断面図を参照して説明される。従って、例えば、製造技術及び／又は誤差の結果としての図の形態からの変形が予測される。なお、本明細書に記載された具体的な構造的又は機能的説明は、本発明の思想による実施形態を説明する目的のために例示したものに過ぎない。従って、本明細書に記載された実施形態は、領域の特定の例示された形態に限定されず、例えば、製造に由来する形態の偏差を含む。
【００２９】
本明細書に記載された本発明の実施形態による電子又は電気デバイス及び／又は他の関連するデバイス、又は構成要素は、任意の適切なハードウェア、ファームウェア（例えば、特定用途向け集積回路）、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの組み合わせで具現される。例えば、このようなデバイスの多様な構成要素は、一つの集積回路（ＩＣ）チップ又は他のＩＣチップに形成される。なお、このようなデバイスの多様な構成要素は、フレキシブルプリント回路フィルム（ｆｌｅｘｉｂｌｅ  ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｆｉｌｍ）、テープキャリアパッケージ（ＴＣＰ）、プリント回路基板（ＰＣＢ）に具現されるか、又は一つの基板に形成される。なお、このようなデバイスの多様な構成要素は、一つ以上のコンピューティングデバイス内で一つ以上のプロセッサで実行されるプロセス又はスレッド（ｔｈｒｅａｄ）であり、本明細書に記載された多様な機能を遂行するためにコンピュータプログラム命令を実行し、他のシステム構成要素と相互作用する。コンピュータプログラム命令は、例えば、ランダムアクセスメモリー（ＲＡＭ）のように、標準メモリーデバイスを利用するコンピューティングデバイスに具現されるメモリーに格納される。コンピュータプログラムはまた、例えば、ＣＤ−ＲＯＭ、フラッシュドライブ（ｆｌａｓｈ  ｄｒｉｖｅ）などのような他の非一時的コンピュータ読み出し可能な媒体に格納される。なお、この分野における通常の知識を有する者は、本発明の思想及び技術範囲から逸脱せずに、多様なコンピュータデバイスの機能が単一のコンピューティングデバイスに組み合わされ又は集積され、又は特定のコンピューティングデバイスの機能が一つ以上のコンピューティングデバイスに分散される。
【００３０】
特に定義しない限り、本明細書で使用される全ての用語（技術的、及び科学的用語を含む）は、本発明が属する技術分野における通常の技術を有する者により共通に理解されるものと同一の意味を有する。一般に使用される辞書で定義された用語は、関連する分野及び／又は本明細書のコンテキストにおいてその意味と一致する意味を有し、本明細書で明白に定義されない限り、理想化されたり又は過度に形式的な意味に解釈されない。
【００３１】
本発明の実施形態は、ストレージシステムおいて、データ保護を支援するシステム及び方法を含む。多様な実施形態において、ストレージシステムは、一つ以上のソリッドステートドライブ（ＳＳＤ）（例えば、ＮＶＭｅ（登録商標）ＳＳＤ）と連携して動作する少なくとも一つのＦＰＧＡを含む。多様な実施形態において、各ＦＰＧＡは、ストレージシステムに格納されたデータの完全性（ｉｎｔｅｇｒｉｔｙ）を保護するためのデータ保護コントローラーとともに構成される。例えば、データ保護コントローラーは、ＡＩＣ又はソフトウェアベースでの実装を使用する代わりに、取り付けられたＳＳＤにＲＡＩＤ又はイレイジャーコーディングを具現する。多様な実施形態において、各ＦＰＧＡは、ＲＡＩＤ、イレイジャーコードパリティー生成、及びデータルーティング（ｒｏｕｔｉｎｇ）のための高速入力／出力（Ｉ／Ｏ）の連結性とともに、コンピューティング資源（ｒｅｓｏｕｒｃｅ）を含む。
【００３２】
近来のデータセンタにおいて、現在の目標は、電力消費を最小化しながらストレージ密度及び性能を最大化することである。通常のＲＡＩＤ構成は、一つ以上の外部ＰＣＩｅ（登録商標）アドインカード（ＡＩＣ）を使用する。ストレージ密度を最大化するために、近来及び未来のストレージサーバーフォームファクター（ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｆｏｒｍ  ｆａｃｔｏｒ）は、データストレージドライブ（例えば、ＳＳＤ）に、可能な限り多くの空間を割り当てるように設計される。従って、１Ｕ及び２Ｕフォームファクターが急激に普及している。これらのフォームファクターは、欠点がないわけではない。例えば、これらの小さなサイズは、ＡＩＣを追加するための余地がないため、ＰＣＩｅ（登録商標）ポートの数が制限され、これらの増加する密度は冷却をより難しくする。従って、システムに追加されるＡＩＣの数を制限するのが好ましい。
【００３３】
現在のデータ保護の具現には、ＲＡＩＤを遂行するためのＡＩＣ、又はイレイジャーコードを遂行するための演算力が使用される。これらの方法論は、多数の問題点を有する。例えば、ＡＩＣは高価で、余分な電力を消費し、またＰＣＩｅ（登録商標）バスの帯域幅を使用して余分な熱を発生する。なお、全てのＰＣＩｅ（登録商標）スロットがＲＡＩＤを具現するのに使用されると、シャーシは、将来の拡張のための空間を有しない。イレイジャーコーディングは、ＲＡＩＤと同じ多数の長所を提供し、より多くの構成の柔軟性を提供するが、イレイジャーコーディングは、コーディングの殆どがサーバーのプロセッサにより行われるので、演算コストが高い。
【００３４】
本明細書に記載の実施形態は、ストレージ取り付けＦＰＧＡの演算力を活用することにより、これらの従来の方法論を改善する。ＦＰＧＡにデータ保護コントローラーを実装することにより、データ保護スキームが、全ての利用可能なＰＣＩｅ（登録商標）スロットを使用する必要なしに（従って、将来のシステム拡張を許容）、そしてＡＣＩ、電力、冷却、及びプロセッサ作業負荷の観点から費用節減されて具現される。なお、メインＰＣＩｅ（登録商標）バスの帯域幅は、異なる動作のために活用される。従って、ストレージ密度及び性能が向上し、電力消費が節減される。さらに、データ保護コントローラーがＦＰＧＡに具現されるので、データ保護コントローラーを使用することは、より大きな構成の柔軟性を許容する。
【００３５】
図１及び図２は、本発明の実施形態によるＦＰＧＡ及びＳＳＤを備えるストレージシステムを示すブロック図である。
【００３６】
図１及び図２を参照すると、本発明の実施形態によるストレージシステム（１００Ａ／１００Ｂ）は、ＦＰＧＡ上で動作するデータ保護コントローラーと連携して具現されたデータ保護の構成（ｃｏｎｆｉｇｕｒａｔｉｏｎ）を使用して動作するように構成される。これらの実施形態において、ストレージシステム１００Ａは、ＲＡＩＤで動作するように構成され、ストレージシステム１００Ｂは、イレイジャーコーディング（ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）で動作するように構成される。ストレージシステム（１００Ａ／１００Ｂ）のそれぞれは、プロセッサ１１０（又は、複数のプロセッサ）、メモリー１２０、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）１３０、ＦＰＧＡ（１４０、１５０）、及びＳＳＤ（１６０〜１７４）（例えば、ＮＶＭｅ（登録商標）ＳＳＤ、ＮＶＭｅ（登録商標）−ｏＦ、又は任意の異なるソリッドステートドライブ若しくは回転ディスクドライブ）を含む。これらの実施形態において、プロセッサ１１０は、ＦＰＧＡ（１４０、１５０）を介してＮＶＭｅ（登録商標）ＳＳＤ（１６０〜１７４）に連結される。プロセッサ１１０が殆どの主要演算動作を処理するように構成されるが、ＦＰＧＡ（１４０、１５０）は、対応して取り付けられたＳＳＤ（１６０〜１７４）に格納されたデータに対する多様な演算動作（例えば、ストレージ内の演算動作）を遂行するように構成される。ＦＰＧＡ（１４０、１５０）は、ＦＰＧＡ（１４０、１５０）による実行のための命令を伝送するだけでなく、ＦＰＧＡ（１４０、１５０）への、及びＦＰＧＡ（１４０、１５０）からのデータの全てを伝送するように構成される高速バス（例えば、ＰＣＩｅ（登録商標）ｘ８／ｘ１６）を介してプロセッサ１１０に連結される。一部の実施形態において、ＦＰＧＡ（１４０、１５０）は、ＦＰＧＡ（１４０、１５０）及び取り付けられたＳＳＤ（１６０〜１７４）に対する構成（ｃｏｎｆｉｇｕｒａｔｉｏｎ）及び制御動作を遂行するため、相対的に低速バス（例えば、ＰＣＩｅ（登録商標）ｘ１）を介してＢＭＣ１３０に直接連結される。ＦＰＧＡ（１４０、１５０）は、それぞれ一つ以上のデータ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）を含む。一実施形態において、データ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）は、ＦＰＧＡ（１４０、１５０）によって具現される。他の実施形態において、データ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）は、ＦＰＧＡ（１４０、１５０）と同じダイ（ｄｉｅ）に特定用途向け集積回路（ＡＳＩＣ）として具現される。
【００３７】
本発明の実施形態において、ＢＭＣ１３０は、データ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）に対するデータ保護の構成（ｄａｔａ  ｐｒｏｔｅｃｔｉｏｎ  ｃｏｎｆｉｇｕｒａｔｉｏｎ）を指定するのに使用される。一部の実施形態において、ＢＭＣ１３０は、ストレージシステムが初期化された時に、特定のデータ保護の構成が自動的に適用されるハードコード（ｈａｒｄ−ｃｏｄｅｄ）経路を有する。例えば、ＢＭＣ１３０は、ＢＩＯＳ構成又はソフトウェアインターフェースによってデータ保護の構成を適用する。他の実施形態において、管理者は、ＢＩＯＳ又はインターフェースソフトウェアを修正することにより、基本（デフォルト）設定又はハードコード設定を設定するオプションを有する。本実施形態において、管理者は、構成ステップの間に適用される異なるデータ保護の構成を選択する。例えば、管理者は、アプリケーションに応じて、イレイジャーコーディング又はＲＡＩＤを具現するように選択する。一部の実施形態において、ＢＭＣ１３０は、各ＦＰＧＡ（１４０、１５０）に複数のデータ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）を構成するのに使用される。例えば、サーバー（１００Ａ／１００Ｂ）は、複数のユーザによって利用される複数の仮想機械を動作させ、データ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）は、各仮想機械に対して具現される。
【００３８】
本実施形態において、各ＦＰＧＡ（１４０、１５０）は、いくつかのＳＳＤ（１６０〜１７４）と共に動作する。図１及び図２に示す例において、各ＦＰＧＡ（１４０、１５０）は、４つのＳＳＤと動作するように構成されるが、ＳＳＤに対するＦＰＧＡの比率は、各ＳＳＤに対して一つのＦＰＧＡから、各ＦＰＧＡに対して複数のＳＳＤを含むように修正される。
【００３９】
図１を参照すると、本実施形態において、各ＦＰＧＡ（１４０、１５０）は、データ保護の構成（例えば、ＢＭＣ１３０により指定された構成）に従ってデータ保護スキームを動作させるデータ保護コントローラーを含む。例えば、データ保護コントローラーは、ＲＡＩＤコントローラー（１４５Ａ、１５５Ａ）として動作するように構成される。本実施形態において、ユーザ（例えば、システム管理者）は、所望のＲＡＩＤ構成（例えば、ＲＡＩＤ０、１、５、６）を具現して、使用されるＳＳＤ（１６０〜１７４）を指定（例えば、ＲＡＩＤコントローラー（１４５Ａ、１５５Ａ）に連結されたＳＳＤの全体の数に基づいてグループを生成）するように、ＲＡＩＤコントローラー（１４５Ａ、１５５Ａ）を構成する。
【００４０】
例えば、一実施形態において、ＦＰＧＡ（１４０、１５０）は、それぞれ４つのＳＳＤ（１６０〜１７４）に連結されて、データが３つのＳＳＤにストライプされ（ｓｔｒｉｐｅｄ）、４番目のＳＳＤがパリティーのために使用されるＲＡＩＤ５の構成でそれぞれ動作するように構成される。他の実施形態において、ＦＰＧＡ（１４０、１５０）は、５つのＳＳＤ（１６０〜１７４）に連結され、それぞれＲＡＩＤ６構成で動作するように構成される。
【００４１】
本実施形態において、ＲＡＩＤコントローラー（１４５Ａ、１５５Ａ）は、ＢＭＣ１３０により管理される。従って、システム管理者は、任意の構成変更、性能監視、システム保守の遂行のためだけでなく、ＲＡＩＤコントローラー（１４５Ａ、１５５Ａ）の初期構成のためにＢＭＣ１３０にアクセスする。例えば、ＢＭＣ１３０は、構成（ｃｏｎｆｉｇｕｒａｔｉｏｎ）のためにユーザ用のインターフェース（例えば、グラフィックユーザインターフェース又は命令ラインインターフェース）を提供し、また一部の構成のためにソフトウェア用のインターフェースを提供する。
【００４２】
図２を参照すると、本実施形態において、ＦＰＧＡ（１４０、１５０）のそれぞれのデータ保護コントローラーは、イレイジャーコード動作を指定するデータ保護の構成に従って動作する。例えば、本実施形態において、データ保護コントローラーは、イレイジャーコーディングコントローラー（１４５Ｂ、１５５Ｂ）として動作する。イレイジャーコーディングコントローラー（１４５Ｂ、１５５Ｂ）は、それぞれＭ／Ｎイレイジャー構成（例えば、データがＭ個のＳＳＤに分散され、Ｎ個のＳＳＤのみを用いて復元される）で動作するように構成される。一例として、ＦＰＧＡ（１４０、１５０）は、それぞれ４つのＳＳＤ（１６０〜１７４）に連結され、１／４、２／４、又は３／４の構成で動作するように構成される。他の例において、ＦＰＧＡ（１４０、１５０）のそれぞれは８個のＳＳＤ（１６０〜１７４）に連結され、例えば、それぞれ５／８の構成で動作するように構成される。イレイジャーコーディング構成及びＦＰＧＡに連結されるＳＳＤの数は、利用可能なＳＳＤ及びユーザの設計要求により修正される。
【００４３】
本実施形態において、イレイジャーコーディングコントローラー（１４５Ｂ、１５５Ｂ）の構成はＢＭＣ１３０により管理される。例えば、ＢＭＣ１３０は、初期設定、デバイス状態の検査、デバイスの保守、構成変更などを遂行するのためにユーザにインターフェースを提供する。従って、管理者は、ストレージシステムを所望のデータ保護スキームで容易に構成できる。
【００４４】
図３は、本発明の一実施形態によるＰＣＩｅ（登録商標）スイッチを有するＦＰＧＡを備えるストレージシステムを示す概略図である。
【００４５】
図３を参照すると、本実施形態において、ストレージシステム２００は、多様なデータ保護スキームを有するように構成される。本実施形態において、取り付けられたＮＶＭｅ（登録商標）ＳＳＤ（２３０〜２５２）は、ホストによって、単一のホストヴィジブル（ｖｉｓｉｂｌｅ）ＳＳＤ２１０として示される。従って、ホストの観点から、ストレージシステム２００の構成は、動作中の因子（ｆａｃｔｏｒ）ではない。本実施形態において、スイッチを有するＦＰＧＡ２２０は、集積されたＰＣＩｅ（登録商標）スイッチに取り付けられるか、又は集積されたＰＣＩｅ（登録商標）スイッチを有する。ＰＣＩｅ（登録商標）スイッチを追加することは構成の柔軟性をさらに提供し、より少ない数のＦＰＧＡ２２０を使用することで、システム費用をさらに節減する。なお、ＦＰＧＡ２２０の任意のストレージ内演算動作に伴うＲＡＩＤ／イレイジャーコード動作が、ＰＣＩｅ（登録商標）スイッチによって提供される別のＰＣＩｅ（登録商標）バスに限定されるので、システムＰＣＩｅ（登録商標）バスのトラフィックがより節減される。
【００４６】
多様な実施形態において、ストレージシステム２００は、ＲＡＩＤ５を利用するか、Ｘ／Ｙイレイジャーコード構成を利用するか、又はＲＡＩＤ０を利用して動作するように（例えば、ＢＭＣ１３０にアクセスする管理者によって）構成される。図３に示す実施形態において、ストレージシステム２００は、１２個の取り付けられたＳＳＤ（２３０〜２５２）を含む。従って、ストレージシステム２００がＲＡＩＤ５の構成で構成される場合、１１個のＳＳＤ（２３０〜２５０）は、データを格納するのに使用され（例えば、データが１１個のＳＳＤにストライプ（ｓｔｒｉｐｅ）される）、そして１つのＳＳＤ２５２は、パリティービットを格納するのに使用される。同様に、ストレージシステム２００がイレイジャーコードで動作するように構成される場合、ｘ個のＳＳＤはデータを格納するために使用され、ｙ個のＳＳＤはコードを格納するために使用される。他の実施形態において、ストレージシステムは、ＲＡＩＤ０で構成（データがパリティー無しにストライプ（ｓｔｒｉｐｅ））され、全てのＳＳＤが、データドライブとして使用される。
【００４７】
図４は、本発明の一実施形態によるＳＳＤに連結された複数のＦＰＧＡを備えるストレージシステムを示す図である。
【００４８】
図４を参照すると、本実施形態において、ストレージシステムは、各ＦＰＧＡ（３１０、３２０）に連結された、又はＦＰＧＡ（３１０、３２０）で動作する一つ以上のＰＣＩｅ（登録商標）スイッチ３００をさらに含む。ＰＣＩｅ（登録商標）スイッチ３００は、各ＦＰＧＡ（３１０、３２０）が連結されるＮＶＭｅ（登録商標）ＳＳＤ（３３０〜３６０）の数を増加させるのに使用され、２つ以上のＦＰＧＡ（３１０、３２０）を連結して追加的なデータ保護の構成を提供する。従って、データセキュリティの追加的な階層及び設定性（ｃｏｎｆｉｇｕｒａｂｉｌｉｔｙ）が管理者によって選択される。
【００４９】
例えば、図４に示す実施形態において、各ＦＰＧＡ（３１０又は３２０）は、ＰＣＩｅ（登録商標）スイッチ３００を使用して、４つのＮＶＭｅ（登録商標）ＳＳＤ（３３０〜３４４）に連結される。さらに、ＦＰＧＡ（３１０、３２０）もまた、ＰＣＩｅ（登録商標）スイッチ３００を介して互いに連結される。従って、ＦＰＧＡ（３１０、３２０）がＲＡＩＤ又はイレイジャーコードコントローラー（３１５、３２５）を動作させている時、ＲＡＩＤ又はイレイジャーコード構成は、追加のＦＰＧＡ及びそれらに関連するドライブ（ＳＳＤ）を組み入れ、従って、さらなる構成の柔軟性を提供する。例えば、本実施形態において、第１のＦＰＧＡ３１０は、第２のＦＰＧＡ３２０のような一つ以上のＦＰＧＡとペアになる。追加のＦＰＧＡ（例えば、ＦＰＧＡ３２０）及びそれに対応するドライブ（例えば、ＮＶＭｅ（登録商標）ＳＳＤ（３３８〜３４４））は、データセキュリティの追加的な階層を提供するデータの複製（例えば、データミラーリング）のために使用される。本実施形態において、ＲＡＩＤ１０、ＲＡＩＤ５０のようなハイブリッドＲＡＩＤ、又はネストされた（ｎｅｓｔｅｄ）ＲＡＩＤ構成は、複数のＦＰＧＡ及びそれらの対応するＳＳＤを利用して具現される。
【００５０】
図５は、本発明の一実施形態による複数のＰＣＩｅ（登録商標）スイッチを備えたストレージシステムの一例を示す図である。
【００５１】
図５を参照すると、本実施形態において、ストレージシステム４００の各ＦＰＧＡ（４１０、４２０）は、スイッチ（４１４、４２４）（例えば、ＰＣＩｅ（登録商標）スイッチ）を含む。本実施形態において、データ保護コントローラー（４１２、４２２）（例えば、ＲＡＩＤ又はイレイジャーコードコントローラー）に結合されたＰＣＩｅ（登録商標）スイッチ（４１４、４２４）は、追加的な構成の柔軟性を提供する。例えば、図５に示す例において、ＰＣＩｅ（登録商標）スイッチ（４１４、４２４）の使用は、より多くのドライブ（ＳＳＤ）が各ＦＰＧＡ（４１０、４２０）に論理的に連結されるようにする。例えば、図５に示す例において、ＦＰＧＡ（４１０、４２０）のそれぞれは、８つのＮＶＭｅ（登録商標）ＳＳＤ（４３０〜４６０）に連結される。他の例において、ＦＰＧＡ（４１０、４２０）は、より多い又はより少ないドライブ（ＳＳＤ）に論理的に連結される。なお、上述したように、ハイブリッドＲＡＩＤ構成は、２つ以上のＦＰＧＡ（４１０、４２０）、及びそれらに関連したＳＳＤ（４３０〜４６０）を使用して採用される。
【００５２】
図６は、本発明の一実施形態による複数ティア（ｔｉｅｒ）のスイッチを備えたストレージシステムの一例を示す図である。
【００５３】
図６を参照すると、本実施形態において、ストレージシステム５００は、複数のＰＣＩｅ（登録商標）スイッチ（５１４、５２０、５３０）により複数のＮＶＭｅ（登録商標）ＳＳＤ（５４０〜５７０）に連結される単一のＦＰＧＡ５１０を含む。本実施形態において、ＦＰＧＡ５１０は、ＲＡＩＤ及び／又はイレイジャーコード動作を遂行するように構成され、第１のＰＣＩｅ（登録商標）スイッチ５１４に論理的に連結されるデータ保護コントローラー５１２を含む。第１のＰＣＩｅ（登録商標）スイッチ５１４（例えば、第１ティアの）は、ＦＰＧＡ５１０を２つ以上のダウンストリームのＰＣＩｅ（登録商標）スイッチ（５２０、５３０）（例えば、第２ティアの）に連結され、ＰＣＩｅ（登録商標）スイッチ（５２０、５３０）のそれぞれは、複数のＳＳＤ（５４０〜５７０）の一部に連結される。図６に示す例において、第１ダウンストリームのＰＣＩｅ（登録商標）スイッチ５２０は、８つのＳＳＤ（５４０〜５５４）に論理的に連結され、第２ダウンストリームのＰＣＩｅ（登録商標）スイッチ５３０は、８つのＳＳＤ（５５６〜５７０）に論理的に連結される。追加のＰＣＩｅ（登録商標）スイッチの使用は、複数のＮＶＭｅ（登録商標）ＳＳＤ（５４０〜５７０）に格納されたデータを保護するための追加的な構成のオプションを許容する。図５を参照して説明したように、複数のＰＣＩｅ（登録商標）スイッチは、ハイブリッドＲＡＩＤ構成を具現するのに使用される。例えば、ＲＡＩＤ１０は、第１ダウンストリームのＰＣＩｅ（登録商標）スイッチ５２０下のＳＳＤが各ＳＳＤの間でＲＡＩＤ１（ミラーリング）を具現し、これらのＳＳＤを第２ダウンストリームのＰＣＩｅ（登録商標）スイッチ５３０に連結されたＳＳＤにストライピング（ｓｔｒｉｐｉｎｇ）することにより具現される。他の構成において、第１及び第２ダウンストリームのＰＣＩｅ（登録商標）スイッチ（５２０、５３０）はＲＡＩＤ５を具現し、それらはＲＡＩＤ０を利用してストライプ（ｓｔｒｉｐｅｄ）されてＲＡＩＤ５０を形成する。このようなＲＡＩＤの具現は、例として使用され、任意のハイブリッドＲＡＩＤが適切な数のＳＳＤ及びスイッチを利用して構成される。
【００５４】
図７は、本発明の一実施形態によるストレージシステムの初期化を遂行する方法を示すフローチャートである。
【００５５】
図１及び図２とともに、図７を参照すると、本実施形態において、ＢＭＣ１３０は、ストレージシステム（１００Ａ／１００Ｂ）によって採用されたデータ保護スキームの初期設定を遂行するように構成される。本実施形態において、ストレージシステム（１００Ａ／１００Ｂ）は、管理者によって使用されるために初期化される。例えば、ストレージシステム（１００Ａ／１００Ｂ）は、クライアントのために要求され、構成を必要とするクラウドストレージサーバーである。本実施形態において、ＢＭＣ１３０は、（図７を参照して説明するように）ＲＡＩＤ又はイレイジャーコード構成に従ってＳＳＤを初期化し、事前調整する（ステップＳ６００）。例えば、上述のように、ＢＭＣ１３０は、特定のデータ保護スキームが適用されるか又は構成可能な設定であるハードコード（ｈａｒｄ−ｃｏｄｅｄ）経路を有する。ＢＭＣ１３０によって提供される構成に基づいて、データ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）は、データドライブ及びパリティー（又はイレイジャーコード）ドライブを指定し（ステップＳ６１０）、指定されたデータ保護スキームの要求を満足させる。本実施形態において、データ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）は、異なる容量を有する任意の取り付けられたデータドライブ又はパリティードライブを正規化する（ステップＳ６２０）。データ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ）は、パリティードライブがホストに見えないようにする（ステップＳ６３０）（例えば、それらは見えるドライブの総容量から除去される）。
【００５６】
図８は、本発明の一実施形態によるＳＳＤを事前調整する方法を示すフローチャートである。
【００５７】
図１及び図２とともに、図８を参照すると、本実施形態において、ストレージシステム（１００Ａ／１００Ｂ）の初期化において、ストレージシステムはＳＳＤに格納されたコンテンツの全てを消去することにより、ＳＳＤを事前調整する。例えば、クラウドコンピューティングアプリケーションにおいて、ストレージシステムの多様なユーザが存在し、各ユーザは、取り付けられたＳＳＤに格納されたプライベートデータを有する。任意の以前のユーザデータは、ストレージサーバーが他のユーザによって使用される前に、安全に消されなければならない。従来のシステムにおいて、遠隔ホストから大容量ドライブのデータを消すことは、通常、ストレージの全てのビットを複数回上書きする作業を含むので、非常に長いプロセスである。ドライブの容量が増加するにつれて、この動作の持続時間もまた増大してきた。本実施形態において、ストレージシステム（１００Ａ／１００Ｂ）は、ＢＭＣ１３０及びＦＰＧＡ（１４０、１５０）を利用して作業を分散することにより、データイレイジャープロセスをより迅速に処理する。例えば、ドライブ（ＳＳＤ）を新たなユーザに割り当てる前に、管理者からのイレイジャー命令がＢＭＣ１３０に受信される（ステップＳ７００）。本実施形態で、イレイジャーは特定の名称空間又は範囲に対するものである。ＢＭＣ１３０は、その後、どのようなＦＰＧＡが命令に関連付けられているかを判定し（例えば、ホストが伝送した命令に割り当てられたＳＳＤ）、各ＦＰＧＡ（１４０、１５０）に連結された低速バスを使用して命令をブロードキャスト（ｂｒｏａｄｃａｓｔ）する（ステップＳ７１０）。イレイジャー命令は、その後、目標とされたＳＳＤに伝送される（ステップＳ７２０）。各ＳＳＤは命令を処理し、コンテンツ（例えば、以前のユーザデータ）を削除する（ステップＳ７３０）。従って、イレイジャー命令は、並列方式で実行され、総実行時間が大幅に減少する。さらに、イレイジャーをＢＭＣ／ＦＰＧＡに委任することで、システムＣＰＵが他の作業を自由に処理できるようにする。なお、データ経路（例えば、ＢＭＣ経路）を使用することは、保守動作のためのセキュアなチャンネルを生成する。
【００５８】
図９は、本発明の一実施形態によるパリティー生成とともに入力／出力を遂行する方法を示すフローチャートである。
【００５９】
図１とともに、図９を参照すると、本実施形態において、ストレージシステムは、データ保護スキームによりパリティービットを生成するように構成される。ストレージシステムの初期化により、ストレージシステムは一部の構成ステップを始める。例えば、取り付けられたＳＳＤ（例えば、ＳＳＤ１６０〜ＳＳＤ１７４）のそれぞれは、スロット番号又はデータ保護コントローラー（例えば、データ保護コントローラー１４５Ａ）から割り当てられた識別番号（ＩＤ）のような固有のメンバー識別を含む（ステップＳ８００）。ＳＳＤは、その後、正常なトランザクション（ｔｒａｎｓａｃｔｉｏｎ）が可能になる（ステップＳ８１０）。例えば、ユーザ又はアプリケーションは、ＢＭＣ１３０を利用してストレージシステムにアクセスし、データ保護スキームのタイプを選択し、ＳＳＤは、データドライブ又はパリティードライブに指定される（例えば、データ保護コントローラー１４５Ａにより）。パリティードライブに指定されると、ＳＳＤは、ホスト又は上位レベルデータ保護コントローラー（例えば、図６に図示されたように階層化されたコントローラーの場合に）から見えなくなる。初期化の後に、ＳＳＤはホストによって発見され、入力／出力トランザクションが開始される（ステップＳ８２０）。ホストは、その後、ＳＳＤにデータを書き込み始め、一部の実施形態において、ＳＳＤは、パリティー値を生成するのに使用される係数を識別するように構成される（ステップＳ８３０）。ＳＳＤは、その後、係数を利用してパリティードライブによって使用されるデルタ積（ｐｒｏｄｕｃｔ）を生成する（ステップＳ８４０）。例えば、ＳＳＤは、目標の論理ブロックアドレス（ＬＢＡ）のリード（ｒｅａｄ）を遂行し、リードされたデータを新たなデータと排他的論理和（ＸＯＲ）で演算し、係数をかけ、新たなデータをＬＢＡに書き込み、その後にデルタ積をＬＢＡ情報とともにパリティードライブに伝送する。パリティードライブはデルタ積情報を受信し、ＬＢＡデータをリードし、デルタ積の情報を、リードされた情報と排他的論理和（ＸＯＲ）で演算し、情報を書き込み、そしてコミット（ｃｏｍｍｉｔ）を対応するパリティードライブに伝送する（ステップＳ８５０）。パリティーが完了すると（ステップＳ８６０）、トランザクションが完了したとホストに報告する（ステップＳ８７０）。
【００６０】
図１０は、本発明の一実施形態によるドライブフェイル（ｆａｉｌ）後にホット（ｈｏｔ）除去（ｒｅｍｏｖａｌ）及び追加（ａｄｄ）を遂行する方法を示すフローチャートである。
【００６１】
図１０を参照すると、本実施形態において、ストレージシステムは、ＢＭＣ及びデータ保護コントローラー（例えば、図１のＢＭＣ１３０及びデータ保護コントローラー（１４５Ａ／１４５Ｂ、１５５Ａ／１５５Ｂ））を利用して、フェイルから復元するように構成される。本実施形態において、ＢＭＣ１３０は、ドライブフェイル又は除去を検出する（ステップＳ９００）。ＢＭＣ１３０は、いくつかの方法でドライブフェイル又は除去を検出する。例えば、一実施形態として、全てのＳＳＤは、ミッドプレーン（ｍｉｄ−ｐｌａｎｅ）を介してＢＭＣ１３０に連結された存在ピン（ｐｒｅｓｅｎｃｅ  ｐｉｎ）を備える。従って、ＳＳＤがシャーシから物理的に除去されると、ＢＭＣ１３０は除去を検出する。また、ＢＭＣ１３０は、取り付けられたＳＳＤのそれぞれの安定状態を周期的に確認する。ＢＭＣ１３０がＳＳＤによって報告された致命的なエラー状態を検出した場合、ＢＭＣ１３０は、該当するＳＳＤを動作不能と決定する。他のケースにおいて、ＢＭＣ１３０は、誤動作するＳＳＤの位置（例えば、対応する物理的スロット番号）をＦＰＧＡ（１４０、１５０）のコントローラーに報告する。他の実施形態において、ＦＰＧＡ（１４０、１５０）は、全てのＳＳＤがＰＣＩｅ（登録商標）側帯域信号で連結されたホットプラグインをサポートすることが可能である。従って、ＦＰＧＡ（１４０、１５０）は、ＳＳＤが抜けたり、差し込まれたりする場合、又はＳＳＤに対するＰＣＩｅ（登録商標）リンクがこれ以上動作しない場合を含む特定のエラー状態を検出する。本実施形態において、このようなエラー状況で、ＦＰＧＡ（１４０、１５０）のデータ保護コントローラーは、フェイルしたＳＳＤを隔離し、又はＢＭＣ１３０がフェイルしたＳＳＤへの電源を遮断して、ＳＳＤの再構築（ｒｅｂｕｉｌｄｉｎｇ）を直ぐに始める。
【００６２】
本実施形態において、データ保護コントローラーは、ドライブ（ＳＳＤ）がフェイルした時に、入力／出力要請の性能を維持する責任がある。従って、データ保護コントローラーは、一つ以上のパリティードライブ又はイレイジャーコードドライブを利用してデータを再構築し、新たなドライブ（ＳＳＤ）が提供されるまで正常な入力／出力を遂行する（ステップＳ９１０）。新たなドライブ（ＳＳＤ）が挿入されると（ステップＳ９２０）、ＢＭＣ１３０は、グループの一部として新たなＳＳＤを再び差し込んで構成するか、又は再構築動作を開始する。コントローラーは、その後、再構築を開始する（ステップＳ９３０）。従って、このストレージシステムの復元経路は、データアクセス経路により低いレイテンシを提供しながら、可能な限り性能への影響を最小限に抑えるように構成される。
【００６３】
以上の説明は、例示的な実施形態の事例であり、本発明はそれらに限定されない。一部の例示的な実施形態を説明したが、本技術分野における通常の知識を有する者は、例示的な実施形態の新たな教示及び長所から本質的に逸脱しない範囲内で、例示的な実施形態において多様な修正が可能である。従って、これらの全ての修正は、本発明の技術範囲に含まれる。
【産業上の利用可能性】
【００６４】
本発明は、フィールドプログラマブルゲートアレイを搭載してコストと複雑度を減らしながらデータ保護の機能を提供するストレージシステムの具現に有用である。
【符号の説明】
【００６５】
１００Ａ、１００Ｂ、２００、４００、５００    ストレージシステム
１１０    プロセッサ
１２０    メモリー
１３０    ＢＭＣ
１４０、１５０、３１０、３２０、４１０、４２０、５１０    ＦＰＧＡ
１４５Ａ、１５５Ａ    ＲＡＩＤコントローラー（データ保護コントローラー）
１４５Ｂ、１５５Ｂ    イレイジャーコーディングコントローラー（データ保護コントローラー）
１６０〜１７４、３３０〜３４４、４３０〜４６０、５４０〜５７０    （ＮＶＭｅ（登録商標））ＳＳＤ
２１０    ホストヴィジブルＳＳＤ
２２０    （スイッチを有する）ＦＰＧＡ
２３０〜２５２    ＳＳＤ
３００、４１４、４２４、５１４、５２０、５３０    ＰＣＩｅ（登録商標）スイッチ
３１５、３２５、４１２、４２２、５１２    ＲＡＩＤ又はイレイジャーコードコントローラー（データ保護コントローラー）
【図１】
2019153308.tif 000003
【図２】
2019153308.tif 000004
【図３】
2019153308.tif 000005
【図４】
2019153308.tif 000006
【図５】
2019153308.tif 000007
【図６】
2019153308.tif 000008
【図７】
2019153308.tif 000009
【図８】
2019153308.tif 000010
【図９】
2019153308.tif 000011
【図１０】
2019153308.tif 000012