(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-23
(45)【発行日】2025-01-07
(54)【発明の名称】情報処理装置、ネットワーク装置、及びネットワーク装置のファームウェアを更新する方法
(51)【国際特許分類】
G06F 8/654 20180101AFI20241224BHJP
G06F 21/64 20130101ALI20241224BHJP
G06F 21/57 20130101ALI20241224BHJP
【FI】
G06F8/654
G06F21/64
G06F21/57 320
(21)【出願番号】P 2023053868
(22)【出願日】2023-03-29
【審査請求日】2023-09-01
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】野口 峻
【審査官】松平 英
(56)【参考文献】
【文献】特開2010-49214(JP,A)
【文献】米国特許出願公開第2022/92208(US,A1)
【文献】米国特許出願公開第2009/307776(US,A1)
【文献】国際公開第2007/104988(WO,A1)
【文献】米国特許出願公開第2007/0016767(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/38
8/60-8/77
9/44-9/445
9/451
12/14
21/00-21/88
G09C 1/00-5/00
H04K 1/00-3/00
H04L 9/00-9/40
(57)【特許請求の範囲】
【請求項1】
情報処理装置であって、
コントローラと、
インタフェース装置を、を含み、
前記コントローラは、
前記インタフェース装置の更新用ファームウェアを含む圧縮ファイルを格納し、
前記圧縮ファイルの少なくとも一部の圧縮データを前記インタフェース装置に送信し、
前記インタフェース装置は、受信した前記圧縮データの署名検証処理と解凍処理とをパラレルに実行する、情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記コントローラは、前記圧縮ファイルから分割されたブロックを順次前記インタフェース装置に送信し、
前記インタフェース装置は、各ブロックの署名検証処理と解凍処理とをパラレルに実行する、情報処理装置。
【請求項3】
請求項1に記載の情報処理装置であって、
前記インタフェース装置は、不揮発メモリを含み、
前記不揮発メモリは、現在実行中のファームウェアを格納する第1領域と、前記第1領域と異なる第2領域とを含み、
前記インタフェース装置は、
前記圧縮データを解凍したデータを、前記第2領域に書き込み、
前記更新用ファームウェアの全ての前記第2領域への書き込み完了後、使用するファームウェアの読み出し元を、前記第1領域から前記第2領域に切替える、情報処理装置。
【請求項4】
請求項2に記載の情報処理装置であって、
前記インタフェース装置は、
不揮発メモリと揮発メモリとを含み、
前記コントローラから受信したブロックを前記揮発メモリに格納し、
前記揮発メモリに格納されているブロックの前記署名検証処理及び前記解凍処理をパラレルに実行し、解凍した前記ブロックを前記不揮発メモリに格納する、情報処理装置。
【請求項5】
請求項1に記載の情報処理装置であって、
前記コントローラは、前記インタフェース装置の現在のファームウェアのバージョンと前記更新用ファームウェアのバージョンとの関係及び更新強制実施モードの設定に基づいて、前記インタフェース装置のファームウェアの更新の要否を判定する、情報処理装置。
【請求項6】
請求項2に記載の情報処理装置であって、
複数のインタフェース装置を含み、
前記コントローラは、前記複数のインタフェース装置に、共通ブロックをパラレル送信する、情報処理装置。
【請求項7】
ネットワーク装置であって、
プロセッサと、
第1メモリと、
第2メモリと、を含み、
前記プロセッサは、
前記ネットワーク装置の更新用ファームウェアの少なくとも一部を含む圧縮データを他の装置から受信して、前記第1メモリに格納し、
前記圧縮データの署名検証処理と解凍処理とをパラレルに実行し、前記圧縮データを解凍したデータを前記第2メモリに格納する、ネットワーク装置。
【請求項8】
請求項7に記載のネットワーク装置であって、
前記プロセッサは、前記更新用ファームウェアの圧縮ファイルの分割ブロックを順次受信し、各分割ブロックの署名検証処理と解凍処理とをパラレルに実行する、ネットワーク装置。
【請求項9】
ネットワーク装置のファームウェアを更新する方法であって、
前記ネットワーク装置が、更新用ファームウェアの少なくとも一部を含む圧縮データを他の装置から受信して、第1メモリに格納し、
前記ネットワーク装置が、前記圧縮データの署名検証処理と解凍処理とをパラレルに実行し、前記圧縮データを解凍したデータを第2メモリに格納する、方法。
【請求項10】
請求項9に記載の方法であって、
前記ネットワーク装置が、前記更新用ファームウェアの圧縮ファイルの分割ブロックを順次受信し、各分割ブロックの署名検証処理と解凍処理とをパラレルに実行する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、ネットワーク装置、及びネットワーク装置のファームウェアを更新する方法に関する。
【背景技術】
【0002】
データストレージは、コンピュータシステムの基本的な機能である。多くのコンピュータシステムでは、大量のデータを扱う場合、それをストレージシステムに格納する。ストレージシステムは、データをHDD(Hard Disk Drive)やSSD(Solid State Drive)といった記憶媒体(記憶ドライブ)に格納し、外部からの命令に応じて、データの書き込みや読み出し処理を行う。
【0003】
本開示の背景技術として、国際公開第2020/122024号がある。国際公開第2020/122024号は、「プログラム可能論理回路を搭載したネットワークインタフェースカード(NIC)の回路情報の書き換えに伴うシステムの可用性への影響を低減する。NICは、記録された回路情報に従って、入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備える。」を開示する。この技術はサービス継続中のプログラム書換えにスイッチと制御回路が必要とする。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、ストレージシステムのインタフェース装置(ネットワーク装置とも呼ぶ)の高機能化に伴い、インタフェース装置で実行されるソフトウェアサイズも増大している。例えば、負荷の高い処理を実行可能なプロセッサを搭載するスマートNICは、OS及びOS上で動作するアプリケーションを実行する他、ASICのためのソフトウェアを実行することがある。
【0006】
上記のように、インタフェース装置のソフトウェアサイズが大きいことで、そのソフトウェアの更新に、多くのリソースが必要となり得る。また、常時稼働し続けることが要求されるストレージシステムでは、IO無停止でインタフェース装置のソフトウェアの更新を行うことが求められるため、インタフェース装置の多くのメモリ領域を割り当てることは困難である。従って、インタフェース装置のソフトウェア更新は、容量制限がある中で適切に行うことが求められる。
【課題を解決するための手段】
【0007】
本発明の一態様の情報処理装置は、コントローラと、インタフェース装置を、を含み、前記コントローラは、前記インタフェース装置の更新用ファームウェアを含む圧縮ファイルを格納し、前記圧縮ファイルの少なくとも一部の圧縮データを前記インタフェース装置に送信し、前記インタフェース装置は、受信した前記圧縮データの署名検証処理と解凍処理とをパラレルに実行する。
【0008】
本発明の一態様のネットワーク装置は、プロセッサと、第1メモリと、第2メモリと、を含み、前記プロセッサは、前記ネットワーク装置の更新用ファームウェアの少なくとも一部を含む圧縮データを他の装置から受信して、前記第1メモリに格納し、前記圧縮データの署名検証処理と解凍処理とをパラレルに実行し、前記圧縮データを解凍したデータを前記第2メモリに格納する。
【発明の効果】
【0009】
本開示の一態様によれば、ネットワーク装置のソフトウェア更新を効果的に実行できる。
【図面の簡単な説明】
【0010】
【
図1】本明細書の一実施例に係るストレージコントローラ及びスマートNICの構成例を示す。
【
図2】本明細書の一実施例に係る、スマートNICのファームウェア更新を模式的に示す動作概念図である。
【
図3】スマートNICファームウェアに含まれるデータの例を示す。
【
図4】本明細書の一実施例に係る、スマートNICのファームウェア更新の全体処理のフローチャートを示す。
【
図5】ストレージコントローラが保持するCHB FW更新状態管理テーブルの構成例を示す。
【
図6】ストレージコントローラが保持するCHB管理テーブルの構成例を示す。
【
図7】CHBのファームウェアの更新の契機を示す。
【
図8】CHBのファームウェア更新の判定基準を示す。
【
図9】CHB FW更新状態管理テーブルの構成例を示す。
【
図10】FWバージョン管理テーブルの構成例を示す。
【
図11】本明細書の一実施例に係る、スマートNICのファームウェア更新の全体処理のシーケンス図を示す。
【
図12】スマートNICによるファームウェア更新処理を説明するための概念図である。
【
図13】複数のCHBを含む構成における、スマートNICのファームウェア更新処理を説明するための概念図である。。
【
図14】スマートNICのファームウェア更新における、初期部分のシーケンス図を示す。
【
図15】スマートNICのファームウェア更新における、OSイメージの一つのブロックに対する処理のシーケンス図を示す。
【
図16】スマートNICのファームウェアの終端処理及び面切替え処理のシーケンス図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施例を図面に基づいて詳細に説明する。以下の説明において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、以下に説明する実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【0012】
図1は、本明細書の一実施例に係るストレージコントローラ10及びスマートNIC(Network Interface Card)20の構成例を示す。これらは、情報処理装置の例であるストレージシステムに実装される。スマートNIC20は、インタフェース装置又はネットワーク装置の一例であって、チャネルボード(CHB)に含まれている。以下に説明する例において、スマートNIC20は、ホストとストレージコントローラ10との通信のインタフェースであるものとする。なお、本実施例のスマートNICは、ストレージ装置間又はストレージコントローラ間にインタフェース装置として使用することもできる。
【0013】
ストレージコントローラ10は、不揮発性メモリであるSSD(Solid State Drive)101、コントローラ102、及び揮発性メモリであるDRAM104を含む。コントローラ102は、複数のプロセッサコア103を含む。プロセッサコア103はプロセッサであり、1以上のプロセッサコアをそれぞれ含む複数のCPUが実装されていてもよい。
【0014】
DRAM104は、コントローラ102が実行するプログラム及び参照する情報を格納している。具体的には、NIC FW更新状態管理テーブル105及びCHB管理テーブル106が格納されている。FWは、ファームウェアを表す。さらに、IO処理プログラム107、及び保守処理プログラム108が格納されている。DRAM104が格納するデータは、例えば、SSD101からロードされる。コントローラ102は、プログラムに従って動作することで、所定の機能部として動作する。
【0015】
IO処理プログラム107は、ホスト装置から受領したIO要求に応じた処理を行う。保守処理プログラム108は、保守コマンド(ユーザがGUI経由で操作できるコマンド)をスマートNIC20に送信し、ホスト装置と通信するためのネットワーク設定やFWファームウェア更新などを行う。ファームウェア更新は、既存のファームウェアの一部又は全部を交換することを含む。
【0016】
スマートNIC20は、NIC ASIC201、コントローラ202、DRAM204、フラッシュメモリ210及び不揮発性メモリカードである組み込みメモリ(embedded memory)215を含む。コントローラ202は、複数のプロセッサコア203を含む。プロセッサコア203はプロセッサであり、1以上のプロセッサコアをそれぞれ含む複数のCPUが実装されていてもよい。
【0017】
DRAM204は、コントローラ202が実行するプログラム及び参照する情報を格納している。具体的には、スマートNIC FW更新状態管理テーブル205、FWバージョン管理テーブル206、IO処理プログラム207、保守処理プログラム208、ネットワークプロトコル処理プログラム209を格納している。DRAM204は、このほか、不図示のOSを格納している。
【0018】
ネットワークプロトコル処理プログラム209は、ホスト装置との通信プロトコルと、ストレージシステム内の通信プロトコルとの間の変換を行う。IO処理プログラム207は、ホスト装置から受領した要求に応じてストレージコントローラ10と通信するためのコマンドの生成や、ホスト装置/ストレージコントローラ10へのデータ転送処理を行う。
【0019】
保守処理プログラム208は、ストレージコントローラ10から渡された保守コマンド情報に基づき、スマートNIC20に設定値を反映させ、また、ファームウェア更新を実行する。
【0020】
フラッシュメモリ210は、NIC ASIC201のファームウェア(NIC FW)211を格納している。組み込みメモリ215は、OSイメージ216、Bootloader217、及び設定情報/バージョン情報218を格納する。また、組み込みメモリ215は、スマートNICのファームウェア更新において、一時情報219を一時的に格納する。また、
図1には図示されないが、組み込みメモリ215は、一時情報219の格納を行うコントローラを格納する。当該コントローラの動作の詳細については後述する。
【0021】
OSイメージ216は、コントローラ202が実行するOS及びプログラム207から209を含む。Bootloader217は、OSのブートプログラムである。設定情報/バージョン情報218は、DRAM204に格納されるテーブル205、206及び他の管理情報を含む。
【0022】
図2は、本明細書の一実施例に係る、スマートNIC20のファームウェア更新を模式的に示す動作概念図である。以下においては、古いファームウェア全体が、新しいファームウェアに交換される例が説明される。本明細書で説明するスマートNIC20のファームウェア更新は、ストレージシステムと異なる情報処理装置、例えば、サーバに実装されたスマートNIC20に適用することができる。また、スマートNICと異なるインタフェース装置又は通信処理装置に適用することができる。
【0023】
管理サーバ30は、新たなOSイメージ216とNIC FW211から、スマートNIC FWを作成し、その圧縮データ301(圧縮ファイルとも呼ぶ)を生成する。圧縮データ301に対して、署名が付与される。ここでは、OSイメージ216は、ブートプログラムBootloader217も含むものとする。ストレージコントローラ10は、管理サーバ30から、不図示の管理ネットワークを介してスマートNIC FWの圧縮データ301及びそのヘッダ情報を受信して、SSD101に格納する。データ圧縮されていることで、ストレージコントローラ10で必要される記憶領域を低減できる。
【0024】
図3は、スマートNIC FW300に含まれるデータの例を示す。スマートNIC FWは、SNIC FWヘッダ情報305及びSNIC FWデータ307を含む。SNIC FWヘッダ情報305は、SNIC FWデータ307についての情報を含み、例えば、SNIC FWデータ307のバージョン情報や、生成された日時情報、及び圧縮されたSNIC FWデータ307のデータサイズ、署名方式、OSイメージ216とNIC FW211の署名等を含む。
【0025】
SNIC FWデータ307は、NIC FW211及びOSイメージ216を含む。上述のように、ここでのOSイメージ216は、Bootloader217も含む。管理サーバ30からストレージコントローラ10のSSD101に書き込まれる圧縮データ301は、圧縮されたSNIC FWデータ307と、非圧縮のSNIC FWヘッダ情報305を含む。
【0026】
図2に戻って、ストレージコントローラ10のフロントエンドモジュール130は、IO処理プログラム107及び保守処理プログラム108を含む。フロントエンドモジュール130は、SSD101にスマートNIC FWの圧縮データ301を格納する。フロントエンドモジュール130は、圧縮データを複数のブロックに分割し、先頭ブロックからブロックの配列順で、分割ブロックを、DRAM104を介してスマートNIC20に転送する。圧縮データのブロックを転送することで、転送回数を低減できる。DRAM104は、全てのブロックを同時に格納することはなく、1又は複数の一部のブロックのみを一時的に格納する。例えば、ブロック毎にSSDからDRAM104に読み出され、同時に複数ブロックを格納することなく、転送される。なおDRAM104内で圧縮データが分割されてもよい。
【0027】
スマートNIC20のフロントエンドモジュール230は、IO処理プログラム207、保守処理プログラム208を含む。コントローラ202は、フロントエンドモジュール230を実行して、分割転送された各ブロックの署名検証処理と、解凍処理及び組み込みメモリ215への書き込み処理と、を並列に実行する。
図1に示すように、コントローラ202は、複数のコア203を含む。異なるコアが、ブロックの署名検証処理と解凍及び書き込み処理を並列に実行する。これにより、処理速度を増加できる。例えば、一つのブロックの組み込みメモリ215への書き込み要求が完了すると、次のブロックがDRAM204に格納される。以後説明するスマートNIC20のフロントエンドモジュール230の動作もコントローラ202が実行している。
【0028】
ストレージコントローラ10のフロントエンドモジュール130は、圧縮データの分割ブロックの転送開始前に、圧縮データの全体サイズの情報を、スマートNIC20に渡す。また、各ブロックに転送において、転送されるブロックが圧縮データ全体におけるどの部分であるか、転送で送るサイズはいくつであるかを伝える。
【0029】
スマートNIC20のフロントエンドモジュール230は、各ブロックについて実行可能な署名検証処理の一部を実行し、また、ブロックの解凍及び組み込みメモリ215への書き込み処理を実行する。終端のブロックの署名検証が終了すると、各ブロックの署名検証結果から、圧縮データ全体の署名検証を完了することができる。また、解凍されたブロックは、アドレス間の関連付けによって、OSイメージ又はNICファームウェアに統合される。
【0030】
上述のように、圧縮データ301を分割処理することで、ファームウェア更新に必要なストレージコントローラ10及びスマートNIC20のDRAM領域を低減することができる。これにより、ストレージコントローラ10のホストデータのキャッシュ領域又はCHBのホストデータのバッファ領域の減少を抑制できる。なお、分割処理することなく、圧縮データ301を一括して、署名検証処理並びに解凍及び書き込み処理を実行してもよい。また、分割ブロックの署名検証及び解凍は公知の技術を使用できる。
【0031】
圧縮データ301全体の署名検証処理は、ブロックに対する部分処理で構成される。コントローラ202は、先頭ブロックから配列順に全てのブロックの署名検証処理を行うことで、圧縮データ301全体の署名検証処理を完了することができる。
【0032】
コントローラ202は、解凍処理したブロックを、DRAM204を介して、組み込みメモリ215の記憶領域に書き込む。NIC FW211は、組み込みメモリ215の一時記憶領域に格納された後、フラッシュメモリ210に格納される。解凍されたOSイメージ216の部分は、順次、DRAM204から組み込みメモリ215の記憶領域に格納される。
【0033】
フラッシュメモリ210は、正面と副面の二つの論理パーティション(記憶領域)を含む。新たなNIC FW211は、フラッシュメモリ210の副面に格納される。更新前の古いNIC FW211は、フラッシュメモリ210の正面に格納されている。また、組み込みメモリ215の記憶領域は、正面と副面の二つの論理パーティションを含む。新たなOSイメージ216は、組み込みメモリ215の副面に格納される。
【0034】
更新前の古いOSイメージ216は、フラッシュメモリ210の正面に格納されている。後述するように、正常に新しいファームウェアが副面に格納された後、正面と副面の切り替えが実行される。切替えにより、使用するファームウェアの読み出し元が、切替前の正面から切替前の副面に変更される。再度ファームウェアをロードした際に切り替え後の正面で起動することができる。現在起動中の面に対して書き込みを行わず、副面への格納しているため、ホストへのサービス(ホストからのアクセス)が継続可能である。
【0035】
図4は、本明細書の一実施例に係る、スマートNIC20のファームウェア更新の全体処理のフローチャートを示す。まず、管理サーバ30は、OSイメージとNIC FWを統合して、スマートNIC FWデータ307を生成する(S11)。管理サーバ30は、さらに、スマートNIC FWデータ307を圧縮して、スマートNIC FWヘッダ情報305を含む圧縮データ301を生成する(S12)。圧縮データ301には、署名が付与される。これにより、安全性及び信頼性が向上する。
【0036】
ストレージコントローラ10のコントローラ102は、圧縮データ301を管理サーバ30から受信して、SSD101に格納する。コントローラ102は、圧縮データ301を分割して、DRAM104を介してスマートNIC20に順次転送する(S13)。
【0037】
スマートNIC20のフロントエンドモジュール230(コントローラ202)は、転送単位(分割ブロック単位)で、署名検証、解凍、組み込みメモリ215の記憶領域への書き込み、及びフラッシュメモリ210へのNIC FWの書き込み(NIC FW更新)を行う(S14)。
【0038】
次に、フロントエンドモジュール230は、組み込みメモリ215の記憶領域に格納されている新たしいOSイメージ216の複数の解凍されたブロック(部分)と、フラッシュメモリ210に格納されている新しいNIC FW211の複数の解凍されたブロック(部分)とを、それぞれ、アドレスの関連付けにより再統合する(S15)。
【0039】
次に、フロントエンドモジュール230は、組み込みメモリ215の記憶領域とフラッシュメモリ210のそれぞれにおいて、起動面を、正面から副面に切り替える(S16)。さらに、フロントエンドモジュール230は、スマートNIC20の再起動を実行する(S17)。これにより、新たな正面に格納されている新しいファームウェアが実行される。正常に再起動が実行されない場合(S18:NO)、スマートNIC20は、閉塞する(S19)。正常に再起動した場合(S18:YES)、スマートNIC20は、新しいファームウェアで処理を再開する。
【0040】
ストレージコントローラ10及びスマートNIC20が保持している情報を説明する。
図5は、ストレージコントローラ10が保持するCHB FW更新状態管理テーブル105の構成例を示す。CHB FW更新状態管理テーブル105は、CHBのファームウェアの更新処理の状態を管理する。なお、ここでは、各CHBに実装されたスマートNICの数は1であり、CHBのファームウェアの更新処理についての情報は、スマートNICの更新処理についての情報を意味する。
【0041】
CHB FW更新状態管理テーブル105は、CHB ID欄151、ファームウェア更新受け付状態欄152、ファームウェア更新中欄153、及び面切替え状態欄154を含む。ストレージコントローラ10は、スマートNIC20からの応答に応じて、CHB FW更新状態管理テーブル105を随時更新する。
【0042】
CHB ID欄151は、CHBの識別子(ID)を示し、これは、スマートNICのIDと見なすことができる。ファームウェア更新受け付状態欄152は、CHBが、ファームウェアの更新処理を受け付け可能であるか示す。ファームウェア更新中欄153は、CHBがファームウェア更新処理中であるかを示す。面切替え状態欄154は、CHBが、面切替え処理を実行可能であるかを示す。
【0043】
図6は、ストレージコントローラ10が保持するCHB管理テーブル106の構成例を示す。CHB管理テーブル106は、CHBのファームウェアバージョン及びその他の属性情報を含む。
【0044】
図6の例において、CHB管理テーブル106は、CHB ID欄161、稼働状態欄162、ファームウェアバージョン欄163、及びネットワーク情報欄164、を含む。ストレージコントローラ10は、CHB管理テーブル106を、管理及び更新する。
【0045】
稼働状態欄162は、CHBは、CHBが現在正常に稼働しているか否かを示す。稼働状態欄162は、スマートNIC20からの応答に応じて、随時更新される。ファームウェアバージョン欄163は、ストレージコントローラが保持しているCHBのファームウェアのバージョンを示す。ネットワーク情報欄164は、CHBの通信の情報、例えば、IPアドレスやデータ転送のパケットサイズ等を示す。
【0046】
図7及び
図8は、ストレージコントローラ10が予め保持している他の情報を説明するための図である。
図7は、CHBのファームウェアの更新の契機を示す。
図7が示す契機に対して、ストレージコントローラ10は、
図11に示すシーケンスを開始して、CHBの必要なファームウェア更新を実行する。
【0047】
図8は、CHBのファームウェア更新の判定基準を示す。ストレージコントローラ10が保持している更新用ファームウェアと現在のCHBのファームウェアバージョン及び強制実施モードの設定に基づいて、ファームウェア更新の有無が判定される。なお、これらの一方のみ、例えば、ファームウェアバージョンの関係のみに基づいて判定されてもよく、他の条件が使用されてもよい。
【0048】
図8に示す例において、更新用のファームウェアのバージョンが現在のCHBのファームウェアのバージョンと同一であるとき、強制実施モードの有無にかかわらず、ファームウェア更新は実施されない。更新用のファームウェアのバージョンが現在のCHBのファームウェアのバージョンより小さいとき(より古いバージョンであるとき)、強制実施モードがONであれば、ファームウェア更新が実施され、OFFであれば実施されない。更新用のファームウェアのバージョンが現在のCHBのファームウェアのバージョンより大きいとき(より新しいバージョンであるとき)、強制実施モードの有無にかかわらず、ファームウェア更新は実施される。
【0049】
図9及び
図10は、スマートNIC20が保持する管理情報の例を示す。
図9は、CHB FW更新状態管理テーブル205の構成例を示す。CHB FW更新状態管理テーブル205は、ファームウェア更新処理におけるCHBの状態を管理する。CHB FW更新状態管理テーブル205は、コントローラ202によって随時更新される。
【0050】
図9に示す例において、CHB FW更新状態管理テーブル205は、CHB ID欄251、ファームウェア更新受付状態欄252、ファームウェア転送状態欄253、面切替え受付可能状態欄254、面切替え実行中欄255、及びリセット待ち欄256を含む。
【0051】
ファームウェア更新受付状態欄252は、スマートNIC20が、ファームウェア更新を受け付け可能であるか否かを示す。ファームウェア転送状態欄253は、ファームウェア更新処理の現在状態を示す。
図9に示す例において、署名検証実行状態欄は、署名検証を現在実行しているブロックを示す。解凍・書込状態欄は、解凍・書込処理を現在実行しているブロックを示す。NIC FW解凍状態欄は、NIC FWの解凍が完了しているか否かを示す。
【0052】
面切替え受付可能状態欄254は、スマートNIC20が、面切替えを受け付けることができるか否かを示す。面切替えは、組み込みメモリ215とフラッシュメモリ210の正面と副面の切替えである。面切替え実行中欄255は面切替えの実行状態を示し、面切替えが実施済みであるか、又は実行中であるかを示す。リセット待ち欄256は、スマートNIC20がリセット処理を実行可能であるか否かを示す。
【0053】
図10は、FWバージョン管理テーブル206の構成例を示す。FWバージョン管理テーブル206は、スマートNIC20のファームウェアの現在のバージョンを管理する。
図10に示す例において、FWバージョン管理テーブル206は、CHB ID欄261、ファームウェアバージョン欄262、及び更新時刻欄263を含む。ファームウェアバージョン欄262はスマートNIC20の現在のファームウェアバージョンを示し、更新時刻欄263はその更新時刻(日にちを含む)を示す。
【0054】
図11は、本明細書の一実施例に係る、スマートNIC20のファームウェア更新の全体処理のシーケンス図を示す。ストレージコントローラ10は、スマートNIC20に対して、現在のスマートNICファームウェアのバージョンを要求する(S31)。ストレージコントローラ10は、
図7を参照して説明した契機において、ファームウェア更新の処理を開始することができる。また、ストレージコントローラ10は、CHB FW更新状態管理テーブル105を参照して、ファームウェア更新開始の可否を判定できる。
【0055】
スマートNIC20のコントローラ202は、そのファームウェアバージョンの情報を、ストレージコントローラ10に返す(S32)。ファームウェアバージョンの情報は、FWバージョン管理テーブル206に格納されている。ストレージコントローラ10は、受信したスマートNIC20の現在のファームウェアバージョンと、CHB管理テーブル106が示すファームウェアバージョンとを比較して、スマートNIC20のファームウェアの更新の要否を判定する。要否判定は、
図8を参照して説明した情報に基づくことができる。
【0056】
ファームウェア更新が必要である場合、ストレージコントローラ10及びスマートNIC20は、ステップS33からS36を、圧縮データの各分割ブロックについて実行する。
【0057】
ストレージコントローラ10は、更新用ファームウェアデータの圧縮ブロックを、SSD106からDRAM104にステージングし(S33)、FW更新要求をスマートNIC20に送信する(S34)。スマートNIC20は、DMAによってブロックを受信し(S35)、
図2を参照して説明したように、署名検証と解凍及び書き込みを並列に実行する。NICファームウェアは、組み込みメモリ215に一端格納された後にフラッシュメモリ210に書き込まれる(S36)。スマートNIC20のコントローラ202は、ブロックの処理が完了すると、応答をストレージコントローラ10に返す。
【0058】
全てのブロックについて上記処理が終了すると、ストレージコントローラ10は、面切替え要求をスマートNIC20に送信する(S37)。要求の可否はCHB FW更新状態管理テーブル105に基づいてよい。スマートNIC20のコントローラ202は、要求を受けて面切替えを実行し(S38)、応答をストレージコントローラ10に返す。
【0059】
以下において、スマートNIC20によるファームウェア更新処理の流れをより具体的に説明する。
図12は、スマートNIC20によるファームウェア更新処理を説明するための概念図である。
【0060】
NICファームウェア211とOSイメージ216を含む圧縮データの分割ブロックが、DMAによって、ストレージコントローラのDRAM104から、スマートNIC20のDRAM204に順次転送される。スマートNIC20は、一つ一つの圧縮データブロックに対して、署名検証と解凍及び書き込みを行っていく。署名検証と解凍及び書き込みは、異なるコア203によって並列実行される。例えば、一つのブロックの書き込み後に、次のブロックが転送される。
【0061】
スマートNIC20は、全てのブロックがそろった段階で、処理の成功/失敗の判定を行う。署名検証と解凍(及び書き込み)の両方が正常終了した場合のみ、成功となる。全てのブロックがそろわないと圧縮データ全体としての処理を完了はできないが、ブロック毎に可能な処理を行うことで、必要なメモリ領域を低減できる。
【0062】
図13は、複数のCHBを含む構成における、スマートNIC20のファームウェア更新処理を説明するための概念図である。ストレージコントローラ10は、共通ブロックを、その管理下のファームウェア更新を実行する全てのCHBにパラレルで転送する。これにより、効率的なファームウェア更新が可能となる。各CHBは、
図12を参照して説明したように動作する。
【0063】
以下において、スマートNIC20のファームウェア更新処理の流れを、複数のシーケンス図を参照して説明する。
図14は、スマートNIC20のファームウェア更新における、初期部分のシーケンス図を示す。
図14に示す部分において、管理サーバ30からストレージコントローラ10への更新ファームウェアの送信及びNICファームウェア211の部分の署名検証及び解凍が実行される。
【0064】
まず管理サーバ30は、スマートNIC20のファームウェアの圧縮データを作成して(S101)、ストレージコントローラ10のSSD11に格納する(S102)。ストレージコントローラ10のフロントエンドモジュール130は、SSD101の圧縮データの一部であるブロックを、DRAM104にステージングする(S103)。ここでは、NICファームウェア211の圧縮データの全てが一つのブロックに格納されているとする。フロントエンドモジュール130は、スマートNIC20にDRAM104に格納されているブロックの転送を要求する(S104)。
【0065】
スマートNIC20のフロントエンドモジュール230(コントローラ202)は、DMA転送を使用して、ストレージコントローラ10のDRAM104に格納されているブロックを、そのDRAM204に格納する(S105,S106)。
【0066】
フロントエンドモジュール230はDRAM204からブロックを読み出して(S107)、ブロックの署名検証(S108)と解凍・書き込み(S109)をパラレルに実行する。フロントエンドモジュール230は、解凍されたNICファームウェア211(ブロック)のステージングを、組み込みメモリ215のコントローラ501に要求する(S110)。コントローラ501は、解凍されたNICファームウェア211を組み込みメモリ215の記憶領域502に一時的に格納する(S111)。
【0067】
その後、フロントエンドモジュール230は、記憶領域502のNICファームウェア211を、フラッシュメモリ210の副面に書き込む(S112)。さらに、フロントエンドモジュール230は、NICファームウェア211の処理の成功/失敗をストレージコントローラ10に応答する(S113)。
【0068】
図15は、スマートNIC20のファームウェア更新における、OSイメージ216の一つのブロックに対する処理のシーケンス図を示す。OSイメージ216のブロックそれぞれに対して、
図15に示すシーケンスが実行される。
【0069】
まず、ストレージコントローラ10のフロントエンドモジュール130は、SSD101のブロックを、DRAM104にステージングする(S151)。フロントエンドモジュール130は、スマートNIC20にDRAM104に格納されているブロックの転送を要求する(S152)。
【0070】
スマートNIC20のフロントエンドモジュール230は、DMA転送を使用して、ストレージコントローラ10のDRAM104に格納されているブロックを、そのDRAM204に格納する(S153、S154)。
【0071】
フロントエンドモジュール230はDRAM204からブロックを読み出して(S155)、ブロックの署名検証(S156)と解凍・書き込み(S157)をパラレルに実行する。フロントエンドモジュール230は、解凍されたOSイメージのブロックの書き込みを、組み込みメモリのコントローラ501に要求する(S158)。
【0072】
コントローラ501は、解凍されたブロックを組み込みメモリの記憶領域502におけるOSイメージの副面に格納する(S159)。コントローラ501は、データ書き込み後に、応答をフロントエンドモジュール230に返す(S160)。フロントエンドモジュール230は、ブロックの処理の成功/失敗をストレージコントローラ10に応答する(S161)。
【0073】
次に、ファームウェアの終端処理及び面切替え処理を説明する。
図16は、スマートNIC20のファームウェアの終端処理及び面切替え処理のシーケンス図である。ストレージコントローラ10のフロントエンドモジュール130は、SSD101の終端のブロックを、DRAM104にステージングする(S181)。
【0074】
フロントエンドモジュール130は、スマートNIC20にDRAM104に格納されているブロックの転送を要求する(S182)。その後、
図15を参照して説明したように、署名検証及び解凍・書き込み処理が実行される。
【0075】
次に、スマートNIC20のフロントエンドモジュール230は、組み込みメモリ215に格納されているデータについてフラッシュ処理を実行して(S183)、組み込みメモリ215へのデータ書き込みを担保する。次に、フロントエンドモジュール230は、全てのブロックの署名検証の結果を参照して、圧縮データ全体の署名検証が完了していることを確認する(S184)。
【0076】
署名検証が完了していれば、組み込みメモリ215の副面に格納されているファームウェアによって、起動できることを意味する。そのため、フロントエンドモジュール230は、組み込みメモリ215に格納されているBootloader217(ブートプログラム)を更新する(S185)。最後に、フロントエンドモジュール230は、CHB FW更新状態管理テーブル205を更新し、スマートNIC20を面切り替え受付可能状態とする。
【0077】
ストレージコントローラ10は、スマートNIC20から、ファームウェア更新の成功/失敗の応答を受信する(S187)。更新が成功であれば、ストレージコントローラ10は、スマートNIC20に面切替えを要求する(S188)。
【0078】
スマートNIC20のフロントエンドモジュール230は、組み込みメモリ215及びフラッシュメモリ210における面切替えを実行し(S189)、FWバージョン管理テーブル206を更新する(S190)。フロントエンドモジュール230は、ストレージコントローラ10に、面切替えの成功/失敗の応答を返す(S191)。
【0079】
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0080】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード等の記録媒体に置くことができる。
【0081】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0082】
10 ストレージコントローラ
20 スマートNIC
101 SSD
102 コントローラ
103 プロセッサコア
104 DRAM
107 IO処理プログラム
108 保守処理プログラム
130 フロントエンドモジュール
201 NIC ASIC
202 コントローラ
203 プロセッサコア
204 DRAM
207 IO処理プログラム
208 保守処理プログラム
209 ネットワークプロトコル処理プログラム
210 フラッシュメモリ
211 NICファームウェア
215 組み込みメモリ
216 OSイメージ
230 フロントエンドモジュール
301 圧縮データ