(57)【要約】【課題】マルチノードストレージシステムにおけるファームウェアアップグレード方法を提供する。【解決手段】第１ノード及び第２ノードを有するマルチストレージノードシステムを提供する。第１ノードは、第１ベースボード管理コントローラ（ＢＭＣ）と、第１フラッシュイメージを記憶するように構成された第１フラッシュＲＯＭと、第１ＢＭＣを第１フラッシュＲＯＭに接続するように構成された第１スイッチデバイスと、を含む。第２ノードは、第１ノードと同じ構成を含む。第１ＢＭＣは、第２スイッチデバイスに接続されており、第２フラッシュイメージは、第１フラッシュイメージと同じである。【選択図】図２
2020144834.tif 000002
【特許請求の範囲】
【請求項１】
第１ノード及び第２ノードを有するマルチノードストレージシステムであって、
前記第１ノードは、
第１ベースボード管理コントローラ（ＢＭＣ）と、
第１フラッシュイメージを記憶するように構成された第１フラッシュＲＯＭと、
前記第１ＢＭＣを前記第１フラッシュＲＯＭに接続するように構成された第１スイッチデバイスと、を含み、
前記第２ノードは、
前記第１スイッチデバイスに接続された第２ＢＭＣと、
第２フラッシュイメージを記憶するように構成された第２フラッシュＲＯＭと、
前記第２ＢＭＣを前記第２フラッシュＲＯＭを接続するように構成された第２スイッチデバイスと、を含み、
前記第１ＢＭＣは、前記第２スイッチデバイスに接続されており、
前記第２フラッシュイメージは、前記第１フラッシュイメージと同じである、ことを特徴とするマルチノードストレージシステム。
【請求項２】
前記第１ノードは、第１ストレージコントローラと、第３フラッシュイメージを記憶する第３フラッシュＲＯＭと、前記第１ＢＭＣ又は前記第２ＢＭＣを前記第３フラッシュＲＯＭに接続する第３スイッチデバイスと、を含み、
前記第２ノードは、第２ストレージコントローラと、第４フラッシュイメージを記憶する第４フラッシュＲＯＭと、前記第１ＢＭＣ又は前記第２ＢＭＣを前記第４フラッシュＲＯＭに接続する第４スイッチと、を含み、前記第４フラッシュイメージは、前記第３フラッシュイメージと同じである、ことを特徴とする請求項１に記載のマルチノードストレージシステム。
【請求項３】
前記第１ノードは、前記第１ストレージスイッチエキスパンダコントローラ及び前記第２ストレージスイッチエキスパンダコントローラに接続された第１の複数のストレージデバイスを含み、
前記第２ノードは、前記第１ストレージスイッチエキスパンダコントローラ及び前記第２ストレージスイッチエキスパンダコントローラに接続された第２の複数のストレージデバイスを含み、
前記第１ストレージデバイス及び前記第２ストレージデバイスは、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）及び不揮発性メモリエクスプレス（ＮＶＭｅ）のうち少なくとも１つを含む、ことを特徴とする請求項１に記載のマルチノードストレージシステム。
【請求項４】
前記ＮＶＭｅは、ホストコントローラインタフェース及びストレージプロトコルとして機能し、前記第２ストレージスイッチエキスパンダコントローラと前記ＳＳＤドライブとの間のデータ送信を促進する、ことを特徴とする請求項３に記載のマルチノードストレージシステム。
【請求項５】
前記第１フラッシュイメージは、第１ＢＭＣファームウェアフラッシュイメージを有し、前記第３フラッシュイメージは、第１ストレージスイッチエキスパンダコントローラファームウェアフラッシュイメージを有し、
前記第２フラッシュイメージは、第２ＢＭＣファームウェアフラッシュイメージを有し、前記第４フラッシュイメージは、第２ストレージスイッチエキスパンダコントローラファームウェアフラッシュイメージを有する、ことを特徴とする請求項２に記載のマルチノードストレージシステム。
【請求項６】
前記第１スイッチデバイス、前記第２スイッチデバイス、前記第３スイッチデバイス及び前記第４スイッチデバイスの各々は、マルチプレクサ（ＭＵＸ）を備え、前記第１ＢＭＣ及び前記第２ＢＭＣを多重化するように構成されており、
前記第１ＢＭＣは、前記第３フラッシュＲＯＭに記憶された前記第３フラッシュイメージ、又は、前記第４フラッシュＲＯＭに記憶された前記第４フラッシュイメージを取り出すように構成されており、
前記第２ＢＭＣは、前記第１フラッシュＲＯＭに記憶された前記第１フラッシュイメージ、又は、前記第２フラッシュＲＯＭに記憶された前記第２フラッシュイメージを取り出すように構成されている、ことを特徴とする請求項２に記載のマルチノードストレージシステム。
【請求項７】
マルチストレージノードシステムにおけるファームウェアのアップデート方法であって、前記方法は、
第１ノードをパワーサイクルする工程であって、前記第１ノードは、第１ベースボード管理コントローラ（ＢＭＣ）と、第１フラッシュイメージを記憶するように構成された第１フラッシュＲＯＭと、前記第１ＢＭＣを前記第１フラッシュＲＯＭに接続するように構成された第１スイッチデバイスと、を含む、工程と、
前記第１フラッシュＲＯＭの前記第１フラッシュイメージをアクティブにする工程と、
前記第１ノード内の少なくとも１つのハードウェアコンポーネントがオンラインでない若しくはファームウェアアップデートの準備ができていないこと、前記第２フラッシュイメージが破損していること、及び／又は、前記第１ノードがＯＳを起動することができないことのうち少なくとも１つを判別する工程と、
前記第１ＢＭＣが、第２ノードに記憶された第２フラッシュＲＯＭに記憶された第２フラッシュイメージを取り出すことであって、前記第１ＢＭＣは、前記第２ノードの第２スイッチデバイスに接続されており、前記第２フラッシュイメージは、前記第１フラッシュイメージと同じである、工程と、
を有することを特徴とするファームウェアのアップデート方法。
【請求項８】
前記第１ノードは、第１ストレージコントローラと、第３フラッシュイメージを記憶する第３フラッシュＲＯＭと、前記第１ＢＭＣ又は前記第２ＢＭＣを前記第３フラッシュＲＯＭに接続する第３スイッチデバイスと、を含み、
前記第２ノードは、第２ストレージコントローラと、第４フラッシュイメージを記憶する第４フラッシュＲＯＭと、前記第１ＢＭＣ又は前記第２ＢＭＣを前記第４フラッシュＲＯＭに接続する第４スイッチを含み、前記第４フラッシュイメージは、前記第３フラッシュイメージと同じである、ことを特徴とする請求項７に記載の方法。
【請求項９】
前記第１フラッシュイメージは、第１ＢＭＣファームウェアフラッシュイメージを有し、前記第３フラッシュイメージは、第１ストレージスイッチエキスパンダコントローラファームウェアフラッシュイメージを有し、
前記第２フラッシュイメージは、第２ＢＭＣファームウェアフラッシュイメージを有し、前記第４フラッシュイメージは、第２ストレージスイッチエキスパンダコントローラファームウェアフラッシュイメージを有する、ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記第１スイッチデバイス、前記第２スイッチデバイス、前記第３スイッチデバイス及び前記第４スイッチデバイスの各々は、マルチプレクサ（ＭＵＸ）を備え、前記第１ＢＭＣ及び前記第２ＢＭＣを多重化するように構成されている、ことを特徴とする請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークコンピューティング（network computing）に関し、より具体的には、マルチノードストレージシステムにおけるファームウェアのアップデートに関する。
【背景技術】
【０００２】
サーバ又はストレージシステムがパワーサイクルされると、中央処理装置（ＣＰＵ）によって行われる最初の動作は、ＢＩＯＳ（Basic Input and Output System）を起動するメッセージを送信することである。ＢＩＯＳは、ＰＯＳＴ（Power On Self-Test）と呼ばれる一連のテストを実行して、システムデバイスが正常に動作しているかどうかを確認する。ＢＩＯＳは、サーバが動作するために不可欠な機能を有効にする。ＢＩＯＳが破損している場合、ＣＰＵは機能することができない。しかし、一般的なＢＩＯＳは、破損した場合に、有効なＢＩＯＳイメージを復元することができる。これは、システム内で書き込み可能（in-system writable）ではないフラッシュメモリにリカバリプログラムを保存することによって実現される。これにより、リカバリプログラムが破損することがない。通常、リカバリプログラムは、最小限のシステムハードウェアを初期化して、フラッシュドライブ又は他の取り外し可能な媒体から新たなコードイメージを取得する機能を有する単純なコードである。この電源のパワーサイクル及び復元機能は、別のコントローラ（例えば、ベースボード管理コントローラやメモリスイッチコントローラ等）のファームウェアにも必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、マルチノードストレージシステムにおけるファームウェアアップグレード方法を提供する。
【課題を解決するための手段】
【０００４】
本発明は、第１ノード及び第２ノードを有するマルチストレージノードシステムを提供する。第１ノードは、第１ベースボード管理コントローラ（ＢＭＣ）と、第１フラッシュイメージを記憶するように構成された第１フラッシュＲＯＭと、第１ＢＭＣを第１フラッシュＲＯＭに接続するように構成された第１スイッチデバイスと、を含む。第２ノードは、第１スイッチデバイスに接続された第２ＢＭＣと、第２フラッシュイメージを記憶するように構成された第２フラッシュＲＯＭと、第２ＢＭＣを第２フラッシュＲＯＭに接続するように構成された第２スイッチデバイスと、を含む。第１ＢＭＣは、第２スイッチデバイスに接続されている。また、第２フラッシュイメージは、第１フラッシュと同じである。
【０００５】
いくつかの実施形態では、第１ノードは、第１ストレージコントローラと、第３フラッシュイメージを記憶するように構成された第３フラッシュＲＯＭと、第１ＢＭＣ又は第２ＢＭＣを第３フラッシュＲＯＭに接続するように構成された第３スイッチデバイスと、をさらに含む。いくつかの実施形態では、第２ノードは、第２ストレージコントローラと、第４フラッシュイメージを記憶するように構成された第４フラッシュＲＯＭと、第１ＢＭＣ又は第２ＢＭＣを第４フラッシュＲＯＭに接続するように構成された第４スイッチと、をさらに含み、第４フラッシュイメージは、第３フラッシュイメージと同じである。
【０００６】
また、第１ノードは、第１ストレージエキスパンダ／スイッチコントローラ及び第２ストレージエキスパンダ／スイッチコントローラに接続された第１の複数のストレージデバイスを含むことができる。第１の複数のストレージデバイスは、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、及び／又は、不揮発性メモリエクスプレス（ＮＶＭｅ）を含むことができる。いくつかの実施形態では、ＮＶＭｅは、ホストコントローラインタフェース及びストレージプロトコルとして機能するように構成されており、第１ストレージエキスパンダ／スイッチコントローラとＳＳＤドライブとの間のデータ送信を促進する。
【０００７】
同様に、第２ノードは、第１ストレージエキスパンダ／スイッチコントローラ及び第２ストレージエキスパンダ／スイッチコントローラに接続された第２の複数のストレージデバイスを含むことができる。第２の複数のストレージデバイスは、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、及び／又は、不揮発性メモリエクスプレス（ＮＶＭｅ）を含むことができる。ＮＶＭｅは、ホストコントローラインタフェース及びストレージプロトコルとして機能するように構成されており、第２ストレージエキスパンダ／スイッチコントローラとＳＳＤドライブとの間のデータ送信を促進する。
【０００８】
いくつかの実施形態では、第１フラッシュイメージは、第１ＢＭＣファームウェアフラッシュイメージを含み、第２フラッシュイメージは、第１ストレージエキスパンダ／スイッチコントローラファームウェアフラッシュイメージを含む。第３フラッシュイメージは、第２ＢＭＣファームウェアフラッシュイメージを含み、第４フラッシュイメージは、第２ストレージエキスパンダ／スイッチコントローラファームウェアフラッシュイメージを含む。
【０００９】
第１スイッチデバイス、第２スイッチデバイス、第３スイッチデバイス及び第４スイッチデバイスの各々は、マルチプレクサ（ＭＵＸ）を含む。第１スイッチデバイス、第２スイッチデバイス、第３スイッチデバイス及び第４スイッチデバイスは、第１ＢＭＣ及び第２ＢＭＣを多重化するように構成されてもよい。
【００１０】
いくつかの実施形態では、第１ＢＭＣは、第３フラッシュＲＯＭに記憶された第３フラッシュイメージ、又は、第４フラッシュＲＯＭに記憶された第４フラッシュイメージを取り出すように構成されている。同様に、第２ＢＭＣは、第１フラッシュＲＯＭに記憶された第１フラッシュイメージ、又は、第２フラッシュＲＯＭに記憶された第２フラッシュイメージを取り出すように構成されている。
【００１１】
本発明の様々な例は、マルチストレージノードシステムにおけるファームウェアのアップデート方法を提供する。方法は、第１ノードをパワーサイクル（power cycling）する工程を含む。第１ノードは、第１ＢＭＣと、第１フラッシュイメージを記憶するように構成された第１フラッシュＲＯＭと、第１ＢＭＣを第１フラッシュＲＯＭに接続するように構成された第１スイッチデバイスと、を含む。また、方法は、第１フラッシュＲＯＭ内の第１フラッシュイメージをアクティブにする工程を含む。方法は、第１ノード内のハードウェアコンポーネントがオンラインでないか、ファームウェアアップデートの準備ができているか、第２フラッシュイメージが破損しているか、及び／又は、第１ノードが起動できないかを判別する工程を含む。方法は、第１ＢＭＣによって、第２ノードに記憶された第２フラッシュＲＯＭ内に記憶された第２フラッシュイメージを取り出す工程を含む。第１ＢＭＣは、第２ノード内の第２スイッチデバイスに接続されている。第２フラッシュイメージは、第１フラッシュと同じである。
【００１２】
本発明の追加の特徴及び利点が、以下の説明に記載され、その一部が説明から明らかになるか、本明細書で開示されている原理を実施することで習得することができる。本発明の特徴及び利点は、添付の特許請求の範囲で特に指摘されている機器及び組み合わせの手段によって実現及び達成することができる。本発明のこれらの特徴及び他の特徴は、以下の説明及び添付の特許請求の範囲に完全に記載されているか、又は、本明細書に記載されている原理から得られる。
【発明の効果】
【００１３】
本発明によれば、効果的なファームウェアアップグレード方法を提供することができる。
【００１４】
上記の開示内容と、その利点及び特徴を得ることができる方法を説明するために、上記の原理のより具体的な説明は、添付の図面に示される特定の例を参照することによって提示される。これらの図面は、本開示の例示的な態様のみを示すものであり、よって、本発明の限定としてみなされない。以下の図面を使用して、これらの原理を、さらなる特徴及び詳細で記載及び説明する。
【図面の簡単な説明】
【００１５】
【図１】従来技術による、マルチノードストレージシステムを示す図である。
【図２】本発明の一実施形態による、マルチノードストレージシステムを示す図である。
【図３】本発明の一実施形態による、ファームウェアイメージをアップデート及び書き込むプロセスのフロー図である。
【発明を実施するための形態】
【００１６】
添付の図面を参照して本発明を説明する。図面において、類似又は同等の要素を示すために、同様の符号が用いられている。図面は縮尺通りに示されておらず、単に本発明を説明するために提供されている。本発明のいくつかの態様を、例示的なアプリケーションを参照して以下に説明する。本発明の十分な理解を提供するために、いくつかの特定の詳細、関係及び方法が示されていることを理解されたい。しかし、当業者であれば、１つ以上の特定の詳細を用いずに他の方法を用いて本発明を実施し得ることを容易に認識するであろう。他の例では、本発明を曖昧にするのを避けるために、周知の構造又は動作を詳細に示していない。いくつかの動作が異なる順序で及び／又は他の動作や事象と同時に発生し得るので、本発明は、図示された動作や事象の順序によって限定されない。さらに、本発明による方法を実施するために、図示された全ての動作や事象が必要とされているわけではない。
【００１７】
図１は、従来技術による従来のマルチノードストレージシステム５０を示す図である。マルチノードストレージシステム５０は、第１ノード１００と、第２ノード２００と、を有することができる。第１ノード１００及び第２ノード２００両方で示されるコンポーネントは同じである。不要な重複を回避するために、第１ノード１００について詳細に説明する。この例示のために、第２ノード２００のコンポーネントは、第１ノード１００と同じであることを理解されたい。
【００１８】
第１ノード１００は、複数のストレージデバイス１１０を含むことができる。複数のストレージデバイス１１０は、様々なタイプのストレージデバイスドライブを含むことができる。ストレージデバイスドライブは、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）及び不揮発性メモリエクスプレス（ＮＶＭｅ）デバイスを含むことができるが、これらに限定されない。また、第１ノード１００は、ストレージエキスパンダスイッチコントローラ１２０と、ベースボード管理コントローラ（ＢＭＣ）１５０と、第１フラッシュＲＯＭ１４０と、第２フラッシュＲＯＭ１６０と、を含む。第１フラッシュＲＯＭ１４０は、ＢＭＣ１５０に接続されており、第２フラッシュＲＯＭ１６０は、ストレージエキスパンダスイッチコントローラ１２０に接続されている。第１フラッシュＲＯＭ１４０は、ＢＭＣ１５０用のファームウェアを含み、第２フラッシュＲＯＭ１６０は、ストレージエキスパンダスイッチコントローラ１２０用のファームウェアを含む。また、第１ノード１００は、ローカルエリアネットワーク（ＬＡＮ）アダプタ１３０を含むことができる。第１ノード１００は、ＬＡＮアダプタ１３０を介して、サーバシステム又はリモートコントローラに接続され得る。
【００１９】
同様に、第２ノード２００は、ストレージエキスパンダスイッチコントローラ２２０と、ＢＭＣ２５０と、第３フラッシュＲＯＭ２４０と、第４フラッシュＲＯＭ２６０と、を含むことができる。第３フラッシュＲＯＭ２４０は、バス２４１によってＢＭＣ２５０に接続することができ、第４フラッシュＲＯＭ２６０は、バス２６１によってストレージエキスパンダスイッチコントローラ２２０に接続することができる。また、第２ノード２００は、第２ノード２００をサーバシステム又はリモートコントローラに接続するＬＡＮアダプタ２３０を含むことができる。
【００２０】
当業者であれば理解できるように、複数のストレージデバイス１１０のＮＶＭｅデバイスは、ホストコントローラインタフェース及びストレージプロトコルとして機能し、ストレージエキスパンダスイッチコントローラ１２０と、複数のストレージデバイス１１０内のストレージデバイス（例えば、ＳＳＤ等）との間のデータ送信を促進することができる。ストレージエキスパンダスイッチコントローラ１２０は、特定のタイプのバス（例えば、ＰＣＩｅ、ＳＡＳ又はＳＡＴＡ等）であり、バックプレーンボード上のストレージデバイスへのアクセスを可能にする。周辺機器相互接続エクスプレス（Peripheral Component Interconnect Express：ＰＣＩｅ）バス１１２を介した複数のストレージデバイス１１０とストレージエキスパンダスイッチコントローラ１２０との間のデータ送信が促進される。同様に、ＰＣＩｅバス１１１を介した複数のストレージデバイス１１０と第２ノード２００のストレージエキスパンダスイッチコントローラ２２０との間のデータ送信が促進される。複数のストレージデバイス２１０内のＮＶＭｅデバイスは、ＰＣＩｅバス２１２を介してストレージエキスパンダスイッチコントローラ１２０に接続し、ＰＣＩｅバス２１１を介してストレージエキスパンダスイッチコントローラ２２０に接続することができる。ここではＰＣＩｅバスが実施されているが、ＳＡＴＡ（Serial Advanced Technology Attachment）及びＳＡＳ（Serial Attached SCSI）インタフェースが実施されてもよいことを理解されたい。
【００２１】
また、第１ノード１００のＢＭＣ１５０は、ベースボードバス１５１，２５１によって、第２ノード２００のＢＭＣ２５０に接続されている。各制御ノードは、独立したＢＭＣを有しているので、これらは独立して又は共に動作することができる。さらに、ＢＭＣ１５０は、バス１４１によって第１フラッシュＲＯＭ１４０に接続されている。ストレージエキスパンダスイッチコントローラ１２０は、バス１６１によって第２フラッシュＲＯＭ１６０に接続されている。
【００２２】
ＢＭＣ１５０は、通常、第１フラッシュＲＯＭ１４０に配置されたファームウェアのコードイメージを含む。また、第１ノード１００は、第２フラッシュＲＯＭ１６０に配置されたストレージエキスパンダスイッチコントローラ１２０のファームウェアのコードイメージを有することができる。フラッシュに含まれるこれらのイメージは、ブートブロック（boot block）セクションとオペレーショナルコード（operational code）セクションとの少なくとも２つのコードセクションを有する。通常、ブートブロックは、ライトプロテクト（write-protected）されており、フィールドではアップデートされない。一方、オペレーショナルイメージは、フィールドでアップデートされる。既存のシステムでは、システムがオペレーティングシステム（ＯＳ）を起動した場合、ＢＭＣファームウェアイメージ（第１フラッシュＲＯＭ１４０に記憶されているイメージ）のアップデートのみ行われる。第１ノード１００がパワーサイクルされると、ＢＭＣ１５０によって行われる第１動作は、フラッシュＲＯＭ１４０に記憶されたファームウェアをアクティブにするメッセージを送信することである。次に、ファームウェアは、ＰＯＳＴ（Power On Self-Test）と呼ばれる一連のテストを実行して、システムデバイスが正常に動作しているかどうかを確認する。第２フラッシュＲＯＭ１６０に記憶されたファームウェアイメージは、ストレージエキスパンダスイッチコントローラ１２０が動作するための必須機能を行えるようにする。ファームウェアイメージのアップグレードが破損又は欠陥がある場合、システムは、ＢＭＣ１５０又はストレージエキスパンダスイッチコントローラ１２０を起動することができず、動作不能になる。本願は、独立して動作するＢＭＣ（例えば、第２ノード２００のＢＭＣ２５０）によってファームウェアをアップデートする方法及びシステムを教示する。
【００２３】
図２は、本発明の一実施形態による、マルチノードストレージシステム７５を示す図である。マルチノードストレージシステム７５は、第１ノード３００と、第２ノード４００と、を含むことができる。第１ノード３００及び第２ノード４００の両方で示されているコンポーネントは同じである。不要な重複を回避するために、第１ノード３００について詳細に説明する。例示のために、第２ノード４００のコンポーネントは、第１ノード３００のコンポーネントと同じであることを理解されたい。本明細書では２つのノードが示されているが、マルチノードストレージシステム７５は、数千ではないにしても数百のノードを有することができることを理解されたい。
【００２４】
第１ノード３００は、複数のストレージデバイス３１０を含むことができる。複数のストレージデバイス３１０は、様々なタイプのストレージデバイスドライブを含むことができる。ストレージデバイスドライブは、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）又は不揮発性メモリエクスプレス（ＮＶＭｅ）デバイスを含むことができるが、これらに限定されない。また、第１ノード３００は、ストレージエキスパンダスイッチコントローラ３２０と、ＢＭＣ３５０と、第１フラッシュＲＯＭ３４０と、第２フラッシュＲＯＭ３６０と、を含む。第１フラッシュＲＯＭ３４０は、第１スイッチデバイス３７０を介してＢＭＣ３５０に接続することができる。第２フラッシュＲＯＭ３６０は、第２スイッチデバイス３８０を介してストレージエキスパンダスイッチコントローラ３２０に接続することができる。これについては、以下に詳細に説明する。また、第１ノード３００は、ローカルエリアネットワーク（ＬＡＮ）アダプタ３３０を含むことができる。第１ノード３００は、ＬＡＮアダプタ３３０を介してサーバシステム又はリモートコントローラに接続することができる。
【００２５】
同様に、第２ノード４００は、ストレージエキスパンダスイッチコントローラ４２０と、ＢＭＣ４５０と、第３フラッシュＲＯＭ４４０と、第４フラッシュＲＯＭ４６０と、を含むことができる。第３フラッシュＲＯＭ４４０は、バス４４１及び第３スイッチデバイス４７０によってＢＭＣ４５０に接続することができる。第４フラッシュＲＯＭ４６０は、バス４６１及び第４スイッチデバイス４８０によってストレージエキスパンダスイッチコントローラ４２０に接続することができる。スイッチデバイスについては、第１ノード３００に関連して以下に詳細に説明する。第１ノード３００及び第２ノード４００のスイッチデバイスの機能が類似していることを理解されたい。また、第２ノード４００は、第２ノード４００をサーバシステム又はリモートコントローラに接続するＬＡＮアダプタ４３０を含むことができる。
【００２６】
当業者であれば理解できるように、複数のストレージデバイス３１０のＮＶＭｅデバイスは、ホストコントローラインタフェース及びストレージプロトコルとして機能し、ストレージエキスパンダスイッチコントローラ３２０と、複数のストレージデバイス３１０内に記憶された任意のＳＳＤドライブとの間のデータ送信を促進することができる。ＰＣＩｅバス３１２を介した複数のストレージデバイス３１０とストレージエキスパンダスイッチコントローラ３２０との間のデータ送信が促進される。同様に、ＰＣＩｅバス３１２を介した複数のストレージデバイス３１０と第２ノード４００のストレージエキスパンダスイッチコントローラ４２０との間のデータ送信が促進される。複数のストレージデバイス４１０内に記憶されたＮＶＭｅデバイスは、ＰＣＩｅバス４１２を介してストレージエキスパンダスイッチコントローラ３２０に接続され、ＰＣＩｅバス３１１を介してストレージエキスパンダスイッチコントローラ４２０に接続され得ることを理解されたい。また、ここではＰＣＩｅバスが実施されているが、ＳＡＴＡ及びＳＡＳインタフェースも実施可能であることも理解されたい。
【００２７】
また、第１ドライブ３００のＢＭＣ３５０は、ベースボードバス３５１，４５１によって、第２ドライブ４００のＢＭＣ４５０に接続されている。上述したように、ＢＭＣ３５０は、第１スイッチデバイス３７０を介して第１フラッシュＲＯＭ３４０に接続されている。具体的には、ＢＭＣ３５０は、バス３４１によって第１スイッチデバイス３７０に接続されている。第１スイッチデバイス３７０は、バス３４２によって第１フラッシュＲＯＭ３４０に接続することができる。ストレージエキスパンダスイッチコントローラ３２０は、第２スイッチデバイス３８０を介して第２フラッシュＲＯＭ３６０に接続されている。具体的には、ストレージエキスパンダスイッチコントローラ３２０は、バス３６１によって第２スイッチデバイス３８０に接続されている。第２スイッチデバイス３８０は、バス３６２によって第２フラッシュＲＯＭ３６０に接続することができる。
【００２８】
さらに、第２ノード４００のＢＭＣ４５０は、第１スイッチデバイス３７０を介して第１フラッシュＲＯＭ３４０に接続されている。具体的には、ＢＭＣ４５０は、バス３５１及びバス３７１によって、第１ノード３００の第１スイッチデバイス３７０に接続することができる。第１スイッチデバイス３７０は、第１フラッシュＲＯＭ３４０に接続することができる。同様に、ＢＭＣ３５０は、バス４１５及びバス４７１によって、第２ノード４００の第３スイッチデバイス４７０に接続することができる。第２ノード４００のＢＭＣ４５０は、第２スイッチデバイス３８０を介して第２フラッシュＲＯＭ３６０に接続されている。具体的には、ＢＭＣ４５０は、バス３５１及びバス３８１によって、第１ノード３００の第２スイッチデバイス３８０に接続することができる。第２スイッチデバイス３８０は、バス３６２によって第２フラッシュＲＯＭ３６０に接続することができる。同様に、ＢＭＣ３５０は、バス４５１及びバス４８１によって、第２ノード４００の第４スイッチデバイス４８０に接続することができる。
【００２９】
スイッチデバイス３７０，３８０は、ＳＰＩマルチプレクサ（ＭＵＸ）デバイスとして構成することができる。いくつかの実施形態では、第１スイッチデバイス３７０は、２つのＳＰＩ（Serial Peripheral Interface）マスタデバイス、ＢＭＣ３５０及びＢＭＣ４５０を、単一のスレーブデバイス（例えば、第１フラッシュＲＯＭ３４０等）に多重化することができる。ＢＭＣ３５０は、ＢＭＣ３５０から第１スイッチデバイス３７０に延在する出力ピンによって、第１スイッチデバイス３７０のマスタデバイスの選択を制御することができる。同様に、第２スイッチデバイス３８０は、２つのＳＰＩマスタデバイス、ストレージエキスパンダスイッチコントローラ３２０及びＢＭＣ４５０を、単一のスレーブデバイス（例えば、第２フラッシュＲＯＭ３６０等）に多重化することができる。ＢＭＣ４５０は、ＢＭＣ４５０から第２スイッチデバイス３８０に延在する出力ピンによって、バス３８１及びベースボードバス３５１を介してマスタデバイスの選択を制御することができる。
【００３０】
通常、ＢＭＣ３５０は、第１フラッシュＲＯＭ３４０に配置されたファームウェアコードイメージを有する。また、第１ノード３００は、第２フラッシュＲＯＭ３６０に配置されたストレージエキスパンダスイッチコントローラ３２０用のファームウェアコードイメージを有することができる。フラッシュに含まれるこれらのイメージは、ブートブロックセクションとオペレーショナルコードセクションとの少なくとも２つのコードセクションを有する。通常、ブートブロックはライトプロテクトされており、フィールドでアップデートされない。逆に、オペレーショナルイメージは、フィールドでアップデートされ得る。
【００３１】
例示的なマルチノードストレージシステム７５では、システムがＯＳを起動していなくても、第１フラッシュＲＯＭ３４０に記憶された第１ファームウェアイメージをアップデートすることができる。ファームウェアイメージのアップグレードが破損又は欠陥のある場合であっても、システムは、分離して独立したノードのＢＭＣ４５０を用いて、オペレーティングシステムを起動することができる。フラッシュイメージは、第３フラッシュＲＯＭ４４０から第１フラッシュＲＯＭ３４０にリカバーされ、次いで、第１ノード３００のリセット後に、ＢＭＣ３５０は、第１フラッシュＲＯＭ３４０から起動する。例えば、第１ノード３００がパワーサイクルされると、ＢＭＣ３５０が行う第１動作は、フラッシュＲＯＭ３４０及びフラッシュＲＯＭ３６０の両方に記憶されたファームウェアイメージをアクティブにするメッセージを送信することである。次に、ファームウェアは、ＰＯＳＴ（Power On Self-Test）と呼ばれる一連のテストを実行して、システムデバイスが正常に動作しているかどうかを確認する。第１フラッシュＲＯＭ３４０に記憶されたファームウェアイメージが破損している場合、ＢＭＣ３５０は、第２ノード４００の第３フラッシュＲＯＭ４４０に記憶されたファームウェアイメージを取り出すことができる。第２ノード４００の第３フラッシュＲＯＭ４４０に記憶されたファームウェアイメージは、第１フラッシュＲＯＭ３４０にコピーされ、第１ノード３００のＢＭＣ３５０を起動するために用いられる。同様に、ストレージエキスパンダスイッチコントローラ３２０用の第２フラッシュＲＯＭ３６０のファームウェアが破損している場合、ＢＭＣ３５０は、第４フラッシュＲＯＭ４６０内のファームウェアのコピーにアクセスし、これを第２フラッシュＲＯＭ３６０にコピーして、ストレージエキスパンダスイッチコントローラ３２０を起動することができる。
【００３２】
図３は、本発明の一実施形態による、ノードのＢＭＣ用のファームウェアイメージをアップデート及び書き込むプロセス６００のフロー図である。
【００３３】
本明細書で示されるプロセス６００を、図２のマルチノードストレージシステム７５のコンポーネントを参照して詳細に説明する。プロセス６００は、第２ノード４００を用いて、マルチノードストレージシステム７５の第１ノード３００内のファームウェアをアップデートする工程を詳細に説明する。最初の事項として、工程６０１において、第１ノード３００の複数のハードウェアコンポーネントがオンラインであり、ファームウェアのアップデートの準備ができているかどうかが判別される。第１ノード３００のハードウェアコンポーネントがオンラインであり、ファームウェアのアップデートの準備ができていると判別された場合、プロセスは工程６０２に進む。工程６０２において、マルチノードストレージシステム７５は、ＯＳを起動することを試みる。起動が成功した場合、プロセス６００は工程６０３に進み、ファームウェアのアップグレードを実行する。工程６０１において、ハードウェアコンポーネントがオンラインでないか、ファームウェアのアップデートの準備ができていない場合、プロセス６００は工程６０４に進む。同様に、工程６０２において、マルチノードストレージシステム７５がＯＳを起動することができない場合、プロセス６００は工程６０４に進む。最後に、工程６０１、工程６０２又は工程６０３において何れの条件も満たされない場合、プロセス６００は工程６０４に進み、ファームウェアのアップグレードが実行されない。この時点で、プロセス６００は工程６０５に進み、マルチノードストレージシステム７５がリモートシステムに切り替わる。この場合、リモートシステムは、第２ノード４００である。具体的には、ユーザファームウェアボリュームを、１つ以上のメモリデバイス（例えば、ＢＭＣ３５０の第１フラッシュＲＯＭ３４０、又は、ストレージエキスパンダスイッチコントローラ３２０の第２フラッシュＲＯＭ３６０等）に記憶することができる。ユーザファームウェアボリュームは、マルチノードストレージシステム７５の任意のフラッシュメモリストレージコンポーネントに記憶されることを理解されたい。ＢＭＣ３５０は、ブートプロセス中に第１ノード３００によって用いられるコントローラファームウェアをアップデートするためのファームウェアファイルを取得することができる。具体的には、ＢＭＣ３５０は、ファームウェアファイルを生成又はコンパイルし、これをメモリ（例えば、ＲＯＭ）に記憶して、第１ノード３００のコントローラファームウェアに展開（deployment）又は統合（integration）することができる。しかし、ファームウェアのアップデートプロセスが中断された場合又は完了できなかった場合、ＢＭＣ３５０は、第２ノード４００の第３フラッシュＲＯＭ４４０に記憶されたファームウェアイメージを取り出すことができる。第２ノード４００の第３フラッシュＲＯＭ４４０に記憶されたファームウェアイメージは、第１フラッシュＲＯＭ３４０にコピーされ得る。次に、コピーされたファームウェアを用いて、第１ノード３００のオペレーティングシステムを起動することができる。同じプロセスを第４フラッシュＲＯＭ４６０で実施可能であることを理解されたい。
【００３４】
本発明の特定の実施形態を示し説明してきたが、当業者は、より広い態様において本発明から逸脱することなく変更及び修正を行うことが可能であることが明らかであろう。よって、添付の特許請求の範囲の目的は、本発明の趣旨及び範囲内の全てのこのような変更及び修正をカバーすることである。上述した説明及び添付の図面に記載されている事項は、限定としてではなく例示としてのみ提供されている。本発明の実際の範囲は、従来技術に基づく適切な視点で見た場合に、特許請求の範囲で定義されていることを意図している。
【００３５】
本明細書で用いられる用語は、特定の実施形態のみを説明することを目的としており、本発明を限定することを意図していない。本明細書で使用されているように、単数形（例えば、「一」、「１つの」、「この」等）という単数形は、文脈が明らかにそうでないことを示さない限り、複数形も含むことを意図している。さらに、「含む」、「有する」等の用語又はこれらの変形は、詳細な説明及び／又は特許請求の範囲で使用される限りにおいて、「備える」という用語と同様の意味で包括的であることを意図している。
【００３６】
特に定義されない限り、本明細書で使用される用語（技術用語及び科学用語）は、当業者によって通常理解されるのと同じ意味を有する。さらに、一般的に使用される辞書で定義されているような用語は、関連する技術の文脈における意味と一致する意味を有すると解釈されるべきであり、本明細書で明示的に定義されていない限り、理想的又は過度に形式的な意味で解釈されない。
【符号の説明】
【００３７】
５０…従来のマルチノードストレージシステム
１００，３００…第１ノード
２００，４００…第２ノード
１１０，２１０，３１０，４１０…ストレージデバイス
１１１，１１２，２１１，２１２，３１１，３１２，４１１，４１２…ＰＣＩｅバス
１２０，２２０，３２０，４２０…ストレージエキスパンダスイッチコントローラ
１３０，２３０，３３０，４３０…ローカルエリアネットワークアダプタ
１４０，３４０…第１フラッシュＲＯＭ
１４１，１６１，２４１，２６１，３４１，３４２，３６１，３６２，３７１，３８１，４４１，４６１，４７１，４８１…バス
１５０，２５０，３５０，４５０…ＢＭＣ
１５１，２５１，３５１，４５１…ベースボードバス
１６０，３６０…第２フラッシュＲＯＭ
２４０，４４０…第３フラッシュＲＯＭ
２６０，４６０…第４フラッシュＲＯＭ
７５…マルチノードストレージシステム
３７０…第１スイッチデバイス
３８０…第２スイッチデバイス
４７０…第３スイッチデバイス
４８０…第４スイッチデバイス
６００…プロセス
６０１〜６０５…工程
【図１】
2020144834.tif 000003
【図２】
2020144834.tif 000004
【図３】
2020144834.tif 000005